tx · 3wpRZsQkfKA2UdC2qjAfK4nUxrBTPhWzJoXcoG4Bmbh2

3N7BU5gCAGi7MDzeD9iJJkG1WVpuRPqSNhV:  -0.01400000 Waves

2021.07.15 18:02 [1614876] smart account 3N7BU5gCAGi7MDzeD9iJJkG1WVpuRPqSNhV > SELF 0.00000000 Waves

{ "type": 13, "id": "3wpRZsQkfKA2UdC2qjAfK4nUxrBTPhWzJoXcoG4Bmbh2", "fee": 1400000, "feeAssetId": null, "timestamp": 1626361295471, "version": 2, "chainId": 84, "sender": "3N7BU5gCAGi7MDzeD9iJJkG1WVpuRPqSNhV", "senderPublicKey": "EWxaXh3T8so3Dg8bVueuCWJ5MMa5uUdF61HLB16P4ECU", "proofs": [ "4D596bTyJCtAGCWVHUr8tEeQyHW4MLBnSNoQhJmGJrKViTvFdvkYSgLSpbLZwn6CtxadiPKrU5VRueWp4nChkTcP", "2qygisDPvaD66Z3WTKb7qRhifbePKWJjFsmkHqdxhDBPActDjb2Me1tRvcACyRPjPbKyVS46oYy7JXhqhpPC4MaP" ], "script": "base64:AAIFAAAAAAAAACoIAhIDCgEEEgcKBQEBCAgEEgMKAQESAwoBARIAEgMKAQESABIAEgMKAQEAAABLAAAAAAd2ZXJzaW9uAgAAAAUxLjAuMAAAAAAKa2V5VmVyc2lvbgIAAAAHdmVyc2lvbgAAAAAJa2V5QWN0aXZlAgAAAAZhY3RpdmUAAAAAC2tleUFzc2V0SWRBAgAAAApBX2Fzc2V0X2lkAAAAAAtrZXlBc3NldElkQgIAAAAKQl9hc3NldF9pZAAAAAALa2V5QmFsYW5jZUECAAAAD0FfYXNzZXRfYmFsYW5jZQAAAAALa2V5QmFsYW5jZUICAAAAD0JfYXNzZXRfYmFsYW5jZQAAAAAPa2V5QmFsYW5jZUluaXRBAgAAAAxBX2Fzc2V0X2luaXQAAAAAD2tleUJhbGFuY2VJbml0QgIAAAAMQl9hc3NldF9pbml0AAAAAA9rZXlTaGFyZUFzc2V0SWQCAAAADnNoYXJlX2Fzc2V0X2lkAAAAABNrZXlTaGFyZUFzc2V0U3VwcGx5AgAAABJzaGFyZV9hc3NldF9zdXBwbHkAAAAADWtleUNvbW1pc3Npb24CAAAACmNvbW1pc3Npb24AAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgIAAAAaY29tbWlzc2lvbl9zY2FsZV9kZWxpbWl0ZXIAAAAACGtleUNhdXNlAgAAAA5zaHV0ZG93bl9jYXVzZQAAAAAPa2V5Rmlyc3RIYXJ2ZXN0AgAAAA1maXJzdF9oYXJ2ZXN0AAAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQCAAAAFGZpcnN0X2hhcnZlc3RfaGVpZ2h0AAAAAAtrU2hhcmVMaW1pdAIAAAAcc2hhcmVfbGltaXRfb25fZmlyc3RfaGFydmVzdAAAAAALa0Jhc2VQZXJpb2QCAAAAC2Jhc2VfcGVyaW9kAAAAAA1rUGVyaW9kTGVuZ3RoAgAAAA1wZXJpb2RfbGVuZ3RoAAAAAAxrU3RhcnRIZWlnaHQCAAAADHN0YXJ0X2hlaWdodAAAAAATa0ZpcnN0SGFydmVzdEhlaWdodAIAAAAUZmlyc3RfaGFydmVzdF9oZWlnaHQAAAAAD2tleUFkbWluUHViS2V5MQIAAAALYWRtaW5fcHViXzEAAAAAD2tleUFkbWluUHViS2V5MgIAAAALYWRtaW5fcHViXzIAAAAAD2tleUFkbWluUHViS2V5MwIAAAALYWRtaW5fcHViXzMAAAAABm9yYWNsZQkBAAAAB0FkZHJlc3MAAAABAQAAABoBVOlFqh6QLzqu8boO5i6akl8amITh82KzCAEAAAALZ2V0QWRtaW5QdWIAAAABAAAAC2tleUFkbWluUHViBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABm9yYWNsZQUAAAALa2V5QWRtaW5QdWIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGc3RyaW5nBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAABnN0cmluZwQAAAAHbm90aGluZwUAAAAHJG1hdGNoMAkAAAIAAAABAgAAABlBZG1pbiBwdWJsaWMga2V5IGlzIGVtcHR5AAAAAAxhZG1pblB1YktleTEJAQAAAAtnZXRBZG1pblB1YgAAAAEFAAAAD2tleUFkbWluUHViS2V5MQAAAAAMYWRtaW5QdWJLZXkyCQEAAAALZ2V0QWRtaW5QdWIAAAABBQAAAA9rZXlBZG1pblB1YktleTIAAAAADGFkbWluUHViS2V5MwkBAAAAC2dldEFkbWluUHViAAAAAQUAAAAPa2V5QWRtaW5QdWJLZXkzAAAAABRhZG1pblB1YktleVN0YXJ0U3RvcAEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAAEmFkbWluUHViS2V5U3Rha2luZwEAAAAgBM915WTQwQ9OZ7kfE2TEGg3qhCRCMX0zkF1AWAqdk0oAAAAADXdhbGxldEFkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVTfPUuXiVhZ3hXg5FELVt09el+9tX+FIYkAAAAADXZvdGluZ0FkZHJlc3MJAQAAAAdBZGRyZXNzAAAAAQEAAAAaAVQaNn7fV6KdJ2lc/r/3JtTn+6HDaD4gyn8AAAAADnN0YWtpbmdBZGRyZXNzCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUuYnNz0dxupdy7LhFDzOwqkmF0Q14MgJtAAAAABRVU0ROVG9XYXZlc0V4Y2hhbmdlcgkBAAAAB0FkZHJlc3MAAAABAQAAABoBVLyvLOw52HwgF6zPLvnW0fXFIi/xmKAk8gAAAAAKYmFzZVBlcmlvZAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAADXZvdGluZ0FkZHJlc3MFAAAAC2tCYXNlUGVyaW9kAgAAABFFbXB0eSBrQmFzZVBlcmlvZAAAAAALc3RhcnRIZWlnaHQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAA12b3RpbmdBZGRyZXNzBQAAAAxrU3RhcnRIZWlnaHQCAAAAEkVtcHR5IGtTdGFydEhlaWdodAAAAAAMcGVyaW9kTGVuZ3RoCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAANdm90aW5nQWRkcmVzcwUAAAANa1BlcmlvZExlbmd0aAIAAAATRW1wdHkga1BlcmlvZExlbmd0aAAAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kCQAAZAAAAAIJAABkAAAAAgUAAAAKYmFzZVBlcmlvZAkAAGkAAAACCQAAZQAAAAIFAAAABmhlaWdodAUAAAALc3RhcnRIZWlnaHQFAAAADHBlcmlvZExlbmd0aAAAAAAAAAAAAwAAAAAEVVNETgEAAAAgtiYpwwT1zlORpA5LdSQvZIxRsfrfr1QpvUjSHSqyqtEAAAAAEHN0YWtpbmdGZWVJblVTRE4AAAAAAAAEHrAAAAAACGlzQWN0aXZlCQEAAAARQGV4dHJOYXRpdmUoMTA1MSkAAAACBQAAAAR0aGlzBQAAAAlrZXlBY3RpdmUAAAAAC3N0ckFzc2V0SWRBCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzBQAAAAtrZXlBc3NldElkQQAAAAALc3RyQXNzZXRJZEIJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMFAAAAC2tleUFzc2V0SWRCAAAAAAhhc3NldElkQQMJAAAAAAAAAgUAAAALc3RyQXNzZXRJZEECAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAC3N0ckFzc2V0SWRBAAAAAAhhc3NldElkQgMJAAAAAAAAAgUAAAALc3RyQXNzZXRJZEICAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAAC3N0ckFzc2V0SWRCAAAAAAphc3Nl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c3Rha2VkQW1vdW50VVNETgAAAAAAAAAAAAAAAAAZYWNjb3VudEJhbGFuY2VXaXRoU3Rha2VkQQkAAGQAAAACCQEAAAAOYWNjb3VudEJhbGFuY2UAAAABBQAAAAhhc3NldElkQQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABFVTRE4FAAAAEHN0YWtlZEFtb3VudFVTRE4AAAAAAAAAAAAAAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEIJAABkAAAAAgkBAAAADmFjY291bnRCYWxhbmNlAAAAAQUAAAAIYXNzZXRJZEIDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARVU0ROBQAAABBzdGFrZWRBbW91bnRVU0ROAAAAAAAAAAAAAAAAABBoYXNFbm91Z2hCYWxhbmNlAwkAAGcAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRBBQAAAAhiYWxhbmNlQQkAAGcAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgcBAAAADGdldEFzc2V0SW5mbwAAAAEAAAAHYXNzZXRJZAQAAAAHJG1hdGNoMAUAAAAHYXNzZXRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACaWQFAAAAByRtYXRjaDAEAAAACHN0cmluZ0lkCQACWAAAAAEFAAAAAmlkBAAAAARpbmZvCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAACaWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAFAAAACHN0cmluZ0lkAgAAAA4gZG9lc24ndCBleGlzdAkABRUAAAADBQAAAAhzdHJpbmdJZAgFAAAABGluZm8AAAAEbmFtZQgFAAAABGluZm8AAAAIZGVjaW1hbHMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQEAAAABXdhdmVzBQAAAAckbWF0Y2gwCQAFFQAAAAMCAAAABVdBVkVTAgAAAAVXQVZFUwAAAAAAAAAACAkAAAIAAAABAgAAAAtNYXRjaCBlcnJvcgEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEAAAAIYXNzZXRTdHIDCQAAAAAAAAIF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BQAAAAxwbXREZWNpbWFsc0EFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAAAgQAAAAEYXJnMQkAAGwAAAAGBQAAAApwbXRBbW91bnRBBQAAAAxwbXREZWNpbWFsc0EAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQQUAAAAERE9XTgQAAAAEYXJnMgkAAGwAAAAGBQAAAApwbXRBbW91bnRCBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAUAAAAAAAAAAAEFAAAADHBtdERlY2ltYWxzQgUAAAAERE9XTgQAAAAEYXJnMwkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAA1zaGFyZURlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBAAAABJzaGFyZUluaXRpYWxTdXBwbHkJAABrAAAAAwUAAAAEYXJnMQUAAAAEYXJnMgUAAAAEYXJnMwQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADWtleUNvbW1pc3Npb24FAAAACmNvbW1pc3Npb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAG2tleUNvbW1pc3Npb25TY2FsZURlbGltaXRlcgUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyCQAETAAAAAIFAAAACnNoYXJlSXNzdWUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5U2hhcmVBc3NldElkCQACWAAAAAEFAAAADHNoYXJlSXNzdWVJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQUAAAASc2hhcmVJbml0aWFsU3VwcGx5CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAASc2hhcmVJbml0aWFsU3VwcGx5BQAAAAxzaGFyZUlzc3VlSWQFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAEWluaXRXaXRoSW5pdFJhdGlvAAAABQAAAAlhbXRBc3NldEEAAAAJYW10QXNzZXRCAAAAC3N0ckFzc2V0SWRBAAAAC3N0ckFzc2V0SWRCAAAADGZpcnN0SGFydmVzdAQAAAALJHQwOTI3NzkzNjQJAQAAABZnZXRBc3NldEluZm9Gcm9tU3RyaW5nAAAAAQUAAAALc3RyQXNzZXRJZEEEAAAADnBtdFN0ckFzc2V0SWRBCAUAAAALJHQwOTI3NzkzNjQAAAACXzEEAAAADXBtdEFzc2V0TmFtZUEIBQAAAAskdDA5Mjc3OTM2NAAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAALJHQwOTI3NzkzNjQAAAACXzMEAAAACyR0MDkzNjk5NDU2CQEAAAAWZ2V0QXNzZXRJbmZvRnJvbVN0cmluZwAAAAEFAAAAC3N0ckFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAACyR0MDkzNjk5NDU2AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVCCAUAAAALJHQwOTM2OTk0NTYAAAACXzIEAAAADHBtdERlY2ltYWxzQggFAAAACyR0MDkzNjk5NDU2AAAAAl8zAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABJhZG1pblB1YktleVN0YWtpbmcFAAAAA25pbAgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5CQAAAgAAAAECAAAAIU9ubHkgYWRtaW4gY2FuIGNhbGwgdGhpcyBmdW5jdGlvbgMJAQAAAAlpc0RlZmluZWQAAAABCQAEGwAAAAIFAAAABHRoaXMFAAAACWtleUFjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkAAAAAAAACBQAAAAtzdHJBc3NldElkQQUAAAALc3RyQXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAAlzaGFyZU5hbWUJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAAXMJAAEvAAAAAgUAAAANcG10QXNzZXROYW1lQQAAAAAAAAAABwIAAAABXwkAAS8AAAACBQAAAA1wbXRBc3NldE5hbWVCAAAAAAAAAAAHBAAAABBzaGFyZURlc2NyaXB0aW9uCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAiU2hhcmVUb2tlbiBvZiBTd29wRmkgcHJvdG9jb2wgZm9yIAUAAAANcG10QXNzZXROYW1lQQIAAAAFIGFuZCAFAAAADXBtdEFzc2V0TmFtZUICAAAADCBhdCBhZGRyZXNzIAkABCUAAAABBQAAAAR0aGlzBAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAQAAAAKc2hhcmVJc3N1ZQkABEIAAAAFBQAAAAlzaGFyZU5hbWUFAAAAEHNoYXJlRGVzY3JpcHRpb24FAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAANc2hhcmVEZWNpbWFscwYEAAAADHNoYXJlSXNzdWVJZAkABDgAAAABBQAAAApzaGFyZUlzc3VlBAAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAKa2V5VmVyc2lvbgUAAAAHdmVyc2lvbgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAAJa2V5QWN0aXZlBgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAtrZXlBc3NldElkQQUAAAAOcG10U3RyQXNzZXRJZEEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAALa2V5QXNzZXRJZEIFAAAADnBtdFN0ckFzc2V0SWRCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlCYWxhbmNlSW5pdEEFAAAACWFtdEFzc2V0QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5QmFsYW5jZUluaXRCBQAAAAlhbXRBc3NldEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgAAAAAAAAAAAAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAANa2V5Q29tbWlzc2lvbgUAAAAKY29tbWlzc2lvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAba2V5Q29tbWlzc2lvblNjYWxlRGVsaW1pdGVyBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIJAARMAAAAAgUAAAAKc2hhcmVJc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlTaGFyZUFzc2V0SWQJAAJYAAAAAQUAAAAMc2hhcmVJc3N1ZUlkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5BQAAABJzaGFyZUluaXRpYWxTdXBwbHkFAAAAA25pbAMFAAAADGZpcnN0SGFydmVzdAkABE4AAAACBQAAAAliYXNlRW50cnkJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIFAAAAD2tleUZpcnN0SGFydmVzdAUAAAAMZmlyc3RIYXJ2ZXN0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABVrZXlGaXJzdEhhcnZlc3RIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQJAABoAAAAAgUAAAAVZmlyc3RIYXJ2ZXN0RW5kUGVyaW9kBQAAAAxwZXJpb2RMZW5ndGgFAAAAA25pbAUAAAAJYmFzZUVudHJ5AAAAAWkBAAAAGGtlZXBMaW1pdEZvckZpcnN0SGFydmVzdAAAAAEAAAAKc2hhcmVMaW1pdAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMJAQAAAAEhAAAAAQkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkxCQAETAAAAAIFAAAADGFkbWluUHViS2V5MgkABEwAAAACBQAAAAxhZG1pblB1YktleTMJAARMAAAAAgUAAAASYWRtaW5QdWJLZXlTdGFraW5nBQAAAANuaWwIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkAAAIAAAABAgAAACFPbmx5IGFkbWluIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tTaGFyZUxpbWl0BQAAAApzaGFyZUxpbWl0BQAAAANuaWwAAAABaQEAAAAWcmVwbGVuaXNoV2l0aFR3b1Rva2VucwAAAAEAAAARc2xpcHBhZ2VUb2xlcmFuY2UEAAAAC3BtdEFzc2V0SWRBCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkBAAAAAtwbXRBc3NldElkQggJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEAAAAHYXNzZXRJZAQAAAAKcG10QW1vdW50QQkBAAAAEGRlZHVjdFN0YWtpbmdGZWUAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQFAAAAC3BtdEFzc2V0SWRBBAAAAApwbXRBbW91bnRCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABAAAABmFtb3VudAUAAAALcG10QXNzZXRJZEIDAwkAAAAAAAACBQAAAAhiYWxhbmNlQQAAAAAAAAAAAAkAAAAAAAACBQAAAAhiYWxhbmNlQgAAAAAAAAAAAAcEAAAADSR0MDEyMTQxMTIyMTgJAQAAAAxnZXRBc3NldEluZm8AAAABBQAAAAtwbXRBc3NldElkQQQAAAAOcG10U3RyQXNzZXRJZEEIBQAAAA0kdDAxMjE0MTEyMjE4AAAAAl8xBAAAAA1wbXRBc3NldE5hbWVBCAUAAAANJHQwMTIxNDExMjIxOAAAAAJfMgQAAAAMcG10RGVjaW1hbHNBCAUAAAANJHQwMTIxNDExMjIxOAAAAAJfMwQAAAANJHQwMTIyMjcxMjMwNAkBAAAADGdldEFzc2V0SW5mbwAAAAEFAAAAC3BtdEFzc2V0SWRCBAAAAA5wbXRTdHJBc3NldElkQggFAAAADSR0MDEyMjI3MTIzMDQAAAACXzEEAAAADXBtdEFzc2V0TmFtZUIIBQAAAA0kdDAxMjIyNzEyMzA0AAAAAl8yBAAAAAxwbXREZWNpbWFsc0IIBQAAAA0kdDAxMjIyNzEyMzA0AAAAAl8zBAAAAAp0b2tlblJhdGlvCQAAawAAAAMJAABrAAAAAwUAAAAKYXNzZXRJbml0QQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACmFzc2V0SW5pdEIFAAAAC3NjYWxlVmFsdWU4BQAAAApwbXRBbW91bnRCAwkAAAAAAAACBQAAAAtwbXRBc3NldElkQQUAAAALcG10QXNzZXRJZEIJAAACAAAAAQIAAAAYQXNzZXRzIG11c3QgYmUgZGlmZmVyZW50BAAAAA1zaGFyZURlY2ltYWxzCQAAaQAAAAIJAABkAAAAAgUAAAAMcG10RGVjaW1hbHNBBQAAAAxwbXREZWNpbWFsc0IAAAAAAAAAAAIEAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkAAGsAAAADCQAAbAAAAAYFAAAACnBtdEFtb3VudEEFAAAADHBtdERlY2ltYWxzQQAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNBBQAAAARET1dOCQAAbAAAAAYFAAAACnBtdEFtb3VudEIFAAAADHBtdERlY2ltYWxzQgAAAAAAAAAABQAAAAAAAAAAAQUAAAAMcG10RGVjaW1hbHNCBQAAAARET1dOCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAADXNoYXJlRGVjaW1hbHMAAAAAAAAAAAAAAAAAAAAAAAAFAAAABERPV04DCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAAGYAAAACAAAAAAAAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQYJAABmAAAAAgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAKVNsaXBwYWdlIHRvbGVyYW5jZSBtdXN0IGJlIGJldHdlZW4gMCBhbmQgCQABpAAAAAEFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyAgAAABYgaW5jbHVzaXZlbHkuIEFjdHVhbDogCQABpAAAAAEFAAAAEXNsaXBwYWdlVG9sZXJhbmNlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAABxUd28gYXR0YWNoZWQgYXNzZXRzIGV4cGVjdGVkAwMJAABmAAAAAgkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZQAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAACnRva2VuUmF0aW8GCQAAZgAAAAIFAAAACnRva2VuUmF0aW8JAABpAAAAAgkAAGgAAAACBQAAAAtzY2FsZVZhbHVlMwkAAGQAAAACBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAARc2xpcHBhZ2VUb2xlcmFuY2UFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyCQAAAgAAAAECAAAAPUluY29ycmVjdCBhc3NldHMgYW1vdW50OiBhbW91bnRzIG11c3QgaGF2ZSB0aGUgY29udHJhY3QgcmF0aW8DAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDCQAAAAAAAAIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQAAAAAAAAAAAAkAAAIAAAABAgAAAB1Ub28gc21hbGwgYW1vdW50IHRvIHJlcGxlbmlzaAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAKcG10QW1vdW50QQUAAAALcG10QXNzZXRJZEEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRCBQAAAAtwbXRBc3NldElkQgUAAAADbmlsCQEAAAARc3VzcGVuZFN1c3BpY2lvdXMAAAAACQAETAAAAAIJAQAAAAdSZWlzc3VlAAAAAwUAAAAMc2hhcmVBc3NldElkBQAAABJzaGFyZUluaXRpYWxTdXBwbHkGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAAKcG10QW1vdW50QQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5QmFsYW5jZUIFAAAACnBtdEFtb3VudEIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAE2tleVNoYXJlQXNzZXRTdXBwbHkFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAEnNoYXJlSW5pdGlhbFN1cHBseQUAAAAMc2hhcmVBc3NldElkBQAAAANuaWwEAAAACnRva2VuUmF0aW8JAABrAAAAAwkAAGsAAAADBQAAAAhiYWxhbmNlQQUAAAALc2NhbGVWYWx1ZTgFAAAACnBtdEFtb3VudEEFAAAAC3NjYWxlVmFsdWUzCQAAawAAAAMFAAAACGJhbGFuY2VCBQAAAAtzY2FsZVZhbHVlOAUAAAAKcG10QW1vdW50QgQAAAATcmF0aW9TaGFyZVRva2Vuc0luQQkAAGsAAAADBQAAAApwbXRBbW91bnRBBQAAAAtzY2FsZVZhbHVlOAUAAAAIYmFsYW5jZUEEAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkIJAABrAAAAAwUAAAAKcG10QW1vdW50QgUAAAALc2NhbGVWYWx1ZTgFAAAACGJhbGFuY2VCBAAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAABrAAAAAwkAAZcAAAABCQAETAAAAAIFAAAAE3JhdGlvU2hhcmVUb2tlbnNJbkEJAARMAAAAAgUAAAATcmF0aW9TaGFyZVRva2Vuc0luQgUAAAADbmlsBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAtzY2FsZVZhbHVlOAMJAQAAAAEhAAAAAQUAAAAIaXNBY3RpdmUJAAACAAAAAQIAAAAfREFwcCBpcyBpbmFjdGl2ZSBhdCB0aGlzIG1vbWVudAMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBgkAAGYAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAApU2xpcHBhZ2UgdG9sZXJhbmNlIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAJAAGkAAAAAQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXICAAAAFiBpbmNsdXNpdmVseS4gQWN0dWFsOiAJAAGkAAAAAQUAAAARc2xpcHBhZ2VUb2xlcmFuY2UDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAHFR3byBhdHRhY2hlZCBhc3NldHMgZXhwZWN0ZWQDAwkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEEFAAAACGFzc2V0SWRBBgkBAAAAAiE9AAAAAgUAAAALcG10QXNzZXRJZEIFAAAACGFzc2V0SWRCCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAJUluY29ycmVjdCBhc3NldHMgYXR0YWNoZWQuIEV4cGVjdGVkOiAFAAAAC3N0ckFzc2V0SWRBAgAAAAUgYW5kIAUAAAALc3RyQXNzZXRJZEIDAwkAAGYAAAACCQAAaQAAAAIJAABoAAAAAgUAAAALc2NhbGVWYWx1ZTMJAABlAAAAAgUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAABpzbGlwcGFnZVRvbGVyYW5jZURlbGltaXRlcgUAAAAKdG9rZW5SYXRpbwYJAABmAAAAAgUAAAAKdG9rZW5SYXRpbwkAAGkAAAACCQAAaAAAAAIFAAAAC3NjYWxlVmFsdWUzCQAAZAAAAAIFAAAAGnNsaXBwYWdlVG9sZXJhbmNlRGVsaW1pdGVyBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAac2xpcHBhZ2VUb2xlcmFuY2VEZWxpbWl0ZXIJAAACAAAAAQIAAAA9SW5jb3JyZWN0IGFzc2V0cyBhbW91bnQ6IGFtb3VudHMgbXVzdCBoYXZlIHRoZSBjb250cmFjdCByYXRpbwMJAAAAAAAAAgUAAAAVc2hhcmVUb2tlblRvUGF5QW1vdW50AAAAAAAAAAAACQAAAgAAAAECAAAAHVRvbyBzbWFsbCBhbW91bnQgdG8gcmVwbGVuaXNoAwkBAAAAASEAAAABBQAAABBoYXNFbm91Z2hCYWxhbmNlCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAApwbXRBbW91bnRBBQAAAAtwbXRBc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAACnBtdEFtb3VudEIFAAAAC3BtdEFzc2V0SWRCBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VBCQAAZAAAAAIFAAAACGJhbGFuY2VBBQAAAApwbXRBbW91bnRBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAKcG10QW1vdW50QgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAATa2V5U2hhcmVBc3NldFN1cHBseQkAAGQAAAACBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQJAARMAAAAAgkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQFAAAAFXNoYXJlVG9rZW5Ub1BheUFtb3VudAYJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABVzaGFyZVRva2VuVG9QYXlBbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAAQAAAANJHQwMTY3MDMxNjg1MwkABRQAAAACCAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAAB2Fzc2V0SWQEAAAACXBtdEFtb3VudAgFAAAADSR0MDE2NzAzMTY4NTMAAAACXzEEAAAACnBtdEFzc2V0SWQIBQAAAA0kdDAxNjcwMzE2ODUzAAAAAl8yBAAAAAxhbW91bnRUb1BheUEJAQAAABBkZWR1Y3RTdGFraW5nRmVlAAAAAgkAAGsAAAADBQAAAAlwbXRBbW91bnQFAAAACGJhbGFuY2VBBQAAABBzaGFyZUFzc2V0U3VwcGx5BQAAAAhhc3NldElkQQQAAAAMYW1vdW50VG9QYXlCCQEAAAAQZGVkdWN0U3Rha2luZ0ZlZQAAAAIJAABrAAAAAwUAAAAJcG10QW1vdW50BQAAAAhiYWxhbmNlQgUAAAAQc2hhcmVBc3NldFN1cHBseQUAAAAIYXNzZXRJZEIDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAHU9uZSBhdHRhY2hlZCBwYXltZW50IGV4cGVjdGVkAwkBAAAAAiE9AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAMc2hhcmVBc3NldElkCQAAAgAAAAEJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogCQACWAAAAAEFAAAADHNoYXJlQXNzZXRJZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADAwkAAGYAAAACBQAAAAxhbW91bnRUb1BheUEFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBgkAAGYAAAACBQAAAAxhbW91bnRUb1BheUIFAAAAEWF2YWlsYWJsZUJhbGFuY2VCCQEAAAAidGhyb3dJbnN1ZmZpY2llbnRBdmFpbGFibGVCYWxhbmNlcwAAAAIFAAAADGFtb3VudFRvUGF5QQUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQkAAGUAAAACBQAAAAhiYWxhbmNlQQUAAAAMYW1vdW50VG9QYXlBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQgkAAGUAAAACBQAAAAhiYWxhbmNlQgUAAAAMYW1vdW50VG9QYXlCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABNrZXlTaGFyZUFzc2V0U3VwcGx5CQAAZQAAAAIFAAAAEHNoYXJlQXNzZXRTdXBwbHkFAAAACXBtdEFtb3VudAkABEwAAAACCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAUAAAAJcG10QW1vdW50CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAMYW1vdW50VG9QYXlBBQAAAAhhc3NldElkQQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADGFtb3VudFRvUGF5QgUAAAAIYXNzZXRJZEIFAAAAA25pbAAAAAFpAQAAAAhleGNoYW5nZQAAAAEAAAASbWluQW1vdW50VG9SZWNlaXZlBAAAAA0kdDAxODA1OTE4MTM0CQAFFAAAAAIICQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAAAABmFtb3VudAgJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAAAAAHYXNzZXRJZAQAAAAJcG10QW1vdW50CAUAAAANJHQwMTgwNTkxODEzNAAAAAJfMQQAAAAKcG10QXNzZXRJZAgFAAAADSR0MDE4MDU5MTgxMzQAAAACXzIKAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgAAAAl0b2tlbkZyb20AAAAHdG9rZW5UbwQAAAAQYW1vdW50V2l0aG91dEZlZQkAAGsAAAADBQAAAAd0b2tlblRvBQAAAAlwbXRBbW91bnQJAABkAAAAAgUAAAAJcG10QW1vdW50BQAAAAl0b2tlbkZyb20EAAAADWFtb3VudFdpdGhGZWUJAABrAAAAAwUAAAAQYW1vdW50V2l0aG91dEZlZQkAAGUAAAACBQAAABhjb21taXNzaW9uU2NhbGVEZWxpbWl0ZXIFAAAACmNvbW1pc3Npb24FAAAAGGNvbW1pc3Npb25TY2FsZURlbGltaXRlcgQAAAAQZ292ZXJuYW5jZVJld2FyZAkAAGsAAAADBQAAABBhbW91bnRXaXRob3V0RmVlBQAAABRjb21taXNzaW9uR292ZXJuYW5jZQUAAAAYY29tbWlzc2lvblNjYWxlRGVsaW1pdGVyAwkAAGYAAAACBQAAABJtaW5BbW91bnRUb1JlY2VpdmUFAAAADWFtb3VudFdpdGhGZWUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAdQ2FsY3VsYXRlZCBhbW91bnQgdG8gcmVjZWl2ZSAJAAGkAAAAAQUAAAANYW1vdW50V2l0aEZlZQIAAAAgIGlzIGxlc3MgdGhhbiBzcGVjaWZpZWQgbWluaW11bSAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlCQAFFQAAAAMFAAAAEGFtb3VudFdpdGhvdXRGZWUFAAAADWFtb3VudFdpdGhGZWUFAAAAEGdvdmVybmFuY2VSZXdhcmQDCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDAwkAAAAAAAACBQAAAAhiYWxhbmNlQQAAAAAAAAAAAAYJAAAAAAAAAgUAAAAIYmFsYW5jZUIAAAAAAAAAAAAJAAACAAAAAQIAAAAgQ2FuJ3QgZXhjaGFuZ2Ugd2l0aCB6ZXJvIGJhbGFuY2UDCQAAZwAAAAIAAAAAAAAAAAAFAAAAEm1pbkFtb3VudFRvUmVjZWl2ZQkAAAIAAAABCQABLAAAAAICAAAANE1pbmltYWwgYW1vdW50IHRvIHJlY2VpdmUgbXVzdCBiZSBwb3NpdGl2ZS4gQWN0dWFsOiAJAAGkAAAAAQUAAAASbWluQW1vdW50VG9SZWNlaXZlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1PbmUgYXR0YWNoZWQgcGF5bWVudCBleHBlY3RlZAMJAQAAAAEhAAAAAQUAAAAQaGFzRW5vdWdoQmFsYW5jZQkABE4AAAACCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAJcG10QW1vdW50BQAAAApwbXRBc3NldElkBQAAAANuaWwJAQAAABFzdXNwZW5kU3VzcGljaW91cwAAAAADCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRBBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEIEAAAADSR0MDE5NDA4MTk0OTkJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUEFAAAACGJhbGFuY2VCBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMTk0MDgxOTQ5OQAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDE5NDA4MTk0OTkAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAxOTQwODE5NDk5AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGQAAAACBQAAAAhiYWxhbmNlQQUAAAAJcG10QW1vdW50BAAAAAtuZXdCYWxhbmNlQgkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VCBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkAwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VBBwYDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VCBwkBAAAAIXRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZQAAAAMFAAAADWFtb3VudFdpdGhGZWUFAAAAEWF2YWlsYWJsZUJhbGFuY2VCBQAAAAphc3NldE5hbWVCCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwDCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAACGFzc2V0SWRCBAAAAAthc3NldElkU2VuZAUAAAAIYXNzZXRJZEEEAAAADSR0MDIwMzY4MjA0NTkJAQAAAA1jYWxjdWxhdGVGZWVzAAAAAgUAAAAIYmFsYW5jZUIFAAAACGJhbGFuY2VBBAAAABBhbW91bnRXaXRob3V0RmVlCAUAAAANJHQwMjAzNjgyMDQ1OQAAAAJfMQQAAAANYW1vdW50V2l0aEZlZQgFAAAADSR0MDIwMzY4MjA0NTkAAAACXzIEAAAAEGdvdmVybmFuY2VSZXdhcmQIBQAAAA0kdDAyMDM2ODIwNDU5AAAAAl8zBAAAAAtuZXdCYWxhbmNlQQkAAGUAAAACCQAAZQAAAAIFAAAACGJhbGFuY2VBBQAAAA1hbW91bnRXaXRoRmVlBQAAABBnb3Zlcm5hbmNlUmV3YXJkBAAAAAtuZXdCYWxhbmNlQgkAAGQAAAACBQAAAAhiYWxhbmNlQgUAAAAJcG10QW1vdW50AwMDCQAAAAAAAAIFAAAACGFzc2V0SWRBBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VBBwYDCQAAAAAAAAIFAAAACGFzc2V0SWRCBQAAAARVU0ROCQAAZwAAAAIFAAAAEHN0YWtlZEFtb3VudFVTRE4FAAAAC25ld0JhbGFuY2VCBwkBAAAAIXRocm93SW5zdWZmaWNpZW50QXZhaWxhYmxlQmFsYW5jZQAAAAMFAAAADWFtb3VudFdpdGhGZWUFAAAAEWF2YWlsYWJsZUJhbGFuY2VBBQAAAAphc3NldE5hbWVBCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAAtrZXlCYWxhbmNlQQUAAAALbmV3QmFsYW5jZUEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC2tleUJhbGFuY2VCBQAAAAtuZXdCYWxhbmNlQgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAADWFtb3VudFdpdGhGZWUFAAAAC2Fzc2V0SWRTZW5kCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADXdhbGxldEFkZHJlc3MFAAAAEGdvdmVybmFuY2VSZXdhcmQFAAAAC2Fzc2V0SWRTZW5kBQAAAANuaWwJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAkSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkLiBFeHBlY3RlZDogBQAAAAtzdHJBc3NldElkQQIAAAAEIG9yIAUAAAALc3RyQXNzZXRJZEIAAAABaQEAAAAIc2h1dGRvd24AAAAAAwkBAAAAASEAAAABBQAAAAhpc0FjdGl2ZQkAAAIAAAABCQABLAAAAAICAAAAIkRBcHAgaXMgYWxyZWFkeSBzdXNwZW5kZWQuIENhdXNlOiAJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAAIa2V5Q2F1c2UCAAAAGnRoZSBjYXVzZSB3YXNuJ3Qgc3BlY2lmaWVkAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQEAAAAHc3VzcGVuZAAAAAECAAAAD1BhdXNlZCBieSBhZG1pbgAAAAFpAQAAAAhhY3RpdmF0ZQAAAAADBQAAAAhpc0FjdGl2ZQkAAAIAAAABAgAAABZEQXBwIGlzIGFscmVhZHkgYWN0aXZlAwkBAAAAASEAAAABCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgkABEwAAAACBQAAAAxhZG1pblB1YktleTEJAARMAAAAAgUAAAAMYWRtaW5QdWJLZXkyCQAETAAAAAIFAAAADGFkbWluUHViS2V5MwkABEwAAAACBQAAABRhZG1pblB1YktleVN0YXJ0U3RvcAUAAAADbmlsCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkJAAACAAAAAQIAAAAhT25seSBhZG1pbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACBQAAAAlrZXlBY3RpdmUGCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAACGtleUNhdXNlBQAAAANuaWwAAAABaQEAAAAZdGFrZUludG9BY2NvdW50RXh0cmFGdW5kcwAAAAEAAAALYW1vdW50TGVhdmUEAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRBCQAAZQAAAAIFAAAAGWFjY291bnRCYWxhbmNlV2l0aFN0YWtlZEEFAAAACGJhbGFuY2VBBAAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QgkAAGUAAAACBQAAABlhY2NvdW50QmFsYW5jZVdpdGhTdGFrZWRCBQAAAAhiYWxhbmNlQgQAAAANYW1vdW50RW5yb2xsQQkAAGUAAAACBQAAAB11bmNvdW50YWJsZUFtb3VudEVucm9sbEFzc2V0QQMJAAAAAAAAAgUAAAAIYXNzZXRJZEEFAAAABHVuaXQFAAAAC2Ftb3VudExlYXZlAAAAAAAAAAAABAAAAA1hbW91bnRFbnJvbGxCCQAAZQAAAAIFAAAAHXVuY291bnRhYmxlQW1vdW50RW5yb2xsQXNzZXRCAwkAAAAAAAACBQAAAAhhc3NldElkQgUAAAAEdW5pdAUAAAALYW1vdW50TGVhdmUAAAAAAAAAAAADCQEAAAABIQAAAAEFAAAACGlzQWN0aXZlCQAAAgAAAAECAAAAH0RBcHAgaXMgaW5hY3RpdmUgYXQgdGhpcyBtb21lbnQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAA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", "height": 1614876, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FdGDW1sTrPgqN39y9uDvy1d3Gk9aVV7z8PRr37pJ5fsi Next: 6ez9LEy1PhKvv9EqLfkASfhRYXyZqkXQLUYn8JvBQ8XV Diff:
OldNewDifferences
9191
9292 let Q = ((N + ((height - O) / P)) + 3)
9393
94-let R = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
94+let R = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
9595
9696 let S = 270000
9797
292292 let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
293293 let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
294294 let bh = ((ba + be) / 2)
295- let bi = fraction(pow(aS, ba, 5, 1, ba, DOWN), pow(aV, be, 5, 1, be, DOWN), pow(10, 0, bh, 0, 0, DOWN))
296- let bj = Issue(bf, bg, bi, bh, true)
297- let bk = calculateAssetId(bj)
298- let bl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(l, ag), IntegerEntry(m, ai), bj, StringEntry(j, toBase58String(bk)), IntegerEntry(k, bi), ScriptTransfer(aP.caller, bi, bk)]
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)]
299302 if (aQ)
300- then (bl ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
301- else bl
303+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
304+ else bo
302305 }
303306 }
304307
305308
306309
307310 @Callable(aP)
308-func initWithInitRatio (bm,bn,U,V,aQ) = {
309- let bo = aB(U)
310- let aY = bo._1
311- let aZ = bo._2
312- let ba = bo._3
313- let bp = aB(V)
314- let bc = bp._1
315- let bd = bp._2
316- let be = bp._3
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
317320 if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
318321 then throw("Only admin can call this function")
319322 else if (isDefined(getBoolean(this, c)))
324327 let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
325328 let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
326329 let bh = ((ba + be) / 2)
327- let bi = 0
328- let bj = Issue(bf, bg, bi, bh, true)
329- let bk = calculateAssetId(bj)
330- let bl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(h, bm), IntegerEntry(i, bn), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, ag), IntegerEntry(m, ai), bj, StringEntry(j, toBase58String(bk)), IntegerEntry(k, bi)]
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)]
331334 if (aQ)
332- then (bl ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
333- else bl
335+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
336+ else bo
334337 }
335338 }
336339
337340
338341
339342 @Callable(aP)
340-func keepLimitForFirstHarvest (bq) = if (!(T))
343+func keepLimitForFirstHarvest (bt) = if (!(T))
341344 then throw("DApp is inactive at this moment")
342345 else if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
343346 then throw("Only admin can call this function")
344- else [IntegerEntry(q, bq)]
347+ else [IntegerEntry(q, bt)]
345348
346349
347350
348351 @Callable(aP)
349-func replenishWithTwoTokens (br) = {
352+func replenishWithTwoTokens (bu) = {
350353 let aT = aP.payments[0].assetId
351354 let aW = aP.payments[1].assetId
352355 let aS = aF(aP.payments[0].amount, aT)
355358 then (ad == 0)
356359 else false)
357360 then {
358- let bs = ay(aT)
359- let aY = bs._1
360- let aZ = bs._2
361- let ba = bs._3
362- let bt = ay(aW)
363- let bc = bt._1
364- let bd = bt._2
365- let be = bt._3
366- let bu = fraction(fraction(ar, ak, aS), aj, fraction(as, ak, aV))
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))
367370 if ((aT == aW))
368371 then throw("Assets must be different")
369372 else {
370373 let bh = ((ba + be) / 2)
371- let bi = fraction(pow(aS, ba, 5, 1, ba, DOWN), pow(aV, be, 5, 1, be, DOWN), pow(10, 0, bh, 0, 0, DOWN))
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))
372375 if (!(T))
373376 then throw("DApp is inactive at this moment")
374- else if (if ((0 > br))
377+ else if (if ((0 > bu))
375378 then true
376- else (br > al))
377- then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(br)))
379+ else (bu > al))
380+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
378381 else if ((size(aP.payments) != 2))
379382 then throw("Two attached assets expected")
380- else if (if ((((aj * (al - br)) / al) > bu))
383+ else if (if ((((aj * (al - bu)) / al) > bx))
381384 then true
382- else (bu > ((aj * (al + br)) / al)))
385+ else (bx > ((aj * (al + bu)) / al)))
383386 then throw("Incorrect assets amount: amounts must have the contract ratio")
384387 else if (if ((aT != W))
385388 then true
386389 else (aW != X))
387390 then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
388- else if ((bi == 0))
391+ else if ((bl == 0))
389392 then throw("Too small amount to replenish")
390393 else if (!(ax))
391394 then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
392- else [Reissue(ae, bi, true), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(k, bi), ScriptTransfer(aP.caller, bi, ae)]
395+ else [Reissue(ae, bl, true), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(k, bl), ScriptTransfer(aP.caller, bl, ae)]
393396 }
394397 }
395398 else {
396- let bu = fraction(fraction(ac, ak, aS), aj, fraction(ad, ak, aV))
397- let bv = fraction(aS, ak, ac)
398- let bw = fraction(aV, ak, ad)
399- let bx = fraction(min([bv, bw]), af, ak)
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)
400403 if (!(T))
401404 then throw("DApp is inactive at this moment")
402- else if (if ((0 > br))
405+ else if (if ((0 > bu))
403406 then true
404- else (br > al))
405- then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(br)))
407+ else (bu > al))
408+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
406409 else if ((size(aP.payments) != 2))
407410 then throw("Two attached assets expected")
408411 else if (if ((aT != W))
409412 then true
410413 else (aW != X))
411414 then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
412- else if (if ((((aj * (al - br)) / al) > bu))
415+ else if (if ((((aj * (al - bu)) / al) > bx))
413416 then true
414- else (bu > ((aj * (al + br)) / al)))
417+ else (bx > ((aj * (al + bu)) / al)))
415418 then throw("Incorrect assets amount: amounts must have the contract ratio")
416- else if ((bx == 0))
419+ else if ((bA == 0))
417420 then throw("Too small amount to replenish")
418421 else if (!(ax))
419422 then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
420- else [IntegerEntry(f, (ac + aS)), IntegerEntry(g, (ad + aV)), IntegerEntry(k, (af + bx)), Reissue(ae, bx, true), ScriptTransfer(aP.caller, bx, ae)]
423+ else [IntegerEntry(f, (ac + aS)), IntegerEntry(g, (ad + aV)), IntegerEntry(k, (af + bA)), Reissue(ae, bA, true), ScriptTransfer(aP.caller, bA, ae)]
421424 }
422425 }
423426
425428
426429 @Callable(aP)
427430 func withdraw () = {
428- let by = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
429- let bz = by._1
430- let bA = by._2
431- let bB = aF(fraction(bz, ac, af), W)
432- let bC = aF(fraction(bz, ad, af), X)
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)
433436 if (!(T))
434437 then throw("DApp is inactive at this moment")
435438 else if ((size(aP.payments) != 1))
436439 then throw("One attached payment expected")
437- else if ((bA != ae))
440+ else if ((bD != ae))
438441 then throw(("Incorrect asset attached. Expected: " + toBase58String(ae)))
439442 else if (!(ax))
440- then ([ScriptTransfer(aP.caller, bz, bA)] ++ aO())
441- else if (if ((bB > at))
443+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
444+ else if (if ((bE > at))
442445 then true
443- else (bC > au))
444- then aL(bB, bC)
445- else [IntegerEntry(f, (ac - bB)), IntegerEntry(g, (ad - bC)), IntegerEntry(k, (af - bz)), Burn(ae, bz), ScriptTransfer(aP.caller, bB, W), ScriptTransfer(aP.caller, bC, X)]
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)]
446449 }
447450
448451
449452
450453 @Callable(aP)
451-func exchange (bD) = {
452- let bE = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
453- let bz = bE._1
454- let bA = bE._2
455- func bF (bG,bH) = {
456- let bI = fraction(bH, bz, (bz + bG))
457- let bJ = fraction(bI, (ai - ag), ai)
458- let bK = fraction(bI, ah, ai)
459- if ((bD > bJ))
460- then throw(((("Calculated amount to receive " + toString(bJ)) + " is less than specified minimum ") + toString(bD)))
461- else $Tuple3(bI, bJ, bK)
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)
462465 }
463466
464467 if (!(T))
467470 then true
468471 else (ad == 0))
469472 then throw("Can't exchange with zero balance")
470- else if ((0 >= bD))
471- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bD)))
473+ else if ((0 >= bG))
474+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bG)))
472475 else if ((size(aP.payments) != 1))
473476 then throw("One attached payment expected")
474477 else if (!(ax))
475- then ([ScriptTransfer(aP.caller, bz, bA)] ++ aO())
476- else if ((bA == W))
478+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
479+ else if ((bD == W))
477480 then {
478- let bL = X
479- let bM = bF(ac, ad)
480- let bI = bM._1
481- let bJ = bM._2
482- let bK = bM._3
483- let bN = (ac + bz)
484- let bO = ((ad - bJ) - bK)
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)
485488 if (if (if ((W == R))
486- then (ap >= bN)
489+ then (ap >= bQ)
487490 else false)
488491 then true
489492 else if ((X == R))
490- then (ap >= bO)
493+ then (ap >= bR)
491494 else false)
492- then aI(bJ, au, ab)
493- else [IntegerEntry(f, bN), IntegerEntry(g, bO), ScriptTransfer(aP.caller, bJ, bL), ScriptTransfer(J, bK, bL)]
495+ then aI(bM, au, ab)
496+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
494497 }
495- else if ((bA == X))
498+ else if ((bD == X))
496499 then {
497- let bL = W
498- let bP = bF(ad, ac)
499- let bI = bP._1
500- let bJ = bP._2
501- let bK = bP._3
502- let bN = ((ac - bJ) - bK)
503- let bO = (ad + bz)
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)
504507 if (if (if ((W == R))
505- then (ap >= bN)
508+ then (ap >= bQ)
506509 else false)
507510 then true
508511 else if ((X == R))
509- then (ap >= bO)
512+ then (ap >= bR)
510513 else false)
511- then aI(bJ, at, Y)
512- else [IntegerEntry(f, bN), IntegerEntry(g, bO), ScriptTransfer(aP.caller, bJ, bL), ScriptTransfer(J, bK, bL)]
514+ then aI(bM, at, Y)
515+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
513516 }
514517 else throw(((("Incorrect asset attached. Expected: " + U) + " or ") + V))
515518 }
535538
536539
537540 @Callable(aP)
538-func takeIntoAccountExtraFunds (bQ) = {
539- let bR = (av - ac)
540- let bS = (aw - ad)
541- let bT = (bR - (if ((W == unit))
542- then bQ
541+func takeIntoAccountExtraFunds (bT) = {
542+ let bU = (av - ac)
543+ let bV = (aw - ad)
544+ let bW = (bU - (if ((W == unit))
545+ then bT
543546 else 0))
544- let bU = (bS - (if ((X == unit))
545- then bQ
547+ let bX = (bV - (if ((X == unit))
548+ then bT
546549 else 0))
547550 if (!(T))
548551 then throw("DApp is inactive at this moment")
549552 else if ((aP.caller != this))
550553 then throw("Only the DApp itself can call this function")
551- else if ((0 > bQ))
552- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bQ)))
553- else if (if ((0 > bR))
554+ else if ((0 > bT))
555+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bT)))
556+ else if (if ((0 > bU))
554557 then true
555- else (0 > bS))
558+ else (0 > bV))
556559 then aD("Enroll amount negative")
557- else if (if ((0 > bT))
560+ else if (if ((0 > bW))
558561 then true
559- else (0 > bU))
562+ else (0 > bX))
560563 then throw("Too large amountLeave")
561- else [IntegerEntry(f, (ac + bT)), IntegerEntry(g, (ad + bU)), IntegerEntry(("last_income_" + U), bT), IntegerEntry(("last_income_" + V), bU)]
564+ else [IntegerEntry(f, (ac + bW)), IntegerEntry(g, (ad + bX)), IntegerEntry(("last_income_" + U), bW), IntegerEntry(("last_income_" + V), bX)]
562565 }
563566
564567
565-@Verifier(bV)
566-func bW () = {
567- let B = bV
568+@Verifier(bY)
569+func bZ () = {
570+ let B = bY
568571 if ($isInstanceOf(B, "InvokeScriptTransaction"))
569572 then {
570- let bX = B
571- let bY = if ((bX.dApp == this))
572- then (bX.function == "takeIntoAccountExtraFunds")
573+ let ca = B
574+ let cb = if ((ca.dApp == this))
575+ then (ca.function == "takeIntoAccountExtraFunds")
573576 else false
574- let bZ = if ((bX.dApp == L))
575- then if (if (if ((bX.function == "lockNeutrino"))
576- then (size(bX.payments) == 1)
577+ let cc = if ((ca.dApp == L))
578+ then if (if (if ((ca.function == "lockNeutrino"))
579+ then (size(ca.payments) == 1)
577580 else false)
578- then (bX.payments[0].assetId == R)
581+ then (ca.payments[0].assetId == R)
579582 else false)
580583 then true
581- else if ((bX.function == "unlockNeutrino"))
582- then (size(bX.payments) == 0)
584+ else if ((ca.function == "unlockNeutrino"))
585+ then (size(ca.payments) == 0)
583586 else false
584587 else false
585- let ca = if (if (if ((bX.dApp == M))
586- then (bX.function == "exchange")
588+ let cd = if (if (if ((ca.dApp == M))
589+ then (ca.function == "exchange")
587590 else false)
588591 then (W == R)
589592 else false)
590593 then true
591594 else if ((X == R))
592- then (bX.payments[0].assetId == R)
595+ then (ca.payments[0].assetId == R)
593596 else false
594- let cb = if (if (if (sigVerify(bV.bodyBytes, bV.proofs[0], E))
597+ let ce = if (if (if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
595598 then true
596- else sigVerify(bV.bodyBytes, bV.proofs[0], F))
599+ else sigVerify(bY.bodyBytes, bY.proofs[0], F))
597600 then true
598- else sigVerify(bV.bodyBytes, bV.proofs[0], G))
601+ else sigVerify(bY.bodyBytes, bY.proofs[0], G))
599602 then true
600- else sigVerify(bV.bodyBytes, bV.proofs[0], I)
601- if (if (if (bY)
603+ else sigVerify(bY.bodyBytes, bY.proofs[0], I)
604+ if (if (if (cb)
602605 then true
603- else bZ)
606+ else cc)
604607 then true
605- else ca)
606- then cb
608+ else cd)
609+ then ce
607610 else false
608611 }
609612 else {
610- let cc = if (sigVerify(bV.bodyBytes, bV.proofs[0], E))
613+ let cf = if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
611614 then 1
612615 else 0
613- let cd = if (sigVerify(bV.bodyBytes, bV.proofs[1], F))
616+ let cg = if (sigVerify(bY.bodyBytes, bY.proofs[1], F))
614617 then 1
615618 else 0
616- let ce = if (sigVerify(bV.bodyBytes, bV.proofs[2], G))
619+ let ch = if (sigVerify(bY.bodyBytes, bY.proofs[2], G))
617620 then 1
618621 else 0
619- (((cc + cd) + ce) >= 2)
622+ (((cf + cg) + ch) >= 2)
620623 }
621624 }
622625
Full:
OldNewDifferences
11 {-# 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
4646 let v = "admin_pub_1"
4747
4848 let w = "admin_pub_2"
4949
5050 let x = "admin_pub_3"
5151
5252 let y = Address(base58'3NBBWfzZtZtszaXbitTKnrB2xXwv26Bn7H9')
5353
5454 func z (A) = {
5555 let B = getString(y, A)
5656 if ($isInstanceOf(B, "String"))
5757 then {
5858 let C = B
5959 fromBase58String(C)
6060 }
6161 else {
6262 let D = B
6363 throw("Admin public key is empty")
6464 }
6565 }
6666
6767
6868 let E = z(v)
6969
7070 let F = z(w)
7171
7272 let G = z(x)
7373
7474 let H = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
7575
7676 let I = base58'Kn7NpzaG12dLZgcHf2ipUftU6hbJygmrhFqQYE4B7ZK'
7777
7878 let J = Address(base58'3NAGTtZz6WpupSN89NZD5rMZwwziZEg4Kx4')
7979
8080 let K = Address(base58'3MrJgdL1GniipErHy44YF9idzLaUL2iX5DQ')
8181
8282 let L = Address(base58'3N6q7sCGSSLBUXDdjBdYGTJbZGZfhhh8cNg')
8383
8484 let M = Address(base58'3N77kfPbQyjXWpDALX3xjKw3iEGMWEctV37')
8585
8686 let N = valueOrErrorMessage(getInteger(K, r), "Empty kBasePeriod")
8787
8888 let O = valueOrErrorMessage(getInteger(K, t), "Empty kStartHeight")
8989
9090 let P = valueOrErrorMessage(getInteger(K, s), "Empty kPeriodLength")
9191
9292 let Q = ((N + ((height - O) / P)) + 3)
9393
94-let R = base58'8UrfDVd5GreeUwm7uPk7eYz1eMv376kzR52C6sANPkwS'
94+let R = base58'DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p'
9595
9696 let S = 270000
9797
9898 let T = getBooleanValue(this, c)
9999
100100 let U = getStringValue(this, d)
101101
102102 let V = getStringValue(this, e)
103103
104104 let W = if ((U == "WAVES"))
105105 then unit
106106 else fromBase58String(U)
107107
108108 let X = if ((V == "WAVES"))
109109 then unit
110110 else fromBase58String(V)
111111
112112 let Y = {
113113 let B = W
114114 if ($isInstanceOf(B, "ByteVector"))
115115 then {
116116 let Z = B
117117 value(assetInfo(Z)).name
118118 }
119119 else if ($isInstanceOf(B, "Unit"))
120120 then {
121121 let aa = B
122122 "WAVES"
123123 }
124124 else throw("Match error")
125125 }
126126
127127 let ab = {
128128 let B = X
129129 if ($isInstanceOf(B, "ByteVector"))
130130 then {
131131 let Z = B
132132 value(assetInfo(Z)).name
133133 }
134134 else if ($isInstanceOf(B, "Unit"))
135135 then {
136136 let aa = B
137137 "WAVES"
138138 }
139139 else throw("Match error")
140140 }
141141
142142 let ac = getIntegerValue(this, f)
143143
144144 let ad = getIntegerValue(this, g)
145145
146146 let ae = fromBase58String(getStringValue(this, j))
147147
148148 let af = getIntegerValue(this, k)
149149
150150 let ag = 3000
151151
152152 let ah = 1200
153153
154154 let ai = 1000000
155155
156156 let aj = 1000
157157
158158 let ak = 100000000
159159
160160 let al = 1000
161161
162162 let am = 8
163163
164164 func an (ao) = {
165165 let B = ao
166166 if ($isInstanceOf(B, "ByteVector"))
167167 then {
168168 let Z = B
169169 assetBalance(this, Z)
170170 }
171171 else if ($isInstanceOf(B, "Unit"))
172172 then {
173173 let aa = B
174174 wavesBalance(this).available
175175 }
176176 else throw("Match error")
177177 }
178178
179179
180180 let ap = {
181181 let B = getInteger(L, ((("rpd_balance_" + toBase58String(R)) + "_") + toString(this)))
182182 if ($isInstanceOf(B, "Int"))
183183 then {
184184 let aq = B
185185 aq
186186 }
187187 else if ($isInstanceOf(B, "Unit"))
188188 then {
189189 let D = B
190190 0
191191 }
192192 else throw("Match error")
193193 }
194194
195195 let ar = getIntegerValue(this, h)
196196
197197 let as = getIntegerValue(this, i)
198198
199199 let at = (ac - (if ((W == R))
200200 then ap
201201 else 0))
202202
203203 let au = (ad - (if ((X == R))
204204 then ap
205205 else 0))
206206
207207 let av = (an(W) + (if ((W == R))
208208 then ap
209209 else 0))
210210
211211 let aw = (an(X) + (if ((X == R))
212212 then ap
213213 else 0))
214214
215215 let ax = if ((av >= ac))
216216 then (aw >= ad)
217217 else false
218218
219219 func ay (ao) = {
220220 let B = ao
221221 if ($isInstanceOf(B, "ByteVector"))
222222 then {
223223 let Z = B
224224 let az = toBase58String(Z)
225225 let aA = valueOrErrorMessage(assetInfo(Z), (("Asset " + az) + " doesn't exist"))
226226 $Tuple3(az, aA.name, aA.decimals)
227227 }
228228 else if ($isInstanceOf(B, "Unit"))
229229 then {
230230 let aa = B
231231 $Tuple3("WAVES", "WAVES", 8)
232232 }
233233 else throw("Match error")
234234 }
235235
236236
237237 func aB (aC) = if ((aC == "WAVES"))
238238 then $Tuple3("WAVES", "WAVES", 8)
239239 else {
240240 let az = aC
241241 let Z = fromBase58String(aC)
242242 let aA = valueOrErrorMessage(assetInfo(Z), (("Asset " + az) + " doesn't exist"))
243243 $Tuple3(az, aA.name, aA.decimals)
244244 }
245245
246246
247247 func aD (aE) = [BooleanEntry(c, false), StringEntry(n, aE)]
248248
249249
250250 func aF (aG,ao) = if ((ao == R))
251251 then {
252252 let aH = (aG - S)
253253 if ((0 >= aH))
254254 then throw((((("Insufficient amount " + toString(aG)) + " to deduct staking fee ") + toString(S)) + " USD-N"))
255255 else aH
256256 }
257257 else aG
258258
259259
260260 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"))
261261
262262
263263 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"))
264264
265265
266266 func aO () = aD(((((((((((((((("Suspicious state. Actual balances: " + toString(av)) + " ") + Y) + ", ") + toString(aw)) + " ") + ab) + ". State: ") + toString(ac)) + " ") + Y) + ", ") + toString(ad)) + " ") + ab))
267267
268268
269269 @Callable(aP)
270270 func init (aQ) = {
271271 let aR = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
272272 let aS = aR._1
273273 let aT = aR._2
274274 let aU = $Tuple2(aP.payments[1].amount, aP.payments[1].assetId)
275275 let aV = aU._1
276276 let aW = aU._2
277277 let aX = ay(aT)
278278 let aY = aX._1
279279 let aZ = aX._2
280280 let ba = aX._3
281281 let bb = ay(aW)
282282 let bc = bb._1
283283 let bd = bb._2
284284 let be = bb._3
285285 if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
286286 then throw("Only admin can call this function")
287287 else if (isDefined(getBoolean(this, c)))
288288 then throw("DApp is already active")
289289 else if ((aT == aW))
290290 then throw("Assets must be different")
291291 else {
292292 let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
293293 let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
294294 let bh = ((ba + be) / 2)
295- let bi = fraction(pow(aS, ba, 5, 1, ba, DOWN), pow(aV, be, 5, 1, be, DOWN), pow(10, 0, bh, 0, 0, DOWN))
296- let bj = Issue(bf, bg, bi, bh, true)
297- let bk = calculateAssetId(bj)
298- let bl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(l, ag), IntegerEntry(m, ai), bj, StringEntry(j, toBase58String(bk)), IntegerEntry(k, bi), ScriptTransfer(aP.caller, bi, bk)]
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)]
299302 if (aQ)
300- then (bl ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
301- else bl
303+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
304+ else bo
302305 }
303306 }
304307
305308
306309
307310 @Callable(aP)
308-func initWithInitRatio (bm,bn,U,V,aQ) = {
309- let bo = aB(U)
310- let aY = bo._1
311- let aZ = bo._2
312- let ba = bo._3
313- let bp = aB(V)
314- let bc = bp._1
315- let bd = bp._2
316- let be = bp._3
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
317320 if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
318321 then throw("Only admin can call this function")
319322 else if (isDefined(getBoolean(this, c)))
320323 then throw("DApp is already active")
321324 else if ((U == V))
322325 then throw("Assets must be different")
323326 else {
324327 let bf = ((("s" + take(aZ, 7)) + "_") + take(bd, 7))
325328 let bg = ((((("ShareToken of SwopFi protocol for " + aZ) + " and ") + bd) + " at address ") + toString(this))
326329 let bh = ((ba + be) / 2)
327- let bi = 0
328- let bj = Issue(bf, bg, bi, bh, true)
329- let bk = calculateAssetId(bj)
330- let bl = [StringEntry(b, a), BooleanEntry(c, true), StringEntry(d, aY), StringEntry(e, bc), IntegerEntry(h, bm), IntegerEntry(i, bn), IntegerEntry(f, 0), IntegerEntry(g, 0), IntegerEntry(l, ag), IntegerEntry(m, ai), bj, StringEntry(j, toBase58String(bk)), IntegerEntry(k, bi)]
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)]
331334 if (aQ)
332- then (bl ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
333- else bl
335+ then (bo ++ [BooleanEntry(o, aQ), IntegerEntry(p, (O + (Q * P)))])
336+ else bo
334337 }
335338 }
336339
337340
338341
339342 @Callable(aP)
340-func keepLimitForFirstHarvest (bq) = if (!(T))
343+func keepLimitForFirstHarvest (bt) = if (!(T))
341344 then throw("DApp is inactive at this moment")
342345 else if (!(containsElement([E, F, G, I], aP.callerPublicKey)))
343346 then throw("Only admin can call this function")
344- else [IntegerEntry(q, bq)]
347+ else [IntegerEntry(q, bt)]
345348
346349
347350
348351 @Callable(aP)
349-func replenishWithTwoTokens (br) = {
352+func replenishWithTwoTokens (bu) = {
350353 let aT = aP.payments[0].assetId
351354 let aW = aP.payments[1].assetId
352355 let aS = aF(aP.payments[0].amount, aT)
353356 let aV = aF(aP.payments[1].amount, aW)
354357 if (if ((ac == 0))
355358 then (ad == 0)
356359 else false)
357360 then {
358- let bs = ay(aT)
359- let aY = bs._1
360- let aZ = bs._2
361- let ba = bs._3
362- let bt = ay(aW)
363- let bc = bt._1
364- let bd = bt._2
365- let be = bt._3
366- let bu = fraction(fraction(ar, ak, aS), aj, fraction(as, ak, aV))
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))
367370 if ((aT == aW))
368371 then throw("Assets must be different")
369372 else {
370373 let bh = ((ba + be) / 2)
371- let bi = fraction(pow(aS, ba, 5, 1, ba, DOWN), pow(aV, be, 5, 1, be, DOWN), pow(10, 0, bh, 0, 0, DOWN))
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))
372375 if (!(T))
373376 then throw("DApp is inactive at this moment")
374- else if (if ((0 > br))
377+ else if (if ((0 > bu))
375378 then true
376- else (br > al))
377- then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(br)))
379+ else (bu > al))
380+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
378381 else if ((size(aP.payments) != 2))
379382 then throw("Two attached assets expected")
380- else if (if ((((aj * (al - br)) / al) > bu))
383+ else if (if ((((aj * (al - bu)) / al) > bx))
381384 then true
382- else (bu > ((aj * (al + br)) / al)))
385+ else (bx > ((aj * (al + bu)) / al)))
383386 then throw("Incorrect assets amount: amounts must have the contract ratio")
384387 else if (if ((aT != W))
385388 then true
386389 else (aW != X))
387390 then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
388- else if ((bi == 0))
391+ else if ((bl == 0))
389392 then throw("Too small amount to replenish")
390393 else if (!(ax))
391394 then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
392- else [Reissue(ae, bi, true), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(k, bi), ScriptTransfer(aP.caller, bi, ae)]
395+ else [Reissue(ae, bl, true), IntegerEntry(f, aS), IntegerEntry(g, aV), IntegerEntry(k, bl), ScriptTransfer(aP.caller, bl, ae)]
393396 }
394397 }
395398 else {
396- let bu = fraction(fraction(ac, ak, aS), aj, fraction(ad, ak, aV))
397- let bv = fraction(aS, ak, ac)
398- let bw = fraction(aV, ak, ad)
399- let bx = fraction(min([bv, bw]), af, ak)
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)
400403 if (!(T))
401404 then throw("DApp is inactive at this moment")
402- else if (if ((0 > br))
405+ else if (if ((0 > bu))
403406 then true
404- else (br > al))
405- then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(br)))
407+ else (bu > al))
408+ then throw(((("Slippage tolerance must be between 0 and " + toString(al)) + " inclusively. Actual: ") + toString(bu)))
406409 else if ((size(aP.payments) != 2))
407410 then throw("Two attached assets expected")
408411 else if (if ((aT != W))
409412 then true
410413 else (aW != X))
411414 then throw(((("Incorrect assets attached. Expected: " + U) + " and ") + V))
412- else if (if ((((aj * (al - br)) / al) > bu))
415+ else if (if ((((aj * (al - bu)) / al) > bx))
413416 then true
414- else (bu > ((aj * (al + br)) / al)))
417+ else (bx > ((aj * (al + bu)) / al)))
415418 then throw("Incorrect assets amount: amounts must have the contract ratio")
416- else if ((bx == 0))
419+ else if ((bA == 0))
417420 then throw("Too small amount to replenish")
418421 else if (!(ax))
419422 then ([ScriptTransfer(aP.caller, aS, aT), ScriptTransfer(aP.caller, aV, aW)] ++ aO())
420- else [IntegerEntry(f, (ac + aS)), IntegerEntry(g, (ad + aV)), IntegerEntry(k, (af + bx)), Reissue(ae, bx, true), ScriptTransfer(aP.caller, bx, ae)]
423+ else [IntegerEntry(f, (ac + aS)), IntegerEntry(g, (ad + aV)), IntegerEntry(k, (af + bA)), Reissue(ae, bA, true), ScriptTransfer(aP.caller, bA, ae)]
421424 }
422425 }
423426
424427
425428
426429 @Callable(aP)
427430 func withdraw () = {
428- let by = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
429- let bz = by._1
430- let bA = by._2
431- let bB = aF(fraction(bz, ac, af), W)
432- let bC = aF(fraction(bz, ad, af), X)
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)
433436 if (!(T))
434437 then throw("DApp is inactive at this moment")
435438 else if ((size(aP.payments) != 1))
436439 then throw("One attached payment expected")
437- else if ((bA != ae))
440+ else if ((bD != ae))
438441 then throw(("Incorrect asset attached. Expected: " + toBase58String(ae)))
439442 else if (!(ax))
440- then ([ScriptTransfer(aP.caller, bz, bA)] ++ aO())
441- else if (if ((bB > at))
443+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
444+ else if (if ((bE > at))
442445 then true
443- else (bC > au))
444- then aL(bB, bC)
445- else [IntegerEntry(f, (ac - bB)), IntegerEntry(g, (ad - bC)), IntegerEntry(k, (af - bz)), Burn(ae, bz), ScriptTransfer(aP.caller, bB, W), ScriptTransfer(aP.caller, bC, X)]
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)]
446449 }
447450
448451
449452
450453 @Callable(aP)
451-func exchange (bD) = {
452- let bE = $Tuple2(aP.payments[0].amount, aP.payments[0].assetId)
453- let bz = bE._1
454- let bA = bE._2
455- func bF (bG,bH) = {
456- let bI = fraction(bH, bz, (bz + bG))
457- let bJ = fraction(bI, (ai - ag), ai)
458- let bK = fraction(bI, ah, ai)
459- if ((bD > bJ))
460- then throw(((("Calculated amount to receive " + toString(bJ)) + " is less than specified minimum ") + toString(bD)))
461- else $Tuple3(bI, bJ, bK)
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)
462465 }
463466
464467 if (!(T))
465468 then throw("DApp is inactive at this moment")
466469 else if (if ((ac == 0))
467470 then true
468471 else (ad == 0))
469472 then throw("Can't exchange with zero balance")
470- else if ((0 >= bD))
471- then throw(("Minimal amount to receive must be positive. Actual: " + toString(bD)))
473+ else if ((0 >= bG))
474+ then throw(("Minimal amount to receive must be positive. Actual: " + toString(bG)))
472475 else if ((size(aP.payments) != 1))
473476 then throw("One attached payment expected")
474477 else if (!(ax))
475- then ([ScriptTransfer(aP.caller, bz, bA)] ++ aO())
476- else if ((bA == W))
478+ then ([ScriptTransfer(aP.caller, bC, bD)] ++ aO())
479+ else if ((bD == W))
477480 then {
478- let bL = X
479- let bM = bF(ac, ad)
480- let bI = bM._1
481- let bJ = bM._2
482- let bK = bM._3
483- let bN = (ac + bz)
484- let bO = ((ad - bJ) - bK)
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)
485488 if (if (if ((W == R))
486- then (ap >= bN)
489+ then (ap >= bQ)
487490 else false)
488491 then true
489492 else if ((X == R))
490- then (ap >= bO)
493+ then (ap >= bR)
491494 else false)
492- then aI(bJ, au, ab)
493- else [IntegerEntry(f, bN), IntegerEntry(g, bO), ScriptTransfer(aP.caller, bJ, bL), ScriptTransfer(J, bK, bL)]
495+ then aI(bM, au, ab)
496+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
494497 }
495- else if ((bA == X))
498+ else if ((bD == X))
496499 then {
497- let bL = W
498- let bP = bF(ad, ac)
499- let bI = bP._1
500- let bJ = bP._2
501- let bK = bP._3
502- let bN = ((ac - bJ) - bK)
503- let bO = (ad + bz)
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)
504507 if (if (if ((W == R))
505- then (ap >= bN)
508+ then (ap >= bQ)
506509 else false)
507510 then true
508511 else if ((X == R))
509- then (ap >= bO)
512+ then (ap >= bR)
510513 else false)
511- then aI(bJ, at, Y)
512- else [IntegerEntry(f, bN), IntegerEntry(g, bO), ScriptTransfer(aP.caller, bJ, bL), ScriptTransfer(J, bK, bL)]
514+ then aI(bM, at, Y)
515+ else [IntegerEntry(f, bQ), IntegerEntry(g, bR), ScriptTransfer(aP.caller, bM, bO), ScriptTransfer(J, bN, bO)]
513516 }
514517 else throw(((("Incorrect asset attached. Expected: " + U) + " or ") + V))
515518 }
516519
517520
518521
519522 @Callable(aP)
520523 func shutdown () = if (!(T))
521524 then throw(("DApp is already suspended. Cause: " + valueOrElse(getString(this, n), "the cause wasn't specified")))
522525 else if (!(containsElement([E, F, G, H], aP.callerPublicKey)))
523526 then throw("Only admin can call this function")
524527 else aD("Paused by admin")
525528
526529
527530
528531 @Callable(aP)
529532 func activate () = if (T)
530533 then throw("DApp is already active")
531534 else if (!(containsElement([E, F, G, H], aP.callerPublicKey)))
532535 then throw("Only admin can call this function")
533536 else [BooleanEntry(c, true), DeleteEntry(n)]
534537
535538
536539
537540 @Callable(aP)
538-func takeIntoAccountExtraFunds (bQ) = {
539- let bR = (av - ac)
540- let bS = (aw - ad)
541- let bT = (bR - (if ((W == unit))
542- then bQ
541+func takeIntoAccountExtraFunds (bT) = {
542+ let bU = (av - ac)
543+ let bV = (aw - ad)
544+ let bW = (bU - (if ((W == unit))
545+ then bT
543546 else 0))
544- let bU = (bS - (if ((X == unit))
545- then bQ
547+ let bX = (bV - (if ((X == unit))
548+ then bT
546549 else 0))
547550 if (!(T))
548551 then throw("DApp is inactive at this moment")
549552 else if ((aP.caller != this))
550553 then throw("Only the DApp itself can call this function")
551- else if ((0 > bQ))
552- then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bQ)))
553- else if (if ((0 > bR))
554+ else if ((0 > bT))
555+ then throw(("Argument 'amountLeave' cannot be negative. Actual: " + toString(bT)))
556+ else if (if ((0 > bU))
554557 then true
555- else (0 > bS))
558+ else (0 > bV))
556559 then aD("Enroll amount negative")
557- else if (if ((0 > bT))
560+ else if (if ((0 > bW))
558561 then true
559- else (0 > bU))
562+ else (0 > bX))
560563 then throw("Too large amountLeave")
561- else [IntegerEntry(f, (ac + bT)), IntegerEntry(g, (ad + bU)), IntegerEntry(("last_income_" + U), bT), IntegerEntry(("last_income_" + V), bU)]
564+ else [IntegerEntry(f, (ac + bW)), IntegerEntry(g, (ad + bX)), IntegerEntry(("last_income_" + U), bW), IntegerEntry(("last_income_" + V), bX)]
562565 }
563566
564567
565-@Verifier(bV)
566-func bW () = {
567- let B = bV
568+@Verifier(bY)
569+func bZ () = {
570+ let B = bY
568571 if ($isInstanceOf(B, "InvokeScriptTransaction"))
569572 then {
570- let bX = B
571- let bY = if ((bX.dApp == this))
572- then (bX.function == "takeIntoAccountExtraFunds")
573+ let ca = B
574+ let cb = if ((ca.dApp == this))
575+ then (ca.function == "takeIntoAccountExtraFunds")
573576 else false
574- let bZ = if ((bX.dApp == L))
575- then if (if (if ((bX.function == "lockNeutrino"))
576- then (size(bX.payments) == 1)
577+ let cc = if ((ca.dApp == L))
578+ then if (if (if ((ca.function == "lockNeutrino"))
579+ then (size(ca.payments) == 1)
577580 else false)
578- then (bX.payments[0].assetId == R)
581+ then (ca.payments[0].assetId == R)
579582 else false)
580583 then true
581- else if ((bX.function == "unlockNeutrino"))
582- then (size(bX.payments) == 0)
584+ else if ((ca.function == "unlockNeutrino"))
585+ then (size(ca.payments) == 0)
583586 else false
584587 else false
585- let ca = if (if (if ((bX.dApp == M))
586- then (bX.function == "exchange")
588+ let cd = if (if (if ((ca.dApp == M))
589+ then (ca.function == "exchange")
587590 else false)
588591 then (W == R)
589592 else false)
590593 then true
591594 else if ((X == R))
592- then (bX.payments[0].assetId == R)
595+ then (ca.payments[0].assetId == R)
593596 else false
594- let cb = if (if (if (sigVerify(bV.bodyBytes, bV.proofs[0], E))
597+ let ce = if (if (if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
595598 then true
596- else sigVerify(bV.bodyBytes, bV.proofs[0], F))
599+ else sigVerify(bY.bodyBytes, bY.proofs[0], F))
597600 then true
598- else sigVerify(bV.bodyBytes, bV.proofs[0], G))
601+ else sigVerify(bY.bodyBytes, bY.proofs[0], G))
599602 then true
600- else sigVerify(bV.bodyBytes, bV.proofs[0], I)
601- if (if (if (bY)
603+ else sigVerify(bY.bodyBytes, bY.proofs[0], I)
604+ if (if (if (cb)
602605 then true
603- else bZ)
606+ else cc)
604607 then true
605- else ca)
606- then cb
608+ else cd)
609+ then ce
607610 else false
608611 }
609612 else {
610- let cc = if (sigVerify(bV.bodyBytes, bV.proofs[0], E))
613+ let cf = if (sigVerify(bY.bodyBytes, bY.proofs[0], E))
611614 then 1
612615 else 0
613- let cd = if (sigVerify(bV.bodyBytes, bV.proofs[1], F))
616+ let cg = if (sigVerify(bY.bodyBytes, bY.proofs[1], F))
614617 then 1
615618 else 0
616- let ce = if (sigVerify(bV.bodyBytes, bV.proofs[2], G))
619+ let ch = if (sigVerify(bY.bodyBytes, bY.proofs[2], G))
617620 then 1
618621 else 0
619- (((cc + cd) + ce) >= 2)
622+ (((cf + cg) + ch) >= 2)
620623 }
621624 }
622625

github/deemru/w8io/169f3d6 
366.64 ms