tx · HMsNAUgWAwQAP6joVHCQN3U69NEKrkqeRU6ggudJPkVa

3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz:  -0.01400000 Waves

2021.12.30 17:07 [2922137] smart account 3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz > SELF 0.00000000 Waves

{ "type": 13, "id": "HMsNAUgWAwQAP6joVHCQN3U69NEKrkqeRU6ggudJPkVa", "fee": 1400000, "feeAssetId": null, "timestamp": 1640873305341, "version": 1, "sender": "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz", "senderPublicKey": "DxhbzFs9BZTiN6kcnyybxmqPTV8xReD6Z5gWQ5AgRX8w", "proofs": [ "zKyzn6fxNvnPK15vy1pM6ZXHdX83Mr8WApqWnneYJVWHzBePtR1atxFn5NKkouB3uWcwieQ4GMMPGPkwhBVQ59B" ], "script": "base64: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YXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAVwckRjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAADc3RzCQABkQAAAAIFAAAAA2NmZwUAAAAJaWR4UG9vbFN0BAAAAAdscEVtaXNzCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAEbHBJZAIAAAALV3JvbmcgTFAgaWQAAAAIcXVhbnRpdHkDCQEAAAACIT0AAAACBQAAAARscElkBQAAAApwbXRBc3NldElkCQAAAgAAAAECAAAAD1dyb25nIHBtdCBhc3NldAQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABGFtSWQEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAVhbURjbQQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABHBySWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAVwckRjbQQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAQAAAALcG10THBBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAACHBtdExwQW10BQAAAAZzY2FsZTgEAAAACmxwRW1pc3NYMTgJAQAAAAV0b1gxOAAAAAIFAAAAB2xwRW1pc3MFAAAABnNjYWxlOAQAAAALb3V0QW1BbXRYMTgJAAE8AAAAAwUAAAAMYW1CYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAAKbHBFbWlzc1gxOAQAAAALb3V0UHJBbXRYMTgJAAE8AAAAAwUAAAAMcHJCYWxhbmNlWDE4BQAAAAtwbXRMcEFtdFgxOAUAAAAKbHBFbWlzc1gx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AA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAHYW1JZFN0cgUAAAAHaW5BbUFtdAQAAAAJcHJCYWxhbmNlAwUAAAAGaXNFdmFsCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIDAwUAAAAKaXNPbmVBc3NldAkAAAAAAAACBQAAAAVwbXRJZAUAAAAHcHJJZFN0cgcJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdwcklkU3RyBQAAAAZwbXRBbXQDBQAAAAppc09uZUFzc2V0CQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB3BySWRTdHIJAABlAAAAAgkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAdwcklkU3RyBQAAAAdpblByQW10BAAAAA9pbkFtQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAAB2luQW1BbXQFAAAABmFtdERjbQQAAAAPaW5QckFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAdpblByQW10BQAAAAhwcmljZURjbQQAAAAMdXNlclByaWNlWDE4CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAPaW5QckFzc2V0QW10WDE4BQAAAA9pbkFtQXNzZXRBbXRYMTgEAAAADGFtQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJYW1CYWxhbmNlBQAAAAZhbXREY20EAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAAhwcmljZURjbQQAAAADcmVzAwkAAAAAAAACBQAAAARscEVtAAAAAAAAAAAABAAAAAtjdXJQcmljZVgxOAUAAAAKemVyb0JpZ0ludAQAAAALc2xpcHBhZ2VYMTgFAAAACnplcm9CaWdJbnQEAAAACGxwQW10WDE4CQAAdgAAAAYJAAE5AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAA9pblByQXNzZXRBbXRYMTgAAAAAAAAAAAAJAAE2AAAAAQAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgkABRcAAAAFCQEAAAAHZnJvbVgxOAAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAZhbXREY20JAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5QckFzc2V0QW10WDE4BQAAAAhwcmljZURjbQkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIJAAE3AAAAAgUAAAAMcHJCYWxhbmNlWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAE3AAAAAgUAAAAMYW1CYWxhbmNlWDE4BQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC3NsaXBwYWdlWDE4BAAAAAtjdXJQcmljZVgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAMYW1CYWxhbmNlWDE4BAAAAA9zbGlwcGFnZVJlYWxYMTgJAAE8AAAAAwkBAAAAA2FicwAAAAEJAAE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAADHVzZXJQcmljZVgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAAC3NsaXBwYWdlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAhzbGlwcGFnZQUAAAAGc2NhbGU4AwMJAQAAAAIhPQAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50CQABPwAAAAIFAAAAD3NsaXBwYWdlUmVhbFgxOAUAAAALc2xpcHBhZ2VYMTgHCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAD1ByaWNlIHNsaXBwYWdlIAkAAaYAAAABBQAAAA9zbGlwcGFnZVJlYWxYMTgCAAAAAyA+IAkAAaYAAAABBQAAAAtzbGlwcGFnZVgxOAQAAAANbHBFbWlzc2lvblgxOAkBAAAABXRvWDE4AAAAAgUAAAAEbHBFbQUAAAAGc2NhbGU4BAAAAApwclZpYUFtWDE4CQABPAAAAAMFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAALY3VyUHJpY2VYMTgFAAAAB3NjYWxlMTgEAAAACmFtVmlhUHJYMTgJAAE8AAAAAwUAAAAPaW5QckFzc2V0QW10WDE4BQAAAAdzY2FsZTE4BQAAAAtjdXJQcmljZVgxOAQAAAAMZXhwZWN0ZWRBbXRzAwkAAT8AAAACBQAAAApwclZpYUFtWDE4BQAAAA9pblByQXNzZXRBbXRYMTgJAAUUAAAAAgUAAAAKYW1WaWFQclgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQAFFAAAAAIFAAAAD2luQW1Bc3NldEFtdFgxOAUAAAAKcHJWaWFBbVgxOAQAAAARZXhwQW10QXNzZXRBbXRYMTgIBQAAAAxleHBlY3RlZEFtdHMAAAACXzEEAAAAE2V4cFByaWNlQXNzZXRBbXRYMTgIBQAAAAxleHBlY3RlZEFtdHMAAAACXzIEAAAACGxwQW10WDE4CQABPAAAAAMFAAAADWxwRW1pc3Npb25YMTgFAAAAE2V4cFByaWNlQXNzZXRBbXRYMTgFAAAADHByQmFsYW5jZVgxOAkABRcAAAAFCQEAAAAHZnJvbVgxOAAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAdmcm9tWDE4AAAAAgUAAAARZXhwQW10QXNzZXRBbXRYMTgFAAAABmFtdERjbQkBAAAAB2Zyb21YMTgAAAACBQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAAhwcmljZURjbQUAAAALY3VyUHJpY2VYMTgFAAAAC3NsaXBwYWdlWDE4BAAAAAljYWxjTHBBbXQIBQAAAANyZXMAAAACXzEEAAAADmNhbGNBbUFzc2V0UG10CAUAAAADcmVzAAAAAl8yBAAAAA5jYWxjUHJBc3NldFBtdAgFAAAAA3JlcwAAAAJfMwQAAAAIY3VyUHJpY2UJAQAAAAdmcm9tWDE4AAAAAggFAAAAA3JlcwAAAAJfNAUAAAAGc2NhbGU4BAAAAAxzbGlwcGFnZUNhbGMJAQAAAAdmcm9tWDE4AAAAAggFAAAAA3JlcwAAAAJfNQUAAAAGc2NhbGU4AwkAAGcAAAACAAAAAAAAAAAABQAAAAljYWxjTHBBbXQJAAACAAAAAQIAAAAHTFAgPD0gMAQAAAAJZW1pdExwQW10AwkBAAAAASEAAAABBQAAAAZlbWl0THAAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAQAAAAGYW1EaWZmCQAAZQAAAAIFAAAAB2luQW1BbXQFAAAADmNhbGNBbUFzc2V0UG10BAAAAAZwckRpZmYJAABlAAAAAgUAAAAHaW5QckFtdAUAAAAOY2FsY1ByQXNzZXRQbXQEAAAADSR0MDE1ODIwMTYxNjUDAwUAAAAKaXNPbmVBc3NldAkAAAAAAAACBQAAAAVwbXRJZAUAAAAHYW1JZFN0cgcJAAUUAAAAAgUAAAAGcG10QW10AAAAAAAAAAAAAwMFAAAACmlzT25lQXNzZXQJAAAAAAAAAgUAAAAFcG10SWQFAAAAB3BySWRTdHIHCQAFFAAAAAIAAAAAAAAAAAAFAAAABnBtdEFtdAkABRQAAAACBQAAAA5jYWxjQW1Bc3NldFBtdAUAAAAOY2FsY1ByQXNzZXRQbXQEAAAACndyaXRlQW1BbXQIBQAAAA0kdDAxNTgyMDE2MTY1AAAAAl8xBAAAAAp3cml0ZVByQW10CAUAAAANJHQwMTU4MjAxNjE2NQAAAAJfMgQAAAALY29tbW9uU3RhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlQdXRBY3Rpb25CeVVzZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAKBQAAAAp3cml0ZUFtQW10BQAAAAp3cml0ZVByQW10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAAAhzbGlwcGFnZQUAAAAMc2xpcHBhZ2VDYWxjBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAZhbURpZmYFAAAABnByRGlmZgUAAAADbmlsCQAFHwAAAA0FAAAACWNhbGNMcEFtdAUAAAAJZW1pdExwQW10BQAAAAhjdXJQcmljZQUAAAAJYW1CYWxhbmNlBQAAAAlwckJhbGFuY2UFAAAABGxwRW0FAAAABGxwSWQFAAAAA3N0cwUAAAALY29tbW9uU3RhdGUFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAAZpbkFtSWQFAAAABmluUHJJZAEAAAAbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAAAAAQAAAAVvcmRlcgQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAAB2FtdEFzSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAABnByQXNJZAkAAZEAAAACBQAAAANjZmcFAAAACWlkeFByQXNJZAQAAAADc3RzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQb29sU3QEAAAACGFtdEFzRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAHcHJBc0RjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UHJpY2VBc0RjbQQAAAAPYWNjQW10QXNCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2FtdEFzSWQEAAAADmFjY1ByQXNCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABnByQXNJZAQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIIBQAAAAVvcmRlcgAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAhhbXRBc0RjbQUAAAAHcHJBc0RjbQkAAGQAAAACBQAAAA9hY2NBbXRBc0JhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAADmFjY1ByQXNCYWxhbmNlCQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAACGFtdEFzRGNtBQAAAAdwckFzRGNtCQAAZQAAAAIFAAAAD2FjY0FtdEFzQmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAOYWNjUHJBc0JhbGFuY2UEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAZzY2FsZTgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAADc3RzBQAAAA5Qb29sTWF0Y2hlckRpcwYJAAAAAAAAAgUAAAADc3RzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQIAAAANQWRtaW4gYmxvY2tlZAQAAAAKb3JBbXRBc3NldAgIBQAAAAVvcmRlcgAAAAlhc3NldFBhaXIAAAALYW1vdW50QXNzZXQEAAAACm9yQW10QXNTdHIDCQAAAAAAAAIFAAAACm9yQW10QXNzZXQFAAAABHVuaXQCAAAABVdBVkVTCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAACm9yQW10QXNzZXQEAAAACW9yUHJBc3NldAgIBQAAAAVvcmRlcgAAAAlhc3NldFBhaXIAAAAKcHJpY2VBc3NldAQAAAAJb3JQckFzU3RyAwkAAAAAAAACBQAAAAlvclByQXNzZXQFAAAABHVuaXQCAAAABVdBVkVTCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEFAAAACW9yUHJBc3NldAMDCQEAAAACIT0AAAACBQAAAApvckFtdEFzU3RyBQAAAAdhbXRBc0lkBgkBAAAAAiE9AAAAAgUAAAAJb3JQckFzU3RyBQAAAAZwckFzSWQJAAACAAAAAQIAAAAJV3IgYXNzZXRzBAAAAApvcmRlclByaWNlCAUAAAAFb3JkZXIAAAAFcHJpY2UEAAAACHByaWNlRGNtCQAAawAAAAMFAAAABnNjYWxlOAUAAAAHcHJBc0RjbQUAAAAIYW10QXNEY20EAAAADmNhc3RPcmRlclByaWNlCQEAAAAHdG9TY2FsZQAAAAMFAAAACm9yZGVyUHJpY2UFAAAABnNjYWxlOAUAAAAIcHJpY2VEY20EAAAAEWlzT3JkZXJQcmljZVZhbGlkAwkAAAAAAAACCAUAAAAFb3JkZXIAAAAJb3JkZXJUeXBlBQAAAANCdXkJAABnAAAAAgUAAAAIY3VyUHJpY2UFAAAADmNhc3RPcmRlclByaWNlCQAAZwAAAAIFAAAADmNhc3RPcmRlclByaWNlBQAAAAhjdXJQcmljZQYBAAAACWNvbW1vbkdldAAAAAEAAAABaQMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAKMSBwbW50IGV4cAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApwbXRBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAABnBtdEFtdAgFAAAAA3BtdAAAAAZhbW91bnQEAAAAA3JlcwkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEFAAAACnBtdEFzc2V0SWQFAAAABnBtdEFtdAgFAAAAAWkAAAAGY2FsbGVyBAAAAAhvdXRBbUFtdAgFAAAAA3JlcwAAAAJfMQQAAAAIb3V0UHJBbXQIBQAAAANyZXMAAAACXzIEAAAAA3N0cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCAUAAAADcmVzAAAAAl85BAAAAAVzdGF0ZQgFAAAAA3JlcwAAAANfMTADAwkBAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAABgkAAAAAAAACBQAAAANzdHMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABCQABLAAAAAICAAAAD0FkbWluIGJsb2NrZWQ6IAkAAaQAAAABBQAAAANzdHMJAAUXAAAABQUAAAAIb3V0QW1BbXQFAAAACG91dFByQW10BQAAAAZwbXRBbXQFAAAACnBtdEFzc2V0SWQFAAAABXN0YXRlAQAAAAljb21tb25QdXQAAAAJAAAABmNhbGxlcgAAAAR0eElkAAAAB2FtQXNQbXQAAAAHcHJBc1BtdAAAAAhzbGlwcGFnZQAAAAZlbWl0THAAAAAKaXNPbmVBc3NldAAAAAZwbXRBbXQAAAAFcG10SWQEAAAAAXIJAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAwFAAAABHR4SWQFAAAACHNsaXBwYWdlCAkBAAAABXZhbHVlAAAAAQUAAAAHYW1Bc1BtdAAAAAZhbW91bnQICQEAAAAFdmFsdWUAAAABBQAAAAdhbUFzUG10AAAAB2Fzc2V0SWQICQEAAAAFdmFsdWUAAAABBQAAAAdwckFzUG10AAAABmFtb3VudAgJAQAAAAV2YWx1ZQAAAAEFAAAAB3ByQXNQbXQAAAAHYXNzZXRJZAUAAAAGY2FsbGVyBwUAAAAGZW1pdExwBQAAAAppc09uZUFzc2V0BQAAAAZwbXRBbXQFAAAABXBtdElkBAAAAANzdHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAAXIAAAACXzgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAADc3RzBQAAAApQb29sUHV0RGlzBgkAAAAAAAACBQAAAANzdHMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABCQABLAAAAAICAAAACEJsb2NrZWQ6CQABpAAAAAEFAAAAA3N0cwUAAAABcgAAABEAAAABaQEAAAALY29uc3RydWN0b3IAAAACAAAAD2ZhY3RvcnlDb250cmFjdAAAABBtYW5hZ2VyUHVibGljS2V5AwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAABmRlbmllZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAALa2V5RmFjdENudHIAAAAABQAAAA9mYWN0b3J5Q29udHJhY3QJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleU1hblB1YktleQAAAAAFAAAAEG1hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAAAAAFpAQAAAANwdXQAAAACAAAABHNsaXAAAAAJYXV0b1N0YWtlBAAAAAdmYWN0Q2ZnCQEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAEAAAAC3N0YWtpbmdDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAAdmYWN0Q2ZnBQAAAA9pZHhGYWN0U3Rha0NudHICAAAACldyIHN0IGFkZHIEAAAACHNsaXBDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAAdmYWN0Q2ZnBQAAABBpZHhGYWN0U2xpcHBDbnRyAgAAAApXciBzbCBhZGRyAwkAAGYAAAACAAAAAAAAAAAABQAAAARzbGlwCQAAAgAAAAECAAAADldyb25nIHNsaXBwYWdlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAAAwyIHBtbnRzIGV4cGQEAAAABmVzdFB1dAkBAAAACWNvbW1vblB1dAAAAAkJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEFAAAABHNsaXAGBwAAAAAAAAAAAAIAAAAABAAAAAllbWl0THBBbXQIBQAAAAZlc3RQdXQAAAACXzIEAAAACWxwQXNzZXRJZAgFAAAABmVzdFB1dAAAAAJfNwQAAAAFc3RhdGUIBQAAAAZlc3RQdXQAAAACXzkEAAAABmFtRGlmZggFAAAABmVzdFB1dAAAAANfMTAEAAAABnByRGlmZggFAAAABmVzdFB1dAAAAANfMTEEAAAABGFtSWQIBQAAAAZlc3RQdXQAAAADXzEyBAAAAARwcklkCAUAAAAGZXN0UHV0AAAAA18xMwQAAAAHZW1pdEludgkAA/wAAAAEBQAAAA9mYWN0b3J5Q29udHJhY3QCAAAABGVtaXQJAARMAAAAAgUAAAAJZW1pdExwQW10BQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAHZW1pdEludgUAAAAHZW1pdEludgQAAAAMc2xpcHBhZ2VBSW52AwkAAGYAAAACBQAAAAZhbURpZmYAAAAAAAAAAAAJAAP8AAAABAUAAAAIc2xpcENudHICAAAAA3B1dAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAARhbUlkBQAAAAZhbURpZmYFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAxzbGlwcGFnZUFJbnYFAAAADHNsaXBwYWdlQUludgQAAAAMc2xpcHBhZ2VQSW52AwkAAGYAAAACBQAAAAZwckRpZmYAAAAAAAAAAAAJAAP8AAAABAUAAAAIc2xpcENudHICAAAAA3B1dAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAARwcklkBQAAAAZwckRpZmYFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAxzbGlwcGFnZVBJbnYFAAAADHNsaXBwYWdlUEludgQAAAAIbHBUcm5zZnIDBQAAAAlhdXRvU3Rha2UEAAAAC3NscFN0YWtlSW52CQAD/AAAAAQFAAAAC3N0YWtpbmdDbnRyAgAAAAVzdGFrZQUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlscEFzc2V0SWQFAAAACWVtaXRMcEFtdAUAAAADbmlsAwkAAAAAAAACBQAAAAtzbHBTdGFrZUludgUAAAALc2xwU3Rha2VJbnYFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAllbWl0THBBbXQFAAAACWxwQXNzZXRJZAUAAAADbmlsCQAETgAAAAIFAAAABXN0YXRlBQAAAAhscFRybnNmcgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAlwdXRPbmVUa24AAAAFAAAAC2FtQXNzZXRQYXJ0AAAAC3ByQXNzZXRQYXJ0AAAABW91dExwAAAACHNsaXBwYWdlAAAACWF1dG9TdGFrZQQAAAADY2ZnCQEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAEAAAAC3N0YWtpbmdDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAD2lkeEZhY3RTdGFrQ250cgIAAAAKV3Igc3QgYWRkcgQAAAAIc2xpcENudHIJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4RmFjdFNsaXBwQ250cgIAAAAKV3Igc2wgYWRkcgQAAAAHZ3d4Q250cgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABFpZHhGYWN0R3d4UmV3Q250cgIAAAALV3IgZ3d4IGFkZHIEAAAAB3Bvb2xDZmcJAQAAAA1nZXRQb29sQ29uZmlnAAAAAAQAAAAEYW1JZAkAAZEAAAACBQAAAAdwb29sQ2ZnBQAAAAlpZHhBbUFzSWQEAAAABHBySWQJAAGRAAAAAgUAAAAHcG9vbENmZwUAAAAJaWR4UHJBc0lkBAAAAAVhbURjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3Bvb2xDZmcFAAAAC2lkeEFtdEFzRGNtBAAAAAVwckRjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAB3Bvb2xDZmcFAAAADWlkeFByaWNlQXNEY20DAwMDCQAAZwAAAAIAAAAAAAAAAAAFAAAACHNsaXBwYWdlBgkAAGcAAAACAAAAAAAAAAAABQAAAAthbUFzc2V0UGFydAYJAABnAAAAAgAAAAAAAAAAAAUAAAALcHJBc3NldFBhcnQGCQAAZwAAAAIAAAAAAAAAAAAFAAAABW91dExwCQAAAgAAAAECAAAADFdyb25nIHBhcmFtcwMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAALMSBwbW50IGV4cGQEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKcG10QXNzZXRJZAkAAlgAAAABCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAABnBtdEFtdAgFAAAAA3BtdAAAAAZhbW91bnQDAwMJAABmAAAAAgUAAAALYW1Bc3NldFBhcnQFAAAABnBtdEFtdAYJAABmAAAAAgUAAAALcHJBc3NldFBhcnQFAAAABnBtdEFtdAYJAABmAAAAAgAAAAAAAJiWgAUAAAAGcG10QW10CQAAAgAAAAECAAAADVdyb25nIHBtdCBhbXQEAAAACWFtQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAARhbUlkBAAAAAlwckJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEcHJJZAQAAAANJHQwMjM5MDYyNDI4NgMJAAAAAAAAAgUAAAAKcG10QXNzZXRJZAUAAAAEYW1JZAkABRgAAAAGCQAAZQAAAAIFAAAACWFtQmFsYW5jZQUAAAAGcG10QW10BQAAAAlwckJhbGFuY2UJAABlAAAAAgUAAAAGcG10QW10BQAAAAthbUFzc2V0UGFydAUAAAALcHJBc3NldFBhcnQAAAAAAAAAAAAAAAAAAAAAAAADCQAAAAAAAAIFAAAACnBtdEFzc2V0SWQFAAAABHBySWQJAAUYAAAABgUAAAAJYW1CYWxhbmNlCQAAZQAAAAIFAAAACXByQmFsYW5jZQUAAAAGcG10QW10AAAAAAAAAAAAAAAAAAAAAAAACQAAZQAAAAIFAAAABnBtdEFtdAUAAAALcHJBc3NldFBhcnQFAAAAC2FtQXNzZXRQYXJ0CQAAAgAAAAECAAAAEHdyb25nIHBtdEFzc2V0SWQEAAAADGFtQmFsYW5jZU5vdwgFAAAADSR0MDIzOTA2MjQyODYAAAACXzEEAAAADHByQmFsYW5jZU5vdwgFAAAADSR0MDIzOTA2MjQyODYAAAACXzIEAAAADHZpcnRTd2FwSW5BbQgFAAAADSR0MDIzOTA2MjQyODYAAAACXzMEAAAADXZpcnRTd2FwT3V0UHIIBQAAAA0kdDAyMzkwNjI0Mjg2AAAAAl80BAAAAAx2aXJ0U3dhcEluUHIIBQAAAA0kdDAyMzkwNjI0Mjg2AAAAAl81BAAAAA12aXJ0U3dhcE91dEFtCAUAAAANJHQwMjM5MDYyNDI4NgAAAAJfNgQAAAACRDAJAAP8AAAABAUAAAAHZ3d4Q250cgIAAAAFY2FsY0QJAARMAAAAAgkAAaQAAAABBQAAAAxhbUJhbGFuY2VOb3cJAARMAAAAAgkAAaQAAAABBQAAAAxwckJhbGFuY2VOb3cJAARMAAAAAgUAAAABQQkABEwAAAACBQAAAAVBbXVsdAkABEwAAAACBQAAAAVEY29udgUAAAADbmlsBQAAAANuaWwEAAAAAkQxCQAD/AAAAAQFAAAAB2d3eENudHICAAAABWNhbGNECQAETAAAAAIJAAGmAAAAAQkAATYAAAABCQAAZQAAAAIJAABkAAAAAgUAAAAMYW1CYWxhbmNlTm93BQAAAAx2aXJ0U3dhcEluQW0FAAAADXZpcnRTd2FwT3V0QW0JAARMAAAAAgkAAaYAAAABCQABNgAAAAEJAABlAAAAAgkAAGQAAAACBQAAAAxwckJhbGFuY2VOb3cFAAAADHZpcnRTd2FwSW5QcgUAAAANdmlydFN3YXBPdXRQcgkABEwAAAACBQAAAAFBCQAETAAAAAIFAAAABUFtdWx0CQAETAAAAAIFAAAABURjb252BQAAAANuaWwFAAAAA25pbAQAAAAGRDB2c0QxCQEAAAAJdmFsaWRhdGVEAAAAAwkAAacAAAABCQEAAAAIYXNTdHJpbmcAAAABBQAAAAJEMQkAAacAAAABCQEAAAAIYXNTdHJpbmcAAAABBQAAAAJEMAUAAAAKc2xpcHBhZ2U0RAMJAAAAAAAAAgUAAAAGRDB2c0QxBQAAAAZEMHZzRDEEAAAABmVzdFB1dAkBAAAACWNvbW1vblB1dAAAAAkJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCQACWQAAAAEFAAAABGFtSWQFAAAAC2FtQXNzZXRQYXJ0CQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkAAlkAAAABBQAAAARwcklkBQAAAAtwckFzc2V0UGFydAUAAAAIc2xpcHBhZ2UGBgUAAAAGcG10QW10BQAAAApwbXRBc3NldElkBAAAAAdlc3RpbUxQCAUAAAAGZXN0UHV0AAAAAl8yBAAAAAlscEFzc2V0SWQIBQAAAAZlc3RQdXQAAAACXzcEAAAABXN0YXRlCAUAAAAGZXN0UHV0AAAAAl85BAAAAAZhbURpZmYIBQAAAAZlc3RQdXQAAAADXzEwBAAAAAZwckRpZmYIBQAAAAZlc3RQdXQAAAADXzExBAAAAAlscENhbGNSZXMJAQAAAA92YWxpZGF0ZUFic0RpZmYAAAADCQABNgAAAAEFAAAAB2VzdGltTFAJAAE2AAAAAQUAAAAFb3V0THAJAAE2AAAAAQUAAAAIc2xpcHBhZ2UEAAAACWVtaXRMcEFtdAkAAaAAAAABCAUAAAAJbHBDYWxjUmVzAAAAAl8yBAAAAAdlbWl0SW52CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEZW1pdAkABEwAAAACBQAAAAllbWl0THBBbXQFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAdlbWl0SW52BQAAAAdlbWl0SW52BAAAAAxzbGlwcGFnZUFJbnYDCQAAZgAAAAIFAAAABmFtRGlmZgAAAAAAAAAAAAkAA/wAAAAEBQAAAAhzbGlwQ250cgIAAAADcHV0BQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIJAAJZAAAAAQUAAAAEYW1JZAUAAAAGYW1EaWZmBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAMc2xpcHBhZ2VBSW52BQAAAAxzbGlwcGFnZUFJbnYEAAAADHNsaXBwYWdlUEludgMJAABmAAAAAgUAAAAGcHJEaWZmAAAAAAAAAAAACQAD/AAAAAQFAAAACHNsaXBDbnRyAgAAAANwdXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgkAAlkAAAABBQAAAARwcklkBQAAAAZwckRpZmYFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAAAxzbGlwcGFnZVBJbnYFAAAADHNsaXBwYWdlUEludgQAAAAIbHBUcm5zZnIDBQAAAAlhdXRvU3Rha2UEAAAAC3NscFN0YWtlSW52CQAD/AAAAAQFAAAAC3N0YWtpbmdDbnRyAgAAAAVzdGFrZQUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAAlscEFzc2V0SWQFAAAACWVtaXRMcEFtdAUAAAADbmlsAwkAAAAAAAACBQAAAAtzbHBTdGFrZUludgUAAAALc2xwU3Rha2VJbnYFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAllbWl0THBBbXQFAAAACWxwQXNzZXRJZAUAAAADbmlsCQAETgAAAAIFAAAABXN0YXRlBQAAAAhscFRybnNmcgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAKcHV0Rm9yRnJlZQAAAAEAAAAHbWF4U2xwZwMJAABmAAAAAgAAAAAAAAAAAAUAAAAHbWF4U2xwZwkAAAIAAAABAgAAAApXcm9uZyBzbHBnAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAgkAAAIAAAABAgAAAAwyIHBtbnRzIGV4cGQEAAAABmVzdFB1dAkBAAAACWNvbW1vblB1dAAAAAkJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAdhc3NldElkCAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAAAAAZhbW91bnQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEFAAAAB21heFNscGcHBwAAAAAAAAAAAAIAAAAACAUAAAAGZXN0UHV0AAAAAl85AAAAAWkBAAAAA2dldAAAAAAEAAAAA3JlcwkBAAAACWNvbW1vbkdldAAAAAEFAAAAAWkEAAAACW91dEFtdEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAIb3V0UHJBbXQIBQAAAANyZXMAAAACXzIEAAAABnBtdEFtdAgFAAAAA3JlcwAAAAJfMwQAAAAKcG10QXNzZXRJZAgFAAAAA3JlcwAAAAJfNAQAAAAFc3RhdGUIBQAAAANyZXMAAAACXzUEAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAEYnVybgkABEwAAAACBQAAAAZwbXRBbXQFAAAAA25pbAkABEwAAAACCQEAAAAPQXR0YWNoZWRQYXltZW50AAAAAgUAAAAKcG10QXNzZXRJZAUAAAAGcG10QW10BQAAAANuaWwDCQAAAAAAAAIFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACWdldE9uZVRrbgAAAAUAAAAKZXhjaFJlc3VsdAAAAAdub3RVc2VkAAAACW91dEFtb3VudAAAAApvdXRBc3NldElkAAAACHNsaXBwYWdlAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAAsxIHBtbnQgZXhwZAQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAABGxwSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAABGFtSWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhBbUFzSWQEAAAABHBySWQJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhQckFzSWQEAAAABWFtRGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAtpZHhBbXRBc0RjbQQAAAAFcHJEY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFByaWNlQXNEY20EAAAAA3N0cwkAAZEAAAACBQAAAANjZmcFAAAACWlkeFBvb2xTdAQAAAAEZmNmZwkBAAAAEGdldEZhY3RvcnlDb25maWcAAAAABAAAAAdnd3hDbnRyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkAAZEAAAACBQAAAARmY2ZnBQAAABFpZHhGYWN0R3d4UmV3Q250cgIAAAAKV3Igc2wgYWRkcgQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAt1c2VyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyBAAAAAZ0eElkNTgJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAKcG10QXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAZwbXRBbXQIBQAAAANwbXQAAAAGYW1vdW50AwkAAGYAAAACAAAAAAA7msoABQAAAAZwbXRBbXQJAAACAAAAAQIAAAAUTWluIHBheW1lbnQgaXMgMTAgTFADAwMJAABmAAAAAgAAAAAAAAAAAAUAAAAIc2xpcHBhZ2UGCQAAZgAAAAIAAAAAAAAAAAAFAAAACmV4Y2hSZXN1bHQGCQAAZgAAAAIAAAAAAAAAAAAFAAAACW91dEFtb3VudAkAAAIAAAABAgAAAAxXcm9uZyBwYXJhbXMDCQEAAAACIT0AAAACBQAAAARscElkCQACWAAAAAEFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAAIV3JvbmcgTFAEAAAAAXIJAQAAABRlc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABBQAAAApwbXRBc3NldElkBQAAAAZwbXRBbXQIBQAAAAFpAAAABmNhbGxlcgQAAAAKZXN0aW1BbUFtdAgFAAAAAXIAAAACXzEEAAAACmVzdGltUHJBbXQIBQAAAAFyAAAAAl8yBAAAAAlhbUJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAEYW1JZAQAAAAJcHJCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAABHBySWQEAAAADSR0MDI4NzgwMjkyMzcDCQAAAAAAAAIFAAAACm91dEFzc2V0SWQFAAAABGFtSWQJAAUZAAAABwkAAGUAAAACBQAAAAlhbUJhbGFuY2UFAAAACmVzdGltQW1BbXQJAABlAAAAAgUAAAAJcHJCYWxhbmNlBQAAAAplc3RpbVByQW10BQAAAApleGNoUmVzdWx0BQAAAAplc3RpbVByQW10AAAAAAAAAAAAAAAAAAAAAAAACQAAZAAAAAIFAAAACmVzdGltQW1BbXQFAAAACmV4Y2hSZXN1bHQDCQAAAAAAAAIFAAAACm91dEFzc2V0SWQFAAAABHBySWQJAAUZAAAABwkAAGUAAAACBQAAAAlhbUJhbGFuY2UFAAAACmVzdGltQW1BbXQJAABlAAAAAgUAAAAJcHJCYWxhbmNlBQAAAAplc3RpbVByQW10AAAAAAAAAAAAAAAAAAAAAAAABQAAAApleGNoUmVzdWx0BQAAAAplc3RpbUFtQW10CQAAZAAAAAIFAAAACmVzdGltUHJBbXQFAAAACmV4Y2hSZXN1bHQJAAACAAAAAQIAAAAQd3Jvbmcgb3V0QXNzZXRJZAQAAAAMYW1CYWxhbmNlTm93CAUAAAANJHQwMjg3ODAyOTIzNwAAAAJfMQQAAAAMcHJCYWxhbmNlTm93CAUAAAANJHQwMjg3ODAyOTIzNwAAAAJfMgQAAAAMdmlydFN3YXBJbkFtCAUAAAANJHQwMjg3ODAyOTIzNwAAAAJfMwQAAAANdmlydFN3YXBPdXRQcggFAAAADSR0MDI4NzgwMjkyMzcAAAACXzQEAAAADHZpcnRTd2FwSW5QcggFAAAADSR0MDI4NzgwMjkyMzcAAAACXzUEAAAADXZpcnRTd2FwT3V0QW0IBQAAAA0kdDAyODc4MDI5MjM3AAAAAl82BAAAAAh0b3RhbEdldAgFAAAADSR0MDI4NzgwMjkyMzcAAAACXzcDAwkAAGYAAAACAAAAAAAAAAAABQAAAAx2aXJ0U3dhcEluQW0GCQAAZgAAAAIAAAAAAAAAAAAFAAAADHZpcnRTd2FwSW5QcgkAAAIAAAABAgAAAApXcm9uZyBjYWxjBAAAAAJEMAkAA/wAAAAEBQAAAAdnd3hDbnRyAgAAAAVjYWxjRAkABEwAAAACCQABpAAAAAEFAAAADGFtQmFsYW5jZU5vdwkABEwAAAACCQABpAAAAAEFAAAADHByQmFsYW5jZU5vdwkABEwAAAACBQAAAAFBCQAETAAAAAIFAAAABUFtdWx0CQAETAAAAAIFAAAABURjb252BQAAAANuaWwFAAAAA25pbAQAAAACRDEJAAP8AAAABAUAAAAHZ3d4Q250cgIAAAAFY2FsY0QJAARMAAAAAgkAAaQAAAABCQAAZAAAAAIJAABlAAAAAgUAAAAMYW1CYWxhbmNlTm93BQAAAAx2aXJ0U3dhcEluQW0FAAAADXZpcnRTd2FwT3V0QW0JAARMAAAAAgkAAaQAAAABCQAAZQAAAAIJAABkAAAAAgUAAAAMcHJCYWxhbmNlTm93BQAAAA12aXJ0U3dhcE91dFByBQAAAAx2aXJ0U3dhcEluUHIJAARMAAAAAgUAAAABQQkABEwAAAACBQAAAAVBbXVsdAkABEwAAAACBQAAAAVEY29udgUAAAADbmlsBQAAAANuaWwEAAAABkQwdnNEMQkBAAAACXZhbGlkYXRlRAAAAAMJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAACRDEJAAGnAAAAAQkBAAAACGFzU3RyaW5nAAAAAQUAAAACRDAFAAAACnNsaXBwYWdlNEQDCQAAAAAAAAIFAAAABkQwdnNEMQUAAAAGRDB2c0QxBAAAAA1hbW91bnQyUmV0dXJuCQEAAAAPdmFsaWRhdGVBYnNEaWZmAAAAAwkAATYAAAABBQAAAAh0b3RhbEdldAkAATYAAAABBQAAAAlvdXRBbW91bnQJAAE2AAAAAQUAAAAIc2xpcHBhZ2UDCQAAAAAAAAIFAAAADWFtb3VudDJSZXR1cm4FAAAADWFtb3VudDJSZXR1cm4EAAAADSR0MDI5OTc2MzAwOTADCQAAAAAAAAIFAAAACm91dEFzc2V0SWQFAAAABGFtSWQJAAUUAAAAAgkAAaAAAAABCAUAAAANYW1vdW50MlJldHVybgAAAAJfMgAAAAAAAAAAAAkABRQAAAACAAAAAAAAAAAACQABoAAAAAEIBQAAAA1hbW91bnQyUmV0dXJuAAAAAl8yBAAAAAVvdXRBbQgFAAAADSR0MDI5OTc2MzAwOTAAAAACXzEEAAAABW91dFByCAUAAAANJHQwMjk5NzYzMDA5MAAAAAJfMgQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACCQEAAAAFdG9YMTgAAAACBQAAAAlwckJhbGFuY2UFAAAABXByRGNtCQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAABWFtRGNtBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4BAAAAAVzdGF0ZQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwkAAGQAAAACBQAAAAVvdXRBbQUAAAAFb3V0UHIDCQAAAAAAAAIFAAAACm91dEFzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAACm91dEFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUdldEFjdGlvbkJ5VXNlcgAAAAIJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MFAAAABnR4SWQ1OAkBAAAAEWRhdGFHZXRBY3Rpb25JbmZvAAAABgUAAAAFb3V0QW0FAAAABW91dFByBQAAAAZwbXRBbXQFAAAACGN1clByaWNlBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAAUAAAAIY3VyUHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAACBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAhjdXJQcmljZQUAAAADbmlsAwkAAAAAAAACBQAAAAVzdGF0ZQUAAAAFc3RhdGUEAAAABGJ1cm4JAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARidXJuCQAETAAAAAIFAAAABnBtdEFtdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApwbXRBc3NldElkBQAAAAZwbXRBbXQFAAAAA25pbAMJAAAAAAAAAgUAAAAEYnVybgUAAAAEYnVybgUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACWdldE5vTGVzcwAAAAIAAAASbm9MZXNzVGhlbkFtdEFzc2V0AAAAFG5vTGVzc1RoZW5QcmljZUFzc2V0BAAAAANyZXMJAQAAAAljb21tb25HZXQAAAABBQAAAAFpBAAAAAhvdXRBbUFtdAgFAAAAA3JlcwAAAAJfMQQAAAAIb3V0UHJBbXQIBQAAAANyZXMAAAACXzIEAAAABnBtdEFtdAgFAAAAA3JlcwAAAAJfMwQAAAAKcG10QXNzZXRJZAgFAAAAA3JlcwAAAAJfNAQAAAAFc3RhdGUIBQAAAANyZXMAAAACXzUDCQAAZgAAAAIFAAAAEm5vTGVzc1RoZW5BbXRBc3NldAUAAAAIb3V0QW1BbXQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJRmFpbGVkOiAgCQABpAAAAAEFAAAACG91dEFtQW10AgAAAAMgPCAJAAGkAAAAAQUAAAASbm9MZXNzVGhlbkFtdEFzc2V0AwkAAGYAAAACBQAAABRub0xlc3NUaGVuUHJpY2VBc3NldAUAAAAIb3V0UHJBbXQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIRmFpbGVkOiAJAAGkAAAAAQUAAAAIb3V0UHJBbXQCAAAAAyA8IAkAAaQAAAABBQAAABRub0xlc3NUaGVuUHJpY2VBc3NldAQAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkJAAP8AAAABAUAAAAPZmFjdG9yeUNvbnRyYWN0AgAAAARidXJuCQAETAAAAAIFAAAABnBtdEFtdAUAAAADbmlsCQAETAAAAAIJAQAAAA9BdHRhY2hlZFBheW1lbnQAAAACBQAAAApwbXRBc3NldElkBQAAAAZwbXRBbXQFAAAAA25pbAMJAAAAAAAAAgUAAAAUYnVybkxQQXNzZXRPbkZhY3RvcnkFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAAAVzdGF0ZQkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAANdW5zdGFrZUFuZEdldAAAAAEAAAAGYW1vdW50BAAAAA1jaGVja1BheW1lbnRzAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAAA1ObyBwbW50cyBleHBkBgMJAAAAAAAAAgUAAAANY2hlY2tQYXltZW50cwUAAAANY2hlY2tQYXltZW50cwQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACmZhY3RvcnlDZmcJAQAAABBnZXRGYWN0b3J5Q29uZmlnAAAAAAQAAAAJbHBBc3NldElkCQACWQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAAlpZHhMUEFzSWQEAAAAB3N0YWtpbmcJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAD2lkeEZhY3RTdGFrQ250cgIAAAAKV3Igc3QgYWRkcgQAAAAKdW5zdGFrZUludgkAA/wAAAAEBQAAAAdzdGFraW5nAgAAAAd1bnN0YWtlCQAETAAAAAIJAAJYAAAAAQUAAAAJbHBBc3NldElkCQAETAAAAAIFAAAABmFtb3VudAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACnVuc3Rha2VJbnYFAAAACnVuc3Rha2VJbnYEAAAAAXIJAQAAABRlc3RpbWF0ZUdldE9wZXJhdGlvbgAAAAQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkAAlgAAAABBQAAAAlscEFzc2V0SWQFAAAABmFtb3VudAgFAAAAAWkAAAAGY2FsbGVyBAAAAANzdHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAAXIAAAACXzkEAAAABXN0YXRlCAUAAAABcgAAAANfMTAEAAAAAXYDAwkBAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAABgkAAAAAAAACBQAAAANzdHMFAAAADFBvb2xTaHV0ZG93bgkAAAIAAAABCQABLAAAAAICAAAACUJsb2NrZWQ6IAkAAaQAAAABBQAAAANzdHMGAwkAAAAAAAACBQAAAAF2BQAAAAF2BAAAABRidXJuTFBBc3NldE9uRmFjdG9yeQkAA/wAAAAEBQAAAA9mYWN0b3J5Q29udHJhY3QCAAAABGJ1cm4JAARMAAAAAgUAAAAGYW1vdW50BQAAAANuaWwJAARMAAAAAgkBAAAAD0F0dGFjaGVkUGF5bWVudAAAAAIFAAAACWxwQXNzZXRJZAUAAAAGYW1vdW50BQAAAANuaWwDCQAAAAAAAAIFAAAAFGJ1cm5MUEFzc2V0T25GYWN0b3J5BQAAABRidXJuTFBBc3NldE9uRmFjdG9yeQUAAAAFc3RhdGUJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACGFjdGl2YXRlAAAAAgAAAAthbXRBc3NldFN0cgAAAA1wcmljZUFzc2V0U3RyAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIJAAQlAAAAAQUAAAAPZmFjdG9yeUNvbnRyYWN0CQAAAgAAAAECAAAABmRlbmllZAkABRQAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlBbXRBc3NldAAAAAAFAAAAC2FtdEFzc2V0U3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAUAAAANcHJpY2VBc3NldFN0cgUAAAADbmlsAgAAAAdzdWNjZXNzAAAAAWkBAAAAHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkAAAAACQAFFAAAAAIFAAAAA25pbAkBAAAADWdldFBvb2xDb25maWcAAAAAAAAAAWkBAAAAHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkAAAABAAAAB2Fzc2V0SWQJAAUUAAAAAgUAAAADbmlsCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAAB2Fzc2V0SWQAAAABaQEAAAAZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQAAAAMAAAAFYW1BbXQAAAAFcHJBbXQAAAAFbHBBbXQEAAAABnByaWNlcwkBAAAACmNhbGNQcmljZXMAAAADBQAAAAVhbUFtdAUAAAAFcHJBbXQFAAAABWxwQW10CQAFFAAAAAIFAAAAA25pbAkABEwAAAACCQABpgAAAAEJAAGRAAAAAgUAAAAGcHJpY2VzAAAAAAAAAAAACQAETAAAAAIJAAGmAAAAAQkAAZEAAAACBQAAAAZwcmljZXMAAAAAAAAAAAEJAARMAAAAAgkAAaYAAAABCQABkQAAAAIFAAAABnByaWNlcwAAAAAAAAAAAgUAAAADbmlsAAAAAWkBAAAAFmZyb21YMThXcmFwcGVyUkVBRE9OTFkAAAACAAAAA3ZhbAAAAA9yZXN1bHRTY2FsZU11bHQJAAUUAAAAAgUAAAADbmlsCQEAAAAHZnJvbVgxOAAAAAIJAAGnAAAAAQUAAAADdmFsBQAAAA9yZXN1bHRTY2FsZU11bHQAAAABaQEAAAAUdG9YMThXcmFwcGVyUkVBRE9OTFkAAAACAAAAB29yaWdWYWwAAAANb3JpZ1NjYWxlTXVsdAkABRQAAAACBQAAAANuaWwJAAGmAAAAAQkBAAAABXRvWDE4AAAAAgUAAAAHb3JpZ1ZhbAUAAAANb3JpZ1NjYWxlTXVsdAAAAAFpAQAAAB5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkAAAACAAAACHByQW10WDE4AAAACGFtQW10WDE4CQAFFAAAAAIFAAAAA25pbAkAAaYAAAABCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgkAAacAAAABBQAAAAhwckFtdFgxOAkAAacAAAABBQAAAAhhbUFtdFgxOAAAAAFpAQAAACNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQAAAAkAAAAGdHhJZDU4AAAACHNsaXBwYWdlAAAAB2luQW1BbXQAAAAGaW5BbUlkAAAAB2luUHJBbXQAAAAGaW5QcklkAAAAB3VzckFkZHIAAAAGaXNFdmFsAAAABmVtaXRMcAkABRQAAAACBQAAAANuaWwJAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAwFAAAABnR4SWQ1OAUAAAAIc2xpcHBhZ2UFAAAAB2luQW1BbXQFAAAABmluQW1JZAUAAAAHaW5QckFtdAUAAAAGaW5QcklkBQAAAAd1c3JBZGRyBQAAAAZpc0V2YWwFAAAABmVtaXRMcAcAAAAAAAAAAAACAAAAAAAAAAFpAQAAACNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQAAAAQAAAAGdHhJZDU4AAAAB3BtdEFzSWQAAAAIcG10THBBbXQAAAAHdXNyQWRkcgQAAAADcmVzCQEAAAAUZXN0aW1hdGVHZXRPcGVyYXRpb24AAAAEBQAAAAZ0eElkNTgFAAAAB3BtdEFzSWQFAAAACHBtdExwQW10CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAd1c3JBZGRyCQAFFAAAAAIFAAAAA25pbAkABRwAAAAKCAUAAAADcmVzAAAAAl8xCAUAAAADcmVzAAAAAl8yCAUAAAADcmVzAAAAAl8zCAUAAAADcmVzAAAAAl80CAUAAAADcmVzAAAAAl81CAUAAAADcmVzAAAAAl82CAUAAAADcmVzAAAAAl83CQABpgAAAAEIBQAAAANyZXMAAAACXzgIBQAAAANyZXMAAAACXzkIBQAAAANyZXMAAAADXzEwAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABU9yZGVyBAAAAAVvcmRlcgUAAAAHJG1hdGNoMAQAAAAHbXRjaFB1YgkBAAAAE2dldE1hdGNoZXJQdWJPckZhaWwAAAAABAAAAANvclYJAQAAABt2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQAAAABBQAAAAVvcmRlcgQAAAAFc25kclYJAAH0AAAAAwgFAAAABW9yZGVyAAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAAFb3JkZXIAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAAFb3JkZXIAAAAPc2VuZGVyUHVibGljS2V5BAAAAAVtdGNoVgkAAfQAAAADCAUAAAAFb3JkZXIAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAVvcmRlcgAAAAZwcm9vZnMAAAAAAAAAAAEFAAAAB210Y2hQdWIDAwMFAAAAA29yVgUAAAAFc25kclYHBQAAAAVtdGNoVgcGCQEAAAAPdGhyb3dPcmRlckVycm9yAAAAAwUAAAADb3JWBQAAAAVzbmRyVgUAAAAFbXRjaFYEAAAABWFkbWluCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAQAAAAxrZXlNYW5QdWJLZXkAAAAABQAAAAVFTVBUWQMJAAAAAAAAAgUAAAAFYWRtaW4FAAAABUVNUFRZCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAJAAJZAAAAAQUAAAAFYWRtaW4+r0qv", "chainId": 87, "height": 2922137, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Fe7Ka9m3tcN3WUMrGxmQGWofdsPGBC5AH1kFWSnGYSUy Next: 2WVpzTCmhvLfBtoS6Mm28z8Fyp1LTpg1UHAskLwH8Knf Diff:
OldNewDifferences
1111
1212 let e = toBigInt(1)
1313
14-let f = "100"
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = "1"
16+let g = "100"
1717
18-let h = "__"
18+let h = "1"
1919
20-let i = ""
20+let i = "__"
2121
22-let j = 1
22+let j = ""
2323
24-let k = 2
24+let k = 1
2525
26-let l = 3
26+let l = 2
2727
28-let m = 4
28+let m = 3
2929
30-let n = 1
30+let n = 4
3131
32-let o = 2
32+let o = 1
3333
34-let p = 3
34+let p = 2
3535
36-let q = 4
36+let q = 3
3737
38-let r = 5
38+let r = 4
3939
40-let s = 6
40+let s = 5
4141
42-let t = 7
42+let t = 6
4343
44-let u = 8
44+let u = 7
4545
46-let v = 9
46+let v = 8
4747
48-let w = 1
48+let w = 9
4949
50-let x = 7
50+let x = 1
5151
52-let y = 10
52+let y = 7
5353
54-func z (A,B) = fraction(toBigInt(A), c, toBigInt(B))
54+let z = 10
55+
56+func A (B,C) = fraction(toBigInt(B), c, toBigInt(C))
5557
5658
57-func C (D,E) = toInt(fraction(D, toBigInt(E), c))
59+func D (E,F) = toInt(fraction(E, toBigInt(F), c))
5860
5961
60-func F (G,H,I) = fraction(G, H, I)
62+func G (H,I,J) = fraction(H, I, J)
6163
6264
63-func J (D) = if ((d > D))
64- then -(D)
65- else D
65+func K (E) = if ((d > E))
66+ then -(E)
67+ else E
6668
6769
68-func K () = "%s__factoryContract"
70+func L () = "%s__factoryContract"
6971
7072
71-func L () = "%s__managerPublicKey"
73+func M () = "%s__managerPublicKey"
7274
7375
74-func M () = "%s%s__price__last"
76+func N () = "%s%s__price__last"
7577
7678
77-func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
79+func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], i)
7880
7981
80-func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
82+func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
8183
8284
83-func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
85+func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
8486
8587
86-func U () = "%s__amountAsset"
88+func V () = "%s__amountAsset"
8789
8890
89-func V () = "%s__priceAsset"
91+func W () = "%s__priceAsset"
9092
9193
92-func W () = "%s__amp"
94+func X () = "%s__amp"
9395
9496
95-func X () = "%s__factoryConfig"
97+func Y () = "%s__factoryConfig"
9698
9799
98-func Y () = "%s%s__matcher__publicKey"
100+func Z () = "%s%s__matcher__publicKey"
99101
100102
101-func Z (aa,ab) = (((("%d%d%s__" + aa) + "__") + ab) + "__config")
103+func aa (ab,ac) = (((("%d%d%s__" + ab) + "__") + ac) + "__config")
102104
103105
104-func ac (ad) = ("%s%s%s__mappings__baseAsset2internalId__" + ad)
106+func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
105107
106108
107-func ae () = "%s__shutdown"
109+func af () = "%s__shutdown"
108110
109111
110-func af (ag) = ("%s%s__poolWeight__" + ag)
112+func ag (ah) = ("%s%s__poolWeight__" + ah)
111113
112114
113-func ah (ai,aj,ak) = throw(((((("Failed: orderValid=" + toString(ai)) + " senderValid=") + toString(aj)) + " matcherValid=") + toString(ak)))
115+func ai (aj,ak,al) = throw(((((("Failed: ordValid=" + toString(aj)) + " sndrValid=") + toString(ak)) + " mtchrValid=") + toString(al)))
114116
115117
116-func al (D) = {
117- let am = D
118- if ($isInstanceOf(am, "String"))
118+func am (E) = {
119+ let an = E
120+ if ($isInstanceOf(an, "String"))
119121 then {
120- let an = am
121- an
122+ let ao = an
123+ ao
122124 }
123125 else throw("fail cast to String")
124126 }
125127
126128
127-func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
129+func ap (aq,ar) = valueOrErrorMessage(getString(aq, ar), makeString(["mandatory ", toString(aq), ".", ar, " not defined"], ""))
128130
129131
130-func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
132+func as (aq,ar) = valueOrErrorMessage(getInteger(aq, ar), makeString(["mandatory ", toString(aq), ".", ar, " not defined"], ""))
131133
132134
133-let as = addressFromStringValue(ao(this, K()))
135+let at = addressFromStringValue(ap(this, L()))
134136
135-let at = ao(this, W())
137+let au = ap(this, X())
136138
137-func au () = valueOrElse(getBoolean(as, ae()), false)
139+func av () = valueOrElse(getBoolean(at, af()), false)
138140
139141
140-func av () = fromBase58String(ao(as, Y()))
142+func aw () = fromBase58String(ap(at, Z()))
141143
142144
143-func aw () = {
144- let ax = ao(this, U())
145- let ay = ao(this, V())
146- let az = ar(as, ac(ay))
147- let aa = ar(as, ac(ax))
148- split(ao(as, Z(toString(aa), toString(az))), h)
145+func ax () = {
146+ let ay = ap(this, V())
147+ let az = ap(this, W())
148+ let aA = as(at, ad(az))
149+ let ab = as(at, ad(ay))
150+ split(ap(at, aa(toString(ab), toString(aA))), i)
149151 }
150152
151153
152-func aA () = split(ao(as, X()), h)
154+func aB () = split(ap(at, Y()), i)
153155
154156
155-func aB (aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL)], h)
157+func aC (aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM)], i)
156158
157159
158-func aM (aN,aO,aP,aF,aI,aJ) = makeString(["%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aF), toString(aI), toString(aJ)], h)
160+func aN (aO,aP,aQ,aG,aJ,aK) = makeString(["%d%d%d%d%d%d", toString(aO), toString(aP), toString(aQ), toString(aG), toString(aJ), toString(aK)], i)
159161
160162
161-func aQ (aR) = if ((aR == "WAVES"))
163+func aR (aS) = if ((aS == "WAVES"))
162164 then wavesBalance(this).available
163- else assetBalance(this, fromBase58String(aR))
165+ else assetBalance(this, fromBase58String(aS))
164166
165167
166-func aS (aT,aU) = fraction(aT, c, aU)
168+func aT (aU,aV) = fraction(aU, c, aV)
167169
168170
169-func aV (aW,aX,aY) = {
170- let aZ = fraction((aW - aX), b, aX)
171- let ba = ((aY - J(aZ)) > d)
172- if (!(ba))
173- then throw(((("Too big slippage: " + toString(aZ)) + " vs ") + toString(aY)))
174- else $Tuple2(ba, min([aW, aX]))
171+func aW (aX,aY,aZ) = {
172+ let ba = fraction((aX - aY), b, aY)
173+ let bb = ((aZ - K(ba)) > d)
174+ if (!(bb))
175+ then throw(("Big slpg: " + toString(ba)))
176+ else $Tuple2(bb, min([aX, aY]))
175177 }
176178
177179
178-func bb (bc,bd,be,bf) = {
179- let bg = z(be, bc)
180- let bh = z(bf, bd)
181- aS(bh, bg)
180+func bc (bd,be,bf) = {
181+ let ba = fraction(be, b, bd)
182+ let bg = (bf > ba)
183+ if (if (bg)
184+ then true
185+ else (be > bd))
186+ then throw(((((((toString(be) + " ") + toString(bd)) + " ") + toString(ba)) + " ") + toString(bf)))
187+ else bg
182188 }
183189
184190
185-func bi (be,bf,bj) = {
186- let bk = aw()
187- let bl = parseIntValue(bk[s])
188- let bm = parseIntValue(bk[t])
189- let bn = bb(bl, bm, be, bf)
190- let aU = z(be, bl)
191- let aT = z(bf, bm)
192- let bo = z(bj, a)
193- let bp = aS(aU, bo)
194- let bq = aS(aT, bo)
195-[bn, bp, bq]
191+func bh (bi,bj,bk,bl) = {
192+ let bm = A(bk, bi)
193+ let bn = A(bl, bj)
194+ aT(bn, bm)
196195 }
197196
198197
199-func br (be,bf,bj) = {
200- let bs = bi(be, bf, bj)
201-[C(bs[0], a), C(bs[1], a), C(bs[2], a)]
198+func bo (bk,bl,bp) = {
199+ let bq = ax()
200+ let br = parseIntValue(bq[t])
201+ let bs = parseIntValue(bq[u])
202+ let bt = bh(br, bs, bk, bl)
203+ let aV = A(bk, br)
204+ let aU = A(bl, bs)
205+ let bu = A(bp, a)
206+ let bv = aT(aV, bu)
207+ let bw = aT(aU, bu)
208+[bt, bv, bw]
202209 }
203210
204211
205-func bt (bu,bv,bw,bx) = {
206- let bk = aw()
207- let by = bk[p]
208- let bz = bk[q]
209- let bA = bk[r]
210- let bB = parseIntValue(bk[s])
211- let bC = parseIntValue(bk[t])
212- let bD = bk[o]
213- let bE = valueOrErrorMessage(assetInfo(fromBase58String(by)), "Invalid LP id").quantity
214- if ((by != bv))
215- then throw("Invalid pmt asset")
212+func bx (bk,bl,bp) = {
213+ let ah = bo(bk, bl, bp)
214+[D(ah[0], a), D(ah[1], a), D(ah[2], a)]
215+ }
216+
217+
218+func by (bz,bA,bB,bC) = {
219+ let bq = ax()
220+ let bD = bq[q]
221+ let bE = bq[r]
222+ let bF = bq[s]
223+ let bG = parseIntValue(bq[t])
224+ let bH = parseIntValue(bq[u])
225+ let bI = bq[p]
226+ let bJ = valueOrErrorMessage(assetInfo(fromBase58String(bD)), "Wrong LP id").quantity
227+ if ((bD != bA))
228+ then throw("Wrong pmt asset")
216229 else {
217- let bF = aQ(bz)
218- let bG = z(bF, bB)
219- let bH = aQ(bA)
220- let bI = z(bH, bC)
221- let bJ = aS(bI, bG)
222- let bK = C(bJ, a)
223- let bL = z(bw, a)
224- let bM = z(bE, a)
225- let bN = fraction(bG, bL, bM)
226- let bO = fraction(bI, bL, bM)
227- let bP = C(bN, bB)
228- let bQ = C(bO, bC)
229- let bR = if ((bu == ""))
230+ let bK = aR(bE)
231+ let bL = A(bK, bG)
232+ let bM = aR(bF)
233+ let bN = A(bM, bH)
234+ let bO = aT(bN, bL)
235+ let bP = D(bO, a)
236+ let bQ = A(bB, a)
237+ let bR = A(bJ, a)
238+ let bS = fraction(bL, bQ, bR)
239+ let bT = fraction(bN, bQ, bR)
240+ let bU = D(bS, bG)
241+ let bV = D(bT, bH)
242+ let bW = if ((bz == ""))
230243 then nil
231- else [ScriptTransfer(bx, bP, if ((bz == "WAVES"))
244+ else [ScriptTransfer(bC, bU, if ((bE == "WAVES"))
232245 then unit
233- else fromBase58String(bz)), ScriptTransfer(bx, bQ, if ((bA == "WAVES"))
246+ else fromBase58String(bE)), ScriptTransfer(bC, bV, if ((bF == "WAVES"))
234247 then unit
235- else fromBase58String(bA)), StringEntry(T(toString(bx), bu), aM(bP, bQ, bw, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
236- $Tuple10(bP, bQ, bz, bA, bF, bH, bE, bJ, bD, bR)
248+ else fromBase58String(bF)), StringEntry(U(toString(bC), bz), aN(bU, bV, bB, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
249+ $Tuple10(bU, bV, bE, bF, bK, bM, bJ, bO, bI, bW)
237250 }
238251 }
239252
240253
241-func bS (bu,aY,bT,bU,bV,bW,bx,bX,bY,bZ,ca,cb) = {
242- let bk = aw()
243- let by = fromBase58String(bk[p])
244- let cc = bk[q]
245- let cd = bk[r]
246- let ce = bk[u]
247- let cf = bk[v]
248- let cg = parseIntValue(bk[s])
249- let ch = parseIntValue(bk[t])
250- let bD = bk[o]
251- let ci = valueOrErrorMessage(assetInfo(by), "Wr lp as").quantity
252- let bF = if (bX)
253- then aQ(cc)
254- else if (if (bZ)
255- then (cb == cc)
254+func bX (bz,aZ,bY,bZ,ca,cb,bC,cc,cd,ce,cf,cg) = {
255+ let bq = ax()
256+ let bD = fromBase58String(bq[q])
257+ let ch = bq[r]
258+ let ci = bq[s]
259+ let cj = bq[v]
260+ let ck = bq[w]
261+ let cl = parseIntValue(bq[t])
262+ let cm = parseIntValue(bq[u])
263+ let bI = bq[p]
264+ let cn = valueOrErrorMessage(assetInfo(bD), "Wr lp as").quantity
265+ let bK = if (cc)
266+ then aR(ch)
267+ else if (if (ce)
268+ then (cg == ch)
256269 else false)
257- then (aQ(cc) - ca)
258- else if (bZ)
259- then aQ(cc)
260- else (aQ(cc) - bT)
261- let bH = if (bX)
262- then aQ(cd)
263- else if (if (bZ)
264- then (cb == cd)
270+ then (aR(ch) - cf)
271+ else if (ce)
272+ then aR(ch)
273+ else (aR(ch) - bY)
274+ let bM = if (cc)
275+ then aR(ci)
276+ else if (if (ce)
277+ then (cg == ci)
265278 else false)
266- then (aQ(cd) - ca)
267- else if (bZ)
268- then aQ(cd)
269- else (aQ(cd) - bV)
270- let cj = z(bT, cg)
271- let ck = z(bV, ch)
272- let cl = aS(ck, cj)
273- let bG = z(bF, cg)
274- let bI = z(bH, ch)
275- let cm = if ((ci == 0))
279+ then (aR(ci) - cf)
280+ else if (ce)
281+ then aR(ci)
282+ else (aR(ci) - ca)
283+ let co = A(bY, cl)
284+ let cp = A(ca, cm)
285+ let cq = aT(cp, co)
286+ let bL = A(bK, cl)
287+ let bN = A(bM, cm)
288+ let cr = if ((cn == 0))
276289 then {
277- let bJ = d
278- let cn = d
279- let bo = pow((cj * ck), 0, toBigInt(5), 1, 0, DOWN)
280- $Tuple5(C(bo, a), C(cj, cg), C(ck, ch), aS((bI + ck), (bG + cj)), cn)
290+ let bO = d
291+ let cs = d
292+ let bu = pow((co * cp), 0, toBigInt(5), 1, 0, DOWN)
293+ $Tuple5(D(bu, a), D(co, cl), D(cp, cm), aT((bN + cp), (bL + co)), cs)
281294 }
282295 else {
283- let bJ = aS(bI, bG)
284- let co = fraction(J((bJ - cl)), c, bJ)
285- let cn = z(aY, a)
286- if (if ((bJ != d))
287- then (co > cn)
296+ let bO = aT(bN, bL)
297+ let ct = fraction(K((bO - cq)), c, bO)
298+ let cs = A(aZ, a)
299+ if (if ((bO != d))
300+ then (ct > cs)
288301 else false)
289- then throw(((("Price slippage " + toString(co)) + " > ") + toString(cn)))
302+ then throw(((("Price slippage " + toString(ct)) + " > ") + toString(cs)))
290303 else {
291- let bM = z(ci, a)
292- let cp = fraction(cj, bJ, c)
293- let cq = fraction(ck, c, bJ)
294- let cr = if ((cp > ck))
295- then $Tuple2(cq, ck)
296- else $Tuple2(cj, cp)
297- let cs = cr._1
298- let ct = cr._2
299- let bo = fraction(bM, ct, bI)
300- $Tuple5(C(bo, a), C(cs, cg), C(ct, ch), bJ, cn)
304+ let cu = A(cn, a)
305+ let cv = fraction(co, bO, c)
306+ let cw = fraction(cp, c, bO)
307+ let cx = if ((cv > cp))
308+ then $Tuple2(cw, cp)
309+ else $Tuple2(co, cv)
310+ let cy = cx._1
311+ let cz = cx._2
312+ let bu = fraction(cu, cz, bN)
313+ $Tuple5(D(bu, a), D(cy, cl), D(cz, cm), bO, cs)
301314 }
302315 }
303- let cu = cm._1
304- let cv = cm._2
305- let cw = cm._3
306- let bK = C(cm._4, a)
307- let cx = C(cm._5, a)
308- if ((0 >= cu))
316+ let cA = cr._1
317+ let cB = cr._2
318+ let cC = cr._3
319+ let bP = D(cr._4, a)
320+ let cD = D(cr._5, a)
321+ if ((0 >= cA))
309322 then throw("LP <= 0")
310323 else {
311- let cy = if (!(bY))
324+ let cE = if (!(cd))
312325 then 0
313- else cu
314- let cz = (bT - cv)
315- let cA = (bV - cw)
316- let cB = if (if (bZ)
317- then (cb == cc)
326+ else cA
327+ let cF = (bY - cB)
328+ let cG = (ca - cC)
329+ let cH = if (if (ce)
330+ then (cg == ch)
318331 else false)
319- then $Tuple2(ca, 0)
320- else if (if (bZ)
321- then (cb == cd)
332+ then $Tuple2(cf, 0)
333+ else if (if (ce)
334+ then (cg == ci)
322335 else false)
323- then $Tuple2(0, ca)
324- else $Tuple2(cv, cw)
325- let cC = cB._1
326- let cD = cB._2
327- let cE = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cC, cD, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
328- $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cE, cz, cA, bU, bW)
336+ then $Tuple2(0, cf)
337+ else $Tuple2(cB, cC)
338+ let cI = cH._1
339+ let cJ = cH._2
340+ let cK = [IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP), StringEntry(R(bC, bz), aC(cI, cJ, cE, bP, aZ, cD, height, lastBlock.timestamp, cF, cG))]
341+ $Tuple13(cA, cE, bP, bK, bM, cn, bD, bI, cK, cF, cG, bZ, cb)
329342 }
330343 }
331344
332345
333-func cF (cG) = {
334- let bk = aw()
335- let cH = bk[q]
336- let cI = bk[r]
337- let bD = parseIntValue(bk[o])
338- let bl = parseIntValue(bk[s])
339- let bm = parseIntValue(bk[t])
340- let cJ = aQ(cH)
341- let cK = aQ(cI)
342- let bJ = if ((cG.orderType == Buy))
343- then bb(bl, bm, (cJ + cG.amount), cK)
344- else bb(bl, bm, (cJ - cG.amount), cK)
345- let bK = C(bJ, a)
346- if (if (if (au())
346+func cL (cM) = {
347+ let bq = ax()
348+ let cN = bq[r]
349+ let cO = bq[s]
350+ let bI = parseIntValue(bq[p])
351+ let br = parseIntValue(bq[t])
352+ let bs = parseIntValue(bq[u])
353+ let cP = aR(cN)
354+ let cQ = aR(cO)
355+ let bO = if ((cM.orderType == Buy))
356+ then bh(br, bs, (cP + cM.amount), cQ)
357+ else bh(br, bs, (cP - cM.amount), cQ)
358+ let bP = D(bO, a)
359+ if (if (if (av())
347360 then true
348- else (bD == l))
361+ else (bI == m))
349362 then true
350- else (bD == m))
363+ else (bI == n))
351364 then throw("Admin blocked")
352365 else {
353- let cL = cG.assetPair.amountAsset
354- let cM = if ((cL == unit))
366+ let cR = cM.assetPair.amountAsset
367+ let cS = if ((cR == unit))
355368 then "WAVES"
356- else toBase58String(value(cL))
357- let cN = cG.assetPair.priceAsset
358- let cO = if ((cN == unit))
369+ else toBase58String(value(cR))
370+ let cT = cM.assetPair.priceAsset
371+ let cU = if ((cT == unit))
359372 then "WAVES"
360- else toBase58String(value(cN))
361- if (if ((cM != cH))
373+ else toBase58String(value(cT))
374+ if (if ((cS != cN))
362375 then true
363- else (cO != cI))
376+ else (cU != cO))
364377 then throw("Wr assets")
365378 else {
366- let cP = cG.price
367- let ch = fraction(a, bm, bl)
368- let cQ = F(cP, a, ch)
369- let cR = if ((cG.orderType == Buy))
370- then (bK >= cQ)
371- else (cQ >= bK)
379+ let cV = cM.price
380+ let cm = fraction(a, bs, br)
381+ let cW = G(cV, a, cm)
382+ let cX = if ((cM.orderType == Buy))
383+ then (bP >= cW)
384+ else (cW >= bP)
372385 true
373386 }
374387 }
375388 }
376389
377390
378-func cS (cT) = if ((size(cT.payments) != 1))
391+func cY (cZ) = if ((size(cZ.payments) != 1))
379392 then throw("1 pmnt exp")
380393 else {
381- let cU = value(cT.payments[0])
382- let bv = value(cU.assetId)
383- let ca = cU.amount
384- let cm = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
385- let bP = cm._1
386- let bQ = cm._2
387- let bD = parseIntValue(cm._9)
388- let bR = cm._10
389- if (if (au())
394+ let da = value(cZ.payments[0])
395+ let bA = value(da.assetId)
396+ let cf = da.amount
397+ let cr = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
398+ let bU = cr._1
399+ let bV = cr._2
400+ let bI = parseIntValue(cr._9)
401+ let bW = cr._10
402+ if (if (av())
390403 then true
391- else (bD == m))
392- then throw(("Admin blocked: " + toString(bD)))
393- else $Tuple5(bP, bQ, ca, bv, bR)
404+ else (bI == n))
405+ then throw(("Admin blocked: " + toString(bI)))
406+ else $Tuple5(bU, bV, cf, bA, bW)
394407 }
395408
396409
397-func cV (cW,S,cX,cY,aY,bY,bZ,ca,cb) = {
398- let cZ = bS(S, aY, value(cX).amount, value(cX).assetId, value(cY).amount, value(cY).assetId, cW, false, bY, bZ, ca, cb)
399- let da = parseIntValue(cZ._8)
400- if (if (if (au())
410+func db (dc,T,dd,de,aZ,cd,ce,cf,cg) = {
411+ let df = bX(T, aZ, value(dd).amount, value(dd).assetId, value(de).amount, value(de).assetId, dc, false, cd, ce, cf, cg)
412+ let bI = parseIntValue(df._8)
413+ if (if (if (av())
401414 then true
402- else (da == k))
415+ else (bI == l))
403416 then true
404- else (da == m))
405- then throw(("Blocked:" + toString(da)))
406- else cZ
417+ else (bI == n))
418+ then throw(("Blocked:" + toString(bI)))
419+ else df
407420 }
408421
409422
410-@Callable(cT)
411-func constructor (as,db) = if ((cT.caller != this))
423+@Callable(cZ)
424+func constructor (at,dg) = if ((cZ.caller != this))
412425 then throw("denied")
413- else [StringEntry(K(), as), StringEntry(L(), db)]
426+ else [StringEntry(L(), at), StringEntry(M(), dg)]
414427
415428
416429
417-@Callable(cT)
418-func put (dc,dd) = {
419- let de = aA()
420- let df = valueOrErrorMessage(addressFromString(de[w]), "Wr st addr")
421- let dg = valueOrErrorMessage(addressFromString(de[x]), "Wr sl addr")
422- if ((0 > dc))
423- then throw("Invalid slippage")
424- else if ((size(cT.payments) != 2))
430+@Callable(cZ)
431+func put (dh,di) = {
432+ let dj = aB()
433+ let dk = valueOrErrorMessage(addressFromString(dj[x]), "Wr st addr")
434+ let dl = valueOrErrorMessage(addressFromString(dj[y]), "Wr sl addr")
435+ if ((0 > dh))
436+ then throw("Wrong slippage")
437+ else if ((size(cZ.payments) != 2))
425438 then throw("2 pmnts expd")
426439 else {
427- let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dc, true, false, 0, "")
428- let cy = dh._2
429- let di = dh._7
430- let bR = dh._9
431- let cz = dh._10
432- let cA = dh._11
433- let bz = dh._12
434- let bA = dh._13
435- let dj = invoke(as, "emit", [cy], nil)
436- if ((dj == dj))
440+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dh, true, false, 0, "")
441+ let cE = dm._2
442+ let dn = dm._7
443+ let bW = dm._9
444+ let cF = dm._10
445+ let cG = dm._11
446+ let bE = dm._12
447+ let bF = dm._13
448+ let do = invoke(at, "emit", [cE], nil)
449+ if ((do == do))
437450 then {
438- let dk = if ((cz > 0))
439- then invoke(dg, "put", nil, [AttachedPayment(bz, cz)])
451+ let dp = if ((cF > 0))
452+ then invoke(dl, "put", nil, [AttachedPayment(bE, cF)])
440453 else nil
441- if ((dk == dk))
454+ if ((dp == dp))
442455 then {
443- let dl = if ((cA > 0))
444- then invoke(dg, "put", nil, [AttachedPayment(bA, cA)])
456+ let dq = if ((cG > 0))
457+ then invoke(dl, "put", nil, [AttachedPayment(bF, cG)])
445458 else nil
446- if ((dl == dl))
459+ if ((dq == dq))
447460 then {
448- let dm = if (dd)
461+ let dr = if (di)
449462 then {
450- let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
451- if ((dn == dn))
463+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
464+ if ((ds == ds))
452465 then nil
453466 else throw("Strict value is not equal to itself.")
454467 }
455- else [ScriptTransfer(cT.caller, cy, di)]
456- (bR ++ dm)
468+ else [ScriptTransfer(cZ.caller, cE, dn)]
469+ (bW ++ dr)
457470 }
458471 else throw("Strict value is not equal to itself.")
459472 }
465478
466479
467480
468-@Callable(cT)
469-func putOneTkn (do,dp,dq,aY,dd) = {
470- let bk = aA()
471- if (true)
472- then throw("off")
481+@Callable(cZ)
482+func putOneTkn (dt,du,dv,aZ,di) = {
483+ let bq = aB()
484+ let dk = valueOrErrorMessage(addressFromString(bq[x]), "Wr st addr")
485+ let dl = valueOrErrorMessage(addressFromString(bq[y]), "Wr sl addr")
486+ let dw = valueOrErrorMessage(addressFromString(bq[z]), "Wr gwx addr")
487+ let dx = ax()
488+ let bE = dx[r]
489+ let bF = dx[s]
490+ let bG = parseIntValue(dx[t])
491+ let bH = parseIntValue(dx[u])
492+ if (if (if (if ((0 >= aZ))
493+ then true
494+ else (0 >= dt))
495+ then true
496+ else (0 >= du))
497+ then true
498+ else (0 >= dv))
499+ then throw("Wrong params")
500+ else if ((size(cZ.payments) != 1))
501+ then throw("1 pmnt expd")
502+ else {
503+ let da = value(cZ.payments[0])
504+ let bA = toBase58String(value(da.assetId))
505+ let cf = da.amount
506+ if (if (if ((dt > cf))
507+ then true
508+ else (du > cf))
509+ then true
510+ else (10000000 > cf))
511+ then throw("Wrong pmt amt")
512+ else {
513+ let bK = aR(bE)
514+ let bM = aR(bF)
515+ let dy = if ((bA == bE))
516+ then $Tuple6((bK - cf), bM, (cf - dt), du, 0, 0)
517+ else if ((bA == bF))
518+ then $Tuple6(bK, (bM - cf), 0, 0, (cf - du), dt)
519+ else throw("wrong pmtAssetId")
520+ let dz = dy._1
521+ let dA = dy._2
522+ let dB = dy._3
523+ let dC = dy._4
524+ let dD = dy._5
525+ let dE = dy._6
526+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
527+ let bd = invoke(dw, "calcD", [toString(toBigInt(((dz + dB) - dE))), toString(toBigInt(((dA + dD) - dC))), au, g, h], nil)
528+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
529+ if ((dF == dF))
530+ then {
531+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(fromBase58String(bE), dt), AttachedPayment(fromBase58String(bF), du), aZ, true, true, cf, bA)
532+ let dG = dm._2
533+ let dn = dm._7
534+ let bW = dm._9
535+ let cF = dm._10
536+ let cG = dm._11
537+ let dH = aW(toBigInt(dG), toBigInt(dv), toBigInt(aZ))
538+ let cE = toInt(dH._2)
539+ let do = invoke(at, "emit", [cE], nil)
540+ if ((do == do))
541+ then {
542+ let dp = if ((cF > 0))
543+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bE), cF)])
544+ else nil
545+ if ((dp == dp))
546+ then {
547+ let dq = if ((cG > 0))
548+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bF), cG)])
549+ else nil
550+ if ((dq == dq))
551+ then {
552+ let dr = if (di)
553+ then {
554+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
555+ if ((ds == ds))
556+ then nil
557+ else throw("Strict value is not equal to itself.")
558+ }
559+ else [ScriptTransfer(cZ.caller, cE, dn)]
560+ (bW ++ dr)
561+ }
562+ else throw("Strict value is not equal to itself.")
563+ }
564+ else throw("Strict value is not equal to itself.")
565+ }
566+ else throw("Strict value is not equal to itself.")
567+ }
568+ else throw("Strict value is not equal to itself.")
569+ }
570+ }
571+ }
572+
573+
574+
575+@Callable(cZ)
576+func putForFree (dI) = if ((0 > dI))
577+ then throw("Wrong slpg")
578+ else if ((size(cZ.payments) != 2))
579+ then throw("2 pmnts expd")
473580 else {
474- let df = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
475- let dg = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
476- let dr = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
477- let ds = aw()
478- let bz = ds[q]
479- let bA = ds[r]
480- let bB = parseIntValue(ds[s])
481- let bC = parseIntValue(ds[t])
482- if (if (if (if ((0 >= aY))
581+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dI, false, false, 0, "")
582+ dm._9
583+ }
584+
585+
586+
587+@Callable(cZ)
588+func get () = {
589+ let cr = cY(cZ)
590+ let dJ = cr._1
591+ let bV = cr._2
592+ let cf = cr._3
593+ let bA = cr._4
594+ let bW = cr._5
595+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
596+ if ((dK == dK))
597+ then bW
598+ else throw("Strict value is not equal to itself.")
599+ }
600+
601+
602+
603+@Callable(cZ)
604+func getOneTkn (dL,dM,dN,dO,aZ) = if ((size(cZ.payments) != 1))
605+ then throw("1 pmnt expd")
606+ else {
607+ let bq = ax()
608+ let bD = bq[q]
609+ let bE = bq[r]
610+ let bF = bq[s]
611+ let bG = parseIntValue(bq[t])
612+ let bH = parseIntValue(bq[u])
613+ let bI = bq[p]
614+ let dP = aB()
615+ let dw = valueOrErrorMessage(addressFromString(dP[z]), "Wr sl addr")
616+ let da = value(cZ.payments[0])
617+ let bC = cZ.caller
618+ let bz = toBase58String(cZ.transactionId)
619+ let bA = value(da.assetId)
620+ let cf = da.amount
621+ if ((1000000000 > cf))
622+ then throw("Min payment is 10 LP")
623+ else if (if (if ((0 > aZ))
483624 then true
484- else (0 >= do))
625+ else (0 > dL))
485626 then true
486- else (0 >= dp))
487- then true
488- else (0 >= dq))
627+ else (0 > dN))
489628 then throw("Wrong params")
490- else if ((size(cT.payments) != 1))
491- then throw("1 pmnt expd")
629+ else if ((bD != toBase58String(bA)))
630+ then throw("Wrong LP")
492631 else {
493- let cU = value(cT.payments[0])
494- let bv = toBase58String(value(cU.assetId))
495- let ca = cU.amount
496- if (if (if ((do > ca))
632+ let df = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
633+ let dQ = df._1
634+ let dR = df._2
635+ let bK = aR(bE)
636+ let bM = aR(bF)
637+ let dS = if ((dO == bE))
638+ then $Tuple7((bK - dQ), (bM - dR), dL, dR, 0, 0, (dQ + dL))
639+ else if ((dO == bF))
640+ then $Tuple7((bK - dQ), (bM - dR), 0, 0, dL, dQ, (dR + dL))
641+ else throw("wrong outAssetId")
642+ let dz = dS._1
643+ let dA = dS._2
644+ let dB = dS._3
645+ let dC = dS._4
646+ let dD = dS._5
647+ let dE = dS._6
648+ let dT = dS._7
649+ if (if ((0 > dB))
497650 then true
498- else (dp > ca))
499- then true
500- else (10000000 > ca))
501- then throw("Wrong pmt amt")
651+ else (0 > dD))
652+ then throw("Wrong calc")
502653 else {
503- let bF = aQ(bz)
504- let bH = aQ(bA)
505- let dt = if ((bv == bz))
506- then $Tuple6((bF - ca), bH, (ca - do), dp, 0, 0)
507- else if ((bv == bA))
508- then $Tuple6(bF, (bH - ca), 0, 0, (ca - dp), do)
509- else throw("wrong pmtAssetId")
510- let du = dt._1
511- let dv = dt._2
512- let dw = dt._3
513- let dx = dt._4
514- let dy = dt._5
515- let dz = dt._6
516- let dA = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
517- let dB = invoke(dr, "calcD", [toString(toBigInt(((du + dw) - dz))), toString(toBigInt(((dv + dy) - dx))), at, f, g], nil)
518- let dC = aV(parseBigIntValue(al(dB)), parseBigIntValue(al(dA)), toBigInt(1000))
519- if ((dC == dC))
654+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
655+ let bd = invoke(dw, "calcD", [toString(((dz - dB) + dE)), toString(((dA + dC) - dD)), au, g, h], nil)
656+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
657+ if ((dF == dF))
520658 then {
521- let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(fromBase58String(bz), do), AttachedPayment(fromBase58String(bA), dp), 50000000000, true, true, ca, bv)
522- let dD = dh._2
523- let di = dh._7
524- let bR = dh._9
525- let cz = dh._10
526- let cA = dh._11
527- let dE = aV(toBigInt(dD), toBigInt(dq), toBigInt(aY))
528- let cy = toInt(dE._2)
529- let dj = invoke(as, "emit", [cy], nil)
530- if ((dj == dj))
659+ let dU = aW(toBigInt(dT), toBigInt(dN), toBigInt(aZ))
660+ if ((dU == dU))
531661 then {
532- let dk = if ((cz > 0))
533- then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
534- else nil
535- if ((dk == dk))
662+ let dV = if ((dO == bE))
663+ then $Tuple2(toInt(dU._2), 0)
664+ else $Tuple2(0, toInt(dU._2))
665+ let dW = dV._1
666+ let dX = dV._2
667+ let bO = aT(A(bM, bH), A(bK, bG))
668+ let bP = D(bO, a)
669+ let bW = [ScriptTransfer(bC, (dW + dX), if ((dO == "WAVES"))
670+ then unit
671+ else fromBase58String(dO)), StringEntry(U(toString(bC), bz), aN(dW, dX, cf, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
672+ if ((bW == bW))
536673 then {
537- let dl = if ((cA > 0))
538- then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
539- else nil
540- if ((dl == dl))
541- then {
542- let dm = if (dd)
543- then {
544- let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
545- if ((dn == dn))
546- then nil
547- else throw("Strict value is not equal to itself.")
548- }
549- else [ScriptTransfer(cT.caller, cy, di)]
550- (bR ++ dm)
551- }
674+ let dY = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
675+ if ((dY == dY))
676+ then bW
552677 else throw("Strict value is not equal to itself.")
553678 }
554679 else throw("Strict value is not equal to itself.")
558683 else throw("Strict value is not equal to itself.")
559684 }
560685 }
561- }
562- }
686+ }
563687
564688
565689
566-@Callable(cT)
567-func putForFree (dF) = if ((0 > dF))
568- then throw("Invalid slippage")
569- else if ((size(cT.payments) != 2))
570- then throw("2 pmnts expd")
571- else {
572- let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dF, false, false, 0, "")
573- dh._9
574- }
575-
576-
577-
578-@Callable(cT)
579-func get () = {
580- let cm = cS(cT)
581- let dG = cm._1
582- let bQ = cm._2
583- let ca = cm._3
584- let bv = cm._4
585- let bR = cm._5
586- let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
587- if ((dH == dH))
588- then bR
589- else throw("Strict value is not equal to itself.")
590- }
591-
592-
593-
594-@Callable(cT)
595-func getOneTkn (dI,dJ,dK,dL,aY) = if ((size(cT.payments) != 1))
596- then throw("1 pmnt expd")
597- else if (true)
598- then throw("off")
599- else {
600- let bk = aw()
601- let by = bk[p]
602- let bz = bk[q]
603- let bA = bk[r]
604- let bB = parseIntValue(bk[s])
605- let bC = parseIntValue(bk[t])
606- let bD = bk[o]
607- let dM = aA()
608- let dr = valueOrErrorMessage(addressFromString(dM[y]), "Wr sl addr")
609- let cU = value(cT.payments[0])
610- let bx = cT.caller
611- let bu = toBase58String(cT.transactionId)
612- let bv = value(cU.assetId)
613- let ca = cU.amount
614- if (if (if (if ((0 > aY))
615- then true
616- else (0 > dI))
617- then true
618- else (0 > dJ))
619- then true
620- else (0 > dK))
621- then throw("Wrong params")
622- else if ((by != toBase58String(bv)))
623- then throw("Invalid LP")
624- else {
625- let cZ = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
626- let dN = cZ._1
627- let dO = cZ._2
628- let bF = aQ(bz)
629- let bH = aQ(bA)
630- let dP = if ((dL == bz))
631- then $Tuple7((bF - dN), (bH - dO), (dK - dN), dJ, 0, 0, (dN + dI))
632- else if ((dL == bA))
633- then $Tuple7((bF - dN), (bH - dO), 0, 0, (dK - dO), dI, (dO + dJ))
634- else throw("wrong outAssetId")
635- let du = dP._1
636- let dv = dP._2
637- let dw = dP._3
638- let dx = dP._4
639- let dy = dP._5
640- let dz = dP._6
641- let dQ = dP._7
642- if (if ((0 > dw))
643- then true
644- else (0 > dy))
645- then throw("Invalid calc")
646- else {
647- let dA = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
648- let dB = invoke(dr, "calcD", [toString(((du - dw) + dz)), toString(((dv + dx) - dy)), at, f, g], nil)
649- let dC = aV(parseBigIntValue(al(dB)), parseBigIntValue(al(dA)), toBigInt(1000))
650- if ((dC == dC))
651- then {
652- let dR = aV(toBigInt(dQ), toBigInt(dK), toBigInt(aY))
653- if ((dR == dR))
654- then {
655- let dS = if ((dL == bz))
656- then $Tuple2(toInt(dR._2), 0)
657- else $Tuple2(0, toInt(dR._2))
658- let dT = dS._1
659- let dU = dS._2
660- let bJ = aS(z(bH, bC), z(bF, bB))
661- let bK = C(bJ, a)
662- let bR = [ScriptTransfer(bx, (dT + dU), if ((dL == "WAVES"))
663- then unit
664- else fromBase58String(dL)), StringEntry(T(toString(bx), bu), aM(dT, dU, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
665- if ((bR == bR))
666- then {
667- let dV = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
668- if ((dV == dV))
669- then bR
670- else throw("Strict value is not equal to itself.")
671- }
672- else throw("Strict value is not equal to itself.")
673- }
674- else throw("Strict value is not equal to itself.")
675- }
676- else throw("Strict value is not equal to itself.")
677- }
678- }
679- }
680-
681-
682-
683-@Callable(cT)
684-func getNoLess (dW,dX) = {
685- let cm = cS(cT)
686- let bP = cm._1
687- let bQ = cm._2
688- let ca = cm._3
689- let bv = cm._4
690- let bR = cm._5
691- if ((dW > bP))
692- then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
693- else if ((dX > bQ))
694- then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dX)))
690+@Callable(cZ)
691+func getNoLess (dZ,ea) = {
692+ let cr = cY(cZ)
693+ let bU = cr._1
694+ let bV = cr._2
695+ let cf = cr._3
696+ let bA = cr._4
697+ let bW = cr._5
698+ if ((dZ > bU))
699+ then throw(((("Failed: " + toString(bU)) + " < ") + toString(dZ)))
700+ else if ((ea > bV))
701+ then throw(((("Failed: " + toString(bV)) + " < ") + toString(ea)))
695702 else {
696- let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
697- if ((dH == dH))
698- then bR
703+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
704+ if ((dK == dK))
705+ then bW
699706 else throw("Strict value is not equal to itself.")
700707 }
701708 }
702709
703710
704711
705-@Callable(cT)
706-func unstakeAndGet (dY) = {
707- let dZ = if ((size(cT.payments) != 0))
712+@Callable(cZ)
713+func unstakeAndGet (eb) = {
714+ let ec = if ((size(cZ.payments) != 0))
708715 then throw("No pmnts expd")
709716 else true
710- if ((dZ == dZ))
717+ if ((ec == ec))
711718 then {
712- let bk = aw()
713- let ea = aA()
714- let di = fromBase58String(bk[p])
715- let eb = valueOrErrorMessage(addressFromString(ea[w]), "Wr st addr")
716- let ec = invoke(eb, "unstake", [toBase58String(di), dY], nil)
717- if ((ec == ec))
719+ let bq = ax()
720+ let ed = aB()
721+ let dn = fromBase58String(bq[q])
722+ let ee = valueOrErrorMessage(addressFromString(ed[x]), "Wr st addr")
723+ let ef = invoke(ee, "unstake", [toBase58String(dn), eb], nil)
724+ if ((ef == ef))
718725 then {
719- let cZ = bt(toBase58String(cT.transactionId), toBase58String(di), dY, cT.caller)
720- let bD = parseIntValue(cZ._9)
721- let bR = cZ._10
722- let ed = if (if (au())
726+ let df = by(toBase58String(cZ.transactionId), toBase58String(dn), eb, cZ.caller)
727+ let bI = parseIntValue(df._9)
728+ let bW = df._10
729+ let eg = if (if (av())
723730 then true
724- else (bD == m))
725- then throw(("Blocked: " + toString(bD)))
731+ else (bI == n))
732+ then throw(("Blocked: " + toString(bI)))
726733 else true
727- if ((ed == ed))
734+ if ((eg == eg))
728735 then {
729- let dH = invoke(as, "burn", [dY], [AttachedPayment(di, dY)])
730- if ((dH == dH))
731- then bR
736+ let dK = invoke(at, "burn", [eb], [AttachedPayment(dn, eb)])
737+ if ((dK == dK))
738+ then bW
732739 else throw("Strict value is not equal to itself.")
733740 }
734741 else throw("Strict value is not equal to itself.")
740747
741748
742749
743-@Callable(cT)
744-func activate (ee,ef) = if ((toString(cT.caller) != toString(as)))
750+@Callable(cZ)
751+func activate (eh,ei) = if ((toString(cZ.caller) != toString(at)))
745752 then throw("denied")
746- else $Tuple2([StringEntry(U(), ee), StringEntry(V(), ef)], "success")
753+ else $Tuple2([StringEntry(V(), eh), StringEntry(W(), ei)], "success")
747754
748755
749756
750-@Callable(cT)
751-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aw())
757+@Callable(cZ)
758+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ax())
752759
753760
754761
755-@Callable(cT)
756-func getAccBalanceWrapperREADONLY (aR) = $Tuple2(nil, aQ(aR))
762+@Callable(cZ)
763+func getAccBalanceWrapperREADONLY (aS) = $Tuple2(nil, aR(aS))
757764
758765
759766
760-@Callable(cT)
761-func calcPricesWrapperREADONLY (be,bf,bj) = {
762- let bs = bi(be, bf, bj)
763- $Tuple2(nil, [toString(bs[0]), toString(bs[1]), toString(bs[2])])
767+@Callable(cZ)
768+func calcPricesWrapperREADONLY (bk,bl,bp) = {
769+ let ej = bo(bk, bl, bp)
770+ $Tuple2(nil, [toString(ej[0]), toString(ej[1]), toString(ej[2])])
764771 }
765772
766773
767774
768-@Callable(cT)
769-func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
775+@Callable(cZ)
776+func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
770777
771778
772779
773-@Callable(cT)
774-func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
780+@Callable(cZ)
781+func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
775782
776783
777784
778-@Callable(cT)
779-func calcPriceBigIntWrapperREADONLY (aT,aU) = $Tuple2(nil, toString(aS(parseBigIntValue(aT), parseBigIntValue(aU))))
785+@Callable(cZ)
786+func calcPriceBigIntWrapperREADONLY (aU,aV) = $Tuple2(nil, toString(aT(parseBigIntValue(aU), parseBigIntValue(aV))))
780787
781788
782789
783-@Callable(cT)
784-func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eg,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eg, bX, bY, false, 0, ""))
790+@Callable(cZ)
791+func estimatePutOperationWrapperREADONLY (bz,aZ,bY,bZ,ca,cb,ek,cc,cd) = $Tuple2(nil, bX(bz, aZ, bY, bZ, ca, cb, ek, cc, cd, false, 0, ""))
785792
786793
787794
788-@Callable(cT)
789-func estimateGetOperationWrapperREADONLY (bu,eh,bw,eg) = {
790- let cm = bt(bu, eh, bw, addressFromStringValue(eg))
791- $Tuple2(nil, $Tuple10(cm._1, cm._2, cm._3, cm._4, cm._5, cm._6, cm._7, toString(cm._8), cm._9, cm._10))
795+@Callable(cZ)
796+func estimateGetOperationWrapperREADONLY (bz,el,bB,ek) = {
797+ let cr = by(bz, el, bB, addressFromStringValue(ek))
798+ $Tuple2(nil, $Tuple10(cr._1, cr._2, cr._3, cr._4, cr._5, cr._6, cr._7, toString(cr._8), cr._9, cr._10))
792799 }
793800
794801
795-@Verifier(ei)
796-func ej () = {
797- let am = ei
798- if ($isInstanceOf(am, "Order"))
802+@Verifier(em)
803+func en () = {
804+ let an = em
805+ if ($isInstanceOf(an, "Order"))
799806 then {
800- let cG = am
801- let ek = av()
802- let ai = cF(cG)
803- let el = sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey)
804- let em = sigVerify(cG.bodyBytes, cG.proofs[1], ek)
805- if (if (if (ai)
806- then el
807+ let cM = an
808+ let eo = aw()
809+ let aj = cL(cM)
810+ let ep = sigVerify(cM.bodyBytes, cM.proofs[0], cM.senderPublicKey)
811+ let eq = sigVerify(cM.bodyBytes, cM.proofs[1], eo)
812+ if (if (if (aj)
813+ then ep
807814 else false)
808- then em
815+ then eq
809816 else false)
810817 then true
811- else ah(ai, el, em)
818+ else ai(aj, ep, eq)
812819 }
813820 else {
814- let en = valueOrElse(getString(this, L()), i)
815- if ((en == i))
816- then sigVerify(ei.bodyBytes, ei.proofs[0], ei.senderPublicKey)
817- else sigVerify(ei.bodyBytes, ei.proofs[0], fromBase58String(en))
821+ let er = valueOrElse(getString(this, M()), j)
822+ if ((er == j))
823+ then sigVerify(em.bodyBytes, em.proofs[0], em.senderPublicKey)
824+ else sigVerify(em.bodyBytes, em.proofs[0], fromBase58String(er))
818825 }
819826 }
820827
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(1)
1313
14-let f = "100"
14+let f = toBigInt((a - ((a * 1) / a)))
1515
16-let g = "1"
16+let g = "100"
1717
18-let h = "__"
18+let h = "1"
1919
20-let i = ""
20+let i = "__"
2121
22-let j = 1
22+let j = ""
2323
24-let k = 2
24+let k = 1
2525
26-let l = 3
26+let l = 2
2727
28-let m = 4
28+let m = 3
2929
30-let n = 1
30+let n = 4
3131
32-let o = 2
32+let o = 1
3333
34-let p = 3
34+let p = 2
3535
36-let q = 4
36+let q = 3
3737
38-let r = 5
38+let r = 4
3939
40-let s = 6
40+let s = 5
4141
42-let t = 7
42+let t = 6
4343
44-let u = 8
44+let u = 7
4545
46-let v = 9
46+let v = 8
4747
48-let w = 1
48+let w = 9
4949
50-let x = 7
50+let x = 1
5151
52-let y = 10
52+let y = 7
5353
54-func z (A,B) = fraction(toBigInt(A), c, toBigInt(B))
54+let z = 10
55+
56+func A (B,C) = fraction(toBigInt(B), c, toBigInt(C))
5557
5658
57-func C (D,E) = toInt(fraction(D, toBigInt(E), c))
59+func D (E,F) = toInt(fraction(E, toBigInt(F), c))
5860
5961
60-func F (G,H,I) = fraction(G, H, I)
62+func G (H,I,J) = fraction(H, I, J)
6163
6264
63-func J (D) = if ((d > D))
64- then -(D)
65- else D
65+func K (E) = if ((d > E))
66+ then -(E)
67+ else E
6668
6769
68-func K () = "%s__factoryContract"
70+func L () = "%s__factoryContract"
6971
7072
71-func L () = "%s__managerPublicKey"
73+func M () = "%s__managerPublicKey"
7274
7375
74-func M () = "%s%s__price__last"
76+func N () = "%s%s__price__last"
7577
7678
77-func N (O,P) = makeString(["%s%s%d%d__price__history", toString(O), toString(P)], h)
79+func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], i)
7880
7981
80-func Q (R,S) = ((("%s%s%s__P__" + R) + "__") + S)
82+func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
8183
8284
83-func T (R,S) = ((("%s%s%s__G__" + R) + "__") + S)
85+func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
8486
8587
86-func U () = "%s__amountAsset"
88+func V () = "%s__amountAsset"
8789
8890
89-func V () = "%s__priceAsset"
91+func W () = "%s__priceAsset"
9092
9193
92-func W () = "%s__amp"
94+func X () = "%s__amp"
9395
9496
95-func X () = "%s__factoryConfig"
97+func Y () = "%s__factoryConfig"
9698
9799
98-func Y () = "%s%s__matcher__publicKey"
100+func Z () = "%s%s__matcher__publicKey"
99101
100102
101-func Z (aa,ab) = (((("%d%d%s__" + aa) + "__") + ab) + "__config")
103+func aa (ab,ac) = (((("%d%d%s__" + ab) + "__") + ac) + "__config")
102104
103105
104-func ac (ad) = ("%s%s%s__mappings__baseAsset2internalId__" + ad)
106+func ad (ae) = ("%s%s%s__mappings__baseAsset2internalId__" + ae)
105107
106108
107-func ae () = "%s__shutdown"
109+func af () = "%s__shutdown"
108110
109111
110-func af (ag) = ("%s%s__poolWeight__" + ag)
112+func ag (ah) = ("%s%s__poolWeight__" + ah)
111113
112114
113-func ah (ai,aj,ak) = throw(((((("Failed: orderValid=" + toString(ai)) + " senderValid=") + toString(aj)) + " matcherValid=") + toString(ak)))
115+func ai (aj,ak,al) = throw(((((("Failed: ordValid=" + toString(aj)) + " sndrValid=") + toString(ak)) + " mtchrValid=") + toString(al)))
114116
115117
116-func al (D) = {
117- let am = D
118- if ($isInstanceOf(am, "String"))
118+func am (E) = {
119+ let an = E
120+ if ($isInstanceOf(an, "String"))
119121 then {
120- let an = am
121- an
122+ let ao = an
123+ ao
122124 }
123125 else throw("fail cast to String")
124126 }
125127
126128
127-func ao (ap,aq) = valueOrErrorMessage(getString(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
129+func ap (aq,ar) = valueOrErrorMessage(getString(aq, ar), makeString(["mandatory ", toString(aq), ".", ar, " not defined"], ""))
128130
129131
130-func ar (ap,aq) = valueOrErrorMessage(getInteger(ap, aq), makeString(["mandatory ", toString(ap), ".", aq, " is not defined"], ""))
132+func as (aq,ar) = valueOrErrorMessage(getInteger(aq, ar), makeString(["mandatory ", toString(aq), ".", ar, " not defined"], ""))
131133
132134
133-let as = addressFromStringValue(ao(this, K()))
135+let at = addressFromStringValue(ap(this, L()))
134136
135-let at = ao(this, W())
137+let au = ap(this, X())
136138
137-func au () = valueOrElse(getBoolean(as, ae()), false)
139+func av () = valueOrElse(getBoolean(at, af()), false)
138140
139141
140-func av () = fromBase58String(ao(as, Y()))
142+func aw () = fromBase58String(ap(at, Z()))
141143
142144
143-func aw () = {
144- let ax = ao(this, U())
145- let ay = ao(this, V())
146- let az = ar(as, ac(ay))
147- let aa = ar(as, ac(ax))
148- split(ao(as, Z(toString(aa), toString(az))), h)
145+func ax () = {
146+ let ay = ap(this, V())
147+ let az = ap(this, W())
148+ let aA = as(at, ad(az))
149+ let ab = as(at, ad(ay))
150+ split(ap(at, aa(toString(ab), toString(aA))), i)
149151 }
150152
151153
152-func aA () = split(ao(as, X()), h)
154+func aB () = split(ap(at, Y()), i)
153155
154156
155-func aB (aC,aD,aE,aF,aG,aH,aI,aJ,aK,aL) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aC), toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL)], h)
157+func aC (aD,aE,aF,aG,aH,aI,aJ,aK,aL,aM) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(aD), toString(aE), toString(aF), toString(aG), toString(aH), toString(aI), toString(aJ), toString(aK), toString(aL), toString(aM)], i)
156158
157159
158-func aM (aN,aO,aP,aF,aI,aJ) = makeString(["%d%d%d%d%d%d", toString(aN), toString(aO), toString(aP), toString(aF), toString(aI), toString(aJ)], h)
160+func aN (aO,aP,aQ,aG,aJ,aK) = makeString(["%d%d%d%d%d%d", toString(aO), toString(aP), toString(aQ), toString(aG), toString(aJ), toString(aK)], i)
159161
160162
161-func aQ (aR) = if ((aR == "WAVES"))
163+func aR (aS) = if ((aS == "WAVES"))
162164 then wavesBalance(this).available
163- else assetBalance(this, fromBase58String(aR))
165+ else assetBalance(this, fromBase58String(aS))
164166
165167
166-func aS (aT,aU) = fraction(aT, c, aU)
168+func aT (aU,aV) = fraction(aU, c, aV)
167169
168170
169-func aV (aW,aX,aY) = {
170- let aZ = fraction((aW - aX), b, aX)
171- let ba = ((aY - J(aZ)) > d)
172- if (!(ba))
173- then throw(((("Too big slippage: " + toString(aZ)) + " vs ") + toString(aY)))
174- else $Tuple2(ba, min([aW, aX]))
171+func aW (aX,aY,aZ) = {
172+ let ba = fraction((aX - aY), b, aY)
173+ let bb = ((aZ - K(ba)) > d)
174+ if (!(bb))
175+ then throw(("Big slpg: " + toString(ba)))
176+ else $Tuple2(bb, min([aX, aY]))
175177 }
176178
177179
178-func bb (bc,bd,be,bf) = {
179- let bg = z(be, bc)
180- let bh = z(bf, bd)
181- aS(bh, bg)
180+func bc (bd,be,bf) = {
181+ let ba = fraction(be, b, bd)
182+ let bg = (bf > ba)
183+ if (if (bg)
184+ then true
185+ else (be > bd))
186+ then throw(((((((toString(be) + " ") + toString(bd)) + " ") + toString(ba)) + " ") + toString(bf)))
187+ else bg
182188 }
183189
184190
185-func bi (be,bf,bj) = {
186- let bk = aw()
187- let bl = parseIntValue(bk[s])
188- let bm = parseIntValue(bk[t])
189- let bn = bb(bl, bm, be, bf)
190- let aU = z(be, bl)
191- let aT = z(bf, bm)
192- let bo = z(bj, a)
193- let bp = aS(aU, bo)
194- let bq = aS(aT, bo)
195-[bn, bp, bq]
191+func bh (bi,bj,bk,bl) = {
192+ let bm = A(bk, bi)
193+ let bn = A(bl, bj)
194+ aT(bn, bm)
196195 }
197196
198197
199-func br (be,bf,bj) = {
200- let bs = bi(be, bf, bj)
201-[C(bs[0], a), C(bs[1], a), C(bs[2], a)]
198+func bo (bk,bl,bp) = {
199+ let bq = ax()
200+ let br = parseIntValue(bq[t])
201+ let bs = parseIntValue(bq[u])
202+ let bt = bh(br, bs, bk, bl)
203+ let aV = A(bk, br)
204+ let aU = A(bl, bs)
205+ let bu = A(bp, a)
206+ let bv = aT(aV, bu)
207+ let bw = aT(aU, bu)
208+[bt, bv, bw]
202209 }
203210
204211
205-func bt (bu,bv,bw,bx) = {
206- let bk = aw()
207- let by = bk[p]
208- let bz = bk[q]
209- let bA = bk[r]
210- let bB = parseIntValue(bk[s])
211- let bC = parseIntValue(bk[t])
212- let bD = bk[o]
213- let bE = valueOrErrorMessage(assetInfo(fromBase58String(by)), "Invalid LP id").quantity
214- if ((by != bv))
215- then throw("Invalid pmt asset")
212+func bx (bk,bl,bp) = {
213+ let ah = bo(bk, bl, bp)
214+[D(ah[0], a), D(ah[1], a), D(ah[2], a)]
215+ }
216+
217+
218+func by (bz,bA,bB,bC) = {
219+ let bq = ax()
220+ let bD = bq[q]
221+ let bE = bq[r]
222+ let bF = bq[s]
223+ let bG = parseIntValue(bq[t])
224+ let bH = parseIntValue(bq[u])
225+ let bI = bq[p]
226+ let bJ = valueOrErrorMessage(assetInfo(fromBase58String(bD)), "Wrong LP id").quantity
227+ if ((bD != bA))
228+ then throw("Wrong pmt asset")
216229 else {
217- let bF = aQ(bz)
218- let bG = z(bF, bB)
219- let bH = aQ(bA)
220- let bI = z(bH, bC)
221- let bJ = aS(bI, bG)
222- let bK = C(bJ, a)
223- let bL = z(bw, a)
224- let bM = z(bE, a)
225- let bN = fraction(bG, bL, bM)
226- let bO = fraction(bI, bL, bM)
227- let bP = C(bN, bB)
228- let bQ = C(bO, bC)
229- let bR = if ((bu == ""))
230+ let bK = aR(bE)
231+ let bL = A(bK, bG)
232+ let bM = aR(bF)
233+ let bN = A(bM, bH)
234+ let bO = aT(bN, bL)
235+ let bP = D(bO, a)
236+ let bQ = A(bB, a)
237+ let bR = A(bJ, a)
238+ let bS = fraction(bL, bQ, bR)
239+ let bT = fraction(bN, bQ, bR)
240+ let bU = D(bS, bG)
241+ let bV = D(bT, bH)
242+ let bW = if ((bz == ""))
230243 then nil
231- else [ScriptTransfer(bx, bP, if ((bz == "WAVES"))
244+ else [ScriptTransfer(bC, bU, if ((bE == "WAVES"))
232245 then unit
233- else fromBase58String(bz)), ScriptTransfer(bx, bQ, if ((bA == "WAVES"))
246+ else fromBase58String(bE)), ScriptTransfer(bC, bV, if ((bF == "WAVES"))
234247 then unit
235- else fromBase58String(bA)), StringEntry(T(toString(bx), bu), aM(bP, bQ, bw, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
236- $Tuple10(bP, bQ, bz, bA, bF, bH, bE, bJ, bD, bR)
248+ else fromBase58String(bF)), StringEntry(U(toString(bC), bz), aN(bU, bV, bB, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
249+ $Tuple10(bU, bV, bE, bF, bK, bM, bJ, bO, bI, bW)
237250 }
238251 }
239252
240253
241-func bS (bu,aY,bT,bU,bV,bW,bx,bX,bY,bZ,ca,cb) = {
242- let bk = aw()
243- let by = fromBase58String(bk[p])
244- let cc = bk[q]
245- let cd = bk[r]
246- let ce = bk[u]
247- let cf = bk[v]
248- let cg = parseIntValue(bk[s])
249- let ch = parseIntValue(bk[t])
250- let bD = bk[o]
251- let ci = valueOrErrorMessage(assetInfo(by), "Wr lp as").quantity
252- let bF = if (bX)
253- then aQ(cc)
254- else if (if (bZ)
255- then (cb == cc)
254+func bX (bz,aZ,bY,bZ,ca,cb,bC,cc,cd,ce,cf,cg) = {
255+ let bq = ax()
256+ let bD = fromBase58String(bq[q])
257+ let ch = bq[r]
258+ let ci = bq[s]
259+ let cj = bq[v]
260+ let ck = bq[w]
261+ let cl = parseIntValue(bq[t])
262+ let cm = parseIntValue(bq[u])
263+ let bI = bq[p]
264+ let cn = valueOrErrorMessage(assetInfo(bD), "Wr lp as").quantity
265+ let bK = if (cc)
266+ then aR(ch)
267+ else if (if (ce)
268+ then (cg == ch)
256269 else false)
257- then (aQ(cc) - ca)
258- else if (bZ)
259- then aQ(cc)
260- else (aQ(cc) - bT)
261- let bH = if (bX)
262- then aQ(cd)
263- else if (if (bZ)
264- then (cb == cd)
270+ then (aR(ch) - cf)
271+ else if (ce)
272+ then aR(ch)
273+ else (aR(ch) - bY)
274+ let bM = if (cc)
275+ then aR(ci)
276+ else if (if (ce)
277+ then (cg == ci)
265278 else false)
266- then (aQ(cd) - ca)
267- else if (bZ)
268- then aQ(cd)
269- else (aQ(cd) - bV)
270- let cj = z(bT, cg)
271- let ck = z(bV, ch)
272- let cl = aS(ck, cj)
273- let bG = z(bF, cg)
274- let bI = z(bH, ch)
275- let cm = if ((ci == 0))
279+ then (aR(ci) - cf)
280+ else if (ce)
281+ then aR(ci)
282+ else (aR(ci) - ca)
283+ let co = A(bY, cl)
284+ let cp = A(ca, cm)
285+ let cq = aT(cp, co)
286+ let bL = A(bK, cl)
287+ let bN = A(bM, cm)
288+ let cr = if ((cn == 0))
276289 then {
277- let bJ = d
278- let cn = d
279- let bo = pow((cj * ck), 0, toBigInt(5), 1, 0, DOWN)
280- $Tuple5(C(bo, a), C(cj, cg), C(ck, ch), aS((bI + ck), (bG + cj)), cn)
290+ let bO = d
291+ let cs = d
292+ let bu = pow((co * cp), 0, toBigInt(5), 1, 0, DOWN)
293+ $Tuple5(D(bu, a), D(co, cl), D(cp, cm), aT((bN + cp), (bL + co)), cs)
281294 }
282295 else {
283- let bJ = aS(bI, bG)
284- let co = fraction(J((bJ - cl)), c, bJ)
285- let cn = z(aY, a)
286- if (if ((bJ != d))
287- then (co > cn)
296+ let bO = aT(bN, bL)
297+ let ct = fraction(K((bO - cq)), c, bO)
298+ let cs = A(aZ, a)
299+ if (if ((bO != d))
300+ then (ct > cs)
288301 else false)
289- then throw(((("Price slippage " + toString(co)) + " > ") + toString(cn)))
302+ then throw(((("Price slippage " + toString(ct)) + " > ") + toString(cs)))
290303 else {
291- let bM = z(ci, a)
292- let cp = fraction(cj, bJ, c)
293- let cq = fraction(ck, c, bJ)
294- let cr = if ((cp > ck))
295- then $Tuple2(cq, ck)
296- else $Tuple2(cj, cp)
297- let cs = cr._1
298- let ct = cr._2
299- let bo = fraction(bM, ct, bI)
300- $Tuple5(C(bo, a), C(cs, cg), C(ct, ch), bJ, cn)
304+ let cu = A(cn, a)
305+ let cv = fraction(co, bO, c)
306+ let cw = fraction(cp, c, bO)
307+ let cx = if ((cv > cp))
308+ then $Tuple2(cw, cp)
309+ else $Tuple2(co, cv)
310+ let cy = cx._1
311+ let cz = cx._2
312+ let bu = fraction(cu, cz, bN)
313+ $Tuple5(D(bu, a), D(cy, cl), D(cz, cm), bO, cs)
301314 }
302315 }
303- let cu = cm._1
304- let cv = cm._2
305- let cw = cm._3
306- let bK = C(cm._4, a)
307- let cx = C(cm._5, a)
308- if ((0 >= cu))
316+ let cA = cr._1
317+ let cB = cr._2
318+ let cC = cr._3
319+ let bP = D(cr._4, a)
320+ let cD = D(cr._5, a)
321+ if ((0 >= cA))
309322 then throw("LP <= 0")
310323 else {
311- let cy = if (!(bY))
324+ let cE = if (!(cd))
312325 then 0
313- else cu
314- let cz = (bT - cv)
315- let cA = (bV - cw)
316- let cB = if (if (bZ)
317- then (cb == cc)
326+ else cA
327+ let cF = (bY - cB)
328+ let cG = (ca - cC)
329+ let cH = if (if (ce)
330+ then (cg == ch)
318331 else false)
319- then $Tuple2(ca, 0)
320- else if (if (bZ)
321- then (cb == cd)
332+ then $Tuple2(cf, 0)
333+ else if (if (ce)
334+ then (cg == ci)
322335 else false)
323- then $Tuple2(0, ca)
324- else $Tuple2(cv, cw)
325- let cC = cB._1
326- let cD = cB._2
327- let cE = [IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK), StringEntry(Q(bx, bu), aB(cC, cD, cy, bK, aY, cx, height, lastBlock.timestamp, cz, cA))]
328- $Tuple13(cu, cy, bK, bF, bH, ci, by, bD, cE, cz, cA, bU, bW)
336+ then $Tuple2(0, cf)
337+ else $Tuple2(cB, cC)
338+ let cI = cH._1
339+ let cJ = cH._2
340+ let cK = [IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP), StringEntry(R(bC, bz), aC(cI, cJ, cE, bP, aZ, cD, height, lastBlock.timestamp, cF, cG))]
341+ $Tuple13(cA, cE, bP, bK, bM, cn, bD, bI, cK, cF, cG, bZ, cb)
329342 }
330343 }
331344
332345
333-func cF (cG) = {
334- let bk = aw()
335- let cH = bk[q]
336- let cI = bk[r]
337- let bD = parseIntValue(bk[o])
338- let bl = parseIntValue(bk[s])
339- let bm = parseIntValue(bk[t])
340- let cJ = aQ(cH)
341- let cK = aQ(cI)
342- let bJ = if ((cG.orderType == Buy))
343- then bb(bl, bm, (cJ + cG.amount), cK)
344- else bb(bl, bm, (cJ - cG.amount), cK)
345- let bK = C(bJ, a)
346- if (if (if (au())
346+func cL (cM) = {
347+ let bq = ax()
348+ let cN = bq[r]
349+ let cO = bq[s]
350+ let bI = parseIntValue(bq[p])
351+ let br = parseIntValue(bq[t])
352+ let bs = parseIntValue(bq[u])
353+ let cP = aR(cN)
354+ let cQ = aR(cO)
355+ let bO = if ((cM.orderType == Buy))
356+ then bh(br, bs, (cP + cM.amount), cQ)
357+ else bh(br, bs, (cP - cM.amount), cQ)
358+ let bP = D(bO, a)
359+ if (if (if (av())
347360 then true
348- else (bD == l))
361+ else (bI == m))
349362 then true
350- else (bD == m))
363+ else (bI == n))
351364 then throw("Admin blocked")
352365 else {
353- let cL = cG.assetPair.amountAsset
354- let cM = if ((cL == unit))
366+ let cR = cM.assetPair.amountAsset
367+ let cS = if ((cR == unit))
355368 then "WAVES"
356- else toBase58String(value(cL))
357- let cN = cG.assetPair.priceAsset
358- let cO = if ((cN == unit))
369+ else toBase58String(value(cR))
370+ let cT = cM.assetPair.priceAsset
371+ let cU = if ((cT == unit))
359372 then "WAVES"
360- else toBase58String(value(cN))
361- if (if ((cM != cH))
373+ else toBase58String(value(cT))
374+ if (if ((cS != cN))
362375 then true
363- else (cO != cI))
376+ else (cU != cO))
364377 then throw("Wr assets")
365378 else {
366- let cP = cG.price
367- let ch = fraction(a, bm, bl)
368- let cQ = F(cP, a, ch)
369- let cR = if ((cG.orderType == Buy))
370- then (bK >= cQ)
371- else (cQ >= bK)
379+ let cV = cM.price
380+ let cm = fraction(a, bs, br)
381+ let cW = G(cV, a, cm)
382+ let cX = if ((cM.orderType == Buy))
383+ then (bP >= cW)
384+ else (cW >= bP)
372385 true
373386 }
374387 }
375388 }
376389
377390
378-func cS (cT) = if ((size(cT.payments) != 1))
391+func cY (cZ) = if ((size(cZ.payments) != 1))
379392 then throw("1 pmnt exp")
380393 else {
381- let cU = value(cT.payments[0])
382- let bv = value(cU.assetId)
383- let ca = cU.amount
384- let cm = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
385- let bP = cm._1
386- let bQ = cm._2
387- let bD = parseIntValue(cm._9)
388- let bR = cm._10
389- if (if (au())
394+ let da = value(cZ.payments[0])
395+ let bA = value(da.assetId)
396+ let cf = da.amount
397+ let cr = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
398+ let bU = cr._1
399+ let bV = cr._2
400+ let bI = parseIntValue(cr._9)
401+ let bW = cr._10
402+ if (if (av())
390403 then true
391- else (bD == m))
392- then throw(("Admin blocked: " + toString(bD)))
393- else $Tuple5(bP, bQ, ca, bv, bR)
404+ else (bI == n))
405+ then throw(("Admin blocked: " + toString(bI)))
406+ else $Tuple5(bU, bV, cf, bA, bW)
394407 }
395408
396409
397-func cV (cW,S,cX,cY,aY,bY,bZ,ca,cb) = {
398- let cZ = bS(S, aY, value(cX).amount, value(cX).assetId, value(cY).amount, value(cY).assetId, cW, false, bY, bZ, ca, cb)
399- let da = parseIntValue(cZ._8)
400- if (if (if (au())
410+func db (dc,T,dd,de,aZ,cd,ce,cf,cg) = {
411+ let df = bX(T, aZ, value(dd).amount, value(dd).assetId, value(de).amount, value(de).assetId, dc, false, cd, ce, cf, cg)
412+ let bI = parseIntValue(df._8)
413+ if (if (if (av())
401414 then true
402- else (da == k))
415+ else (bI == l))
403416 then true
404- else (da == m))
405- then throw(("Blocked:" + toString(da)))
406- else cZ
417+ else (bI == n))
418+ then throw(("Blocked:" + toString(bI)))
419+ else df
407420 }
408421
409422
410-@Callable(cT)
411-func constructor (as,db) = if ((cT.caller != this))
423+@Callable(cZ)
424+func constructor (at,dg) = if ((cZ.caller != this))
412425 then throw("denied")
413- else [StringEntry(K(), as), StringEntry(L(), db)]
426+ else [StringEntry(L(), at), StringEntry(M(), dg)]
414427
415428
416429
417-@Callable(cT)
418-func put (dc,dd) = {
419- let de = aA()
420- let df = valueOrErrorMessage(addressFromString(de[w]), "Wr st addr")
421- let dg = valueOrErrorMessage(addressFromString(de[x]), "Wr sl addr")
422- if ((0 > dc))
423- then throw("Invalid slippage")
424- else if ((size(cT.payments) != 2))
430+@Callable(cZ)
431+func put (dh,di) = {
432+ let dj = aB()
433+ let dk = valueOrErrorMessage(addressFromString(dj[x]), "Wr st addr")
434+ let dl = valueOrErrorMessage(addressFromString(dj[y]), "Wr sl addr")
435+ if ((0 > dh))
436+ then throw("Wrong slippage")
437+ else if ((size(cZ.payments) != 2))
425438 then throw("2 pmnts expd")
426439 else {
427- let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dc, true, false, 0, "")
428- let cy = dh._2
429- let di = dh._7
430- let bR = dh._9
431- let cz = dh._10
432- let cA = dh._11
433- let bz = dh._12
434- let bA = dh._13
435- let dj = invoke(as, "emit", [cy], nil)
436- if ((dj == dj))
440+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dh, true, false, 0, "")
441+ let cE = dm._2
442+ let dn = dm._7
443+ let bW = dm._9
444+ let cF = dm._10
445+ let cG = dm._11
446+ let bE = dm._12
447+ let bF = dm._13
448+ let do = invoke(at, "emit", [cE], nil)
449+ if ((do == do))
437450 then {
438- let dk = if ((cz > 0))
439- then invoke(dg, "put", nil, [AttachedPayment(bz, cz)])
451+ let dp = if ((cF > 0))
452+ then invoke(dl, "put", nil, [AttachedPayment(bE, cF)])
440453 else nil
441- if ((dk == dk))
454+ if ((dp == dp))
442455 then {
443- let dl = if ((cA > 0))
444- then invoke(dg, "put", nil, [AttachedPayment(bA, cA)])
456+ let dq = if ((cG > 0))
457+ then invoke(dl, "put", nil, [AttachedPayment(bF, cG)])
445458 else nil
446- if ((dl == dl))
459+ if ((dq == dq))
447460 then {
448- let dm = if (dd)
461+ let dr = if (di)
449462 then {
450- let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
451- if ((dn == dn))
463+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
464+ if ((ds == ds))
452465 then nil
453466 else throw("Strict value is not equal to itself.")
454467 }
455- else [ScriptTransfer(cT.caller, cy, di)]
456- (bR ++ dm)
468+ else [ScriptTransfer(cZ.caller, cE, dn)]
469+ (bW ++ dr)
457470 }
458471 else throw("Strict value is not equal to itself.")
459472 }
460473 else throw("Strict value is not equal to itself.")
461474 }
462475 else throw("Strict value is not equal to itself.")
463476 }
464477 }
465478
466479
467480
468-@Callable(cT)
469-func putOneTkn (do,dp,dq,aY,dd) = {
470- let bk = aA()
471- if (true)
472- then throw("off")
481+@Callable(cZ)
482+func putOneTkn (dt,du,dv,aZ,di) = {
483+ let bq = aB()
484+ let dk = valueOrErrorMessage(addressFromString(bq[x]), "Wr st addr")
485+ let dl = valueOrErrorMessage(addressFromString(bq[y]), "Wr sl addr")
486+ let dw = valueOrErrorMessage(addressFromString(bq[z]), "Wr gwx addr")
487+ let dx = ax()
488+ let bE = dx[r]
489+ let bF = dx[s]
490+ let bG = parseIntValue(dx[t])
491+ let bH = parseIntValue(dx[u])
492+ if (if (if (if ((0 >= aZ))
493+ then true
494+ else (0 >= dt))
495+ then true
496+ else (0 >= du))
497+ then true
498+ else (0 >= dv))
499+ then throw("Wrong params")
500+ else if ((size(cZ.payments) != 1))
501+ then throw("1 pmnt expd")
502+ else {
503+ let da = value(cZ.payments[0])
504+ let bA = toBase58String(value(da.assetId))
505+ let cf = da.amount
506+ if (if (if ((dt > cf))
507+ then true
508+ else (du > cf))
509+ then true
510+ else (10000000 > cf))
511+ then throw("Wrong pmt amt")
512+ else {
513+ let bK = aR(bE)
514+ let bM = aR(bF)
515+ let dy = if ((bA == bE))
516+ then $Tuple6((bK - cf), bM, (cf - dt), du, 0, 0)
517+ else if ((bA == bF))
518+ then $Tuple6(bK, (bM - cf), 0, 0, (cf - du), dt)
519+ else throw("wrong pmtAssetId")
520+ let dz = dy._1
521+ let dA = dy._2
522+ let dB = dy._3
523+ let dC = dy._4
524+ let dD = dy._5
525+ let dE = dy._6
526+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
527+ let bd = invoke(dw, "calcD", [toString(toBigInt(((dz + dB) - dE))), toString(toBigInt(((dA + dD) - dC))), au, g, h], nil)
528+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
529+ if ((dF == dF))
530+ then {
531+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(fromBase58String(bE), dt), AttachedPayment(fromBase58String(bF), du), aZ, true, true, cf, bA)
532+ let dG = dm._2
533+ let dn = dm._7
534+ let bW = dm._9
535+ let cF = dm._10
536+ let cG = dm._11
537+ let dH = aW(toBigInt(dG), toBigInt(dv), toBigInt(aZ))
538+ let cE = toInt(dH._2)
539+ let do = invoke(at, "emit", [cE], nil)
540+ if ((do == do))
541+ then {
542+ let dp = if ((cF > 0))
543+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bE), cF)])
544+ else nil
545+ if ((dp == dp))
546+ then {
547+ let dq = if ((cG > 0))
548+ then invoke(dl, "put", nil, [AttachedPayment(fromBase58String(bF), cG)])
549+ else nil
550+ if ((dq == dq))
551+ then {
552+ let dr = if (di)
553+ then {
554+ let ds = invoke(dk, "stake", nil, [AttachedPayment(dn, cE)])
555+ if ((ds == ds))
556+ then nil
557+ else throw("Strict value is not equal to itself.")
558+ }
559+ else [ScriptTransfer(cZ.caller, cE, dn)]
560+ (bW ++ dr)
561+ }
562+ else throw("Strict value is not equal to itself.")
563+ }
564+ else throw("Strict value is not equal to itself.")
565+ }
566+ else throw("Strict value is not equal to itself.")
567+ }
568+ else throw("Strict value is not equal to itself.")
569+ }
570+ }
571+ }
572+
573+
574+
575+@Callable(cZ)
576+func putForFree (dI) = if ((0 > dI))
577+ then throw("Wrong slpg")
578+ else if ((size(cZ.payments) != 2))
579+ then throw("2 pmnts expd")
473580 else {
474- let df = valueOrErrorMessage(addressFromString(bk[w]), "Wr st addr")
475- let dg = valueOrErrorMessage(addressFromString(bk[x]), "Wr sl addr")
476- let dr = valueOrErrorMessage(addressFromString(bk[y]), "Wr gwx addr")
477- let ds = aw()
478- let bz = ds[q]
479- let bA = ds[r]
480- let bB = parseIntValue(ds[s])
481- let bC = parseIntValue(ds[t])
482- if (if (if (if ((0 >= aY))
581+ let dm = db(toString(cZ.caller), toBase58String(cZ.transactionId), AttachedPayment(value(cZ.payments[0]).assetId, value(cZ.payments[0]).amount), cZ.payments[1], dI, false, false, 0, "")
582+ dm._9
583+ }
584+
585+
586+
587+@Callable(cZ)
588+func get () = {
589+ let cr = cY(cZ)
590+ let dJ = cr._1
591+ let bV = cr._2
592+ let cf = cr._3
593+ let bA = cr._4
594+ let bW = cr._5
595+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
596+ if ((dK == dK))
597+ then bW
598+ else throw("Strict value is not equal to itself.")
599+ }
600+
601+
602+
603+@Callable(cZ)
604+func getOneTkn (dL,dM,dN,dO,aZ) = if ((size(cZ.payments) != 1))
605+ then throw("1 pmnt expd")
606+ else {
607+ let bq = ax()
608+ let bD = bq[q]
609+ let bE = bq[r]
610+ let bF = bq[s]
611+ let bG = parseIntValue(bq[t])
612+ let bH = parseIntValue(bq[u])
613+ let bI = bq[p]
614+ let dP = aB()
615+ let dw = valueOrErrorMessage(addressFromString(dP[z]), "Wr sl addr")
616+ let da = value(cZ.payments[0])
617+ let bC = cZ.caller
618+ let bz = toBase58String(cZ.transactionId)
619+ let bA = value(da.assetId)
620+ let cf = da.amount
621+ if ((1000000000 > cf))
622+ then throw("Min payment is 10 LP")
623+ else if (if (if ((0 > aZ))
483624 then true
484- else (0 >= do))
625+ else (0 > dL))
485626 then true
486- else (0 >= dp))
487- then true
488- else (0 >= dq))
627+ else (0 > dN))
489628 then throw("Wrong params")
490- else if ((size(cT.payments) != 1))
491- then throw("1 pmnt expd")
629+ else if ((bD != toBase58String(bA)))
630+ then throw("Wrong LP")
492631 else {
493- let cU = value(cT.payments[0])
494- let bv = toBase58String(value(cU.assetId))
495- let ca = cU.amount
496- if (if (if ((do > ca))
632+ let df = by(toBase58String(cZ.transactionId), toBase58String(bA), cf, cZ.caller)
633+ let dQ = df._1
634+ let dR = df._2
635+ let bK = aR(bE)
636+ let bM = aR(bF)
637+ let dS = if ((dO == bE))
638+ then $Tuple7((bK - dQ), (bM - dR), dL, dR, 0, 0, (dQ + dL))
639+ else if ((dO == bF))
640+ then $Tuple7((bK - dQ), (bM - dR), 0, 0, dL, dQ, (dR + dL))
641+ else throw("wrong outAssetId")
642+ let dz = dS._1
643+ let dA = dS._2
644+ let dB = dS._3
645+ let dC = dS._4
646+ let dD = dS._5
647+ let dE = dS._6
648+ let dT = dS._7
649+ if (if ((0 > dB))
497650 then true
498- else (dp > ca))
499- then true
500- else (10000000 > ca))
501- then throw("Wrong pmt amt")
651+ else (0 > dD))
652+ then throw("Wrong calc")
502653 else {
503- let bF = aQ(bz)
504- let bH = aQ(bA)
505- let dt = if ((bv == bz))
506- then $Tuple6((bF - ca), bH, (ca - do), dp, 0, 0)
507- else if ((bv == bA))
508- then $Tuple6(bF, (bH - ca), 0, 0, (ca - dp), do)
509- else throw("wrong pmtAssetId")
510- let du = dt._1
511- let dv = dt._2
512- let dw = dt._3
513- let dx = dt._4
514- let dy = dt._5
515- let dz = dt._6
516- let dA = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
517- let dB = invoke(dr, "calcD", [toString(toBigInt(((du + dw) - dz))), toString(toBigInt(((dv + dy) - dx))), at, f, g], nil)
518- let dC = aV(parseBigIntValue(al(dB)), parseBigIntValue(al(dA)), toBigInt(1000))
519- if ((dC == dC))
654+ let be = invoke(dw, "calcD", [toString(dz), toString(dA), au, g, h], nil)
655+ let bd = invoke(dw, "calcD", [toString(((dz - dB) + dE)), toString(((dA + dC) - dD)), au, g, h], nil)
656+ let dF = bc(parseBigIntValue(am(bd)), parseBigIntValue(am(be)), f)
657+ if ((dF == dF))
520658 then {
521- let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(fromBase58String(bz), do), AttachedPayment(fromBase58String(bA), dp), 50000000000, true, true, ca, bv)
522- let dD = dh._2
523- let di = dh._7
524- let bR = dh._9
525- let cz = dh._10
526- let cA = dh._11
527- let dE = aV(toBigInt(dD), toBigInt(dq), toBigInt(aY))
528- let cy = toInt(dE._2)
529- let dj = invoke(as, "emit", [cy], nil)
530- if ((dj == dj))
659+ let dU = aW(toBigInt(dT), toBigInt(dN), toBigInt(aZ))
660+ if ((dU == dU))
531661 then {
532- let dk = if ((cz > 0))
533- then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bz), cz)])
534- else nil
535- if ((dk == dk))
662+ let dV = if ((dO == bE))
663+ then $Tuple2(toInt(dU._2), 0)
664+ else $Tuple2(0, toInt(dU._2))
665+ let dW = dV._1
666+ let dX = dV._2
667+ let bO = aT(A(bM, bH), A(bK, bG))
668+ let bP = D(bO, a)
669+ let bW = [ScriptTransfer(bC, (dW + dX), if ((dO == "WAVES"))
670+ then unit
671+ else fromBase58String(dO)), StringEntry(U(toString(bC), bz), aN(dW, dX, cf, bP, height, lastBlock.timestamp)), IntegerEntry(N(), bP), IntegerEntry(O(height, lastBlock.timestamp), bP)]
672+ if ((bW == bW))
536673 then {
537- let dl = if ((cA > 0))
538- then invoke(dg, "put", nil, [AttachedPayment(fromBase58String(bA), cA)])
539- else nil
540- if ((dl == dl))
541- then {
542- let dm = if (dd)
543- then {
544- let dn = invoke(df, "stake", nil, [AttachedPayment(di, cy)])
545- if ((dn == dn))
546- then nil
547- else throw("Strict value is not equal to itself.")
548- }
549- else [ScriptTransfer(cT.caller, cy, di)]
550- (bR ++ dm)
551- }
674+ let dY = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
675+ if ((dY == dY))
676+ then bW
552677 else throw("Strict value is not equal to itself.")
553678 }
554679 else throw("Strict value is not equal to itself.")
555680 }
556681 else throw("Strict value is not equal to itself.")
557682 }
558683 else throw("Strict value is not equal to itself.")
559684 }
560685 }
561- }
562- }
686+ }
563687
564688
565689
566-@Callable(cT)
567-func putForFree (dF) = if ((0 > dF))
568- then throw("Invalid slippage")
569- else if ((size(cT.payments) != 2))
570- then throw("2 pmnts expd")
571- else {
572- let dh = cV(toString(cT.caller), toBase58String(cT.transactionId), AttachedPayment(value(cT.payments[0]).assetId, value(cT.payments[0]).amount), cT.payments[1], dF, false, false, 0, "")
573- dh._9
574- }
575-
576-
577-
578-@Callable(cT)
579-func get () = {
580- let cm = cS(cT)
581- let dG = cm._1
582- let bQ = cm._2
583- let ca = cm._3
584- let bv = cm._4
585- let bR = cm._5
586- let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
587- if ((dH == dH))
588- then bR
589- else throw("Strict value is not equal to itself.")
590- }
591-
592-
593-
594-@Callable(cT)
595-func getOneTkn (dI,dJ,dK,dL,aY) = if ((size(cT.payments) != 1))
596- then throw("1 pmnt expd")
597- else if (true)
598- then throw("off")
599- else {
600- let bk = aw()
601- let by = bk[p]
602- let bz = bk[q]
603- let bA = bk[r]
604- let bB = parseIntValue(bk[s])
605- let bC = parseIntValue(bk[t])
606- let bD = bk[o]
607- let dM = aA()
608- let dr = valueOrErrorMessage(addressFromString(dM[y]), "Wr sl addr")
609- let cU = value(cT.payments[0])
610- let bx = cT.caller
611- let bu = toBase58String(cT.transactionId)
612- let bv = value(cU.assetId)
613- let ca = cU.amount
614- if (if (if (if ((0 > aY))
615- then true
616- else (0 > dI))
617- then true
618- else (0 > dJ))
619- then true
620- else (0 > dK))
621- then throw("Wrong params")
622- else if ((by != toBase58String(bv)))
623- then throw("Invalid LP")
624- else {
625- let cZ = bt(toBase58String(cT.transactionId), toBase58String(bv), ca, cT.caller)
626- let dN = cZ._1
627- let dO = cZ._2
628- let bF = aQ(bz)
629- let bH = aQ(bA)
630- let dP = if ((dL == bz))
631- then $Tuple7((bF - dN), (bH - dO), (dK - dN), dJ, 0, 0, (dN + dI))
632- else if ((dL == bA))
633- then $Tuple7((bF - dN), (bH - dO), 0, 0, (dK - dO), dI, (dO + dJ))
634- else throw("wrong outAssetId")
635- let du = dP._1
636- let dv = dP._2
637- let dw = dP._3
638- let dx = dP._4
639- let dy = dP._5
640- let dz = dP._6
641- let dQ = dP._7
642- if (if ((0 > dw))
643- then true
644- else (0 > dy))
645- then throw("Invalid calc")
646- else {
647- let dA = invoke(dr, "calcD", [toString(du), toString(dv), at, f, g], nil)
648- let dB = invoke(dr, "calcD", [toString(((du - dw) + dz)), toString(((dv + dx) - dy)), at, f, g], nil)
649- let dC = aV(parseBigIntValue(al(dB)), parseBigIntValue(al(dA)), toBigInt(1000))
650- if ((dC == dC))
651- then {
652- let dR = aV(toBigInt(dQ), toBigInt(dK), toBigInt(aY))
653- if ((dR == dR))
654- then {
655- let dS = if ((dL == bz))
656- then $Tuple2(toInt(dR._2), 0)
657- else $Tuple2(0, toInt(dR._2))
658- let dT = dS._1
659- let dU = dS._2
660- let bJ = aS(z(bH, bC), z(bF, bB))
661- let bK = C(bJ, a)
662- let bR = [ScriptTransfer(bx, (dT + dU), if ((dL == "WAVES"))
663- then unit
664- else fromBase58String(dL)), StringEntry(T(toString(bx), bu), aM(dT, dU, ca, bK, height, lastBlock.timestamp)), IntegerEntry(M(), bK), IntegerEntry(N(height, lastBlock.timestamp), bK)]
665- if ((bR == bR))
666- then {
667- let dV = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
668- if ((dV == dV))
669- then bR
670- else throw("Strict value is not equal to itself.")
671- }
672- else throw("Strict value is not equal to itself.")
673- }
674- else throw("Strict value is not equal to itself.")
675- }
676- else throw("Strict value is not equal to itself.")
677- }
678- }
679- }
680-
681-
682-
683-@Callable(cT)
684-func getNoLess (dW,dX) = {
685- let cm = cS(cT)
686- let bP = cm._1
687- let bQ = cm._2
688- let ca = cm._3
689- let bv = cm._4
690- let bR = cm._5
691- if ((dW > bP))
692- then throw(((("Failed: " + toString(bP)) + " < ") + toString(dW)))
693- else if ((dX > bQ))
694- then throw(((("Failed: " + toString(bQ)) + " < ") + toString(dX)))
690+@Callable(cZ)
691+func getNoLess (dZ,ea) = {
692+ let cr = cY(cZ)
693+ let bU = cr._1
694+ let bV = cr._2
695+ let cf = cr._3
696+ let bA = cr._4
697+ let bW = cr._5
698+ if ((dZ > bU))
699+ then throw(((("Failed: " + toString(bU)) + " < ") + toString(dZ)))
700+ else if ((ea > bV))
701+ then throw(((("Failed: " + toString(bV)) + " < ") + toString(ea)))
695702 else {
696- let dH = invoke(as, "burn", [ca], [AttachedPayment(bv, ca)])
697- if ((dH == dH))
698- then bR
703+ let dK = invoke(at, "burn", [cf], [AttachedPayment(bA, cf)])
704+ if ((dK == dK))
705+ then bW
699706 else throw("Strict value is not equal to itself.")
700707 }
701708 }
702709
703710
704711
705-@Callable(cT)
706-func unstakeAndGet (dY) = {
707- let dZ = if ((size(cT.payments) != 0))
712+@Callable(cZ)
713+func unstakeAndGet (eb) = {
714+ let ec = if ((size(cZ.payments) != 0))
708715 then throw("No pmnts expd")
709716 else true
710- if ((dZ == dZ))
717+ if ((ec == ec))
711718 then {
712- let bk = aw()
713- let ea = aA()
714- let di = fromBase58String(bk[p])
715- let eb = valueOrErrorMessage(addressFromString(ea[w]), "Wr st addr")
716- let ec = invoke(eb, "unstake", [toBase58String(di), dY], nil)
717- if ((ec == ec))
719+ let bq = ax()
720+ let ed = aB()
721+ let dn = fromBase58String(bq[q])
722+ let ee = valueOrErrorMessage(addressFromString(ed[x]), "Wr st addr")
723+ let ef = invoke(ee, "unstake", [toBase58String(dn), eb], nil)
724+ if ((ef == ef))
718725 then {
719- let cZ = bt(toBase58String(cT.transactionId), toBase58String(di), dY, cT.caller)
720- let bD = parseIntValue(cZ._9)
721- let bR = cZ._10
722- let ed = if (if (au())
726+ let df = by(toBase58String(cZ.transactionId), toBase58String(dn), eb, cZ.caller)
727+ let bI = parseIntValue(df._9)
728+ let bW = df._10
729+ let eg = if (if (av())
723730 then true
724- else (bD == m))
725- then throw(("Blocked: " + toString(bD)))
731+ else (bI == n))
732+ then throw(("Blocked: " + toString(bI)))
726733 else true
727- if ((ed == ed))
734+ if ((eg == eg))
728735 then {
729- let dH = invoke(as, "burn", [dY], [AttachedPayment(di, dY)])
730- if ((dH == dH))
731- then bR
736+ let dK = invoke(at, "burn", [eb], [AttachedPayment(dn, eb)])
737+ if ((dK == dK))
738+ then bW
732739 else throw("Strict value is not equal to itself.")
733740 }
734741 else throw("Strict value is not equal to itself.")
735742 }
736743 else throw("Strict value is not equal to itself.")
737744 }
738745 else throw("Strict value is not equal to itself.")
739746 }
740747
741748
742749
743-@Callable(cT)
744-func activate (ee,ef) = if ((toString(cT.caller) != toString(as)))
750+@Callable(cZ)
751+func activate (eh,ei) = if ((toString(cZ.caller) != toString(at)))
745752 then throw("denied")
746- else $Tuple2([StringEntry(U(), ee), StringEntry(V(), ef)], "success")
753+ else $Tuple2([StringEntry(V(), eh), StringEntry(W(), ei)], "success")
747754
748755
749756
750-@Callable(cT)
751-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aw())
757+@Callable(cZ)
758+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ax())
752759
753760
754761
755-@Callable(cT)
756-func getAccBalanceWrapperREADONLY (aR) = $Tuple2(nil, aQ(aR))
762+@Callable(cZ)
763+func getAccBalanceWrapperREADONLY (aS) = $Tuple2(nil, aR(aS))
757764
758765
759766
760-@Callable(cT)
761-func calcPricesWrapperREADONLY (be,bf,bj) = {
762- let bs = bi(be, bf, bj)
763- $Tuple2(nil, [toString(bs[0]), toString(bs[1]), toString(bs[2])])
767+@Callable(cZ)
768+func calcPricesWrapperREADONLY (bk,bl,bp) = {
769+ let ej = bo(bk, bl, bp)
770+ $Tuple2(nil, [toString(ej[0]), toString(ej[1]), toString(ej[2])])
764771 }
765772
766773
767774
768-@Callable(cT)
769-func fromX18WrapperREADONLY (D,E) = $Tuple2(nil, C(parseBigIntValue(D), E))
775+@Callable(cZ)
776+func fromX18WrapperREADONLY (E,F) = $Tuple2(nil, D(parseBigIntValue(E), F))
770777
771778
772779
773-@Callable(cT)
774-func toX18WrapperREADONLY (A,B) = $Tuple2(nil, toString(z(A, B)))
780+@Callable(cZ)
781+func toX18WrapperREADONLY (B,C) = $Tuple2(nil, toString(A(B, C)))
775782
776783
777784
778-@Callable(cT)
779-func calcPriceBigIntWrapperREADONLY (aT,aU) = $Tuple2(nil, toString(aS(parseBigIntValue(aT), parseBigIntValue(aU))))
785+@Callable(cZ)
786+func calcPriceBigIntWrapperREADONLY (aU,aV) = $Tuple2(nil, toString(aT(parseBigIntValue(aU), parseBigIntValue(aV))))
780787
781788
782789
783-@Callable(cT)
784-func estimatePutOperationWrapperREADONLY (bu,aY,bT,bU,bV,bW,eg,bX,bY) = $Tuple2(nil, bS(bu, aY, bT, bU, bV, bW, eg, bX, bY, false, 0, ""))
790+@Callable(cZ)
791+func estimatePutOperationWrapperREADONLY (bz,aZ,bY,bZ,ca,cb,ek,cc,cd) = $Tuple2(nil, bX(bz, aZ, bY, bZ, ca, cb, ek, cc, cd, false, 0, ""))
785792
786793
787794
788-@Callable(cT)
789-func estimateGetOperationWrapperREADONLY (bu,eh,bw,eg) = {
790- let cm = bt(bu, eh, bw, addressFromStringValue(eg))
791- $Tuple2(nil, $Tuple10(cm._1, cm._2, cm._3, cm._4, cm._5, cm._6, cm._7, toString(cm._8), cm._9, cm._10))
795+@Callable(cZ)
796+func estimateGetOperationWrapperREADONLY (bz,el,bB,ek) = {
797+ let cr = by(bz, el, bB, addressFromStringValue(ek))
798+ $Tuple2(nil, $Tuple10(cr._1, cr._2, cr._3, cr._4, cr._5, cr._6, cr._7, toString(cr._8), cr._9, cr._10))
792799 }
793800
794801
795-@Verifier(ei)
796-func ej () = {
797- let am = ei
798- if ($isInstanceOf(am, "Order"))
802+@Verifier(em)
803+func en () = {
804+ let an = em
805+ if ($isInstanceOf(an, "Order"))
799806 then {
800- let cG = am
801- let ek = av()
802- let ai = cF(cG)
803- let el = sigVerify(cG.bodyBytes, cG.proofs[0], cG.senderPublicKey)
804- let em = sigVerify(cG.bodyBytes, cG.proofs[1], ek)
805- if (if (if (ai)
806- then el
807+ let cM = an
808+ let eo = aw()
809+ let aj = cL(cM)
810+ let ep = sigVerify(cM.bodyBytes, cM.proofs[0], cM.senderPublicKey)
811+ let eq = sigVerify(cM.bodyBytes, cM.proofs[1], eo)
812+ if (if (if (aj)
813+ then ep
807814 else false)
808- then em
815+ then eq
809816 else false)
810817 then true
811- else ah(ai, el, em)
818+ else ai(aj, ep, eq)
812819 }
813820 else {
814- let en = valueOrElse(getString(this, L()), i)
815- if ((en == i))
816- then sigVerify(ei.bodyBytes, ei.proofs[0], ei.senderPublicKey)
817- else sigVerify(ei.bodyBytes, ei.proofs[0], fromBase58String(en))
821+ let er = valueOrElse(getString(this, M()), j)
822+ if ((er == j))
823+ then sigVerify(em.bodyBytes, em.proofs[0], em.senderPublicKey)
824+ else sigVerify(em.bodyBytes, em.proofs[0], fromBase58String(er))
818825 }
819826 }
820827

github/deemru/w8io/6500d08 
230.89 ms