{ "name": "DucielloGroupGoldAsa", "structs": {}, "methods": [ { "name": "createGoldAsset", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "updateReserves", "args": [ { "type": "uint64", "name": "newReserves" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "mintGold", "args": [ { "type": "address", "name": "receiver" }, { "type": "uint64", "name": "amount" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "transferGold", "args": [ { "type": "address", "name": "from" }, { "type": "address", "name": "to" }, { "type": "uint64", "name": "amount" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "redeemGold", "args": [ { "type": "axfer", "name": "axfer" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 3, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "goldAssetId": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "Z29sZEFzc2V0SWQ=" }, "totalReserves": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "dG90YWxSZXNlcnZlcw==" }, "mintedAmount": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bWludGVkQW1vdW50" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 132 ], "errorMessage": "Apenas o criador pode criar o ativo GOLD" }, { "pc": [ 513, 644 ], "errorMessage": "Asset not created" }, { "pc": [ 786 ], "errorMessage": "Ativo GOLD ainda n\u00e3o foi criado" }, { "pc": [ 138 ], "errorMessage": "Ativo GOLD j\u00e1 foi criado" }, { "pc": [ 794 ], "errorMessage": "Ativo inv\u00e1lido para resgate" }, { "pc": [ 528 ], "errorMessage": "Insufficient reserves" }, { "pc": [ 802 ], "errorMessage": "O destino deve ser o contrato" }, { "pc": [ 811 ], "errorMessage": "O sender deve ser o chamador" }, { "pc": [ 70 ], "errorMessage": "OnCompletion must be NoOp" }, { "pc": [ 124 ], "errorMessage": "OnCompletion must be NoOp && can only call when creating" }, { "pc": [ 461 ], "errorMessage": "Only creator can update reserves" }, { "pc": [ 136, 511, 517, 524, 642, 784 ], "errorMessage": "check GlobalState exists" }, { "pc": [ 498, 620, 629 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 454, 506, 637 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 780 ], "errorMessage": "transaction type is axfer" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMCAxIDUgOAogICAgYnl0ZWNibG9jayAiZ29sZEFzc2V0SWQiICJ0b3RhbFJlc2VydmVzIiAibWludGVkQW1vdW50IgogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGJueiBtYWluX2FmdGVyX2lmX2Vsc2VAMgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoyOQogICAgLy8gcHVibGljIGdvbGRBc3NldElkID0gR2xvYmFsU3RhdGU8dWludDY0Pih7IGluaXRpYWxWYWx1ZTogVWludDY0KDApIH0pCiAgICBieXRlY18wIC8vICJnb2xkQXNzZXRJZCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czozMAogICAgLy8gcHVibGljIHRvdGFsUmVzZXJ2ZXMgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KHsgaW5pdGlhbFZhbHVlOiBVaW50NjQoMCkgfSkKICAgIGJ5dGVjXzEgLy8gInRvdGFsUmVzZXJ2ZXMiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MzEKICAgIC8vIHB1YmxpYyBtaW50ZWRBbW91bnQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KHsgaW5pdGlhbFZhbHVlOiBVaW50NjQoMCkgfSkKICAgIGJ5dGVjXzIgLy8gIm1pbnRlZEFtb3VudCIKICAgIGludGNfMCAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjI3CiAgICAvLyBleHBvcnQgY2xhc3MgRHVjaWVsbG9Hcm91cEdvbGRBc2EgZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMTQKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydCAvLyBPbkNvbXBsZXRpb24gbXVzdCBiZSBOb09wCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4MGFlNGRiMjEgMHg2YzdmOTNkZCAweGI4ZjNiMTRkIDB4MDRiYTFmZWQgMHg1OGQ0MDA3YyAvLyBtZXRob2QgImNyZWF0ZUdvbGRBc3NldCgpdWludDY0IiwgbWV0aG9kICJ1cGRhdGVSZXNlcnZlcyh1aW50NjQpdm9pZCIsIG1ldGhvZCAibWludEdvbGQoYWRkcmVzcyx1aW50NjQpdm9pZCIsIG1ldGhvZCAidHJhbnNmZXJHb2xkKGFkZHJlc3MsYWRkcmVzcyx1aW50NjQpdm9pZCIsIG1ldGhvZCAicmVkZWVtR29sZChheGZlcil2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggY3JlYXRlR29sZEFzc2V0IHVwZGF0ZVJlc2VydmVzIG1pbnRHb2xkIHRyYW5zZmVyR29sZCByZWRlZW1Hb2xkCiAgICBlcnIKCm1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDE0OgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoyNwogICAgLy8gZXhwb3J0IGNsYXNzIER1Y2llbGxvR3JvdXBHb2xkQXNhIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICBhc3NlcnQgLy8gT25Db21wbGV0aW9uIG11c3QgYmUgTm9PcCAmJiBjYW4gb25seSBjYWxsIHdoZW4gY3JlYXRpbmcKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjpEdWNpZWxsb0dyb3VwR29sZEFzYS5jcmVhdGVHb2xkQXNzZXRbcm91dGluZ10oKSAtPiB2b2lkOgpjcmVhdGVHb2xkQXNzZXQ6CiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjM1CiAgICAvLyBhc3NlcnQoVHhuLnNlbmRlciA9PT0gR2xvYmFsLmNyZWF0b3JBZGRyZXNzLCAnQXBlbmFzIG8gY3JpYWRvciBwb2RlIGNyaWFyIG8gYXRpdm8gR09MRCcpCiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gQXBlbmFzIG8gY3JpYWRvciBwb2RlIGNyaWFyIG8gYXRpdm8gR09MRAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czozNgogICAgLy8gYXNzZXJ0KHRoaXMuZ29sZEFzc2V0SWQudmFsdWUgPT09IFVpbnQ2NCgwKSwgJ0F0aXZvIEdPTEQgasOhIGZvaSBjcmlhZG8nKQogICAgaW50Y18wIC8vIDAKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MjkKICAgIC8vIHB1YmxpYyBnb2xkQXNzZXRJZCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IFVpbnQ2NCgwKSB9KQogICAgYnl0ZWNfMCAvLyAiZ29sZEFzc2V0SWQiCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjM2CiAgICAvLyBhc3NlcnQodGhpcy5nb2xkQXNzZXRJZC52YWx1ZSA9PT0gVWludDY0KDApLCAnQXRpdm8gR09MRCBqw6EgZm9pIGNyaWFkbycpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgIQogICAgYXNzZXJ0IC8vIEF0aXZvIEdPTEQgasOhIGZvaSBjcmlhZG8KICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MzgtNTMKICAgIC8vIGNvbnN0IHJlc3VsdCA9IGl0eG4KICAgIC8vICAgLmFzc2V0Q29uZmlnKHsKICAgIC8vICAgICBhc3NldE5hbWU6ICdEdWNpZWxsbyBHcm91cCBHb2xkJywKICAgIC8vICAgICB1bml0TmFtZTogJ0dPTEQnLAogICAgLy8gICAgIHRvdGFsOiA0MF8wMDBfMDAwLCAvLyA0MCB0b25lbGFkYXMgKGRlY2ltYWxzPTApCiAgICAvLyAgICAgZGVjaW1hbHM6IDAsCiAgICAvLyAgICAgZGVmYXVsdEZyb3plbjogdHJ1ZSwKICAgIC8vICAgICB1cmw6IEdPTERfQVNBX1VSTCwKICAgIC8vICAgICBtZXRhZGF0YUhhc2g6IEdPTERfQVJDM19NRVRBREFUQV9IQVNILAogICAgLy8gICAgIG5vdGU6IEdPTERfQVJDM19VUkwsCiAgICAvLyAgICAgbWFuYWdlcjogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgICAgZnJlZXplOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgICBjbGF3YmFjazogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo0OAogICAgLy8gbWFuYWdlcjogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo0OS01MQogICAgLy8gcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyBmcmVlemU6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gY2xhd2JhY2s6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgZHVwbiAzCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0Q2xhd2JhY2sKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRGcmVlemUKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRSZXNlcnZlCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWFuYWdlcgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo0NwogICAgLy8gbm90ZTogR09MRF9BUkMzX1VSTCwKICAgIHB1c2hieXRlcyAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2RhdmlkYm9uZmltL0NEVEJSTC9tYWluL3Byb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvYXNzZXRzL2FyYzMvZHVjaWVsbG8tZ3JvdXAtZ29sZC5qc29uI2FyYzMiCiAgICBpdHhuX2ZpZWxkIE5vdGUKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NDYKICAgIC8vIG1ldGFkYXRhSGFzaDogR09MRF9BUkMzX01FVEFEQVRBX0hBU0gsCiAgICBwdXNoYnl0ZXMgMHg4ODdiMjc5M2UxOTNmNzZkZWJjYzJmOGMzMDMwYTFlNzA2NWIzZTc5MjlkYWU0NWQ4OTQxNTliNDdkN2JiYWUwCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TWV0YWRhdGFIYXNoCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjQ1CiAgICAvLyB1cmw6IEdPTERfQVNBX1VSTCwKICAgIHB1c2hieXRlcyAiaHR0cHM6Ly93d3cuZHVjaWVsbG8uY29tLmJyLyIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVUkwKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NDQKICAgIC8vIGRlZmF1bHRGcm96ZW46IHRydWUsCiAgICBpbnRjXzEgLy8gMQogICAgaXR4bl9maWVsZCBDb25maWdBc3NldERlZmF1bHRGcm96ZW4KICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NDMKICAgIC8vIGRlY2ltYWxzOiAwLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXREZWNpbWFscwogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo0MgogICAgLy8gdG90YWw6IDQwXzAwMF8wMDAsIC8vIDQwIHRvbmVsYWRhcyAoZGVjaW1hbHM9MCkKICAgIHB1c2hpbnQgNDAwMDAwMDAgLy8gNDAwMDAwMDAKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRUb3RhbAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo0MQogICAgLy8gdW5pdE5hbWU6ICdHT0xEJywKICAgIHB1c2hieXRlcyAiR09MRCIKICAgIGl0eG5fZmllbGQgQ29uZmlnQXNzZXRVbml0TmFtZQogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo0MAogICAgLy8gYXNzZXROYW1lOiAnRHVjaWVsbG8gR3JvdXAgR29sZCcsCiAgICBwdXNoYnl0ZXMgIkR1Y2llbGxvIEdyb3VwIEdvbGQiCiAgICBpdHhuX2ZpZWxkIENvbmZpZ0Fzc2V0TmFtZQogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czozOC01MgogICAgLy8gY29uc3QgcmVzdWx0ID0gaXR4bgogICAgLy8gICAuYXNzZXRDb25maWcoewogICAgLy8gICAgIGFzc2V0TmFtZTogJ0R1Y2llbGxvIEdyb3VwIEdvbGQnLAogICAgLy8gICAgIHVuaXROYW1lOiAnR09MRCcsCiAgICAvLyAgICAgdG90YWw6IDQwXzAwMF8wMDAsIC8vIDQwIHRvbmVsYWRhcyAoZGVjaW1hbHM9MCkKICAgIC8vICAgICBkZWNpbWFsczogMCwKICAgIC8vICAgICBkZWZhdWx0RnJvemVuOiB0cnVlLAogICAgLy8gICAgIHVybDogR09MRF9BU0FfVVJMLAogICAgLy8gICAgIG1ldGFkYXRhSGFzaDogR09MRF9BUkMzX01FVEFEQVRBX0hBU0gsCiAgICAvLyAgICAgbm90ZTogR09MRF9BUkMzX1VSTCwKICAgIC8vICAgICBtYW5hZ2VyOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgICByZXNlcnZlOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgICBmcmVlemU6IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLAogICAgLy8gICAgIGNsYXdiYWNrOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgfSkKICAgIHB1c2hpbnQgMyAvLyAzCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MzgtNTMKICAgIC8vIGNvbnN0IHJlc3VsdCA9IGl0eG4KICAgIC8vICAgLmFzc2V0Q29uZmlnKHsKICAgIC8vICAgICBhc3NldE5hbWU6ICdEdWNpZWxsbyBHcm91cCBHb2xkJywKICAgIC8vICAgICB1bml0TmFtZTogJ0dPTEQnLAogICAgLy8gICAgIHRvdGFsOiA0MF8wMDBfMDAwLCAvLyA0MCB0b25lbGFkYXMgKGRlY2ltYWxzPTApCiAgICAvLyAgICAgZGVjaW1hbHM6IDAsCiAgICAvLyAgICAgZGVmYXVsdEZyb3plbjogdHJ1ZSwKICAgIC8vICAgICB1cmw6IEdPTERfQVNBX1VSTCwKICAgIC8vICAgICBtZXRhZGF0YUhhc2g6IEdPTERfQVJDM19NRVRBREFUQV9IQVNILAogICAgLy8gICAgIG5vdGU6IEdPTERfQVJDM19VUkwsCiAgICAvLyAgICAgbWFuYWdlcjogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgICAgcmVzZXJ2ZTogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgICAgZnJlZXplOiBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywKICAgIC8vICAgICBjbGF3YmFjazogR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MsCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ3JlYXRlZEFzc2V0SUQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MjkKICAgIC8vIHB1YmxpYyBnb2xkQXNzZXRJZCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IFVpbnQ2NCgwKSB9KQogICAgYnl0ZWNfMCAvLyAiZ29sZEFzc2V0SWQiCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjU2CiAgICAvLyB0aGlzLmdvbGRBc3NldElkLnZhbHVlID0gY3JlYXRlZElkCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NTgKICAgIC8vIGxvZygnZ29sZF9hc3NldF9jcmVhdGVkJywgY3JlYXRlZElkKQogICAgaXRvYgogICAgcHVzaGJ5dGVzICJnb2xkX2Fzc2V0X2NyZWF0ZWQiCiAgICBkaWcgMQogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MzMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBwdXNoYnl0ZXMgMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjpEdWNpZWxsb0dyb3VwR29sZEFzYS51cGRhdGVSZXNlcnZlc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnVwZGF0ZVJlc2VydmVzOgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo2MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NjQKICAgIC8vIGFzc2VydChUeG4uc2VuZGVyID09PSBHbG9iYWwuY3JlYXRvckFkZHJlc3MsICdPbmx5IGNyZWF0b3IgY2FuIHVwZGF0ZSByZXNlcnZlcycpCiAgICB0eG4gU2VuZGVyCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gT25seSBjcmVhdG9yIGNhbiB1cGRhdGUgcmVzZXJ2ZXMKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MzAKICAgIC8vIHB1YmxpYyB0b3RhbFJlc2VydmVzID0gR2xvYmFsU3RhdGU8dWludDY0Pih7IGluaXRpYWxWYWx1ZTogVWludDY0KDApIH0pCiAgICBieXRlY18xIC8vICJ0b3RhbFJlc2VydmVzIgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo2NQogICAgLy8gdGhpcy50b3RhbFJlc2VydmVzLnZhbHVlID0gbmV3UmVzZXJ2ZXMKICAgIGRpZyAxCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo2NgogICAgLy8gbG9nKCdyZXNlcnZlc191cGRhdGVkJywgbmV3UmVzZXJ2ZXMpCiAgICBpdG9iCiAgICBwdXNoYnl0ZXMgInJlc2VydmVzX3VwZGF0ZWQiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo2MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjpEdWNpZWxsb0dyb3VwR29sZEFzYS5taW50R29sZFtyb3V0aW5nXSgpIC0+IHZvaWQ6Cm1pbnRHb2xkOgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo2OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDMyIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzMgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NzEKICAgIC8vIGFzc2VydCh0aGlzLmdvbGRBc3NldElkLnZhbHVlICE9PSBVaW50NjQoMCksICdBc3NldCBub3QgY3JlYXRlZCcpCiAgICBpbnRjXzAgLy8gMAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoyOQogICAgLy8gcHVibGljIGdvbGRBc3NldElkID0gR2xvYmFsU3RhdGU8dWludDY0Pih7IGluaXRpYWxWYWx1ZTogVWludDY0KDApIH0pCiAgICBieXRlY18wIC8vICJnb2xkQXNzZXRJZCIKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NzEKICAgIC8vIGFzc2VydCh0aGlzLmdvbGRBc3NldElkLnZhbHVlICE9PSBVaW50NjQoMCksICdBc3NldCBub3QgY3JlYXRlZCcpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgZHVwCiAgICBhc3NlcnQgLy8gQXNzZXQgbm90IGNyZWF0ZWQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NzIKICAgIC8vIGFzc2VydCh0aGlzLm1pbnRlZEFtb3VudC52YWx1ZSArIGFtb3VudCA8PSB0aGlzLnRvdGFsUmVzZXJ2ZXMudmFsdWUsICdJbnN1ZmZpY2llbnQgcmVzZXJ2ZXMnKQogICAgaW50Y18wIC8vIDAKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MzEKICAgIC8vIHB1YmxpYyBtaW50ZWRBbW91bnQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KHsgaW5pdGlhbFZhbHVlOiBVaW50NjQoMCkgfSkKICAgIGJ5dGVjXzIgLy8gIm1pbnRlZEFtb3VudCIKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NzIKICAgIC8vIGFzc2VydCh0aGlzLm1pbnRlZEFtb3VudC52YWx1ZSArIGFtb3VudCA8PSB0aGlzLnRvdGFsUmVzZXJ2ZXMudmFsdWUsICdJbnN1ZmZpY2llbnQgcmVzZXJ2ZXMnKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIGRpZyAyCiAgICArCiAgICBpbnRjXzAgLy8gMAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czozMAogICAgLy8gcHVibGljIHRvdGFsUmVzZXJ2ZXMgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KHsgaW5pdGlhbFZhbHVlOiBVaW50NjQoMCkgfSkKICAgIGJ5dGVjXzEgLy8gInRvdGFsUmVzZXJ2ZXMiCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjcyCiAgICAvLyBhc3NlcnQodGhpcy5taW50ZWRBbW91bnQudmFsdWUgKyBhbW91bnQgPD0gdGhpcy50b3RhbFJlc2VydmVzLnZhbHVlLCAnSW5zdWZmaWNpZW50IHJlc2VydmVzJykKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgR2xvYmFsU3RhdGUgZXhpc3RzCiAgICBkaWcgMQogICAgPj0KICAgIGFzc2VydCAvLyBJbnN1ZmZpY2llbnQgcmVzZXJ2ZXMKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NzctODMKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiByZWNlaXZlckFjYywKICAgIC8vICAgICBmcm96ZW46IGZhbHNlLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6ODEKICAgIC8vIGZyb3plbjogZmFsc2UsCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldEZyb3plbgogICAgZGlnIDMKICAgIGl0eG5fZmllbGQgRnJlZXplQXNzZXRBY2NvdW50CiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo3Ny04MgogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IHJlY2VpdmVyQWNjLAogICAgLy8gICAgIGZyb3plbjogZmFsc2UsCiAgICAvLyAgIH0pCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjc3LTgzCiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldEZyZWV6ZSh7CiAgICAvLyAgICAgZnJlZXplQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgZnJlZXplQWNjb3VudDogcmVjZWl2ZXJBY2MsCiAgICAvLyAgICAgZnJvemVuOiBmYWxzZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo4Ni05MgogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRUcmFuc2Zlcih7CiAgICAvLyAgICAgeGZlckFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGFzc2V0QW1vdW50OiBhbW91bnQsCiAgICAvLyAgICAgYXNzZXRSZWNlaXZlcjogcmVjZWl2ZXJBY2MsCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgZGlnIDMKICAgIGl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgogICAgZGlnIDIKICAgIGl0eG5fZmllbGQgQXNzZXRBbW91bnQKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIFhmZXJBc3NldAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo4Ni05MQogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRUcmFuc2Zlcih7CiAgICAvLyAgICAgeGZlckFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGFzc2V0QW1vdW50OiBhbW91bnQsCiAgICAvLyAgICAgYXNzZXRSZWNlaXZlcjogcmVjZWl2ZXJBY2MsCiAgICAvLyAgIH0pCiAgICBwdXNoaW50IDQgLy8gNAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjg2LTkyCiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldFRyYW5zZmVyKHsKICAgIC8vICAgICB4ZmVyQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgYXNzZXRBbW91bnQ6IGFtb3VudCwKICAgIC8vICAgICBhc3NldFJlY2VpdmVyOiByZWNlaXZlckFjYywKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo5NS0xMDEKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiByZWNlaXZlckFjYywKICAgIC8vICAgICBmcm96ZW46IHRydWUsCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo5OQogICAgLy8gZnJvemVuOiB0cnVlLAogICAgaW50Y18xIC8vIDEKICAgIGl0eG5fZmllbGQgRnJlZXplQXNzZXRGcm96ZW4KICAgIGRpZyAzCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0QWNjb3VudAogICAgc3dhcAogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo5NS0xMDAKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiByZWNlaXZlckFjYywKICAgIC8vICAgICBmcm96ZW46IHRydWUsCiAgICAvLyAgIH0pCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjk1LTEwMQogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IHJlY2VpdmVyQWNjLAogICAgLy8gICAgIGZyb3plbjogdHJ1ZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czozMQogICAgLy8gcHVibGljIG1pbnRlZEFtb3VudCA9IEdsb2JhbFN0YXRlPHVpbnQ2ND4oeyBpbml0aWFsVmFsdWU6IFVpbnQ2NCgwKSB9KQogICAgYnl0ZWNfMiAvLyAibWludGVkQW1vdW50IgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxMDMKICAgIC8vIHRoaXMubWludGVkQW1vdW50LnZhbHVlICs9IGFtb3VudAogICAgc3dhcAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTA0CiAgICAvLyBsb2coJ2dvbGRfbWludGVkJywgcmVjZWl2ZXJBY2MsIGFtb3VudCkKICAgIHB1c2hieXRlcyAiZ29sZF9taW50ZWQiCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgaXRvYgogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6NjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czo6RHVjaWVsbG9Hcm91cEdvbGRBc2EudHJhbnNmZXJHb2xkW3JvdXRpbmddKCkgLT4gdm9pZDoKdHJhbnNmZXJHb2xkOgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxMDcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMiAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMiAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18zIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjEwOQogICAgLy8gYXNzZXJ0KHRoaXMuZ29sZEFzc2V0SWQudmFsdWUgIT09IFVpbnQ2NCgwKSwgJ0Fzc2V0IG5vdCBjcmVhdGVkJykKICAgIGludGNfMCAvLyAwCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjI5CiAgICAvLyBwdWJsaWMgZ29sZEFzc2V0SWQgPSBHbG9iYWxTdGF0ZTx1aW50NjQ+KHsgaW5pdGlhbFZhbHVlOiBVaW50NjQoMCkgfSkKICAgIGJ5dGVjXzAgLy8gImdvbGRBc3NldElkIgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxMDkKICAgIC8vIGFzc2VydCh0aGlzLmdvbGRBc3NldElkLnZhbHVlICE9PSBVaW50NjQoMCksICdBc3NldCBub3QgY3JlYXRlZCcpCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIEdsb2JhbFN0YXRlIGV4aXN0cwogICAgZHVwCiAgICBhc3NlcnQgLy8gQXNzZXQgbm90IGNyZWF0ZWQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTE1LTEyMQogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IGZyb21BY2MsCiAgICAvLyAgICAgZnJvemVuOiBmYWxzZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjExOQogICAgLy8gZnJvemVuOiBmYWxzZSwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0RnJvemVuCiAgICBkaWcgMwogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldEFjY291bnQKICAgIGR1cAogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxMTUtMTIwCiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldEZyZWV6ZSh7CiAgICAvLyAgICAgZnJlZXplQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgZnJlZXplQWNjb3VudDogZnJvbUFjYywKICAgIC8vICAgICBmcm96ZW46IGZhbHNlLAogICAgLy8gICB9KQogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxMTUtMTIxCiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldEZyZWV6ZSh7CiAgICAvLyAgICAgZnJlZXplQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgZnJlZXplQWNjb3VudDogZnJvbUFjYywKICAgIC8vICAgICBmcm96ZW46IGZhbHNlLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjEyMy0xMjkKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiB0b0FjYywKICAgIC8vICAgICBmcm96ZW46IGZhbHNlLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fYmVnaW4KICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTI3CiAgICAvLyBmcm96ZW46IGZhbHNlLAogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRnJlZXplQXNzZXRGcm96ZW4KICAgIGRpZyAyCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0QWNjb3VudAogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0CiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjEyMy0xMjgKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiB0b0FjYywKICAgIC8vICAgICBmcm96ZW46IGZhbHNlLAogICAgLy8gICB9KQogICAgaW50Y18yIC8vIDUKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxMjMtMTI5CiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldEZyZWV6ZSh7CiAgICAvLyAgICAgZnJlZXplQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgZnJlZXplQWNjb3VudDogdG9BY2MsCiAgICAvLyAgICAgZnJvemVuOiBmYWxzZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxMzItMTM5CiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldFRyYW5zZmVyKHsKICAgIC8vICAgICB4ZmVyQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgYXNzZXRBbW91bnQ6IGFtb3VudCwKICAgIC8vICAgICBhc3NldFNlbmRlcjogZnJvbUFjYywKICAgIC8vICAgICBhc3NldFJlY2VpdmVyOiB0b0FjYywKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICBkaWcgMgogICAgaXR4bl9maWVsZCBBc3NldFJlY2VpdmVyCiAgICBkaWcgMwogICAgaXR4bl9maWVsZCBBc3NldFNlbmRlcgogICAgZGlnIDEKICAgIGl0eG5fZmllbGQgQXNzZXRBbW91bnQKICAgIGR1cAogICAgaXR4bl9maWVsZCBYZmVyQXNzZXQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTMyLTEzOAogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRUcmFuc2Zlcih7CiAgICAvLyAgICAgeGZlckFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGFzc2V0QW1vdW50OiBhbW91bnQsCiAgICAvLyAgICAgYXNzZXRTZW5kZXI6IGZyb21BY2MsCiAgICAvLyAgICAgYXNzZXRSZWNlaXZlcjogdG9BY2MsCiAgICAvLyAgIH0pCiAgICBwdXNoaW50IDQgLy8gNAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjEzMi0xMzkKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0VHJhbnNmZXIoewogICAgLy8gICAgIHhmZXJBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBhc3NldEFtb3VudDogYW1vdW50LAogICAgLy8gICAgIGFzc2V0U2VuZGVyOiBmcm9tQWNjLAogICAgLy8gICAgIGFzc2V0UmVjZWl2ZXI6IHRvQWNjLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE0Mi0xNDgKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiBmcm9tQWNjLAogICAgLy8gICAgIGZyb3plbjogdHJ1ZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE0NgogICAgLy8gZnJvemVuOiB0cnVlLAogICAgaW50Y18xIC8vIDEKICAgIGl0eG5fZmllbGQgRnJlZXplQXNzZXRGcm96ZW4KICAgIGRpZyAzCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0QWNjb3VudAogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0CiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE0Mi0xNDcKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiBmcm9tQWNjLAogICAgLy8gICAgIGZyb3plbjogdHJ1ZSwKICAgIC8vICAgfSkKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTQyLTE0OAogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IGZyb21BY2MsCiAgICAvLyAgICAgZnJvemVuOiB0cnVlLAogICAgLy8gICB9KQogICAgLy8gICAuc3VibWl0KCkKICAgIGl0eG5fc3VibWl0CiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE1MC0xNTYKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiB0b0FjYywKICAgIC8vICAgICBmcm96ZW46IHRydWUsCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxNTQKICAgIC8vIGZyb3plbjogdHJ1ZSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0RnJvemVuCiAgICBkaWcgMgogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldEFjY291bnQKICAgIGl0eG5fZmllbGQgRnJlZXplQXNzZXQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTUwLTE1NQogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IHRvQWNjLAogICAgLy8gICAgIGZyb3plbjogdHJ1ZSwKICAgIC8vICAgfSkKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTUwLTE1NgogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IHRvQWNjLAogICAgLy8gICAgIGZyb3plbjogdHJ1ZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxNTgKICAgIC8vIGxvZygnZ29sZF90cmFuc2ZlcnJlZCcsIGZyb21BY2MsIHRvQWNjLCBhbW91bnQpCiAgICBwdXNoYnl0ZXMgImdvbGRfdHJhbnNmZXJyZWQiCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjEwNwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjpEdWNpZWxsb0dyb3VwR29sZEFzYS5yZWRlZW1Hb2xkW3JvdXRpbmddKCkgLT4gdm9pZDoKcmVkZWVtR29sZDoKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTYxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBwdXNoaW50IDQgLy8gYXhmZXIKICAgID09CiAgICBhc3NlcnQgLy8gdHJhbnNhY3Rpb24gdHlwZSBpcyBheGZlcgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxNjMKICAgIC8vIGFzc2VydCh0aGlzLmdvbGRBc3NldElkLnZhbHVlICE9PSBVaW50NjQoMCksICdBdGl2byBHT0xEIGFpbmRhIG7Do28gZm9pIGNyaWFkbycpCiAgICBpbnRjXzAgLy8gMAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoyOQogICAgLy8gcHVibGljIGdvbGRBc3NldElkID0gR2xvYmFsU3RhdGU8dWludDY0Pih7IGluaXRpYWxWYWx1ZTogVWludDY0KDApIH0pCiAgICBieXRlY18wIC8vICJnb2xkQXNzZXRJZCIKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTYzCiAgICAvLyBhc3NlcnQodGhpcy5nb2xkQXNzZXRJZC52YWx1ZSAhPT0gVWludDY0KDApLCAnQXRpdm8gR09MRCBhaW5kYSBuw6NvIGZvaSBjcmlhZG8nKQogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBHbG9iYWxTdGF0ZSBleGlzdHMKICAgIGR1cAogICAgYXNzZXJ0IC8vIEF0aXZvIEdPTEQgYWluZGEgbsOjbyBmb2kgY3JpYWRvCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE2NgogICAgLy8gYXNzZXJ0KGF4ZmVyLnhmZXJBc3NldC5pZCA9PT0gdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwgJ0F0aXZvIGludsOhbGlkbyBwYXJhIHJlc2dhdGUnKQogICAgZGlnIDEKICAgIGd0eG5zIFhmZXJBc3NldAogICAgZGlnIDEKICAgID09CiAgICBhc3NlcnQgLy8gQXRpdm8gaW52w6FsaWRvIHBhcmEgcmVzZ2F0ZQogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxNjcKICAgIC8vIGFzc2VydChheGZlci5hc3NldFJlY2VpdmVyID09PSBHbG9iYWwuY3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcywgJ08gZGVzdGlubyBkZXZlIHNlciBvIGNvbnRyYXRvJykKICAgIGRpZyAxCiAgICBndHhucyBBc3NldFJlY2VpdmVyCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgPT0KICAgIGFzc2VydCAvLyBPIGRlc3Rpbm8gZGV2ZSBzZXIgbyBjb250cmF0bwogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxNjgKICAgIC8vIGFzc2VydChheGZlci5zZW5kZXIgPT09IFR4bi5zZW5kZXIsICdPIHNlbmRlciBkZXZlIHNlciBvIGNoYW1hZG9yJykKICAgIGRpZyAxCiAgICBndHhucyBTZW5kZXIKICAgIGR1cAogICAgdHhuIFNlbmRlcgogICAgPT0KICAgIGFzc2VydCAvLyBPIHNlbmRlciBkZXZlIHNlciBvIGNoYW1hZG9yCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE3MS0xNzcKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiBheGZlci5zZW5kZXIsCiAgICAvLyAgICAgZnJvemVuOiBmYWxzZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE3NQogICAgLy8gZnJvemVuOiBmYWxzZSwKICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0RnJvemVuCiAgICBkdXAKICAgIGl0eG5fZmllbGQgRnJlZXplQXNzZXRBY2NvdW50CiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxNzEtMTc2CiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldEZyZWV6ZSh7CiAgICAvLyAgICAgZnJlZXplQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgZnJlZXplQWNjb3VudDogYXhmZXIuc2VuZGVyLAogICAgLy8gICAgIGZyb3plbjogZmFsc2UsCiAgICAvLyAgIH0pCiAgICBpbnRjXzIgLy8gNQogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICAvLyBwcm9qZWN0cy9nb2xkLWR1Y2llbGxvLWdyb3VwL3NtYXJ0X2NvbnRyYWN0cy9kdWNpZWxsb19ncm91cF9nb2xkX2FzYS9jb250cmFjdC5hbGdvLnRzOjE3MS0xNzcKICAgIC8vIGl0eG4KICAgIC8vICAgLmFzc2V0RnJlZXplKHsKICAgIC8vICAgICBmcmVlemVBc3NldDogdGhpcy5nb2xkQXNzZXRJZC52YWx1ZSwKICAgIC8vICAgICBmcmVlemVBY2NvdW50OiBheGZlci5zZW5kZXIsCiAgICAvLyAgICAgZnJvemVuOiBmYWxzZSwKICAgIC8vICAgfSkKICAgIC8vICAgLnN1Ym1pdCgpCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxODAKICAgIC8vIGxvZygnZ29sZF9yZWRlZW1fcmVxdWVzdCcsIFR4bi5zZW5kZXIsIGF4ZmVyLmFzc2V0QW1vdW50LCBheGZlci50eG5JZCkKICAgIHB1c2hieXRlcyAiZ29sZF9yZWRlZW1fcmVxdWVzdCIKICAgIHR4biBTZW5kZXIKICAgIGNvbmNhdAogICAgZGlnIDMKICAgIGd0eG5zIEFzc2V0QW1vdW50CiAgICBpdG9iCiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgZ3R4bnMgVHhJRAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTgzLTE4OQogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IGF4ZmVyLnNlbmRlciwKICAgIC8vICAgICBmcm96ZW46IHRydWUsCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9iZWdpbgogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxODcKICAgIC8vIGZyb3plbjogdHJ1ZSwKICAgIGludGNfMSAvLyAxCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0RnJvemVuCiAgICBpdHhuX2ZpZWxkIEZyZWV6ZUFzc2V0QWNjb3VudAogICAgaXR4bl9maWVsZCBGcmVlemVBc3NldAogICAgLy8gcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9zbWFydF9jb250cmFjdHMvZHVjaWVsbG9fZ3JvdXBfZ29sZF9hc2EvY29udHJhY3QuYWxnby50czoxODMtMTg4CiAgICAvLyBpdHhuCiAgICAvLyAgIC5hc3NldEZyZWV6ZSh7CiAgICAvLyAgICAgZnJlZXplQXNzZXQ6IHRoaXMuZ29sZEFzc2V0SWQudmFsdWUsCiAgICAvLyAgICAgZnJlZXplQWNjb3VudDogYXhmZXIuc2VuZGVyLAogICAgLy8gICAgIGZyb3plbjogdHJ1ZSwKICAgIC8vICAgfSkKICAgIGludGNfMiAvLyA1CiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTgzLTE4OQogICAgLy8gaXR4bgogICAgLy8gICAuYXNzZXRGcmVlemUoewogICAgLy8gICAgIGZyZWV6ZUFzc2V0OiB0aGlzLmdvbGRBc3NldElkLnZhbHVlLAogICAgLy8gICAgIGZyZWV6ZUFjY291bnQ6IGF4ZmVyLnNlbmRlciwKICAgIC8vICAgICBmcm96ZW46IHRydWUsCiAgICAvLyAgIH0pCiAgICAvLyAgIC5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIHByb2plY3RzL2dvbGQtZHVjaWVsbG8tZ3JvdXAvc21hcnRfY29udHJhY3RzL2R1Y2llbGxvX2dyb3VwX2dvbGRfYXNhL2NvbnRyYWN0LmFsZ28udHM6MTYxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEgLy8gMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAAEFCCYDC2dvbGRBc3NldElkDXRvdGFsUmVzZXJ2ZXMMbWludGVkQW1vdW50MRhAAAkoImcpImcqImcxG0EAMjEZFEQxGESCBQQK5NshBGx/k90EuPOxTQQEuh/tBFjUAHw2GgCOBQALAUsBdgHwAo4AMRkUMRgUEEQjQzEAMgkSRCIoZUQURLEyCkcDsiyyK7IqsimAgAFodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZGF2aWRib25maW0vQ0RUQlJML21haW4vcHJvamVjdHMvZ29sZC1kdWNpZWxsby1ncm91cC9hc3NldHMvYXJjMy9kdWNpZWxsby1ncm91cC1nb2xkLmpzb24jYXJjM7IFgCCIeyeT4ZP3bevML4wwMKHnBls+eSna5F2JQVm0fXu64LIogBxodHRwczovL3d3dy5kdWNpZWxsby5jb20uYnIvsicjsiQisiOBgLSJE7IigARHT0xEsiWAE0R1Y2llbGxvIEdyb3VwIEdvbGSyJoEDshAisgGztDwoSwFnFoASZ29sZF9hc3NldF9jcmVhdGVkSwFQsIAEFR98dUxQsCNDNhoBSRUlEkQXMQAyCRJEKUsBZxaAEHJlc2VydmVzX3VwZGF0ZWRMULAjQzYaAUkVgSASRDYaAkkVJRJEFyIoZURJRCIqZURLAggiKWVESwEPRLEisi9LA7IuSwGyLSSyECKyAbOxSwOyFEsCshJLAbIRgQSyECKyAbOxI7IvSwOyLkyyLSSyECKyAbMqTGeAC2dvbGRfbWludGVkTwJQTBZQsCNDNhoBSRWBIBJENhoCSRWBIBJENhoDSRUlEkQXIihlRElEsSKyL0sDsi5Jsi0kshAisgGzsSKyL0sCsi5Jsi0kshAisgGzsUsCshRLA7ITSwGyEkmyEYEEshAisgGzsSOyL0sDsi5Jsi0kshAisgGzsSOyL0sCsi6yLSSyECKyAbOAEGdvbGRfdHJhbnNmZXJyZWRPA1BPAlBMFlCwI0MxFiMJSTgQgQQSRCIoZURJREsBOBFLARJESwE4FDIKEkRLATgASTEAEkSxIrIvSbIuSwGyLSSyECKyAbOAE2dvbGRfcmVkZWVtX3JlcXVlc3QxAFBLAzgSFlBPAzgXULCxI7Ivsi6yLSSyECKyAbMjQw==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 3, "patch": 2 } }, "events": [], "templateVariables": {} }