{ "name": "DemoContract", "structs": {}, "methods": [ { "name": "run", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_side_effects", "args": [ { "type": "uint64", "name": "n" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_non_trivial_termination_of_clause", "args": [ { "type": "uint64", "name": "n" }, { "type": "uint64", "name": "y" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 1, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "evalCount": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "ZXZhbENvdW50" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 611 ], "errorMessage": "Only two functions should be evaluated" }, { "pc": [ 564, 608 ], "errorMessage": "check GlobalState exists" }, { "pc": [ 176, 194, 204 ], "errorMessage": "invalid number of bytes for arc4.uint64" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDMgMgogICAgYnl0ZWNibG9jayAiZXZhbENvdW50IiAiaG1tbSIgMHhmZiBiYXNlNjQoWkhObWMyUm1jMlE9KSBiYXNlMzIoT05TR01aM09NSlRHT1pER01SU0dNKQogICAgYiBtYWluX2Jsb2NrQDAKCm1haW5fYmxvY2tAMDoKICAgIGIgbWFpbl9ibG9ja0AxCgptYWluX2Jsb2NrQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo0CiAgICAvLyBleHBvcnQgY2xhc3MgRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGludGNfMSAvLyAwCiAgICAhPQogICAgYnogbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTAKICAgIGIgbWFpbl9hYmlfcm91dGluZ0AyCgptYWluX2FiaV9yb3V0aW5nQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo0CiAgICAvLyBleHBvcnQgY2xhc3MgRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18xIC8vIE5vT3AKICAgID09CiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBpbnRjXzEgLy8gMAogICAgIT0KICAgIGJ6IG1haW5fY3JlYXRlX05vT3BAOAogICAgYiBtYWluX2NhbGxfTm9PcEAzCgptYWluX2NhbGxfTm9PcEAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NAogICAgLy8gZXhwb3J0IGNsYXNzIERlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIHB1c2hieXRlcyAweGE2ZmY5NDRhIC8vIG1ldGhvZCAicnVuKCl2b2lkIgogICAgcHVzaGJ5dGVzIDB4OTdkNGNmMDAgLy8gbWV0aG9kICJ0ZXN0X3NpZGVfZWZmZWN0cyh1aW50NjQpdm9pZCIKICAgIHB1c2hieXRlcyAweGE4MWE0N2FiIC8vIG1ldGhvZCAidGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2UodWludDY0LHVpbnQ2NCl1aW50NjQiCiAgICB1bmNvdmVyIDMKICAgIG1hdGNoIG1haW5fcnVuX3JvdXRlQDQgbWFpbl90ZXN0X3NpZGVfZWZmZWN0c19yb3V0ZUA1IG1haW5fdGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2Vfcm91dGVANgogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRANwoKbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDc6CiAgICBiIG1haW5fYWZ0ZXJfaWZfZWxzZUA5CgptYWluX2FmdGVyX2lmX2Vsc2VAOToKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDExCgptYWluX2FmdGVyX2lmX2Vsc2VAMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo0CiAgICAvLyBleHBvcnQgY2xhc3MgRGVtb0NvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3QgewogICAgZXJyCgptYWluX3Rlc3Rfbm9uX3RyaXZpYWxfdGVybWluYXRpb25fb2ZfY2xhdXNlX3JvdXRlQDY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo4MwogICAgLy8gcHVibGljIHRlc3Rfbm9uX3RyaXZpYWxfdGVybWluYXRpb25fb2ZfY2xhdXNlKG46IHVpbnQ2NCwgeTogdWludDY0KTogdWludDY0IHsKICAgIGNhbGxzdWIgdGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2UKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDcKCm1haW5fdGVzdF9zaWRlX2VmZmVjdHNfcm91dGVANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjY4CiAgICAvLyBwdWJsaWMgdGVzdF9zaWRlX2VmZmVjdHMobjogdWludDY0KSB7CiAgICBjYWxsc3ViIHRlc3Rfc2lkZV9lZmZlY3RzCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEA3CgptYWluX3J1bl9yb3V0ZUA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NQogICAgLy8gcnVuKCkgewogICAgY2FsbHN1YiBydW4KICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDcKCm1haW5fY3JlYXRlX05vT3BAODoKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDkKCm1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDEwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NAogICAgLy8gZXhwb3J0IGNsYXNzIERlbW9Db250cmFjdCBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBPbkNvbXBsZXRpb24KICAgIGludGNfMSAvLyBOb09wCiAgICA9PQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMSAvLyAwCiAgICA9PQogICAgJiYKICAgIGFzc2VydAogICAgY2FsbHN1YiBfX2FsZ290c19fLmRlZmF1bHRDcmVhdGUKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnJ1bltyb3V0aW5nXSgpIC0+IHZvaWQ6CnJ1bjoKICAgIGIgcnVuX2Jsb2NrQDAKCnJ1bl9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NQogICAgLy8gcnVuKCkgewogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnJ1bgogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X3NpZGVfZWZmZWN0czoKICAgIGIgdGVzdF9zaWRlX2VmZmVjdHNfYmxvY2tAMAoKdGVzdF9zaWRlX2VmZmVjdHNfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjY4CiAgICAvLyBwdWJsaWMgdGVzdF9zaWRlX2VmZmVjdHMobjogdWludDY0KSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3Rfbm9uX3RyaXZpYWxfdGVybWluYXRpb25fb2ZfY2xhdXNlOgogICAgYiB0ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZV9ibG9ja0AwCgp0ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6ODMKICAgIC8vIHB1YmxpYyB0ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZShuOiB1aW50NjQsIHk6IHVpbnQ2NCk6IHVpbnQ2NCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZQogICAgaXRvYgogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgIHVuY292ZXIgMQogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnJ1bigpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QucnVuOgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnJ1bl9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnJ1bl9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NgogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF91aW50NjQoMSkgPT09IDMpCiAgICBpbnRjXzAgLy8gMQogICAgY2FsbHN1YiB0ZXN0X3VpbnQ2NAogICAgaW50Y18yIC8vIDMKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjcKICAgIC8vIGFzc2VydCh0aGlzLnRlc3RfdWludDY0KDIpID09PSAzKQogICAgaW50Y18zIC8vIDIKICAgIGNhbGxzdWIgdGVzdF91aW50NjQKICAgIGludGNfMiAvLyAzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo4CiAgICAvLyBhc3NlcnQodGhpcy50ZXN0X3VpbnQ2NCgzKSA9PT0gMSkKICAgIGludGNfMiAvLyAzCiAgICBjYWxsc3ViIHRlc3RfdWludDY0CiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OQogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF91aW50NjQoNCkgPT09IDMpCiAgICBwdXNoaW50IDQKICAgIGNhbGxzdWIgdGVzdF91aW50NjQKICAgIGludGNfMiAvLyAzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoxMQogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF9icmVhaygxKSA9PT0gMTEpCiAgICBpbnRjXzAgLy8gMQogICAgY2FsbHN1YiB0ZXN0X2JyZWFrCiAgICBwdXNoaW50IDExCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoxMgogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF9icmVhaygyKSA9PT0gMTIpCiAgICBpbnRjXzMgLy8gMgogICAgY2FsbHN1YiB0ZXN0X2JyZWFrCiAgICBwdXNoaW50IDEyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoxMwogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF9icmVhaygzKSA9PT0gMTApCiAgICBpbnRjXzIgLy8gMwogICAgY2FsbHN1YiB0ZXN0X2JyZWFrCiAgICBwdXNoaW50IDEwCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoxNAogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF9icmVhayg0KSA9PT0gMTQpCiAgICBwdXNoaW50IDQKICAgIGNhbGxzdWIgdGVzdF9icmVhawogICAgcHVzaGludCAxNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6MTUKICAgIC8vIGFzc2VydCh0aGlzLnRlc3RfYnJlYWsoNSkgPT09IDUwKQogICAgcHVzaGludCA1CiAgICBjYWxsc3ViIHRlc3RfYnJlYWsKICAgIHB1c2hpbnQgNTAKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjE3CiAgICAvLyBhc3NlcnQodGhpcy50ZXN0X2J5dGVzKEJ5dGVzKCdobW1tJykpKQogICAgYnl0ZWNfMSAvLyAiaG1tbSIKICAgIGNhbGxzdWIgdGVzdF9ieXRlcwogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoxOAogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF9ieXRlcyhCeXRlcy5mcm9tSGV4KCdmZicpKSkKICAgIGJ5dGVjXzIgLy8gMHhmZgogICAgY2FsbHN1YiB0ZXN0X2J5dGVzCiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjE5CiAgICAvLyBhc3NlcnQodGhpcy50ZXN0X2J5dGVzKEJ5dGVzLmZyb21CYXNlNjQoJ1pITm1jMlJtYzJRPScpKSkKICAgIGJ5dGVjXzMgLy8gYmFzZTY0KFpITm1jMlJtYzJRPSkKICAgIGNhbGxzdWIgdGVzdF9ieXRlcwogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoyMAogICAgLy8gYXNzZXJ0KHRoaXMudGVzdF9ieXRlcyhCeXRlcy5mcm9tQmFzZTMyKCdPTlNHTVozT01KVEdPWkRHTVJTR009PT0nKSkpCiAgICBieXRlYyA0IC8vIGJhc2UzMihPTlNHTVozT01KVEdPWkRHTVJTR00pCiAgICBjYWxsc3ViIHRlc3RfYnl0ZXMKICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6MjEKICAgIC8vIGFzc2VydCghdGhpcy50ZXN0X2J5dGVzKEJ5dGVzKCkpKQogICAgcHVzaGJ5dGVzIDB4CiAgICBjYWxsc3ViIHRlc3RfYnl0ZXMKICAgICEKICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3VpbnQ2NCh4OiB1aW50NjQpIC0+IHVpbnQ2NDoKdGVzdF91aW50NjQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoyNAogICAgLy8gcHJpdmF0ZSB0ZXN0X3VpbnQ2NCh4OiB1aW50NjQpOiB1aW50NjQgewogICAgcHJvdG8gMSAxCiAgICBiIHRlc3RfdWludDY0X2Jsb2NrQDAKCnRlc3RfdWludDY0X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoyNgogICAgLy8gY2FzZSAxOgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGJ6IHRlc3RfdWludDY0X2FmdGVyX2lmX2Vsc2VAMwogICAgYiB0ZXN0X3VpbnQ2NF9pZl9ib2R5QDEKCnRlc3RfdWludDY0X2lmX2JvZHlAMToKICAgIGIgdGVzdF91aW50NjRfYmxvY2tAMgoKdGVzdF91aW50NjRfYmxvY2tAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjI2CiAgICAvLyBjYXNlIDE6CiAgICBiIHRlc3RfdWludDY0X2Jsb2NrQDUKCnRlc3RfdWludDY0X2Jsb2NrQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoyNwogICAgLy8gY2FzZSAyOgogICAgYiB0ZXN0X3VpbnQ2NF9ibG9ja0A4Cgp0ZXN0X3VpbnQ2NF9ibG9ja0A4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6MjkKICAgIC8vIHJldHVybiAzCiAgICBpbnRjXzIgLy8gMwogICAgcmV0c3ViCgp0ZXN0X3VpbnQ2NF9hZnRlcl9pZl9lbHNlQDM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoyNwogICAgLy8gY2FzZSAyOgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzMgLy8gMgogICAgPT0KICAgIGJ6IHRlc3RfdWludDY0X2FmdGVyX2lmX2Vsc2VANgogICAgYiB0ZXN0X3VpbnQ2NF9pZl9ib2R5QDQKCnRlc3RfdWludDY0X2lmX2JvZHlANDoKICAgIGIgdGVzdF91aW50NjRfYmxvY2tANQoKdGVzdF91aW50NjRfYWZ0ZXJfaWZfZWxzZUA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6MjgKICAgIC8vIGNhc2UgVWludDY0KDQpOgogICAgZnJhbWVfZGlnIC0xCiAgICBwdXNoaW50IDQKICAgID09CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czoyOC0yOQogICAgLy8gY2FzZSBVaW50NjQoNCk6CiAgICAvLyAgIHJldHVybiAzCiAgICBieiB0ZXN0X3VpbnQ2NF9hZnRlcl9pZl9lbHNlQDkKICAgIGIgdGVzdF91aW50NjRfaWZfYm9keUA3Cgp0ZXN0X3VpbnQ2NF9pZl9ib2R5QDc6CiAgICBiIHRlc3RfdWludDY0X2Jsb2NrQDgKCnRlc3RfdWludDY0X2FmdGVyX2lmX2Vsc2VAOToKICAgIGIgdGVzdF91aW50NjRfYmxvY2tAMTAKCnRlc3RfdWludDY0X2Jsb2NrQDEwOgogICAgYiB0ZXN0X3VpbnQ2NF9ibG9ja0AxMQoKdGVzdF91aW50NjRfYmxvY2tAMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czozMQogICAgLy8gcmV0dXJuIDEKICAgIGludGNfMCAvLyAxCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3RfYnJlYWsoeDogdWludDY0KSAtPiB1aW50NjQ6CnRlc3RfYnJlYWs6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czozNgogICAgLy8gcHJpdmF0ZSB0ZXN0X2JyZWFrKHg6IHVpbnQ2NCk6IHVpbnQ2NCB7CiAgICBwcm90byAxIDEKICAgIGIgdGVzdF9icmVha19ibG9ja0AwCgp0ZXN0X2JyZWFrX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czozNwogICAgLy8gbGV0IGk6IHVpbnQ2NCA9IDEwCiAgICBwdXNoaW50IDEwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czozOQogICAgLy8gY2FzZSAxOgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGJ6IHRlc3RfYnJlYWtfYWZ0ZXJfaWZfZWxzZUAzCiAgICBiIHRlc3RfYnJlYWtfaWZfYm9keUAxCgp0ZXN0X2JyZWFrX2lmX2JvZHlAMToKICAgIGIgdGVzdF9icmVha19ibG9ja0AyCgp0ZXN0X2JyZWFrX2Jsb2NrQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czozOQogICAgLy8gY2FzZSAxOgogICAgYiB0ZXN0X2JyZWFrX2Jsb2NrQDUKCnRlc3RfYnJlYWtfYmxvY2tANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjQwCiAgICAvLyBjYXNlIDI6CiAgICBiIHRlc3RfYnJlYWtfYmxvY2tAOAoKdGVzdF9icmVha19ibG9ja0A4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6MzcKICAgIC8vIGxldCBpOiB1aW50NjQgPSAxMAogICAgcHVzaGludCAxMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NDIKICAgIC8vIGkgKz0geAogICAgZnJhbWVfZGlnIC0xCiAgICArCiAgICBmcmFtZV9idXJ5IDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjQzCiAgICAvLyBicmVhawogICAgYiB0ZXN0X2JyZWFrX2Jsb2NrQDEzCgp0ZXN0X2JyZWFrX2Jsb2NrQDEzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NDcKICAgIC8vIHJldHVybiBpCiAgICBmcmFtZV9kaWcgMAogICAgdW5jb3ZlciAxCiAgICByZXRzdWIKCnRlc3RfYnJlYWtfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NDAKICAgIC8vIGNhc2UgMjoKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18zIC8vIDIKICAgID09CiAgICBieiB0ZXN0X2JyZWFrX2FmdGVyX2lmX2Vsc2VANgogICAgYiB0ZXN0X2JyZWFrX2lmX2JvZHlANAoKdGVzdF9icmVha19pZl9ib2R5QDQ6CiAgICBiIHRlc3RfYnJlYWtfYmxvY2tANQoKdGVzdF9icmVha19hZnRlcl9pZl9lbHNlQDY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo0MQogICAgLy8gY2FzZSBVaW50NjQoNCk6CiAgICBmcmFtZV9kaWcgLTEKICAgIHB1c2hpbnQgNAogICAgPT0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjQxLTQzCiAgICAvLyBjYXNlIFVpbnQ2NCg0KToKICAgIC8vICAgaSArPSB4CiAgICAvLyAgIGJyZWFrCiAgICBieiB0ZXN0X2JyZWFrX2FmdGVyX2lmX2Vsc2VAOQogICAgYiB0ZXN0X2JyZWFrX2lmX2JvZHlANwoKdGVzdF9icmVha19pZl9ib2R5QDc6CiAgICBiIHRlc3RfYnJlYWtfYmxvY2tAOAoKdGVzdF9icmVha19hZnRlcl9pZl9lbHNlQDk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo0NAogICAgLy8gY2FzZSA1OgogICAgZnJhbWVfZGlnIC0xCiAgICBwdXNoaW50IDUKICAgID09CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo0NC00NQogICAgLy8gY2FzZSA1OgogICAgLy8gICBpICo9IHgKICAgIGJ6IHRlc3RfYnJlYWtfYWZ0ZXJfaWZfZWxzZUAxMgogICAgYiB0ZXN0X2JyZWFrX2lmX2JvZHlAMTAKCnRlc3RfYnJlYWtfaWZfYm9keUAxMDoKICAgIGIgdGVzdF9icmVha19ibG9ja0AxMQoKdGVzdF9icmVha19ibG9ja0AxMToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjM3CiAgICAvLyBsZXQgaTogdWludDY0ID0gMTAKICAgIHB1c2hpbnQgMTAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjQ1CiAgICAvLyBpICo9IHgKICAgIGZyYW1lX2RpZyAtMQogICAgKgogICAgZnJhbWVfYnVyeSAwCiAgICBiIHRlc3RfYnJlYWtfYWZ0ZXJfaWZfZWxzZUAxMgoKdGVzdF9icmVha19hZnRlcl9pZl9lbHNlQDEyOgogICAgYiB0ZXN0X2JyZWFrX2Jsb2NrQDEzCgoKLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X2J5dGVzKHg6IGJ5dGVzKSAtPiB1aW50NjQ6CnRlc3RfYnl0ZXM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo1MAogICAgLy8gcHJpdmF0ZSB0ZXN0X2J5dGVzKHg6IGJ5dGVzKTogYm9vbGVhbiB7CiAgICBwcm90byAxIDEKICAgIGIgdGVzdF9ieXRlc19ibG9ja0AwCgp0ZXN0X2J5dGVzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo1MgogICAgLy8gY2FzZSBCeXRlcygnaG1tbScpOgogICAgZnJhbWVfZGlnIC0xCiAgICBieXRlY18xIC8vICJobW1tIgogICAgPT0KICAgIGJ6IHRlc3RfYnl0ZXNfYWZ0ZXJfaWZfZWxzZUAzCiAgICBiIHRlc3RfYnl0ZXNfaWZfYm9keUAxCgp0ZXN0X2J5dGVzX2lmX2JvZHlAMToKICAgIGIgdGVzdF9ieXRlc19ibG9ja0AyCgp0ZXN0X2J5dGVzX2Jsb2NrQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo1MgogICAgLy8gY2FzZSBCeXRlcygnaG1tbScpOgogICAgYiB0ZXN0X2J5dGVzX2Jsb2NrQDUKCnRlc3RfYnl0ZXNfYmxvY2tANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjUzCiAgICAvLyBjYXNlIEJ5dGVzLmZyb21IZXgoJ0ZmJyk6CiAgICBiIHRlc3RfYnl0ZXNfYmxvY2tAOAoKdGVzdF9ieXRlc19ibG9ja0A4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NTQKICAgIC8vIGNhc2UgQnl0ZXMuZnJvbUJhc2U2NCgnWkhObWMyUm1jMlE9Jyk6CiAgICBiIHRlc3RfYnl0ZXNfYmxvY2tAMTEKCnRlc3RfYnl0ZXNfYmxvY2tAMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo1NgogICAgLy8gcmV0dXJuIHRydWUKICAgIGludGNfMCAvLyAxCiAgICByZXRzdWIKCnRlc3RfYnl0ZXNfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NTMKICAgIC8vIGNhc2UgQnl0ZXMuZnJvbUhleCgnRmYnKToKICAgIGZyYW1lX2RpZyAtMQogICAgYnl0ZWNfMiAvLyAweGZmCiAgICA9PQogICAgYnogdGVzdF9ieXRlc19hZnRlcl9pZl9lbHNlQDYKICAgIGIgdGVzdF9ieXRlc19pZl9ib2R5QDQKCnRlc3RfYnl0ZXNfaWZfYm9keUA0OgogICAgYiB0ZXN0X2J5dGVzX2Jsb2NrQDUKCnRlc3RfYnl0ZXNfYWZ0ZXJfaWZfZWxzZUA2OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NTQKICAgIC8vIGNhc2UgQnl0ZXMuZnJvbUJhc2U2NCgnWkhObWMyUm1jMlE9Jyk6CiAgICBmcmFtZV9kaWcgLTEKICAgIGJ5dGVjXzMgLy8gYmFzZTY0KFpITm1jMlJtYzJRPSkKICAgID09CiAgICBieiB0ZXN0X2J5dGVzX2FmdGVyX2lmX2Vsc2VAOQogICAgYiB0ZXN0X2J5dGVzX2lmX2JvZHlANwoKdGVzdF9ieXRlc19pZl9ib2R5QDc6CiAgICBiIHRlc3RfYnl0ZXNfYmxvY2tAOAoKdGVzdF9ieXRlc19hZnRlcl9pZl9lbHNlQDk6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo1NQogICAgLy8gY2FzZSBCeXRlcy5mcm9tQmFzZTMyKCdPTlNHTVozT01KVEdPWkRHTVJTR009PT0nKToKICAgIGZyYW1lX2RpZyAtMQogICAgYnl0ZWMgNCAvLyBiYXNlMzIoT05TR01aM09NSlRHT1pER01SU0dNKQogICAgPT0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjU1LTU2CiAgICAvLyBjYXNlIEJ5dGVzLmZyb21CYXNlMzIoJ09OU0dNWjNPTUpUR09aREdNUlNHTT09PScpOgogICAgLy8gICByZXR1cm4gdHJ1ZQogICAgYnogdGVzdF9ieXRlc19hZnRlcl9pZl9lbHNlQDEyCiAgICBiIHRlc3RfYnl0ZXNfaWZfYm9keUAxMAoKdGVzdF9ieXRlc19pZl9ib2R5QDEwOgogICAgYiB0ZXN0X2J5dGVzX2Jsb2NrQDExCgp0ZXN0X2J5dGVzX2FmdGVyX2lmX2Vsc2VAMTI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo1OAogICAgLy8gcmV0dXJuIGZhbHNlCiAgICBpbnRjXzEgLy8gMAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC5pbmNyZWFzZUV2YWxBbmRSZXR1cm4objogdWludDY0KSAtPiB1aW50NjQ6CmluY3JlYXNlRXZhbEFuZFJldHVybjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjYzCiAgICAvLyBwcml2YXRlIGluY3JlYXNlRXZhbEFuZFJldHVybihuOiB1aW50NjQpIHsKICAgIHByb3RvIDEgMQogICAgYiBpbmNyZWFzZUV2YWxBbmRSZXR1cm5fYmxvY2tAMAoKaW5jcmVhc2VFdmFsQW5kUmV0dXJuX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo2NAogICAgLy8gdGhpcy5ldmFsQ291bnQudmFsdWUrKwogICAgaW50Y18xIC8vIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjYxCiAgICAvLyBldmFsQ291bnQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KCkKICAgIGJ5dGVjXzAgLy8gImV2YWxDb3VudCIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjY0CiAgICAvLyB0aGlzLmV2YWxDb3VudC52YWx1ZSsrCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgaW50Y18wIC8vIDEKICAgICsKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjYxCiAgICAvLyBldmFsQ291bnQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KCkKICAgIGJ5dGVjXzAgLy8gImV2YWxDb3VudCIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjY0CiAgICAvLyB0aGlzLmV2YWxDb3VudC52YWx1ZSsrCiAgICB1bmNvdmVyIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo2NQogICAgLy8gcmV0dXJuIG4KICAgIGZyYW1lX2RpZyAtMQogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0cyhuOiB1aW50NjQpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo2OAogICAgLy8gcHVibGljIHRlc3Rfc2lkZV9lZmZlY3RzKG46IHVpbnQ2NCkgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NjEKICAgIC8vIGV2YWxDb3VudCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oKQogICAgYnl0ZWNfMCAvLyAiZXZhbENvdW50IgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NjkKICAgIC8vIHRoaXMuZXZhbENvdW50LnZhbHVlID0gMAogICAgaW50Y18xIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo3MgogICAgLy8gY2FzZSB0aGlzLmluY3JlYXNlRXZhbEFuZFJldHVybihuIC0gMSk6CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBjYWxsc3ViIGluY3JlYXNlRXZhbEFuZFJldHVybgogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NzItNzMKICAgIC8vIGNhc2UgdGhpcy5pbmNyZWFzZUV2YWxBbmRSZXR1cm4obiAtIDEpOgogICAgLy8gICBicmVhawogICAgYnogdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19hZnRlcl9pZl9lbHNlQDMKICAgIGIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19pZl9ib2R5QDEKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfaWZfYm9keUAxOgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2Jsb2NrQDIKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfYmxvY2tAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjczCiAgICAvLyBicmVhawogICAgYiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2Jsb2NrQDEwCgp0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2Jsb2NrQDEwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6ODAKICAgIC8vIGFzc2VydCh0aGlzLmV2YWxDb3VudC52YWx1ZSA9PT0gMiwgJ09ubHkgdHdvIGZ1bmN0aW9ucyBzaG91bGQgYmUgZXZhbHVhdGVkJykKICAgIGludGNfMSAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo2MQogICAgLy8gZXZhbENvdW50ID0gR2xvYmFsU3RhdGU8dWludDY0PigpCiAgICBieXRlY18wIC8vICJldmFsQ291bnQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo4MAogICAgLy8gYXNzZXJ0KHRoaXMuZXZhbENvdW50LnZhbHVlID09PSAyLCAnT25seSB0d28gZnVuY3Rpb25zIHNob3VsZCBiZSBldmFsdWF0ZWQnKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIGludGNfMyAvLyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgdHdvIGZ1bmN0aW9ucyBzaG91bGQgYmUgZXZhbHVhdGVkCiAgICByZXRzdWIKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NzQKICAgIC8vIGNhc2UgdGhpcy5pbmNyZWFzZUV2YWxBbmRSZXR1cm4obik6CiAgICBmcmFtZV9kaWcgLTEKICAgIGNhbGxzdWIgaW5jcmVhc2VFdmFsQW5kUmV0dXJuCiAgICBmcmFtZV9kaWcgLTEKICAgID09CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo3NC03NQogICAgLy8gY2FzZSB0aGlzLmluY3JlYXNlRXZhbEFuZFJldHVybihuKToKICAgIC8vICAgYnJlYWsKICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfYWZ0ZXJfaWZfZWxzZUA2CiAgICBiIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfaWZfYm9keUA0Cgp0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2lmX2JvZHlANDoKICAgIGIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19ibG9ja0A1Cgp0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2Jsb2NrQDU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo3NQogICAgLy8gYnJlYWsKICAgIGIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19ibG9ja0AxMAoKdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19hZnRlcl9pZl9lbHNlQDY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo3NgogICAgLy8gY2FzZSB0aGlzLmluY3JlYXNlRXZhbEFuZFJldHVybihuICsgMSk6CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBjYWxsc3ViIGluY3JlYXNlRXZhbEFuZFJldHVybgogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6NzYtNzcKICAgIC8vIGNhc2UgdGhpcy5pbmNyZWFzZUV2YWxBbmRSZXR1cm4obiArIDEpOgogICAgLy8gICBicmVhawogICAgYnogdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19hZnRlcl9pZl9lbHNlQDkKICAgIGIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19pZl9ib2R5QDcKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfaWZfYm9keUA3OgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2Jsb2NrQDgKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9zaWRlX2VmZmVjdHNfYmxvY2tAODoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjc3CiAgICAvLyBicmVhawogICAgYiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2Jsb2NrQDEwCgp0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfc2lkZV9lZmZlY3RzX2FmdGVyX2lmX2Vsc2VAOToKICAgIGIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X3NpZGVfZWZmZWN0c19ibG9ja0AxMAoKCi8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2UobjogdWludDY0LCB5OiB1aW50NjQpIC0+IHVpbnQ2NDoKdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjgzCiAgICAvLyBwdWJsaWMgdGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2UobjogdWludDY0LCB5OiB1aW50NjQpOiB1aW50NjQgewogICAgcHJvdG8gMiAxCiAgICBiIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2VfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6ODUKICAgIC8vIGNhc2UgMToKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18wIC8vIDEKICAgID09CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo4NS05MAogICAgLy8gY2FzZSAxOgogICAgLy8gICBpZiAoeSAlIDIgPT09IDApIHsKICAgIC8vICAgICByZXR1cm4geQogICAgLy8gICB9IGVsc2UgewogICAgLy8gICAgIHJldHVybiBuCiAgICAvLyAgIH0KICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2VfYWZ0ZXJfaWZfZWxzZUA1CiAgICBiIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2VfaWZfYm9keUAxCgp0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfbm9uX3RyaXZpYWxfdGVybWluYXRpb25fb2ZfY2xhdXNlX2lmX2JvZHlAMToKICAgIGIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZV9ibG9ja0AyCgp0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfbm9uX3RyaXZpYWxfdGVybWluYXRpb25fb2ZfY2xhdXNlX2Jsb2NrQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo4NgogICAgLy8gaWYgKHkgJSAyID09PSAwKSB7CiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMyAvLyAyCiAgICAlCiAgICBpbnRjXzEgLy8gMAogICAgPT0KICAgIGJ6IHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2VfZWxzZV9ib2R5QDQKICAgIGIgdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZV9pZl9ib2R5QDMKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2VfaWZfYm9keUAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6ODcKICAgIC8vIHJldHVybiB5CiAgICBmcmFtZV9kaWcgLTEKICAgIHJldHN1YgoKdGVzdHMvYXBwcm92YWxzL3N3aXRjaC1zdGF0ZW1lbnRzLmFsZ28udHM6OkRlbW9Db250cmFjdC50ZXN0X25vbl90cml2aWFsX3Rlcm1pbmF0aW9uX29mX2NsYXVzZV9lbHNlX2JvZHlANDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjg5CiAgICAvLyByZXR1cm4gbgogICAgZnJhbWVfZGlnIC0yCiAgICByZXRzdWIKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2VfYWZ0ZXJfaWZfZWxzZUA1OgogICAgYiB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0LnRlc3Rfbm9uX3RyaXZpYWxfdGVybWluYXRpb25fb2ZfY2xhdXNlX2Jsb2NrQDYKCnRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjpEZW1vQ29udHJhY3QudGVzdF9ub25fdHJpdmlhbF90ZXJtaW5hdGlvbl9vZl9jbGF1c2VfYmxvY2tANjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9zd2l0Y2gtc3RhdGVtZW50cy5hbGdvLnRzOjkyCiAgICAvLyByZXR1cm4geSAqIG4KICAgIGZyYW1lX2RpZyAtMQogICAgZnJhbWVfZGlnIC0yCiAgICAqCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvc3dpdGNoLXN0YXRlbWVudHMuYWxnby50czo6RGVtb0NvbnRyYWN0Ll9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZSgpIC0+IHZvaWQ6Cl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZToKICAgIGIgX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlX2Jsb2NrQDAKCl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZV9ibG9ja0AwOgogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBiIG1haW5fYmxvY2tAMAoKbWFpbl9ibG9ja0AwOgogICAgcHVzaGludCAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CyAEAQADAiYFCWV2YWxDb3VudARobW1tAf8IZHNmc2Rmc2QNc2RmZ25iZmdkZmRkZkIAAEIAADEbIxNBAFBCAAAxGSMSRDEYIxNBAD5CAAA2GgCABKb/lEqABJfUzwCABKgaR6tPA44DABYAEAAKQgAAQgAAQgAAAIgAO0L/84gAI0L/7YgAFUL/50L/5zEZIxIxGCMSEESIAiUiQ0IAAIgAOyJDQgAANhoBSRWBCBJEF4gBiSJDQgAANhoBSRWBCBJEFzYaAkkVgQgSRBeIAcEWgAQVH3x1TwFQsCJDQgAAIogAYCQSRCWIAFkkEkQkiABSIhJEgQSIAEokEkQiiACBgQsSRCWIAHmBDBJEJIgAcYEKEkSBBIgAaIEOEkSBBYgAX4EyEkQpiAC3RCqIALJEK4gArUQnBIgAp0SAAIgAoRREiYoBAUIAAIv/IhJBAA5CAABCAABCAABCAAAkiYv/JRJBAAZCAABC/+6L/4EEEkEABkIAAEL/40IAAEIAACKJigEBQgAAgQqL/yISQQAbQgAAQgAAQgAAQgAAgQqL/wiMAEIAAIsATwGJi/8lEkEABkIAAEL/4Yv/gQQSQQAGQgAAQv/Wi/+BBRJBABBCAABCAACBCov/C4wAQgAAQv/FigEBQgAAi/8pEkEAEUIAAEIAAEIAAEIAAEIAACKJi/8qEkEABkIAAEL/64v/KxJBAAZCAABC/+GL/ycEEkEABkIAAEL/1iOJigEBQgAAIyhlRCIIKE8BZ4v/iYoBAEIAACgjZ4v/IgmI/92L/xJBABFCAABCAABCAAAjKGVEJRJEiYv/iP/Bi/8SQQAJQgAAQgAAQv/ki/8iCIj/q4v/EkEACUIAAEIAAEL/zkL/y4oCAUIAAIv+IhJBABhCAABCAACL/yUYIxJBAAZCAACL/4mL/olCAACL/4v+C4lCAACJ", "clear": "C0IAAIEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }