tx · 4zeGD5Zu6Vk1qtJqc6cSUG3hQsgkagANzsLv3DFhWN8s

3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai:  -0.01400000 Waves

2022.04.13 14:34 [2006744] smart account 3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai > SELF 0.00000000 Waves

{ "type": 13, "id": "4zeGD5Zu6Vk1qtJqc6cSUG3hQsgkagANzsLv3DFhWN8s", "fee": 1400000, "feeAssetId": null, "timestamp": 1649849655574, "version": 1, "sender": "3MsMP2pb2p8MDd6Rxb7XEXqqwEhE8ATfyai", "senderPublicKey": "2JEaBjtjvMoNGKZmL9QxYefa1VkMJM3vMW8rNvTs9R2H", "proofs": [ "4FffiG1DNBChNuRLP2gij5bRT8Snk3w4bUvUBJTSJfpDkQ5k3GmHJsKtD1y6LwXPDksJCGt6vn3pfUUScRDfg467" ], "script": "base64:AAIFAAAAAAAAAFEIAhIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSBAoCCAgSAwoBCBIAEgkKBwgICAgIAQgSBAoCCAESAwoBARIDCgEBEgYKBAgICAgAAABPAAAAAAZTQ0FMRTgAAAAAAAAAAAgAAAAABU1VTFQ4AAAAAAAF9eEAAAAAAAdTQ0FMRTE4AAAAAAAAAAASAAAAAAZNVUxUMTgJAAE2AAAAAQAN4Lazp2QAAAAAAAAOUE9PTFdFSUdIVE1VTFQFAAAABU1VTFQ4AAAAAA5HV1h2aXJ0dWFsUE9PTAIAAAAOR1dYdmlydHVhbFBPT0wAAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAAAAAD6AAAAAAAAAAD6AAAAAADU0VQAgAAAAJfXwAAAAAFRU1QVFkCAAAAAAAAAAAKUG9vbEFjdGl2ZQAAAAAAAAAAAQAAAAAPUG9vbFB1dERpc2FibGVkAAAAAAAAAAACAAAAABNQb29sTWF0Y2hlckRpc2FibGVkAAAAAAAAAAADAAAAAAxQb29sU2h1dGRvd24AAAAAAAAAAAQAAAAAEmlkeEludGVybmFsQXNzZXRJZAAAAAAAAAAAAQAAAAAPaWR4UmVzdXRBY3Rpb25zAAAAAAAAAAACAAAAACBpZHhJZkFzc2V0SWRDYWxjdWxhdGlvblBlcmZvcm1lZAAAAAAAAAAAAwAAAAAOaWR4UG9vbEFkZHJlc3MAAAAAAAAAAAEAAAAADWlkeFBvb2xTdGF0dXMAAAAAAAAAAAIAAAAAEGlkeFBvb2xMUEFzc2V0SWQAAAAAAAAAAAMAAAAADWlkeEFtdEFzc2V0SWQAAAAAAAAAAAQAAAAAD2lkeFByaWNlQXNzZXRJZAAAAAAAAAAABQAAAAAOaWR4QW10QXNzZXREY20AAAAAAAAAAAYAAAAAEGlkeFByaWNlQXNzZXREY20AAAAAAAAAAAcAAAAADmlkeElBbXRBc3NldElkAAAAAAAAAAAIAAAAABBpZHhJUHJpY2VBc3NldElkAAAAAAAAAAAJAAAAAA1pZHhMUEFzc2V0RGNtAAAAAAAAAAAKAAAAAAtpZHhQb29sVHlwZQAAAAAAAAAACwEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAACAAAAESVzX19mYWN0b3J5Q29uZmlnAQAAAA9rZXlMcFRva2Vuc0xpc3QAAAAAAgAAABAlc19fbHBUb2tlbnNMaXN0AQAAABFrZXlQb29sU2NyaXB0SGFzaAAAAAACAAAAFiVzJXNfX3Bvb2xfX3NjcmlwdEhhc2gBAAAADWtleU1hdGNoZXJQdWIAAAAAAgAAABglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAAAAGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAAAAAACAAAAGSVzX19sZWdhY3lGYWN0b3J5Q29udHJhY3QBAAAADmtleUxlZ2FjeVBvb2xzAAAAAAIAAAAPJXNfX2xlZ2FjeVBvb2xzAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAABZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAAAAAIAAAAXJXNfX2Fzc2V0c1N0b3JlQ29udHJhY3QBAAAAFGtleVVzZXJQb29sc0NvbnRyYWN0AAAAAAIAAAAVJXNfX3VzZXJQb29sc0NvbnRyYWN0AQAAABBrZXlQcmljZURlY2ltYWxzAAAAAAIAAAARJXNfX3ByaWNlRGVjaW1hbHMBAAAAE2tleUFsbFBvb2xzU2h1dGRvd24AAAAAAgAAAAwlc19fc2h1dGRvd24BAAAAFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAAAgAAABclc19fbmV4dEludGVybmFsQXNzZXRJZAEAAAAPa2V5UG9vbFRvV2VpZ2h0AAAAAQAAAAtwb29sQWRkcmVzcwkAASwAAAACAgAAABIlcyVzX19wb29sV2VpZ2h0X18FAAAAC3Bvb2xBZGRyZXNzAQAAABZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AAAAAgAAAAtwb29sQWRkcmVzcwAAAANudW0JAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEiVzJXNfX3Bvb2xXZWlnaHRfXwUAAAALcG9vbEFkZHJlc3MCAAAAAl9fCQABpAAAAAEFAAAAA251bQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEAAAARaW50ZXJuYWxCYXNlQXNzZXQJAAEsAAAAAgIAAAAoJXMlcyVkX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwkAAaQAAAABBQAAABFpbnRlcm5hbEJhc2VBc3NldAEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEAAAAMYmFzZUFzc2V0U3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAADGJhc2VBc3NldFN0cgEAAAANa2V5UG9vbENvbmZpZwAAAAIAAAATYW1vdW50QXNzZXRJbnRlcm5hbAAAABJwcmljZUFzc2V0SW50ZXJuYWwJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwCAAAAAl9fBQAAABJwcmljZUFzc2V0SW50ZXJuYWwCAAAACF9fY29uZmlnAQAAAB1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwAAAAEAAAAKbHBBc3NldFN0cgkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAAApscEFzc2V0U3RyAgAAABhfX21hcHBpbmdzX19scEFzc2V0MlBvb2wBAAAAHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AAAAAgAAABhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIAAAAXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAKJWQlZCVzJXNfXwUAAAAYaW50ZXJuYWxBbW91bnRBc3NldElkU3RyAgAAAAJfXwUAAAAXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICAAAAHl9fbWFwcGluZ3NfX1Bvb2xBc3NldHMyTHBBc3NldAEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAATcG9vbENvbnRyYWN0QWRkcmVzcwIAAAAjX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MlBvb2xBc3NldHMBAAAAKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAgAAABhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHIAAAAXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAKJWQlZCVzJXNfXwkAAaQAAAABBQAAABhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHICAAAAAl9fCQABpAAAAAEFAAAAF2ludGVybmFsUHJpY2VBc3NldElkU3RyAgAAACNfX21hcHBpbmdzX19wb29sQXNzZXRzMlBvb2xDb250cmFjdAEAAAAea2V5TWFwcGluZ1Bvb2xDb250cmFjVG9MUEFzc2V0AAAAAQAAABNwb29sQ29udHJhY3RBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MCAAAAIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQAAACprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAABAAAACmxwQXNzZXRTdHIJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAAKbHBBc3NldFN0cgIAAAAgX19tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AQAAABBnZXRCb29sZWFuT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAADGdldEludE9yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AAAAABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAAAAAAAAAAEAAAAAGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAAAAAAAAAAAAIAAAAAFElkeEZhY3RvcnlDZmdJZG9EYXBwAAAAAAAAAAADAAAAABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAAAAAAAAAAAAQAAAAAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAAAAAAAAAAAAUAAAAAFUlkeEZhY3RvcnlDZmdSZXN0RGFwcAAAAAAAAAAABgAAAAAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAAAAAAAAAABwAAAAAUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAAAAAAAAAAAAgAAAAAGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwAAAAAAAAAAAJAAAAABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAAAAAAAAAACgAAAAAWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcAAAAAAAAAAACwEAAAAYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABAAAAGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAAAAAEAAAAKZmFjdG9yeUNmZwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwAQAAABdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAAAAAEAAAAKZmFjdG9yeUNmZwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABAAAAGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAUAAAAEdW5pdAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAALbXVzdE1hbmFnZXIAAAABAAAAAWkEAAAAAnBkCQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkBAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkFAAAAAnBrBgUAAAACcGQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQDCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwYFAAAAAnBkCQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAABBkYXRhRmFjdG9yeUNmZ1YzAAAACwAAAA5zdGFraW5nQWRkcmVzcwAAAA9ib29zdGluZ0FkZHJlc3MAAAALaWRvQ29udHJhY3QAAAAMdGVhbUNvbnRyYWN0AAAAEGVtaXNzaW9uQ29udHJhY3QAAAAMcmVzdENvbnRyYWN0AAAAEHNsaXBwYWdlQ29udHJhY3QAAAALZGFvQ29udHJhY3QAAAARbWFya2V0aW5nQ29udHJhY3QAAAASZ3d4UmV3YXJkc0NvbnRyYWN0AAAADWJpcmRzQ29udHJhY3QJAAS5AAAAAgkABEwAAAACAgAAABYlcyVzJXMlcyVzJXMlcyVzJXMlcyVzCQAETAAAAAIFAAAADnN0YWtpbmdBZGRyZXNzCQAETAAAAAIFAAAAD2Jvb3N0aW5nQWRkcmVzcwkABEwAAAACBQAAAAtpZG9Db250cmFjdAkABEwAAAACBQAAAAx0ZWFtQ29udHJhY3QJAARMAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkABEwAAAACBQAAAAxyZXN0Q29udHJhY3QJAARMAAAAAgUAAAAQc2xpcHBhZ2VDb250cmFjdAkABEwAAAACBQAAAAtkYW9Db250cmFjdAkABEwAAAACBQAAABFtYXJrZXRpbmdDb250cmFjdAkABEwAAAACBQAAABJnd3hSZXdhcmRzQ29udHJhY3QJAARMAAAAAgUAAAANYmlyZHNDb250cmFjdAUAAAADbmlsBQAAAANTRVABAAAADmRhdGFGYWN0b3J5Q2ZnAAAABwAAAA5zdGFraW5nQWRkcmVzcwAAAA9ib29zdGluZ0FkZHJlc3MAAAALaWRvQ29udHJhY3QAAAAMdGVhbUNvbnRyYWN0AAAAEGVtaXNzaW9uQ29udHJhY3QAAAAMcmVzdENvbnRyYWN0AAAAEHNsaXBwYWdlQ29udHJhY3QJAAS5AAAAAgkABEwAAAACAgAAAAwlcyVzJXMlcyVzJXMJAARMAAAAAgUAAAAOc3Rha2luZ0FkZHJlc3MJAARMAAAAAgUAAAAPYm9vc3RpbmdBZGRyZXNzCQAETAAAAAIFAAAAC2lkb0NvbnRyYWN0CQAETAAAAAIFAAAADHRlYW1Db250cmFjdAkABEwAAAACBQAAABBlbWlzc2lvbkNvbnRyYWN0CQAETAAAAAIFAAAADHJlc3RDb250cmFjdAkABEwAAAACBQAAABBzbGlwcGFnZUNvbnRyYWN0BQAAAANuaWwFAAAAA1NFUAEAAAALZGF0YVBvb2xDZmcAAAALAAAAC3Bvb2xBZGRyZXNzAAAACnBvb2xTdGF0dXMAAAAJbHBBc3NldElkAAAADmFtb3VudEFzc2V0U3RyAAAADXByaWNlQXNzZXRTdHIAAAATYW1vdW50QXNzZXREZWNpbWFscwAAABJwcmljZUFzc2V0RGVjaW1hbHMAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkAAAAFHByaWNlQXNzZXRJbnRlcm5hbElkAAAAD2xwQXNzZXREZWNpbWFscwAAAAhwb29sVHlwZQkABLkAAAACCQAETAAAAAICAAAAFiVzJWQlcyVzJXMlZCVkJWQlZCVkJXMJAARMAAAAAgUAAAALcG9vbEFkZHJlc3MJAARMAAAAAgUAAAAKcG9vbFN0YXR1cwkABEwAAAACBQAAAAlscEFzc2V0SWQJAARMAAAAAgUAAAAOYW1vdW50QXNzZXRTdHIJAARMAAAAAgUAAAANcHJpY2VBc3NldFN0cgkABEwAAAACCQABpAAAAAEFAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMJAARMAAAAAgkAAaQAAAABBQAAABJwcmljZUFzc2V0RGVjaW1hbHMJAARMAAAAAgkAAaQAAAABBQAAABVhbW91bnRBc3NldEludGVybmFsSWQJAARMAAAAAgkAAaQAAAABBQAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAkABEwAAAACCQABpAAAAAEFAAAAD2xwQXNzZXREZWNpbWFscwkABEwAAAACBQAAAAhwb29sVHlwZQUAAAADbmlsBQAAAANTRVABAAAAFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwAAAAIAAAAWaW50ZXJuYWxBbW91bnRBc3NldFN0cgAAABVpbnRlcm5hbFByaWNlQXNzZXRTdHIJAAS5AAAAAgkABEwAAAACAgAAAAQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAWaW50ZXJuYWxBbW91bnRBc3NldFN0cgkABEwAAAACCQABpAAAAAEFAAAAFWludGVybmFsUHJpY2VBc3NldFN0cgUAAAADbmlsBQAAAANTRVABAAAADWdldFBvb2xDb25maWcAAAABAAAAC3Bvb2xBZGRyZXNzBAAAAApwb29sQXNzZXRzCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABBQAAAAtwb29sQWRkcmVzcwUAAAADU0VQBAAAABNhbW91bnRBc3NldEludGVybmFsCQABkQAAAAIFAAAACnBvb2xBc3NldHMAAAAAAAAAAAEEAAAAEnByaWNlQXNzZXRJbnRlcm5hbAkAAZEAAAACBQAAAApwb29sQXNzZXRzAAAAAAAAAAACCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAANa2V5UG9vbENvbmZpZwAAAAIFAAAAE2Ftb3VudEFzc2V0SW50ZXJuYWwFAAAAEnByaWNlQXNzZXRJbnRlcm5hbAUAAAADU0VQAQAAABpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQAAAAIAAAAKYXNzZXRJZFN0cgAAAAtpbmNyZW1lbnRvcgQAAAAPaW50ZXJuYWxBc3NldElkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAKYXNzZXRJZFN0cgAAAAAAAAAAAAQAAAAYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAABZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAAAAAAAAAAAAAAAAQAAAAGcmVzdWx0AwkAAAAAAAACBQAAAA9pbnRlcm5hbEFzc2V0SWQAAAAAAAAAAAAEAAAAEm5ld0ludGVybmFsQXNzZXRJZAkAAGQAAAACBQAAABhjdXJyZW50SW5kZXhPZkludGVybmFsSWQFAAAAC2luY3JlbWVudG9yCQAFFQAAAAMFAAAAEm5ld0ludGVybmFsQXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAABQAAABJuZXdJbnRlcm5hbEFzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAKYXNzZXRJZFN0cgUAAAASbmV3SW50ZXJuYWxBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAASbmV3SW50ZXJuYWxBc3NldElkBQAAAAphc3NldElkU3RyBQAAAANuaWwGCQAFFQAAAAMFAAAAD2ludGVybmFsQXNzZXRJZAUAAAADbmlsBwUAAAAGcmVzdWx0AQAAABdjcmVhdGVMcFRva2Vuc0xpc3RFbnRyeQAAAAEAAAAKbmV3THBUb2tlbgQAAAAIbHBUb2tlbnMJAAQdAAAAAgUAAAAEdGhpcwkBAAAAD2tleUxwVG9rZW5zTGlzdAAAAAADCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAIbHBUb2tlbnMJAAEsAAAAAgkAASwAAAACCQEAAAAFdmFsdWUAAAABBQAAAAhscFRva2VucwUAAAADU0VQBQAAAApuZXdMcFRva2VuBQAAAApuZXdMcFRva2VuAAAADAAAAAFpAQAAAAtjb25zdHJ1Y3RvcgAAAAgAAAAPc3Rha2luZ0NvbnRyYWN0AAAAEGJvb3N0aW5nQ29udHJhY3QAAAALaWRvQ29udHJhY3QAAAAMdGVhbUNvbnRyYWN0AAAAEGVtaXNzaW9uQ29udHJhY3QAAAAMcmVzdENvbnRyYWN0AAAAEHNscGlwYWdlQ29udHJhY3QAAAANcHJpY2VEZWNpbWFscwQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAAJAQAAAA5kYXRhRmFjdG9yeUNmZwAAAAcFAAAAD3N0YWtpbmdDb250cmFjdAUAAAAQYm9vc3RpbmdDb250cmFjdAUAAAALaWRvQ29udHJhY3QFAAAADHRlYW1Db250cmFjdAUAAAAQZW1pc3Npb25Db250cmFjdAUAAAAMcmVzdENvbnRyYWN0BQAAABBzbHBpcGFnZUNvbnRyYWN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQa2V5UHJpY2VEZWNpbWFscwAAAAAFAAAADXByaWNlRGVjaW1hbHMFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANY29uc3RydWN0b3JWMgAAAAEAAAAQbWF0aGNoZXJQdWI1OFN0cgQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAKbWF0aGNlclB1YgkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAlkAAAABBQAAABBtYXRoY2hlclB1YjU4U3RyAwkAAAAAAAACBQAAAAptYXRoY2VyUHViBQAAAAptYXRoY2VyUHViCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlNYXRjaGVyUHViAAAAAAUAAAAQbWF0aGNoZXJQdWI1OFN0cgUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANY29uc3RydWN0b3JWMwAAAAQAAAALZGFvQ29udHJhY3QAAAARbWFya2V0aW5nQ29udHJhY3QAAAASZ3d4UmV3YXJkc0NvbnRyYWN0AAAADWJpcmRzQ29udHJhY3QEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAACmZhY3RvcnlDZmcJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAUAAAADU0VQCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAkBAAAAEGRhdGFGYWN0b3J5Q2ZnVjMAAAALCQABkQAAAAIFAAAACmZhY3RvcnlDZmcAAAAAAAAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwAAAAAAAAAAAgkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnAAAAAAAAAAADCQABkQAAAAIFAAAACmZhY3RvcnlDZmcAAAAAAAAAAAQJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwAAAAAAAAAABQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnAAAAAAAAAAAGCQABkQAAAAIFAAAACmZhY3RvcnlDZmcAAAAAAAAAAAcFAAAAC2Rhb0NvbnRyYWN0BQAAABFtYXJrZXRpbmdDb250cmFjdAUAAAASZ3d4UmV3YXJkc0NvbnRyYWN0BQAAAA1iaXJkc0NvbnRyYWN0BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADWNvbnN0cnVjdG9yVjQAAAACAAAAFWxlZ2FjeUZhY3RvcnlDb250cmFjdAAAAAtsZWdhY3lQb29scwQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAAAAAUAAAAVbGVnYWN5RmFjdG9yeUNvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlMZWdhY3lQb29scwAAAAAJAAS5AAAAAgUAAAALbGVnYWN5UG9vbHMFAAAAA1NFUAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA1jb25zdHJ1Y3RvclY1AAAAAgAAABNhc3NldHNTdG9yZUNvbnRyYWN0AAAAEXVzZXJQb29sc0NvbnRyYWN0BAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABZrZXlBc3NldHNTdG9yZUNvbnRyYWN0AAAAAAUAAAATYXNzZXRzU3RvcmVDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUa2V5VXNlclBvb2xzQ29udHJhY3QAAAAABQAAABF1c2VyUG9vbHNDb250cmFjdAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAD2FjdGl2YXRlTmV3UG9vbAAAAAcAAAALcG9vbEFkZHJlc3MAAAAOYW1vdW50QXNzZXRTdHIAAAANcHJpY2VBc3NldFN0cgAAAAtscEFzc2V0TmFtZQAAAAxscEFzc2V0RGVzY3IAAAAKcG9vbFdlaWdodAAAAAhwb29sVHlwZQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgMJAQAAAAlpc0RlZmluZWQAAAABCQAEIgAAAAEJAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEFAAAAC3Bvb2xBZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAA1Qb29sIGFkZHJlc3MgBQAAAAtwb29sQWRkcmVzcwIAAAAUIGFscmVhZHkgcmVnaXN0ZXJlZC4EAAAAF2ludGVybmFsQW1vdW50QXNzZXREYXRhCQEAAAAaZ2V0SW50ZXJuYWxBc3NldElkT3JDcmVhdGUAAAACBQAAAA5hbW91bnRBc3NldFN0cgAAAAAAAAAAAQQAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCAUAAAAXaW50ZXJuYWxBbW91bnRBc3NldERhdGEAAAACXzEEAAAAFmludGVybmFsUHJpY2VBc3NldERhdGEJAQAAABpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQAAAAIFAAAADXByaWNlQXNzZXRTdHIDCAUAAAAXaW50ZXJuYWxBbW91bnRBc3NldERhdGEAAAACXzMAAAAAAAAAAAIAAAAAAAAAAAEEAAAAFGludGVybmFsUHJpY2VBc3NldElkCAUAAAAWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQAAAAJfMQQAAAAVcG9vbEFjY291bnRTY3JpcHRIYXNoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPxAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAALcG9vbEFkZHJlc3MJAAEsAAAAAgIAAAApTm8gc2NyaXB0IGhhcyBiZWVuIGZvdW5kIG9uIHBvb2wgYWNjb3VudCAFAAAAC3Bvb2xBZGRyZXNzBAAAABxldGhhbG9uUG9vbEFjY291bnRTY3JpcHRIYXNoCQEAAAARQGV4dHJOYXRpdmUoMTA1NykAAAABCQEAAAARa2V5UG9vbFNjcmlwdEhhc2gAAAAABAAAAApwb29sQ29uZmlnCQAEHQAAAAIFAAAABHRoaXMJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAAGkAAAAAQUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAKcG9vbENvbmZpZwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABVBvb2wgBQAAAA5hbW91bnRBc3NldFN0cgIAAAABLwUAAAANcHJpY2VBc3NldFN0cgIAAAAcIGhhcyBhbHJlYWR5IGJlZW4gYWN0aXZhdGVkLgQAAAAPcG9vbENvbmZpZ1ZhbHVlCQEAAAAFdmFsdWUAAAABCQAEHQAAAAIFAAAABHRoaXMJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAAGkAAAAAQUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQEAAAAFGFtb3VudEFzc2V0c0RlY2ltYWxzAwkAAAAAAAACBQAAAA5hbW91bnRBc3NldFN0cgIAAAAFV0FWRVMFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAAJZAAAAAQUAAAAOYW1vdW50QXNzZXRTdHIAAAAIZGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAE3ByaWNlQXNzZXRzRGVjaW1hbHMDCQAAAAAAAAIFAAAADXByaWNlQXNzZXRTdHICAAAABVdBVkVTBQAAABFkZWNpbWFsc011bHRQcmljZQkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAACAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAADXByaWNlQXNzZXRTdHIAAAAIZGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAEmxwQXNzZXRJc3N1ZUFjdGlvbgkABEIAAAAFBQAAAAtscEFzc2V0TmFtZQUAAAAMbHBBc3NldERlc2NyAAAAAAAAAAABAAAAAAAAAAAIBgQAAAAJbHBBc3NldElkCQAEOAAAAAEFAAAAEmxwQXNzZXRJc3N1ZUFjdGlvbgQAAAAMbHBBc3NldElkU3RyCQACWAAAAAEFAAAACWxwQXNzZXRJZAQAAAAYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0CQAD/AAAAAQJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAC3Bvb2xBZGRyZXNzAgAAAAhhY3RpdmF0ZQkABEwAAAACBQAAAA5hbW91bnRBc3NldFN0cgkABEwAAAACBQAAAA1wcmljZUFzc2V0U3RyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0BQAAABhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQDCQEAAAACIT0AAAACBQAAABhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQCAAAAB3N1Y2Nlc3MJAAACAAAAAQIAAAAjUG9vbCBpbml0aWFsaXNhdGlvbiBlcnJvciBoYXBwZW5lZC4EAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAAAAEAAAAEGFkZEFzc2V0c0xpbmtJbnYJAAP8AAAABAUAAAATYXNzZXRzU3RvcmVDb250cmFjdAIAAAANYWRkQXNzZXRzTGluawkABEwAAAACBQAAAA5hbW91bnRBc3NldFN0cgkABEwAAAACBQAAAA1wcmljZUFzc2V0U3RyCQAETAAAAAIFAAAADGxwQXNzZXRJZFN0cgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAEGFkZEFzc2V0c0xpbmtJbnYFAAAAEGFkZEFzc2V0c0xpbmtJbnYEAAAAG2luY3JlYXNlQXNzZXRQb29sc051bWJlckludgkAA/wAAAAEBQAAABNhc3NldHNTdG9yZUNvbnRyYWN0AgAAABhpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXIJAARMAAAAAgUAAAAOYW1vdW50QXNzZXRTdHIFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABtpbmNyZWFzZUFzc2V0UG9vbHNOdW1iZXJJbnYFAAAAG2luY3JlYXNlQXNzZXRQb29sc051bWJlckludgkABRQAAAACCQAETgAAAAIJAAROAAAAAggFAAAAF2ludGVybmFsQW1vdW50QXNzZXREYXRhAAAAAl8yCAUAAAAWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQAAAAJfMgkABEwAAAACBQAAABJscEFzc2V0SXNzdWVBY3Rpb24JAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAlscEFzc2V0SWQAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVBvb2xDb25maWcAAAACCQABpAAAAAEFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAkAAaQAAAABBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAkBAAAAC2RhdGFQb29sQ2ZnAAAACwUAAAALcG9vbEFkZHJlc3MJAAGkAAAAAQUAAAAKUG9vbEFjdGl2ZQUAAAAMbHBBc3NldElkU3RyBQAAAA5hbW91bnRBc3NldFN0cgUAAAANcHJpY2VBc3NldFN0cgUAAAAUYW1vdW50QXNzZXRzRGVjaW1hbHMFAAAAE3ByaWNlQXNzZXRzRGVjaW1hbHMFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAAAhwb29sVHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAda2V5TWFwcGluZ0xwQXNzZXRUb1Bvb2xBc3NldHMAAAABBQAAAAxscEFzc2V0SWRTdHIJAQAAABVkYXRhTWFwcGluZ1Bvb2xBc3NldHMAAAACBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQFAAAAFGludGVybmFsUHJpY2VBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB1rZXlNYXBwaW5nUG9vbEFzc2V0c1RvTHBhc3NldAAAAAIJAAGkAAAAAQUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCQABpAAAAAEFAAAAFGludGVybmFsUHJpY2VBc3NldElkCQABLAAAAAICAAAABCVzX18FAAAADGxwQXNzZXRJZFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABBQAAAAtwb29sQWRkcmVzcwkBAAAAFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwAAAAIFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAKWtleU1hcHBpbmdQb29sQXNzZXRzVG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAgUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAUAAAALcG9vbEFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAKmtleU1hcHBpbmdQb29sTFBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwAAAAEFAAAADGxwQXNzZXRJZFN0cgUAAAALcG9vbEFkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAHmtleU1hcHBpbmdQb29sQ29udHJhY1RvTFBBc3NldAAAAAEFAAAAC3Bvb2xBZGRyZXNzBQAAAAxscEFzc2V0SWRTdHIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABBQAAAAtwb29sQWRkcmVzcwUAAAAKcG9vbFdlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5THBUb2tlbnNMaXN0AAAAAAkBAAAAF2NyZWF0ZUxwVG9rZW5zTGlzdEVudHJ5AAAAAQUAAAAMbHBBc3NldElkU3RyBQAAAANuaWwFAAAADGxwQXNzZXRJZFN0cgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKbWFuYWdlUG9vbAAAAAIAAAALcG9vbEFkZHJlc3MAAAAJbmV3U3RhdHVzBAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAApwb29sQ29uZmlnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAEFAAAAC3Bvb2xBZGRyZXNzBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAADWlkeFBvb2xTdGF0dXMEAAAADGxwQXNzZXRJZFN0cgkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAABBpZHhQb29sTFBBc3NldElkBAAAAA5hbW91bnRBc3NldFN0cgkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAA1pZHhBbXRBc3NldElkBAAAAA1wcmljZUFzc2V0U3RyCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAUYW1vdW50QXNzZXRzRGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAA5pZHhBbXRBc3NldERjbQQAAAATcHJpY2VBc3NldHNEZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAADmlkeElBbXRBc3NldElkBAAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAEGlkeElQcmljZUFzc2V0SWQEAAAACmxwQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAA1pZHhMUEFzc2V0RGNtBAAAAAhwb29sVHlwZQkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAAtpZHhQb29sVHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5UG9vbENvbmZpZwAAAAIJAAGkAAAAAQUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCQABpAAAAAEFAAAAFGludGVybmFsUHJpY2VBc3NldElkCQEAAAALZGF0YVBvb2xDZmcAAAALBQAAAAtwb29sQWRkcmVzcwkAAaQAAAABBQAAAAluZXdTdGF0dXMFAAAADGxwQXNzZXRJZFN0cgUAAAAOYW1vdW50QXNzZXRTdHIFAAAADXByaWNlQXNzZXRTdHIFAAAAFGFtb3VudEFzc2V0c0RlY2ltYWxzBQAAABNwcmljZUFzc2V0c0RlY2ltYWxzBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQFAAAAFGludGVybmFsUHJpY2VBc3NldElkBQAAAApscEFzc2V0RGNtBQAAAAhwb29sVHlwZQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAARlbWl0AAAAAQAAAAxhbW91bnRUb0VtaXQEAAAABmNhbGxlcggFAAAAAWkAAAAGY2FsbGVyBAAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAAQbHBBc3NldFJlcXVlc3RlZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAQAAAB5rZXlNYXBwaW5nUG9vbENvbnRyYWNUb0xQQXNzZXQAAAABCQAEJQAAAAEFAAAABmNhbGxlcgIAAAAdSW52YWxpZCBMUCBhZGRyZXNzIGNhbGxlZCBtZS4EAAAAB2xwQXNzZXQJAAJZAAAAAQUAAAAQbHBBc3NldFJlcXVlc3RlZAQAAAALbGVnYWN5UG9vbHMJAAS1AAAAAgkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABCIAAAABCQEAAAAOa2V5TGVnYWN5UG9vbHMAAAAABQAAAAVFTVBUWQUAAAADU0VQBAAAABVsZWdhY3lGYWN0b3J5Q29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCIAAAABCQEAAAAYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAAAAAIAAAAoTGVnYWN5IGZhY3RvcnkgY29udHJhY3QgZG9lcyBub3QgZXhpc3RzLgMJAABnAAAAAgAAAAAAAAAAAAUAAAAMYW1vdW50VG9FbWl0BQAAAANuaWwDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAALbGVnYWN5UG9vbHMJAAQlAAAAAQUAAAAGY2FsbGVyCQAFFAAAAAIFAAAAA25pbAUAAAAVbGVnYWN5RmFjdG9yeUNvbnRyYWN0CQAFFAAAAAIJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAdscEFzc2V0BQAAAAxhbW91bnRUb0VtaXQGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9FbWl0BQAAAAdscEFzc2V0BQAAAANuaWwCAAAAB3N1Y2Nlc3MAAAABaQEAAAAEYnVybgAAAAEAAAAMYW1vdW50VG9CdXJuBAAAAAZjYWxsZXIIBQAAAAFpAAAABmNhbGxlcgQAAAAMb3JpZ2luQ2FsbGVyCAUAAAABaQAAAAxvcmlnaW5DYWxsZXIEAAAAB3BheW1lbnQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAADXBheW1lbnRBbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAPaW5BbW91bnRBc3NldElkCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQEAAAAGmxwQXNzZXRSZXF1ZXN0ZWRGb3JCdXJuaW5nCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkBAAAAHmtleU1hcHBpbmdQb29sQ29udHJhY1RvTFBBc3NldAAAAAEJAAQlAAAAAQUAAAAGY2FsbGVyAgAAAB1JbnZhbGlkIExQIGFkZHJlc3MgY2FsbGVkIG1lLgMJAQAAAAIhPQAAAAIFAAAAD2luQW1vdW50QXNzZXRJZAUAAAAabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAAACAAAAAQIAAAAVSW52YWxpZCBhc3NldCBwYXNzZWQuAwkBAAAAAiE9AAAAAgUAAAAMYW1vdW50VG9CdXJuBQAAAA1wYXltZW50QW1vdW50CQAAAgAAAAECAAAAFkludmFsaWQgYW1vdW50IHBhc3NlZC4EAAAAB2xwQXNzZXQJAAJZAAAAAQUAAAAabHBBc3NldFJlcXVlc3RlZEZvckJ1cm5pbmcJAAUUAAAAAgkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAAB2xwQXNzZXQFAAAADGFtb3VudFRvQnVybgUAAAADbmlsAgAAAAdzdWNjZXNzAAAAAWkBAAAADW1vZGlmeVdlaWdodHMAAAAEAAAADmJ0Y1Bvb2xBZGRyZXNzAAAADmV0aFBvb2xBZGRyZXNzAAAAEWV0aEJ0Y1Bvb2xBZGRyZXNzAAAAE3VzZGNVc2R0UG9vbEFkZHJlc3MEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAD2V0aEJ0Y1dlaWdodE5ldwkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAUFAAAADlBPT0xXRUlHSFRNVUxUAAAAAAAAAABkBAAAABF1c2RjVXNkdFdlaWdodE5ldwkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAUFAAAADlBPT0xXRUlHSFRNVUxUAAAAAAAAAABkBAAAAA93ZWlnaHREZWNyZW1lbnQJAABpAAAAAgkAAGgAAAACAAAAAAAAAAAFBQAAAA5QT09MV0VJR0hUTVVMVAAAAAAAAAAAZAQAAAAKZmFjdG9yeUNmZwkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAABQAAAANTRVAEAAAAC3N0YWtpbmdEYXBwCQEAAAAXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwAAAABBQAAAApmYWN0b3J5Q2ZnBAAAAA1nd3hSZXdhcmREYXBwCQEAAAAZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcEAAAADGJ0Y1dlaWdodEtFWQkBAAAAD2tleVBvb2xUb1dlaWdodAAAAAEFAAAADmJ0Y1Bvb2xBZGRyZXNzBAAAAAxldGhXZWlnaHRLRVkJAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABBQAAAA5ldGhQb29sQWRkcmVzcwQAAAAPZXRoQnRjV2VpZ2h0S0VZCQEAAAAPa2V5UG9vbFRvV2VpZ2h0AAAAAQUAAAARZXRoQnRjUG9vbEFkZHJlc3MEAAAAEXVzZGNVc2R0V2VpZ2h0S0VZCQEAAAAPa2V5UG9vbFRvV2VpZ2h0AAAAAQUAAAATdXNkY1VzZHRQb29sQWRkcmVzcwQAAAAJYnRjV2VpZ2h0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAQUAAAAMYnRjV2VpZ2h0S0VZBAAAAAlldGhXZWlnaHQJAQAAAAxnZXRJbnRPckZhaWwAAAABBQAAAAxldGhXZWlnaHRLRVkEAAAADGJ0Y1dlaWdodE5ldwkAAGUAAAACBQAAAAlidGNXZWlnaHQFAAAAD3dlaWdodERlY3JlbWVudAQAAAAMZXRoV2VpZ2h0TmV3CQAAZQAAAAIFAAAACWV0aFdlaWdodAUAAAAPd2VpZ2h0RGVjcmVtZW50AwkAAGcAAAACAAAAAAAAAAAABQAAAAxidGNXZWlnaHROZXcJAAACAAAAAQkAASwAAAACAgAAABZpbnZhbGlkIGJ0Y1dlaWdodE5ldzogCQABpAAAAAEFAAAADGJ0Y1dlaWdodE5ldwMJAABnAAAAAgAAAAAAAAAAAAUAAAAMZXRoV2VpZ2h0TmV3CQAAAgAAAAEJAAEsAAAAAgIAAAAWaW52YWxpZCBldGhXZWlnaHROZXc6IAkAAaQAAAABBQAAAAxldGhXZWlnaHROZXcEAAAAD2J0Y0xwQXNzZXRJZFN0cgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAAB5rZXlNYXBwaW5nUG9vbENvbnRyYWNUb0xQQXNzZXQAAAABBQAAAA5idGNQb29sQWRkcmVzcwQAAAAPZXRoTHBBc3NldElkU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAHmtleU1hcHBpbmdQb29sQ29udHJhY1RvTFBBc3NldAAAAAEFAAAADmV0aFBvb2xBZGRyZXNzBAAAABJldGhCdGNMcEFzc2V0SWRTdHIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAea2V5TWFwcGluZ1Bvb2xDb250cmFjVG9MUEFzc2V0AAAAAQUAAAARZXRoQnRjUG9vbEFkZHJlc3MEAAAAFHVzZGNVc2R0THBBc3NldElkU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAHmtleU1hcHBpbmdQb29sQ29udHJhY1RvTFBBc3NldAAAAAEFAAAAE3VzZGNVc2R0UG9vbEFkZHJlc3MEAAAAEW9uTW9kaWZ5V2VpZ2h0QnRjCQAD/AAAAAQFAAAAC3N0YWtpbmdEYXBwAgAAAA5vbk1vZGlmeVdlaWdodAkABEwAAAACBQAAAA9idGNMcEFzc2V0SWRTdHIJAARMAAAAAgUAAAAOYnRjUG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABFvbk1vZGlmeVdlaWdodEJ0YwUAAAARb25Nb2RpZnlXZWlnaHRCdGMEAAAAEW9uTW9kaWZ5V2VpZ2h0RXRoCQAD/AAAAAQFAAAAC3N0YWtpbmdEYXBwAgAAAA5vbk1vZGlmeVdlaWdodAkABEwAAAACBQAAAA9ldGhMcEFzc2V0SWRTdHIJAARMAAAAAgUAAAAOZXRoUG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABFvbk1vZGlmeVdlaWdodEV0aAUAAAARb25Nb2RpZnlXZWlnaHRFdGgEAAAAFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjCQAD/AAAAAQFAAAAC3N0YWtpbmdEYXBwAgAAAA5vbk1vZGlmeVdlaWdodAkABEwAAAACBQAAABJldGhCdGNMcEFzc2V0SWRTdHIJAARMAAAAAgUAAAARZXRoQnRjUG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABRvbk1vZGlmeVdlaWdodEV0aEJ0YwUAAAAUb25Nb2RpZnlXZWlnaHRFdGhCdGMEAAAAFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQJAAP8AAAABAUAAAALc3Rha2luZ0RhcHACAAAADm9uTW9kaWZ5V2VpZ2h0CQAETAAAAAIFAAAAFHVzZGNVc2R0THBBc3NldElkU3RyCQAETAAAAAIFAAAAE3VzZGNVc2R0UG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABZvbk1vZGlmeVdlaWdodFVzZGNVc2R0BQAAABZvbk1vZGlmeVdlaWdodFVzZGNVc2R0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxidGNXZWlnaHRLRVkFAAAADGJ0Y1dlaWdodE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMZXRoV2VpZ2h0S0VZBQAAAAxldGhXZWlnaHROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2V0aEJ0Y1dlaWdodEtFWQUAAAAPZXRoQnRjV2VpZ2h0TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABF1c2RjVXNkdFdlaWdodEtFWQUAAAARdXNkY1VzZHRXZWlnaHROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AAAAAgUAAAAOYnRjUG9vbEFkZHJlc3MAAAAAAAAAAAAFAAAACWJ0Y1dlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVBvb2xUb1dlaWdodEhpc3RvcnkAAAACBQAAAA5ldGhQb29sQWRkcmVzcwAAAAAAAAAAAAUAAAAJZXRoV2VpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQAAAAIFAAAAEWV0aEJ0Y1Bvb2xBZGRyZXNzAAAAAAAAAAAABQAAAA9ldGhCdGNXZWlnaHROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AAAAAgUAAAATdXNkY1VzZHRQb29sQWRkcmVzcwAAAAAAAAAAAAUAAAARdXNkY1VzZHRXZWlnaHROZXcFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAPdGFyZ2V0UHVibGljS2V5BAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwBQAAAAJwawMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAD3RhcmdldFB1YmxpY0tlecOeYis=", "chainId": 84, "height": 2006744, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: E9UUWkqGDeVy82pbWKcdHF4rn3yhUvNWSz1Z4RHeHen6 Next: BsnEuXkxQoZRRmJ1akxP5c3M81rPatzbB78FzzvKBqqJ Diff:
OldNewDifferences
8080
8181
8282 func keyAssetsStoreContract () = "%s__assetsStoreContract"
83+
84+
85+func keyUserPoolsContract () = "%s__userPoolsContract"
8386
8487
8588 func keyPriceDecimals () = "%s__priceDecimals"
294297
295298
296299 @Callable(i)
297-func constructorV5 (assetsStoreContract) = {
300+func constructorV5 (assetsStoreContract,userPoolsContract) = {
298301 let checkCaller = mustManager(i)
299302 if ((checkCaller == checkCaller))
300- then [StringEntry(keyAssetsStoreContract(), assetsStoreContract)]
303+ then [StringEntry(keyAssetsStoreContract(), assetsStoreContract), StringEntry(keyUserPoolsContract(), userPoolsContract)]
301304 else throw("Strict value is not equal to itself.")
302305 }
303306
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SCALE8 = 8
55
66 let MULT8 = 100000000
77
88 let SCALE18 = 18
99
1010 let MULT18 = toBigInt(1000000000000000000)
1111
1212 let POOLWEIGHTMULT = MULT8
1313
1414 let GWXvirtualPOOL = "GWXvirtualPOOL"
1515
1616 let decimalsMultPrice = ((100 * 1000) * 1000)
1717
1818 let SEP = "__"
1919
2020 let EMPTY = ""
2121
2222 let PoolActive = 1
2323
2424 let PoolPutDisabled = 2
2525
2626 let PoolMatcherDisabled = 3
2727
2828 let PoolShutdown = 4
2929
3030 let idxInternalAssetId = 1
3131
3232 let idxResutActions = 2
3333
3434 let idxIfAssetIdCalculationPerformed = 3
3535
3636 let idxPoolAddress = 1
3737
3838 let idxPoolStatus = 2
3939
4040 let idxPoolLPAssetId = 3
4141
4242 let idxAmtAssetId = 4
4343
4444 let idxPriceAssetId = 5
4545
4646 let idxAmtAssetDcm = 6
4747
4848 let idxPriceAssetDcm = 7
4949
5050 let idxIAmtAssetId = 8
5151
5252 let idxIPriceAssetId = 9
5353
5454 let idxLPAssetDcm = 10
5555
5656 let idxPoolType = 11
5757
5858 func keyFactoryConfig () = "%s__factoryConfig"
5959
6060
6161 func keyLpTokensList () = "%s__lpTokensList"
6262
6363
6464 func keyPoolScriptHash () = "%s%s__pool__scriptHash"
6565
6666
6767 func keyMatcherPub () = "%s%s__matcher__publicKey"
6868
6969
7070 func keyLegacyFactoryContract () = "%s__legacyFactoryContract"
7171
7272
7373 func keyLegacyPools () = "%s__legacyPools"
7474
7575
7676 func keyManagerPublicKey () = "%s__managerPublicKey"
7777
7878
7979 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
8080
8181
8282 func keyAssetsStoreContract () = "%s__assetsStoreContract"
83+
84+
85+func keyUserPoolsContract () = "%s__userPoolsContract"
8386
8487
8588 func keyPriceDecimals () = "%s__priceDecimals"
8689
8790
8891 func keyAllPoolsShutdown () = "%s__shutdown"
8992
9093
9194 func keyNextInternalAssetId () = "%s__nextInternalAssetId"
9295
9396
9497 func keyPoolToWeight (poolAddress) = ("%s%s__poolWeight__" + poolAddress)
9598
9699
97100 func keyPoolToWeightHistory (poolAddress,num) = ((("%s%s__poolWeight__" + poolAddress) + "__") + toString(num))
98101
99102
100103 func keyMappingsInternal2baseAssetId (internalBaseAsset) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(internalBaseAsset))
101104
102105
103106 func keyMappingsBaseAsset2internalId (baseAssetStr) = ("%s%s%s__mappings__baseAsset2internalId__" + baseAssetStr)
104107
105108
106109 func keyPoolConfig (amountAssetInternal,priceAssetInternal) = (((("%d%d%s__" + amountAssetInternal) + "__") + priceAssetInternal) + "__config")
107110
108111
109112 func keyMappingLpAssetToPoolAssets (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2Pool")
110113
111114
112115 func keyMappingPoolAssetsToLpasset (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + internalAmountAssetIdStr) + "__") + internalPriceAssetIdStr) + "__mappings__PoolAssets2LpAsset")
113116
114117
115118 func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets")
116119
117120
118121 func keyMappingPoolAssetsToPoolContractAddress (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + toString(internalAmountAssetIdStr)) + "__") + toString(internalPriceAssetIdStr)) + "__mappings__poolAssets2PoolContract")
119122
120123
121124 func keyMappingPoolContracToLPAsset (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2LpAsset")
122125
123126
124127 func keyMappingPoolLPAssetToPoolContractAddress (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2PoolContract")
125128
126129
127130 func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key))
128131
129132
130133 func getBooleanOrFail (key) = valueOrErrorMessage(getBoolean(this, key), ("No data for this.key=" + key))
131134
132135
133136 func getIntOrFail (key) = valueOrErrorMessage(getInteger(this, key), ("No data for this.key=" + key))
134137
135138
136139 let IdxFactoryCfgStakingDapp = 1
137140
138141 let IdxFactoryCfgBoostingDapp = 2
139142
140143 let IdxFactoryCfgIdoDapp = 3
141144
142145 let IdxFactoryCfgTeamDapp = 4
143146
144147 let IdxFactoryCfgEmissionDapp = 5
145148
146149 let IdxFactoryCfgRestDapp = 6
147150
148151 let IdxFactoryCfgSlippageDapp = 7
149152
150153 let IdxFactoryCfgDaoDapp = 8
151154
152155 let IdxFactoryCfgMarketingDapp = 9
153156
154157 let IdxFactoryCfgGwxRewardDapp = 10
155158
156159 let IdxFactoryCfgBirdsDapp = 11
157160
158161 func getBoostingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgBoostingDapp])
159162
160163
161164 func getEmissionAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgEmissionDapp])
162165
163166
164167 func getStakingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgStakingDapp])
165168
166169
167170 func getGwxRewardAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgGwxRewardDapp])
168171
169172
170173 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
171174 case s: String =>
172175 fromBase58String(s)
173176 case _: Unit =>
174177 unit
175178 case _ =>
176179 throw("Match error")
177180 }
178181
179182
180183 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
181184 case s: String =>
182185 fromBase58String(s)
183186 case _: Unit =>
184187 unit
185188 case _ =>
186189 throw("Match error")
187190 }
188191
189192
190193 func mustManager (i) = {
191194 let pd = throw("Permission denied")
192195 match managerPublicKeyOrUnit() {
193196 case pk: ByteVector =>
194197 if ((i.callerPublicKey == pk))
195198 then true
196199 else pd
197200 case _: Unit =>
198201 if ((i.caller == this))
199202 then true
200203 else pd
201204 case _ =>
202205 throw("Match error")
203206 }
204207 }
205208
206209
207210 func dataFactoryCfgV3 (stakingAddress,boostingAddress,idoContract,teamContract,emissionContract,restContract,slippageContract,daoContract,marketingContract,gwxRewardsContract,birdsContract) = makeString(["%s%s%s%s%s%s%s%s%s%s%s", stakingAddress, boostingAddress, idoContract, teamContract, emissionContract, restContract, slippageContract, daoContract, marketingContract, gwxRewardsContract, birdsContract], SEP)
208211
209212
210213 func dataFactoryCfg (stakingAddress,boostingAddress,idoContract,teamContract,emissionContract,restContract,slippageContract) = makeString(["%s%s%s%s%s%s", stakingAddress, boostingAddress, idoContract, teamContract, emissionContract, restContract, slippageContract], SEP)
211214
212215
213216 func dataPoolCfg (poolAddress,poolStatus,lpAssetId,amountAssetStr,priceAssetStr,amountAssetDecimals,priceAssetDecimals,amountAssetInternalId,priceAssetInternalId,lpAssetDecimals,poolType) = makeString(["%s%d%s%s%s%d%d%d%d%d%s", poolAddress, poolStatus, lpAssetId, amountAssetStr, priceAssetStr, toString(amountAssetDecimals), toString(priceAssetDecimals), toString(amountAssetInternalId), toString(priceAssetInternalId), toString(lpAssetDecimals), poolType], SEP)
214217
215218
216219 func dataMappingPoolAssets (internalAmountAssetStr,internalPriceAssetStr) = makeString(["%d%d", toString(internalAmountAssetStr), toString(internalPriceAssetStr)], SEP)
217220
218221
219222 func getPoolConfig (poolAddress) = {
220223 let poolAssets = split(getStringOrFail(keyMappingPoolContractAddressToPoolAssets(poolAddress)), SEP)
221224 let amountAssetInternal = poolAssets[1]
222225 let priceAssetInternal = poolAssets[2]
223226 split(getStringOrFail(keyPoolConfig(amountAssetInternal, priceAssetInternal)), SEP)
224227 }
225228
226229
227230 func getInternalAssetIdOrCreate (assetIdStr,incrementor) = {
228231 let internalAssetId = valueOrElse(getInteger(this, keyMappingsBaseAsset2internalId(assetIdStr)), 0)
229232 let currentIndexOfInternalId = valueOrElse(getInteger(this, keyNextInternalAssetId()), 0)
230233 let result = if ((internalAssetId == 0))
231234 then {
232235 let newInternalAssetId = (currentIndexOfInternalId + incrementor)
233236 $Tuple3(newInternalAssetId, [IntegerEntry(keyNextInternalAssetId(), newInternalAssetId), IntegerEntry(keyMappingsBaseAsset2internalId(assetIdStr), newInternalAssetId), StringEntry(keyMappingsInternal2baseAssetId(newInternalAssetId), assetIdStr)], true)
234237 }
235238 else $Tuple3(internalAssetId, nil, false)
236239 result
237240 }
238241
239242
240243 func createLpTokensListEntry (newLpToken) = {
241244 let lpTokens = getString(this, keyLpTokensList())
242245 if (isDefined(lpTokens))
243246 then ((value(lpTokens) + SEP) + newLpToken)
244247 else newLpToken
245248 }
246249
247250
248251 @Callable(i)
249252 func constructor (stakingContract,boostingContract,idoContract,teamContract,emissionContract,restContract,slpipageContract,priceDecimals) = {
250253 let checkCaller = mustManager(i)
251254 if ((checkCaller == checkCaller))
252255 then [StringEntry(keyFactoryConfig(), dataFactoryCfg(stakingContract, boostingContract, idoContract, teamContract, emissionContract, restContract, slpipageContract)), IntegerEntry(keyPriceDecimals(), priceDecimals)]
253256 else throw("Strict value is not equal to itself.")
254257 }
255258
256259
257260
258261 @Callable(i)
259262 func constructorV2 (mathcherPub58Str) = {
260263 let checkCaller = mustManager(i)
261264 if ((checkCaller == checkCaller))
262265 then {
263266 let mathcerPub = addressFromPublicKey(fromBase58String(mathcherPub58Str))
264267 if ((mathcerPub == mathcerPub))
265268 then [StringEntry(keyMatcherPub(), mathcherPub58Str)]
266269 else throw("Strict value is not equal to itself.")
267270 }
268271 else throw("Strict value is not equal to itself.")
269272 }
270273
271274
272275
273276 @Callable(i)
274277 func constructorV3 (daoContract,marketingContract,gwxRewardsContract,birdsContract) = {
275278 let checkCaller = mustManager(i)
276279 if ((checkCaller == checkCaller))
277280 then {
278281 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
279282 [StringEntry(keyFactoryConfig(), dataFactoryCfgV3(factoryCfg[1], factoryCfg[2], factoryCfg[3], factoryCfg[4], factoryCfg[5], factoryCfg[6], factoryCfg[7], daoContract, marketingContract, gwxRewardsContract, birdsContract))]
280283 }
281284 else throw("Strict value is not equal to itself.")
282285 }
283286
284287
285288
286289 @Callable(i)
287290 func constructorV4 (legacyFactoryContract,legacyPools) = {
288291 let checkCaller = mustManager(i)
289292 if ((checkCaller == checkCaller))
290293 then [StringEntry(keyLegacyFactoryContract(), legacyFactoryContract), StringEntry(keyLegacyPools(), makeString(legacyPools, SEP))]
291294 else throw("Strict value is not equal to itself.")
292295 }
293296
294297
295298
296299 @Callable(i)
297-func constructorV5 (assetsStoreContract) = {
300+func constructorV5 (assetsStoreContract,userPoolsContract) = {
298301 let checkCaller = mustManager(i)
299302 if ((checkCaller == checkCaller))
300- then [StringEntry(keyAssetsStoreContract(), assetsStoreContract)]
303+ then [StringEntry(keyAssetsStoreContract(), assetsStoreContract), StringEntry(keyUserPoolsContract(), userPoolsContract)]
301304 else throw("Strict value is not equal to itself.")
302305 }
303306
304307
305308
306309 @Callable(i)
307310 func setManager (pendingManagerPublicKey) = {
308311 let checkCaller = mustManager(i)
309312 if ((checkCaller == checkCaller))
310313 then {
311314 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
312315 if ((checkManagerPublicKey == checkManagerPublicKey))
313316 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
314317 else throw("Strict value is not equal to itself.")
315318 }
316319 else throw("Strict value is not equal to itself.")
317320 }
318321
319322
320323
321324 @Callable(i)
322325 func confirmManager () = {
323326 let pm = pendingManagerPublicKeyOrUnit()
324327 let hasPM = if (isDefined(pm))
325328 then true
326329 else throw("No pending manager")
327330 if ((hasPM == hasPM))
328331 then {
329332 let checkPM = if ((i.callerPublicKey == value(pm)))
330333 then true
331334 else throw("You are not pending manager")
332335 if ((checkPM == checkPM))
333336 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
334337 else throw("Strict value is not equal to itself.")
335338 }
336339 else throw("Strict value is not equal to itself.")
337340 }
338341
339342
340343
341344 @Callable(i)
342345 func activateNewPool (poolAddress,amountAssetStr,priceAssetStr,lpAssetName,lpAssetDescr,poolWeight,poolType) = {
343346 let checkCaller = mustManager(i)
344347 if ((checkCaller == checkCaller))
345348 then if (isDefined(getString(keyMappingPoolContractAddressToPoolAssets(poolAddress))))
346349 then throw((("Pool address " + poolAddress) + " already registered."))
347350 else {
348351 let internalAmountAssetData = getInternalAssetIdOrCreate(amountAssetStr, 1)
349352 let internalAmountAssetId = internalAmountAssetData._1
350353 let internalPriceAssetData = getInternalAssetIdOrCreate(priceAssetStr, if (internalAmountAssetData._3)
351354 then 2
352355 else 1)
353356 let internalPriceAssetId = internalPriceAssetData._1
354357 let poolAccountScriptHash = valueOrErrorMessage(scriptHash(addressFromStringValue(poolAddress)), ("No script has been found on pool account " + poolAddress))
355358 let ethalonPoolAccountScriptHash = getBinaryValue(keyPoolScriptHash())
356359 let poolConfig = getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)))
357360 if (isDefined(poolConfig))
358361 then throw((((("Pool " + amountAssetStr) + "/") + priceAssetStr) + " has already been activated."))
359362 else {
360363 let poolConfigValue = value(getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId))))
361364 let amountAssetsDecimals = if ((amountAssetStr == "WAVES"))
362365 then decimalsMultPrice
363366 else pow(10, 0, value(assetInfo(fromBase58String(amountAssetStr))).decimals, 0, 0, DOWN)
364367 let priceAssetsDecimals = if ((priceAssetStr == "WAVES"))
365368 then decimalsMultPrice
366369 else pow(10, 0, value(assetInfo(fromBase58String(priceAssetStr))).decimals, 0, 0, DOWN)
367370 let lpAssetIssueAction = Issue(lpAssetName, lpAssetDescr, 1, 8, true)
368371 let lpAssetId = calculateAssetId(lpAssetIssueAction)
369372 let lpAssetIdStr = toBase58String(lpAssetId)
370373 let poolActivateInvokeResult = invoke(addressFromStringValue(poolAddress), "activate", [amountAssetStr, priceAssetStr], nil)
371374 if ((poolActivateInvokeResult == poolActivateInvokeResult))
372375 then if ((poolActivateInvokeResult != "success"))
373376 then throw("Pool initialisation error happened.")
374377 else {
375378 let assetsStoreContract = addressFromStringValue(getStringOrFail(keyAssetsStoreContract()))
376379 let addAssetsLinkInv = invoke(assetsStoreContract, "addAssetsLink", [amountAssetStr, priceAssetStr, lpAssetIdStr], nil)
377380 if ((addAssetsLinkInv == addAssetsLinkInv))
378381 then {
379382 let increaseAssetPoolsNumberInv = invoke(assetsStoreContract, "increaseAssetPoolsNumber", [amountAssetStr], nil)
380383 if ((increaseAssetPoolsNumberInv == increaseAssetPoolsNumberInv))
381384 then $Tuple2(((internalAmountAssetData._2 ++ internalPriceAssetData._2) ++ [lpAssetIssueAction, Burn(lpAssetId, 1), StringEntry(keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)), dataPoolCfg(poolAddress, toString(PoolActive), lpAssetIdStr, amountAssetStr, priceAssetStr, amountAssetsDecimals, priceAssetsDecimals, internalAmountAssetId, internalPriceAssetId, decimalsMultPrice, poolType)), StringEntry(keyMappingLpAssetToPoolAssets(lpAssetIdStr), dataMappingPoolAssets(internalAmountAssetId, internalPriceAssetId)), StringEntry(keyMappingPoolAssetsToLpasset(toString(internalAmountAssetId), toString(internalPriceAssetId)), ("%s__" + lpAssetIdStr)), StringEntry(keyMappingPoolContractAddressToPoolAssets(poolAddress), dataMappingPoolAssets(internalAmountAssetId, internalPriceAssetId)), StringEntry(keyMappingPoolAssetsToPoolContractAddress(internalAmountAssetId, internalPriceAssetId), poolAddress), StringEntry(keyMappingPoolLPAssetToPoolContractAddress(lpAssetIdStr), poolAddress), StringEntry(keyMappingPoolContracToLPAsset(poolAddress), lpAssetIdStr), IntegerEntry(keyPoolToWeight(poolAddress), poolWeight), StringEntry(keyLpTokensList(), createLpTokensListEntry(lpAssetIdStr))]), lpAssetIdStr)
382385 else throw("Strict value is not equal to itself.")
383386 }
384387 else throw("Strict value is not equal to itself.")
385388 }
386389 else throw("Strict value is not equal to itself.")
387390 }
388391 }
389392 else throw("Strict value is not equal to itself.")
390393 }
391394
392395
393396
394397 @Callable(i)
395398 func managePool (poolAddress,newStatus) = {
396399 let checkCaller = mustManager(i)
397400 if ((checkCaller == checkCaller))
398401 then {
399402 let poolConfig = getPoolConfig(poolAddress)
400403 let poolStatus = poolConfig[idxPoolStatus]
401404 let lpAssetIdStr = poolConfig[idxPoolLPAssetId]
402405 let amountAssetStr = poolConfig[idxAmtAssetId]
403406 let priceAssetStr = poolConfig[idxPriceAssetId]
404407 let amountAssetsDecimals = parseIntValue(poolConfig[idxAmtAssetDcm])
405408 let priceAssetsDecimals = parseIntValue(poolConfig[idxPriceAssetDcm])
406409 let internalAmountAssetId = parseIntValue(poolConfig[idxIAmtAssetId])
407410 let internalPriceAssetId = parseIntValue(poolConfig[idxIPriceAssetId])
408411 let lpAssetDcm = parseIntValue(poolConfig[idxLPAssetDcm])
409412 let poolType = poolConfig[idxPoolType]
410413 [StringEntry(keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)), dataPoolCfg(poolAddress, toString(newStatus), lpAssetIdStr, amountAssetStr, priceAssetStr, amountAssetsDecimals, priceAssetsDecimals, internalAmountAssetId, internalPriceAssetId, lpAssetDcm, poolType))]
411414 }
412415 else throw("Strict value is not equal to itself.")
413416 }
414417
415418
416419
417420 @Callable(i)
418421 func emit (amountToEmit) = {
419422 let caller = i.caller
420423 let originCaller = i.originCaller
421424 let lpAssetRequested = valueOrErrorMessage(getString(keyMappingPoolContracToLPAsset(toString(caller))), "Invalid LP address called me.")
422425 let lpAsset = fromBase58String(lpAssetRequested)
423426 let legacyPools = split(valueOrElse(getString(keyLegacyPools()), EMPTY), SEP)
424427 let legacyFactoryContract = addressFromStringValue(valueOrErrorMessage(getString(keyLegacyFactoryContract()), "Legacy factory contract does not exists."))
425428 if ((0 >= amountToEmit))
426429 then nil
427430 else if (containsElement(legacyPools, toString(caller)))
428431 then $Tuple2(nil, legacyFactoryContract)
429432 else $Tuple2([Reissue(lpAsset, amountToEmit, true), ScriptTransfer(i.caller, amountToEmit, lpAsset)], "success")
430433 }
431434
432435
433436
434437 @Callable(i)
435438 func burn (amountToBurn) = {
436439 let caller = i.caller
437440 let originCaller = i.originCaller
438441 let payment = value(i.payments[0])
439442 let paymentAmount = value(payment.amount)
440443 let inAmountAssetId = toBase58String(value(payment.assetId))
441444 let lpAssetRequestedForBurning = valueOrErrorMessage(getString(keyMappingPoolContracToLPAsset(toString(caller))), "Invalid LP address called me.")
442445 if ((inAmountAssetId != lpAssetRequestedForBurning))
443446 then throw("Invalid asset passed.")
444447 else if ((amountToBurn != paymentAmount))
445448 then throw("Invalid amount passed.")
446449 else {
447450 let lpAsset = fromBase58String(lpAssetRequestedForBurning)
448451 $Tuple2([Burn(lpAsset, amountToBurn)], "success")
449452 }
450453 }
451454
452455
453456
454457 @Callable(i)
455458 func modifyWeights (btcPoolAddress,ethPoolAddress,ethBtcPoolAddress,usdcUsdtPoolAddress) = {
456459 let checkCaller = mustManager(i)
457460 if ((checkCaller == checkCaller))
458461 then {
459462 let ethBtcWeightNew = ((5 * POOLWEIGHTMULT) / 100)
460463 let usdcUsdtWeightNew = ((5 * POOLWEIGHTMULT) / 100)
461464 let weightDecrement = ((5 * POOLWEIGHTMULT) / 100)
462465 let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
463466 let stakingDapp = getStakingAddressOrFail(factoryCfg)
464467 let gwxRewardDapp = getGwxRewardAddressOrFail(factoryCfg)
465468 let btcWeightKEY = keyPoolToWeight(btcPoolAddress)
466469 let ethWeightKEY = keyPoolToWeight(ethPoolAddress)
467470 let ethBtcWeightKEY = keyPoolToWeight(ethBtcPoolAddress)
468471 let usdcUsdtWeightKEY = keyPoolToWeight(usdcUsdtPoolAddress)
469472 let btcWeight = getIntOrFail(btcWeightKEY)
470473 let ethWeight = getIntOrFail(ethWeightKEY)
471474 let btcWeightNew = (btcWeight - weightDecrement)
472475 let ethWeightNew = (ethWeight - weightDecrement)
473476 if ((0 >= btcWeightNew))
474477 then throw(("invalid btcWeightNew: " + toString(btcWeightNew)))
475478 else if ((0 >= ethWeightNew))
476479 then throw(("invalid ethWeightNew: " + toString(ethWeightNew)))
477480 else {
478481 let btcLpAssetIdStr = getStringOrFail(keyMappingPoolContracToLPAsset(btcPoolAddress))
479482 let ethLpAssetIdStr = getStringOrFail(keyMappingPoolContracToLPAsset(ethPoolAddress))
480483 let ethBtcLpAssetIdStr = getStringOrFail(keyMappingPoolContracToLPAsset(ethBtcPoolAddress))
481484 let usdcUsdtLpAssetIdStr = getStringOrFail(keyMappingPoolContracToLPAsset(usdcUsdtPoolAddress))
482485 let onModifyWeightBtc = invoke(stakingDapp, "onModifyWeight", [btcLpAssetIdStr, btcPoolAddress], nil)
483486 if ((onModifyWeightBtc == onModifyWeightBtc))
484487 then {
485488 let onModifyWeightEth = invoke(stakingDapp, "onModifyWeight", [ethLpAssetIdStr, ethPoolAddress], nil)
486489 if ((onModifyWeightEth == onModifyWeightEth))
487490 then {
488491 let onModifyWeightEthBtc = invoke(stakingDapp, "onModifyWeight", [ethBtcLpAssetIdStr, ethBtcPoolAddress], nil)
489492 if ((onModifyWeightEthBtc == onModifyWeightEthBtc))
490493 then {
491494 let onModifyWeightUsdcUsdt = invoke(stakingDapp, "onModifyWeight", [usdcUsdtLpAssetIdStr, usdcUsdtPoolAddress], nil)
492495 if ((onModifyWeightUsdcUsdt == onModifyWeightUsdcUsdt))
493496 then [IntegerEntry(btcWeightKEY, btcWeightNew), IntegerEntry(ethWeightKEY, ethWeightNew), IntegerEntry(ethBtcWeightKEY, ethBtcWeightNew), IntegerEntry(usdcUsdtWeightKEY, usdcUsdtWeightNew), IntegerEntry(keyPoolToWeightHistory(btcPoolAddress, 0), btcWeight), IntegerEntry(keyPoolToWeightHistory(ethPoolAddress, 0), ethWeight), IntegerEntry(keyPoolToWeightHistory(ethBtcPoolAddress, 0), ethBtcWeightNew), IntegerEntry(keyPoolToWeightHistory(usdcUsdtPoolAddress, 0), usdcUsdtWeightNew)]
494497 else throw("Strict value is not equal to itself.")
495498 }
496499 else throw("Strict value is not equal to itself.")
497500 }
498501 else throw("Strict value is not equal to itself.")
499502 }
500503 else throw("Strict value is not equal to itself.")
501504 }
502505 }
503506 else throw("Strict value is not equal to itself.")
504507 }
505508
506509
507510 @Verifier(tx)
508511 func verify () = {
509512 let targetPublicKey = match managerPublicKeyOrUnit() {
510513 case pk: ByteVector =>
511514 pk
512515 case _: Unit =>
513516 tx.senderPublicKey
514517 case _ =>
515518 throw("Match error")
516519 }
517520 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
518521 }
519522

github/deemru/w8io/169f3d6 
91.86 ms