tx · D54r4EnVkYimfc6wZy9dhQygDnhB3PSu9Rn6NT8hF3hJ

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.01400000 Waves

2021.12.23 18:13 [1847070] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "D54r4EnVkYimfc6wZy9dhQygDnhB3PSu9Rn6NT8hF3hJ", "fee": 1400000, "feeAssetId": null, "timestamp": 1640272480412, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "4uyMvCqRqhqWt4BS9MvLrrnY1t6fSJi8AUxnrKdPFzdFSSdM4yhQbinmzxkRXV89fZByagQyAKwNLMYQ71pszSxi" ], "script": "base64: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ZwAAAAACAAAAESVzX19mYWN0b3J5Q29uZmlnAQAAAA1rZXlNYXRjaGVyUHViAAAAAAIAAAAYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQAAAA1rZXlQb29sQ29uZmlnAAAAAgAAAAlpQW10QXNzZXQAAAALaVByaWNlQXNzZXQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIJWQlZCVzX18FAAAACWlBbXRBc3NldAIAAAACX18FAAAAC2lQcmljZUFzc2V0AgAAAAhfX2NvbmZpZwEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEAAAAMYmFzZUFzc2V0U3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAADGJhc2VBc3NldFN0cgEAAAATa2V5QWxsUG9vbHNTaHV0ZG93bgAAAAACAAAADCVzX19zaHV0ZG93bgEAAAANa2V5UG9vbFdlaWdodAAAAAEAAAAPY29udHJhY3RBZGRyZXNzCQABLAAAAAICAAAAEiVzJXNfX3Bvb2xXZWlnaHRfXwUAAAAPY29udHJhY3RBZGRyZXNzAQAAAA90aHJvd09yZGVyRXJyb3IAAAADAAAACm9yZGVyVmFsaWQAAAALc2VuZGVyVmFsaWQAAAAMbWF0Y2hlclZhbGlkCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAAGlAAAAAQUAAAAKb3JkZXJWYWxpZAIAAAANIHNlbmRlclZhbGlkPQkAAaUAAAABBQAAAAtzZW5kZXJWYWxpZAIAAAAOIG1hdGNoZXJWYWxpZD0JAAGlAAAAAQUAAAAMbWF0Y2hlclZhbGlkAQAAAAhhc1N0cmluZwAAAAEAAAADdmFsBAAAAAckbWF0Y2gwBQAAAAN2YWwDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAGdmFsU3RyBQAAAAckbWF0Y2gwBQAAAAZ2YWxTdHIJAAACAAAAAQIAAAAVZmFpbCB0byBjYXN0IGludG8gSW50AQAAAA9nZXRTdHJpbmdPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAPIGlzIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAEAAAAMZ2V0SW50T3JGYWlsAAAAAgAAAAdhZGRyZXNzAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAACm1hbmRhdG9yeSAJAARMAAAAAgkABCUAAAABBQAAAAdhZGRyZXNzCQAETAAAAAICAAAAAS4JAARMAAAAAgUAAAADa2V5CQAETAAAAAICAAAADyBpcyBub3QgZGVmaW5lZAUAAAADbmlsAgAAAAAAAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAAtrZXlGYWN0Q250cgAAAAABAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAE2tleUFsbFBvb2xzU2h1dGRvd24AAAAABwEAAAATZ2V0TWF0Y2hlclB1Yk9yRmFpbAAAAAAJAAJZAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAADWtleU1hdGNoZXJQdWIAAAAAAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAFYW10QXMJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAR0aGlzCQEAAAALa2V5QW10QXNzZXQAAAAABAAAAAdwcmljZUFzCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAADWtleVByaWNlQXNzZXQAAAAABAAAAAhpUHJpY2VBcwkBAAAADGdldEludE9yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQAAAABBQAAAAdwcmljZUFzBAAAAAZpQW10QXMJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAFYW10QXMJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAADWtleVBvb2xDb25maWcAAAACCQABpAAAAAEFAAAABmlBbXRBcwkAAaQAAAABBQAAAAhpUHJpY2VBcwUAAAADU0VQAQAAABBnZXRGYWN0b3J5Q29uZmlnAAAAAAkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAQa2V5RmFjdG9yeUNvbmZpZwAAAAAFAAAAA1NFUAEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAKAAAADWluQW10QXNzZXRBbXQAAAAPaW5QcmljZUFzc2V0QW10AAAACG91dExwQW10AAAABXByaWNlAAAADnNsaXBwYWdlQnlVc2VyAAAADHNsaXBwYWdlUmVhbAAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAAAAAxzbGlwYWdlQW1BbXQAAAAMc2xpcGFnZVByQW10CQAEuQAAAAIJAARMAAAAAgIAAAAUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA1pbkFtdEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAPaW5QcmljZUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAIb3V0THBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAADnNsaXBwYWdlQnlVc2VyCQAETAAAAAIJAAGkAAAAAQUAAAAMc2xpcHBhZ2VSZWFsCQAETAAAAAIJAAGkAAAAAQUAAAAIdHhIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAt0eFRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAADHNsaXBhZ2VBbUFtdAkABEwAAAACCQABpAAAAAEFAAAADHNsaXBhZ2VQckFtdAUAAAADbmlsBQAAAANTRVABAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgAAAA5vdXRBbXRBc3NldEFtdAAAABBvdXRQcmljZUFzc2V0QW10AAAAB2luTHBBbXQAAAAFcHJpY2UAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAAAwlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA5vdXRBbXRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAEG91dFByaWNlQXNzZXRBbXQJAARMAAAAAgkAAaQAAAABBQAAAAdpbkxwQW10CQAETAAAAAIJAAGkAAAAAQUAAAAFcHJpY2UJAARMAAAAAgkAAaQAAAABBQAAAAh0eEhlaWdodAkABEwAAAACCQABpAAAAAEFAAAAC3R4VGltZXN0YW1wBQAAAANuaWwFAAAAA1NFUAEAAAANZ2V0QWNjQmFsYW5jZQAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMICQAD7wAAAAEFAAAABHRoaXMAAAAJYXZhaWxhYmxlCQAD8AAAAAIFAAAABHRoaXMJAAJZAAAAAQUAAAAHYXNzZXRJZAEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgAAAAhwckFtdFgxOAAAAAhhbUFtdFgxOAkAATwAAAADBQAAAAhwckFtdFgxOAUAAAAHc2NhbGUxOAUAAAAIYW1BbXRYMTgBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEAAAACmFtQXNzZXREY20AAAAKcHJBc3NldERjbQAAAAVhbUFtdAAAAAVwckFtdAQAAAALYW10QXNBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWFtQW10BQAAAAphbUFzc2V0RGNtBAAAAApwckFzQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVwckFtdAUAAAAKcHJBc3NldERjbQkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACnByQXNBbXRYMTgFAAAAC2FtdEFzQW10WDE4AQAAAApjYWxjUHJpY2VzAAAAAwAAAAVhbUFtdAAAAAVwckFtdAAAAAVscEFtdAQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACGFtdEFzRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAHcHJBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAIcHJpY2VYMTgJAQAAABBwcml2YXRlQ2FsY1ByaWNlAAAABAUAAAAIYW10QXNEY20FAAAAB3ByQXNEY20FAAAABWFtQW10BQAAAAVwckFtdAQAAAAIYW1BbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABWFtQW10BQAAAAhhbXRBc0RjbQQAAAAIcHJBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABXByQW10BQAAAAdwckFzRGNtBAAAAAhscEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFbHBBbXQFAAAABnNjYWxlOAQAAAANbHBQckluQW1Bc1gxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACGFtQW10WDE4BQAAAAhscEFtdFgxOAQAAAANbHBQckluUHJBc1gxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAACHByQW10WDE4BQAAAAhscEFtdFgxOAkABEwAAAACBQAAAAhwcmljZVgxOAkABEwAAAACBQAAAA1scFBySW5BbUFzWDE4CQAETAAAAAIFAAAADWxwUHJJblByQXNYMTgFAAAAA25pbAEAAAAPY2FsY3VsYXRlUHJpY2VzAAAAAwAAAAVhbUFtdAAAAAVwckFtdAAAAAVscEFtdAQAAAAGcHJpY2VzCQEAAAAKY2FsY1ByaWNlcwAAAAMFAAAABWFtQW10BQAAAAVwckFtdAUAAAAFbHBBbXQJAARMAAAAAgkBAAAAB2Zyb21YMTgAAAACCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAAUAAAAGc2NhbGU4CQAETAAAAAIJAQAAAAdmcm9tWDE4AAAAAgkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAEFAAAABnNjYWxlOAkABEwAAAACCQEAAAAHZnJvbVgxOAAAAAIJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAACBQAAAAZzY2FsZTgFAAAAA25pbAEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAEAAAABnR4SWQ1OAAAAApwbXRBc3NldElkAAAACHBtdExwQW10AAAAC3VzZXJBZGRyZXNzBAAAAANjZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAEbHBJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeExQQXNJZAQAAAAEYW1JZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeEFtQXNJZAQAAAAEcHJJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeFByQXNJZAQAAAAFYW1EY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAVwckRjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQkAAlkAAAABBQAAAARscElkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAARscElkAgAAAA4gZG9lc24ndCBleGlzdAAAAAhxdWFudGl0eQMJAQAAAAIhPQAAAAIFAAAABGxwSWQFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAVSW52YWxpZCBhc3NldCBwYXNzZWQuBAAAAAlhbUJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEYW1JZAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAABWFtRGNtBAAAAAlwckJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEcHJJZAQAAAAMcHJCYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAABXByRGNtBAAAAAtjdXJQcmljZVgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAMYW1CYWxhbmNlWDE4BAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4BAAAAAtwbXRMcEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAIcG10THBBbXQFAAAABnNjYWxlOAQAAAANbHBFbWlzc2lvblgxOAkBAAAABXRvWDE4AAAAAgUAAAAKbHBFbWlzc2lvbgUAAAAGc2NhbGU4BAAAAAtvdXRBbUFtdFgxOAkAATwAAAADBQAAAAxhbUJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAA1scEVtaXNzaW9uWDE4BAAAAAtvdXRQckFtdFgxOAkAATwAAAADBQAAAAxwckJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAA1scEVtaXNzaW9uWDE4BAAAAAhvdXRBbUFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAAtvdXRBbUFtdFgxOAUAAAAFYW1EY20EAAAACG91dFByQW10CQEAAAAHZnJvbVgxOAAAAAIFAAAAC291dFByQW10WDE4BQAAAAVwckRjbQQAAAAFc3RhdGUDCQAAAAAAAAIFAAAABnR4SWQ1OAIAAAAABQAAAANuaWwJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAACG91dEFtQW10AwkAAAAAAAACBQAAAARhbUlkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAARhbUlkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAhvdXRQckFtdAMJAAAAAAAAAgUAAAAEcHJJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAAEcHJJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAACHBtdExwQW10BQAAAAhjdXJQcmljZQUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAIY3VyUHJpY2UFAAAAA25pbAkABRwAAAAKBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAABGFtSWQFAAAABHBySWQFAAAACWFtQmFsYW5jZQUAAAAJcHJCYWxhbmNlBQAAAApscEVtaXNzaW9uBQAAAAtjdXJQcmljZVgxOAUAAAAKcG9vbFN0YXR1cwUAAAAFc3RhdGUBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAACQAAAAZ0eElkNTgAAAAIc2xpcHBhZ2UAAAAHaW5BbUFtdAAAAAZpbkFtSWQAAAAHaW5QckFtdAAAAAZpblBySWQAAAALdXNlckFkZHJlc3MAAAAKaXNFdmFsdWF0ZQAAAAZlbWl0THAEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAARscElkCQACWQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAAB2FtSWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAAB3BySWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAACWluQW1JZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAC2lkeElBbXRBc0lkBAAAAAlpblBySWRTdHIJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhJUHJpY2VBc0lkBAAAAAZhbXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAhwcmljZURjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAAEbHBJZAIAAAAPV3JvbmcgbHAgYXNzZXQuAAAACHF1YW50aXR5BAAAAAlhbUJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtSWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdhbUlkU3RyBQAAAAdpbkFtQW10BAAAAAlwckJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdwcklkU3RyBQAAAAdpblByQW10BAAAAA9pbkFtQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAAB2luQW1BbXQFAAAABmFtdERjbQQAAAAPaW5QckFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAdpblByQW10BQAAAAhwcmljZURjbQQAAAAMdXNlclByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAPaW5QckFzc2V0QW10WDE4BQAAAA9pbkFtQXNzZXRBbXRYMTgEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAZhbXREY20EAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAhwcmljZURjbQQAAAADcmVzAwkAAAAAAAACBQAAAApscEVtaXNzaW9uAAAAAAAAAAAABAAAAAtjdXJQcmljZVgxOAUAAAAKemVyb0JpZ0ludAQAAAALc2xpcHBhZ2VYMTgFAAAACnplcm9CaWdJbnQEAAAACGxwQW10WDE4CQAAdgAAAAYJAAE5AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAA9pblByQXNzZXRBbXRYMTgAAAAAAAAAAAAJAAE2AAAAAQAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgkABRcAAAAFCQEAAAAHZnJvbVgxOAAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAZhbXREY20JAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5QckFzc2V0QW10WDE4BQAAAAhwcmljZURjbQkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIJAAE3AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAE3AAAAAgUAAAAMYW1CYWxhbmNlWDE4BQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC3NsaXBwYWdlWDE4BAAAAAtjdXJQcmljZVgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAMYW1CYWxhbmNlWDE4BAAAAA9zbGlwcGFnZVJlYWxYMTgJAAE8AAAAAwkBAAAAA2FicwAAAAEJAAE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAADHVzZXJQcmljZVgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAAC3NsaXBwYWdlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAhzbGlwcGFnZQUAAAAGc2NhbGU4AwMJAQAAAAIhPQAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50CQABPwAAAAIFAAAAD3NsaXBwYWdlUmVhbFgxOAUAAAALc2xpcHBhZ2VYMTgHCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD1ByaWNlIHNsaXBwYWdlIAkAAaYAAAABBQAAAA9zbGlwcGFnZVJlYWxYMTgCAAAACiBleGNlZWRlZCAJAAGmAAAAAQUAAAALc2xpcHBhZ2VYMTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAAKcHJWaWFBbVgxOAkAATwAAAADBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC2N1clByaWNlWDE4BQAAAAdzY2FsZTE4BAAAAAphbVZpYVByWDE4CQABPAAAAAMFAAAAD2luUHJBc3NldEFtdFgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAADGV4cGVjdGVkQW10cwMJAAE/AAAAAgUAAAAKcHJWaWFBbVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQAFFAAAAAIFAAAACmFtVmlhUHJYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAACnByVmlhQW1YMTgEAAAAEWV4cEFtdEFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8xBAAAABNleHBQcmljZUFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8yBAAAAAhscEFtdFgxOAkAATwAAAADBQAAAA1scEVtaXNzaW9uWDE4BQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAAxwckJhbGFuY2VYMTgJAAUXAAAABQkBAAAAB2Zyb21YMTgAAAACBQAAAAhscEFtdFgxOAUAAAAGc2NhbGU4CQEAAAAHZnJvbVgxOAAAAAIFAAAAEWV4cEFtdEFzc2V0QW10WDE4BQAAAAZhbXREY20JAQAAAAdmcm9tWDE4AAAAAgUAAAATZXhwUHJpY2VBc3NldEFtdFgxOAUAAAAIcHJpY2VEY20FAAAAC2N1clByaWNlWDE4BQAAAAtzbGlwcGFnZVgxOAQAAAAJY2FsY0xwQW10CAUAAAADcmVzAAAAAl8xBAAAAA5jYWxjQW1Bc3NldFBtdAgFAAAAA3JlcwAAAAJfMgQAAAAOY2FsY1ByQXNzZXRQbXQIBQAAAANyZXMAAAACXzMEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIIBQAAAANyZXMAAAACXzQFAAAABnNjYWxlOAQAAAAMc2xpcHBhZ2VDYWxjCQEAAAAHZnJvbVgxOAAAAAIIBQAAAANyZXMAAAACXzUFAAAABnNjYWxlOAMJAABnAAAAAgAAAAAAAAAAAAUAAAAJY2FsY0xwQW10CQAAAgAAAAECAAAAFUxQIGlzIGxlc3MgdGhhbiB6ZXJvLgQAAAAJZW1pdExwQW10AwkBAAAAASEAAAABBQAAAAZlbWl0THAAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAQAAAAGYW1EaWZmCQAAZQAAAAIFAAAAB2luQW1BbXQFAAAADmNhbGNBbUFzc2V0UG10BAAAAAZwckRpZmYJAABlAAAAAgUAAAAHaW5QckFtdAUAAAAOY2FsY1ByQXNzZXRQbXQEAAAAC2NvbW1vblN0YXRlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5UHV0QWN0aW9uQnlVc2VyAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgUAAAAOY2FsY0FtQXNzZXRQbXQFAAAADmNhbGNQckFzc2V0UG10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAAAhzbGlwcGFnZQUAAAAMc2xpcHBhZ2VDYWxjBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAZhbURpZmYFAAAABnByRGlmZgUAAAADbmlsCQAFHwAAAA0FAAAACWNhbGNMcEFtdAUAAAAJZW1pdExwQW10BQAAAAhjdXJQcmljZQUAAAAJYW1CYWxhbmNlBQAAAAlwckJhbGFuY2UFAAAACmxwRW1pc3Npb24FAAAABGxwSWQFAAAACnBvb2xTdGF0dXMFAAAAC2NvbW1vblN0YXRlBQAAAAZhbURpZmYFAAAABnByRGlmZgUAAAAGaW5BbUlkBQAAAAZpblBySWQBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEAAAAFb3JkZXIEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAphbXRBc3NldElkCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4QW1Bc0lkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAASYWNjQW10QXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAACmFtdEFzc2V0SWQEAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByaWNlQXNzZXRJZAQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIIBQAAAAVvcmRlcgAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQkAAGQAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAAC2FtdEFzc2V0RGNtBQAAAA1wcmljZUFzc2V0RGNtCQAAZQAAAAIFAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAZzY2FsZTgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAECAAAAHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAAAADW9yZGVyQW10QXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BAAAABBvcmRlckFtdEFzc2V0U3RyAwkAAAAAAAACBQAAAA1vcmRlckFtdEFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAA1vcmRlckFtdEFzc2V0BAAAAA9vcmRlclByaWNlQXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQEAAAAEm9yZGVyUHJpY2VBc3NldFN0cgMJAAAAAAAAAgUAAAAPb3JkZXJQcmljZUFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAA9vcmRlclByaWNlQXNzZXQDAwkBAAAAAiE9AAAAAgUAAAAQb3JkZXJBbXRBc3NldFN0cgUAAAAKYW10QXNzZXRJZAYJAQAAAAIhPQAAAAIFAAAAEm9yZGVyUHJpY2VBc3NldFN0cgUAAAAMcHJpY2VBc3NldElkCQAAAgAAAAECAAAAE1dyb25nIG9yZGVyIGFzc2V0cy4EAAAACm9yZGVyUHJpY2UIBQAAAAVvcmRlcgAAAAVwcmljZQQAAAAIcHJpY2VEY20JAABrAAAAAwUAAAAGc2NhbGU4BQAAAA1wcmljZUFzc2V0RGNtBQAAAAthbXRBc3NldERjbQQAAAAQY2FzdGVkT3JkZXJQcmljZQkBAAAAB3RvU2NhbGUAAAADBQAAAApvcmRlclByaWNlBQAAAAZzY2FsZTgFAAAACHByaWNlRGNtBAAAABFpc09yZGVyUHJpY2VWYWxpZAMJAAAAAAAAAggFAAAABW9yZGVyAAAACW9yZGVyVHlwZQUAAAADQnV5CQAAZwAAAAIFAAAACGN1clByaWNlBQAAABBjYXN0ZWRPcmRlclByaWNlCQAAZwAAAAIFAAAAEGNhc3RlZE9yZGVyUHJpY2UFAAAACGN1clByaWNlBgEAAAAJY29tbW9uR2V0AAAAAQAAAAFpAwkBAAAAAiE9AAAAAgkAAZAAAAAB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AAAAAgUAAAAEbHBJZAkAAlgAAAABBQAAAApwbXRBc3NldElkCQAAAgAAAAECAAAAFUludmFsaWQgYXNzZXQgcGFzc2VkLgQAAAAOYW1Bc3NldFN3YXBYMTgJAQAAAAV0b1gxOAAAAAIFAAAAC2FtQXNzZXRTd2FwBQAAAAVhbURjbQQAAAAOcHJBc3NldFN3YXBYMTgJAQAAAAV0b1gxOAAAAAIFAAAAC3ByQXNzZXRTd2FwBQAAAAVwckRjbQQAAAAMc3dhcFByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAOcHJBc3NldFN3YXBYMTgFAAAADmFtQXNzZXRTd2FwWDE4BAAAAAFyCQEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAECQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAAJYAAAAAQUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10CAUAAAABaQAAAAZjYWxsZXIEAAAACG91dEFtQW10CAUAAAABcgAAAAJfMQQAAAAIb3V0UHJBbXQIBQAAAAFyAAAAAl8yBAAAAAZ0b3RhbFIDCQAAAAAAAAIFAAAACm91dEFzc2V0SWQFAAAABGFtSWQEAAAACGFtdEFzUmVzCQEAAAAHZnJvbVgxOAAAAAIJAAE8AAAAAwkBAAAABXRvWDE4AAAAAgUAAAAIb3V0UHJBbXQFAAAABXByRGNtBQAAAAdzY2FsZTE4BQAAAAxzd2FwUHJpY2VYMTgFAAAABWFtRGNtCQAAZAAAAAIFAAAACGFtdEFzUmVzBQAAAAhvdXRBbUFtdAQAAAAWYW1Td29wUGFydEluUHJpY2VBc3NldAkAAGUAAAACBQAAAA5yZXN1bHRQckFtb3VudAUAAAAIb3V0UHJBbXQEAAAAB2NvbnZSZXMJAAE8AAAAAwkBAAAABXRvWDE4AAAAAgUAAAAWYW1Td29wUGFydEluUHJpY2VBc3NldAUAAAAFYW1EY20FAAAAB3NjYWxlMTgFAAAADHN3YXBQcmljZVgxOAQAAAAHcHJBc1JlcwkBAAAAB2Zyb21YMTgAAAACCQABPAAAAAMJAQAAAAV0b1gxOAAAAAIFAAAACG91dEFtQW10BQAAAAVhbURjbQUAAAAMc3dhcFByaWNlWDE4BQAAAAdzY2FsZTE4BQAAAAVwckRjbQQAAAALYW1Bc3NldERpZmYJAAE8AAAAAwkAATgAAAACBQAAAAdjb252UmVzBQAAAA5hbUFzc2V0U3dhcFgxOAUAAAAMc2NhbGU4QmlnSW50BQAAAA5hbUFzc2V0U3dhcFgxOAkAAGQAAAACBQAAAAdwckFzUmVzBQAAAAhvdXRQckFtdAQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABGFtSWQEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbURjbQQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABHBySWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAVwckRjbQQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAAFc3RhdGUJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAABnRvdGFsUgMJAAAAAAAAAgUAAAANcmVzdWx0QXNzZXRJZAIAAAAFV0FWRVMFAAAABHVuaXQJAAJZAAAAAQUAAAANcmVzdWx0QXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGBQAAAA9yZXN1bHRBbXRBbW91bnQFAAAADnJlc3VsdFByQW1vdW50BQAAAAZwbXRBbXQFAAAACGN1clByaWNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQUAAAADbmlsBAAAAARidXJuCQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEYnVybgkABEwAAAACBQAAAAZwbXRBbXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10BQAAAANuaWwDCQAAAAAAAAIFAAAABGJ1cm4FAAAABGJ1cm4FAAAABXN0YXRlCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAlnZXROb0xlc3MAAAACAAAAEm5vTGVzc1RoZW5BbXRBc3NldAAAABRub0xlc3NUaGVuUHJpY2VBc3NldAQAAAADcmVzCQEAAAAJY29tbW9uR2V0AAAAAQUAAAABaQQAAAAIb3V0QW1BbXQIBQAAAANyZXMAAAACXzEEAAAACG91dFByQW10CAUAAAADcmVzAAAAAl8yBAAAAAZwbXRBbXQIBQAAAANyZXMAAAACXzMEAAAACnBtdEFzc2V0SWQIBQAAAANyZXMAAAACXzQEAAAABXN0YXRlCAUAAAADcmVzAAAAAl81AwkAAGYAAAACBQAAABJub0xlc3NUaGVuQW10QXNzZXQFAAAACG91dEFtQW10CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAAGkAAAAAQUAAAAIb3V0QW1BbXQCAAAAAyA8IAkAAaQAAAABBQAAABJub0xlc3NUaGVuQW10QXNzZXQDCQAAZgAAAAIFAAAAFG5vTGVzc1RoZW5QcmljZUFzc2V0BQAAAAhvdXRQckFtdAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAB1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkAAaQAAAABBQAAAAhvdXRQckFtdAIAAAADIDwgCQABpAAAAAEFAAAAFG5vTGVzc1RoZW5QcmljZUFzc2V0BAAAABRidXJuTFBBc3NldE9uRmFjdG9yeQkAA/wAAAAEBQAAAA9mYWN0b3J5Q29udHJhY3QCAAAABGJ1cm4JAARMAAAAAgUAAAAGcG10QW10BQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACnBtdEFzc2V0SWQFAAAABnBtdEFtdAUAAAADbmlsAwkAAAAAAAACBQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkFAAAABXN0YXRlCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA11bnN0YWtlQW5kR2V0AAAAAQAAAAZhbW91bnQEAAAADWNoZWNrUGF5bWVudHMDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAAAAAAIFAAAADWNoZWNrUGF5bWVudHMFAAAADWNoZWNrUGF5bWVudHMEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAApmYWN0b3J5Q2ZnCQEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4TFBBc0lkBAAAAA9zdGFraW5nQ29udHJhY3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAD2lkeEZhY3RTdGFrQ250cgIAAAAhRXJyb3IuIEluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MuBAAAAAp1bnN0YWtlSW52CQAD/AAAAAQFAAAAD3N0YWtpbmdDb250cmFjdAIAAAAHdW5zdGFrZQkABEwAAAACCQACWAAAAAEFAAAACWxwQXNzZXRJZAkABEwAAAACBQAAAAZhbW91bnQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAp1bnN0YWtlSW52BQAAAAp1bnN0YWtlSW52BAAAAANyZXMJAQAAABRlc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABBQAAAAlscEFzc2V0SWQFAAAABmFtb3VudAgFAAAAAWkAAAAGY2FsbGVyBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAAANyZXMAAAACXzkEAAAABXN0YXRlCAUAAAADcmVzAAAAA18xMAQAAAAPY2hlY2tQb29sU3RhdHVzAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAEJAAEsAAAAAgIAAAAsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwYDCQAAAAAAAAIFAAAAD2NoZWNrUG9vbFN0YXR1cwUAAAAPY2hlY2tQb29sU3RhdHVzBAAAABRidXJuTFBBc3NldE9uRmFjdG9yeQkAA/wAAAAEBQAAAA9mYWN0b3J5Q29udHJhY3QCAAAABGJ1cm4JAARMAAAAAgUAAAAGYW1vdW50BQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWxwQXNzZXRJZAUAAAAGYW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGFjdGl2YXRlAAAAAgAAAAthbXRBc3NldFN0cgAAAA1wcmljZUFzc2V0U3RyAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAQlAAAAAQUAAAAPZmFjdG9yeUNvbnRyYWN0CQAAAgAAAAECAAAAEnBlcm1pc3Npb25zIGRlbmllZAkABRQAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlBbXRBc3NldAAAAAAFAAAAC2FtdEFzc2V0U3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAUAAAANcHJpY2VBc3NldFN0cgUAAAADbmlsAgAAAAdzdWNjZXNzAAAAAWkBAAAAHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAkBAAAADWdldFBvb2xDb25maWcAAAAAAAAAAWkBAAAAHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkAAAABAAAAB2Fzc2V0SWQJAAUUAAAAAgUAAAADbmlsCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAAZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQAAAAMAAAAFYW1BbXQAAAAFcHJBbXQAAAAFbHBBbXQEAAAABnByaWNlcwkBAAAACmNhbGNQcmljZXMAAAADBQAAAAVhbUFtdAUAAAAFcHJBbXQFAAAABWxwQW10CQAFFAAAAAIFAAAAA25pbAkABEwAAAACCQABpgAAAAEJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAAACQAETAAAAAIJAAGmAAAAAQkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAEJAARMAAAAAgkAAaYAAAABCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAgUAAAADbmlsAAAAAWkBAAAAFmZyb21YMThXcmFwcGVyUkVBRE9OTFkAAAACAAAAA3ZhbAAAAA9yZXN1bHRTY2FsZU11bHQJAAUUAAAAAgUAAAADbmlsCQEAAAAHZnJvbVgxOAAAAAIJAAGnAAAAAQUAAAADdmFsBQAAAA9yZXN1bHRTY2FsZU11bHQAAAABaQEAAAAUdG9YMThXcmFwcGVyUkVBRE9OTFkAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkABRQAAAACBQAAAANuaWwJAAGmAAAAAQkBAAAABXRvWDE4AAAAAgUAAAAHb3JpZ1ZhbAUAAAANb3JpZ1NjYWxlTXVsdAAAAAFpAQAAAB5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkAAAACAAAACHByQW10WDE4AAAACGFtQW10WDE4CQAFFAAAAAIFAAAAA25pbAkAAaYAAAABCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAAacAAAABBQAAAAhwckFtdFgxOAkAAacAAAABBQAAAAhhbUFtdFgxOAAAAAFpAQAAACNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQAAAAkAAAAGdHhJZDU4AAAACHNsaXBwYWdlAAAAB2luQW1BbXQAAAAGaW5BbUlkAAAAB2luUHJBbXQAAAAGaW5QcklkAAAAC3VzZXJBZGRyZXNzAAAACmlzRXZhbHVhdGUAAAAGZW1pdExwCQAFFAAAAAIFAAAAA25pbAkBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAACQUAAAAGdHhJZDU4BQAAAAhzbGlwcGFnZQUAAAAHaW5BbUFtdAUAAAAGaW5BbUlkBQAAAAdpblByQW10BQAAAAZpblBySWQFAAAAC3VzZXJBZGRyZXNzBQAAAAppc0V2YWx1YXRlBQAAAAZlbWl0THAAAAABaQEAAAAjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkAAAAEAAAABnR4SWQ1OAAAAApwbXRBc3NldElkAAAACHBtdExwQW10AAAAC3VzZXJBZGRyZXNzBAAAAANyZXMJAQAAABRlc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAQFAAAABnR4SWQ1OAUAAAAKcG10QXNzZXRJZAUAAAAIcG10THBBbXQJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAC3VzZXJBZGRyZXNzCQAFFAAAAAIFAAAAA25pbAkABRwAAAAKCAUAAAADcmVzAAAAAl8xCAUAAAADcmVzAAAAAl8yCAUAAAADcmVzAAAAAl8zCAUAAAADcmVzAAAAAl80CAUAAAADcmVzAAAAAl81CAUAAAADcmVzAAAAAl82CAUAAAADcmVzAAAAAl83CQABpgAAAAEIBQAAAANyZXMAAAACXzgIBQAAAANyZXMAAAACXzkIBQAAAANyZXMAAAADXzEwAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABU9yZGVyBAAAAAVvcmRlcgUAAAAHJG1hdGNoMAQAAAAKbWF0Y2hlclB1YgkBAAAAE2dldE1hdGNoZXJQdWJPckZhaWwAAAAABAAAAApvcmRlclZhbGlkCQEAAAAbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAAAAAQUAAAAFb3JkZXIEAAAAC3NlbmRlclZhbGlkCQAB9AAAAAMIBQAAAAVvcmRlcgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAABW9yZGVyAAAABnByb29mcwAAAAAAAAAAAAgFAAAABW9yZGVyAAAAD3NlbmRlclB1YmxpY0tleQQAAAAMbWF0Y2hlclZhbGlkCQAB9AAAAAMIBQAAAAVvcmRlcgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAABW9yZGVyAAAABnByb29mcwAAAAAAAAAAAQUAAAAKbWF0Y2hlclB1YgMDAwUAAAAKb3JkZXJWYWxpZAUAAAALc2VuZGVyVmFsaWQHBQAAAAxtYXRjaGVyVmFsaWQHBgkBAAAAD3Rocm93T3JkZXJFcnJvcgAAAAMFAAAACm9yZGVyVmFsaWQFAAAAC3NlbmRlclZhbGlkBQAAAAxtYXRjaGVyVmFsaWQEAAAADW1hbmFnZXJQdWJsaWMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAABQAAAAVFTVBUWQMJAAAAAAAAAgUAAAANbWFuYWdlclB1YmxpYwUAAAAFRU1QVFkJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABBQAAAA1tYW5hZ2VyUHVibGljodozkg==", "chainId": 84, "height": 1847070, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2AVhqgZdK7yK9H5A72uY9trzgVU1JLLkzHY8fAePkJKx Next: 9epkJo2geWwfJX6F29riSq7tgdGEM89Hx3vwZGwcASWB Diff:
OldNewDifferences
4949
5050 let x = 7
5151
52-func y (z,A) = fraction(toBigInt(z), e, toBigInt(A))
52+let y = 10
53+
54+func z (A,B) = fraction(toBigInt(A), e, toBigInt(B))
5355
5456
55-func B (C,D) = toInt(fraction(C, toBigInt(D), e))
57+func C (D,E) = toInt(fraction(D, toBigInt(E), e))
5658
5759
58-func E (F,G,H) = fraction(F, G, H)
60+func F (G,H,I) = fraction(G, H, I)
5961
6062
61-func I (C) = if ((f > C))
62- then -(C)
63- else C
63+func J (D) = if ((f > D))
64+ then -(D)
65+ else D
6466
6567
66-func J () = "%s__factoryContract"
68+func K () = "%s__factoryContract"
6769
6870
69-func K () = "%s__managerPublicKey"
71+func L () = "%s__managerPublicKey"
7072
7173
72-func L () = "%s%s__price__last"
74+func M () = "%s%s__price__last"
7375
7476
75-func M (N,O) = makeString(["%s%s%d%d__price__history", toString(N), toString(O)], h)
77+func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
7678
7779
78-func P (Q,R) = ((("%s%s%s__P__" + Q) + "__") + R)
80+func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
7981
8082
81-func S (Q,R) = ((("%s%s%s__G__" + Q) + "__") + R)
83+func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
8284
8385
84-func T () = "%s__amountAsset"
86+func U () = "%s__amountAsset"
8587
8688
87-func U () = "%s__priceAsset"
89+func V () = "%s__priceAsset"
8890
8991
90-func V () = "%s__factoryConfig"
92+func W () = "%s__factoryConfig"
9193
9294
93-func W () = "%s%s__matcher__publicKey"
95+func X () = "%s%s__matcher__publicKey"
9496
9597
96-func X (Y,Z) = (((("%d%d%s__" + Y) + "__") + Z) + "__config")
98+func Y (Z,aa) = (((("%d%d%s__" + Z) + "__") + aa) + "__config")
9799
98100
99-func aa (ab) = ("%s%s%s__mappings__baseAsset2internalId__" + ab)
101+func ab (ac) = ("%s%s%s__mappings__baseAsset2internalId__" + ac)
100102
101103
102-func ac () = "%s__shutdown"
104+func ad () = "%s__shutdown"
103105
104106
105-func ad (ae) = ("%s%s__poolWeight__" + ae)
107+func ae (af) = ("%s%s__poolWeight__" + af)
106108
107109
108-func af (ag,ah,ai) = throw(((((("order validation failed: orderValid=" + toString(ag)) + " senderValid=") + toString(ah)) + " matcherValid=") + toString(ai)))
110+func ag (ah,ai,aj) = throw(((((("order validation failed: orderValid=" + toString(ah)) + " senderValid=") + toString(ai)) + " matcherValid=") + toString(aj)))
109111
110112
111-func aj (ak,al) = valueOrErrorMessage(getString(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
112-
113-
114-func am (ak,al) = valueOrErrorMessage(getInteger(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
115-
116-
117-let an = addressFromStringValue(aj(this, J()))
118-
119-func ao () = valueOrElse(getBoolean(an, ac()), false)
120-
121-
122-func ap () = fromBase58String(aj(an, W()))
123-
124-
125-func aq () = {
126- let ar = aj(this, T())
127- let as = aj(this, U())
128- let at = am(an, aa(as))
129- let au = am(an, aa(ar))
130- split(aj(an, X(toString(au), toString(at))), h)
113+func ak (D) = {
114+ let al = D
115+ if ($isInstanceOf(al, "String"))
116+ then {
117+ let am = al
118+ am
119+ }
120+ else throw("fail to cast into Int")
131121 }
132122
133123
134-func av () = split(aj(an, V()), h)
124+func an (ao,ap) = valueOrErrorMessage(getString(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
135125
136126
137-func aw (ax,ay,az,aA,aB,aC,aD,aE,aF,aG) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(ax), toString(ay), toString(az), toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG)], h)
127+func aq (ao,ap) = valueOrErrorMessage(getInteger(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
138128
139129
140-func aH (aI,aJ,aK,aA,aD,aE) = makeString(["%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aA), toString(aD), toString(aE)], h)
130+let ar = addressFromStringValue(an(this, K()))
131+
132+func as () = valueOrElse(getBoolean(ar, ad()), false)
141133
142134
143-func aL (aM) = if ((aM == "WAVES"))
144- then wavesBalance(this).available
145- else assetBalance(this, fromBase58String(aM))
135+func at () = fromBase58String(an(ar, X()))
146136
147137
148-func aN (aO,aP) = fraction(aO, e, aP)
149-
150-
151-func aQ (aR,aS,aT,aU) = {
152- let aV = y(aT, aR)
153- let aW = y(aU, aS)
154- aN(aW, aV)
138+func au () = {
139+ let av = an(this, U())
140+ let aw = an(this, V())
141+ let ax = aq(ar, ab(aw))
142+ let ay = aq(ar, ab(av))
143+ split(an(ar, Y(toString(ay), toString(ax))), h)
155144 }
156145
157146
158-func aX (aT,aU,aY) = {
159- let aZ = aq()
160- let ba = parseIntValue(aZ[s])
161- let bb = parseIntValue(aZ[t])
162- let bc = aQ(ba, bb, aT, aU)
163- let aP = y(aT, ba)
164- let aO = y(aU, bb)
165- let bd = y(aY, b)
166- let be = aN(aP, bd)
167- let bf = aN(aO, bd)
168-[bc, be, bf]
147+func az () = split(an(ar, W()), h)
148+
149+
150+func aA (aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK)], h)
151+
152+
153+func aL (aM,aN,aO,aE,aH,aI) = makeString(["%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aE), toString(aH), toString(aI)], h)
154+
155+
156+func aP (aQ) = if ((aQ == "WAVES"))
157+ then wavesBalance(this).available
158+ else assetBalance(this, fromBase58String(aQ))
159+
160+
161+func aR (aS,aT) = fraction(aS, e, aT)
162+
163+
164+func aU (aV,aW,aX,aY) = {
165+ let aZ = z(aX, aV)
166+ let ba = z(aY, aW)
167+ aR(ba, aZ)
169168 }
170169
171170
172-func bg (aT,aU,aY) = {
173- let bh = aX(aT, aU, aY)
174-[B(bh[0], b), B(bh[1], b), B(bh[2], b)]
171+func bb (aX,aY,bc) = {
172+ let bd = au()
173+ let be = parseIntValue(bd[s])
174+ let bf = parseIntValue(bd[t])
175+ let bg = aU(be, bf, aX, aY)
176+ let aT = z(aX, be)
177+ let aS = z(aY, bf)
178+ let bh = z(bc, b)
179+ let bi = aR(aT, bh)
180+ let bj = aR(aS, bh)
181+[bg, bi, bj]
175182 }
176183
177184
178-func bi (bj,bk,bl,Q) = {
179- let aZ = aq()
180- let bm = aZ[p]
181- let bn = aZ[q]
182- let bo = aZ[r]
183- let bp = parseIntValue(aZ[s])
184- let bq = parseIntValue(aZ[t])
185- let br = aZ[o]
186- let bs = valueOrErrorMessage(assetInfo(fromBase58String(bm)), (("Asset " + bm) + " doesn't exist")).quantity
187- if ((bm != bk))
185+func bk (aX,aY,bc) = {
186+ let bl = bb(aX, aY, bc)
187+[C(bl[0], b), C(bl[1], b), C(bl[2], b)]
188+ }
189+
190+
191+func bm (bn,bo,bp,R) = {
192+ let bd = au()
193+ let bq = bd[p]
194+ let br = bd[q]
195+ let bs = bd[r]
196+ let bt = parseIntValue(bd[s])
197+ let bu = parseIntValue(bd[t])
198+ let bv = bd[o]
199+ let bw = valueOrErrorMessage(assetInfo(fromBase58String(bq)), (("Asset " + bq) + " doesn't exist")).quantity
200+ if ((bq != bo))
188201 then throw("Invalid asset passed.")
189202 else {
190- let bt = aL(bn)
191- let bu = y(bt, bp)
192- let bv = aL(bo)
193- let bw = y(bv, bq)
194- let bx = aN(bw, bu)
195- let by = B(bx, b)
196- let bz = y(bl, b)
197- let bA = y(bs, b)
198- let bB = fraction(bu, bz, bA)
199- let bC = fraction(bw, bz, bA)
200- let bD = B(bB, bp)
201- let bE = B(bC, bq)
202- let bF = if ((bj == ""))
203+ let bx = aP(br)
204+ let by = z(bx, bt)
205+ let bz = aP(bs)
206+ let bA = z(bz, bu)
207+ let bB = aR(bA, by)
208+ let bC = C(bB, b)
209+ let bD = z(bp, b)
210+ let bE = z(bw, b)
211+ let bF = fraction(by, bD, bE)
212+ let bG = fraction(bA, bD, bE)
213+ let bH = C(bF, bt)
214+ let bI = C(bG, bu)
215+ let bJ = if ((bn == ""))
203216 then nil
204- else [ScriptTransfer(Q, bD, if ((bn == "WAVES"))
217+ else [ScriptTransfer(R, bH, if ((br == "WAVES"))
205218 then unit
206- else fromBase58String(bn)), ScriptTransfer(Q, bE, if ((bo == "WAVES"))
219+ else fromBase58String(br)), ScriptTransfer(R, bI, if ((bs == "WAVES"))
207220 then unit
208- else fromBase58String(bo)), StringEntry(S(toString(Q), bj), aH(bD, bE, bl, by, height, lastBlock.timestamp)), IntegerEntry(L(), by), IntegerEntry(M(height, lastBlock.timestamp), by)]
209- $Tuple10(bD, bE, bn, bo, bt, bv, bs, bx, br, bF)
221+ else fromBase58String(bs)), StringEntry(T(toString(R), bn), aL(bH, bI, bp, bC, height, lastBlock.timestamp)), IntegerEntry(M(), bC), IntegerEntry(N(height, lastBlock.timestamp), bC)]
222+ $Tuple10(bH, bI, br, bs, bx, bz, bw, bB, bv, bJ)
210223 }
211224 }
212225
213226
214-func bG (bj,bH,bI,bJ,bK,bL,Q,bM,bN) = {
215- let aZ = aq()
216- let bm = fromBase58String(aZ[p])
217- let bO = aZ[q]
218- let bP = aZ[r]
219- let bQ = aZ[u]
220- let bR = aZ[v]
221- let bS = parseIntValue(aZ[s])
222- let bT = parseIntValue(aZ[t])
223- let br = aZ[o]
224- let bs = valueOrErrorMessage(assetInfo(bm), "Wrong lp asset.").quantity
225- let bt = if (bM)
226- then aL(bO)
227- else (aL(bO) - bI)
228- let bv = if (bM)
229- then aL(bP)
230- else (aL(bP) - bK)
231- let bU = y(bI, bS)
232- let bV = y(bK, bT)
233- let bW = aN(bV, bU)
234- let bu = y(bt, bS)
235- let bw = y(bv, bT)
236- let bX = if ((bs == 0))
227+func bK (bn,bL,bM,bN,bO,bP,R,bQ,bR) = {
228+ let bd = au()
229+ let bq = fromBase58String(bd[p])
230+ let bS = bd[q]
231+ let bT = bd[r]
232+ let bU = bd[u]
233+ let bV = bd[v]
234+ let bW = parseIntValue(bd[s])
235+ let bX = parseIntValue(bd[t])
236+ let bv = bd[o]
237+ let bw = valueOrErrorMessage(assetInfo(bq), "Wrong lp asset.").quantity
238+ let bx = if (bQ)
239+ then aP(bS)
240+ else (aP(bS) - bM)
241+ let bz = if (bQ)
242+ then aP(bT)
243+ else (aP(bT) - bO)
244+ let bY = z(bM, bW)
245+ let bZ = z(bO, bX)
246+ let ca = aR(bZ, bY)
247+ let by = z(bx, bW)
248+ let bA = z(bz, bX)
249+ let cb = if ((bw == 0))
237250 then {
238- let bx = f
239- let bY = f
240- let bd = pow((bU * bV), 0, toBigInt(5), 1, 0, DOWN)
241- $Tuple5(B(bd, b), B(bU, bS), B(bV, bT), aN((bw + bV), (bu + bU)), bY)
251+ let bB = f
252+ let cc = f
253+ let bh = pow((bY * bZ), 0, toBigInt(5), 1, 0, DOWN)
254+ $Tuple5(C(bh, b), C(bY, bW), C(bZ, bX), aR((bA + bZ), (by + bY)), cc)
242255 }
243256 else {
244- let bx = aN(bw, bu)
245- let bZ = fraction(I((bx - bW)), e, bx)
246- let bY = y(bH, b)
247- if (if ((bx != f))
248- then (bZ > bY)
257+ let bB = aR(bA, by)
258+ let cd = fraction(J((bB - ca)), e, bB)
259+ let cc = z(bL, b)
260+ if (if ((bB != f))
261+ then (cd > cc)
249262 else false)
250- then throw(((("Price slippage " + toString(bZ)) + " exceeded ") + toString(bY)))
263+ then throw(((("Price slippage " + toString(cd)) + " exceeded ") + toString(cc)))
251264 else {
252- let bA = y(bs, b)
253- let ca = fraction(bU, bx, e)
254- let cb = fraction(bV, e, bx)
255- let cc = if ((ca > bV))
256- then $Tuple2(cb, bV)
257- else $Tuple2(bU, ca)
258- let cd = cc._1
259- let ce = cc._2
260- let bd = fraction(bA, ce, bw)
261- $Tuple5(B(bd, b), B(cd, bS), B(ce, bT), bx, bY)
265+ let bE = z(bw, b)
266+ let ce = fraction(bY, bB, e)
267+ let cf = fraction(bZ, e, bB)
268+ let cg = if ((ce > bZ))
269+ then $Tuple2(cf, bZ)
270+ else $Tuple2(bY, ce)
271+ let ch = cg._1
272+ let ci = cg._2
273+ let bh = fraction(bE, ci, bA)
274+ $Tuple5(C(bh, b), C(ch, bW), C(ci, bX), bB, cc)
262275 }
263276 }
264- let cf = bX._1
265- let cg = bX._2
266- let ch = bX._3
267- let by = B(bX._4, b)
268- let ci = B(bX._5, b)
269- if ((0 >= cf))
277+ let cj = cb._1
278+ let ck = cb._2
279+ let cl = cb._3
280+ let bC = C(cb._4, b)
281+ let cm = C(cb._5, b)
282+ if ((0 >= cj))
270283 then throw("LP is less than zero.")
271284 else {
272- let cj = if (!(bN))
285+ let cn = if (!(bR))
273286 then 0
274- else cf
275- let ck = (bI - cg)
276- let cl = (bK - ch)
277- let cm = [IntegerEntry(L(), by), IntegerEntry(M(height, lastBlock.timestamp), by), StringEntry(P(Q, bj), aw(cg, ch, cj, by, bH, ci, height, lastBlock.timestamp, ck, cl))]
278- $Tuple13(cf, cj, by, bt, bv, bs, bm, br, cm, ck, cl, bJ, bL)
287+ else cj
288+ let co = (bM - ck)
289+ let cp = (bO - cl)
290+ let cq = [IntegerEntry(M(), bC), IntegerEntry(N(height, lastBlock.timestamp), bC), StringEntry(Q(R, bn), aA(ck, cl, cn, bC, bL, cm, height, lastBlock.timestamp, co, cp))]
291+ $Tuple13(cj, cn, bC, bx, bz, bw, bq, bv, cq, co, cp, bN, bP)
279292 }
280293 }
281294
282295
283-func cn (co) = {
284- let aZ = aq()
285- let cp = aZ[q]
286- let cq = aZ[r]
287- let br = parseIntValue(aZ[o])
288- let cr = parseIntValue(aZ[s])
289- let cs = parseIntValue(aZ[t])
290- let ct = aL(cp)
291- let cu = aL(cq)
292- let bx = if ((co.orderType == Buy))
293- then aQ(cr, cs, (ct + co.amount), cu)
294- else aQ(cr, cs, (ct - co.amount), cu)
295- let by = B(bx, b)
296- if (if (if (ao())
296+func cr (cs) = {
297+ let bd = au()
298+ let ct = bd[q]
299+ let cu = bd[r]
300+ let bv = parseIntValue(bd[o])
301+ let cv = parseIntValue(bd[s])
302+ let cw = parseIntValue(bd[t])
303+ let cx = aP(ct)
304+ let cy = aP(cu)
305+ let bB = if ((cs.orderType == Buy))
306+ then aU(cv, cw, (cx + cs.amount), cy)
307+ else aU(cv, cw, (cx - cs.amount), cy)
308+ let bC = C(bB, b)
309+ if (if (if (as())
297310 then true
298- else (br == l))
311+ else (bv == l))
299312 then true
300- else (br == m))
313+ else (bv == m))
301314 then throw("Exchange operations disabled")
302315 else {
303- let cv = co.assetPair.amountAsset
304- let cw = if ((cv == unit))
316+ let cz = cs.assetPair.amountAsset
317+ let cA = if ((cz == unit))
305318 then "WAVES"
306- else toBase58String(value(cv))
307- let cx = co.assetPair.priceAsset
308- let cy = if ((cx == unit))
319+ else toBase58String(value(cz))
320+ let cB = cs.assetPair.priceAsset
321+ let cC = if ((cB == unit))
309322 then "WAVES"
310- else toBase58String(value(cx))
311- if (if ((cw != cp))
323+ else toBase58String(value(cB))
324+ if (if ((cA != ct))
312325 then true
313- else (cy != cq))
326+ else (cC != cu))
314327 then throw("Wrong order assets.")
315328 else {
316- let cz = co.price
317- let bT = fraction(b, cs, cr)
318- let cA = E(cz, b, bT)
319- let cB = if ((co.orderType == Buy))
320- then (by >= cA)
321- else (cA >= by)
329+ let cD = cs.price
330+ let bX = fraction(b, cw, cv)
331+ let cE = F(cD, b, bX)
332+ let cF = if ((cs.orderType == Buy))
333+ then (bC >= cE)
334+ else (cE >= bC)
322335 true
323336 }
324337 }
325338 }
326339
327340
328-func cC (cD) = if ((size(cD.payments) != 1))
341+func cG (cH) = if ((size(cH.payments) != 1))
329342 then throw("exactly 1 payment is expected")
330343 else {
331- let cE = value(cD.payments[0])
332- let bk = value(cE.assetId)
333- let cF = cE.amount
334- let bX = bi(toBase58String(cD.transactionId), toBase58String(bk), cF, cD.caller)
335- let bD = bX._1
336- let bE = bX._2
337- let br = parseIntValue(bX._9)
338- let bF = bX._10
339- if (if (ao())
344+ let cI = value(cH.payments[0])
345+ let bo = value(cI.assetId)
346+ let cJ = cI.amount
347+ let cb = bm(toBase58String(cH.transactionId), toBase58String(bo), cJ, cH.caller)
348+ let bH = cb._1
349+ let bI = cb._2
350+ let bv = parseIntValue(cb._9)
351+ let bJ = cb._10
352+ if (if (as())
340353 then true
341- else (br == m))
342- then throw(("Get operation is blocked by admin. Status = " + toString(br)))
343- else $Tuple5(bD, bE, cF, bk, bF)
354+ else (bv == m))
355+ then throw(("Get operation is blocked by admin. Status = " + toString(bv)))
356+ else $Tuple5(bH, bI, cJ, bo, bJ)
344357 }
345358
346359
347-func cG (cH,R,cI,cJ,bH,bN) = {
348- let cK = bG(R, bH, value(cI).amount, value(cI).assetId, value(cJ).amount, value(cJ).assetId, cH, false, bN)
349- let cL = parseIntValue(cK._8)
350- if (if (if (ao())
360+func cK (cL,S,cM,cN,bL,bR) = {
361+ let cO = bK(S, bL, value(cM).amount, value(cM).assetId, value(cN).amount, value(cN).assetId, cL, false, bR)
362+ let cP = parseIntValue(cO._8)
363+ if (if (if (as())
351364 then true
352- else (cL == k))
365+ else (cP == k))
353366 then true
354- else (cL == m))
355- then throw(("Put operation is blocked by admin. Status = " + toString(cL)))
356- else cK
367+ else (cP == m))
368+ then throw(("Put operation is blocked by admin. Status = " + toString(cP)))
369+ else cO
357370 }
358371
359372
360-func cM (cN,cO,cP) = {
361- let cQ = toBigInt(cP)
362- let cR = toBigInt(4)
363- let cS = toBigInt(2)
364- let cT = toBigInt(3)
365- let cU = (cN + cO)
366- let cV = (cN * cO)
367- let cW = ((cR * cQ) - g)
368- let cX = pow((cQ * cU), 0, cS, 0, 0, DOWN)
369- let cY = (cV * pow((cW / cT), 0, cT, 0, 0, DOWN))
370- let cZ = ((cQ * cV) * cU)
371- let da = (cV * pow((cY + cX), 0, toBigInt(5), 1, 0, DOWN))
372- let db = (cS * pow((cZ + da), 0, toBigInt(333333), 6, 0, DOWN))
373- let dc = (cW / (cT * db))
374- (((toBigInt(-4) * cV) * dc) + db)
375- }
373+func cQ (cR,cS,cT) = 1
376374
377375
378-@Callable(cD)
379-func constructor (an,dd) = if ((cD.caller != this))
376+@Callable(cH)
377+func constructor (ar,cU) = if ((cH.caller != this))
380378 then throw("permissions denied")
381- else [StringEntry(J(), an), StringEntry(K(), dd)]
379+ else [StringEntry(K(), ar), StringEntry(L(), cU)]
382380
383381
384382
385-@Callable(cD)
386-func put (de,df) = {
387- let dg = av()
388- let dh = valueOrErrorMessage(addressFromString(dg[w]), "Incorrect staking address.")
389- let di = valueOrErrorMessage(addressFromString(dg[x]), "Incorrect slippage address.")
390- if ((0 > de))
383+@Callable(cH)
384+func put (cV,cW) = {
385+ let cX = az()
386+ let cY = valueOrErrorMessage(addressFromString(cX[w]), "Incorrect staking address.")
387+ let cZ = valueOrErrorMessage(addressFromString(cX[x]), "Incorrect slippage address.")
388+ if ((0 > cV))
391389 then throw("Invalid slippage.")
392- else if ((size(cD.payments) != 2))
390+ else if ((size(cH.payments) != 2))
393391 then throw("2 payments are expected")
394392 else {
395- let cK = cG(toString(cD.caller), toBase58String(cD.transactionId), AttachedPayment(value(cD.payments[0]).assetId, value(cD.payments[0]).amount), cD.payments[1], de, true)
396- let cj = cK._2
397- let dj = cK._7
398- let bF = cK._9
399- let ck = cK._10
400- let cl = cK._11
401- let bn = cK._12
402- let bo = cK._13
403- let dk = invoke(an, "emit", [cj], nil)
404- if ((dk == dk))
393+ let cO = cK(toString(cH.caller), toBase58String(cH.transactionId), AttachedPayment(value(cH.payments[0]).assetId, value(cH.payments[0]).amount), cH.payments[1], cV, true)
394+ let cn = cO._2
395+ let da = cO._7
396+ let bJ = cO._9
397+ let co = cO._10
398+ let cp = cO._11
399+ let br = cO._12
400+ let bs = cO._13
401+ let db = invoke(ar, "emit", [cn], nil)
402+ if ((db == db))
405403 then {
406- let dl = if ((ck > 0))
407- then invoke(di, "put", nil, [AttachedPayment(bn, ck)])
404+ let dc = if ((co > 0))
405+ then invoke(cZ, "put", nil, [AttachedPayment(br, co)])
408406 else nil
409- if ((dl == dl))
407+ if ((dc == dc))
410408 then {
411- let dm = if ((cl > 0))
412- then invoke(di, "put", nil, [AttachedPayment(bo, cl)])
409+ let dd = if ((cp > 0))
410+ then invoke(cZ, "put", nil, [AttachedPayment(bs, cp)])
413411 else nil
414- if ((dm == dm))
412+ if ((dd == dd))
415413 then {
416- let dn = if (df)
414+ let de = if (cW)
417415 then {
418- let do = invoke(dh, "stake", nil, [AttachedPayment(dj, cj)])
419- if ((do == do))
416+ let df = invoke(cY, "stake", nil, [AttachedPayment(da, cn)])
417+ if ((df == df))
420418 then nil
421419 else throw("Strict value is not equal to itself.")
422420 }
423- else [ScriptTransfer(cD.caller, cj, dj)]
424- (bF ++ dn)
421+ else [ScriptTransfer(cH.caller, cn, da)]
422+ (bJ ++ de)
425423 }
426424 else throw("Strict value is not equal to itself.")
427425 }
433431
434432
435433
436-@Callable(cD)
437-func putOneTkn (dp,dq,df) = {
438- let aZ = av()
439- let dh = valueOrErrorMessage(addressFromString(aZ[w]), "Wrong staking address")
440- let di = valueOrErrorMessage(addressFromString(aZ[x]), "Wrong slippage address")
441- let dr = aq()
442- let bn = dr[q]
443- let bo = dr[r]
444- let bp = parseIntValue(dr[s])
445- let bq = parseIntValue(dr[t])
446- if ((size(cD.payments) != 1))
434+@Callable(cH)
435+func putOneTkn (dg,dh,cW) = {
436+ let bd = az()
437+ let cY = valueOrErrorMessage(addressFromString(bd[w]), "Wrong staking address")
438+ let cZ = valueOrErrorMessage(addressFromString(bd[x]), "Wrong slippage address")
439+ let di = valueOrErrorMessage(addressFromString(bd[y]), "Wrong slippage address")
440+ let dj = au()
441+ let br = dj[q]
442+ let bs = dj[r]
443+ let bt = parseIntValue(dj[s])
444+ let bu = parseIntValue(dj[t])
445+ if ((size(cH.payments) != 1))
447446 then throw("exactly 1 payment is expected")
448447 else {
449- let cE = value(cD.payments[0])
450- let bk = toBase58String(value(cE.assetId))
451- let cF = cE.amount
452- let ds = y(dp, bp)
453- let dt = y(dq, bq)
454- let bt = aL(bn)
455- let bu = y(bt, bp)
456- let bv = aL(bo)
457- let bw = y(bv, bq)
458- let du = cM(toBigInt(bt), toBigInt(bv), 5000000000)
459- let dv = if ((bk == bn))
448+ let cI = value(cH.payments[0])
449+ let bo = toBase58String(value(cI.assetId))
450+ let cJ = cI.amount
451+ let dk = z(dg, bt)
452+ let dl = z(dh, bu)
453+ let bx = aP(br)
454+ let by = z(bx, bt)
455+ let bz = aP(bs)
456+ let bA = z(bz, bu)
457+ let dm = invoke(di, "calcD", [toString(bx), toString(bz), "50", "100000000", "1"], nil)
458+ let dn = parseBigIntValue(ak(dm))
459+ let do = if ((bo == br))
460460 then {
461- let dw = y(cF, bp)
462- let dx = dt
463- let dy = (dw - ds)
464- let dz = cM((toBigInt(bt) + toBigInt(B(dy, bp))), (toBigInt(bv) - toBigInt(B(dx, bq))), 5000000000)
465- true
461+ let dp = z(cJ, bt)
462+ let dq = dl
463+ let dr = (dp - dk)
464+ let ds = invoke(di, "calcD", [toString((toBigInt(bx) + toBigInt(C(dr, bt)))), toString((toBigInt(bz) - toBigInt(C(dq, bu)))), "50", "100000000", "1"], nil)
465+ let dt = parseBigIntValue(ak(ds))
466+ let du = fraction((dt - dn), c, dn)
467+ if ((du > toBigInt(1000)))
468+ then throw("Wrong arguments passed. D decreased.")
469+ else true
466470 }
467471 else {
468- let dA = y(cF, bq)
469- let dx = (dt - dA)
470- let dy = ds
471- let dz = cM((toBigInt(bt) - toBigInt(B(dy, bp))), (toBigInt(bv) + toBigInt(B(dx, bq))), 50)
472- true
472+ let dv = z(cJ, bu)
473+ let dq = (dl - dv)
474+ let dr = dk
475+ let ds = invoke(di, "calcD", [toString((toBigInt(bx) - toBigInt(C(dr, bt)))), toString((toBigInt(bz) + toBigInt(C(dq, bu)))), "50", "100000000", "1"], nil)
476+ let dt = parseBigIntValue(ak(ds))
477+ let du = fraction((dt - dn), c, dn)
478+ if ((du > toBigInt(1000)))
479+ then throw("Wrong arguments passed. D decreased.")
480+ else true
473481 }
474- if (!(dv))
482+ if (!(do))
475483 then throw("Errors.")
476484 else {
477- let cK = cG(toString(cD.caller), toBase58String(cD.transactionId), AttachedPayment(fromBase58String(bn), dp), AttachedPayment(fromBase58String(bo), dq), 50000000000, true)
478- let cj = cK._2
479- let dj = cK._7
480- let bF = cK._9
481- let ck = cK._10
482- let cl = cK._11
483- let dk = invoke(an, "emit", [cj], nil)
484- if ((dk == dk))
485+ let cO = cK(toString(cH.caller), toBase58String(cH.transactionId), AttachedPayment(fromBase58String(br), dg), AttachedPayment(fromBase58String(bs), dh), 50000000000, true)
486+ let cn = cO._2
487+ let da = cO._7
488+ let bJ = cO._9
489+ let co = cO._10
490+ let cp = cO._11
491+ let db = invoke(ar, "emit", [cn], nil)
492+ if ((db == db))
485493 then {
486- let dl = if ((ck > 0))
487- then invoke(di, "put", nil, [AttachedPayment(fromBase58String(bn), ck)])
494+ let dc = if ((co > 0))
495+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(br), co)])
488496 else nil
489- if ((dl == dl))
497+ if ((dc == dc))
490498 then {
491- let dm = if ((cl > 0))
492- then invoke(di, "put", nil, [AttachedPayment(fromBase58String(bo), cl)])
499+ let dd = if ((cp > 0))
500+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(bs), cp)])
493501 else nil
494- if ((dm == dm))
502+ if ((dd == dd))
495503 then {
496- let dn = if (df)
504+ let de = if (cW)
497505 then {
498- let do = invoke(dh, "stake", nil, [AttachedPayment(dj, cj)])
499- if ((do == do))
506+ let df = invoke(cY, "stake", nil, [AttachedPayment(da, cn)])
507+ if ((df == df))
500508 then nil
501509 else throw("Strict value is not equal to itself.")
502510 }
503- else [ScriptTransfer(cD.caller, cj, dj)]
504- (bF ++ dn)
511+ else [ScriptTransfer(cH.caller, cn, da)]
512+ (bJ ++ de)
505513 }
506514 else throw("Strict value is not equal to itself.")
507515 }
514522
515523
516524
517-@Callable(cD)
518-func putForFree (dB) = if ((0 > dB))
525+@Callable(cH)
526+func putForFree (dw) = if ((0 > dw))
519527 then throw("Invalid value passed")
520- else if ((size(cD.payments) != 2))
528+ else if ((size(cH.payments) != 2))
521529 then throw("exactly 2 payments are expected")
522530 else {
523- let cK = cG(toString(cD.caller), toBase58String(cD.transactionId), AttachedPayment(value(cD.payments[0]).assetId, value(cD.payments[0]).amount), cD.payments[1], dB, false)
524- cK._9
531+ let cO = cK(toString(cH.caller), toBase58String(cH.transactionId), AttachedPayment(value(cH.payments[0]).assetId, value(cH.payments[0]).amount), cH.payments[1], dw, false)
532+ cO._9
525533 }
526534
527535
528536
529-@Callable(cD)
537+@Callable(cH)
530538 func get () = {
531- let bX = cC(cD)
532- let dC = bX._1
533- let bE = bX._2
534- let cF = bX._3
535- let bk = bX._4
536- let bF = bX._5
537- let dD = invoke(an, "burn", [cF], [AttachedPayment(bk, cF)])
538- if ((dD == dD))
539- then bF
539+ let cb = cG(cH)
540+ let dx = cb._1
541+ let bI = cb._2
542+ let cJ = cb._3
543+ let bo = cb._4
544+ let bJ = cb._5
545+ let dy = invoke(ar, "burn", [cJ], [AttachedPayment(bo, cJ)])
546+ if ((dy == dy))
547+ then bJ
540548 else throw("Strict value is not equal to itself.")
541549 }
542550
543551
544552
545-@Callable(cD)
546-func getOneTkn (dE,dF,dG,dH) = if ((size(cD.payments) != 1))
553+@Callable(cH)
554+func getOneTkn (dz,dA,dB,dC) = if ((size(cH.payments) != 1))
547555 then throw("exactly 1 payment is expected")
548556 else {
549- let aZ = aq()
550- let bm = aZ[p]
551- let bn = aZ[q]
552- let bo = aZ[r]
553- let bp = parseIntValue(aZ[s])
554- let bq = parseIntValue(aZ[t])
555- let br = aZ[o]
556- if (if ((dH != bn))
557- then (dH != bo)
557+ let bd = au()
558+ let bq = bd[p]
559+ let br = bd[q]
560+ let bs = bd[r]
561+ let bt = parseIntValue(bd[s])
562+ let bu = parseIntValue(bd[t])
563+ let bv = bd[o]
564+ if (if ((dC != br))
565+ then (dC != bs)
558566 else false)
559- then throw(("Incorrect out asset id passed: " + dH))
567+ then throw(("Incorrect out asset id passed: " + dC))
560568 else {
561- let dI = if ((dH == bn))
562- then bn
563- else bo
564- let dJ = if ((dH == bn))
565- then dG
569+ let dD = if ((dC == br))
570+ then br
571+ else bs
572+ let dE = if ((dC == br))
573+ then dB
566574 else 0
567- let dK = if ((dH == bo))
568- then dG
575+ let dF = if ((dC == bs))
576+ then dB
569577 else 0
570- let cE = value(cD.payments[0])
571- let Q = cD.caller
572- let bj = toBase58String(cD.transactionId)
573- let bk = value(cE.assetId)
574- let cF = cE.amount
575- if ((bm != toBase58String(bk)))
578+ let cI = value(cH.payments[0])
579+ let R = cH.caller
580+ let bn = toBase58String(cH.transactionId)
581+ let bo = value(cI.assetId)
582+ let cJ = cI.amount
583+ if ((bq != toBase58String(bo)))
576584 then throw("Invalid asset passed.")
577585 else {
578- let ds = y(dE, bp)
579- let dt = y(dF, bq)
580- let dL = aN(dt, ds)
581- let dM = bi(toBase58String(cD.transactionId), toBase58String(bk), cF, cD.caller)
582- let bD = dM._1
583- let bE = dM._2
584- let dN = if ((dH == bn))
586+ let dk = z(dz, bt)
587+ let dl = z(dA, bu)
588+ let dG = aR(dl, dk)
589+ let dH = bm(toBase58String(cH.transactionId), toBase58String(bo), cJ, cH.caller)
590+ let bH = dH._1
591+ let bI = dH._2
592+ let dI = if ((dC == br))
585593 then {
586- let dO = B(fraction(y(bE, bq), e, dL), bp)
587- (dO + bD)
594+ let dJ = C(fraction(z(bI, bu), e, dG), bt)
595+ (dJ + bH)
588596 }
589597 else {
590- let dP = (dK - bE)
591- let dQ = fraction(y(dP, bp), e, dL)
592- let dR = B(fraction(y(bD, bp), dL, e), bq)
593- let dS = fraction((dQ - ds), c, ds)
594- (dR + bE)
598+ let dK = (dF - bI)
599+ let dL = fraction(z(dK, bt), e, dG)
600+ let dM = C(fraction(z(bH, bt), dG, e), bu)
601+ let dN = fraction((dL - dk), c, dk)
602+ (dM + bI)
595603 }
596- let bt = aL(bn)
597- let bu = y(bt, bp)
598- let bv = aL(bo)
599- let bw = y(bv, bq)
600- let bx = aN(bw, bu)
601- let by = B(bx, b)
602- let bF = [ScriptTransfer(Q, dN, if ((dI == "WAVES"))
604+ let bx = aP(br)
605+ let by = z(bx, bt)
606+ let bz = aP(bs)
607+ let bA = z(bz, bu)
608+ let bB = aR(bA, by)
609+ let bC = C(bB, b)
610+ let bJ = [ScriptTransfer(R, dI, if ((dD == "WAVES"))
603611 then unit
604- else fromBase58String(dI)), StringEntry(S(toString(Q), bj), aH(dJ, dK, cF, by, height, lastBlock.timestamp)), IntegerEntry(L(), by), IntegerEntry(M(height, lastBlock.timestamp), by)]
605- let dT = invoke(an, "burn", [cF], [AttachedPayment(bk, cF)])
606- if ((dT == dT))
607- then bF
612+ else fromBase58String(dD)), StringEntry(T(toString(R), bn), aL(dE, dF, cJ, bC, height, lastBlock.timestamp)), IntegerEntry(M(), bC), IntegerEntry(N(height, lastBlock.timestamp), bC)]
613+ let dO = invoke(ar, "burn", [cJ], [AttachedPayment(bo, cJ)])
614+ if ((dO == dO))
615+ then bJ
608616 else throw("Strict value is not equal to itself.")
609617 }
610618 }
612620
613621
614622
615-@Callable(cD)
616-func getNoLess (dU,dV) = {
617- let bX = cC(cD)
618- let bD = bX._1
619- let bE = bX._2
620- let cF = bX._3
621- let bk = bX._4
622- let bF = bX._5
623- if ((dU > bD))
624- then throw(((("noLessThenAmtAsset failed: " + toString(bD)) + " < ") + toString(dU)))
625- else if ((dV > bE))
626- then throw(((("noLessThenPriceAsset failed: " + toString(bE)) + " < ") + toString(dV)))
623+@Callable(cH)
624+func getNoLess (dP,dQ) = {
625+ let cb = cG(cH)
626+ let bH = cb._1
627+ let bI = cb._2
628+ let cJ = cb._3
629+ let bo = cb._4
630+ let bJ = cb._5
631+ if ((dP > bH))
632+ then throw(((("noLessThenAmtAsset failed: " + toString(bH)) + " < ") + toString(dP)))
633+ else if ((dQ > bI))
634+ then throw(((("noLessThenPriceAsset failed: " + toString(bI)) + " < ") + toString(dQ)))
627635 else {
628- let dD = invoke(an, "burn", [cF], [AttachedPayment(bk, cF)])
629- if ((dD == dD))
630- then bF
636+ let dy = invoke(ar, "burn", [cJ], [AttachedPayment(bo, cJ)])
637+ if ((dy == dy))
638+ then bJ
631639 else throw("Strict value is not equal to itself.")
632640 }
633641 }
634642
635643
636644
637-@Callable(cD)
638-func unstakeAndGet (dW) = {
639- let dX = if ((size(cD.payments) != 0))
645+@Callable(cH)
646+func unstakeAndGet (dR) = {
647+ let dS = if ((size(cH.payments) != 0))
640648 then throw("No payments are expected")
641649 else true
642- if ((dX == dX))
650+ if ((dS == dS))
643651 then {
644- let aZ = aq()
645- let dY = av()
646- let dj = fromBase58String(aZ[p])
647- let dZ = valueOrErrorMessage(addressFromString(dY[w]), "Error. Incorrect staking address.")
648- let ea = invoke(dZ, "unstake", [toBase58String(dj), dW], nil)
649- if ((ea == ea))
652+ let bd = au()
653+ let dT = az()
654+ let da = fromBase58String(bd[p])
655+ let dU = valueOrErrorMessage(addressFromString(dT[w]), "Error. Incorrect staking address.")
656+ let dV = invoke(dU, "unstake", [toBase58String(da), dR], nil)
657+ if ((dV == dV))
650658 then {
651- let bX = bi(toBase58String(cD.transactionId), toBase58String(dj), dW, cD.caller)
652- let br = parseIntValue(bX._9)
653- let bF = bX._10
654- let eb = if (if (ao())
659+ let cb = bm(toBase58String(cH.transactionId), toBase58String(da), dR, cH.caller)
660+ let bv = parseIntValue(cb._9)
661+ let bJ = cb._10
662+ let dW = if (if (as())
655663 then true
656- else (br == m))
657- then throw(("Get operation is blocked by admin. Status = " + toString(br)))
664+ else (bv == m))
665+ then throw(("Get operation is blocked by admin. Status = " + toString(bv)))
658666 else true
659- if ((eb == eb))
667+ if ((dW == dW))
660668 then {
661- let dD = invoke(an, "burn", [dW], [AttachedPayment(dj, dW)])
662- if ((dD == dD))
663- then bF
669+ let dy = invoke(ar, "burn", [dR], [AttachedPayment(da, dR)])
670+ if ((dy == dy))
671+ then bJ
664672 else throw("Strict value is not equal to itself.")
665673 }
666674 else throw("Strict value is not equal to itself.")
672680
673681
674682
675-@Callable(cD)
676-func activate (ec,ed) = if ((toString(cD.caller) != toString(an)))
683+@Callable(cH)
684+func activate (dX,dY) = if ((toString(cH.caller) != toString(ar)))
677685 then throw("permissions denied")
678- else $Tuple2([StringEntry(T(), ec), StringEntry(U(), ed)], "success")
686+ else $Tuple2([StringEntry(U(), dX), StringEntry(V(), dY)], "success")
679687
680688
681689
682-@Callable(cD)
683-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aq())
690+@Callable(cH)
691+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, au())
684692
685693
686694
687-@Callable(cD)
688-func getAccBalanceWrapperREADONLY (aM) = $Tuple2(nil, aL(aM))
695+@Callable(cH)
696+func getAccBalanceWrapperREADONLY (aQ) = $Tuple2(nil, aP(aQ))
689697
690698
691699
692-@Callable(cD)
693-func calcPricesWrapperREADONLY (aT,aU,aY) = {
694- let bh = aX(aT, aU, aY)
695- $Tuple2(nil, [toString(bh[0]), toString(bh[1]), toString(bh[2])])
700+@Callable(cH)
701+func calcPricesWrapperREADONLY (aX,aY,bc) = {
702+ let bl = bb(aX, aY, bc)
703+ $Tuple2(nil, [toString(bl[0]), toString(bl[1]), toString(bl[2])])
696704 }
697705
698706
699707
700-@Callable(cD)
701-func fromX18WrapperREADONLY (C,D) = $Tuple2(nil, B(parseBigIntValue(C), D))
708+@Callable(cH)
709+func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
702710
703711
704712
705-@Callable(cD)
706-func toX18WrapperREADONLY (z,A) = $Tuple2(nil, toString(y(z, A)))
713+@Callable(cH)
714+func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
707715
708716
709717
710-@Callable(cD)
711-func calcPriceBigIntWrapperREADONLY (aO,aP) = $Tuple2(nil, toString(aN(parseBigIntValue(aO), parseBigIntValue(aP))))
718+@Callable(cH)
719+func calcPriceBigIntWrapperREADONLY (aS,aT) = $Tuple2(nil, toString(aR(parseBigIntValue(aS), parseBigIntValue(aT))))
712720
713721
714722
715-@Callable(cD)
716-func estimatePutOperationWrapperREADONLY (bj,bH,bI,bJ,bK,bL,Q,bM,bN) = $Tuple2(nil, bG(bj, bH, bI, bJ, bK, bL, Q, bM, bN))
723+@Callable(cH)
724+func estimatePutOperationWrapperREADONLY (bn,bL,bM,bN,bO,bP,R,bQ,bR) = $Tuple2(nil, bK(bn, bL, bM, bN, bO, bP, R, bQ, bR))
717725
718726
719727
720-@Callable(cD)
721-func estimateGetOperationWrapperREADONLY (bj,bk,bl,Q) = {
722- let bX = bi(bj, bk, bl, addressFromStringValue(Q))
723- $Tuple2(nil, $Tuple10(bX._1, bX._2, bX._3, bX._4, bX._5, bX._6, bX._7, toString(bX._8), bX._9, bX._10))
728+@Callable(cH)
729+func estimateGetOperationWrapperREADONLY (bn,bo,bp,R) = {
730+ let cb = bm(bn, bo, bp, addressFromStringValue(R))
731+ $Tuple2(nil, $Tuple10(cb._1, cb._2, cb._3, cb._4, cb._5, cb._6, cb._7, toString(cb._8), cb._9, cb._10))
724732 }
725733
726734
727-@Verifier(ee)
728-func ef () = {
729- let eg = ee
730- if ($isInstanceOf(eg, "Order"))
735+@Verifier(dZ)
736+func ea () = {
737+ let al = dZ
738+ if ($isInstanceOf(al, "Order"))
731739 then {
732- let co = eg
733- let eh = ap()
734- let ag = cn(co)
735- let ah = sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
736- let ai = sigVerify(co.bodyBytes, co.proofs[1], eh)
737- if (if (if (ag)
738- then ah
739- else false)
740+ let cs = al
741+ let eb = at()
742+ let ah = cr(cs)
743+ let ai = sigVerify(cs.bodyBytes, cs.proofs[0], cs.senderPublicKey)
744+ let aj = sigVerify(cs.bodyBytes, cs.proofs[1], eb)
745+ if (if (if (ah)
740746 then ai
741747 else false)
748+ then aj
749+ else false)
742750 then true
743- else af(ag, ah, ai)
751+ else ag(ah, ai, aj)
744752 }
745753 else {
746- let ei = valueOrElse(getString(this, K()), i)
747- if ((ei == i))
748- then sigVerify(ee.bodyBytes, ee.proofs[0], ee.senderPublicKey)
749- else sigVerify(ee.bodyBytes, ee.proofs[0], fromBase58String(ei))
754+ let ec = valueOrElse(getString(this, L()), i)
755+ if ((ec == i))
756+ then sigVerify(dZ.bodyBytes, dZ.proofs[0], dZ.senderPublicKey)
757+ else sigVerify(dZ.bodyBytes, dZ.proofs[0], fromBase58String(ec))
750758 }
751759 }
752760
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000)
1111
1212 let e = toBigInt(1000000000000000000)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = "__"
1919
2020 let i = ""
2121
2222 let j = 1
2323
2424 let k = 2
2525
2626 let l = 3
2727
2828 let m = 4
2929
3030 let n = 1
3131
3232 let o = 2
3333
3434 let p = 3
3535
3636 let q = 4
3737
3838 let r = 5
3939
4040 let s = 6
4141
4242 let t = 7
4343
4444 let u = 8
4545
4646 let v = 9
4747
4848 let w = 1
4949
5050 let x = 7
5151
52-func y (z,A) = fraction(toBigInt(z), e, toBigInt(A))
52+let y = 10
53+
54+func z (A,B) = fraction(toBigInt(A), e, toBigInt(B))
5355
5456
55-func B (C,D) = toInt(fraction(C, toBigInt(D), e))
57+func C (D,E) = toInt(fraction(D, toBigInt(E), e))
5658
5759
58-func E (F,G,H) = fraction(F, G, H)
60+func F (G,H,I) = fraction(G, H, I)
5961
6062
61-func I (C) = if ((f > C))
62- then -(C)
63- else C
63+func J (D) = if ((f > D))
64+ then -(D)
65+ else D
6466
6567
66-func J () = "%s__factoryContract"
68+func K () = "%s__factoryContract"
6769
6870
69-func K () = "%s__managerPublicKey"
71+func L () = "%s__managerPublicKey"
7072
7173
72-func L () = "%s%s__price__last"
74+func M () = "%s%s__price__last"
7375
7476
75-func M (N,O) = makeString(["%s%s%d%d__price__history", toString(N), toString(O)], h)
77+func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
7678
7779
78-func P (Q,R) = ((("%s%s%s__P__" + Q) + "__") + R)
80+func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
7981
8082
81-func S (Q,R) = ((("%s%s%s__G__" + Q) + "__") + R)
83+func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
8284
8385
84-func T () = "%s__amountAsset"
86+func U () = "%s__amountAsset"
8587
8688
87-func U () = "%s__priceAsset"
89+func V () = "%s__priceAsset"
8890
8991
90-func V () = "%s__factoryConfig"
92+func W () = "%s__factoryConfig"
9193
9294
93-func W () = "%s%s__matcher__publicKey"
95+func X () = "%s%s__matcher__publicKey"
9496
9597
96-func X (Y,Z) = (((("%d%d%s__" + Y) + "__") + Z) + "__config")
98+func Y (Z,aa) = (((("%d%d%s__" + Z) + "__") + aa) + "__config")
9799
98100
99-func aa (ab) = ("%s%s%s__mappings__baseAsset2internalId__" + ab)
101+func ab (ac) = ("%s%s%s__mappings__baseAsset2internalId__" + ac)
100102
101103
102-func ac () = "%s__shutdown"
104+func ad () = "%s__shutdown"
103105
104106
105-func ad (ae) = ("%s%s__poolWeight__" + ae)
107+func ae (af) = ("%s%s__poolWeight__" + af)
106108
107109
108-func af (ag,ah,ai) = throw(((((("order validation failed: orderValid=" + toString(ag)) + " senderValid=") + toString(ah)) + " matcherValid=") + toString(ai)))
110+func ag (ah,ai,aj) = throw(((((("order validation failed: orderValid=" + toString(ah)) + " senderValid=") + toString(ai)) + " matcherValid=") + toString(aj)))
109111
110112
111-func aj (ak,al) = valueOrErrorMessage(getString(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
112-
113-
114-func am (ak,al) = valueOrErrorMessage(getInteger(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
115-
116-
117-let an = addressFromStringValue(aj(this, J()))
118-
119-func ao () = valueOrElse(getBoolean(an, ac()), false)
120-
121-
122-func ap () = fromBase58String(aj(an, W()))
123-
124-
125-func aq () = {
126- let ar = aj(this, T())
127- let as = aj(this, U())
128- let at = am(an, aa(as))
129- let au = am(an, aa(ar))
130- split(aj(an, X(toString(au), toString(at))), h)
113+func ak (D) = {
114+ let al = D
115+ if ($isInstanceOf(al, "String"))
116+ then {
117+ let am = al
118+ am
119+ }
120+ else throw("fail to cast into Int")
131121 }
132122
133123
134-func av () = split(aj(an, V()), h)
124+func an (ao,ap) = valueOrErrorMessage(getString(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
135125
136126
137-func aw (ax,ay,az,aA,aB,aC,aD,aE,aF,aG) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(ax), toString(ay), toString(az), toString(aA), toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG)], h)
127+func aq (ao,ap) = valueOrErrorMessage(getInteger(ao, ap), makeString(["mandatory ", toString(ao), ".", ap, " is not defined"], ""))
138128
139129
140-func aH (aI,aJ,aK,aA,aD,aE) = makeString(["%d%d%d%d%d%d", toString(aI), toString(aJ), toString(aK), toString(aA), toString(aD), toString(aE)], h)
130+let ar = addressFromStringValue(an(this, K()))
131+
132+func as () = valueOrElse(getBoolean(ar, ad()), false)
141133
142134
143-func aL (aM) = if ((aM == "WAVES"))
144- then wavesBalance(this).available
145- else assetBalance(this, fromBase58String(aM))
135+func at () = fromBase58String(an(ar, X()))
146136
147137
148-func aN (aO,aP) = fraction(aO, e, aP)
149-
150-
151-func aQ (aR,aS,aT,aU) = {
152- let aV = y(aT, aR)
153- let aW = y(aU, aS)
154- aN(aW, aV)
138+func au () = {
139+ let av = an(this, U())
140+ let aw = an(this, V())
141+ let ax = aq(ar, ab(aw))
142+ let ay = aq(ar, ab(av))
143+ split(an(ar, Y(toString(ay), toString(ax))), h)
155144 }
156145
157146
158-func aX (aT,aU,aY) = {
159- let aZ = aq()
160- let ba = parseIntValue(aZ[s])
161- let bb = parseIntValue(aZ[t])
162- let bc = aQ(ba, bb, aT, aU)
163- let aP = y(aT, ba)
164- let aO = y(aU, bb)
165- let bd = y(aY, b)
166- let be = aN(aP, bd)
167- let bf = aN(aO, bd)
168-[bc, be, bf]
147+func az () = split(an(ar, W()), h)
148+
149+
150+func aA (aB,aC,aD,aE,aF,aG,aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK)], h)
151+
152+
153+func aL (aM,aN,aO,aE,aH,aI) = makeString(["%d%d%d%d%d%d", toString(aM), toString(aN), toString(aO), toString(aE), toString(aH), toString(aI)], h)
154+
155+
156+func aP (aQ) = if ((aQ == "WAVES"))
157+ then wavesBalance(this).available
158+ else assetBalance(this, fromBase58String(aQ))
159+
160+
161+func aR (aS,aT) = fraction(aS, e, aT)
162+
163+
164+func aU (aV,aW,aX,aY) = {
165+ let aZ = z(aX, aV)
166+ let ba = z(aY, aW)
167+ aR(ba, aZ)
169168 }
170169
171170
172-func bg (aT,aU,aY) = {
173- let bh = aX(aT, aU, aY)
174-[B(bh[0], b), B(bh[1], b), B(bh[2], b)]
171+func bb (aX,aY,bc) = {
172+ let bd = au()
173+ let be = parseIntValue(bd[s])
174+ let bf = parseIntValue(bd[t])
175+ let bg = aU(be, bf, aX, aY)
176+ let aT = z(aX, be)
177+ let aS = z(aY, bf)
178+ let bh = z(bc, b)
179+ let bi = aR(aT, bh)
180+ let bj = aR(aS, bh)
181+[bg, bi, bj]
175182 }
176183
177184
178-func bi (bj,bk,bl,Q) = {
179- let aZ = aq()
180- let bm = aZ[p]
181- let bn = aZ[q]
182- let bo = aZ[r]
183- let bp = parseIntValue(aZ[s])
184- let bq = parseIntValue(aZ[t])
185- let br = aZ[o]
186- let bs = valueOrErrorMessage(assetInfo(fromBase58String(bm)), (("Asset " + bm) + " doesn't exist")).quantity
187- if ((bm != bk))
185+func bk (aX,aY,bc) = {
186+ let bl = bb(aX, aY, bc)
187+[C(bl[0], b), C(bl[1], b), C(bl[2], b)]
188+ }
189+
190+
191+func bm (bn,bo,bp,R) = {
192+ let bd = au()
193+ let bq = bd[p]
194+ let br = bd[q]
195+ let bs = bd[r]
196+ let bt = parseIntValue(bd[s])
197+ let bu = parseIntValue(bd[t])
198+ let bv = bd[o]
199+ let bw = valueOrErrorMessage(assetInfo(fromBase58String(bq)), (("Asset " + bq) + " doesn't exist")).quantity
200+ if ((bq != bo))
188201 then throw("Invalid asset passed.")
189202 else {
190- let bt = aL(bn)
191- let bu = y(bt, bp)
192- let bv = aL(bo)
193- let bw = y(bv, bq)
194- let bx = aN(bw, bu)
195- let by = B(bx, b)
196- let bz = y(bl, b)
197- let bA = y(bs, b)
198- let bB = fraction(bu, bz, bA)
199- let bC = fraction(bw, bz, bA)
200- let bD = B(bB, bp)
201- let bE = B(bC, bq)
202- let bF = if ((bj == ""))
203+ let bx = aP(br)
204+ let by = z(bx, bt)
205+ let bz = aP(bs)
206+ let bA = z(bz, bu)
207+ let bB = aR(bA, by)
208+ let bC = C(bB, b)
209+ let bD = z(bp, b)
210+ let bE = z(bw, b)
211+ let bF = fraction(by, bD, bE)
212+ let bG = fraction(bA, bD, bE)
213+ let bH = C(bF, bt)
214+ let bI = C(bG, bu)
215+ let bJ = if ((bn == ""))
203216 then nil
204- else [ScriptTransfer(Q, bD, if ((bn == "WAVES"))
217+ else [ScriptTransfer(R, bH, if ((br == "WAVES"))
205218 then unit
206- else fromBase58String(bn)), ScriptTransfer(Q, bE, if ((bo == "WAVES"))
219+ else fromBase58String(br)), ScriptTransfer(R, bI, if ((bs == "WAVES"))
207220 then unit
208- else fromBase58String(bo)), StringEntry(S(toString(Q), bj), aH(bD, bE, bl, by, height, lastBlock.timestamp)), IntegerEntry(L(), by), IntegerEntry(M(height, lastBlock.timestamp), by)]
209- $Tuple10(bD, bE, bn, bo, bt, bv, bs, bx, br, bF)
221+ else fromBase58String(bs)), StringEntry(T(toString(R), bn), aL(bH, bI, bp, bC, height, lastBlock.timestamp)), IntegerEntry(M(), bC), IntegerEntry(N(height, lastBlock.timestamp), bC)]
222+ $Tuple10(bH, bI, br, bs, bx, bz, bw, bB, bv, bJ)
210223 }
211224 }
212225
213226
214-func bG (bj,bH,bI,bJ,bK,bL,Q,bM,bN) = {
215- let aZ = aq()
216- let bm = fromBase58String(aZ[p])
217- let bO = aZ[q]
218- let bP = aZ[r]
219- let bQ = aZ[u]
220- let bR = aZ[v]
221- let bS = parseIntValue(aZ[s])
222- let bT = parseIntValue(aZ[t])
223- let br = aZ[o]
224- let bs = valueOrErrorMessage(assetInfo(bm), "Wrong lp asset.").quantity
225- let bt = if (bM)
226- then aL(bO)
227- else (aL(bO) - bI)
228- let bv = if (bM)
229- then aL(bP)
230- else (aL(bP) - bK)
231- let bU = y(bI, bS)
232- let bV = y(bK, bT)
233- let bW = aN(bV, bU)
234- let bu = y(bt, bS)
235- let bw = y(bv, bT)
236- let bX = if ((bs == 0))
227+func bK (bn,bL,bM,bN,bO,bP,R,bQ,bR) = {
228+ let bd = au()
229+ let bq = fromBase58String(bd[p])
230+ let bS = bd[q]
231+ let bT = bd[r]
232+ let bU = bd[u]
233+ let bV = bd[v]
234+ let bW = parseIntValue(bd[s])
235+ let bX = parseIntValue(bd[t])
236+ let bv = bd[o]
237+ let bw = valueOrErrorMessage(assetInfo(bq), "Wrong lp asset.").quantity
238+ let bx = if (bQ)
239+ then aP(bS)
240+ else (aP(bS) - bM)
241+ let bz = if (bQ)
242+ then aP(bT)
243+ else (aP(bT) - bO)
244+ let bY = z(bM, bW)
245+ let bZ = z(bO, bX)
246+ let ca = aR(bZ, bY)
247+ let by = z(bx, bW)
248+ let bA = z(bz, bX)
249+ let cb = if ((bw == 0))
237250 then {
238- let bx = f
239- let bY = f
240- let bd = pow((bU * bV), 0, toBigInt(5), 1, 0, DOWN)
241- $Tuple5(B(bd, b), B(bU, bS), B(bV, bT), aN((bw + bV), (bu + bU)), bY)
251+ let bB = f
252+ let cc = f
253+ let bh = pow((bY * bZ), 0, toBigInt(5), 1, 0, DOWN)
254+ $Tuple5(C(bh, b), C(bY, bW), C(bZ, bX), aR((bA + bZ), (by + bY)), cc)
242255 }
243256 else {
244- let bx = aN(bw, bu)
245- let bZ = fraction(I((bx - bW)), e, bx)
246- let bY = y(bH, b)
247- if (if ((bx != f))
248- then (bZ > bY)
257+ let bB = aR(bA, by)
258+ let cd = fraction(J((bB - ca)), e, bB)
259+ let cc = z(bL, b)
260+ if (if ((bB != f))
261+ then (cd > cc)
249262 else false)
250- then throw(((("Price slippage " + toString(bZ)) + " exceeded ") + toString(bY)))
263+ then throw(((("Price slippage " + toString(cd)) + " exceeded ") + toString(cc)))
251264 else {
252- let bA = y(bs, b)
253- let ca = fraction(bU, bx, e)
254- let cb = fraction(bV, e, bx)
255- let cc = if ((ca > bV))
256- then $Tuple2(cb, bV)
257- else $Tuple2(bU, ca)
258- let cd = cc._1
259- let ce = cc._2
260- let bd = fraction(bA, ce, bw)
261- $Tuple5(B(bd, b), B(cd, bS), B(ce, bT), bx, bY)
265+ let bE = z(bw, b)
266+ let ce = fraction(bY, bB, e)
267+ let cf = fraction(bZ, e, bB)
268+ let cg = if ((ce > bZ))
269+ then $Tuple2(cf, bZ)
270+ else $Tuple2(bY, ce)
271+ let ch = cg._1
272+ let ci = cg._2
273+ let bh = fraction(bE, ci, bA)
274+ $Tuple5(C(bh, b), C(ch, bW), C(ci, bX), bB, cc)
262275 }
263276 }
264- let cf = bX._1
265- let cg = bX._2
266- let ch = bX._3
267- let by = B(bX._4, b)
268- let ci = B(bX._5, b)
269- if ((0 >= cf))
277+ let cj = cb._1
278+ let ck = cb._2
279+ let cl = cb._3
280+ let bC = C(cb._4, b)
281+ let cm = C(cb._5, b)
282+ if ((0 >= cj))
270283 then throw("LP is less than zero.")
271284 else {
272- let cj = if (!(bN))
285+ let cn = if (!(bR))
273286 then 0
274- else cf
275- let ck = (bI - cg)
276- let cl = (bK - ch)
277- let cm = [IntegerEntry(L(), by), IntegerEntry(M(height, lastBlock.timestamp), by), StringEntry(P(Q, bj), aw(cg, ch, cj, by, bH, ci, height, lastBlock.timestamp, ck, cl))]
278- $Tuple13(cf, cj, by, bt, bv, bs, bm, br, cm, ck, cl, bJ, bL)
287+ else cj
288+ let co = (bM - ck)
289+ let cp = (bO - cl)
290+ let cq = [IntegerEntry(M(), bC), IntegerEntry(N(height, lastBlock.timestamp), bC), StringEntry(Q(R, bn), aA(ck, cl, cn, bC, bL, cm, height, lastBlock.timestamp, co, cp))]
291+ $Tuple13(cj, cn, bC, bx, bz, bw, bq, bv, cq, co, cp, bN, bP)
279292 }
280293 }
281294
282295
283-func cn (co) = {
284- let aZ = aq()
285- let cp = aZ[q]
286- let cq = aZ[r]
287- let br = parseIntValue(aZ[o])
288- let cr = parseIntValue(aZ[s])
289- let cs = parseIntValue(aZ[t])
290- let ct = aL(cp)
291- let cu = aL(cq)
292- let bx = if ((co.orderType == Buy))
293- then aQ(cr, cs, (ct + co.amount), cu)
294- else aQ(cr, cs, (ct - co.amount), cu)
295- let by = B(bx, b)
296- if (if (if (ao())
296+func cr (cs) = {
297+ let bd = au()
298+ let ct = bd[q]
299+ let cu = bd[r]
300+ let bv = parseIntValue(bd[o])
301+ let cv = parseIntValue(bd[s])
302+ let cw = parseIntValue(bd[t])
303+ let cx = aP(ct)
304+ let cy = aP(cu)
305+ let bB = if ((cs.orderType == Buy))
306+ then aU(cv, cw, (cx + cs.amount), cy)
307+ else aU(cv, cw, (cx - cs.amount), cy)
308+ let bC = C(bB, b)
309+ if (if (if (as())
297310 then true
298- else (br == l))
311+ else (bv == l))
299312 then true
300- else (br == m))
313+ else (bv == m))
301314 then throw("Exchange operations disabled")
302315 else {
303- let cv = co.assetPair.amountAsset
304- let cw = if ((cv == unit))
316+ let cz = cs.assetPair.amountAsset
317+ let cA = if ((cz == unit))
305318 then "WAVES"
306- else toBase58String(value(cv))
307- let cx = co.assetPair.priceAsset
308- let cy = if ((cx == unit))
319+ else toBase58String(value(cz))
320+ let cB = cs.assetPair.priceAsset
321+ let cC = if ((cB == unit))
309322 then "WAVES"
310- else toBase58String(value(cx))
311- if (if ((cw != cp))
323+ else toBase58String(value(cB))
324+ if (if ((cA != ct))
312325 then true
313- else (cy != cq))
326+ else (cC != cu))
314327 then throw("Wrong order assets.")
315328 else {
316- let cz = co.price
317- let bT = fraction(b, cs, cr)
318- let cA = E(cz, b, bT)
319- let cB = if ((co.orderType == Buy))
320- then (by >= cA)
321- else (cA >= by)
329+ let cD = cs.price
330+ let bX = fraction(b, cw, cv)
331+ let cE = F(cD, b, bX)
332+ let cF = if ((cs.orderType == Buy))
333+ then (bC >= cE)
334+ else (cE >= bC)
322335 true
323336 }
324337 }
325338 }
326339
327340
328-func cC (cD) = if ((size(cD.payments) != 1))
341+func cG (cH) = if ((size(cH.payments) != 1))
329342 then throw("exactly 1 payment is expected")
330343 else {
331- let cE = value(cD.payments[0])
332- let bk = value(cE.assetId)
333- let cF = cE.amount
334- let bX = bi(toBase58String(cD.transactionId), toBase58String(bk), cF, cD.caller)
335- let bD = bX._1
336- let bE = bX._2
337- let br = parseIntValue(bX._9)
338- let bF = bX._10
339- if (if (ao())
344+ let cI = value(cH.payments[0])
345+ let bo = value(cI.assetId)
346+ let cJ = cI.amount
347+ let cb = bm(toBase58String(cH.transactionId), toBase58String(bo), cJ, cH.caller)
348+ let bH = cb._1
349+ let bI = cb._2
350+ let bv = parseIntValue(cb._9)
351+ let bJ = cb._10
352+ if (if (as())
340353 then true
341- else (br == m))
342- then throw(("Get operation is blocked by admin. Status = " + toString(br)))
343- else $Tuple5(bD, bE, cF, bk, bF)
354+ else (bv == m))
355+ then throw(("Get operation is blocked by admin. Status = " + toString(bv)))
356+ else $Tuple5(bH, bI, cJ, bo, bJ)
344357 }
345358
346359
347-func cG (cH,R,cI,cJ,bH,bN) = {
348- let cK = bG(R, bH, value(cI).amount, value(cI).assetId, value(cJ).amount, value(cJ).assetId, cH, false, bN)
349- let cL = parseIntValue(cK._8)
350- if (if (if (ao())
360+func cK (cL,S,cM,cN,bL,bR) = {
361+ let cO = bK(S, bL, value(cM).amount, value(cM).assetId, value(cN).amount, value(cN).assetId, cL, false, bR)
362+ let cP = parseIntValue(cO._8)
363+ if (if (if (as())
351364 then true
352- else (cL == k))
365+ else (cP == k))
353366 then true
354- else (cL == m))
355- then throw(("Put operation is blocked by admin. Status = " + toString(cL)))
356- else cK
367+ else (cP == m))
368+ then throw(("Put operation is blocked by admin. Status = " + toString(cP)))
369+ else cO
357370 }
358371
359372
360-func cM (cN,cO,cP) = {
361- let cQ = toBigInt(cP)
362- let cR = toBigInt(4)
363- let cS = toBigInt(2)
364- let cT = toBigInt(3)
365- let cU = (cN + cO)
366- let cV = (cN * cO)
367- let cW = ((cR * cQ) - g)
368- let cX = pow((cQ * cU), 0, cS, 0, 0, DOWN)
369- let cY = (cV * pow((cW / cT), 0, cT, 0, 0, DOWN))
370- let cZ = ((cQ * cV) * cU)
371- let da = (cV * pow((cY + cX), 0, toBigInt(5), 1, 0, DOWN))
372- let db = (cS * pow((cZ + da), 0, toBigInt(333333), 6, 0, DOWN))
373- let dc = (cW / (cT * db))
374- (((toBigInt(-4) * cV) * dc) + db)
375- }
373+func cQ (cR,cS,cT) = 1
376374
377375
378-@Callable(cD)
379-func constructor (an,dd) = if ((cD.caller != this))
376+@Callable(cH)
377+func constructor (ar,cU) = if ((cH.caller != this))
380378 then throw("permissions denied")
381- else [StringEntry(J(), an), StringEntry(K(), dd)]
379+ else [StringEntry(K(), ar), StringEntry(L(), cU)]
382380
383381
384382
385-@Callable(cD)
386-func put (de,df) = {
387- let dg = av()
388- let dh = valueOrErrorMessage(addressFromString(dg[w]), "Incorrect staking address.")
389- let di = valueOrErrorMessage(addressFromString(dg[x]), "Incorrect slippage address.")
390- if ((0 > de))
383+@Callable(cH)
384+func put (cV,cW) = {
385+ let cX = az()
386+ let cY = valueOrErrorMessage(addressFromString(cX[w]), "Incorrect staking address.")
387+ let cZ = valueOrErrorMessage(addressFromString(cX[x]), "Incorrect slippage address.")
388+ if ((0 > cV))
391389 then throw("Invalid slippage.")
392- else if ((size(cD.payments) != 2))
390+ else if ((size(cH.payments) != 2))
393391 then throw("2 payments are expected")
394392 else {
395- let cK = cG(toString(cD.caller), toBase58String(cD.transactionId), AttachedPayment(value(cD.payments[0]).assetId, value(cD.payments[0]).amount), cD.payments[1], de, true)
396- let cj = cK._2
397- let dj = cK._7
398- let bF = cK._9
399- let ck = cK._10
400- let cl = cK._11
401- let bn = cK._12
402- let bo = cK._13
403- let dk = invoke(an, "emit", [cj], nil)
404- if ((dk == dk))
393+ let cO = cK(toString(cH.caller), toBase58String(cH.transactionId), AttachedPayment(value(cH.payments[0]).assetId, value(cH.payments[0]).amount), cH.payments[1], cV, true)
394+ let cn = cO._2
395+ let da = cO._7
396+ let bJ = cO._9
397+ let co = cO._10
398+ let cp = cO._11
399+ let br = cO._12
400+ let bs = cO._13
401+ let db = invoke(ar, "emit", [cn], nil)
402+ if ((db == db))
405403 then {
406- let dl = if ((ck > 0))
407- then invoke(di, "put", nil, [AttachedPayment(bn, ck)])
404+ let dc = if ((co > 0))
405+ then invoke(cZ, "put", nil, [AttachedPayment(br, co)])
408406 else nil
409- if ((dl == dl))
407+ if ((dc == dc))
410408 then {
411- let dm = if ((cl > 0))
412- then invoke(di, "put", nil, [AttachedPayment(bo, cl)])
409+ let dd = if ((cp > 0))
410+ then invoke(cZ, "put", nil, [AttachedPayment(bs, cp)])
413411 else nil
414- if ((dm == dm))
412+ if ((dd == dd))
415413 then {
416- let dn = if (df)
414+ let de = if (cW)
417415 then {
418- let do = invoke(dh, "stake", nil, [AttachedPayment(dj, cj)])
419- if ((do == do))
416+ let df = invoke(cY, "stake", nil, [AttachedPayment(da, cn)])
417+ if ((df == df))
420418 then nil
421419 else throw("Strict value is not equal to itself.")
422420 }
423- else [ScriptTransfer(cD.caller, cj, dj)]
424- (bF ++ dn)
421+ else [ScriptTransfer(cH.caller, cn, da)]
422+ (bJ ++ de)
425423 }
426424 else throw("Strict value is not equal to itself.")
427425 }
428426 else throw("Strict value is not equal to itself.")
429427 }
430428 else throw("Strict value is not equal to itself.")
431429 }
432430 }
433431
434432
435433
436-@Callable(cD)
437-func putOneTkn (dp,dq,df) = {
438- let aZ = av()
439- let dh = valueOrErrorMessage(addressFromString(aZ[w]), "Wrong staking address")
440- let di = valueOrErrorMessage(addressFromString(aZ[x]), "Wrong slippage address")
441- let dr = aq()
442- let bn = dr[q]
443- let bo = dr[r]
444- let bp = parseIntValue(dr[s])
445- let bq = parseIntValue(dr[t])
446- if ((size(cD.payments) != 1))
434+@Callable(cH)
435+func putOneTkn (dg,dh,cW) = {
436+ let bd = az()
437+ let cY = valueOrErrorMessage(addressFromString(bd[w]), "Wrong staking address")
438+ let cZ = valueOrErrorMessage(addressFromString(bd[x]), "Wrong slippage address")
439+ let di = valueOrErrorMessage(addressFromString(bd[y]), "Wrong slippage address")
440+ let dj = au()
441+ let br = dj[q]
442+ let bs = dj[r]
443+ let bt = parseIntValue(dj[s])
444+ let bu = parseIntValue(dj[t])
445+ if ((size(cH.payments) != 1))
447446 then throw("exactly 1 payment is expected")
448447 else {
449- let cE = value(cD.payments[0])
450- let bk = toBase58String(value(cE.assetId))
451- let cF = cE.amount
452- let ds = y(dp, bp)
453- let dt = y(dq, bq)
454- let bt = aL(bn)
455- let bu = y(bt, bp)
456- let bv = aL(bo)
457- let bw = y(bv, bq)
458- let du = cM(toBigInt(bt), toBigInt(bv), 5000000000)
459- let dv = if ((bk == bn))
448+ let cI = value(cH.payments[0])
449+ let bo = toBase58String(value(cI.assetId))
450+ let cJ = cI.amount
451+ let dk = z(dg, bt)
452+ let dl = z(dh, bu)
453+ let bx = aP(br)
454+ let by = z(bx, bt)
455+ let bz = aP(bs)
456+ let bA = z(bz, bu)
457+ let dm = invoke(di, "calcD", [toString(bx), toString(bz), "50", "100000000", "1"], nil)
458+ let dn = parseBigIntValue(ak(dm))
459+ let do = if ((bo == br))
460460 then {
461- let dw = y(cF, bp)
462- let dx = dt
463- let dy = (dw - ds)
464- let dz = cM((toBigInt(bt) + toBigInt(B(dy, bp))), (toBigInt(bv) - toBigInt(B(dx, bq))), 5000000000)
465- true
461+ let dp = z(cJ, bt)
462+ let dq = dl
463+ let dr = (dp - dk)
464+ let ds = invoke(di, "calcD", [toString((toBigInt(bx) + toBigInt(C(dr, bt)))), toString((toBigInt(bz) - toBigInt(C(dq, bu)))), "50", "100000000", "1"], nil)
465+ let dt = parseBigIntValue(ak(ds))
466+ let du = fraction((dt - dn), c, dn)
467+ if ((du > toBigInt(1000)))
468+ then throw("Wrong arguments passed. D decreased.")
469+ else true
466470 }
467471 else {
468- let dA = y(cF, bq)
469- let dx = (dt - dA)
470- let dy = ds
471- let dz = cM((toBigInt(bt) - toBigInt(B(dy, bp))), (toBigInt(bv) + toBigInt(B(dx, bq))), 50)
472- true
472+ let dv = z(cJ, bu)
473+ let dq = (dl - dv)
474+ let dr = dk
475+ let ds = invoke(di, "calcD", [toString((toBigInt(bx) - toBigInt(C(dr, bt)))), toString((toBigInt(bz) + toBigInt(C(dq, bu)))), "50", "100000000", "1"], nil)
476+ let dt = parseBigIntValue(ak(ds))
477+ let du = fraction((dt - dn), c, dn)
478+ if ((du > toBigInt(1000)))
479+ then throw("Wrong arguments passed. D decreased.")
480+ else true
473481 }
474- if (!(dv))
482+ if (!(do))
475483 then throw("Errors.")
476484 else {
477- let cK = cG(toString(cD.caller), toBase58String(cD.transactionId), AttachedPayment(fromBase58String(bn), dp), AttachedPayment(fromBase58String(bo), dq), 50000000000, true)
478- let cj = cK._2
479- let dj = cK._7
480- let bF = cK._9
481- let ck = cK._10
482- let cl = cK._11
483- let dk = invoke(an, "emit", [cj], nil)
484- if ((dk == dk))
485+ let cO = cK(toString(cH.caller), toBase58String(cH.transactionId), AttachedPayment(fromBase58String(br), dg), AttachedPayment(fromBase58String(bs), dh), 50000000000, true)
486+ let cn = cO._2
487+ let da = cO._7
488+ let bJ = cO._9
489+ let co = cO._10
490+ let cp = cO._11
491+ let db = invoke(ar, "emit", [cn], nil)
492+ if ((db == db))
485493 then {
486- let dl = if ((ck > 0))
487- then invoke(di, "put", nil, [AttachedPayment(fromBase58String(bn), ck)])
494+ let dc = if ((co > 0))
495+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(br), co)])
488496 else nil
489- if ((dl == dl))
497+ if ((dc == dc))
490498 then {
491- let dm = if ((cl > 0))
492- then invoke(di, "put", nil, [AttachedPayment(fromBase58String(bo), cl)])
499+ let dd = if ((cp > 0))
500+ then invoke(cZ, "put", nil, [AttachedPayment(fromBase58String(bs), cp)])
493501 else nil
494- if ((dm == dm))
502+ if ((dd == dd))
495503 then {
496- let dn = if (df)
504+ let de = if (cW)
497505 then {
498- let do = invoke(dh, "stake", nil, [AttachedPayment(dj, cj)])
499- if ((do == do))
506+ let df = invoke(cY, "stake", nil, [AttachedPayment(da, cn)])
507+ if ((df == df))
500508 then nil
501509 else throw("Strict value is not equal to itself.")
502510 }
503- else [ScriptTransfer(cD.caller, cj, dj)]
504- (bF ++ dn)
511+ else [ScriptTransfer(cH.caller, cn, da)]
512+ (bJ ++ de)
505513 }
506514 else throw("Strict value is not equal to itself.")
507515 }
508516 else throw("Strict value is not equal to itself.")
509517 }
510518 else throw("Strict value is not equal to itself.")
511519 }
512520 }
513521 }
514522
515523
516524
517-@Callable(cD)
518-func putForFree (dB) = if ((0 > dB))
525+@Callable(cH)
526+func putForFree (dw) = if ((0 > dw))
519527 then throw("Invalid value passed")
520- else if ((size(cD.payments) != 2))
528+ else if ((size(cH.payments) != 2))
521529 then throw("exactly 2 payments are expected")
522530 else {
523- let cK = cG(toString(cD.caller), toBase58String(cD.transactionId), AttachedPayment(value(cD.payments[0]).assetId, value(cD.payments[0]).amount), cD.payments[1], dB, false)
524- cK._9
531+ let cO = cK(toString(cH.caller), toBase58String(cH.transactionId), AttachedPayment(value(cH.payments[0]).assetId, value(cH.payments[0]).amount), cH.payments[1], dw, false)
532+ cO._9
525533 }
526534
527535
528536
529-@Callable(cD)
537+@Callable(cH)
530538 func get () = {
531- let bX = cC(cD)
532- let dC = bX._1
533- let bE = bX._2
534- let cF = bX._3
535- let bk = bX._4
536- let bF = bX._5
537- let dD = invoke(an, "burn", [cF], [AttachedPayment(bk, cF)])
538- if ((dD == dD))
539- then bF
539+ let cb = cG(cH)
540+ let dx = cb._1
541+ let bI = cb._2
542+ let cJ = cb._3
543+ let bo = cb._4
544+ let bJ = cb._5
545+ let dy = invoke(ar, "burn", [cJ], [AttachedPayment(bo, cJ)])
546+ if ((dy == dy))
547+ then bJ
540548 else throw("Strict value is not equal to itself.")
541549 }
542550
543551
544552
545-@Callable(cD)
546-func getOneTkn (dE,dF,dG,dH) = if ((size(cD.payments) != 1))
553+@Callable(cH)
554+func getOneTkn (dz,dA,dB,dC) = if ((size(cH.payments) != 1))
547555 then throw("exactly 1 payment is expected")
548556 else {
549- let aZ = aq()
550- let bm = aZ[p]
551- let bn = aZ[q]
552- let bo = aZ[r]
553- let bp = parseIntValue(aZ[s])
554- let bq = parseIntValue(aZ[t])
555- let br = aZ[o]
556- if (if ((dH != bn))
557- then (dH != bo)
557+ let bd = au()
558+ let bq = bd[p]
559+ let br = bd[q]
560+ let bs = bd[r]
561+ let bt = parseIntValue(bd[s])
562+ let bu = parseIntValue(bd[t])
563+ let bv = bd[o]
564+ if (if ((dC != br))
565+ then (dC != bs)
558566 else false)
559- then throw(("Incorrect out asset id passed: " + dH))
567+ then throw(("Incorrect out asset id passed: " + dC))
560568 else {
561- let dI = if ((dH == bn))
562- then bn
563- else bo
564- let dJ = if ((dH == bn))
565- then dG
569+ let dD = if ((dC == br))
570+ then br
571+ else bs
572+ let dE = if ((dC == br))
573+ then dB
566574 else 0
567- let dK = if ((dH == bo))
568- then dG
575+ let dF = if ((dC == bs))
576+ then dB
569577 else 0
570- let cE = value(cD.payments[0])
571- let Q = cD.caller
572- let bj = toBase58String(cD.transactionId)
573- let bk = value(cE.assetId)
574- let cF = cE.amount
575- if ((bm != toBase58String(bk)))
578+ let cI = value(cH.payments[0])
579+ let R = cH.caller
580+ let bn = toBase58String(cH.transactionId)
581+ let bo = value(cI.assetId)
582+ let cJ = cI.amount
583+ if ((bq != toBase58String(bo)))
576584 then throw("Invalid asset passed.")
577585 else {
578- let ds = y(dE, bp)
579- let dt = y(dF, bq)
580- let dL = aN(dt, ds)
581- let dM = bi(toBase58String(cD.transactionId), toBase58String(bk), cF, cD.caller)
582- let bD = dM._1
583- let bE = dM._2
584- let dN = if ((dH == bn))
586+ let dk = z(dz, bt)
587+ let dl = z(dA, bu)
588+ let dG = aR(dl, dk)
589+ let dH = bm(toBase58String(cH.transactionId), toBase58String(bo), cJ, cH.caller)
590+ let bH = dH._1
591+ let bI = dH._2
592+ let dI = if ((dC == br))
585593 then {
586- let dO = B(fraction(y(bE, bq), e, dL), bp)
587- (dO + bD)
594+ let dJ = C(fraction(z(bI, bu), e, dG), bt)
595+ (dJ + bH)
588596 }
589597 else {
590- let dP = (dK - bE)
591- let dQ = fraction(y(dP, bp), e, dL)
592- let dR = B(fraction(y(bD, bp), dL, e), bq)
593- let dS = fraction((dQ - ds), c, ds)
594- (dR + bE)
598+ let dK = (dF - bI)
599+ let dL = fraction(z(dK, bt), e, dG)
600+ let dM = C(fraction(z(bH, bt), dG, e), bu)
601+ let dN = fraction((dL - dk), c, dk)
602+ (dM + bI)
595603 }
596- let bt = aL(bn)
597- let bu = y(bt, bp)
598- let bv = aL(bo)
599- let bw = y(bv, bq)
600- let bx = aN(bw, bu)
601- let by = B(bx, b)
602- let bF = [ScriptTransfer(Q, dN, if ((dI == "WAVES"))
604+ let bx = aP(br)
605+ let by = z(bx, bt)
606+ let bz = aP(bs)
607+ let bA = z(bz, bu)
608+ let bB = aR(bA, by)
609+ let bC = C(bB, b)
610+ let bJ = [ScriptTransfer(R, dI, if ((dD == "WAVES"))
603611 then unit
604- else fromBase58String(dI)), StringEntry(S(toString(Q), bj), aH(dJ, dK, cF, by, height, lastBlock.timestamp)), IntegerEntry(L(), by), IntegerEntry(M(height, lastBlock.timestamp), by)]
605- let dT = invoke(an, "burn", [cF], [AttachedPayment(bk, cF)])
606- if ((dT == dT))
607- then bF
612+ else fromBase58String(dD)), StringEntry(T(toString(R), bn), aL(dE, dF, cJ, bC, height, lastBlock.timestamp)), IntegerEntry(M(), bC), IntegerEntry(N(height, lastBlock.timestamp), bC)]
613+ let dO = invoke(ar, "burn", [cJ], [AttachedPayment(bo, cJ)])
614+ if ((dO == dO))
615+ then bJ
608616 else throw("Strict value is not equal to itself.")
609617 }
610618 }
611619 }
612620
613621
614622
615-@Callable(cD)
616-func getNoLess (dU,dV) = {
617- let bX = cC(cD)
618- let bD = bX._1
619- let bE = bX._2
620- let cF = bX._3
621- let bk = bX._4
622- let bF = bX._5
623- if ((dU > bD))
624- then throw(((("noLessThenAmtAsset failed: " + toString(bD)) + " < ") + toString(dU)))
625- else if ((dV > bE))
626- then throw(((("noLessThenPriceAsset failed: " + toString(bE)) + " < ") + toString(dV)))
623+@Callable(cH)
624+func getNoLess (dP,dQ) = {
625+ let cb = cG(cH)
626+ let bH = cb._1
627+ let bI = cb._2
628+ let cJ = cb._3
629+ let bo = cb._4
630+ let bJ = cb._5
631+ if ((dP > bH))
632+ then throw(((("noLessThenAmtAsset failed: " + toString(bH)) + " < ") + toString(dP)))
633+ else if ((dQ > bI))
634+ then throw(((("noLessThenPriceAsset failed: " + toString(bI)) + " < ") + toString(dQ)))
627635 else {
628- let dD = invoke(an, "burn", [cF], [AttachedPayment(bk, cF)])
629- if ((dD == dD))
630- then bF
636+ let dy = invoke(ar, "burn", [cJ], [AttachedPayment(bo, cJ)])
637+ if ((dy == dy))
638+ then bJ
631639 else throw("Strict value is not equal to itself.")
632640 }
633641 }
634642
635643
636644
637-@Callable(cD)
638-func unstakeAndGet (dW) = {
639- let dX = if ((size(cD.payments) != 0))
645+@Callable(cH)
646+func unstakeAndGet (dR) = {
647+ let dS = if ((size(cH.payments) != 0))
640648 then throw("No payments are expected")
641649 else true
642- if ((dX == dX))
650+ if ((dS == dS))
643651 then {
644- let aZ = aq()
645- let dY = av()
646- let dj = fromBase58String(aZ[p])
647- let dZ = valueOrErrorMessage(addressFromString(dY[w]), "Error. Incorrect staking address.")
648- let ea = invoke(dZ, "unstake", [toBase58String(dj), dW], nil)
649- if ((ea == ea))
652+ let bd = au()
653+ let dT = az()
654+ let da = fromBase58String(bd[p])
655+ let dU = valueOrErrorMessage(addressFromString(dT[w]), "Error. Incorrect staking address.")
656+ let dV = invoke(dU, "unstake", [toBase58String(da), dR], nil)
657+ if ((dV == dV))
650658 then {
651- let bX = bi(toBase58String(cD.transactionId), toBase58String(dj), dW, cD.caller)
652- let br = parseIntValue(bX._9)
653- let bF = bX._10
654- let eb = if (if (ao())
659+ let cb = bm(toBase58String(cH.transactionId), toBase58String(da), dR, cH.caller)
660+ let bv = parseIntValue(cb._9)
661+ let bJ = cb._10
662+ let dW = if (if (as())
655663 then true
656- else (br == m))
657- then throw(("Get operation is blocked by admin. Status = " + toString(br)))
664+ else (bv == m))
665+ then throw(("Get operation is blocked by admin. Status = " + toString(bv)))
658666 else true
659- if ((eb == eb))
667+ if ((dW == dW))
660668 then {
661- let dD = invoke(an, "burn", [dW], [AttachedPayment(dj, dW)])
662- if ((dD == dD))
663- then bF
669+ let dy = invoke(ar, "burn", [dR], [AttachedPayment(da, dR)])
670+ if ((dy == dy))
671+ then bJ
664672 else throw("Strict value is not equal to itself.")
665673 }
666674 else throw("Strict value is not equal to itself.")
667675 }
668676 else throw("Strict value is not equal to itself.")
669677 }
670678 else throw("Strict value is not equal to itself.")
671679 }
672680
673681
674682
675-@Callable(cD)
676-func activate (ec,ed) = if ((toString(cD.caller) != toString(an)))
683+@Callable(cH)
684+func activate (dX,dY) = if ((toString(cH.caller) != toString(ar)))
677685 then throw("permissions denied")
678- else $Tuple2([StringEntry(T(), ec), StringEntry(U(), ed)], "success")
686+ else $Tuple2([StringEntry(U(), dX), StringEntry(V(), dY)], "success")
679687
680688
681689
682-@Callable(cD)
683-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aq())
690+@Callable(cH)
691+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, au())
684692
685693
686694
687-@Callable(cD)
688-func getAccBalanceWrapperREADONLY (aM) = $Tuple2(nil, aL(aM))
695+@Callable(cH)
696+func getAccBalanceWrapperREADONLY (aQ) = $Tuple2(nil, aP(aQ))
689697
690698
691699
692-@Callable(cD)
693-func calcPricesWrapperREADONLY (aT,aU,aY) = {
694- let bh = aX(aT, aU, aY)
695- $Tuple2(nil, [toString(bh[0]), toString(bh[1]), toString(bh[2])])
700+@Callable(cH)
701+func calcPricesWrapperREADONLY (aX,aY,bc) = {
702+ let bl = bb(aX, aY, bc)
703+ $Tuple2(nil, [toString(bl[0]), toString(bl[1]), toString(bl[2])])
696704 }
697705
698706
699707
700-@Callable(cD)
701-func fromX18WrapperREADONLY (C,D) = $Tuple2(nil, B(parseBigIntValue(C), D))
708+@Callable(cH)
709+func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
702710
703711
704712
705-@Callable(cD)
706-func toX18WrapperREADONLY (z,A) = $Tuple2(nil, toString(y(z, A)))
713+@Callable(cH)
714+func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
707715
708716
709717
710-@Callable(cD)
711-func calcPriceBigIntWrapperREADONLY (aO,aP) = $Tuple2(nil, toString(aN(parseBigIntValue(aO), parseBigIntValue(aP))))
718+@Callable(cH)
719+func calcPriceBigIntWrapperREADONLY (aS,aT) = $Tuple2(nil, toString(aR(parseBigIntValue(aS), parseBigIntValue(aT))))
712720
713721
714722
715-@Callable(cD)
716-func estimatePutOperationWrapperREADONLY (bj,bH,bI,bJ,bK,bL,Q,bM,bN) = $Tuple2(nil, bG(bj, bH, bI, bJ, bK, bL, Q, bM, bN))
723+@Callable(cH)
724+func estimatePutOperationWrapperREADONLY (bn,bL,bM,bN,bO,bP,R,bQ,bR) = $Tuple2(nil, bK(bn, bL, bM, bN, bO, bP, R, bQ, bR))
717725
718726
719727
720-@Callable(cD)
721-func estimateGetOperationWrapperREADONLY (bj,bk,bl,Q) = {
722- let bX = bi(bj, bk, bl, addressFromStringValue(Q))
723- $Tuple2(nil, $Tuple10(bX._1, bX._2, bX._3, bX._4, bX._5, bX._6, bX._7, toString(bX._8), bX._9, bX._10))
728+@Callable(cH)
729+func estimateGetOperationWrapperREADONLY (bn,bo,bp,R) = {
730+ let cb = bm(bn, bo, bp, addressFromStringValue(R))
731+ $Tuple2(nil, $Tuple10(cb._1, cb._2, cb._3, cb._4, cb._5, cb._6, cb._7, toString(cb._8), cb._9, cb._10))
724732 }
725733
726734
727-@Verifier(ee)
728-func ef () = {
729- let eg = ee
730- if ($isInstanceOf(eg, "Order"))
735+@Verifier(dZ)
736+func ea () = {
737+ let al = dZ
738+ if ($isInstanceOf(al, "Order"))
731739 then {
732- let co = eg
733- let eh = ap()
734- let ag = cn(co)
735- let ah = sigVerify(co.bodyBytes, co.proofs[0], co.senderPublicKey)
736- let ai = sigVerify(co.bodyBytes, co.proofs[1], eh)
737- if (if (if (ag)
738- then ah
739- else false)
740+ let cs = al
741+ let eb = at()
742+ let ah = cr(cs)
743+ let ai = sigVerify(cs.bodyBytes, cs.proofs[0], cs.senderPublicKey)
744+ let aj = sigVerify(cs.bodyBytes, cs.proofs[1], eb)
745+ if (if (if (ah)
740746 then ai
741747 else false)
748+ then aj
749+ else false)
742750 then true
743- else af(ag, ah, ai)
751+ else ag(ah, ai, aj)
744752 }
745753 else {
746- let ei = valueOrElse(getString(this, K()), i)
747- if ((ei == i))
748- then sigVerify(ee.bodyBytes, ee.proofs[0], ee.senderPublicKey)
749- else sigVerify(ee.bodyBytes, ee.proofs[0], fromBase58String(ei))
754+ let ec = valueOrElse(getString(this, L()), i)
755+ if ((ec == i))
756+ then sigVerify(dZ.bodyBytes, dZ.proofs[0], dZ.senderPublicKey)
757+ else sigVerify(dZ.bodyBytes, dZ.proofs[0], fromBase58String(ec))
750758 }
751759 }
752760

github/deemru/w8io/169f3d6 
309.14 ms