tx · sUrmmiQBduRH7KDyMcR2Hj4ddcftJMU34kWph7nKaoX

3P8LyB8m7gw9mKGAtwdWGNgSbEvm7sELmJx:  -0.03000000 Waves

2022.08.26 12:58 [3266767] smart account 3P8LyB8m7gw9mKGAtwdWGNgSbEvm7sELmJx > SELF 0.00000000 Waves

{ "type": 13, "id": "sUrmmiQBduRH7KDyMcR2Hj4ddcftJMU34kWph7nKaoX", "fee": 3000000, "feeAssetId": null, "timestamp": 1661507897521, "version": 1, "sender": "3P8LyB8m7gw9mKGAtwdWGNgSbEvm7sELmJx", "senderPublicKey": "Gbgnxd4D4T1mnASPyEBnmYmTV4t5oKLdh7d2hASjTUyJ", "proofs": [ "3dosR9PZtLZBsuYy2T3kJbEgLQjJv24J27xiME9ARLk372ZJKxNpW3uLzNK4DS3Fnu9WUo57boA3DoHvSBCyFEan" ], "script": "base64:AAIFAAAAAAAAAHkIAhIKCggICAgICAgIARIDCgEIEgYKBAgICAgSBAoCCBgSAwoBCBIECgIIGBIDCgEIEgASAwoBGBIKCggICAgICAEICBIECgIIARIDCgEBEgMKAQESBAoCCAESBgoECAgICBIECgIICBIECgIICBIECgIICBIDCgEIAAAAWQAAAAAGU0NBTEU4AAAAAAAAAAAIAAAAAAVNVUxUOAAAAAAABfXhAAAAAAAHU0NBTEUxOAAAAAAAAAAAEgAAAAAGTVVMVDE4CQABNgAAAAEADeC2s6dkAAAAAAAADlBPT0xXRUlHSFRNVUxUBQAAAAVNVUxUOAAAAAAOR1dYdmlydHVhbFBPT0wCAAAADkdXWHZpcnR1YWxQT09MAAAAAAxsYWJlbFBvb2xzTHACAAAACFBPT0xTX0xQAAAAABFkZWNpbWFsc011bHRQcmljZQkAAGgAAAACCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAAA+gAAAAAAAAAA+gAAAAAA1NFUAIAAAACX18AAAAABUVNUFRZAgAAAAAAAAAAClBvb2xBY3RpdmUAAAAAAAAAAAEAAAAAD1Bvb2xQdXREaXNhYmxlZAAAAAAAAAAAAgAAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAAAAAAAAAAAAwAAAAAMUG9vbFNodXRkb3duAAAAAAAAAAAEAAAAABJpZHhJbnRlcm5hbEFzc2V0SWQAAAAAAAAAAAEAAAAAD2lkeFJlc3V0QWN0aW9ucwAAAAAAAAAAAgAAAAAgaWR4SWZBc3NldElkQ2FsY3VsYXRpb25QZXJmb3JtZWQAAAAAAAAAAAMAAAAADmlkeFBvb2xBZGRyZXNzAAAAAAAAAAABAAAAAA1pZHhQb29sU3RhdHVzAAAAAAAAAAACAAAAABBpZHhQb29sTFBBc3NldElkAAAAAAAAAAADAAAAAA1pZHhBbXRBc3NldElkAAAAAAAAAAAEAAAAAA9pZHhQcmljZUFzc2V0SWQAAAAAAAAAAAUAAAAADmlkeEFtdEFzc2V0RGNtAAAAAAAAAAAGAAAAABBpZHhQcmljZUFzc2V0RGNtAAAAAAAAAAAHAAAAAA5pZHhJQW10QXNzZXRJZAAAAAAAAAAACAAAAAAQaWR4SVByaWNlQXNzZXRJZAAAAAAAAAAACQAAAAANaWR4TFBBc3NldERjbQAAAAAAAAAACgAAAAALaWR4UG9vbFR5cGUAAAAAAAAAAAsAAAAAE3Bvb2xMYWJlbFd4RW1pc3Npb24CAAAAC1dYX0VNSVNTSU9OAAAAAA92YWxpZFBvb2xMYWJlbHMJAARMAAAAAgUAAAATcG9vbExhYmVsV3hFbWlzc2lvbgUAAAADbmlsAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAIAAAARJXNfX2ZhY3RvcnlDb25maWcBAAAAD2tleUxwVG9rZW5zTGlzdAAAAAACAAAAECVzX19scFRva2Vuc0xpc3QBAAAAEWtleVBvb2xTY3JpcHRIYXNoAAAAAAIAAAAWJXMlc19fcG9vbF9fc2NyaXB0SGFzaAEAAAANa2V5TWF0Y2hlclB1YgAAAAACAAAAGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQEAAAAYa2V5TGVnYWN5RmFjdG9yeUNvbnRyYWN0AAAAAAIAAAAZJXNfX2xlZ2FjeUZhY3RvcnlDb250cmFjdAEAAAAOa2V5TGVnYWN5UG9vbHMAAAAAAgAAAA8lc19fbGVnYWN5UG9vbHMBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABQlc19fbWFuYWdlclB1YmxpY0tleQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAgAAABslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAAAAD2tleUFkbWluUHViS2V5cwAAAAACAAAAECVzX19hZG1pblB1YktleXMBAAAAFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAAAAAAgAAABclc19fYXNzZXRzU3RvcmVDb250cmFjdAEAAAAZa2V5Vm90aW5nRW1pc3Npb25Db250cmFjdAAAAAACAAAAGiVzX192b3RpbmdFbWlzc2lvbkNvbnRyYWN0AQAAAA5rZXlQcmljZUFzc2V0cwAAAAAJAAS5AAAAAgkABEwAAAACAgAAAAIlcwkABEwAAAACAgAAAAtwcmljZUFzc2V0cwUAAAADbmlsBQAAAANTRVABAAAAEGtleVByaWNlRGVjaW1hbHMAAAAAAgAAABElc19fcHJpY2VEZWNpbWFscwEAAAATa2V5QWxsUG9vbHNTaHV0ZG93bgAAAAACAAAADCVzX19zaHV0ZG93bgEAAAAWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAACAAAAFyVzX19uZXh0SW50ZXJuYWxBc3NldElkAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABAAAAC3Bvb2xBZGRyZXNzCQABLAAAAAICAAAAEiVzJXNfX3Bvb2xXZWlnaHRfXwUAAAALcG9vbEFkZHJlc3MBAAAAFmtleVBvb2xUb1dlaWdodEhpc3RvcnkAAAACAAAAC3Bvb2xBZGRyZXNzAAAAA251bQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASJXMlc19fcG9vbFdlaWdodF9fBQAAAAtwb29sQWRkcmVzcwIAAAACX18JAAGkAAAAAQUAAAADbnVtAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQAAABFpbnRlcm5hbEJhc2VBc3NldAkAASwAAAACAgAAACglcyVzJWRfX21hcHBpbmdzX19pbnRlcm5hbDJiYXNlQXNzZXRJZF9fCQABpAAAAAEFAAAAEWludGVybmFsQmFzZUFzc2V0AQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAAA1rZXlQb29sQ29uZmlnAAAAAgAAABNhbW91bnRBc3NldEludGVybmFsAAAAEnByaWNlQXNzZXRJbnRlcm5hbAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglZCVkJXNfXwUAAAATYW1vdW50QXNzZXRJbnRlcm5hbAIAAAACX18FAAAAEnByaWNlQXNzZXRJbnRlcm5hbAIAAAAIX19jb25maWcBAAAAHWtleU1hcHBpbmdMcEFzc2V0VG9Qb29sQXNzZXRzAAAAAQAAAApscEFzc2V0U3RyCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAACmxwQXNzZXRTdHICAAAAGF9fbWFwcGluZ3NfX2xwQXNzZXQyUG9vbAEAAAAda2V5TWFwcGluZ1Bvb2xBc3NldHNUb0xwYXNzZXQAAAACAAAAGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgAAABdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAolZCVkJXMlc19fBQAAABhpbnRlcm5hbEFtb3VudEFzc2V0SWRTdHICAAAAAl9fBQAAABdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgIAAAAeX19tYXBwaW5nc19fUG9vbEFzc2V0czJMcEFzc2V0AQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEAAAATcG9vbENvbnRyYWN0QWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAACCVzJXMlc19fBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAgAAACNfX21hcHBpbmdzX19wb29sQ29udHJhY3QyUG9vbEFzc2V0cwEAAAApa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAACAAAAGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgAAABdpbnRlcm5hbFByaWNlQXNzZXRJZFN0cgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAolZCVkJXMlc19fCQABpAAAAAEFAAAAGGludGVybmFsQW1vdW50QXNzZXRJZFN0cgIAAAACX18JAAGkAAAAAQUAAAAXaW50ZXJuYWxQcmljZUFzc2V0SWRTdHICAAAAI19fbWFwcGluZ3NfX3Bvb2xBc3NldHMyUG9vbENvbnRyYWN0AQAAAB9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AAAAAQAAABNwb29sQ29udHJhY3RBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAIJXMlcyVzX18FAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MCAAAAIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQAAACprZXlNYXBwaW5nUG9vbExQQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAABAAAACmxwQXNzZXRTdHIJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAAKbHBBc3NldFN0cgIAAAAgX19tYXBwaW5nc19fbHBBc3NldDJQb29sQ29udHJhY3QBAAAADWtleVd4RW1pc3Npb24AAAACAAAADWFtb3VudEFzc2V0SWQAAAAMcHJpY2VBc3NldElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABQlcyVzJXNfX3d4RW1pc3Npb25fXwUAAAANYW1vdW50QXNzZXRJZAIAAAACX18FAAAADHByaWNlQXNzZXRJZAEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAAEGdldEJvb2xlYW5PckZhaWwAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQkAASwAAAACAgAAABVObyBkYXRhIGZvciB0aGlzLmtleT0FAAAAA2tleQEAAAAMZ2V0SW50T3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkAAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAAAAAAAAAAAAQAAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAAAAAAAAAAAAgAAAAAUSWR4RmFjdG9yeUNmZ0lkb0RhcHAAAAAAAAAAAAMAAAAAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAAAAAAAAAABAAAAAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAAAAAAAAAABQAAAAAVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwAAAAAAAAAAAGAAAAABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAAAAAAAAAAHAAAAABRJZHhGYWN0b3J5Q2ZnRGFvRGFwcAAAAAAAAAAACAAAAAAaSWR4RmFjdG9yeUNmZ01hcmtldGluZ0RhcHAAAAAAAAAAAAkAAAAAGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwAAAAAAAAAAAKAAAAABZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwAAAAAAAAAAALAQAAABhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwAAAABAAAACmZhY3RvcnlDZmcJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAEAAAAYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHABAAAAF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAAAAAQAAAApmYWN0b3J5Q2ZnCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAEAAAAZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAAAAAEAAAAKZmFjdG9yeUNmZwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnBQAAABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAEAAAAOZ2V0UHJpY2VBc3NldHMAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAAA5rZXlQcmljZUFzc2V0cwAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAMJAAAAAAAAAgkAATEAAAABBQAAAAFzAAAAAAAAAAAABQAAAANuaWwJAAS1AAAAAgUAAAABcwUAAAADU0VQBQAAAANuaWwBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAckbWF0Y2gwCQAEIgAAAAEJAQAAABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXMFAAAAByRtYXRjaDAJAAJZAAAAAQUAAAABcwMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAUAAAAEdW5pdAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgAAAAAVcGVybWlzc2lvbkRlbmllZEVycm9yCQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkAQAAAAhtdXN0VGhpcwAAAAEAAAABaQMJAAAAAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzBgUAAAAVcGVybWlzc2lvbkRlbmllZEVycm9yAQAAAAttdXN0TWFuYWdlcgAAAAEAAAABaQQAAAAHJG1hdGNoMAkBAAAAFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAAAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAJwawUAAAAHJG1hdGNoMAMJAAAAAAAAAggFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BQAAAAJwawYFAAAAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAkBAAAACG11c3RUaGlzAAAAAQUAAAABaQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAQZGF0YUZhY3RvcnlDZmdWMwAAAAsAAAAOc3Rha2luZ0FkZHJlc3MAAAAPYm9vc3RpbmdBZGRyZXNzAAAAC2lkb0NvbnRyYWN0AAAADHRlYW1Db250cmFjdAAAABBlbWlzc2lvbkNvbnRyYWN0AAAADHJlc3RDb250cmFjdAAAABBzbGlwcGFnZUNvbnRyYWN0AAAAC2Rhb0NvbnRyYWN0AAAAEW1hcmtldGluZ0NvbnRyYWN0AAAAEmd3eFJld2FyZHNDb250cmFjdAAAAA1iaXJkc0NvbnRyYWN0CQAEuQAAAAIJAARMAAAAAgIAAAAWJXMlcyVzJXMlcyVzJXMlcyVzJXMlcwkABEwAAAACBQAAAA5zdGFraW5nQWRkcmVzcwkABEwAAAACBQAAAA9ib29zdGluZ0FkZHJlc3MJAARMAAAAAgUAAAALaWRvQ29udHJhY3QJAARMAAAAAgUAAAAMdGVhbUNvbnRyYWN0CQAETAAAAAIFAAAAEGVtaXNzaW9uQ29udHJhY3QJAARMAAAAAgUAAAAMcmVzdENvbnRyYWN0CQAETAAAAAIFAAAAEHNsaXBwYWdlQ29udHJhY3QJAARMAAAAAgUAAAALZGFvQ29udHJhY3QJAARMAAAAAgUAAAARbWFya2V0aW5nQ29udHJhY3QJAARMAAAAAgUAAAASZ3d4UmV3YXJkc0NvbnRyYWN0CQAETAAAAAIFAAAADWJpcmRzQ29udHJhY3QFAAAAA25pbAUAAAADU0VQAQAAAA5kYXRhRmFjdG9yeUNmZwAAAAcAAAAOc3Rha2luZ0FkZHJlc3MAAAAPYm9vc3RpbmdBZGRyZXNzAAAAC2lkb0NvbnRyYWN0AAAADHRlYW1Db250cmFjdAAAABBlbWlzc2lvbkNvbnRyYWN0AAAADHJlc3RDb250cmFjdAAAABBzbGlwcGFnZUNvbnRyYWN0CQAEuQAAAAIJAARMAAAAAgIAAAAMJXMlcyVzJXMlcyVzCQAETAAAAAIFAAAADnN0YWtpbmdBZGRyZXNzCQAETAAAAAIFAAAAD2Jvb3N0aW5nQWRkcmVzcwkABEwAAAACBQAAAAtpZG9Db250cmFjdAkABEwAAAACBQAAAAx0ZWFtQ29udHJhY3QJAARMAAAAAgUAAAAQZW1pc3Npb25Db250cmFjdAkABEwAAAACBQAAAAxyZXN0Q29udHJhY3QJAARMAAAAAgUAAAAQc2xpcHBhZ2VDb250cmFjdAUAAAADbmlsBQAAAANTRVABAAAAC2RhdGFQb29sQ2ZnAAAACwAAAAtwb29sQWRkcmVzcwAAAApwb29sU3RhdHVzAAAACWxwQXNzZXRJZAAAAA5hbW91bnRBc3NldFN0cgAAAA1wcmljZUFzc2V0U3RyAAAAE2Ftb3VudEFzc2V0RGVjaW1hbHMAAAAScHJpY2VBc3NldERlY2ltYWxzAAAAFWFtb3VudEFzc2V0SW50ZXJuYWxJZAAAABRwcmljZUFzc2V0SW50ZXJuYWxJZAAAAA9scEFzc2V0RGVjaW1hbHMAAAAIcG9vbFR5cGUJAAS5AAAAAgkABEwAAAACAgAAABYlcyVkJXMlcyVzJWQlZCVkJWQlZCVzCQAETAAAAAIFAAAAC3Bvb2xBZGRyZXNzCQAETAAAAAIFAAAACnBvb2xTdGF0dXMJAARMAAAAAgUAAAAJbHBBc3NldElkCQAETAAAAAIFAAAADmFtb3VudEFzc2V0U3RyCQAETAAAAAIFAAAADXByaWNlQXNzZXRTdHIJAARMAAAAAgkAAaQAAAABBQAAABNhbW91bnRBc3NldERlY2ltYWxzCQAETAAAAAIJAAGkAAAAAQUAAAAScHJpY2VBc3NldERlY2ltYWxzCQAETAAAAAIJAAGkAAAAAQUAAAAVYW1vdW50QXNzZXRJbnRlcm5hbElkCQAETAAAAAIJAAGkAAAAAQUAAAAUcHJpY2VBc3NldEludGVybmFsSWQJAARMAAAAAgkAAaQAAAABBQAAAA9scEFzc2V0RGVjaW1hbHMJAARMAAAAAgUAAAAIcG9vbFR5cGUFAAAAA25pbAUAAAADU0VQAQAAABVkYXRhTWFwcGluZ1Bvb2xBc3NldHMAAAACAAAAFmludGVybmFsQW1vdW50QXNzZXRTdHIAAAAVaW50ZXJuYWxQcmljZUFzc2V0U3RyCQAEuQAAAAIJAARMAAAAAgIAAAAEJWQlZAkABEwAAAACCQABpAAAAAEFAAAAFmludGVybmFsQW1vdW50QXNzZXRTdHIJAARMAAAAAgkAAaQAAAABBQAAABVpbnRlcm5hbFByaWNlQXNzZXRTdHIFAAAAA25pbAUAAAADU0VQAQAAAA1nZXRQb29sQ29uZmlnAAAAAQAAAAtwb29sQWRkcmVzcwQAAAAKcG9vbEFzc2V0cwkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzAAAAAQUAAAALcG9vbEFkZHJlc3MFAAAAA1NFUAQAAAATYW1vdW50QXNzZXRJbnRlcm5hbAkAAZEAAAACBQAAAApwb29sQXNzZXRzAAAAAAAAAAABBAAAABJwcmljZUFzc2V0SW50ZXJuYWwJAAGRAAAAAgUAAAAKcG9vbEFzc2V0cwAAAAAAAAAAAgkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAADWtleVBvb2xDb25maWcAAAACBQAAABNhbW91bnRBc3NldEludGVybmFsBQAAABJwcmljZUFzc2V0SW50ZXJuYWwFAAAAA1NFUAEAAAAaZ2V0SW50ZXJuYWxBc3NldElkT3JDcmVhdGUAAAACAAAACmFzc2V0SWRTdHIAAAALaW5jcmVtZW50b3IEAAAAD2ludGVybmFsQXNzZXRJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAACmFzc2V0SWRTdHIAAAAAAAAAAAAEAAAAGGN1cnJlbnRJbmRleE9mSW50ZXJuYWxJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAAAAAAAAAAAAAAEAAAABnJlc3VsdAMJAAAAAAAAAgUAAAAPaW50ZXJuYWxBc3NldElkAAAAAAAAAAAABAAAABJuZXdJbnRlcm5hbEFzc2V0SWQJAABkAAAAAgUAAAAYY3VycmVudEluZGV4T2ZJbnRlcm5hbElkBQAAAAtpbmNyZW1lbnRvcgkABRUAAAADBQAAABJuZXdJbnRlcm5hbEFzc2V0SWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAAAAUAAAASbmV3SW50ZXJuYWxBc3NldElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAACmFzc2V0SWRTdHIFAAAAEm5ld0ludGVybmFsQXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEFAAAAEm5ld0ludGVybmFsQXNzZXRJZAUAAAAKYXNzZXRJZFN0cgUAAAADbmlsBgkABRUAAAADBQAAAA9pbnRlcm5hbEFzc2V0SWQFAAAAA25pbAcFAAAABnJlc3VsdAEAAAAXY3JlYXRlTHBUb2tlbnNMaXN0RW50cnkAAAABAAAACm5ld0xwVG9rZW4EAAAACGxwVG9rZW5zCQAEHQAAAAIFAAAABHRoaXMJAQAAAA9rZXlMcFRva2Vuc0xpc3QAAAAAAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAACGxwVG9rZW5zCQABLAAAAAIJAAEsAAAAAgkBAAAABXZhbHVlAAAAAQUAAAAIbHBUb2tlbnMFAAAAA1NFUAUAAAAKbmV3THBUb2tlbgUAAAAKbmV3THBUb2tlbgEAAAAJbXVzdEFkbWluAAAAAQAAAAFpBAAAAAhhZG1pblBLcwkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEIgAAAAEJAQAAAA9rZXlBZG1pblB1YktleXMAAAAABQAAAAVFTVBUWQUAAAADU0VQAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAACGFkbWluUEtzCQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQYEAAAACWlzTWFuYWdlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAAJaXNNYW5hZ2VyBQAAAAlpc01hbmFnZXIGCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAABMAAAABaQEAAAALY29uc3RydWN0b3IAAAAIAAAAD3N0YWtpbmdDb250cmFjdAAAABBib29zdGluZ0NvbnRyYWN0AAAAC2lkb0NvbnRyYWN0AAAADHRlYW1Db250cmFjdAAAABBlbWlzc2lvbkNvbnRyYWN0AAAADHJlc3RDb250cmFjdAAAABBzbHBpcGFnZUNvbnRyYWN0AAAADXByaWNlRGVjaW1hbHMEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAACQEAAAAOZGF0YUZhY3RvcnlDZmcAAAAHBQAAAA9zdGFraW5nQ29udHJhY3QFAAAAEGJvb3N0aW5nQ29udHJhY3QFAAAAC2lkb0NvbnRyYWN0BQAAAAx0ZWFtQ29udHJhY3QFAAAAEGVtaXNzaW9uQ29udHJhY3QFAAAADHJlc3RDb250cmFjdAUAAAAQc2xwaXBhZ2VDb250cmFjdAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGtleVByaWNlRGVjaW1hbHMAAAAABQAAAA1wcmljZURlY2ltYWxzBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADWNvbnN0cnVjdG9yVjIAAAABAAAAEG1hdGhjaGVyUHViNThTdHIEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAACm1hdGhjZXJQdWIJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQUAAAAQbWF0aGNoZXJQdWI1OFN0cgMJAAAAAAAAAgUAAAAKbWF0aGNlclB1YgUAAAAKbWF0aGNlclB1YgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5TWF0Y2hlclB1YgAAAAAFAAAAEG1hdGhjaGVyUHViNThTdHIFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADWNvbnN0cnVjdG9yVjMAAAAEAAAAC2Rhb0NvbnRyYWN0AAAAEW1hcmtldGluZ0NvbnRyYWN0AAAAEmd3eFJld2FyZHNDb250cmFjdAAAAA1iaXJkc0NvbnRyYWN0BAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAApmYWN0b3J5Q2ZnCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAAFAAAAA1NFUAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAAJAQAAABBkYXRhRmFjdG9yeUNmZ1YzAAAACwkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnAAAAAAAAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcAAAAAAAAAAAIJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwAAAAAAAAAAAwkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnAAAAAAAAAAAECQABkQAAAAIFAAAACmZhY3RvcnlDZmcAAAAAAAAAAAUJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwAAAAAAAAAABgkAAZEAAAACBQAAAApmYWN0b3J5Q2ZnAAAAAAAAAAAHBQAAAAtkYW9Db250cmFjdAUAAAARbWFya2V0aW5nQ29udHJhY3QFAAAAEmd3eFJld2FyZHNDb250cmFjdAUAAAANYmlyZHNDb250cmFjdAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA1jb25zdHJ1Y3RvclY0AAAAAgAAABVsZWdhY3lGYWN0b3J5Q29udHJhY3QAAAALbGVnYWN5UG9vbHMEAAAAC2NoZWNrQ2FsbGVyCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAAAAAAFAAAAFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAOa2V5TGVnYWN5UG9vbHMAAAAACQAEuQAAAAIFAAAAC2xlZ2FjeVBvb2xzBQAAAANTRVAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANY29uc3RydWN0b3JWNQAAAAEAAAATYXNzZXRzU3RvcmVDb250cmFjdAQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAAAAFAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANY29uc3RydWN0b3JWNgAAAAIAAAAWdm90aW5nRW1pc3Npb25Db250cmFjdAAAAAtwcmljZUFzc2V0cwQAAAAFY2hla3MJAARMAAAAAgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQkABEwAAAACAwkBAAAAAiE9AAAAAgkABCYAAAABBQAAABZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQAAAAR1bml0BgIAAAAoaW52YWxpZCB2b3RpbmcgZW1pc3Npb24gY29udHJhY3QgYWRkcmVzcwUAAAADbmlsAwkAAAAAAAACBQAAAAVjaGVrcwUAAAAFY2hla3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAAAABQAAABZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlQcmljZUFzc2V0cwAAAAAJAAS5AAAAAgUAAAALcHJpY2VBc3NldHMFAAAAA1NFUAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApzZXRNYW5hZ2VyAAAAAQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQACWQAAAAEFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAAAAAACBQAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkAAAAABQAAABdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAOY29uZmlybU1hbmFnZXIAAAAABAAAAAJwbQkBAAAAHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAFaGFzUE0DCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAFaGFzUE0FAAAABWhhc1BNBAAAAAdjaGVja1BNAwkAAAAAAAACCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtBgkAAAIAAAABAgAAABtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAAAAAAIFAAAAB2NoZWNrUE0FAAAAB2NoZWNrUE0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAACQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAAAnBtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACXNldEFkbWlucwAAAAEAAAAMYWRtaW5QdWJLZXlzBAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9rZXlBZG1pblB1YktleXMAAAAACQAEuQAAAAIFAAAADGFkbWluUHViS2V5cwUAAAADU0VQBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAD2FjdGl2YXRlTmV3UG9vbAAAAAgAAAALcG9vbEFkZHJlc3MAAAAOYW1vdW50QXNzZXRTdHIAAAANcHJpY2VBc3NldFN0cgAAAAtscEFzc2V0TmFtZQAAAAxscEFzc2V0RGVzY3IAAAAKcG9vbFdlaWdodAAAAAhwb29sVHlwZQAAAARsb2dvBAAAAAtjaGVja0NhbGxlcgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgMJAQAAAAlpc0RlZmluZWQAAAABCQAEIgAAAAEJAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEFAAAAC3Bvb2xBZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAA1Qb29sIGFkZHJlc3MgBQAAAAtwb29sQWRkcmVzcwIAAAAUIGFscmVhZHkgcmVnaXN0ZXJlZC4EAAAAF2ludGVybmFsQW1vdW50QXNzZXREYXRhCQEAAAAaZ2V0SW50ZXJuYWxBc3NldElkT3JDcmVhdGUAAAACBQAAAA5hbW91bnRBc3NldFN0cgAAAAAAAAAAAQQAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCAUAAAAXaW50ZXJuYWxBbW91bnRBc3NldERhdGEAAAACXzEEAAAAFmludGVybmFsUHJpY2VBc3NldERhdGEJAQAAABpnZXRJbnRlcm5hbEFzc2V0SWRPckNyZWF0ZQAAAAIFAAAADXByaWNlQXNzZXRTdHIDCAUAAAAXaW50ZXJuYWxBbW91bnRBc3NldERhdGEAAAACXzMAAAAAAAAAAAIAAAAAAAAAAAEEAAAAFGludGVybmFsUHJpY2VBc3NldElkCAUAAAAWaW50ZXJuYWxQcmljZUFzc2V0RGF0YQAAAAJfMQQAAAAVcG9vbEFjY291bnRTY3JpcHRIYXNoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPxAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAALcG9vbEFkZHJlc3MJAAEsAAAAAgIAAAApTm8gc2NyaXB0IGhhcyBiZWVuIGZvdW5kIG9uIHBvb2wgYWNjb3VudCAFAAAAC3Bvb2xBZGRyZXNzBAAAABxldGhhbG9uUG9vbEFjY291bnRTY3JpcHRIYXNoCQEAAAARQGV4dHJOYXRpdmUoMTA1NykAAAABCQEAAAARa2V5UG9vbFNjcmlwdEhhc2gAAAAABAAAAApwb29sQ29uZmlnCQAEHQAAAAIFAAAABHRoaXMJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAAGkAAAAAQUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQDCQEAAAAJaXNEZWZpbmVkAAAAAQUAAAAKcG9vbENvbmZpZwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAABVBvb2wgBQAAAA5hbW91bnRBc3NldFN0cgIAAAABLwUAAAANcHJpY2VBc3NldFN0cgIAAAAcIGhhcyBhbHJlYWR5IGJlZW4gYWN0aXZhdGVkLgQAAAAPcG9vbENvbmZpZ1ZhbHVlCQEAAAAFdmFsdWUAAAABCQAEHQAAAAIFAAAABHRoaXMJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAAGkAAAAAQUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQEAAAAFGFtb3VudEFzc2V0c0RlY2ltYWxzAwkAAAAAAAACBQAAAA5hbW91bnRBc3NldFN0cgIAAAAFV0FWRVMFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEJAAJZAAAAAQUAAAAOYW1vdW50QXNzZXRTdHIAAAAIZGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAE3ByaWNlQXNzZXRzRGVjaW1hbHMDCQAAAAAAAAIFAAAADXByaWNlQXNzZXRTdHICAAAABVdBVkVTBQAAABFkZWNpbWFsc011bHRQcmljZQkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAACAkBAAAABXZhbHVlAAAAAQkAA+wAAAABCQACWQAAAAEFAAAADXByaWNlQXNzZXRTdHIAAAAIZGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04EAAAAEmxwQXNzZXRJc3N1ZUFjdGlvbgkABEIAAAAFBQAAAAtscEFzc2V0TmFtZQUAAAAMbHBBc3NldERlc2NyAAAAAAAAAAABAAAAAAAAAAAIBgQAAAAJbHBBc3NldElkCQAEOAAAAAEFAAAAEmxwQXNzZXRJc3N1ZUFjdGlvbgQAAAAMbHBBc3NldElkU3RyCQACWAAAAAEFAAAACWxwQXNzZXRJZAQAAAAYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0CQAD/AAAAAQJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAC3Bvb2xBZGRyZXNzAgAAAAhhY3RpdmF0ZQkABEwAAAACBQAAAA5hbW91bnRBc3NldFN0cgkABEwAAAACBQAAAA1wcmljZUFzc2V0U3RyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAYcG9vbEFjdGl2YXRlSW52b2tlUmVzdWx0BQAAABhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQDCQEAAAACIT0AAAACBQAAABhwb29sQWN0aXZhdGVJbnZva2VSZXN1bHQCAAAAB3N1Y2Nlc3MJAAACAAAAAQIAAAAjUG9vbCBpbml0aWFsaXNhdGlvbiBlcnJvciBoYXBwZW5lZC4EAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAAAAEAAAAGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgkAA/wAAAAEBQAAABNhc3NldHNTdG9yZUNvbnRyYWN0AgAAAA5jcmVhdGVPclVwZGF0ZQkABEwAAAACBQAAAAxscEFzc2V0SWRTdHIJAARMAAAAAgUAAAALbHBBc3NldE5hbWUJAARMAAAAAgcFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABhjcmVhdGVPclVwZGF0ZUxwQXNzZXRJbnYFAAAAGGNyZWF0ZU9yVXBkYXRlTHBBc3NldEludgQAAAASYWRkUG9vbHNMcExhYmVsSW52CQAD/AAAAAQFAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QCAAAACGFkZExhYmVsCQAETAAAAAIFAAAADGxwQXNzZXRJZFN0cgkABEwAAAACBQAAAAxsYWJlbFBvb2xzTHAFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABJhZGRQb29sc0xwTGFiZWxJbnYFAAAAEmFkZFBvb2xzTHBMYWJlbEludgQAAAAKc2V0TG9nb0ludgkAA/wAAAAEBQAAABNhc3NldHNTdG9yZUNvbnRyYWN0AgAAAAdzZXRMb2dvCQAETAAAAAIFAAAADGxwQXNzZXRJZFN0cgkABEwAAAACBQAAAARsb2dvBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAKc2V0TG9nb0ludgUAAAAKc2V0TG9nb0ludgQAAAAQYWRkQXNzZXRzTGlua0ludgkAA/wAAAAEBQAAABNhc3NldHNTdG9yZUNvbnRyYWN0AgAAAA1hZGRBc3NldHNMaW5rCQAETAAAAAIFAAAADmFtb3VudEFzc2V0U3RyCQAETAAAAAIFAAAADXByaWNlQXNzZXRTdHIJAARMAAAAAgUAAAAMbHBBc3NldElkU3RyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAQYWRkQXNzZXRzTGlua0ludgUAAAAQYWRkQXNzZXRzTGlua0ludgQAAAAbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52CQAD/AAAAAQFAAAAE2Fzc2V0c1N0b3JlQ29udHJhY3QCAAAAGGluY3JlYXNlQXNzZXRQb29sc051bWJlcgkABEwAAAACBQAAAA5hbW91bnRBc3NldFN0cgUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAAG2luY3JlYXNlQXNzZXRQb29sc051bWJlckludgUAAAAbaW5jcmVhc2VBc3NldFBvb2xzTnVtYmVySW52CQAFFAAAAAIJAAROAAAAAgkABE4AAAACCAUAAAAXaW50ZXJuYWxBbW91bnRBc3NldERhdGEAAAACXzIIBQAAABZpbnRlcm5hbFByaWNlQXNzZXREYXRhAAAAAl8yCQAETAAAAAIFAAAAEmxwQXNzZXRJc3N1ZUFjdGlvbgkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAACWxwQXNzZXRJZAAAAAAAAAAAAQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5UG9vbENvbmZpZwAAAAIJAAGkAAAAAQUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCQABpAAAAAEFAAAAFGludGVybmFsUHJpY2VBc3NldElkCQEAAAALZGF0YVBvb2xDZmcAAAALBQAAAAtwb29sQWRkcmVzcwkAAaQAAAABBQAAAApQb29sQWN0aXZlBQAAAAxscEFzc2V0SWRTdHIFAAAADmFtb3VudEFzc2V0U3RyBQAAAA1wcmljZUFzc2V0U3RyBQAAABRhbW91bnRBc3NldHNEZWNpbWFscwUAAAATcHJpY2VBc3NldHNEZWNpbWFscwUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAACHBvb2xUeXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB1rZXlNYXBwaW5nTHBBc3NldFRvUG9vbEFzc2V0cwAAAAEFAAAADGxwQXNzZXRJZFN0cgkBAAAAFWRhdGFNYXBwaW5nUG9vbEFzc2V0cwAAAAIFAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAHWtleU1hcHBpbmdQb29sQXNzZXRzVG9McGFzc2V0AAAAAgkAAaQAAAABBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQJAAGkAAAAAQUAAAAUaW50ZXJuYWxQcmljZUFzc2V0SWQJAAEsAAAAAgIAAAAEJXNfXwUAAAAMbHBBc3NldElkU3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAClrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cwAAAAEFAAAAC3Bvb2xBZGRyZXNzCQEAAAAVZGF0YU1hcHBpbmdQb29sQXNzZXRzAAAAAgUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkBQAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAApa2V5TWFwcGluZ1Bvb2xBc3NldHNUb1Bvb2xDb250cmFjdEFkZHJlc3MAAAACBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQFAAAAFGludGVybmFsUHJpY2VBc3NldElkBQAAAAtwb29sQWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQUAAAAMbHBBc3NldElkU3RyBQAAAAtwb29sQWRkcmVzcwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAAAAAEFAAAAC3Bvb2xBZGRyZXNzBQAAAAxscEFzc2V0SWRTdHIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABBQAAAAtwb29sQWRkcmVzcwUAAAAKcG9vbFdlaWdodAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAPa2V5THBUb2tlbnNMaXN0AAAAAAkBAAAAF2NyZWF0ZUxwVG9rZW5zTGlzdEVudHJ5AAAAAQUAAAAMbHBBc3NldElkU3RyBQAAAANuaWwFAAAADGxwQXNzZXRJZFN0cgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKbWFuYWdlUG9vbAAAAAIAAAALcG9vbEFkZHJlc3MAAAAJbmV3U3RhdHVzBAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAAApwb29sQ29uZmlnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAEFAAAAC3Bvb2xBZGRyZXNzBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAADWlkeFBvb2xTdGF0dXMEAAAADGxwQXNzZXRJZFN0cgkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAABBpZHhQb29sTFBBc3NldElkBAAAAA5hbW91bnRBc3NldFN0cgkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAA1pZHhBbXRBc3NldElkBAAAAA1wcmljZUFzc2V0U3RyCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAUYW1vdW50QXNzZXRzRGVjaW1hbHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAA5pZHhBbXRBc3NldERjbQQAAAATcHJpY2VBc3NldHNEZWNpbWFscwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAAFWludGVybmFsQW1vdW50QXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAADmlkeElBbXRBc3NldElkBAAAABRpbnRlcm5hbFByaWNlQXNzZXRJZAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACnBvb2xDb25maWcFAAAAEGlkeElQcmljZUFzc2V0SWQEAAAACmxwQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAA1pZHhMUEFzc2V0RGNtBAAAAAhwb29sVHlwZQkAAZEAAAACBQAAAApwb29sQ29uZmlnBQAAAAtpZHhQb29sVHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5UG9vbENvbmZpZwAAAAIJAAGkAAAAAQUAAAAVaW50ZXJuYWxBbW91bnRBc3NldElkCQABpAAAAAEFAAAAFGludGVybmFsUHJpY2VBc3NldElkCQEAAAALZGF0YVBvb2xDZmcAAAALBQAAAAtwb29sQWRkcmVzcwkAAaQAAAABBQAAAAluZXdTdGF0dXMFAAAADGxwQXNzZXRJZFN0cgUAAAAOYW1vdW50QXNzZXRTdHIFAAAADXByaWNlQXNzZXRTdHIFAAAAFGFtb3VudEFzc2V0c0RlY2ltYWxzBQAAABNwcmljZUFzc2V0c0RlY2ltYWxzBQAAABVpbnRlcm5hbEFtb3VudEFzc2V0SWQFAAAAFGludGVybmFsUHJpY2VBc3NldElkBQAAAApscEFzc2V0RGNtBQAAAAhwb29sVHlwZQUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAARlbWl0AAAAAQAAAAxhbW91bnRUb0VtaXQEAAAABmNhbGxlcggFAAAAAWkAAAAGY2FsbGVyBAAAAAxvcmlnaW5DYWxsZXIIBQAAAAFpAAAADG9yaWdpbkNhbGxlcgQAAAAQbHBBc3NldFJlcXVlc3RlZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAQAAAB9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AAAAAQkABCUAAAABBQAAAAZjYWxsZXICAAAAHUludmFsaWQgTFAgYWRkcmVzcyBjYWxsZWQgbWUuBAAAAAdscEFzc2V0CQACWQAAAAEFAAAAEGxwQXNzZXRSZXF1ZXN0ZWQEAAAAC2xlZ2FjeVBvb2xzCQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQiAAAAAQkBAAAADmtleUxlZ2FjeVBvb2xzAAAAAAUAAAAFRU1QVFkFAAAAA1NFUAQAAAAVbGVnYWN5RmFjdG9yeUNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQiAAAAAQkBAAAAGGtleUxlZ2FjeUZhY3RvcnlDb250cmFjdAAAAAACAAAAKExlZ2FjeSBmYWN0b3J5IGNvbnRyYWN0IGRvZXMgbm90IGV4aXN0cy4DCQAAZwAAAAIAAAAAAAAAAAAFAAAADGFtb3VudFRvRW1pdAUAAAADbmlsAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAAC2xlZ2FjeVBvb2xzCQAEJQAAAAEFAAAABmNhbGxlcgkABRQAAAACBQAAAANuaWwFAAAAFWxlZ2FjeUZhY3RvcnlDb250cmFjdAkABRQAAAACCQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAHbHBBc3NldAUAAAAMYW1vdW50VG9FbWl0BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvRW1pdAUAAAAHbHBBc3NldAUAAAADbmlsAgAAAAdzdWNjZXNzAAAAAWkBAAAABGJ1cm4AAAABAAAADGFtb3VudFRvQnVybgQAAAAGY2FsbGVyCAUAAAABaQAAAAZjYWxsZXIEAAAADG9yaWdpbkNhbGxlcggFAAAAAWkAAAAMb3JpZ2luQ2FsbGVyBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAA1wYXltZW50QW1vdW50CQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAZhbW91bnQEAAAAD2luQW1vdW50QXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBAAAABpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEIgAAAAEJAQAAAB9rZXlNYXBwaW5nUG9vbENvbnRyYWN0VG9MUEFzc2V0AAAAAQkABCUAAAABBQAAAAZjYWxsZXICAAAAHUludmFsaWQgTFAgYWRkcmVzcyBjYWxsZWQgbWUuAwkBAAAAAiE9AAAAAgUAAAAPaW5BbW91bnRBc3NldElkBQAAABpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkAAAIAAAABAgAAABVJbnZhbGlkIGFzc2V0IHBhc3NlZC4DCQEAAAACIT0AAAACBQAAAAxhbW91bnRUb0J1cm4FAAAADXBheW1lbnRBbW91bnQJAAACAAAAAQIAAAAWSW52YWxpZCBhbW91bnQgcGFzc2VkLgQAAAAHbHBBc3NldAkAAlkAAAABBQAAABpscEFzc2V0UmVxdWVzdGVkRm9yQnVybmluZwkABRQAAAACCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAAHbHBBc3NldAUAAAAMYW1vdW50VG9CdXJuBQAAAANuaWwCAAAAB3N1Y2Nlc3MAAAABaQEAAAAMbW9kaWZ5V2VpZ2h0AAAAAgAAAAlscEFzc2V0SWQAAAAFc2hhcmUEAAAAC2NoZWNrQ2FsbGVyAwkAAAAAAAACCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAAAAAgAAAAAGCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAqa2V5TWFwcGluZ1Bvb2xMUEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAAAAAQUAAAAJbHBBc3NldElkBAAAAA1wb29sV2VpZ2h0S2V5CQEAAAAPa2V5UG9vbFRvV2VpZ2h0AAAAAQUAAAATcG9vbENvbnRyYWN0QWRkcmVzcwQAAAAMZ3d4V2VpZ2h0S2V5CQEAAAAPa2V5UG9vbFRvV2VpZ2h0AAAAAQUAAAAOR1dYdmlydHVhbFBPT0wEAAAACWd3eFdlaWdodAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABBQAAAAxnd3hXZWlnaHRLZXkAAAAAAAAAAAAEAAAACnBvb2xXZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQUAAAANcG9vbFdlaWdodEtleQAAAAAAAAAAAAQAAAANcG9vbFdlaWdodE5ldwUAAAAFc2hhcmUEAAAACmZhY3RvcnlDZmcJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABBrZXlGYWN0b3J5Q29uZmlnAAAAAAUAAAADU0VQBAAAAA9zdGFraW5nQ29udHJhY3QJAQAAABdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcEAAAAEW9uTW9kaWZ5V2VpZ2h0SW52CQAD/AAAAAQFAAAAD3N0YWtpbmdDb250cmFjdAIAAAAOb25Nb2RpZnlXZWlnaHQJAARMAAAAAgUAAAAJbHBBc3NldElkCQAETAAAAAIFAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABFvbk1vZGlmeVdlaWdodEludgUAAAARb25Nb2RpZnlXZWlnaHRJbnYEAAAAFWd3eFZpcnR1YWxQb29sQWN0aW9ucwMJAAAAAAAAAgUAAAAJZ3d4V2VpZ2h0AAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADGd3eFdlaWdodEtleQAAAAAAAAAAAAUAAAADbmlsBAAAABRwb29sV2VpZ2h0SGlzdG9yeUtleQkBAAAAFmtleVBvb2xUb1dlaWdodEhpc3RvcnkAAAACBQAAABNwb29sQ29udHJhY3RBZGRyZXNzAAAAAAAAAAAABAAAABdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdAkABB8AAAABBQAAABRwb29sV2VpZ2h0SGlzdG9yeUtleQQAAAAYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zAwkAAAAAAAACBQAAABdwb29sV2VpZ2h0SGlzdG9yeU9yVW5pdAUAAAAEdW5pdAUAAAADbmlsCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAFHBvb2xXZWlnaHRIaXN0b3J5S2V5BQAAAANuaWwJAAROAAAAAgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA1wb29sV2VpZ2h0S2V5BQAAAA1wb29sV2VpZ2h0TmV3BQAAAANuaWwFAAAAFWd3eFZpcnR1YWxQb29sQWN0aW9ucwUAAAAYcG9vbFdlaWdodEhpc3RvcnlBY3Rpb25zCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANbW9kaWZ5V2VpZ2h0cwAAAAQAAAAOYnRjUG9vbEFkZHJlc3MAAAAOZXRoUG9vbEFkZHJlc3MAAAARZXRoQnRjUG9vbEFkZHJlc3MAAAATdXNkY1VzZHRQb29sQWRkcmVzcwQAAAALY2hlY2tDYWxsZXIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAAPZXRoQnRjV2VpZ2h0TmV3CQAAaQAAAAIJAABoAAAAAgAAAAAAAAAABQUAAAAOUE9PTFdFSUdIVE1VTFQAAAAAAAAAAGQEAAAAEXVzZGNVc2R0V2VpZ2h0TmV3CQAAaQAAAAIJAABoAAAAAgAAAAAAAAAABQUAAAAOUE9PTFdFSUdIVE1VTFQAAAAAAAAAAGQEAAAAD3dlaWdodERlY3JlbWVudAkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAUFAAAADlBPT0xXRUlHSFRNVUxUAAAAAAAAAABkBAAAAApmYWN0b3J5Q2ZnCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAAFAAAAA1NFUAQAAAALc3Rha2luZ0RhcHAJAQAAABdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAAAAAEFAAAACmZhY3RvcnlDZmcEAAAADWd3eFJld2FyZERhcHAJAQAAABlnZXRHd3hSZXdhcmRBZGRyZXNzT3JGYWlsAAAAAQUAAAAKZmFjdG9yeUNmZwQAAAAMYnRjV2VpZ2h0S0VZCQEAAAAPa2V5UG9vbFRvV2VpZ2h0AAAAAQUAAAAOYnRjUG9vbEFkZHJlc3MEAAAADGV0aFdlaWdodEtFWQkBAAAAD2tleVBvb2xUb1dlaWdodAAAAAEFAAAADmV0aFBvb2xBZGRyZXNzBAAAAA9ldGhCdGNXZWlnaHRLRVkJAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABBQAAABFldGhCdGNQb29sQWRkcmVzcwQAAAARdXNkY1VzZHRXZWlnaHRLRVkJAQAAAA9rZXlQb29sVG9XZWlnaHQAAAABBQAAABN1c2RjVXNkdFBvb2xBZGRyZXNzBAAAAAlidGNXZWlnaHQJAQAAAAxnZXRJbnRPckZhaWwAAAABBQAAAAxidGNXZWlnaHRLRVkEAAAACWV0aFdlaWdodAkBAAAADGdldEludE9yRmFpbAAAAAEFAAAADGV0aFdlaWdodEtFWQQAAAAMYnRjV2VpZ2h0TmV3CQAAZQAAAAIFAAAACWJ0Y1dlaWdodAUAAAAPd2VpZ2h0RGVjcmVtZW50BAAAAAxldGhXZWlnaHROZXcJAABlAAAAAgUAAAAJZXRoV2VpZ2h0BQAAAA93ZWlnaHREZWNyZW1lbnQDCQAAZwAAAAIAAAAAAAAAAAAFAAAADGJ0Y1dlaWdodE5ldwkAAAIAAAABCQABLAAAAAICAAAAFmludmFsaWQgYnRjV2VpZ2h0TmV3OiAJAAGkAAAAAQUAAAAMYnRjV2VpZ2h0TmV3AwkAAGcAAAACAAAAAAAAAAAABQAAAAxldGhXZWlnaHROZXcJAAACAAAAAQkAASwAAAACAgAAABZpbnZhbGlkIGV0aFdlaWdodE5ldzogCQABpAAAAAEFAAAADGV0aFdlaWdodE5ldwQAAAAPYnRjTHBBc3NldElkU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQAAAABBQAAAA5idGNQb29sQWRkcmVzcwQAAAAPZXRoTHBBc3NldElkU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQAAAABBQAAAA5ldGhQb29sQWRkcmVzcwQAAAASZXRoQnRjTHBBc3NldElkU3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAH2tleU1hcHBpbmdQb29sQ29udHJhY3RUb0xQQXNzZXQAAAABBQAAABFldGhCdGNQb29sQWRkcmVzcwQAAAAUdXNkY1VzZHRMcEFzc2V0SWRTdHIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAfa2V5TWFwcGluZ1Bvb2xDb250cmFjdFRvTFBBc3NldAAAAAEFAAAAE3VzZGNVc2R0UG9vbEFkZHJlc3MEAAAAEW9uTW9kaWZ5V2VpZ2h0QnRjCQAD/AAAAAQFAAAAC3N0YWtpbmdEYXBwAgAAAA5vbk1vZGlmeVdlaWdodAkABEwAAAACBQAAAA9idGNMcEFzc2V0SWRTdHIJAARMAAAAAgUAAAAOYnRjUG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABFvbk1vZGlmeVdlaWdodEJ0YwUAAAARb25Nb2RpZnlXZWlnaHRCdGMEAAAAEW9uTW9kaWZ5V2VpZ2h0RXRoCQAD/AAAAAQFAAAAC3N0YWtpbmdEYXBwAgAAAA5vbk1vZGlmeVdlaWdodAkABEwAAAACBQAAAA9ldGhMcEFzc2V0SWRTdHIJAARMAAAAAgUAAAAOZXRoUG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABFvbk1vZGlmeVdlaWdodEV0aAUAAAARb25Nb2RpZnlXZWlnaHRFdGgEAAAAFG9uTW9kaWZ5V2VpZ2h0RXRoQnRjCQAD/AAAAAQFAAAAC3N0YWtpbmdEYXBwAgAAAA5vbk1vZGlmeVdlaWdodAkABEwAAAACBQAAABJldGhCdGNMcEFzc2V0SWRTdHIJAARMAAAAAgUAAAARZXRoQnRjUG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABRvbk1vZGlmeVdlaWdodEV0aEJ0YwUAAAAUb25Nb2RpZnlXZWlnaHRFdGhCdGMEAAAAFm9uTW9kaWZ5V2VpZ2h0VXNkY1VzZHQJAAP8AAAABAUAAAALc3Rha2luZ0RhcHACAAAADm9uTW9kaWZ5V2VpZ2h0CQAETAAAAAIFAAAAFHVzZGNVc2R0THBBc3NldElkU3RyCQAETAAAAAIFAAAAE3VzZGNVc2R0UG9vbEFkZHJlc3MFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABZvbk1vZGlmeVdlaWdodFVzZGNVc2R0BQAAABZvbk1vZGlmeVdlaWdodFVzZGNVc2R0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAxidGNXZWlnaHRLRVkFAAAADGJ0Y1dlaWdodE5ldwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMZXRoV2VpZ2h0S0VZBQAAAAxldGhXZWlnaHROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2V0aEJ0Y1dlaWdodEtFWQUAAAAPZXRoQnRjV2VpZ2h0TmV3CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABF1c2RjVXNkdFdlaWdodEtFWQUAAAARdXNkY1VzZHRXZWlnaHROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AAAAAgUAAAAOYnRjUG9vbEFkZHJlc3MAAAAAAAAAAAAFAAAACWJ0Y1dlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleVBvb2xUb1dlaWdodEhpc3RvcnkAAAACBQAAAA5ldGhQb29sQWRkcmVzcwAAAAAAAAAAAAUAAAAJZXRoV2VpZ2h0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWa2V5UG9vbFRvV2VpZ2h0SGlzdG9yeQAAAAIFAAAAEWV0aEJ0Y1Bvb2xBZGRyZXNzAAAAAAAAAAAABQAAAA9ldGhCdGNXZWlnaHROZXcJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlQb29sVG9XZWlnaHRIaXN0b3J5AAAAAgUAAAATdXNkY1VzZHRQb29sQWRkcmVzcwAAAAAAAAAAAAUAAAARdXNkY1VzZHRXZWlnaHROZXcFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAGGNoZWNrV3hFbWlzc2lvblBvb2xMYWJlbAAAAAIAAAANYW1vdW50QXNzZXRJZAAAAAxwcmljZUFzc2V0SWQEAAAACWhhdmVMYWJlbAQAAAAHJG1hdGNoMAkABCAAAAABCQEAAAANa2V5V3hFbWlzc2lvbgAAAAIFAAAADWFtb3VudEFzc2V0SWQFAAAADHByaWNlQXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABYgUAAAAHJG1hdGNoMAUAAAABYgcJAAUUAAAAAgUAAAADbmlsBQAAAAloYXZlTGFiZWwAAAABaQEAAAAWc2V0V3hFbWlzc2lvblBvb2xMYWJlbAAAAAIAAAANYW1vdW50QXNzZXRJZAAAAAxwcmljZUFzc2V0SWQEAAAAC2NoZWNrQ2FsbGVyCQEAAAAJbXVzdEFkbWluAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyCQAFFAAAAAIJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAA1rZXlXeEVtaXNzaW9uAAAAAgUAAAANYW1vdW50QXNzZXRJZAUAAAAMcHJpY2VBc3NldElkBgUAAAADbmlsBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAABlkZWxldGVXeEVtaXNzaW9uUG9vbExhYmVsAAAAAgAAAA1hbW91bnRBc3NldElkAAAADHByaWNlQXNzZXRJZAQAAAALY2hlY2tDYWxsZXIDCQEAAAAIbXVzdFRoaXMAAAABBQAAAAFpBgkBAAAACW11c3RBZG1pbgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgkABRQAAAACCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAA1rZXlXeEVtaXNzaW9uAAAAAgUAAAANYW1vdW50QXNzZXRJZAUAAAAMcHJpY2VBc3NldElkBQAAAANuaWwFAAAABHVuaXQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAEm9uVmVyaWZpY2F0aW9uTG9zcwAAAAEAAAAHYXNzZXRJZAQAAAALY2hlY2tDYWxsZXIDCQAAAAAAAAIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAAWa2V5QXNzZXRzU3RvcmVDb250cmFjdAAAAAACAAAAAAYJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkDCQAAAAAAAAIFAAAAC2NoZWNrQ2FsbGVyBQAAAAtjaGVja0NhbGxlcgQAAAALcHJpY2VBc3NldHMJAQAAAA5nZXRQcmljZUFzc2V0cwAAAAAEAAAAFGNoZWNrUHJpY2VBc3NldHNTaXplAwkAAGYAAAACCQABkAAAAAEFAAAAC3ByaWNlQXNzZXRzAAAAAAAAAAAABgkAAAIAAAABAgAAABRpbnZhbGlkIHByaWNlIGFzc2V0cwMJAAAAAAAAAgUAAAAUY2hlY2tQcmljZUFzc2V0c1NpemUFAAAAFGNoZWNrUHJpY2VBc3NldHNTaXplCgEAAAACY2IAAAACAAAAA2FjYwAAAApwcmljZUFzc2V0BAAAAAFyCQAD/AAAAAQFAAAABHRoaXMCAAAAGWRlbGV0ZVd4RW1pc3Npb25Qb29sTGFiZWwJAARMAAAAAgUAAAAHYXNzZXRJZAkABEwAAAACBQAAAApwcmljZUFzc2V0BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAABcgUAAAABcgUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAAAAB2FjdGlvbnMKAAAAAAIkbAUAAAALcHJpY2VBc3NldHMKAAAAAAIkcwkAAZAAAAABBQAAAAIkbAoAAAAABSRhY2MwBQAAAAR1bml0CgEAAAAFJGYwXzEAAAACAAAAAiRhAAAAAiRpAwkAAGcAAAACBQAAAAIkaQUAAAACJHMFAAAAAiRhCQEAAAACY2IAAAACBQAAAAIkYQkAAZEAAAACBQAAAAIkbAUAAAACJGkKAQAAAAUkZjBfMgAAAAIAAAACJGEAAAACJGkDCQAAZwAAAAIFAAAAAiRpBQAAAAIkcwUAAAACJGEJAAACAAAAAQIAAAATTGlzdCBzaXplIGV4Y2VlZHMgMQkBAAAABSRmMF8yAAAAAgkBAAAABSRmMF8xAAAAAgUAAAAFJGFjYzAAAAAAAAAAAAAAAAAAAAAAAAEDCQAAAAAAAAIFAAAAB2FjdGlvbnMFAAAAB2FjdGlvbnMJAAUUAAAAAgUAAAADbmlsBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAPdGFyZ2V0UHVibGljS2V5BAAAAAckbWF0Y2gwCQEAAAAWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAACkJ5dGVWZWN0b3IEAAAAAnBrBQAAAAckbWF0Y2gwBQAAAAJwawMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAEVW5pdAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAAD3RhcmdldFB1YmxpY0tledwGcew=", "chainId": 87, "height": 3266767, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: BPWWdi3NAM7orYz5wjoXC17BycEBzVVANFSd438T9SUM Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 5 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let SCALE8 = 8
5+
6+let MULT8 = 100000000
7+
8+let SCALE18 = 18
9+
10+let MULT18 = toBigInt(1000000000000000000)
11+
12+let POOLWEIGHTMULT = MULT8
13+
14+let GWXvirtualPOOL = "GWXvirtualPOOL"
15+
16+let labelPoolsLp = "POOLS_LP"
17+
18+let decimalsMultPrice = ((100 * 1000) * 1000)
19+
20+let SEP = "__"
21+
22+let EMPTY = ""
23+
24+let PoolActive = 1
25+
26+let PoolPutDisabled = 2
27+
28+let PoolMatcherDisabled = 3
29+
30+let PoolShutdown = 4
31+
32+let idxInternalAssetId = 1
33+
34+let idxResutActions = 2
35+
36+let idxIfAssetIdCalculationPerformed = 3
37+
38+let idxPoolAddress = 1
39+
40+let idxPoolStatus = 2
41+
42+let idxPoolLPAssetId = 3
43+
44+let idxAmtAssetId = 4
45+
46+let idxPriceAssetId = 5
47+
48+let idxAmtAssetDcm = 6
49+
50+let idxPriceAssetDcm = 7
51+
52+let idxIAmtAssetId = 8
53+
54+let idxIPriceAssetId = 9
55+
56+let idxLPAssetDcm = 10
57+
58+let idxPoolType = 11
59+
60+let poolLabelWxEmission = "WX_EMISSION"
61+
62+let validPoolLabels = [poolLabelWxEmission]
63+
64+func keyFactoryConfig () = "%s__factoryConfig"
65+
66+
67+func keyLpTokensList () = "%s__lpTokensList"
68+
69+
70+func keyPoolScriptHash () = "%s%s__pool__scriptHash"
71+
72+
73+func keyMatcherPub () = "%s%s__matcher__publicKey"
74+
75+
76+func keyLegacyFactoryContract () = "%s__legacyFactoryContract"
77+
78+
79+func keyLegacyPools () = "%s__legacyPools"
80+
81+
82+func keyManagerPublicKey () = "%s__managerPublicKey"
83+
84+
85+func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
86+
87+
88+func keyAdminPubKeys () = "%s__adminPubKeys"
89+
90+
91+func keyAssetsStoreContract () = "%s__assetsStoreContract"
92+
93+
94+func keyVotingEmissionContract () = "%s__votingEmissionContract"
95+
96+
97+func keyPriceAssets () = makeString(["%s", "priceAssets"], SEP)
98+
99+
100+func keyPriceDecimals () = "%s__priceDecimals"
101+
102+
103+func keyAllPoolsShutdown () = "%s__shutdown"
104+
105+
106+func keyNextInternalAssetId () = "%s__nextInternalAssetId"
107+
108+
109+func keyPoolToWeight (poolAddress) = ("%s%s__poolWeight__" + poolAddress)
110+
111+
112+func keyPoolToWeightHistory (poolAddress,num) = ((("%s%s__poolWeight__" + poolAddress) + "__") + toString(num))
113+
114+
115+func keyMappingsInternal2baseAssetId (internalBaseAsset) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(internalBaseAsset))
116+
117+
118+func keyMappingsBaseAsset2internalId (baseAssetStr) = ("%s%s%s__mappings__baseAsset2internalId__" + baseAssetStr)
119+
120+
121+func keyPoolConfig (amountAssetInternal,priceAssetInternal) = (((("%d%d%s__" + amountAssetInternal) + "__") + priceAssetInternal) + "__config")
122+
123+
124+func keyMappingLpAssetToPoolAssets (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2Pool")
125+
126+
127+func keyMappingPoolAssetsToLpasset (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + internalAmountAssetIdStr) + "__") + internalPriceAssetIdStr) + "__mappings__PoolAssets2LpAsset")
128+
129+
130+func keyMappingPoolContractAddressToPoolAssets (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2PoolAssets")
131+
132+
133+func keyMappingPoolAssetsToPoolContractAddress (internalAmountAssetIdStr,internalPriceAssetIdStr) = (((("%d%d%s%s__" + toString(internalAmountAssetIdStr)) + "__") + toString(internalPriceAssetIdStr)) + "__mappings__poolAssets2PoolContract")
134+
135+
136+func keyMappingPoolContractToLPAsset (poolContractAddress) = (("%s%s%s__" + poolContractAddress) + "__mappings__poolContract2LpAsset")
137+
138+
139+func keyMappingPoolLPAssetToPoolContractAddress (lpAssetStr) = (("%s%s%s__" + lpAssetStr) + "__mappings__lpAsset2PoolContract")
140+
141+
142+func keyWxEmission (amountAssetId,priceAssetId) = ((("%s%s%s__wxEmission__" + amountAssetId) + "__") + priceAssetId)
143+
144+
145+func getStringOrFail (key) = valueOrErrorMessage(getString(this, key), ("No data for this.key=" + key))
146+
147+
148+func getBooleanOrFail (key) = valueOrErrorMessage(getBoolean(this, key), ("No data for this.key=" + key))
149+
150+
151+func getIntOrFail (key) = valueOrErrorMessage(getInteger(this, key), ("No data for this.key=" + key))
152+
153+
154+let IdxFactoryCfgStakingDapp = 1
155+
156+let IdxFactoryCfgBoostingDapp = 2
157+
158+let IdxFactoryCfgIdoDapp = 3
159+
160+let IdxFactoryCfgTeamDapp = 4
161+
162+let IdxFactoryCfgEmissionDapp = 5
163+
164+let IdxFactoryCfgRestDapp = 6
165+
166+let IdxFactoryCfgSlippageDapp = 7
167+
168+let IdxFactoryCfgDaoDapp = 8
169+
170+let IdxFactoryCfgMarketingDapp = 9
171+
172+let IdxFactoryCfgGwxRewardDapp = 10
173+
174+let IdxFactoryCfgBirdsDapp = 11
175+
176+func getBoostingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgBoostingDapp])
177+
178+
179+func getEmissionAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgEmissionDapp])
180+
181+
182+func getStakingAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgStakingDapp])
183+
184+
185+func getGwxRewardAddressOrFail (factoryCfg) = addressFromStringValue(factoryCfg[IdxFactoryCfgGwxRewardDapp])
186+
187+
188+func getPriceAssets () = match getString(keyPriceAssets()) {
189+ case s: String =>
190+ if ((size(s) == 0))
191+ then nil
192+ else split(s, SEP)
193+ case _ =>
194+ nil
195+}
196+
197+
198+func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
199+ case s: String =>
200+ fromBase58String(s)
201+ case _: Unit =>
202+ unit
203+ case _ =>
204+ throw("Match error")
205+}
206+
207+
208+func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
209+ case s: String =>
210+ fromBase58String(s)
211+ case _: Unit =>
212+ unit
213+ case _ =>
214+ throw("Match error")
215+}
216+
217+
218+let permissionDeniedError = throw("Permission denied")
219+
220+func mustThis (i) = if ((i.caller == this))
221+ then true
222+ else permissionDeniedError
223+
224+
225+func mustManager (i) = match managerPublicKeyOrUnit() {
226+ case pk: ByteVector =>
227+ if ((i.callerPublicKey == pk))
228+ then true
229+ else permissionDeniedError
230+ case _: Unit =>
231+ mustThis(i)
232+ case _ =>
233+ throw("Match error")
234+}
235+
236+
237+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)
238+
239+
240+func dataFactoryCfg (stakingAddress,boostingAddress,idoContract,teamContract,emissionContract,restContract,slippageContract) = makeString(["%s%s%s%s%s%s", stakingAddress, boostingAddress, idoContract, teamContract, emissionContract, restContract, slippageContract], SEP)
241+
242+
243+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)
244+
245+
246+func dataMappingPoolAssets (internalAmountAssetStr,internalPriceAssetStr) = makeString(["%d%d", toString(internalAmountAssetStr), toString(internalPriceAssetStr)], SEP)
247+
248+
249+func getPoolConfig (poolAddress) = {
250+ let poolAssets = split(getStringOrFail(keyMappingPoolContractAddressToPoolAssets(poolAddress)), SEP)
251+ let amountAssetInternal = poolAssets[1]
252+ let priceAssetInternal = poolAssets[2]
253+ split(getStringOrFail(keyPoolConfig(amountAssetInternal, priceAssetInternal)), SEP)
254+ }
255+
256+
257+func getInternalAssetIdOrCreate (assetIdStr,incrementor) = {
258+ let internalAssetId = valueOrElse(getInteger(this, keyMappingsBaseAsset2internalId(assetIdStr)), 0)
259+ let currentIndexOfInternalId = valueOrElse(getInteger(this, keyNextInternalAssetId()), 0)
260+ let result = if ((internalAssetId == 0))
261+ then {
262+ let newInternalAssetId = (currentIndexOfInternalId + incrementor)
263+ $Tuple3(newInternalAssetId, [IntegerEntry(keyNextInternalAssetId(), newInternalAssetId), IntegerEntry(keyMappingsBaseAsset2internalId(assetIdStr), newInternalAssetId), StringEntry(keyMappingsInternal2baseAssetId(newInternalAssetId), assetIdStr)], true)
264+ }
265+ else $Tuple3(internalAssetId, nil, false)
266+ result
267+ }
268+
269+
270+func createLpTokensListEntry (newLpToken) = {
271+ let lpTokens = getString(this, keyLpTokensList())
272+ if (isDefined(lpTokens))
273+ then ((value(lpTokens) + SEP) + newLpToken)
274+ else newLpToken
275+ }
276+
277+
278+func mustAdmin (i) = {
279+ let adminPKs = split(valueOrElse(getString(keyAdminPubKeys()), EMPTY), SEP)
280+ if (containsElement(adminPKs, toBase58String(i.callerPublicKey)))
281+ then true
282+ else {
283+ let isManager = mustManager(i)
284+ if ((isManager == isManager))
285+ then true
286+ else throw("Strict value is not equal to itself.")
287+ }
288+ }
289+
290+
291+@Callable(i)
292+func constructor (stakingContract,boostingContract,idoContract,teamContract,emissionContract,restContract,slpipageContract,priceDecimals) = {
293+ let checkCaller = mustManager(i)
294+ if ((checkCaller == checkCaller))
295+ then [StringEntry(keyFactoryConfig(), dataFactoryCfg(stakingContract, boostingContract, idoContract, teamContract, emissionContract, restContract, slpipageContract)), IntegerEntry(keyPriceDecimals(), priceDecimals)]
296+ else throw("Strict value is not equal to itself.")
297+ }
298+
299+
300+
301+@Callable(i)
302+func constructorV2 (mathcherPub58Str) = {
303+ let checkCaller = mustManager(i)
304+ if ((checkCaller == checkCaller))
305+ then {
306+ let mathcerPub = addressFromPublicKey(fromBase58String(mathcherPub58Str))
307+ if ((mathcerPub == mathcerPub))
308+ then [StringEntry(keyMatcherPub(), mathcherPub58Str)]
309+ else throw("Strict value is not equal to itself.")
310+ }
311+ else throw("Strict value is not equal to itself.")
312+ }
313+
314+
315+
316+@Callable(i)
317+func constructorV3 (daoContract,marketingContract,gwxRewardsContract,birdsContract) = {
318+ let checkCaller = mustManager(i)
319+ if ((checkCaller == checkCaller))
320+ then {
321+ let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
322+[StringEntry(keyFactoryConfig(), dataFactoryCfgV3(factoryCfg[1], factoryCfg[2], factoryCfg[3], factoryCfg[4], factoryCfg[5], factoryCfg[6], factoryCfg[7], daoContract, marketingContract, gwxRewardsContract, birdsContract))]
323+ }
324+ else throw("Strict value is not equal to itself.")
325+ }
326+
327+
328+
329+@Callable(i)
330+func constructorV4 (legacyFactoryContract,legacyPools) = {
331+ let checkCaller = mustManager(i)
332+ if ((checkCaller == checkCaller))
333+ then [StringEntry(keyLegacyFactoryContract(), legacyFactoryContract), StringEntry(keyLegacyPools(), makeString(legacyPools, SEP))]
334+ else throw("Strict value is not equal to itself.")
335+ }
336+
337+
338+
339+@Callable(i)
340+func constructorV5 (assetsStoreContract) = {
341+ let checkCaller = mustManager(i)
342+ if ((checkCaller == checkCaller))
343+ then [StringEntry(keyAssetsStoreContract(), assetsStoreContract)]
344+ else throw("Strict value is not equal to itself.")
345+ }
346+
347+
348+
349+@Callable(i)
350+func constructorV6 (votingEmissionContract,priceAssets) = {
351+ let cheks = [mustManager(i), if ((addressFromString(votingEmissionContract) != unit))
352+ then true
353+ else "invalid voting emission contract address"]
354+ if ((cheks == cheks))
355+ then [StringEntry(keyVotingEmissionContract(), votingEmissionContract), StringEntry(keyPriceAssets(), makeString(priceAssets, SEP))]
356+ else throw("Strict value is not equal to itself.")
357+ }
358+
359+
360+
361+@Callable(i)
362+func setManager (pendingManagerPublicKey) = {
363+ let checkCaller = mustManager(i)
364+ if ((checkCaller == checkCaller))
365+ then {
366+ let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
367+ if ((checkManagerPublicKey == checkManagerPublicKey))
368+ then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
369+ else throw("Strict value is not equal to itself.")
370+ }
371+ else throw("Strict value is not equal to itself.")
372+ }
373+
374+
375+
376+@Callable(i)
377+func confirmManager () = {
378+ let pm = pendingManagerPublicKeyOrUnit()
379+ let hasPM = if (isDefined(pm))
380+ then true
381+ else throw("No pending manager")
382+ if ((hasPM == hasPM))
383+ then {
384+ let checkPM = if ((i.callerPublicKey == value(pm)))
385+ then true
386+ else throw("You are not pending manager")
387+ if ((checkPM == checkPM))
388+ then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
389+ else throw("Strict value is not equal to itself.")
390+ }
391+ else throw("Strict value is not equal to itself.")
392+ }
393+
394+
395+
396+@Callable(i)
397+func setAdmins (adminPubKeys) = {
398+ let checkCaller = mustManager(i)
399+ if ((checkCaller == checkCaller))
400+ then [StringEntry(keyAdminPubKeys(), makeString(adminPubKeys, SEP))]
401+ else throw("Strict value is not equal to itself.")
402+ }
403+
404+
405+
406+@Callable(i)
407+func activateNewPool (poolAddress,amountAssetStr,priceAssetStr,lpAssetName,lpAssetDescr,poolWeight,poolType,logo) = {
408+ let checkCaller = mustAdmin(i)
409+ if ((checkCaller == checkCaller))
410+ then if (isDefined(getString(keyMappingPoolContractAddressToPoolAssets(poolAddress))))
411+ then throw((("Pool address " + poolAddress) + " already registered."))
412+ else {
413+ let internalAmountAssetData = getInternalAssetIdOrCreate(amountAssetStr, 1)
414+ let internalAmountAssetId = internalAmountAssetData._1
415+ let internalPriceAssetData = getInternalAssetIdOrCreate(priceAssetStr, if (internalAmountAssetData._3)
416+ then 2
417+ else 1)
418+ let internalPriceAssetId = internalPriceAssetData._1
419+ let poolAccountScriptHash = valueOrErrorMessage(scriptHash(addressFromStringValue(poolAddress)), ("No script has been found on pool account " + poolAddress))
420+ let ethalonPoolAccountScriptHash = getBinaryValue(keyPoolScriptHash())
421+ let poolConfig = getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)))
422+ if (isDefined(poolConfig))
423+ then throw((((("Pool " + amountAssetStr) + "/") + priceAssetStr) + " has already been activated."))
424+ else {
425+ let poolConfigValue = value(getString(this, keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId))))
426+ let amountAssetsDecimals = if ((amountAssetStr == "WAVES"))
427+ then decimalsMultPrice
428+ else pow(10, 0, value(assetInfo(fromBase58String(amountAssetStr))).decimals, 0, 0, DOWN)
429+ let priceAssetsDecimals = if ((priceAssetStr == "WAVES"))
430+ then decimalsMultPrice
431+ else pow(10, 0, value(assetInfo(fromBase58String(priceAssetStr))).decimals, 0, 0, DOWN)
432+ let lpAssetIssueAction = Issue(lpAssetName, lpAssetDescr, 1, 8, true)
433+ let lpAssetId = calculateAssetId(lpAssetIssueAction)
434+ let lpAssetIdStr = toBase58String(lpAssetId)
435+ let poolActivateInvokeResult = invoke(addressFromStringValue(poolAddress), "activate", [amountAssetStr, priceAssetStr], nil)
436+ if ((poolActivateInvokeResult == poolActivateInvokeResult))
437+ then if ((poolActivateInvokeResult != "success"))
438+ then throw("Pool initialisation error happened.")
439+ else {
440+ let assetsStoreContract = addressFromStringValue(getStringOrFail(keyAssetsStoreContract()))
441+ let createOrUpdateLpAssetInv = invoke(assetsStoreContract, "createOrUpdate", [lpAssetIdStr, lpAssetName, false], nil)
442+ if ((createOrUpdateLpAssetInv == createOrUpdateLpAssetInv))
443+ then {
444+ let addPoolsLpLabelInv = invoke(assetsStoreContract, "addLabel", [lpAssetIdStr, labelPoolsLp], nil)
445+ if ((addPoolsLpLabelInv == addPoolsLpLabelInv))
446+ then {
447+ let setLogoInv = invoke(assetsStoreContract, "setLogo", [lpAssetIdStr, logo], nil)
448+ if ((setLogoInv == setLogoInv))
449+ then {
450+ let addAssetsLinkInv = invoke(assetsStoreContract, "addAssetsLink", [amountAssetStr, priceAssetStr, lpAssetIdStr], nil)
451+ if ((addAssetsLinkInv == addAssetsLinkInv))
452+ then {
453+ let increaseAssetPoolsNumberInv = invoke(assetsStoreContract, "increaseAssetPoolsNumber", [amountAssetStr], nil)
454+ if ((increaseAssetPoolsNumberInv == increaseAssetPoolsNumberInv))
455+ 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(keyMappingPoolContractToLPAsset(poolAddress), lpAssetIdStr), IntegerEntry(keyPoolToWeight(poolAddress), poolWeight), StringEntry(keyLpTokensList(), createLpTokensListEntry(lpAssetIdStr))]), lpAssetIdStr)
456+ else throw("Strict value is not equal to itself.")
457+ }
458+ else throw("Strict value is not equal to itself.")
459+ }
460+ else throw("Strict value is not equal to itself.")
461+ }
462+ else throw("Strict value is not equal to itself.")
463+ }
464+ else throw("Strict value is not equal to itself.")
465+ }
466+ else throw("Strict value is not equal to itself.")
467+ }
468+ }
469+ else throw("Strict value is not equal to itself.")
470+ }
471+
472+
473+
474+@Callable(i)
475+func managePool (poolAddress,newStatus) = {
476+ let checkCaller = mustManager(i)
477+ if ((checkCaller == checkCaller))
478+ then {
479+ let poolConfig = getPoolConfig(poolAddress)
480+ let poolStatus = poolConfig[idxPoolStatus]
481+ let lpAssetIdStr = poolConfig[idxPoolLPAssetId]
482+ let amountAssetStr = poolConfig[idxAmtAssetId]
483+ let priceAssetStr = poolConfig[idxPriceAssetId]
484+ let amountAssetsDecimals = parseIntValue(poolConfig[idxAmtAssetDcm])
485+ let priceAssetsDecimals = parseIntValue(poolConfig[idxPriceAssetDcm])
486+ let internalAmountAssetId = parseIntValue(poolConfig[idxIAmtAssetId])
487+ let internalPriceAssetId = parseIntValue(poolConfig[idxIPriceAssetId])
488+ let lpAssetDcm = parseIntValue(poolConfig[idxLPAssetDcm])
489+ let poolType = poolConfig[idxPoolType]
490+[StringEntry(keyPoolConfig(toString(internalAmountAssetId), toString(internalPriceAssetId)), dataPoolCfg(poolAddress, toString(newStatus), lpAssetIdStr, amountAssetStr, priceAssetStr, amountAssetsDecimals, priceAssetsDecimals, internalAmountAssetId, internalPriceAssetId, lpAssetDcm, poolType))]
491+ }
492+ else throw("Strict value is not equal to itself.")
493+ }
494+
495+
496+
497+@Callable(i)
498+func emit (amountToEmit) = {
499+ let caller = i.caller
500+ let originCaller = i.originCaller
501+ let lpAssetRequested = valueOrErrorMessage(getString(keyMappingPoolContractToLPAsset(toString(caller))), "Invalid LP address called me.")
502+ let lpAsset = fromBase58String(lpAssetRequested)
503+ let legacyPools = split(valueOrElse(getString(keyLegacyPools()), EMPTY), SEP)
504+ let legacyFactoryContract = addressFromStringValue(valueOrErrorMessage(getString(keyLegacyFactoryContract()), "Legacy factory contract does not exists."))
505+ if ((0 >= amountToEmit))
506+ then nil
507+ else if (containsElement(legacyPools, toString(caller)))
508+ then $Tuple2(nil, legacyFactoryContract)
509+ else $Tuple2([Reissue(lpAsset, amountToEmit, true), ScriptTransfer(i.caller, amountToEmit, lpAsset)], "success")
510+ }
511+
512+
513+
514+@Callable(i)
515+func burn (amountToBurn) = {
516+ let caller = i.caller
517+ let originCaller = i.originCaller
518+ let payment = value(i.payments[0])
519+ let paymentAmount = value(payment.amount)
520+ let inAmountAssetId = toBase58String(value(payment.assetId))
521+ let lpAssetRequestedForBurning = valueOrErrorMessage(getString(keyMappingPoolContractToLPAsset(toString(caller))), "Invalid LP address called me.")
522+ if ((inAmountAssetId != lpAssetRequestedForBurning))
523+ then throw("Invalid asset passed.")
524+ else if ((amountToBurn != paymentAmount))
525+ then throw("Invalid amount passed.")
526+ else {
527+ let lpAsset = fromBase58String(lpAssetRequestedForBurning)
528+ $Tuple2([Burn(lpAsset, amountToBurn)], "success")
529+ }
530+ }
531+
532+
533+
534+@Callable(i)
535+func modifyWeight (lpAssetId,share) = {
536+ let checkCaller = if ((toBase58String(i.caller.bytes) == valueOrElse(getString(this, keyVotingEmissionContract()), "")))
537+ then true
538+ else mustManager(i)
539+ if ((checkCaller == checkCaller))
540+ then {
541+ let poolContractAddress = getStringOrFail(keyMappingPoolLPAssetToPoolContractAddress(lpAssetId))
542+ let poolWeightKey = keyPoolToWeight(poolContractAddress)
543+ let gwxWeightKey = keyPoolToWeight(GWXvirtualPOOL)
544+ let gwxWeight = valueOrElse(getInteger(gwxWeightKey), 0)
545+ let poolWeight = valueOrElse(getInteger(poolWeightKey), 0)
546+ let poolWeightNew = share
547+ let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
548+ let stakingContract = getStakingAddressOrFail(factoryCfg)
549+ let onModifyWeightInv = invoke(stakingContract, "onModifyWeight", [lpAssetId, poolContractAddress], nil)
550+ if ((onModifyWeightInv == onModifyWeightInv))
551+ then {
552+ let gwxVirtualPoolActions = if ((gwxWeight == 0))
553+ then nil
554+ else [IntegerEntry(gwxWeightKey, 0)]
555+ let poolWeightHistoryKey = keyPoolToWeightHistory(poolContractAddress, 0)
556+ let poolWeightHistoryOrUnit = getInteger(poolWeightHistoryKey)
557+ let poolWeightHistoryActions = if ((poolWeightHistoryOrUnit == unit))
558+ then nil
559+ else [DeleteEntry(poolWeightHistoryKey)]
560+ (([IntegerEntry(poolWeightKey, poolWeightNew)] ++ gwxVirtualPoolActions) ++ poolWeightHistoryActions)
561+ }
562+ else throw("Strict value is not equal to itself.")
563+ }
564+ else throw("Strict value is not equal to itself.")
565+ }
566+
567+
568+
569+@Callable(i)
570+func modifyWeights (btcPoolAddress,ethPoolAddress,ethBtcPoolAddress,usdcUsdtPoolAddress) = {
571+ let checkCaller = mustManager(i)
572+ if ((checkCaller == checkCaller))
573+ then {
574+ let ethBtcWeightNew = ((5 * POOLWEIGHTMULT) / 100)
575+ let usdcUsdtWeightNew = ((5 * POOLWEIGHTMULT) / 100)
576+ let weightDecrement = ((5 * POOLWEIGHTMULT) / 100)
577+ let factoryCfg = split(getStringOrFail(keyFactoryConfig()), SEP)
578+ let stakingDapp = getStakingAddressOrFail(factoryCfg)
579+ let gwxRewardDapp = getGwxRewardAddressOrFail(factoryCfg)
580+ let btcWeightKEY = keyPoolToWeight(btcPoolAddress)
581+ let ethWeightKEY = keyPoolToWeight(ethPoolAddress)
582+ let ethBtcWeightKEY = keyPoolToWeight(ethBtcPoolAddress)
583+ let usdcUsdtWeightKEY = keyPoolToWeight(usdcUsdtPoolAddress)
584+ let btcWeight = getIntOrFail(btcWeightKEY)
585+ let ethWeight = getIntOrFail(ethWeightKEY)
586+ let btcWeightNew = (btcWeight - weightDecrement)
587+ let ethWeightNew = (ethWeight - weightDecrement)
588+ if ((0 >= btcWeightNew))
589+ then throw(("invalid btcWeightNew: " + toString(btcWeightNew)))
590+ else if ((0 >= ethWeightNew))
591+ then throw(("invalid ethWeightNew: " + toString(ethWeightNew)))
592+ else {
593+ let btcLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(btcPoolAddress))
594+ let ethLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(ethPoolAddress))
595+ let ethBtcLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(ethBtcPoolAddress))
596+ let usdcUsdtLpAssetIdStr = getStringOrFail(keyMappingPoolContractToLPAsset(usdcUsdtPoolAddress))
597+ let onModifyWeightBtc = invoke(stakingDapp, "onModifyWeight", [btcLpAssetIdStr, btcPoolAddress], nil)
598+ if ((onModifyWeightBtc == onModifyWeightBtc))
599+ then {
600+ let onModifyWeightEth = invoke(stakingDapp, "onModifyWeight", [ethLpAssetIdStr, ethPoolAddress], nil)
601+ if ((onModifyWeightEth == onModifyWeightEth))
602+ then {
603+ let onModifyWeightEthBtc = invoke(stakingDapp, "onModifyWeight", [ethBtcLpAssetIdStr, ethBtcPoolAddress], nil)
604+ if ((onModifyWeightEthBtc == onModifyWeightEthBtc))
605+ then {
606+ let onModifyWeightUsdcUsdt = invoke(stakingDapp, "onModifyWeight", [usdcUsdtLpAssetIdStr, usdcUsdtPoolAddress], nil)
607+ if ((onModifyWeightUsdcUsdt == onModifyWeightUsdcUsdt))
608+ 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)]
609+ else throw("Strict value is not equal to itself.")
610+ }
611+ else throw("Strict value is not equal to itself.")
612+ }
613+ else throw("Strict value is not equal to itself.")
614+ }
615+ else throw("Strict value is not equal to itself.")
616+ }
617+ }
618+ else throw("Strict value is not equal to itself.")
619+ }
620+
621+
622+
623+@Callable(i)
624+func checkWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
625+ let haveLabel = match getBoolean(keyWxEmission(amountAssetId, priceAssetId)) {
626+ case b: Boolean =>
627+ b
628+ case _ =>
629+ false
630+ }
631+ $Tuple2(nil, haveLabel)
632+ }
633+
634+
635+
636+@Callable(i)
637+func setWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
638+ let checkCaller = mustAdmin(i)
639+ if ((checkCaller == checkCaller))
640+ then $Tuple2([BooleanEntry(keyWxEmission(amountAssetId, priceAssetId), true)], unit)
641+ else throw("Strict value is not equal to itself.")
642+ }
643+
644+
645+
646+@Callable(i)
647+func deleteWxEmissionPoolLabel (amountAssetId,priceAssetId) = {
648+ let checkCaller = if (mustThis(i))
649+ then true
650+ else mustAdmin(i)
651+ if ((checkCaller == checkCaller))
652+ then $Tuple2([DeleteEntry(keyWxEmission(amountAssetId, priceAssetId))], unit)
653+ else throw("Strict value is not equal to itself.")
654+ }
655+
656+
657+
658+@Callable(i)
659+func onVerificationLoss (assetId) = {
660+ let checkCaller = if ((toBase58String(i.caller.bytes) == valueOrElse(getString(this, keyAssetsStoreContract()), "")))
661+ then true
662+ else mustManager(i)
663+ if ((checkCaller == checkCaller))
664+ then {
665+ let priceAssets = getPriceAssets()
666+ let checkPriceAssetsSize = if ((size(priceAssets) > 0))
667+ then true
668+ else throw("invalid price assets")
669+ if ((checkPriceAssetsSize == checkPriceAssetsSize))
670+ then {
671+ func cb (acc,priceAsset) = {
672+ let r = invoke(this, "deleteWxEmissionPoolLabel", [assetId, priceAsset], nil)
673+ if ((r == r))
674+ then unit
675+ else throw("Strict value is not equal to itself.")
676+ }
677+
678+ let actions = {
679+ let $l = priceAssets
680+ let $s = size($l)
681+ let $acc0 = unit
682+ func $f0_1 ($a,$i) = if (($i >= $s))
683+ then $a
684+ else cb($a, $l[$i])
685+
686+ func $f0_2 ($a,$i) = if (($i >= $s))
687+ then $a
688+ else throw("List size exceeds 1")
689+
690+ $f0_2($f0_1($acc0, 0), 1)
691+ }
692+ if ((actions == actions))
693+ then $Tuple2(nil, unit)
694+ else throw("Strict value is not equal to itself.")
695+ }
696+ else throw("Strict value is not equal to itself.")
697+ }
698+ else throw("Strict value is not equal to itself.")
699+ }
700+
701+
702+@Verifier(tx)
703+func verify () = {
704+ let targetPublicKey = match managerPublicKeyOrUnit() {
705+ case pk: ByteVector =>
706+ pk
707+ case _: Unit =>
708+ tx.senderPublicKey
709+ case _ =>
710+ throw("Match error")
711+ }
712+ sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
713+ }
714+

github/deemru/w8io/3ef1775 
38.32 ms