tx · 9hZFPyshkmUwcYzHAsR4ax8inSJoG5QTGs3Qsfjhk9xD

3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ:  -0.01400000 Waves

2021.07.16 21:27 [2681297] smart account 3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ > SELF 0.00000000 Waves

{ "type": 13, "id": "9hZFPyshkmUwcYzHAsR4ax8inSJoG5QTGs3Qsfjhk9xD", "fee": 1400000, "feeAssetId": null, "timestamp": 1626459971076, "version": 2, "chainId": 87, "sender": "3PNVFWopwCD9CgGXkpYWEY94oQ5XCAEXBmQ", "senderPublicKey": "4DPL6q4zXX76yLqAjsQwFsruX4hUF8eKzqRdTkfprQgu", "proofs": [ "", "iWsS1tNf39nebgFS4TKi6ymBp4mTDazRwpj3j1U9RDh5epdVMBoHKBsKAqu7neJyiTHQdr6YAgn2EJRheMEmGP5", "pgwFZJBKUCF9FqHnQWytZNb3wE8FCDnE2iRawyBD9fammr6iWbxb876LJVE7sz3JkckBVPZy4HVkPDhhjLTPHLG" ], "script": "base64:AAIFAAAAAAAAACoIAhIDCgEEEgcKBQEBCAgEEgMKAQESAwoBARIAEgMKAQESABIAEgMKAQEAAABLAAAAAAd2ZXJzaW9uAgAAAAUxLjAuMAAAAAAKa2V5VmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAAC2tleUFzc2V0SWRBAgAAAApBX2Fzc2V0X2lkAAAAAAtrZXlBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAALa2V5QmFsYW5jZUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAALa2V5QmFsYW5jZUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZUluaXRBAgAAAAxBX2Fzc2V0X2luaXQAAAAAD2tleUJhbGFuY2VJbml0QgIAAAAMQl9hc3NldF9pbml0AAAAAA9rZXlTaGFyZUFzc2V0SWQCAAAADnNoYXJlX2Fzc2V0X2lkAAAAABNrZXlTaGFyZUFzc2V0U3VwcGx5AgAAABJzaGFyZV9hc3NldF9zdXBwbHkAAAAADWtleUNvbW1pc3Npb24CAAAACmNvbW1pc3Npb24AAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAPa2V5Rmlyc3RIYXJ2ZXN0AgAAAA1maXJzdF9oYXJ2ZXN0AAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa0Jhc2VQZXJpb2QCAAAAC2Jhc2VfcGVyaW9kAAAAAA1rUGVyaW9kTGVuZ3RoAgAAAA1wZXJpb2RfbGVuZ3RoAAAAAAxrU3RhcnRIZWlnaHQCAAAADHN0YXJ0X2hlaWdodAAAAAATa0ZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAD2tleUFkbWluUHViS2V5MQIAAAALYWRtaW5fcHViXzEAAAAAD2tleUFkbWluUHViS2V5MgIAAAALYWRtaW5fcHViXzIAAAAAD2tleUFkbWluUHViS2V5MwIAAAALYWRtaW5fcHViXzMAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBV4r/CGiaNbpAzWF08hI33qY38Po4zugeOAEAAAALZ2V0QWRtaW5QdWIAAAABAAAAC2tleUFkbWluUHViBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABm9yYWNsZQUAAAALa2V5QWRtaW5QdWIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAABlBZG1pbiBwdWJsaWMga2V5IGlzIGVtcHR5AAAAAAxhZG1pblB1YktleTEJAQAAAAtnZXRBZG1pblB1YgAAAAEFAAAAD2tleUFkbWluUHViS2V5MQAAAAAMYWRtaW5QdWJLZXkyCQEAAAALZ2V0QWRtaW5QdWIAAAABBQAAAA9rZXlBZG1pblB1YktleTIAAAAADGFkbWluUHViS2V5MwkBAAAAC2dldEFkbWluUHViAAAAAQUAAAAPa2V5QWRtaW5QdWJLZXkzAAAAABRhZG1pblB1YktleVN0YXJ0U3RvcAEAAAAgzlkO3OqzXqOuG/1XXufreRE1KXRGMps8FV88BRsoYXsAAAAAEmFkbWluUHViS2V5U3Rha2luZwEAAAAgsj2fHYY3mleF5iNR9OE3eyOPalgB3T7oDWjAjnR7WCgAAAAADXdhbGxldEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVcv5F8goQ5NCtA0sa8erNky+83EfVMfDPEAAAAADXZvdGluZ0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVf4P/usT8lizY2UmVuu7KlLCNzwjKSsIrsAAAAADnN0YWtpbmdBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFX5A6nNk+SC9eXz6QdPzUbz0Nq66o883GdAAAAABRVU0ROVG9XYXZlc0V4Y2hhbmdlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBV6ugnY67/HaJPzVO8b2xSyoDl1hFH8eK8wAAAAAKYmFzZVBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAAC2tCYXNlUGVyaW9kAgAAABFFbXB0eSBrQmFzZVBlcmlvZAAAAAALc3RhcnRIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAAxrU3RhcnRIZWlnaHQCAAAAEkVtcHR5IGtTdGFydEhlaWdodAAAAAAMcGVyaW9kTGVuZ3RoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa1BlcmlvZExlbmd0aAIAAAATRW1wdHkga1BlcmlvZExlbmd0aAAAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kCQAAZAAAAAIJAABkAAAAAgUAAAAKYmFzZVBlcmlvZAkAAGkAAAACCQAAZQAAAAIFAAAABmhlaWdodAUAAAALc3RhcnRIZWlnaHQFAAAADHBlcmlvZExlbmd0aAAAAAAAAAAAAwAAAAAEVVNETgEAAAAgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEAAAAAEHN0YWtpbmdGZWVJblVTRE4AAAAAAAAEHrAAAAAACGlzQWN0aXZlCQEAAAARQGV4dHJOYXRpdmUoMTA1MSkAAAACBQAAAAR0aGlzBQAAAAlrZXlBY3RpdmUAAAAAC3N0ckFzc2V0SWRBCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAtrZXlBc3NldElkQQAAAAALc3RyQXNzZXRJZEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAC2tleUFzc2V0SWRCAAAAAAhhc3NldElkQQMJAAAAAAAAAgUAAAALc3RyQXNzZXRJZEECAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAC3N0ckFzc2V0SWRBAAAAAAhhc3NldElkQgMJAAAAAAAAAgUAAAALc3RyQXNzZXRJZEICAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAC3N0ckFzc2V0SWRCAAAAAAphc3Nl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c3Rha2VkQW1vdW50VVNETgAAAAAAAAAAAAAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4FAAAAEHN0YWtlZEFtb3VudFVTRE4AAAAAAAAAAAAAAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIJAABkAAAAAgkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAAIYXNzZXRJZEIDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARVU0ROBQAAABBzdGFrZWRBbW91bnRVU0ROAAAAAAAAAAAAAAAAABBoYXNFbm91Z2hCYWxhbmNlAwkAAGcAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRBBQAAAAhiYWxhbmNlQQkAAGcAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgcBAAAADGdldEFzc2V0SW5mbwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAEAAAACHN0cmluZ0lkCQACWAAAAAEFAAAAAmlkBAAAAARpbmZvCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAACaWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAFAAAACHN0cmluZ0lkAgAAAA4gZG9lc24ndCBleGlzdAkABRUAAAADBQAAAAhzdHJpbmdJZAgFAAAABGluZm8AAAAEbmFtZQgFAAAABGluZm8AAAAIZGVjaW1hbHMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwCQAFFQAAAAMCAAAABVdBVkVTAgAAAAVXQVZFUwAAAAAAAAAACAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEAAAAIYXNzZXRTdHIDCQAAAAAAAAIF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BQAAAAxwbXREZWNpbWFsc0EFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAAAgQAAAAEYXJnMQkAAGwAAAAGBQAAAApwbXRBbW91bnRBBQAAAAxwbXREZWNpbWFsc0EAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQQUAAAAERE9XTgQAAAAEYXJnMgkAAGwAAAAGBQAAAApwbXRBbW91bnRCBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQgUAAAAERE9XTgQAAAAEYXJnMwkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAA1zaGFyZURlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBAAAABJzaGFyZUluaXRpYWxTdXBwbHkJAABrAAAAAwUAAAAEYXJnMQUAAAAEYXJnMgUAAAAEYXJnMwQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5U2hhcmVBc3NldElkCQACWAAAAAEFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAEWluaXRXaXRoSW5pdFJhdGlvAAAABQAAAAlhbXRBc3NldEEAAAAJYW10QXNzZXRCAAAAC3N0ckFzc2V0SWRBAAAAC3N0ckFzc2V0SWRCAAAADGZpcnN0SGFydmVzdAQAAAALJHQwOTI3MzkzNjAJAQAAABZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAAAAAQUAAAALc3RyQXNzZXRJZEEEAAAADnBtdFN0ckFzc2V0SWRBCAUAAAALJHQwOTI3MzkzNjAAAAACXzEEAAAADXBtdEFzc2V0TmFtZUEIBQAAAAskdDA5MjczOTM2MAAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAALJHQwOTI3MzkzNjAAAAACXzMEAAAACyR0MDkzNjU5NDUyCQEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEFAAAAC3N0ckFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAACyR0MDkzNjU5NDUyAAAAAl8xBAAAAA1wbXRBc3NldE5hbWVCCAUAAAALJHQwOTM2NTk0NTIAAAACXzIEAAAADHBtdERlY2ltYWxzQggFAAAACyR0MDkzNjU5NDUyAAAAAl8zAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABJhZG1pblB1YktleVN0YWtpbmcFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAAAlpc0RlZmluZWQAAAABCQAEGwAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQUAAAALc3RyQXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAAlzaGFyZU5hbWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAXMJAAEvAAAAAgUAAAANcG10QXNzZXROYW1lQQAAAAAAAAAABwIAAAABXwkAAS8AAAACBQAAAA1wbXRBc3NldE5hbWVCAAAAAAAAAAAHBAAAABBzaGFyZURlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUAAAANcG10QXNzZXROYW1lQQIAAAAFIGFuZCAFAAAADXBtdEFzc2V0TmFtZUICAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAR0aGlzBAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlCYWxhbmNlSW5pdEEFAAAACWFtdEFzc2V0QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5QmFsYW5jZUluaXRCBQAAAAlhbXRBc3NldEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5Q29tbWlzc2lvbgUAAAAKY29tbWlzc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAba2V5Q29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAARMAAAAAgUAAAAKc2hhcmVJc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5BQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAGGtlZXBMaW1pdEZvckZpcnN0SGFydmVzdAAAAAEAAAAKc2hhcmVMaW1pdAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAASYWRtaW5QdWJLZXlTdGFraW5nBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tTaGFyZUxpbWl0BQAAAApzaGFyZUxpbWl0BQAAAANuaWwAAAABaQEAAAAWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwAAAAEAAAARc2xpcHBhZ2VUb2xlcmFuY2UEAAAAC3BtdEFzc2V0SWRBCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAtwbXRBc3NldElkQggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAHYXNzZXRJZAQAAAAKcG10QW1vdW50QQkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQFAAAAC3BtdEFzc2V0SWRBBAAAAApwbXRBbW91bnRCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEIDAwkAAAAAAAACBQAAAAhiYWxhbmNlQQAAAAAAAAAAAAkAAAAAAAACBQAAAAhiYWxhbmNlQgAAAAAAAAAAAAcEAAAADSR0MDEyMTM3MTIyMTQJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAtwbXRBc3NldElkQQQAAAAOcG10U3RyQXNzZXRJZEEIBQAAAA0kdDAxMjEzNzEyMjE0AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVBCAUAAAANJHQwMTIxMzcxMjIxNAAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAANJHQwMTIxMzcxMjIxNAAAAAJfMwQAAAANJHQwMTIyMjMxMjMwMAkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAAC3BtdEFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAADSR0MDEyMjIzMTIzMDAAAAACXzEEAAAADXBtdEFzc2V0TmFtZUIIBQAAAA0kdDAxMjIyMzEyMzAwAAAAAl8yBAAAAAxwbXREZWNpbWFsc0IIBQAAAA0kdDAxMjIyMzEyMzAwAAAAAl8zBAAAAAp0b2tlblJhdGlvCQAAawAAAAMJAABrAAAAAwUAAAAKYXNzZXRJbml0QQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACmFzc2V0SW5pdEIFAAAAC3NjYWxlVmFsdWU4BQAAAApwbXRBbW91bnRCAwkAAAAAAAACBQAAAAtwbXRBc3NldElkQQUAAAALcG10QXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkAAGsAAAADCQAAbAAAAAYFAAAACnBtdEFtb3VudEEFAAAADHBtdERlY2ltYWxzQQAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNBBQAAAARET1dOCQAAbAAAAAYFAAAACnBtdEFtb3VudEIFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNCBQAAAARET1dOCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAADXNoYXJlRGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04DCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAAGYAAAACAAAAAAAAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQYJAABmAAAAAgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAKVNsaXBwYWdlIHRvbGVyYW5jZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgCQABpAAAAAEFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyAgAAABYgaW5jbHVzaXZlbHkuIEFjdHVhbDogCQABpAAAAAEFAAAAEXNsaXBwYWdlVG9sZXJhbmNlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABxUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAABmAAAAAgkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZQAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAtzY2FsZVZhbHVlMwkAAGQAAAACBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAECAAAAPUluY29ycmVjdCBhc3NldHMgYW1vdW50OiBhbW91bnRzIG11c3QgaGF2ZSB0aGUgY29udHJhY3QgcmF0aW8DAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDCQAAAAAAAAIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAkAAAIAAAABAgAAAB1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QQUAAAALcG10QXNzZXRJZEEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRCBQAAAAtwbXRBc3NldElkQgUAAAADbmlsCQEAAAARc3VzcGVuZFN1c3BpY2lvdXMAAAAACQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAMc2hhcmVBc3NldElkBQAAABJzaGFyZUluaXRpYWxTdXBwbHkGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwEAAAACnRva2VuUmF0aW8JAABrAAAAAwkAAGsAAAADBQAAAAhiYWxhbmNlQQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACGJhbGFuY2VCBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QgQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADBQAAAApwbXRBbW91bnRBBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApU2xpcHBhZ2UgdG9sZXJhbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAJAAGkAAAAAQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXICAAAAFiBpbmNsdXNpdmVseS4gQWN0dWFsOiAJAAGkAAAAAQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAHFR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABlAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAAKdG9rZW5SYXRpbwYJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZAAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQIAAAA9SW5jb3JyZWN0IGFzc2V0cyBhbW91bnQ6IGFtb3VudHMgbXVzdCBoYXZlIHRoZSBjb250cmFjdCByYXRpbwMJAAAAAAAAAgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRBBQAAAAtwbXRBc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEIFAAAAC3BtdEFzc2V0SWRCBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTY2OTkxNjg0OQkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE2Njk5MTY4NDkAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNjY5OTE2ODQ5AAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAMc2hhcmVBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQACWAAAAAEFAAAADHNoYXJlQXNzZXRJZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkAAGYAAAACBQAAAAxhbW91bnRUb1BheUEFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBgkAAGYAAAACBQAAAAxhbW91bnRUb1BheUIFAAAAEWF2YWlsYWJsZUJhbGFuY2VCCQEAAAAidGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlcwAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5CQAAZQAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlBBQAAAAhhc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QgUAAAAIYXNzZXRJZEIFAAAAA25pbAAAAAFpAQAAAAhleGNoYW5nZQAAAAEAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxODA1NTE4MTMwCQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTgwNTUxODEzMAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE4MDU1MTgxMzAAAAACXzIKAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgAAAAl0b2tlbkZyb20AAAAHdG9rZW5UbwQAAAAQYW1vdW50V2l0aG91dEZlZQkAAGsAAAADBQAAAAd0b2tlblRvBQAAAAlwbXRBbW91bnQJAABkAAAAAgUAAAAJcG10QW1vdW50BQAAAAl0b2tlbkZyb20EAAAADWFtb3VudFdpdGhGZWUJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAABRjb21taXNzaW9uR292ZXJuYW5jZQUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACBQAAABJtaW5BbW91bnRUb1JlY2VpdmUFAAAADWFtb3VudFdpdGhGZWUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAAGkAAAAAQUAAAANYW1vdW50V2l0aEZlZQIAAAAgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAFFQAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAAAAAAAACBQAAAAhiYWxhbmNlQQAAAAAAAAAAAAYJAAAAAAAAAgUAAAAIYmFsYW5jZUIAAAAAAAAAAAAJAAACAAAAAQIAAAAgQ2FuJ3QgZXhjaGFuZ2Ugd2l0aCB6ZXJvIGJhbGFuY2UDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkAAAIAAAABCQABLAAAAAICAAAANE1pbmltYWwgYW1vdW50IHRvIHJlY2VpdmUgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEIEAAAADSR0MDE5NDA0MTk0OTUJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTk0MDQxOTQ5NQAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDE5NDA0MTk0OTUAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxOTQwNDE5NDk1AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VBBwYDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VCBwkBAAAAIXRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZQAAAAMFAAAADWFtb3VudFdpdGhGZWUFAAAAEWF2YWlsYWJsZUJhbGFuY2VCBQAAAAphc3NldE5hbWVCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEEEAAAADSR0MDIwMzY0MjA0NTUJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUIFAAAACGJhbGFuY2VBBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMjAzNjQyMDQ1NQAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDIwMzY0MjA0NTUAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAyMDM2NDIwNDU1AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAtuZXdCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50AwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VBBwYDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VCBwkBAAAAIXRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZQAAAAMFAAAADWFtb3VudFdpdGhGZWUFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBQAAAAphc3NldE5hbWVBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQAAAAtzdHJBc3NldElkQQIAAAAEIG9yIAUAAAALc3RyQXNzZXRJZEIAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgQAAAANYW1vdW50RW5yb2xsQQkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEdW5pdAUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAArT25seSB0aGUgREFwcCBpdHNlbGYgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAABmAAAAAgAAAAAAAAAAAAUAAAALYW1vdW50TGVhdmUJAAACAAAAAQkAASwAAAACAgAAADNBcmd1bWVudCAnYW1vdW50TGVhdmUnIGNhbm5vdCBiZSBuZWdhdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAALYW1vdW50TGVhdmUDAwkAAGYAAAACAAAAAAAAAAAABQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQYJAABmAAAAAgAAAAAAAAAAAAUAAAAddW5jb3VudGFibGVBbW91bnRFbnJvbGxBc3NldEIJAQAAAAdzdXNwZW5kAAAAAQIAAAAWRW5yb2xsIGFtb3VudCBuZWdhdGl2ZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEEGCQAAZgAAAAIAAAAAAAAAAAAFAAAADWFtb3VudEVucm9sbEIJAAACAAAAAQIAAAAVVG9vIGxhcmdlIGFtb3VudExlYXZlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIJAABkAAAAAgUAAAAIYmFsYW5jZUIFAAAADWFtb3VudEVucm9sbEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAMbGFzdF9pbmNvbWVfBQAAAAtzdHJBc3NldElkQQUAAAANYW1vdW50RW5yb2xsQQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAxsYXN0X2luY29tZV8FAAAAC3N0ckFzc2V0SWRCBQAAAA1hbW91bnRFbnJvbGxCBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAAAAA2ludgUAAAAHJG1hdGNoMAQAAAATY2FsbFRha2VJbnRvQWNjb3VudAMJAAAAAAAAAggFAAAAA2ludgAAAARkQXBwBQAAAAR0aGlzCQAAAAAAAAIIBQAAAANpbnYAAAAIZnVuY3Rpb24CAAAAGXRha2VJbnRvQWNjb3VudEV4dHJhRnVuZHMHBAAAAAtjYWxsU3Rha2luZwMJAAAAAAAAAggFAAAAA2ludgAAAARkQXBwBQAAAA5zdGFraW5nQWRkcmVzcwMDAwkAAAAAAAACCAUAAAADaW52AAAACGZ1bmN0aW9uAgAAAAxsb2NrTmV1dHJpbm8JAAAAAAAAAgkAAZAAAAABCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAABBwkAAAAAAAACCAkAAZEAAAACCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAABFVTRE4HBgMJAAAAAAAAAggFAAAAA2ludgAAAAhmdW5jdGlvbgIAAAAOdW5sb2NrTmV1dHJpbm8JAAAAAAAAAgkAAZAAAAABCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAAABwcEAAAAD2V4Y2hhbmdlVG9XYXZlcwMDAwkAAAAAAAACCAUAAAADaW52AAAABGRBcHAFAAAAFFVTRE5Ub1dhdmVzRXhjaGFuZ2VyCQAAAAAAAAIIBQAAAANpbnYAAAAIZnVuY3Rpb24CAAAACGV4Y2hhbmdlBwkAAAAAAAACBQAAAAhhc3NldElkQQUAAAAEVVNETgcGAwMJAAAAAAAAAgUAAAAIYXNzZXRJZEIFAAAABFVTRE4JAAAAAAAAAgkAAZAAAAABCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAABBwkAAAAAAAACCAkAAZEAAAACCAUAAAADaW52AAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQFAAAABFVTRE4HBAAAAA1zaWduZWRCeUFkbWluAwMDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxBgkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAFAAAADGFkbWluUHViS2V5MgYJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAABQAAAAxhZG1pblB1YktleTMGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAASYWRtaW5QdWJLZXlTdGFraW5nAwMDBQAAABNjYWxsVGFrZUludG9BY2NvdW50BgUAAAALY2FsbFN0YWtpbmcGBQAAAA9leGNoYW5nZVRvV2F2ZXMFAAAADXNpZ25lZEJ5QWRtaW4HBAAAABJhZG1pblB1YktleTFTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAUAAAAMYWRtaW5QdWJLZXkxAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTJTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAMYWRtaW5QdWJLZXkyAAAAAAAAAAABAAAAAAAAAAAABAAAABJhZG1pblB1YktleTNTaWduZWQDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAMYWRtaW5QdWJLZXkzAAAAAAAAAAABAAAAAAAAAAAACQAAZwAAAAIJAABkAAAAAgkAAGQAAAACBQAAABJhZG1pblB1YktleTFTaWduZWQFAAAAEmFkbWluUHViS2V5MlNpZ25lZAUAAAASYWRtaW5QdWJLZXkzU2lnbmVkAAAAAAAAAAACgmHbRA==", "height": 2681297, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: qRrtj5TaufrbcZQjZhTipH95FXKQGp8CrGFyGifoxiq Next: 8gKP6e3Hqu26tbyDVeoiUBPCSUpLWtZAmVDF6Nnc7Wri Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
4343
4444 let u = "first_harvest_height"
4545
46-let v = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
46+let v = "admin_pub_1"
4747
48-let w = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
48+let w = "admin_pub_2"
4949
50-let x = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
50+let x = "admin_pub_3"
5151
52-let y = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
52+let y = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
5353
54-let z = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
54+func z (A) = {
55+ let B = getString(y, A)
56+ if ($isInstanceOf(B, "String"))
57+ then {
58+ let C = B
59+ fromBase58String(C)
60+ }
61+ else {
62+ let D = B
63+ throw("Admin public key is empty")
64+ }
65+ }
5566
56-let A = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
5767
58-let B = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
68+let E = z(v)
5969
60-let C = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
70+let F = z(w)
6171
62-let D = valueOrErrorMessage(getInteger(B, r), "Empty kBasePeriod")
72+let G = z(x)
6373
64-let E = valueOrErrorMessage(getInteger(B, t), "Empty kStartHeight")
74+let H = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
6575
66-let F = valueOrErrorMessage(getInteger(B, s), "Empty kPeriodLength")
76+let I = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
6777
68-let G = ((D + ((height - E) / F)) + 3)
78+let J = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
6979
70-let H = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
80+let K = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
7181
72-let I = (9 * value(value(assetInfo(H)).minSponsoredFee))
82+let L = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
7383
74-let J = getBooleanValue(this, c)
84+let M = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
7585
76-let K = getStringValue(this, d)
86+let N = valueOrErrorMessage(getInteger(K, r), "Empty kBasePeriod")
7787
78-let L = getStringValue(this, e)
88+let O = valueOrErrorMessage(getInteger(K, t), "Empty kStartHeight")
7989
80-let M = if ((K == "WAVES"))
90+let P = valueOrErrorMessage(getInteger(K, s), "Empty kPeriodLength")
91+
92+let Q = ((N + ((height - O) / P)) + 3)
93+
94+let R = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
95+
96+let S = 270000
97+
98+let T = getBooleanValue(this, c)
99+
100+let U = getStringValue(this, d)
101+
102+let V = getStringValue(this, e)
103+
104+let W = if ((U == "WAVES"))
81105 then unit
82- else fromBase58String(K)
106+ else fromBase58String(U)
83107
84-let N = if ((L == "WAVES"))
108+let X = if ((V == "WAVES"))
85109 then unit
86- else fromBase58String(L)
110+ else fromBase58String(V)
87111
88-let O = {
89- let P = M
90- if ($isInstanceOf(P, "ByteVector"))
112+let Y = {
113+ let B = W
114+ if ($isInstanceOf(B, "ByteVector"))
91115 then {
92- let Q = P
93- value(assetInfo(Q)).name
116+ let Z = B
117+ value(assetInfo(Z)).name
94118 }
95- else if ($isInstanceOf(P, "Unit"))
119+ else if ($isInstanceOf(B, "Unit"))
96120 then {
97- let R = P
121+ let aa = B
98122 "WAVES"
99123 }
100124 else throw("Match error")
101125 }
102126
103-let S = {
104- let P = N
105- if ($isInstanceOf(P, "ByteVector"))
127+let ab = {
128+ let B = X
129+ if ($isInstanceOf(B, "ByteVector"))
106130 then {
107- let Q = P
108- value(assetInfo(Q)).name
131+ let Z = B
132+ value(assetInfo(Z)).name
109133 }
110- else if ($isInstanceOf(P, "Unit"))
134+ else if ($isInstanceOf(B, "Unit"))
111135 then {
112- let R = P
136+ let aa = B
113137 "WAVES"
114138 }
115139 else throw("Match error")
116140 }
117141
118-let T = getIntegerValue(this, f)
142+let ac = getIntegerValue(this, f)
119143
120-let U = getIntegerValue(this, g)
144+let ad = getIntegerValue(this, g)
121145
122-let V = fromBase58String(getStringValue(this, j))
146+let ae = fromBase58String(getStringValue(this, j))
123147
124-let W = getIntegerValue(this, k)
148+let af = getIntegerValue(this, k)
125149
126-let X = 3000
150+let ag = 3000
127151
128-let Y = 1200
152+let ah = 1200
129153
130-let Z = 1000000
154+let ai = 1000000
131155
132-let aa = 1000
156+let aj = 1000
133157
134-let ab = 100000000
158+let ak = 100000000
135159
136-let ac = 1000
160+let al = 1000
137161
138-let ad = 8
162+let am = 8
139163
140-func ae (af) = {
141- let P = af
142- if ($isInstanceOf(P, "ByteVector"))
164+func an (ao) = {
165+ let B = ao
166+ if ($isInstanceOf(B, "ByteVector"))
143167 then {
144- let Q = P
145- assetBalance(this, Q)
168+ let Z = B
169+ assetBalance(this, Z)
146170 }
147- else if ($isInstanceOf(P, "Unit"))
171+ else if ($isInstanceOf(B, "Unit"))
148172 then {
149- let R = P
173+ let aa = B
150174 wavesBalance(this).available
151175 }
152176 else throw("Match error")
153177 }
154178
155179
156-let ag = {
157- let P = getInteger(C, ((("rpd_balance_" + toBase58String(H)) + "_") + toString(this)))
158- if ($isInstanceOf(P, "Int"))
180+let ap = {
181+ let B = getInteger(L, ((("rpd_balance_" + toBase58String(R)) + "_") + toString(this)))
182+ if ($isInstanceOf(B, "Int"))
159183 then {
160- let ah = P
161- ah
184+ let aq = B
185+ aq
162186 }
163- else if ($isInstanceOf(P, "Unit"))
187+ else if ($isInstanceOf(B, "Unit"))
164188 then {
165- let ai = P
189+ let D = B
166190 0
167191 }
168192 else throw("Match error")
169193 }
170194
171-let aj = getIntegerValue(this, h)
195+let ar = getIntegerValue(this, h)
172196
173-let ak = getIntegerValue(this, i)
197+let as = getIntegerValue(this, i)
174198
175-let al = (T - (if ((M == H))
176- then ag
199+let at = (ac - (if ((W == R))
200+ then ap
177201 else 0))
178202
179-let am = (U - (if ((N == H))
180- then ag
203+let au = (ad - (if ((X == R))
204+ then ap
181205 else 0))
182206
183-let an = (ae(M) + (if ((M == H))
184- then ag
207+let av = (an(W) + (if ((W == R))
208+ then ap
185209 else 0))
186210
187-let ao = (ae(N) + (if ((N == H))
188- then ag
211+let aw = (an(X) + (if ((X == R))
212+ then ap
189213 else 0))
190214
191-let ap = if ((an >= T))
192- then (ao >= U)
215+let ax = if ((av >= ac))
216+ then (aw >= ad)
193217 else false
194218
195-func aq (af) = {
196- let P = af
197- if ($isInstanceOf(P, "ByteVector"))
219+func ay (ao) = {
220+ let B = ao
221+ if ($isInstanceOf(B, "ByteVector"))
198222 then {
199- let Q = P
200- let ar = toBase58String(Q)
201- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
202- $Tuple3(ar, as.name, as.decimals)
223+ let Z = B
224+ let az = toBase58String(Z)
225+ let aA = valueOrErrorMessage(assetInfo(Z), (("Asset " + az) + " doesn't exist"))
226+ $Tuple3(az, aA.name, aA.decimals)
203227 }
204- else if ($isInstanceOf(P, "Unit"))
228+ else if ($isInstanceOf(B, "Unit"))
205229 then {
206- let R = P
230+ let aa = B
207231 $Tuple3("WAVES", "WAVES", 8)
208232 }
209233 else throw("Match error")
210234 }
211235
212236
213-func at (au) = if ((au == "WAVES"))
237+func aB (aC) = if ((aC == "WAVES"))
214238 then $Tuple3("WAVES", "WAVES", 8)
215239 else {
216- let ar = au
217- let Q = fromBase58String(au)
218- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
219- $Tuple3(ar, as.name, as.decimals)
240+ let az = aC
241+ let Z = fromBase58String(aC)
242+ let aA = valueOrErrorMessage(assetInfo(Z), (("Asset " + az) + " doesn't exist"))
243+ $Tuple3(az, aA.name, aA.decimals)
220244 }
221245
222246
223-func av (aw) = [BooleanEntry(c, false), StringEntry(n, aw)]
247+func aD (aE) = [BooleanEntry(c, false), StringEntry(n, aE)]
224248
225249
226-func ax (ay,af) = if ((af == H))
250+func aF (aG,ao) = if ((ao == R))
227251 then {
228- let az = (ay - I)
229- if ((0 >= az))
230- then throw((((("Insufficient amount " + toString(ay)) + " to deduct staking fee ") + toString(I)) + " USD-N"))
231- else az
252+ let aH = (aG - S)
253+ if ((0 >= aH))
254+ then throw((((("Insufficient amount " + toString(aG)) + " to deduct staking fee ") + toString(S)) + " USD-N"))
255+ else aH
232256 }
233- else ay
257+ else aG
234258
235259
236-func aA (ay,aB,aC) = throw((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + aC) + " due to staking. Available: ") + toString(aB)) + " ") + aC) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
260+func aI (aG,aJ,aK) = throw((((((((("Insufficient DApp balance to pay " + toString(aG)) + " ") + aK) + " due to staking. Available: ") + toString(aJ)) + " ") + aK) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
237261
238262
239-func aD (aE,aF) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aE)) + " ") + O) + " and ") + toString(aF)) + " ") + S) + " due to staking. Available: ") + toString(al)) + " ") + O) + " and ") + toString(am)) + " ") + S) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
263+func aL (aM,aN) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aM)) + " ") + Y) + " and ") + toString(aN)) + " ") + ab) + " due to staking. Available: ") + toString(at)) + " ") + Y) + " and ") + toString(au)) + " ") + ab) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
240264
241265
242-@Callable(aG)
243-func init (aH) = {
244- let aI = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
245- let aJ = aI._1
246- let aK = aI._2
247- let aL = $Tuple2(aG.payments[1].amount, aG.payments[1].assetId)
248- let aM = aL._1
249- let aN = aL._2
250- let aO = aq(aK)
251- let aP = aO._1
252- let aQ = aO._2
253- let aR = aO._3
254- let aS = aq(aN)
255- let aT = aS._1
256- let aU = aS._2
257- let aV = aS._3
258- if (!(containsElement([v, w, x, z], aG.callerPublicKey)))
266+func aO () = aD(((((((((((((((("Suspicious state. Actual balances: " + toString(av)) + " ") + Y) + ", ") + toString(aw)) + " ") + ab) + ". State: ") + toString(ac)) + " ") + Y) + ", ") + toString(ad)) + " ") + ab))
267+
268+
269+@Callable(aP)
270+func init (aQ) = {
271+ let aR = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
272+ let aS = aR._1
273+ let aT = aR._2
274+ let aU = $Tuple2(aP.payments[1].amount, aP.payments[1].assetId)
275+ let aV = aU._1
276+ let aW = aU._2
277+ let aX = ay(aT)
278+ let aY = aX._1
279+ let aZ = aX._2
280+ let ba = aX._3
281+ let bb = ay(aW)
282+ let bc = bb._1
283+ let bd = bb._2
284+ let be = bb._3
285+ if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
259286 then throw("Only admin can call this function")
260287 else if (isDefined(getBoolean(this, c)))
261288 then throw("DApp is already active")
262- else if ((aK == aN))
289+ else if ((aT == aW))
263290 then throw("Assets must be different")
264291 else {
265- let aW = ((("s" + take(aQ, 7)) + "_") + take(aU, 7))
266- let aX = ((((("ShareToken of SwopFi protocol for " + aQ) + " and ") + aU) + " at address ") + toString(this))
267- let aY = ((aR + aV) / 2)
268- let aZ = fraction(pow(aJ, aR, 5, 1, aR, HALFDOWN), pow(aM, aV, 5, 1, aV, HALFDOWN), pow(10, 0, aY, 0, 0, HALFDOWN))
269- let ba = Issue(aW, aX, aZ, aY, true)
270- let bb = calculateAssetId(ba)
271- let bc = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aP), StringEntry(e, aT), IntegerEntry(f, aJ), IntegerEntry(g, aM), IntegerEntry(l, X), IntegerEntry(m, Z), ba, StringEntry(j, toBase58String(bb)), IntegerEntry(k, aZ), ScriptTransfer(aG.caller, aZ, bb)]
272- if (aH)
273- then (bc ++ [BooleanEntry(o, aH), IntegerEntry(p, (E + (G * F)))])
274- else bc
292+ let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
293+ let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
294+ let bh = ((ba + be) / 2)
295+ let bi = pow(aS, ba, 5, 1, ba, DOWN)
296+ let bj = pow(aV, be, 5, 1, be, DOWN)
297+ let bk = pow(10, 0, bh, 0, 0, DOWN)
298+ let bl = fraction(bi, bj, bk)
299+ let bm = Issue(bf, bg, bl, bh, true)
300+ let bn = calculateAssetId(bm)
301+ let bo = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(l, ag), IntegerEntry(m, ai), bm, StringEntry(j, toBase58String(bn)), IntegerEntry(k, bl), ScriptTransfer(aP.caller, bl, bn)]
302+ if (aQ)
303+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
304+ else bo
275305 }
276306 }
277307
278308
279309
280-@Callable(aG)
281-func initWithInitRatio (bd,be,K,L,aH) = {
282- let bf = at(K)
283- let aP = bf._1
284- let aQ = bf._2
285- let aR = bf._3
286- let bg = at(L)
287- let aT = bg._1
288- let aU = bg._2
289- let aV = bg._3
290- if (!(containsElement([v, w, x, z], aG.callerPublicKey)))
310+@Callable(aP)
311+func initWithInitRatio (bp,bq,U,V,aQ) = {
312+ let br = aB(U)
313+ let aY = br._1
314+ let aZ = br._2
315+ let ba = br._3
316+ let bs = aB(V)
317+ let bc = bs._1
318+ let bd = bs._2
319+ let be = bs._3
320+ if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
291321 then throw("Only admin can call this function")
292322 else if (isDefined(getBoolean(this, c)))
293323 then throw("DApp is already active")
294- else if ((K == L))
324+ else if ((U == V))
295325 then throw("Assets must be different")
296326 else {
297- let aW = ((("s" + take(aQ, 7)) + "_") + take(aU, 7))
298- let aX = ((((("ShareToken of SwopFi protocol for " + aQ) + " and ") + aU) + " at address ") + toString(this))
299- let aY = ((aR + aV) / 2)
300- let aZ = 0
301- let ba = Issue(aW, aX, aZ, aY, true)
302- let bb = calculateAssetId(ba)
303- let bc = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aP), StringEntry(e, aT), IntegerEntry(h, bd), IntegerEntry(i, be), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, X), IntegerEntry(m, Z), ba, StringEntry(j, toBase58String(bb)), IntegerEntry(p, (E + (G * F))), IntegerEntry(k, aZ)]
304- if (aH)
305- then (bc ++ [BooleanEntry(o, aH), IntegerEntry(p, (E + (G * F)))])
306- else bc
327+ let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
328+ let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
329+ let bh = ((ba + be) / 2)
330+ let bl = 0
331+ let bm = Issue(bf, bg, bl, bh, true)
332+ let bn = calculateAssetId(bm)
333+ let bo = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(h, bp), IntegerEntry(i, bq), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, ag), IntegerEntry(m, ai), bm, StringEntry(j, toBase58String(bn)), IntegerEntry(k, bl)]
334+ if (aQ)
335+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
336+ else bo
307337 }
308338 }
309339
310340
311341
312-@Callable(aG)
313-func keepLimitForFirstHarvest (bh) = if (!(J))
342+@Callable(aP)
343+func keepLimitForFirstHarvest (bt) = if (!(T))
314344 then throw("DApp is inactive at this moment")
315- else if (!(containsElement([v, w, x, z], aG.callerPublicKey)))
345+ else if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
316346 then throw("Only admin can call this function")
317- else [IntegerEntry(q, bh)]
347+ else [IntegerEntry(q, bt)]
318348
319349
320350
321-@Callable(aG)
322-func replenishWithTwoTokens (bi) = {
323- let aK = aG.payments[0].assetId
324- let aN = aG.payments[1].assetId
325- let aJ = ax(aG.payments[0].amount, aK)
326- let aM = ax(aG.payments[1].amount, aN)
327- if (if ((T == 0))
328- then (U == 0)
351+@Callable(aP)
352+func replenishWithTwoTokens (bu) = {
353+ let aT = aP.payments[0].assetId
354+ let aW = aP.payments[1].assetId
355+ let aS = aF(aP.payments[0].amount, aT)
356+ let aV = aF(aP.payments[1].amount, aW)
357+ if (if ((ac == 0))
358+ then (ad == 0)
329359 else false)
330360 then {
331- let bj = aq(aK)
332- let aP = bj._1
333- let aQ = bj._2
334- let aR = bj._3
335- let bk = aq(aN)
336- let aT = bk._1
337- let aU = bk._2
338- let aV = bk._3
339- let bl = fraction(fraction(aj, ab, aJ), aa, fraction(ak, ab, aM))
340- if ((aK == aN))
361+ let bv = ay(aT)
362+ let aY = bv._1
363+ let aZ = bv._2
364+ let ba = bv._3
365+ let bw = ay(aW)
366+ let bc = bw._1
367+ let bd = bw._2
368+ let be = bw._3
369+ let bx = fraction(fraction(ar, ak, aS), aj, fraction(as, ak, aV))
370+ if ((aT == aW))
341371 then throw("Assets must be different")
342372 else {
343- let aY = ((aR + aV) / 2)
344- let aZ = fraction(pow(aJ, aR, 5, 1, aR, HALFDOWN), pow(aM, aV, 5, 1, aV, HALFDOWN), pow(10, 0, aY, 0, 0, HALFDOWN))
345- if (!(J))
373+ let bh = ((ba + be) / 2)
374+ let bl = fraction(pow(aS, ba, 5, 1, ba, DOWN), pow(aV, be, 5, 1, be, DOWN), pow(10, 0, bh, 0, 0, DOWN))
375+ if (!(T))
346376 then throw("DApp is inactive at this moment")
347- else if (if ((0 > bi))
377+ else if (if ((0 > bu))
348378 then true
349- else (bi > ac))
350- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bi)))
351- else if ((size(aG.payments) != 2))
379+ else (bu > al))
380+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
381+ else if ((size(aP.payments) != 2))
352382 then throw("Two attached assets expected")
353- else if (if ((((aa * (ac - bi)) / ac) > bl))
383+ else if (if ((((aj * (al - bu)) / al) > bx))
354384 then true
355- else (bl > ((aa * (ac + bi)) / ac)))
385+ else (bx > ((aj * (al + bu)) / al)))
356386 then throw("Incorrect assets amount: amounts must have the contract ratio")
357- else if (if ((aK != M))
387+ else if (if ((aT != W))
358388 then true
359- else (aN != N))
360- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
361- else if ((aZ == 0))
389+ else (aW != X))
390+ then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
391+ else if ((bl == 0))
362392 then throw("Too small amount to replenish")
363- else if (!(ap))
364- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
365- else [Reissue(V, aZ, true), IntegerEntry(f, aJ), IntegerEntry(g, aM), IntegerEntry(k, aZ), ScriptTransfer(aG.caller, aZ, V)]
393+ else if (!(ax))
394+ then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
395+ else [Reissue(ae, bl, true), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(k, bl), ScriptTransfer(aP.caller, bl, ae)]
366396 }
367397 }
368398 else {
369- let bl = fraction(fraction(T, ab, aJ), aa, fraction(U, ab, aM))
370- let bm = fraction(aJ, ab, T)
371- let bn = fraction(aM, ab, U)
372- let bo = fraction(min([bm, bn]), W, ab)
373- if (!(J))
399+ let bx = fraction(fraction(ac, ak, aS), aj, fraction(ad, ak, aV))
400+ let by = fraction(aS, ak, ac)
401+ let bz = fraction(aV, ak, ad)
402+ let bA = fraction(min([by, bz]), af, ak)
403+ if (!(T))
374404 then throw("DApp is inactive at this moment")
375- else if (if ((0 > bi))
405+ else if (if ((0 > bu))
376406 then true
377- else (bi > ac))
378- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bi)))
379- else if ((size(aG.payments) != 2))
407+ else (bu > al))
408+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
409+ else if ((size(aP.payments) != 2))
380410 then throw("Two attached assets expected")
381- else if (if ((aK != M))
411+ else if (if ((aT != W))
382412 then true
383- else (aN != N))
384- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
385- else if (if ((((aa * (ac - bi)) / ac) > bl))
413+ else (aW != X))
414+ then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
415+ else if (if ((((aj * (al - bu)) / al) > bx))
386416 then true
387- else (bl > ((aa * (ac + bi)) / ac)))
417+ else (bx > ((aj * (al + bu)) / al)))
388418 then throw("Incorrect assets amount: amounts must have the contract ratio")
389- else if ((bo == 0))
419+ else if ((bA == 0))
390420 then throw("Too small amount to replenish")
391- else if (!(ap))
392- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
393- else [IntegerEntry(f, (T + aJ)), IntegerEntry(g, (U + aM)), IntegerEntry(k, (W + bo)), Reissue(V, bo, true), ScriptTransfer(aG.caller, bo, V)]
421+ else if (!(ax))
422+ then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
423+ else [IntegerEntry(f, (ac + aS)), IntegerEntry(g, (ad + aV)), IntegerEntry(k, (af + bA)), Reissue(ae, bA, true), ScriptTransfer(aP.caller, bA, ae)]
394424 }
395425 }
396426
397427
398428
399-@Callable(aG)
429+@Callable(aP)
400430 func withdraw () = {
401- let bp = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
402- let bq = bp._1
403- let br = bp._2
404- let bs = ax(fraction(bq, T, W), M)
405- let bt = ax(fraction(bq, U, W), N)
406- if (!(J))
431+ let bB = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
432+ let bC = bB._1
433+ let bD = bB._2
434+ let bE = aF(fraction(bC, ac, af), W)
435+ let bF = aF(fraction(bC, ad, af), X)
436+ if (!(T))
407437 then throw("DApp is inactive at this moment")
408- else if ((size(aG.payments) != 1))
438+ else if ((size(aP.payments) != 1))
409439 then throw("One attached payment expected")
410- else if ((br != V))
411- then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
412- else if (!(ap))
413- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
414- else if (if ((bs > al))
440+ else if ((bD != ae))
441+ then throw(("Incorrect asset attached. Expected: " + toBase58String(ae)))
442+ else if (!(ax))
443+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
444+ else if (if ((bE > at))
415445 then true
416- else (bt > am))
417- then aD(bs, bt)
418- else [IntegerEntry(f, (T - bs)), IntegerEntry(g, (U - bt)), IntegerEntry(k, (W - bq)), Burn(V, bq), ScriptTransfer(aG.caller, bs, M), ScriptTransfer(aG.caller, bt, N)]
446+ else (bF > au))
447+ then aL(bE, bF)
448+ else [IntegerEntry(f, (ac - bE)), IntegerEntry(g, (ad - bF)), IntegerEntry(k, (af - bC)), Burn(ae, bC), ScriptTransfer(aP.caller, bE, W), ScriptTransfer(aP.caller, bF, X)]
419449 }
420450
421451
422452
423-@Callable(aG)
424-func exchange (bu) = {
425- let bv = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
426- let bq = bv._1
427- let br = bv._2
428- func bw (bx,by) = {
429- let bz = fraction(by, bq, (bq + bx))
430- let bA = fraction(bz, (Z - X), Z)
431- let bB = fraction(bz, Y, Z)
432- if ((bu > bA))
433- then throw(((("Calculated amount to receive " + toString(bA)) + " is less than specified minimum ") + toString(bu)))
434- else $Tuple3(bz, bA, bB)
453+@Callable(aP)
454+func exchange (bG) = {
455+ let bH = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
456+ let bC = bH._1
457+ let bD = bH._2
458+ func bI (bJ,bK) = {
459+ let bL = fraction(bK, bC, (bC + bJ))
460+ let bM = fraction(bL, (ai - ag), ai)
461+ let bN = fraction(bL, ah, ai)
462+ if ((bG > bM))
463+ then throw(((("Calculated amount to receive " + toString(bM)) + " is less than specified minimum ") + toString(bG)))
464+ else $Tuple3(bL, bM, bN)
435465 }
436466
437- if (!(J))
467+ if (!(T))
438468 then throw("DApp is inactive at this moment")
439- else if (if ((T == 0))
469+ else if (if ((ac == 0))
440470 then true
441- else (U == 0))
471+ else (ad == 0))
442472 then throw("Can't exchange with zero balance")
443- else if ((0 >= bu))
444- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bu)))
445- else if ((size(aG.payments) != 1))
473+ else if ((0 >= bG))
474+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bG)))
475+ else if ((size(aP.payments) != 1))
446476 then throw("One attached payment expected")
447- else if (!(ap))
448- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
449- else if ((br == M))
477+ else if (!(ax))
478+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
479+ else if ((bD == W))
450480 then {
451- let bC = N
452- let bD = bw(T, U)
453- let bz = bD._1
454- let bA = bD._2
455- let bB = bD._3
456- let bE = (T + bq)
457- let bF = ((U - bA) - bB)
458- if (if (if ((M == H))
459- then (ag >= bE)
481+ let bO = X
482+ let bP = bI(ac, ad)
483+ let bL = bP._1
484+ let bM = bP._2
485+ let bN = bP._3
486+ let bQ = (ac + bC)
487+ let bR = ((ad - bM) - bN)
488+ if (if (if ((W == R))
489+ then (ap >= bQ)
460490 else false)
461491 then true
462- else if ((N == H))
463- then (ag >= bF)
492+ else if ((X == R))
493+ then (ap >= bR)
464494 else false)
465- then aA(bA, am, S)
466- else [IntegerEntry(f, bE), IntegerEntry(g, bF), ScriptTransfer(aG.caller, bA, bC), ScriptTransfer(A, bB, bC)]
495+ then aI(bM, au, ab)
496+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
467497 }
468- else if ((br == N))
498+ else if ((bD == X))
469499 then {
470- let bC = M
471- let bG = bw(U, T)
472- let bz = bG._1
473- let bA = bG._2
474- let bB = bG._3
475- let bE = ((T - bA) - bB)
476- let bF = (U + bq)
477- if (if (if ((M == H))
478- then (ag >= bE)
500+ let bO = W
501+ let bS = bI(ad, ac)
502+ let bL = bS._1
503+ let bM = bS._2
504+ let bN = bS._3
505+ let bQ = ((ac - bM) - bN)
506+ let bR = (ad + bC)
507+ if (if (if ((W == R))
508+ then (ap >= bQ)
479509 else false)
480510 then true
481- else if ((N == H))
482- then (ag >= bF)
511+ else if ((X == R))
512+ then (ap >= bR)
483513 else false)
484- then aA(bA, al, O)
485- else [IntegerEntry(f, bE), IntegerEntry(g, bF), ScriptTransfer(aG.caller, bA, bC), ScriptTransfer(A, bB, bC)]
514+ then aI(bM, at, Y)
515+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
486516 }
487- else throw(((("Incorrect asset attached. Expected: " + K) + " or ") + L))
517+ else throw(((("Incorrect asset attached. Expected: " + U) + " or ") + V))
488518 }
489519
490520
491521
492-@Callable(aG)
493-func shutdown () = if (!(J))
522+@Callable(aP)
523+func shutdown () = if (!(T))
494524 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
495- else if (!(containsElement([v, w, x, y], aG.callerPublicKey)))
525+ else if (!(containsElement([E, F, G, H], aP.callerPublicKey)))
496526 then throw("Only admin can call this function")
497- else av("Paused by admin")
527+ else aD("Paused by admin")
498528
499529
500530
501-@Callable(aG)
502-func activate () = if (J)
531+@Callable(aP)
532+func activate () = if (T)
503533 then throw("DApp is already active")
504- else if (!(containsElement([v, w, x, y], aG.callerPublicKey)))
534+ else if (!(containsElement([E, F, G, H], aP.callerPublicKey)))
505535 then throw("Only admin can call this function")
506536 else [BooleanEntry(c, true), DeleteEntry(n)]
507537
508538
509539
510-@Callable(aG)
511-func takeIntoAccountExtraFunds (bH) = {
512- let bI = (an - T)
513- let bJ = (ao - U)
514- let bK = (bI - (if ((M == H))
515- then bH
540+@Callable(aP)
541+func takeIntoAccountExtraFunds (bT) = {
542+ let bU = (av - ac)
543+ let bV = (aw - ad)
544+ let bW = (bU - (if ((W == unit))
545+ then bT
516546 else 0))
517- let bL = (bJ - (if ((N == H))
518- then bH
547+ let bX = (bV - (if ((X == unit))
548+ then bT
519549 else 0))
520- if (!(J))
550+ if (!(T))
521551 then throw("DApp is inactive at this moment")
522- else if ((aG.caller != this))
552+ else if ((aP.caller != this))
523553 then throw("Only the DApp itself can call this function")
524- else if ((0 > bH))
525- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bH)))
526- else if (if ((0 > bI))
554+ else if ((0 > bT))
555+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bT)))
556+ else if (if ((0 > bU))
527557 then true
528- else (0 > bJ))
529- then av("Enroll amount negative")
530- else if (if ((0 > bK))
558+ else (0 > bV))
559+ then aD("Enroll amount negative")
560+ else if (if ((0 > bW))
531561 then true
532- else (0 > bL))
562+ else (0 > bX))
533563 then throw("Too large amountLeave")
534- else [IntegerEntry(f, (T + bK)), IntegerEntry(g, (U + bL)), IntegerEntry(("last_income_" + K), bK), IntegerEntry(("last_income_" + L), bL)]
564+ else [IntegerEntry(f, (ac + bW)), IntegerEntry(g, (ad + bX)), IntegerEntry(("last_income_" + U), bW), IntegerEntry(("last_income_" + V), bX)]
535565 }
536566
537567
538-@Verifier(bM)
539-func bN () = {
540- let P = bM
541- if ($isInstanceOf(P, "InvokeScriptTransaction"))
568+@Verifier(bY)
569+func bZ () = {
570+ let B = bY
571+ if ($isInstanceOf(B, "InvokeScriptTransaction"))
542572 then {
543- let bO = P
544- let bP = if ((bO.dApp == this))
545- then (bO.function == "takeIntoAccountExtraFunds")
573+ let ca = B
574+ let cb = if ((ca.dApp == this))
575+ then (ca.function == "takeIntoAccountExtraFunds")
546576 else false
547- let bQ = if ((bO.dApp == C))
548- then if (if (if ((bO.function == "lockNeutrino"))
549- then (size(bO.payments) == 1)
577+ let cc = if ((ca.dApp == L))
578+ then if (if (if ((ca.function == "lockNeutrino"))
579+ then (size(ca.payments) == 1)
550580 else false)
551- then (bO.payments[0].assetId == H)
581+ then (ca.payments[0].assetId == R)
552582 else false)
553583 then true
554- else if ((bO.function == "unlockNeutrino"))
555- then (size(bO.payments) == 0)
584+ else if ((ca.function == "unlockNeutrino"))
585+ then (size(ca.payments) == 0)
556586 else false
557587 else false
558- let bR = if (if (if (sigVerify(bM.bodyBytes, bM.proofs[0], v))
588+ let cd = if (if (if ((ca.dApp == M))
589+ then (ca.function == "exchange")
590+ else false)
591+ then (W == R)
592+ else false)
559593 then true
560- else sigVerify(bM.bodyBytes, bM.proofs[0], w))
594+ else if (if ((X == R))
595+ then (size(ca.payments) == 1)
596+ else false)
597+ then (ca.payments[0].assetId == R)
598+ else false
599+ let ce = if (if (if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
561600 then true
562- else sigVerify(bM.bodyBytes, bM.proofs[0], x))
601+ else sigVerify(bY.bodyBytes, bY.proofs[0], F))
563602 then true
564- else sigVerify(bM.bodyBytes, bM.proofs[0], z)
565- if (if (bP)
603+ else sigVerify(bY.bodyBytes, bY.proofs[0], G))
566604 then true
567- else bQ)
568- then bR
605+ else sigVerify(bY.bodyBytes, bY.proofs[0], I)
606+ if (if (if (cb)
607+ then true
608+ else cc)
609+ then true
610+ else cd)
611+ then ce
569612 else false
570613 }
571614 else {
572- let bS = if (sigVerify(bM.bodyBytes, bM.proofs[0], v))
615+ let cf = if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
573616 then 1
574617 else 0
575- let bT = if (sigVerify(bM.bodyBytes, bM.proofs[1], w))
618+ let cg = if (sigVerify(bY.bodyBytes, bY.proofs[1], F))
576619 then 1
577620 else 0
578- let bU = if (sigVerify(bM.bodyBytes, bM.proofs[2], x))
621+ let ch = if (sigVerify(bY.bodyBytes, bY.proofs[2], G))
579622 then 1
580623 else 0
581- (((bS + bT) + bU) >= 2)
624+ (((cf + cg) + ch) >= 2)
582625 }
583626 }
584627
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 4 #-}
1+{-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 let b = "version"
77
88 let c = "active"
99
1010 let d = "A_asset_id"
1111
1212 let e = "B_asset_id"
1313
1414 let f = "A_asset_balance"
1515
1616 let g = "B_asset_balance"
1717
1818 let h = "A_asset_init"
1919
2020 let i = "B_asset_init"
2121
2222 let j = "share_asset_id"
2323
2424 let k = "share_asset_supply"
2525
2626 let l = "commission"
2727
2828 let m = "commission_scale_delimiter"
2929
3030 let n = "shutdown_cause"
3131
3232 let o = "first_harvest"
3333
3434 let p = "first_harvest_height"
3535
3636 let q = "share_limit_on_first_harvest"
3737
3838 let r = "base_period"
3939
4040 let s = "period_length"
4141
4242 let t = "start_height"
4343
4444 let u = "first_harvest_height"
4545
46-let v = base58'DXDY2itiEcYBtGkVLnkpHtDFyWQUkoLJz79uJ7ECbMrA'
46+let v = "admin_pub_1"
4747
48-let w = base58'E6Wa1SGoktYcjHjsKrvjMiqJY3SWmGKcD8Q5L8kxSPS7'
48+let w = "admin_pub_2"
4949
50-let x = base58'AZmWJtuy4GeVrMmJH4hfFBRApe1StvhJSk4jcbT6bArQ'
50+let x = "admin_pub_3"
5151
52-let y = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
52+let y = Address(base58'3PEbqViERCoKnmcSULh6n2aiMvUdSQdCsom')
5353
54-let z = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
54+func z (A) = {
55+ let B = getString(y, A)
56+ if ($isInstanceOf(B, "String"))
57+ then {
58+ let C = B
59+ fromBase58String(C)
60+ }
61+ else {
62+ let D = B
63+ throw("Admin public key is empty")
64+ }
65+ }
5566
56-let A = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
5767
58-let B = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
68+let E = z(v)
5969
60-let C = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
70+let F = z(w)
6171
62-let D = valueOrErrorMessage(getInteger(B, r), "Empty kBasePeriod")
72+let G = z(x)
6373
64-let E = valueOrErrorMessage(getInteger(B, t), "Empty kStartHeight")
74+let H = base58'EtVkT6ed8GtbUiVVEqdmEqsp2J4qbb3rre2HFgxeVYdg'
6575
66-let F = valueOrErrorMessage(getInteger(B, s), "Empty kPeriodLength")
76+let I = base58'Czn4yoAuUZCVCLJDRfskn8URfkwpknwBTZDbs1wFrY7h'
6777
68-let G = ((D + ((height - E) / F)) + 3)
78+let J = Address(base58'3P6J84oH51DzY6xk2mT5TheXRbrCwBMxonp')
6979
70-let H = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
80+let K = Address(base58'3PQZWxShKGRgBN1qoJw6B4s9YWS9FneZTPg')
7181
72-let I = (9 * value(value(assetInfo(H)).minSponsoredFee))
82+let L = Address(base58'3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ')
7383
74-let J = getBooleanValue(this, c)
84+let M = Address(base58'3PHaNgomBkrvEL2QnuJarQVJa71wjw9qiqG')
7585
76-let K = getStringValue(this, d)
86+let N = valueOrErrorMessage(getInteger(K, r), "Empty kBasePeriod")
7787
78-let L = getStringValue(this, e)
88+let O = valueOrErrorMessage(getInteger(K, t), "Empty kStartHeight")
7989
80-let M = if ((K == "WAVES"))
90+let P = valueOrErrorMessage(getInteger(K, s), "Empty kPeriodLength")
91+
92+let Q = ((N + ((height - O) / P)) + 3)
93+
94+let R = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
95+
96+let S = 270000
97+
98+let T = getBooleanValue(this, c)
99+
100+let U = getStringValue(this, d)
101+
102+let V = getStringValue(this, e)
103+
104+let W = if ((U == "WAVES"))
81105 then unit
82- else fromBase58String(K)
106+ else fromBase58String(U)
83107
84-let N = if ((L == "WAVES"))
108+let X = if ((V == "WAVES"))
85109 then unit
86- else fromBase58String(L)
110+ else fromBase58String(V)
87111
88-let O = {
89- let P = M
90- if ($isInstanceOf(P, "ByteVector"))
112+let Y = {
113+ let B = W
114+ if ($isInstanceOf(B, "ByteVector"))
91115 then {
92- let Q = P
93- value(assetInfo(Q)).name
116+ let Z = B
117+ value(assetInfo(Z)).name
94118 }
95- else if ($isInstanceOf(P, "Unit"))
119+ else if ($isInstanceOf(B, "Unit"))
96120 then {
97- let R = P
121+ let aa = B
98122 "WAVES"
99123 }
100124 else throw("Match error")
101125 }
102126
103-let S = {
104- let P = N
105- if ($isInstanceOf(P, "ByteVector"))
127+let ab = {
128+ let B = X
129+ if ($isInstanceOf(B, "ByteVector"))
106130 then {
107- let Q = P
108- value(assetInfo(Q)).name
131+ let Z = B
132+ value(assetInfo(Z)).name
109133 }
110- else if ($isInstanceOf(P, "Unit"))
134+ else if ($isInstanceOf(B, "Unit"))
111135 then {
112- let R = P
136+ let aa = B
113137 "WAVES"
114138 }
115139 else throw("Match error")
116140 }
117141
118-let T = getIntegerValue(this, f)
142+let ac = getIntegerValue(this, f)
119143
120-let U = getIntegerValue(this, g)
144+let ad = getIntegerValue(this, g)
121145
122-let V = fromBase58String(getStringValue(this, j))
146+let ae = fromBase58String(getStringValue(this, j))
123147
124-let W = getIntegerValue(this, k)
148+let af = getIntegerValue(this, k)
125149
126-let X = 3000
150+let ag = 3000
127151
128-let Y = 1200
152+let ah = 1200
129153
130-let Z = 1000000
154+let ai = 1000000
131155
132-let aa = 1000
156+let aj = 1000
133157
134-let ab = 100000000
158+let ak = 100000000
135159
136-let ac = 1000
160+let al = 1000
137161
138-let ad = 8
162+let am = 8
139163
140-func ae (af) = {
141- let P = af
142- if ($isInstanceOf(P, "ByteVector"))
164+func an (ao) = {
165+ let B = ao
166+ if ($isInstanceOf(B, "ByteVector"))
143167 then {
144- let Q = P
145- assetBalance(this, Q)
168+ let Z = B
169+ assetBalance(this, Z)
146170 }
147- else if ($isInstanceOf(P, "Unit"))
171+ else if ($isInstanceOf(B, "Unit"))
148172 then {
149- let R = P
173+ let aa = B
150174 wavesBalance(this).available
151175 }
152176 else throw("Match error")
153177 }
154178
155179
156-let ag = {
157- let P = getInteger(C, ((("rpd_balance_" + toBase58String(H)) + "_") + toString(this)))
158- if ($isInstanceOf(P, "Int"))
180+let ap = {
181+ let B = getInteger(L, ((("rpd_balance_" + toBase58String(R)) + "_") + toString(this)))
182+ if ($isInstanceOf(B, "Int"))
159183 then {
160- let ah = P
161- ah
184+ let aq = B
185+ aq
162186 }
163- else if ($isInstanceOf(P, "Unit"))
187+ else if ($isInstanceOf(B, "Unit"))
164188 then {
165- let ai = P
189+ let D = B
166190 0
167191 }
168192 else throw("Match error")
169193 }
170194
171-let aj = getIntegerValue(this, h)
195+let ar = getIntegerValue(this, h)
172196
173-let ak = getIntegerValue(this, i)
197+let as = getIntegerValue(this, i)
174198
175-let al = (T - (if ((M == H))
176- then ag
199+let at = (ac - (if ((W == R))
200+ then ap
177201 else 0))
178202
179-let am = (U - (if ((N == H))
180- then ag
203+let au = (ad - (if ((X == R))
204+ then ap
181205 else 0))
182206
183-let an = (ae(M) + (if ((M == H))
184- then ag
207+let av = (an(W) + (if ((W == R))
208+ then ap
185209 else 0))
186210
187-let ao = (ae(N) + (if ((N == H))
188- then ag
211+let aw = (an(X) + (if ((X == R))
212+ then ap
189213 else 0))
190214
191-let ap = if ((an >= T))
192- then (ao >= U)
215+let ax = if ((av >= ac))
216+ then (aw >= ad)
193217 else false
194218
195-func aq (af) = {
196- let P = af
197- if ($isInstanceOf(P, "ByteVector"))
219+func ay (ao) = {
220+ let B = ao
221+ if ($isInstanceOf(B, "ByteVector"))
198222 then {
199- let Q = P
200- let ar = toBase58String(Q)
201- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
202- $Tuple3(ar, as.name, as.decimals)
223+ let Z = B
224+ let az = toBase58String(Z)
225+ let aA = valueOrErrorMessage(assetInfo(Z), (("Asset " + az) + " doesn't exist"))
226+ $Tuple3(az, aA.name, aA.decimals)
203227 }
204- else if ($isInstanceOf(P, "Unit"))
228+ else if ($isInstanceOf(B, "Unit"))
205229 then {
206- let R = P
230+ let aa = B
207231 $Tuple3("WAVES", "WAVES", 8)
208232 }
209233 else throw("Match error")
210234 }
211235
212236
213-func at (au) = if ((au == "WAVES"))
237+func aB (aC) = if ((aC == "WAVES"))
214238 then $Tuple3("WAVES", "WAVES", 8)
215239 else {
216- let ar = au
217- let Q = fromBase58String(au)
218- let as = valueOrErrorMessage(assetInfo(Q), (("Asset " + ar) + " doesn't exist"))
219- $Tuple3(ar, as.name, as.decimals)
240+ let az = aC
241+ let Z = fromBase58String(aC)
242+ let aA = valueOrErrorMessage(assetInfo(Z), (("Asset " + az) + " doesn't exist"))
243+ $Tuple3(az, aA.name, aA.decimals)
220244 }
221245
222246
223-func av (aw) = [BooleanEntry(c, false), StringEntry(n, aw)]
247+func aD (aE) = [BooleanEntry(c, false), StringEntry(n, aE)]
224248
225249
226-func ax (ay,af) = if ((af == H))
250+func aF (aG,ao) = if ((ao == R))
227251 then {
228- let az = (ay - I)
229- if ((0 >= az))
230- then throw((((("Insufficient amount " + toString(ay)) + " to deduct staking fee ") + toString(I)) + " USD-N"))
231- else az
252+ let aH = (aG - S)
253+ if ((0 >= aH))
254+ then throw((((("Insufficient amount " + toString(aG)) + " to deduct staking fee ") + toString(S)) + " USD-N"))
255+ else aH
232256 }
233- else ay
257+ else aG
234258
235259
236-func aA (ay,aB,aC) = throw((((((((("Insufficient DApp balance to pay " + toString(ay)) + " ") + aC) + " due to staking. Available: ") + toString(aB)) + " ") + aC) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
260+func aI (aG,aJ,aK) = throw((((((((("Insufficient DApp balance to pay " + toString(aG)) + " ") + aK) + " due to staking. Available: ") + toString(aJ)) + " ") + aK) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
237261
238262
239-func aD (aE,aF) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aE)) + " ") + O) + " and ") + toString(aF)) + " ") + S) + " due to staking. Available: ") + toString(al)) + " ") + O) + " and ") + toString(am)) + " ") + S) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
263+func aL (aM,aN) = throw((((((((((((((((("Insufficient DApp balance to pay " + toString(aM)) + " ") + Y) + " and ") + toString(aN)) + " ") + ab) + " due to staking. Available: ") + toString(at)) + " ") + Y) + " and ") + toString(au)) + " ") + ab) + ". Please contact support in Telegram: https://t.me/swopfisupport"))
240264
241265
242-@Callable(aG)
243-func init (aH) = {
244- let aI = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
245- let aJ = aI._1
246- let aK = aI._2
247- let aL = $Tuple2(aG.payments[1].amount, aG.payments[1].assetId)
248- let aM = aL._1
249- let aN = aL._2
250- let aO = aq(aK)
251- let aP = aO._1
252- let aQ = aO._2
253- let aR = aO._3
254- let aS = aq(aN)
255- let aT = aS._1
256- let aU = aS._2
257- let aV = aS._3
258- if (!(containsElement([v, w, x, z], aG.callerPublicKey)))
266+func aO () = aD(((((((((((((((("Suspicious state. Actual balances: " + toString(av)) + " ") + Y) + ", ") + toString(aw)) + " ") + ab) + ". State: ") + toString(ac)) + " ") + Y) + ", ") + toString(ad)) + " ") + ab))
267+
268+
269+@Callable(aP)
270+func init (aQ) = {
271+ let aR = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
272+ let aS = aR._1
273+ let aT = aR._2
274+ let aU = $Tuple2(aP.payments[1].amount, aP.payments[1].assetId)
275+ let aV = aU._1
276+ let aW = aU._2
277+ let aX = ay(aT)
278+ let aY = aX._1
279+ let aZ = aX._2
280+ let ba = aX._3
281+ let bb = ay(aW)
282+ let bc = bb._1
283+ let bd = bb._2
284+ let be = bb._3
285+ if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
259286 then throw("Only admin can call this function")
260287 else if (isDefined(getBoolean(this, c)))
261288 then throw("DApp is already active")
262- else if ((aK == aN))
289+ else if ((aT == aW))
263290 then throw("Assets must be different")
264291 else {
265- let aW = ((("s" + take(aQ, 7)) + "_") + take(aU, 7))
266- let aX = ((((("ShareToken of SwopFi protocol for " + aQ) + " and ") + aU) + " at address ") + toString(this))
267- let aY = ((aR + aV) / 2)
268- let aZ = fraction(pow(aJ, aR, 5, 1, aR, HALFDOWN), pow(aM, aV, 5, 1, aV, HALFDOWN), pow(10, 0, aY, 0, 0, HALFDOWN))
269- let ba = Issue(aW, aX, aZ, aY, true)
270- let bb = calculateAssetId(ba)
271- let bc = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aP), StringEntry(e, aT), IntegerEntry(f, aJ), IntegerEntry(g, aM), IntegerEntry(l, X), IntegerEntry(m, Z), ba, StringEntry(j, toBase58String(bb)), IntegerEntry(k, aZ), ScriptTransfer(aG.caller, aZ, bb)]
272- if (aH)
273- then (bc ++ [BooleanEntry(o, aH), IntegerEntry(p, (E + (G * F)))])
274- else bc
292+ let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
293+ let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
294+ let bh = ((ba + be) / 2)
295+ let bi = pow(aS, ba, 5, 1, ba, DOWN)
296+ let bj = pow(aV, be, 5, 1, be, DOWN)
297+ let bk = pow(10, 0, bh, 0, 0, DOWN)
298+ let bl = fraction(bi, bj, bk)
299+ let bm = Issue(bf, bg, bl, bh, true)
300+ let bn = calculateAssetId(bm)
301+ let bo = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(l, ag), IntegerEntry(m, ai), bm, StringEntry(j, toBase58String(bn)), IntegerEntry(k, bl), ScriptTransfer(aP.caller, bl, bn)]
302+ if (aQ)
303+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
304+ else bo
275305 }
276306 }
277307
278308
279309
280-@Callable(aG)
281-func initWithInitRatio (bd,be,K,L,aH) = {
282- let bf = at(K)
283- let aP = bf._1
284- let aQ = bf._2
285- let aR = bf._3
286- let bg = at(L)
287- let aT = bg._1
288- let aU = bg._2
289- let aV = bg._3
290- if (!(containsElement([v, w, x, z], aG.callerPublicKey)))
310+@Callable(aP)
311+func initWithInitRatio (bp,bq,U,V,aQ) = {
312+ let br = aB(U)
313+ let aY = br._1
314+ let aZ = br._2
315+ let ba = br._3
316+ let bs = aB(V)
317+ let bc = bs._1
318+ let bd = bs._2
319+ let be = bs._3
320+ if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
291321 then throw("Only admin can call this function")
292322 else if (isDefined(getBoolean(this, c)))
293323 then throw("DApp is already active")
294- else if ((K == L))
324+ else if ((U == V))
295325 then throw("Assets must be different")
296326 else {
297- let aW = ((("s" + take(aQ, 7)) + "_") + take(aU, 7))
298- let aX = ((((("ShareToken of SwopFi protocol for " + aQ) + " and ") + aU) + " at address ") + toString(this))
299- let aY = ((aR + aV) / 2)
300- let aZ = 0
301- let ba = Issue(aW, aX, aZ, aY, true)
302- let bb = calculateAssetId(ba)
303- let bc = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aP), StringEntry(e, aT), IntegerEntry(h, bd), IntegerEntry(i, be), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, X), IntegerEntry(m, Z), ba, StringEntry(j, toBase58String(bb)), IntegerEntry(p, (E + (G * F))), IntegerEntry(k, aZ)]
304- if (aH)
305- then (bc ++ [BooleanEntry(o, aH), IntegerEntry(p, (E + (G * F)))])
306- else bc
327+ let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
328+ let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
329+ let bh = ((ba + be) / 2)
330+ let bl = 0
331+ let bm = Issue(bf, bg, bl, bh, true)
332+ let bn = calculateAssetId(bm)
333+ let bo = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(h, bp), IntegerEntry(i, bq), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, ag), IntegerEntry(m, ai), bm, StringEntry(j, toBase58String(bn)), IntegerEntry(k, bl)]
334+ if (aQ)
335+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
336+ else bo
307337 }
308338 }
309339
310340
311341
312-@Callable(aG)
313-func keepLimitForFirstHarvest (bh) = if (!(J))
342+@Callable(aP)
343+func keepLimitForFirstHarvest (bt) = if (!(T))
314344 then throw("DApp is inactive at this moment")
315- else if (!(containsElement([v, w, x, z], aG.callerPublicKey)))
345+ else if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
316346 then throw("Only admin can call this function")
317- else [IntegerEntry(q, bh)]
347+ else [IntegerEntry(q, bt)]
318348
319349
320350
321-@Callable(aG)
322-func replenishWithTwoTokens (bi) = {
323- let aK = aG.payments[0].assetId
324- let aN = aG.payments[1].assetId
325- let aJ = ax(aG.payments[0].amount, aK)
326- let aM = ax(aG.payments[1].amount, aN)
327- if (if ((T == 0))
328- then (U == 0)
351+@Callable(aP)
352+func replenishWithTwoTokens (bu) = {
353+ let aT = aP.payments[0].assetId
354+ let aW = aP.payments[1].assetId
355+ let aS = aF(aP.payments[0].amount, aT)
356+ let aV = aF(aP.payments[1].amount, aW)
357+ if (if ((ac == 0))
358+ then (ad == 0)
329359 else false)
330360 then {
331- let bj = aq(aK)
332- let aP = bj._1
333- let aQ = bj._2
334- let aR = bj._3
335- let bk = aq(aN)
336- let aT = bk._1
337- let aU = bk._2
338- let aV = bk._3
339- let bl = fraction(fraction(aj, ab, aJ), aa, fraction(ak, ab, aM))
340- if ((aK == aN))
361+ let bv = ay(aT)
362+ let aY = bv._1
363+ let aZ = bv._2
364+ let ba = bv._3
365+ let bw = ay(aW)
366+ let bc = bw._1
367+ let bd = bw._2
368+ let be = bw._3
369+ let bx = fraction(fraction(ar, ak, aS), aj, fraction(as, ak, aV))
370+ if ((aT == aW))
341371 then throw("Assets must be different")
342372 else {
343- let aY = ((aR + aV) / 2)
344- let aZ = fraction(pow(aJ, aR, 5, 1, aR, HALFDOWN), pow(aM, aV, 5, 1, aV, HALFDOWN), pow(10, 0, aY, 0, 0, HALFDOWN))
345- if (!(J))
373+ let bh = ((ba + be) / 2)
374+ let bl = fraction(pow(aS, ba, 5, 1, ba, DOWN), pow(aV, be, 5, 1, be, DOWN), pow(10, 0, bh, 0, 0, DOWN))
375+ if (!(T))
346376 then throw("DApp is inactive at this moment")
347- else if (if ((0 > bi))
377+ else if (if ((0 > bu))
348378 then true
349- else (bi > ac))
350- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bi)))
351- else if ((size(aG.payments) != 2))
379+ else (bu > al))
380+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
381+ else if ((size(aP.payments) != 2))
352382 then throw("Two attached assets expected")
353- else if (if ((((aa * (ac - bi)) / ac) > bl))
383+ else if (if ((((aj * (al - bu)) / al) > bx))
354384 then true
355- else (bl > ((aa * (ac + bi)) / ac)))
385+ else (bx > ((aj * (al + bu)) / al)))
356386 then throw("Incorrect assets amount: amounts must have the contract ratio")
357- else if (if ((aK != M))
387+ else if (if ((aT != W))
358388 then true
359- else (aN != N))
360- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
361- else if ((aZ == 0))
389+ else (aW != X))
390+ then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
391+ else if ((bl == 0))
362392 then throw("Too small amount to replenish")
363- else if (!(ap))
364- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
365- else [Reissue(V, aZ, true), IntegerEntry(f, aJ), IntegerEntry(g, aM), IntegerEntry(k, aZ), ScriptTransfer(aG.caller, aZ, V)]
393+ else if (!(ax))
394+ then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
395+ else [Reissue(ae, bl, true), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(k, bl), ScriptTransfer(aP.caller, bl, ae)]
366396 }
367397 }
368398 else {
369- let bl = fraction(fraction(T, ab, aJ), aa, fraction(U, ab, aM))
370- let bm = fraction(aJ, ab, T)
371- let bn = fraction(aM, ab, U)
372- let bo = fraction(min([bm, bn]), W, ab)
373- if (!(J))
399+ let bx = fraction(fraction(ac, ak, aS), aj, fraction(ad, ak, aV))
400+ let by = fraction(aS, ak, ac)
401+ let bz = fraction(aV, ak, ad)
402+ let bA = fraction(min([by, bz]), af, ak)
403+ if (!(T))
374404 then throw("DApp is inactive at this moment")
375- else if (if ((0 > bi))
405+ else if (if ((0 > bu))
376406 then true
377- else (bi > ac))
378- then throw(((("Slippage tolerance must be between 0 and " + toString(ac)) + " inclusively. Actual: ") + toString(bi)))
379- else if ((size(aG.payments) != 2))
407+ else (bu > al))
408+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
409+ else if ((size(aP.payments) != 2))
380410 then throw("Two attached assets expected")
381- else if (if ((aK != M))
411+ else if (if ((aT != W))
382412 then true
383- else (aN != N))
384- then throw(((("Incorrect assets attached. Expected: " + K) + " and ") + L))
385- else if (if ((((aa * (ac - bi)) / ac) > bl))
413+ else (aW != X))
414+ then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
415+ else if (if ((((aj * (al - bu)) / al) > bx))
386416 then true
387- else (bl > ((aa * (ac + bi)) / ac)))
417+ else (bx > ((aj * (al + bu)) / al)))
388418 then throw("Incorrect assets amount: amounts must have the contract ratio")
389- else if ((bo == 0))
419+ else if ((bA == 0))
390420 then throw("Too small amount to replenish")
391- else if (!(ap))
392- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
393- else [IntegerEntry(f, (T + aJ)), IntegerEntry(g, (U + aM)), IntegerEntry(k, (W + bo)), Reissue(V, bo, true), ScriptTransfer(aG.caller, bo, V)]
421+ else if (!(ax))
422+ then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
423+ else [IntegerEntry(f, (ac + aS)), IntegerEntry(g, (ad + aV)), IntegerEntry(k, (af + bA)), Reissue(ae, bA, true), ScriptTransfer(aP.caller, bA, ae)]
394424 }
395425 }
396426
397427
398428
399-@Callable(aG)
429+@Callable(aP)
400430 func withdraw () = {
401- let bp = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
402- let bq = bp._1
403- let br = bp._2
404- let bs = ax(fraction(bq, T, W), M)
405- let bt = ax(fraction(bq, U, W), N)
406- if (!(J))
431+ let bB = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
432+ let bC = bB._1
433+ let bD = bB._2
434+ let bE = aF(fraction(bC, ac, af), W)
435+ let bF = aF(fraction(bC, ad, af), X)
436+ if (!(T))
407437 then throw("DApp is inactive at this moment")
408- else if ((size(aG.payments) != 1))
438+ else if ((size(aP.payments) != 1))
409439 then throw("One attached payment expected")
410- else if ((br != V))
411- then throw(("Incorrect asset attached. Expected: " + toBase58String(V)))
412- else if (!(ap))
413- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
414- else if (if ((bs > al))
440+ else if ((bD != ae))
441+ then throw(("Incorrect asset attached. Expected: " + toBase58String(ae)))
442+ else if (!(ax))
443+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
444+ else if (if ((bE > at))
415445 then true
416- else (bt > am))
417- then aD(bs, bt)
418- else [IntegerEntry(f, (T - bs)), IntegerEntry(g, (U - bt)), IntegerEntry(k, (W - bq)), Burn(V, bq), ScriptTransfer(aG.caller, bs, M), ScriptTransfer(aG.caller, bt, N)]
446+ else (bF > au))
447+ then aL(bE, bF)
448+ else [IntegerEntry(f, (ac - bE)), IntegerEntry(g, (ad - bF)), IntegerEntry(k, (af - bC)), Burn(ae, bC), ScriptTransfer(aP.caller, bE, W), ScriptTransfer(aP.caller, bF, X)]
419449 }
420450
421451
422452
423-@Callable(aG)
424-func exchange (bu) = {
425- let bv = $Tuple2(aG.payments[0].amount, aG.payments[0].assetId)
426- let bq = bv._1
427- let br = bv._2
428- func bw (bx,by) = {
429- let bz = fraction(by, bq, (bq + bx))
430- let bA = fraction(bz, (Z - X), Z)
431- let bB = fraction(bz, Y, Z)
432- if ((bu > bA))
433- then throw(((("Calculated amount to receive " + toString(bA)) + " is less than specified minimum ") + toString(bu)))
434- else $Tuple3(bz, bA, bB)
453+@Callable(aP)
454+func exchange (bG) = {
455+ let bH = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
456+ let bC = bH._1
457+ let bD = bH._2
458+ func bI (bJ,bK) = {
459+ let bL = fraction(bK, bC, (bC + bJ))
460+ let bM = fraction(bL, (ai - ag), ai)
461+ let bN = fraction(bL, ah, ai)
462+ if ((bG > bM))
463+ then throw(((("Calculated amount to receive " + toString(bM)) + " is less than specified minimum ") + toString(bG)))
464+ else $Tuple3(bL, bM, bN)
435465 }
436466
437- if (!(J))
467+ if (!(T))
438468 then throw("DApp is inactive at this moment")
439- else if (if ((T == 0))
469+ else if (if ((ac == 0))
440470 then true
441- else (U == 0))
471+ else (ad == 0))
442472 then throw("Can't exchange with zero balance")
443- else if ((0 >= bu))
444- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bu)))
445- else if ((size(aG.payments) != 1))
473+ else if ((0 >= bG))
474+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bG)))
475+ else if ((size(aP.payments) != 1))
446476 then throw("One attached payment expected")
447- else if (!(ap))
448- then av(((((((((((((((("Suspicious state. Actual balances: " + toString(T)) + " ") + O) + ", ") + toString(U)) + " ") + S) + ". State: ") + toString(ae(M))) + " ") + O) + ", ") + toString(ae(N))) + " ") + S))
449- else if ((br == M))
477+ else if (!(ax))
478+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
479+ else if ((bD == W))
450480 then {
451- let bC = N
452- let bD = bw(T, U)
453- let bz = bD._1
454- let bA = bD._2
455- let bB = bD._3
456- let bE = (T + bq)
457- let bF = ((U - bA) - bB)
458- if (if (if ((M == H))
459- then (ag >= bE)
481+ let bO = X
482+ let bP = bI(ac, ad)
483+ let bL = bP._1
484+ let bM = bP._2
485+ let bN = bP._3
486+ let bQ = (ac + bC)
487+ let bR = ((ad - bM) - bN)
488+ if (if (if ((W == R))
489+ then (ap >= bQ)
460490 else false)
461491 then true
462- else if ((N == H))
463- then (ag >= bF)
492+ else if ((X == R))
493+ then (ap >= bR)
464494 else false)
465- then aA(bA, am, S)
466- else [IntegerEntry(f, bE), IntegerEntry(g, bF), ScriptTransfer(aG.caller, bA, bC), ScriptTransfer(A, bB, bC)]
495+ then aI(bM, au, ab)
496+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
467497 }
468- else if ((br == N))
498+ else if ((bD == X))
469499 then {
470- let bC = M
471- let bG = bw(U, T)
472- let bz = bG._1
473- let bA = bG._2
474- let bB = bG._3
475- let bE = ((T - bA) - bB)
476- let bF = (U + bq)
477- if (if (if ((M == H))
478- then (ag >= bE)
500+ let bO = W
501+ let bS = bI(ad, ac)
502+ let bL = bS._1
503+ let bM = bS._2
504+ let bN = bS._3
505+ let bQ = ((ac - bM) - bN)
506+ let bR = (ad + bC)
507+ if (if (if ((W == R))
508+ then (ap >= bQ)
479509 else false)
480510 then true
481- else if ((N == H))
482- then (ag >= bF)
511+ else if ((X == R))
512+ then (ap >= bR)
483513 else false)
484- then aA(bA, al, O)
485- else [IntegerEntry(f, bE), IntegerEntry(g, bF), ScriptTransfer(aG.caller, bA, bC), ScriptTransfer(A, bB, bC)]
514+ then aI(bM, at, Y)
515+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
486516 }
487- else throw(((("Incorrect asset attached. Expected: " + K) + " or ") + L))
517+ else throw(((("Incorrect asset attached. Expected: " + U) + " or ") + V))
488518 }
489519
490520
491521
492-@Callable(aG)
493-func shutdown () = if (!(J))
522+@Callable(aP)
523+func shutdown () = if (!(T))
494524 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
495- else if (!(containsElement([v, w, x, y], aG.callerPublicKey)))
525+ else if (!(containsElement([E, F, G, H], aP.callerPublicKey)))
496526 then throw("Only admin can call this function")
497- else av("Paused by admin")
527+ else aD("Paused by admin")
498528
499529
500530
501-@Callable(aG)
502-func activate () = if (J)
531+@Callable(aP)
532+func activate () = if (T)
503533 then throw("DApp is already active")
504- else if (!(containsElement([v, w, x, y], aG.callerPublicKey)))
534+ else if (!(containsElement([E, F, G, H], aP.callerPublicKey)))
505535 then throw("Only admin can call this function")
506536 else [BooleanEntry(c, true), DeleteEntry(n)]
507537
508538
509539
510-@Callable(aG)
511-func takeIntoAccountExtraFunds (bH) = {
512- let bI = (an - T)
513- let bJ = (ao - U)
514- let bK = (bI - (if ((M == H))
515- then bH
540+@Callable(aP)
541+func takeIntoAccountExtraFunds (bT) = {
542+ let bU = (av - ac)
543+ let bV = (aw - ad)
544+ let bW = (bU - (if ((W == unit))
545+ then bT
516546 else 0))
517- let bL = (bJ - (if ((N == H))
518- then bH
547+ let bX = (bV - (if ((X == unit))
548+ then bT
519549 else 0))
520- if (!(J))
550+ if (!(T))
521551 then throw("DApp is inactive at this moment")
522- else if ((aG.caller != this))
552+ else if ((aP.caller != this))
523553 then throw("Only the DApp itself can call this function")
524- else if ((0 > bH))
525- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bH)))
526- else if (if ((0 > bI))
554+ else if ((0 > bT))
555+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bT)))
556+ else if (if ((0 > bU))
527557 then true
528- else (0 > bJ))
529- then av("Enroll amount negative")
530- else if (if ((0 > bK))
558+ else (0 > bV))
559+ then aD("Enroll amount negative")
560+ else if (if ((0 > bW))
531561 then true
532- else (0 > bL))
562+ else (0 > bX))
533563 then throw("Too large amountLeave")
534- else [IntegerEntry(f, (T + bK)), IntegerEntry(g, (U + bL)), IntegerEntry(("last_income_" + K), bK), IntegerEntry(("last_income_" + L), bL)]
564+ else [IntegerEntry(f, (ac + bW)), IntegerEntry(g, (ad + bX)), IntegerEntry(("last_income_" + U), bW), IntegerEntry(("last_income_" + V), bX)]
535565 }
536566
537567
538-@Verifier(bM)
539-func bN () = {
540- let P = bM
541- if ($isInstanceOf(P, "InvokeScriptTransaction"))
568+@Verifier(bY)
569+func bZ () = {
570+ let B = bY
571+ if ($isInstanceOf(B, "InvokeScriptTransaction"))
542572 then {
543- let bO = P
544- let bP = if ((bO.dApp == this))
545- then (bO.function == "takeIntoAccountExtraFunds")
573+ let ca = B
574+ let cb = if ((ca.dApp == this))
575+ then (ca.function == "takeIntoAccountExtraFunds")
546576 else false
547- let bQ = if ((bO.dApp == C))
548- then if (if (if ((bO.function == "lockNeutrino"))
549- then (size(bO.payments) == 1)
577+ let cc = if ((ca.dApp == L))
578+ then if (if (if ((ca.function == "lockNeutrino"))
579+ then (size(ca.payments) == 1)
550580 else false)
551- then (bO.payments[0].assetId == H)
581+ then (ca.payments[0].assetId == R)
552582 else false)
553583 then true
554- else if ((bO.function == "unlockNeutrino"))
555- then (size(bO.payments) == 0)
584+ else if ((ca.function == "unlockNeutrino"))
585+ then (size(ca.payments) == 0)
556586 else false
557587 else false
558- let bR = if (if (if (sigVerify(bM.bodyBytes, bM.proofs[0], v))
588+ let cd = if (if (if ((ca.dApp == M))
589+ then (ca.function == "exchange")
590+ else false)
591+ then (W == R)
592+ else false)
559593 then true
560- else sigVerify(bM.bodyBytes, bM.proofs[0], w))
594+ else if (if ((X == R))
595+ then (size(ca.payments) == 1)
596+ else false)
597+ then (ca.payments[0].assetId == R)
598+ else false
599+ let ce = if (if (if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
561600 then true
562- else sigVerify(bM.bodyBytes, bM.proofs[0], x))
601+ else sigVerify(bY.bodyBytes, bY.proofs[0], F))
563602 then true
564- else sigVerify(bM.bodyBytes, bM.proofs[0], z)
565- if (if (bP)
603+ else sigVerify(bY.bodyBytes, bY.proofs[0], G))
566604 then true
567- else bQ)
568- then bR
605+ else sigVerify(bY.bodyBytes, bY.proofs[0], I)
606+ if (if (if (cb)
607+ then true
608+ else cc)
609+ then true
610+ else cd)
611+ then ce
569612 else false
570613 }
571614 else {
572- let bS = if (sigVerify(bM.bodyBytes, bM.proofs[0], v))
615+ let cf = if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
573616 then 1
574617 else 0
575- let bT = if (sigVerify(bM.bodyBytes, bM.proofs[1], w))
618+ let cg = if (sigVerify(bY.bodyBytes, bY.proofs[1], F))
576619 then 1
577620 else 0
578- let bU = if (sigVerify(bM.bodyBytes, bM.proofs[2], x))
621+ let ch = if (sigVerify(bY.bodyBytes, bY.proofs[2], G))
579622 then 1
580623 else 0
581- (((bS + bT) + bU) >= 2)
624+ (((cf + cg) + ch) >= 2)
582625 }
583626 }
584627

github/deemru/w8io/6500d08 
252.47 ms