{ "name": "SubscriptionStreakGate", "structs": { "SubscriptionStreakGateRegistryInfo": [ { "name": "merchant", "type": "address" }, { "name": "id", "type": "uint64" }, { "name": "op", "type": "uint8" }, { "name": "streak", "type": "uint64" } ] }, "methods": [ { "name": "create", "args": [ { "type": "string", "name": "version" }, { "type": "uint64", "name": "akitaDAO" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "cost", "args": [ { "type": "byte[]", "name": "args" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "register", "args": [ { "type": "pay", "name": "mbrPayment" }, { "type": "byte[]", "name": "args" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "check", "args": [ { "type": "address", "name": "caller" }, { "type": "uint64", "name": "registryID" }, { "type": "byte[]", "name": "args" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "getRegistrationShape", "args": [ { "type": "(address,uint64,uint8,uint64)", "struct": "SubscriptionStreakGateRegistryInfo", "name": "shape" } ], "returns": { "type": "(address,uint64,uint8,uint64)", "struct": "SubscriptionStreakGateRegistryInfo" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "getEntry", "args": [ { "type": "uint64", "name": "registryID" } ], "returns": { "type": "byte[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "updateAkitaDAO", "args": [ { "type": "uint64", "name": "akitaDAO" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "opUp", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 2, "bytes": 3 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "registryCursor": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "cmVnaXN0cnlfY3Vyc29y" }, "registrationShape": { "keyType": "AVMString", "valueType": "AVMString", "key": "cmVnaXN0cmF0aW9uX3NoYXBl", "desc": "the abi string for the register args" }, "checkShape": { "keyType": "AVMString", "valueType": "AVMString", "key": "Y2hlY2tfc2hhcGU=", "desc": "the abi string for the check args" }, "version": { "keyType": "AVMString", "valueType": "AVMString", "key": "dmVyc2lvbg==", "desc": "the current version of the contract" }, "akitaDAO": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YWtpdGFfZGFv", "desc": "the app ID of the Akita DAO" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "registry": { "keyType": "uint64", "valueType": "SubscriptionStreakGateRegistryInfo", "prefix": "" } } } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 427, 714 ], "errorMessage": "Box must have value" }, { "pc": [ 506 ], "errorMessage": "Bytes has valid prefix" }, { "pc": [ 325, 423 ], "errorMessage": "ERR:IARG" }, { "pc": [ 339, 355 ], "errorMessage": "ERR:IPAY" }, { "pc": [ 773 ], "errorMessage": "ERR:NDAO" }, { "pc": [ 757 ], "errorMessage": "application exists" }, { "pc": [ 359, 459, 744 ], "errorMessage": "check GlobalState exists" }, { "pc": [ 221, 264, 303, 405 ], "errorMessage": "invalid array length header" }, { "pc": [ 228, 270, 310, 412 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 389 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 240, 398, 710, 737 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 695 ], "errorMessage": "invalid number of bytes for smart_contracts/gates/sub-gates/subscription-streak/types.ts::SubscriptionStreakGateRegistryInfo" }, { "pc": [ 511 ], "errorMessage": "invalid number of bytes for smart_contracts/subscriptions/types.ts::SubscriptionInfoWithExistence" }, { "pc": [ 297 ], "errorMessage": "transaction type is pay" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDkzIDIKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAiYWtpdGFfZGFvIiAicmVnaXN0cnlfY3Vyc29yIiAiIiAiRVJSOklBUkciICJFUlI6SVBBWSIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjI5CiAgICAvLyByZWdpc3RyeUN1cnNvciA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IDEsIGtleTogR2F0ZUdsb2JhbFN0YXRlS2V5UmVnaXN0cnlDdXJzb3IgfSkKICAgIGJ5dGVjXzIgLy8gInJlZ2lzdHJ5X2N1cnNvciIKICAgIGludGNfMCAvLyAxCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MzEKICAgIC8vIHJlZ2lzdHJhdGlvblNoYXBlID0gR2xvYmFsU3RhdGU8c3RyaW5nPih7IGluaXRpYWxWYWx1ZTogJyhhZGRyZXNzLHVpbnQ2NCx1aW50OCx1aW50NjQpJywga2V5OiBHYXRlR2xvYmFsU3RhdGVLZXlSZWdpc3RyYXRpb25TaGFwZSB9KQogICAgcHVzaGJ5dGVzcyAicmVnaXN0cmF0aW9uX3NoYXBlIiAiKGFkZHJlc3MsdWludDY0LHVpbnQ4LHVpbnQ2NCkiCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MzMKICAgIC8vIGNoZWNrU2hhcGUgPSBHbG9iYWxTdGF0ZTxzdHJpbmc+KHsgaW5pdGlhbFZhbHVlOiAnJywga2V5OiBHYXRlR2xvYmFsU3RhdGVLZXlDaGVja1NoYXBlIH0pCiAgICBwdXNoYnl0ZXMgImNoZWNrX3NoYXBlIgogICAgYnl0ZWNfMyAvLyAiIgogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MjUKICAgIC8vIGV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25TdHJlYWtHYXRlIGV4dGVuZHMgQWtpdGFCYXNlQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYnogbWFpbl9jcmVhdGVfTm9PcEAxMwogICAgcHVzaGJ5dGVzcyAweDMyOWYwNGVlIDB4NzdiYjc5YjkgMHg2ZTAzZjUwYSAweDI3OTZlOTdiIDB4OTBkNGZhNWQgMHgzM2U5MmM5NCAweDg1NGRlZGUwIC8vIG1ldGhvZCAiY29zdChieXRlW10pdWludDY0IiwgbWV0aG9kICJyZWdpc3RlcihwYXksYnl0ZVtdKXVpbnQ2NCIsIG1ldGhvZCAiY2hlY2soYWRkcmVzcyx1aW50NjQsYnl0ZVtdKWJvb2wiLCBtZXRob2QgImdldFJlZ2lzdHJhdGlvblNoYXBlKChhZGRyZXNzLHVpbnQ2NCx1aW50OCx1aW50NjQpKShhZGRyZXNzLHVpbnQ2NCx1aW50OCx1aW50NjQpIiwgbWV0aG9kICJnZXRFbnRyeSh1aW50NjQpYnl0ZVtdIiwgbWV0aG9kICJ1cGRhdGVBa2l0YURBTyh1aW50NjQpdm9pZCIsIG1ldGhvZCAib3BVcCgpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGNvc3QgcmVnaXN0ZXIgY2hlY2sgZ2V0UmVnaXN0cmF0aW9uU2hhcGUgZ2V0RW50cnkgdXBkYXRlQWtpdGFEQU8gbWFpbl9vcFVwX3JvdXRlQDExCiAgICBlcnIKCm1haW5fb3BVcF9yb3V0ZUAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy91dGlscy9iYXNlLWNvbnRyYWN0cy9iYXNlLnRzOjQxCiAgICAvLyBvcFVwKCk6IHZvaWQgeyB9CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2NyZWF0ZV9Ob09wQDEzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MjUKICAgIC8vIGV4cG9ydCBjbGFzcyBTdWJzY3JpcHRpb25TdHJlYWtHYXRlIGV4dGVuZHMgQWtpdGFCYXNlQ29udHJhY3QgewogICAgcHVzaGJ5dGVzIDB4Y2Q5YWQ2N2UgLy8gbWV0aG9kICJjcmVhdGUoc3RyaW5nLHVpbnQ2NCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggY3JlYXRlCiAgICBlcnIKCgovLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo6U3Vic2NyaXB0aW9uU3RyZWFrR2F0ZS5jcmVhdGVbcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo4MwogICAgLy8gQGFiaW1ldGhvZCh7IG9uQ3JlYXRlOiAncmVxdWlyZScgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIGV4dHJhY3QgMiAwCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3V0aWxzL2Jhc2UtY29udHJhY3RzL2Jhc2UudHM6MjUKICAgIC8vIHZlcnNpb24gPSBHbG9iYWxTdGF0ZTxzdHJpbmc+KHsga2V5OiBHbG9iYWxTdGF0ZUtleVZlcnNpb24gfSkKICAgIHB1c2hieXRlcyAidmVyc2lvbiIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjg1CiAgICAvLyB0aGlzLnZlcnNpb24udmFsdWUgPSB2ZXJzaW9uCiAgICB1bmNvdmVyIDIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvdXRpbHMvYmFzZS1jb250cmFjdHMvYmFzZS50czoyNwogICAgLy8gYWtpdGFEQU8gPSBHbG9iYWxTdGF0ZTxBcHBsaWNhdGlvbj4oeyBrZXk6IEdsb2JhbFN0YXRlS2V5QWtpdGFEQU8gfSkKICAgIGJ5dGVjXzEgLy8gImFraXRhX2RhbyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjg2CiAgICAvLyB0aGlzLmFraXRhREFPLnZhbHVlID0gQXBwbGljYXRpb24oYWtpdGFEQU8pCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6ODMKICAgIC8vIEBhYmltZXRob2QoeyBvbkNyZWF0ZTogJ3JlcXVpcmUnIH0pCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OlN1YnNjcmlwdGlvblN0cmVha0dhdGUuY29zdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmNvc3Q6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo5MQogICAgLy8gY29zdChhcmdzOiBieXRlcyk6IHVpbnQ2NCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgc3dhcAogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1MDAwMDAwMDAwMDAwNjJkNAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OlN1YnNjcmlwdGlvblN0cmVha0dhdGUucmVnaXN0ZXJbcm91dGluZ10oKSAtPiB2b2lkOgpyZWdpc3RlcjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjk1CiAgICAvLyByZWdpc3RlcihtYnJQYXltZW50OiBndHhuLlBheW1lbnRUeG4sIGFyZ3M6IGJ5dGVzKTogdWludDY0IHsKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18wIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIGR1cAogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OTYKICAgIC8vIGxvZ2dlZEFzc2VydChhcmdzLmxlbmd0aCA9PT0gUmVnaXN0ZXJCeXRlTGVuZ3RoLCBFUlJfSU5WQUxJRF9BUkdfQ09VTlQpCiAgICBsZW4KICAgIHB1c2hpbnQgNDkKICAgID09CiAgICBibnogcmVnaXN0ZXJfYWZ0ZXJfYXNzZXJ0QDMKICAgIGJ5dGVjIDQgLy8gIkVSUjpJQVJHIgogICAgbG9nCiAgICBlcnIgLy8gRVJSOklBUkcKCnJlZ2lzdGVyX2FmdGVyX2Fzc2VydEAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OTcKICAgIC8vIGxvZ2dlZEFzc2VydChtYnJQYXltZW50LnJlY2VpdmVyID09PSBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywgRVJSX0lOVkFMSURfUEFZTUVOVCkKICAgIGRpZyAxCiAgICBndHhucyBSZWNlaXZlcgogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgID09CiAgICBibnogcmVnaXN0ZXJfYWZ0ZXJfYXNzZXJ0QDUKICAgIGJ5dGVjIDUgLy8gIkVSUjpJUEFZIgogICAgbG9nCiAgICBlcnIgLy8gRVJSOklQQVkKCnJlZ2lzdGVyX2FmdGVyX2Fzc2VydEA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OTgKICAgIC8vIGxvZ2dlZEFzc2VydChtYnJQYXltZW50LmFtb3VudCA9PT0gU3Vic2NyaXB0aW9uU3RyZWFrR2F0ZVJlZ2lzdHJ5TUJSLCBFUlJfSU5WQUxJRF9QQVlNRU5UKQogICAgZGlnIDEKICAgIGd0eG5zIEFtb3VudAogICAgcHVzaGludCAyNTMwMAogICAgPT0KICAgIGJueiByZWdpc3Rlcl9hZnRlcl9hc3NlcnRANwogICAgYnl0ZWMgNSAvLyAiRVJSOklQQVkiCiAgICBsb2cKICAgIGVyciAvLyBFUlI6SVBBWQoKcmVnaXN0ZXJfYWZ0ZXJfYXNzZXJ0QDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo0MgogICAgLy8gY29uc3QgaWQgPSB0aGlzLnJlZ2lzdHJ5Q3Vyc29yLnZhbHVlCiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MjkKICAgIC8vIHJlZ2lzdHJ5Q3Vyc29yID0gR2xvYmFsU3RhdGU8dWludDY0Pih7IGluaXRpYWxWYWx1ZTogMSwga2V5OiBHYXRlR2xvYmFsU3RhdGVLZXlSZWdpc3RyeUN1cnNvciB9KQogICAgYnl0ZWNfMiAvLyAicmVnaXN0cnlfY3Vyc29yIgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6NDIKICAgIC8vIGNvbnN0IGlkID0gdGhpcy5yZWdpc3RyeUN1cnNvci52YWx1ZQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjQzCiAgICAvLyB0aGlzLnJlZ2lzdHJ5Q3Vyc29yLnZhbHVlICs9IDEKICAgIGR1cAogICAgaW50Y18wIC8vIDEKICAgICsKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjI5CiAgICAvLyByZWdpc3RyeUN1cnNvciA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IDEsIGtleTogR2F0ZUdsb2JhbFN0YXRlS2V5UmVnaXN0cnlDdXJzb3IgfSkKICAgIGJ5dGVjXzIgLy8gInJlZ2lzdHJ5X2N1cnNvciIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjQzCiAgICAvLyB0aGlzLnJlZ2lzdHJ5Q3Vyc29yLnZhbHVlICs9IDEKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czoxMDEKICAgIC8vIHRoaXMucmVnaXN0cnkoaWQpLnZhbHVlID0gZGVjb2RlQXJjNDxTdWJzY3JpcHRpb25TdHJlYWtHYXRlUmVnaXN0cnlJbmZvPihhcmdzKQogICAgaXRvYgogICAgZHVwCiAgICBkaWcgMgogICAgYm94X3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OTUKICAgIC8vIHJlZ2lzdGVyKG1iclBheW1lbnQ6IGd0eG4uUGF5bWVudFR4biwgYXJnczogYnl0ZXMpOiB1aW50NjQgewogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjpTdWJzY3JpcHRpb25TdHJlYWtHYXRlLmNoZWNrW3JvdXRpbmddKCkgLT4gdm9pZDoKY2hlY2s6CiAgICBpbnRjXzEgLy8gMAogICAgZHVwCiAgICBieXRlY18zIC8vICIiCiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjEwNQogICAgLy8gY2hlY2soY2FsbGVyOiBBY2NvdW50LCByZWdpc3RyeUlEOiB1aW50NjQsIGFyZ3M6IGJ5dGVzKTogYm9vbGVhbiB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjEwNgogICAgLy8gbG9nZ2VkQXNzZXJ0KGFyZ3MubGVuZ3RoID09PSAwLCBFUlJfSU5WQUxJRF9BUkdfQ09VTlQpCiAgICBsZW4KICAgIGJ6IGNoZWNrX2FmdGVyX2Fzc2VydEAzCiAgICBieXRlYyA0IC8vICJFUlI6SUFSRyIKICAgIGxvZwogICAgZXJyIC8vIEVSUjpJQVJHCgpjaGVja19hZnRlcl9hc3NlcnRAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjEwNwogICAgLy8gY29uc3QgeyBtZXJjaGFudCwgaWQsIG9wLCBzdHJlYWsgfSA9IGNsb25lKHRoaXMucmVnaXN0cnkocmVnaXN0cnlJRCkudmFsdWUpCiAgICBkdXAKICAgIGl0b2IKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBkdXAKICAgIGV4dHJhY3QgMCAzMgogICAgZGlnIDEKICAgIGV4dHJhY3QgMzIgOAogICAgZGlnIDIKICAgIGV4dHJhY3QgNDAgMQogICAgYnVyeSA4CiAgICB1bmNvdmVyIDIKICAgIHB1c2hpbnQgNDEKICAgIGV4dHJhY3RfdWludDY0CiAgICBidXJ5IDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjU0LTU3CiAgICAvLyBjb25zdCBpbmZvID0gYWJpQ2FsbDx0eXBlb2YgU3Vic2NyaXB0aW9ucy5wcm90b3R5cGUuZ2V0U3Vic2NyaXB0aW9uPih7CiAgICAvLyAgIGFwcElkOiBnZXRBa2l0YUFwcExpc3QodGhpcy5ha2l0YURBTy52YWx1ZSkuc3Vic2NyaXB0aW9ucywKICAgIC8vICAgYXJnczogW3thZGRyZXNzLCBpZH1dLAogICAgLy8gfSkucmV0dXJuVmFsdWUKICAgIGl0eG5fYmVnaW4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjU2CiAgICAvLyBhcmdzOiBbe2FkZHJlc3MsIGlkfV0sCiAgICBkaWcgMwogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo1NQogICAgLy8gYXBwSWQ6IGdldEFraXRhQXBwTGlzdCh0aGlzLmFraXRhREFPLnZhbHVlKS5zdWJzY3JpcHRpb25zLAogICAgaW50Y18xIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy91dGlscy9iYXNlLWNvbnRyYWN0cy9iYXNlLnRzOjI3CiAgICAvLyBha2l0YURBTyA9IEdsb2JhbFN0YXRlPEFwcGxpY2F0aW9uPih7IGtleTogR2xvYmFsU3RhdGVLZXlBa2l0YURBTyB9KQogICAgYnl0ZWNfMSAvLyAiYWtpdGFfZGFvIgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6NTUKICAgIC8vIGFwcElkOiBnZXRBa2l0YUFwcExpc3QodGhpcy5ha2l0YURBTy52YWx1ZSkuc3Vic2NyaXB0aW9ucywKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICAvLyBzbWFydF9jb250cmFjdHMvdXRpbHMvZnVuY3Rpb25zLnRzOjQ0CiAgICAvLyBjb25zdCBbYXBwTGlzdEJ5dGVzXSA9IG9wLkFwcEdsb2JhbC5nZXRFeEJ5dGVzKGFraXRhREFPLCBCeXRlcyhBa2l0YURBT0dsb2JhbFN0YXRlS2V5c0FraXRhQXBwTGlzdCkpCiAgICBwdXNoYnl0ZXMgImFhbCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBwb3AKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjU1CiAgICAvLyBhcHBJZDogZ2V0QWtpdGFBcHBMaXN0KHRoaXMuYWtpdGFEQU8udmFsdWUpLnN1YnNjcmlwdGlvbnMsCiAgICBwdXNoaW50IDMyCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo1NC01NwogICAgLy8gY29uc3QgaW5mbyA9IGFiaUNhbGw8dHlwZW9mIFN1YnNjcmlwdGlvbnMucHJvdG90eXBlLmdldFN1YnNjcmlwdGlvbj4oewogICAgLy8gICBhcHBJZDogZ2V0QWtpdGFBcHBMaXN0KHRoaXMuYWtpdGFEQU8udmFsdWUpLnN1YnNjcmlwdGlvbnMsCiAgICAvLyAgIGFyZ3M6IFt7YWRkcmVzcywgaWR9XSwKICAgIC8vIH0pLnJldHVyblZhbHVlCiAgICBwdXNoYnl0ZXMgMHgyNWI4MTJhNyAvLyBtZXRob2QgImdldFN1YnNjcmlwdGlvbigoYWRkcmVzcyx1aW50NjQpKShib29sLGFkZHJlc3MsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQpIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18xIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgaXR4biBMYXN0TG9nCiAgICBkdXAKICAgIGJ1cnkgOAogICAgZHVwCiAgICBleHRyYWN0IDQgMAogICAgZGlnIDEKICAgIGV4dHJhY3QgMCA0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgID09CiAgICBhc3NlcnQgLy8gQnl0ZXMgaGFzIHZhbGlkIHByZWZpeAogICAgbGVuCiAgICBwdXNoaW50IDEwNQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3Igc21hcnRfY29udHJhY3RzL3N1YnNjcmlwdGlvbnMvdHlwZXMudHM6OlN1YnNjcmlwdGlvbkluZm9XaXRoRXhpc3RlbmNlCiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo1OQogICAgLy8gY29uc3QgdG9NZXJjaGFudCA9IGluZm8ucmVjaXBpZW50ID09PSBtZXJjaGFudAogICAgZHVwCiAgICBleHRyYWN0IDUgMzIKICAgIHVuY292ZXIgMgogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjYyCiAgICAvLyBHbG9iYWwubGF0ZXN0VGltZXN0YW1wIC0gKCgoR2xvYmFsLmxhdGVzdFRpbWVzdGFtcCAtIGluZm8uc3RhcnREYXRlKSAlIGluZm8uaW50ZXJ2YWwpICsgaW5mby5pbnRlcnZhbCkKICAgIGdsb2JhbCBMYXRlc3RUaW1lc3RhbXAKICAgIGR1cAogICAgZGlnIDMKICAgIHB1c2hpbnQgNDUKICAgIGV4dHJhY3RfdWludDY0CiAgICAtCiAgICBkaWcgMwogICAgcHVzaGludCA2MQogICAgZXh0cmFjdF91aW50NjQKICAgIHN3YXAKICAgIGRpZyAxCiAgICAlCiAgICArCiAgICAtCiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo2NAogICAgLy8gY29uc3Qgbm90U3RhbGUgPSBpbmZvLmxhc3RQYXltZW50ID4gbGFzdFdpbmRvd1N0YXJ0CiAgICB1bmNvdmVyIDIKICAgIHB1c2hpbnQgODUKICAgIGV4dHJhY3RfdWludDY0CiAgICA8CiAgICBidXJ5IDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjY2CiAgICAvLyBpZiAoISh0b01lcmNoYW50ICYmIG5vdFN0YWxlKSkgewogICAgYnogY2hlY2tfaWZfYm9keUA2CiAgICBkaWcgMwogICAgYm56IGNoZWNrX2FmdGVyX2lmX2Vsc2VANwoKY2hlY2tfaWZfYm9keUA2OgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6NjcKICAgIC8vIHJldHVybiBmYWxzZQogICAgaW50Y18xIC8vIDAKCmNoZWNrX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OlN1YnNjcmlwdGlvblN0cmVha0dhdGUuc3Vic2NyaXB0aW9uU3RyZWFrR2F0ZUAyMDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjEwNQogICAgLy8gY2hlY2soY2FsbGVyOiBBY2NvdW50LCByZWdpc3RyeUlEOiB1aW50NjQsIGFyZ3M6IGJ5dGVzKTogYm9vbGVhbiB7CiAgICBwdXNoYnl0ZXMgMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgpjaGVja19hZnRlcl9pZl9lbHNlQDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo3MQogICAgLy8gY2FzZSBFcXVhbDogcmV0dXJuIGluZm8uc3RyZWFrID09PSBzdHJlYWsKICAgIGRpZyA0CiAgICBwdXNoYnl0ZXMgMHgwYQogICAgPT0KICAgIGJ6IGNoZWNrX2FmdGVyX2lmX2Vsc2VAOQogICAgZGlnIDUKICAgIGludGNfMiAvLyA5MwogICAgZXh0cmFjdF91aW50NjQKICAgIGRpZyAzCiAgICA9PQogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MTA4LTExNAogICAgLy8gcmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9uU3RyZWFrR2F0ZSgKICAgIC8vICAgY2FsbGVyLAogICAgLy8gICBtZXJjaGFudCwKICAgIC8vICAgaWQsCiAgICAvLyAgIG9wLAogICAgLy8gICBzdHJlYWsKICAgIC8vICkKICAgIGIgY2hlY2tfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo6U3Vic2NyaXB0aW9uU3RyZWFrR2F0ZS5zdWJzY3JpcHRpb25TdHJlYWtHYXRlQDIwCgpjaGVja19hZnRlcl9pZl9lbHNlQDk6CiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo3MgogICAgLy8gY2FzZSBOb3RFcXVhbDogcmV0dXJuIGluZm8uc3RyZWFrICE9PSBzdHJlYWsKICAgIGRpZyA0CiAgICBwdXNoYnl0ZXMgMHgxNAogICAgPT0KICAgIGJ6IGNoZWNrX2FmdGVyX2lmX2Vsc2VAMTEKICAgIGRpZyA1CiAgICBpbnRjXzIgLy8gOTMKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMwogICAgIT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjEwOC0xMTQKICAgIC8vIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvblN0cmVha0dhdGUoCiAgICAvLyAgIGNhbGxlciwKICAgIC8vICAgbWVyY2hhbnQsCiAgICAvLyAgIGlkLAogICAgLy8gICBvcCwKICAgIC8vICAgc3RyZWFrCiAgICAvLyApCiAgICBiIGNoZWNrX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OlN1YnNjcmlwdGlvblN0cmVha0dhdGUuc3Vic2NyaXB0aW9uU3RyZWFrR2F0ZUAyMAoKY2hlY2tfYWZ0ZXJfaWZfZWxzZUAxMToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjczCiAgICAvLyBjYXNlIExlc3NUaGFuOiByZXR1cm4gaW5mby5zdHJlYWsgPCBzdHJlYWsKICAgIGRpZyA0CiAgICBwdXNoYnl0ZXMgMHgxZQogICAgPT0KICAgIGJ6IGNoZWNrX2FmdGVyX2lmX2Vsc2VAMTMKICAgIGRpZyA1CiAgICBpbnRjXzIgLy8gOTMKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMwogICAgPAogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MTA4LTExNAogICAgLy8gcmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9uU3RyZWFrR2F0ZSgKICAgIC8vICAgY2FsbGVyLAogICAgLy8gICBtZXJjaGFudCwKICAgIC8vICAgaWQsCiAgICAvLyAgIG9wLAogICAgLy8gICBzdHJlYWsKICAgIC8vICkKICAgIGIgY2hlY2tfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo6U3Vic2NyaXB0aW9uU3RyZWFrR2F0ZS5zdWJzY3JpcHRpb25TdHJlYWtHYXRlQDIwCgpjaGVja19hZnRlcl9pZl9lbHNlQDEzOgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6NzQKICAgIC8vIGNhc2UgTGVzc1RoYW5PckVxdWFsVG86IHJldHVybiBpbmZvLnN0cmVhayA8PSBzdHJlYWsKICAgIGRpZyA0CiAgICBwdXNoYnl0ZXMgMHgyOAogICAgPT0KICAgIGJ6IGNoZWNrX2FmdGVyX2lmX2Vsc2VAMTUKICAgIGRpZyA1CiAgICBpbnRjXzIgLy8gOTMKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMwogICAgPD0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjEwOC0xMTQKICAgIC8vIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvblN0cmVha0dhdGUoCiAgICAvLyAgIGNhbGxlciwKICAgIC8vICAgbWVyY2hhbnQsCiAgICAvLyAgIGlkLAogICAgLy8gICBvcCwKICAgIC8vICAgc3RyZWFrCiAgICAvLyApCiAgICBiIGNoZWNrX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OlN1YnNjcmlwdGlvblN0cmVha0dhdGUuc3Vic2NyaXB0aW9uU3RyZWFrR2F0ZUAyMAoKY2hlY2tfYWZ0ZXJfaWZfZWxzZUAxNToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjc1CiAgICAvLyBjYXNlIEdyZWF0ZXJUaGFuOiByZXR1cm4gaW5mby5zdHJlYWsgPiBzdHJlYWsKICAgIGRpZyA0CiAgICBwdXNoYnl0ZXMgMHgzMgogICAgPT0KICAgIGJ6IGNoZWNrX2FmdGVyX2lmX2Vsc2VAMTcKICAgIGRpZyA1CiAgICBpbnRjXzIgLy8gOTMKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMwogICAgPgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MTA4LTExNAogICAgLy8gcmV0dXJuIHRoaXMuc3Vic2NyaXB0aW9uU3RyZWFrR2F0ZSgKICAgIC8vICAgY2FsbGVyLAogICAgLy8gICBtZXJjaGFudCwKICAgIC8vICAgaWQsCiAgICAvLyAgIG9wLAogICAgLy8gICBzdHJlYWsKICAgIC8vICkKICAgIGIgY2hlY2tfYWZ0ZXJfaW5saW5lZF9zbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo6U3Vic2NyaXB0aW9uU3RyZWFrR2F0ZS5zdWJzY3JpcHRpb25TdHJlYWtHYXRlQDIwCgpjaGVja19hZnRlcl9pZl9lbHNlQDE3OgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6NzYKICAgIC8vIGNhc2UgR3JlYXRlclRoYW5PckVxdWFsVG86IHJldHVybiBpbmZvLnN0cmVhayA+PSBzdHJlYWsKICAgIGRpZyA0CiAgICBwdXNoYnl0ZXMgMHgzYwogICAgPT0KICAgIGJ6IGNoZWNrX2FmdGVyX2lmX2Vsc2VAMTkKICAgIGRpZyA1CiAgICBpbnRjXzIgLy8gOTMKICAgIGV4dHJhY3RfdWludDY0CiAgICBkaWcgMwogICAgPj0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjEwOC0xMTQKICAgIC8vIHJldHVybiB0aGlzLnN1YnNjcmlwdGlvblN0cmVha0dhdGUoCiAgICAvLyAgIGNhbGxlciwKICAgIC8vICAgbWVyY2hhbnQsCiAgICAvLyAgIGlkLAogICAgLy8gICBvcCwKICAgIC8vICAgc3RyZWFrCiAgICAvLyApCiAgICBiIGNoZWNrX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6OlN1YnNjcmlwdGlvblN0cmVha0dhdGUuc3Vic2NyaXB0aW9uU3RyZWFrR2F0ZUAyMAoKY2hlY2tfYWZ0ZXJfaWZfZWxzZUAxOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjc3CiAgICAvLyBkZWZhdWx0OiByZXR1cm4gZmFsc2UKICAgIGludGNfMSAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czoxMDgtMTE0CiAgICAvLyByZXR1cm4gdGhpcy5zdWJzY3JpcHRpb25TdHJlYWtHYXRlKAogICAgLy8gICBjYWxsZXIsCiAgICAvLyAgIG1lcmNoYW50LAogICAgLy8gICBpZCwKICAgIC8vICAgb3AsCiAgICAvLyAgIHN0cmVhawogICAgLy8gKQogICAgYiBjaGVja19hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy9nYXRlcy9zdWItZ2F0ZXMvc3Vic2NyaXB0aW9uLXN0cmVhay9jb250cmFjdC5hbGdvLnRzOjpTdWJzY3JpcHRpb25TdHJlYWtHYXRlLnN1YnNjcmlwdGlvblN0cmVha0dhdGVAMjAKCgovLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo6U3Vic2NyaXB0aW9uU3RyZWFrR2F0ZS5nZXRSZWdpc3RyYXRpb25TaGFwZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldFJlZ2lzdHJhdGlvblNoYXBlOgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MTE3CiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDQ5CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvdHlwZXMudHM6OlN1YnNjcmlwdGlvblN0cmVha0dhdGVSZWdpc3RyeUluZm8KICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czo6U3Vic2NyaXB0aW9uU3RyZWFrR2F0ZS5nZXRFbnRyeVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldEVudHJ5OgogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MTIyCiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyBzbWFydF9jb250cmFjdHMvZ2F0ZXMvc3ViLWdhdGVzL3N1YnNjcmlwdGlvbi1zdHJlYWsvY29udHJhY3QuYWxnby50czoxMjQKICAgIC8vIHJldHVybiBlbmNvZGVBcmM0KHRoaXMucmVnaXN0cnkocmVnaXN0cnlJRCkudmFsdWUpCiAgICBpdG9iCiAgICBib3hfZ2V0CiAgICBhc3NlcnQgLy8gQm94IG11c3QgaGF2ZSB2YWx1ZQogICAgLy8gc21hcnRfY29udHJhY3RzL2dhdGVzL3N1Yi1nYXRlcy9zdWJzY3JpcHRpb24tc3RyZWFrL2NvbnRyYWN0LmFsZ28udHM6MTIyCiAgICAvLyBAYWJpbWV0aG9kKHsgcmVhZG9ubHk6IHRydWUgfSkKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzL3V0aWxzL2Jhc2UtY29udHJhY3RzL2Jhc2UudHM6OkFraXRhQmFzZUNvbnRyYWN0LnVwZGF0ZUFraXRhREFPW3JvdXRpbmddKCkgLT4gdm9pZDoKdXBkYXRlQWtpdGFEQU86CiAgICAvLyBzbWFydF9jb250cmFjdHMvdXRpbHMvYmFzZS1jb250cmFjdHMvYmFzZS50czozNgogICAgLy8gdXBkYXRlQWtpdGFEQU8oYWtpdGFEQU86IEFwcGxpY2F0aW9uKTogdm9pZCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3V0aWxzL2Jhc2UtY29udHJhY3RzL2Jhc2UudHM6MzcKICAgIC8vIGxvZ2dlZEFzc2VydChUeG4uc2VuZGVyID09PSB0aGlzLmdldEFraXRhREFPV2FsbGV0KCkuYWRkcmVzcywgRVJSX05PVF9BS0lUQV9EQU8pCiAgICB0eG4gU2VuZGVyCiAgICAvLyBzbWFydF9jb250cmFjdHMvdXRpbHMvYmFzZS1jb250cmFjdHMvYmFzZS50czozMAogICAgLy8gY29uc3QgW3dhbGxldElEXSA9IG9wLkFwcEdsb2JhbC5nZXRFeFVpbnQ2NCh0aGlzLmFraXRhREFPLnZhbHVlLCBCeXRlcyhBa2l0YURBT0dsb2JhbFN0YXRlS2V5c1dhbGxldCkpCiAgICBpbnRjXzEgLy8gMAogICAgLy8gc21hcnRfY29udHJhY3RzL3V0aWxzL2Jhc2UtY29udHJhY3RzL2Jhc2UudHM6MjcKICAgIC8vIGFraXRhREFPID0gR2xvYmFsU3RhdGU8QXBwbGljYXRpb24+KHsga2V5OiBHbG9iYWxTdGF0ZUtleUFraXRhREFPIH0pCiAgICBieXRlY18xIC8vICJha2l0YV9kYW8iCiAgICAvLyBzbWFydF9jb250cmFjdHMvdXRpbHMvYmFzZS1jb250cmFjdHMvYmFzZS50czozMAogICAgLy8gY29uc3QgW3dhbGxldElEXSA9IG9wLkFwcEdsb2JhbC5nZXRFeFVpbnQ2NCh0aGlzLmFraXRhREFPLnZhbHVlLCBCeXRlcyhBa2l0YURBT0dsb2JhbFN0YXRlS2V5c1dhbGxldCkpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgcHVzaGJ5dGVzICJ3YWxsZXQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgcG9wCiAgICAvLyBzbWFydF9jb250cmFjdHMvdXRpbHMvYmFzZS1jb250cmFjdHMvYmFzZS50czozNwogICAgLy8gbG9nZ2VkQXNzZXJ0KFR4bi5zZW5kZXIgPT09IHRoaXMuZ2V0QWtpdGFEQU9XYWxsZXQoKS5hZGRyZXNzLCBFUlJfTk9UX0FLSVRBX0RBTykKICAgIGFwcF9wYXJhbXNfZ2V0IEFwcEFkZHJlc3MKICAgIGFzc2VydCAvLyBhcHBsaWNhdGlvbiBleGlzdHMKICAgID09CiAgICBibnogdXBkYXRlQWtpdGFEQU9fYWZ0ZXJfYXNzZXJ0QDMKICAgIHB1c2hieXRlcyAiRVJSOk5EQU8iCiAgICBsb2cKICAgIGVyciAvLyBFUlI6TkRBTwoKdXBkYXRlQWtpdGFEQU9fYWZ0ZXJfYXNzZXJ0QDM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvdXRpbHMvYmFzZS1jb250cmFjdHMvYmFzZS50czoyNwogICAgLy8gYWtpdGFEQU8gPSBHbG9iYWxTdGF0ZTxBcHBsaWNhdGlvbj4oeyBrZXk6IEdsb2JhbFN0YXRlS2V5QWtpdGFEQU8gfSkKICAgIGJ5dGVjXzEgLy8gImFraXRhX2RhbyIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy91dGlscy9iYXNlLWNvbnRyYWN0cy9iYXNlLnRzOjM4CiAgICAvLyB0aGlzLmFraXRhREFPLnZhbHVlID0gYWtpdGFEQU8KICAgIGRpZyAxCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3V0aWxzL2Jhc2UtY29udHJhY3RzL2Jhc2UudHM6MzYKICAgIC8vIHVwZGF0ZUFraXRhREFPKGFraXRhREFPOiBBcHBsaWNhdGlvbik6IHZvaWQgewogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEKICAgIHJldHVybgo=" }, "byteCode": { "approval": "CyAEAQBdAiYGBBUffHUJYWtpdGFfZGFvD3JlZ2lzdHJ5X2N1cnNvcgAIRVJSOklBUkcIRVJSOklQQVkxGEAARioiZ4ICEnJlZ2lzdHJhdGlvbl9zaGFwZR0oYWRkcmVzcyx1aW50NjQsdWludDgsdWludDY0KWeAC2NoZWNrX3NoYXBlK2cxGRREMRhBADuCBwQynwTuBHe7ebkEbgP1CgQnlul7BJDU+l0EM+kslASFTe3gNhoAjgcAPABZALIB6AH3AhIAAQAiQ4AEzZrWfjYaAI4BAAEANhoBSSNZJQhLARUSRFcCADYaAkkVgQgSRBeAB3ZlcnNpb25PAmcpTGciQzYaAUkjWSUITBUSRIAMFR98dQAAAAAAAGLUsCJDMRYiCUk4ECISRDYaAUkjWSUISwEVEkRXAgBJFYExEkAABCcEsABLATgHMgoSQAAEJwWwAEsBOAiB1MUBEkAABCcFsAAjKmVESSIIKkxnFklLAr8oTFCwIkMjSStJNhoBSRWBIBJENhoCSRWBCBJEFzYaA0kjWSUISwEVEkRXAgAVQQAEJwSwAEkWvkRJVwAgSwFXIAhLAlcoAUUITwKBKVtFBbFLA0xQIyllRIADYWFsZUiBIFuyGIAEJbgSp7IashqBBrIQI7IBs7Q+SUUISVcEAEsBVwAEKBJEFYFpEkRJVwUgTwISMgdJSwOBLVsJSwOBPVtMSwEYCAlPAoFVWwxFBUEABUsDQAAOI4ABACNPAlQoTFCwIkNLBIABChJBAApLBSRbSwMSQv/gSwSAARQSQQAKSwUkW0sDE0L/zUsEgAEeEkEACksFJFtLAwxC/7pLBIABKBJBAApLBSRbSwMOQv+nSwSAATISQQAKSwUkW0sDDUL/lEsEgAE8EkEACksFJFtLAw9C/4EjQv99NhoBSRWBMRJEKExQsCJDNhoBSRWBCBJEFxa+REkVFlcGAkxQKExQsCJDNhoBSRWBCBJEFzEAIyllRIAGd2FsbGV0ZUhyCEQSQAAMgAhFUlI6TkRBT7AAKUsBZyJD", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 9, "patch": 0 } }, "events": [], "templateVariables": {} }