tx · GjmEhckhJSRVfnGoGqE7qgMnQWmBWTvCWkKz3JkKqrK2

3P9WPMLS4iwrvU125TLoY1PafHYnN2Tu5Hh:  -0.05000000 Waves

2021.10.11 20:47 [2806912] smart account 3P9WPMLS4iwrvU125TLoY1PafHYnN2Tu5Hh > SELF 0.00000000 Waves

{ "type": 13, "id": "GjmEhckhJSRVfnGoGqE7qgMnQWmBWTvCWkKz3JkKqrK2", "fee": 5000000, "feeAssetId": null, "timestamp": 1633974483379, "version": 2, "chainId": 87, "sender": "3P9WPMLS4iwrvU125TLoY1PafHYnN2Tu5Hh", "senderPublicKey": "Aa82oS5bRBtJGPTmX21yn1mM6K7o5411v281eJPBdZDF", "proofs": [ "4gfbnTkBxVJTTnfLbiuyd6viYNzKZH1erU92HaaQVXqSU6gezjukYgaf7KB6wTCfFd1XB8cbs5e9M48ARSiBKCKJ" ], "script": "base64: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JXNfX3ByaWNlQXNzZXQBAAAADGtleUtIaXN0b3JpYwAAAAIAAAABaAAAAAl0aW1lc3RhbXAJAAS5AAAAAgkABEwAAAACAgAAABMlcyVzJWQlZF9fS19oaXN0b3J5CQAETAAAAAIJAAGkAAAAAQUAAAABaAkABEwAAAACCQABpAAAAAEFAAAACXRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAAEGtleUZhY3RvcnlDb25maWcAAAAAAgAAABElc19fZmFjdG9yeUNvbmZpZwEAAAApa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMAAAABAAAAE3Bvb2xDb250cmFjdEFkZHJlc3MJAAEsAAAAAgkAASwAAAACAgAAAAglcyVzJXNfXwUAAAATcG9vbENvbnRyYWN0QWRkcmVzcwIAAAAgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAAAADWtleVBvb2xDb25maWcAAAACAAAACWlBbXRBc3NldAAAAAtpUHJpY2VBc3NldAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAglZCVkJXNfXwUAAAAJaUFtdEFzc2V0AgAAAAJfXwUAAAALaVByaWNlQXNzZXQCAAAACF9fY29uZmlnAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABNrZXlBbGxQb29sc1NodXRkb3duAAAAAAIAAAAMJXNfX3NodXRkb3duAQAAAA1rZXlQb29sV2VpZ2h0AAAAAQAAAA9jb250cmFjdEFkZHJlc3MJAAEsAAAAAgIAAAASJXMlc19fcG9vbFdlaWdodF9fBQAAAA9jb250cmFjdEFkZHJlc3MBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAS5AAAAAgkABEwAAAACAgAAAAptYW5kYXRvcnkgCQAETAAAAAIJAAQlAAAAAQUAAAAHYWRkcmVzcwkABEwAAAACAgAAAAEuCQAETAAAAAIFAAAAA2tleQkABEwAAAACAgAAAA8gaXMgbm90IGRlZmluZWQFAAAAA25pbAIAAAAAAQAAAAxnZXRJbnRPckZhaWwAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAHYWRkcmVzcwUAAAADa2V5CQAEuQAAAAIJAARMAAAAAgIAAAAKbWFuZGF0b3J5IAkABEwAAAACCQAEJQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgIAAAABLgkABEwAAAACBQAAAANrZXkJAARMAAAAAgIAAAAPIGlzIG5vdCBkZWZpbmVkBQAAAANuaWwCAAAAAAAAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAABAAAAEGlzR2xvYmFsU2h1dGRvd24AAAAACQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAE2tleUFsbFBvb2xzU2h1dGRvd24AAAAABwEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACGFtdEFzc2V0CQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAC2tleUFtdEFzc2V0AAAAAAQAAAAKcHJpY2VBc3NldAkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAABHRoaXMJAQAAAA1rZXlQcmljZUFzc2V0AAAAAAQAAAALaVByaWNlQXNzZXQJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAKcHJpY2VBc3NldAQAAAAJaUFtdEFzc2V0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAACGFtdEFzc2V0CQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAA9mYWN0b3J5Q29udHJhY3QJAQAAAA1rZXlQb29sQ29uZmlnAAAAAgkAAaQAAAABBQAAAAlpQW10QXNzZXQJAAGkAAAAAQUAAAALaVByaWNlQXNzZXQFAAAAA1NFUAEAAAAQZ2V0RmFjdG9yeUNvbmZpZwAAAAAJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIFAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEGtleUZhY3RvcnlDb25maWcAAAAABQAAAANTRVABAAAAEWRhdGFQdXRBY3Rpb25JbmZvAAAACgAAAA1pbkFtdEFzc2V0QW10AAAAD2luUHJpY2VBc3NldEFtdAAAAAhvdXRMcEFtdAAAAAVwcmljZQAAAB1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlcgAAABVzbGlwcGFnZVRvbGVyYW5jZVJlYWwAAAAIdHhIZWlnaHQAAAALdHhUaW1lc3RhbXAAAAASc2xpcGFnZUFtdEFzc2V0QW10AAAAFHNsaXBhZ2VQcmljZUFzc2V0QW10CQAEuQAAAAIJAARMAAAAAgIAAAAUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA1pbkFtdEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAPaW5QcmljZUFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAIb3V0THBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAAHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyCQAETAAAAAIJAAGkAAAAAQUAAAAVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsCQAETAAAAAIJAAGkAAAAAQUAAAAIdHhIZWlnaHQJAARMAAAAAgkAAaQAAAABBQAAAAt0eFRpbWVzdGFtcAkABEwAAAACCQABpAAAAAEFAAAAEnNsaXBhZ2VBbXRBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAFHNsaXBhZ2VQcmljZUFzc2V0QW10BQAAAANuaWwFAAAAA1NFUAEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGAAAADm91dEFtdEFzc2V0QW10AAAAEG91dFByaWNlQXNzZXRBbXQAAAAHaW5McEFtdAAAAAVwcmljZQAAAAh0eEhlaWdodAAAAAt0eFRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAADm91dEFtdEFzc2V0QW10CQAETAAAAAIJAAGkAAAAAQUAAAAQb3V0UHJpY2VBc3NldEFtdAkABEwAAAACCQABpAAAAAEFAAAAB2luTHBBbXQJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAACHR4SGVpZ2h0CQAETAAAAAIJAAGkAAAAAQUAAAALdHhUaW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQAAAAdhc3NldElkAwkAAAAAAAACBQAAAAdhc3NldElkAgAAAAVXQVZFUwgJAAPvAAAAAQUAAAAEdGhpcwAAAAlhdmFpbGFibGUJAAPwAAAAAgUAAAAEdGhpcwkAAlkAAAABBQAAAAdhc3NldElkAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACAAAACHByQW10WDE4AAAACGFtQW10WDE4CQABPAAAAAMFAAAACHByQW10WDE4BQAAAAdzY2FsZTE4BQAAAAhhbUFtdFgxOAEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQAAAAKYW1Bc3NldERjbQAAAApwckFzc2V0RGNtAAAABWFtQW10AAAABXByQW10BAAAAA5hbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAFYW1BbXQFAAAACmFtQXNzZXREY20EAAAAEHByaWNlQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAABXByQW10BQAAAApwckFzc2V0RGNtCQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAQcHJpY2VBc3NldEFtdFgxOAUAAAAOYW10QXNzZXRBbXRYMTgBAAAACmNhbGNQcmljZXMAAAADAAAAC2FtdEFzc2V0QW10AAAADXByaWNlQXNzZXRBbXQAAAAFbHBBbXQEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACXBvb2xQcmljZQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQUAAAALYW10QXNzZXRBbXQFAAAADXByaWNlQXNzZXRBbXQEAAAADmFtdEFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAthbXRBc3NldEFtdAUAAAALYW10QXNzZXREY20EAAAAEHByaWNlQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAADXByaWNlQXNzZXRBbXQFAAAADXByaWNlQXNzZXREY20EAAAACGxwQW10WDE4CQEAAAAFdG9YMTgAAAACBQAAAAVscEFtdAUAAAAGc2NhbGU4BAAAABFscFByaWNlSW5BbXRBc3NldAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADmFtdEFzc2V0QW10WDE4BQAAAAhscEFtdFgxOAQAAAATbHBQcmljZUluUHJpY2VBc3NldAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAAEHByaWNlQXNzZXRBbXRYMTgFAAAACGxwQW10WDE4CQAETAAAAAIFAAAACXBvb2xQcmljZQkABEwAAAACBQAAABFscFByaWNlSW5BbXRBc3NldAkABEwAAAACBQAAABNscFByaWNlSW5QcmljZUFzc2V0BQAAAANuaWwBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAAAAAZ0eElkNTgAAAAKcG10QXNzZXRJZAAAAAhwbXRMcEFtdAAAAAt1c2VyQWRkcmVzcwQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAACWFtQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAACXByQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAKYW1Bc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAACnByQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAApscEVtaXNzaW9uCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEJAAJZAAAAAQUAAAAJbHBBc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgBQAAAAlscEFzc2V0SWQCAAAADiBkb2Vzbid0IGV4aXN0AAAACHF1YW50aXR5AwkBAAAAAiE9AAAAAgUAAAAJbHBBc3NldElkBQAAAApwbXRBc3NldElkCQAAAgAAAAECAAAAFUludmFsaWQgYXNzZXQgcGFzc2VkLgQAAAAJYW1CYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAACWFtQXNzZXRJZAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAACmFtQXNzZXREY20EAAAACXByQmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAlwckFzc2V0SWQEAAAADHByQmFsYW5jZVgxOAkBAAAABXRvWDE4AAAAAgUAAAAJcHJCYWxhbmNlBQAAAApwckFzc2V0RGNtBAAAAAtjdXJQcmljZVgxOAkBAAAAD2NhbGNQcmljZUJpZ0ludAAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAMYW1CYWxhbmNlWDE4BAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4BAAAAAtwbXRMcEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAIcG10THBBbXQFAAAABnNjYWxlOAQAAAANbHBFbWlzc2lvblgxOAkBAAAABXRvWDE4AAAAAgUAAAAKbHBFbWlzc2lvbgUAAAAGc2NhbGU4BAAAAAtvdXRBbUFtdFgxOAkAATwAAAADBQAAAAxhbUJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAA1scEVtaXNzaW9uWDE4BAAAAAtvdXRQckFtdFgxOAkAATwAAAADBQAAAAxwckJhbGFuY2VYMTgFAAAAC3BtdExwQW10WDE4BQAAAA1scEVtaXNzaW9uWDE4BAAAAAhvdXRBbUFtdAkBAAAAB2Zyb21YMTgAAAACBQAAAAtvdXRBbUFtdFgxOAUAAAAKYW1Bc3NldERjbQQAAAAIb3V0UHJBbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAALb3V0UHJBbXRYMTgFAAAACnByQXNzZXREY20EAAAABXN0YXRlAwkAAAAAAAACBQAAAAZ0eElkNTgCAAAAAAUAAAADbmlsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAhvdXRBbUFtdAMJAAAAAAAAAgUAAAAJYW1Bc3NldElkAgAAAAVXQVZFUwUAAAAEdW5pdAkAAlkAAAABBQAAAAlhbUFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAACG91dFByQW10AwkAAAAAAAACBQAAAAlwckFzc2V0SWQCAAAABVdBVkVTBQAAAAR1bml0CQACWQAAAAEFAAAACXByQXNzZXRJZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5R2V0QWN0aW9uQnlVc2VyAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YUdldEFjdGlvbkluZm8AAAAGBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAACHBtdExwQW10BQAAAAhjdXJQcmljZQUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5UHJpY2VIaXN0b3J5AAAAAgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAIY3VyUHJpY2UFAAAAA25pbAkABRwAAAAKBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAACWFtQXNzZXRJZAUAAAAJcHJBc3NldElkBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAALY3VyUHJpY2VYMTgFAAAACnBvb2xTdGF0dXMFAAAABXN0YXRlAQAAABRlc3RpbWF0ZVB1dE9wZXJhdGlvbgAAAAkAAAAGdHhJZDU4AAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAADGluQW1Bc3NldEFtdAAAAAtpbkFtQXNzZXRJZAAAAAxpblByQXNzZXRBbXQAAAALaW5QckFzc2V0SWQAAAALdXNlckFkZHJlc3MAAAAKaXNFdmFsdWF0ZQAAAAZlbWl0THAEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADGFtQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAADHByQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAALaUFtdEFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhJQW10QXNzZXRJZAQAAAANaVByaWNlQXNzZXRJZAkAAZEAAAACBQAAAANjZmcFAAAAEGlkeElQcmljZUFzc2V0SWQEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAAKcG9vbFN0YXR1cwkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAACmxwRW1pc3Npb24ICQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAPsAAAAAQUAAAAJbHBBc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAGQXNzZXQgCQACWAAAAAEFAAAACWxwQXNzZXRJZAIAAAAOIGRvZXNuJ3QgZXhpc3QAAAAIcXVhbnRpdHkEAAAADmluQW1Bc3NldElkU3RyCQACWAAAAAEJAQAAAAt2YWx1ZU9yRWxzZQAAAAIFAAAAC2luQW1Bc3NldElkCQACWQAAAAECAAAABVdBVkVTBAAAAA5pblByQXNzZXRJZFN0cgkAAlgAAAABCQEAAAALdmFsdWVPckVsc2UAAAACBQAAAAtpblByQXNzZXRJZAkAAlkAAAABAgAAAAVXQVZFUwMDCQEAAAACIT0AAAACBQAAAAxhbUFzc2V0SWRTdHIFAAAADmluQW1Bc3NldElkU3RyBgkBAAAAAiE9AAAAAgUAAAAMcHJBc3NldElkU3RyBQAAAA5pblByQXNzZXRJZFN0cgkAAAIAAAABAgAAACJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAAAAAlhbUJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgUAAAAMaW5BbUFzc2V0QW10BAAAAAlwckJhbGFuY2UDBQAAAAppc0V2YWx1YXRlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByQXNzZXRJZFN0cgkAAGUAAAACCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByQXNzZXRJZFN0cgUAAAAMaW5QckFzc2V0QW10BAAAAA9pbkFtQXNzZXRBbXRYMTgJAQAAAAV0b1gxOAAAAAIFAAAADGluQW1Bc3NldEFtdAUAAAALYW10QXNzZXREY20EAAAAD2luUHJBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAMaW5QckFzc2V0QW10BQAAAA1wcmljZUFzc2V0RGNtBAAAAAx1c2VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAAD2luQW1Bc3NldEFtdFgxOAQAAAAMYW1CYWxhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAAAlhbUJhbGFuY2UFAAAAC2FtdEFzc2V0RGNtBAAAAAxwckJhbGFuY2VYMTgJAQAAAAV0b1gxOAAAAAIFAAAACXByQmFsYW5jZQUAAAANcHJpY2VBc3NldERjbQQAAAADcmVzAwkAAAAAAAACBQAAAApscEVtaXNzaW9uAAAAAAAAAAAABAAAAAtjdXJQcmljZVgxOAUAAAAKemVyb0JpZ0ludAQAAAALc2xpcHBhZ2VYMTgFAAAACnplcm9CaWdJbnQEAAAACGxwQW10WDE4CQAAdgAAAAYJAAE5AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAA9pblByQXNzZXRBbXRYMTgAAAAAAAAAAAAJAAE2AAAAAQAAAAAAAAAABQAAAAAAAAAAAQAAAAAAAAAAAAUAAAAERE9XTgkABRcAAAAFCQEAAAAHZnJvbVgxOAAAAAIFAAAACGxwQW10WDE4BQAAAAZzY2FsZTgJAQAAAAdmcm9tWDE4AAAAAgUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAthbXRBc3NldERjbQkBAAAAB2Zyb21YMTgAAAACBQAAAA9pblByQXNzZXRBbXRYMTgFAAAADXByaWNlQXNzZXREY20JAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACCQABNwAAAAIFAAAADHByQmFsYW5jZVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQABNwAAAAIFAAAADGFtQmFsYW5jZVgxOAUAAAAPaW5BbUFzc2V0QW10WDE4BQAAAAtzbGlwcGFnZVgxOAQAAAALY3VyUHJpY2VYMTgJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAAAxwckJhbGFuY2VYMTgFAAAADGFtQmFsYW5jZVgxOAQAAAALc2xpcHBhZ2VYMTgJAAE8AAAAAwkBAAAAA2FicwAAAAEJAAE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAADHVzZXJQcmljZVgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAAFHNsaXBwYWdlVG9sZXJhbmNlWDE4CQEAAAAFdG9YMTgAAAACBQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAAGc2NhbGU4AwMJAQAAAAIhPQAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAp6ZXJvQmlnSW50CQABPwAAAAIFAAAAC3NsaXBwYWdlWDE4BQAAABRzbGlwcGFnZVRvbGVyYW5jZVgxOAcJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPUHJpY2Ugc2xpcHBhZ2UgCQABpgAAAAEFAAAAC3NsaXBwYWdlWDE4AgAAAB4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAAGmAAAAAQUAAAAUc2xpcHBhZ2VUb2xlcmFuY2VYMTgEAAAADWxwRW1pc3Npb25YMTgJAQAAAAV0b1gxOAAAAAIFAAAACmxwRW1pc3Npb24FAAAABnNjYWxlOAQAAAAKcHJWaWFBbVgxOAkAATwAAAADBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAAC2N1clByaWNlWDE4BQAAAAdzY2FsZTE4BAAAAAphbVZpYVByWDE4CQABPAAAAAMFAAAAD2luUHJBc3NldEFtdFgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAADGV4cGVjdGVkQW10cwMJAAE/AAAAAgUAAAAKcHJWaWFBbVgxOAUAAAAPaW5QckFzc2V0QW10WDE4CQAFFAAAAAIFAAAACmFtVmlhUHJYMTgFAAAAD2luUHJBc3NldEFtdFgxOAkABRQAAAACBQAAAA9pbkFtQXNzZXRBbXRYMTgFAAAACnByVmlhQW1YMTgEAAAAEWV4cEFtdEFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8xBAAAABNleHBQcmljZUFzc2V0QW10WDE4CAUAAAAMZXhwZWN0ZWRBbXRzAAAAAl8yBAAAAAhscEFtdFgxOAkAATwAAAADBQAAAA1scEVtaXNzaW9uWDE4BQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAAxwckJhbGFuY2VYMTgJAAUXAAAABQkBAAAAB2Zyb21YMTgAAAACBQAAAAhscEFtdFgxOAUAAAAGc2NhbGU4CQEAAAAHZnJvbVgxOAAAAAIFAAAAEWV4cEFtdEFzc2V0QW10WDE4BQAAAAthbXRBc3NldERjbQkBAAAAB2Zyb21YMTgAAAACBQAAABNleHBQcmljZUFzc2V0QW10WDE4BQAAAA1wcmljZUFzc2V0RGNtBQAAAAtjdXJQcmljZVgxOAUAAAALc2xpcHBhZ2VYMTgEAAAACWNhbGNMcEFtdAgFAAAAA3JlcwAAAAJfMQQAAAAOY2FsY0FtQXNzZXRQbXQIBQAAAANyZXMAAAACXzIEAAAADmNhbGNQckFzc2V0UG10CAUAAAADcmVzAAAAAl8zBAAAAAhjdXJQcmljZQkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl80BQAAAAZzY2FsZTgEAAAADHNsaXBwYWdlQ2FsYwkBAAAAB2Zyb21YMTgAAAACCAUAAAADcmVzAAAAAl81BQAAAAZzY2FsZTgDCQAAZwAAAAIAAAAAAAAAAAAFAAAACWNhbGNMcEFtdAkAAAIAAAABAgAAADZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAAAACWVtaXRMcEFtdAMJAQAAAAEhAAAAAQUAAAAGZW1pdExwAAAAAAAAAAAABQAAAAljYWxjTHBBbXQEAAAABmFtRGlmZgkAAGUAAAACBQAAAAxpbkFtQXNzZXRBbXQFAAAADmNhbGNBbUFzc2V0UG10BAAAAAZwckRpZmYJAABlAAAAAgUAAAAMaW5QckFzc2V0QW10BQAAAA5jYWxjUHJBc3NldFBtdAQAAAALY29tbW9uU3RhdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAAABQAAAAhjdXJQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAIFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAACGN1clByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlQdXRBY3Rpb25CeVVzZXIAAAACBQAAAAt1c2VyQWRkcmVzcwUAAAAGdHhJZDU4CQEAAAARZGF0YVB1dEFjdGlvbkluZm8AAAAKBQAAAA5jYWxjQW1Bc3NldFBtdAUAAAAOY2FsY1ByQXNzZXRQbXQFAAAACWVtaXRMcEFtdAUAAAAIY3VyUHJpY2UFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAAxzbGlwcGFnZUNhbGMFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmFtRGlmZgUAAAAGcHJEaWZmBQAAAANuaWwJAAUfAAAADQUAAAAJY2FsY0xwQW10BQAAAAllbWl0THBBbXQFAAAACGN1clByaWNlBQAAAAlhbUJhbGFuY2UFAAAACXByQmFsYW5jZQUAAAAKbHBFbWlzc2lvbgUAAAAJbHBBc3NldElkBQAAAApwb29sU3RhdHVzBQAAAAtjb21tb25TdGF0ZQUAAAAGYW1EaWZmBQAAAAZwckRpZmYFAAAAC2luQW1Bc3NldElkBQAAAAtpblByQXNzZXRJZAEAAAAbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkAAAAAQAAAAVvcmRlcgQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACmFtdEFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhBbXRBc3NldElkBAAAAAxwcmljZUFzc2V0SWQJAAGRAAAAAgUAAAADY2ZnBQAAAA9pZHhQcmljZUFzc2V0SWQEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADWlkeFBvb2xTdGF0dXMEAAAAC2FtdEFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAAA5pZHhBbXRBc3NldERjbQQAAAANcHJpY2VBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UHJpY2VBc3NldERjbQQAAAASYWNjQW10QXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAACmFtdEFzc2V0SWQEAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADHByaWNlQXNzZXRJZAQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIIBQAAAAVvcmRlcgAAAAlvcmRlclR5cGUFAAAAA0J1eQkBAAAAEHByaXZhdGVDYWxjUHJpY2UAAAAEBQAAAAthbXRBc3NldERjbQUAAAANcHJpY2VBc3NldERjbQkAAGQAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UIBQAAAAVvcmRlcgAAAAZhbW91bnQFAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEAAAAQcHJpdmF0ZUNhbGNQcmljZQAAAAQFAAAAC2FtdEFzc2V0RGNtBQAAAA1wcmljZUFzc2V0RGNtCQAAZQAAAAIFAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQgFAAAABW9yZGVyAAAABmFtb3VudAUAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UEAAAACGN1clByaWNlCQEAAAAHZnJvbVgxOAAAAAIFAAAAC2N1clByaWNlWDE4BQAAAAZzY2FsZTgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAATUG9vbE1hdGNoZXJEaXNhYmxlZAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAECAAAAHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAAAADW9yZGVyQW10QXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAAC2Ftb3VudEFzc2V0BAAAABBvcmRlckFtdEFzc2V0U3RyAwkAAAAAAAACBQAAAA1vcmRlckFtdEFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAA1vcmRlckFtdEFzc2V0BAAAAA9vcmRlclByaWNlQXNzZXQICAUAAAAFb3JkZXIAAAAJYXNzZXRQYWlyAAAACnByaWNlQXNzZXQEAAAAEm9yZGVyUHJpY2VBc3NldFN0cgMJAAAAAAAAAgUAAAAPb3JkZXJQcmljZUFzc2V0BQAAAAR1bml0AgAAAAVXQVZFUwkAAlgAAAABCQEAAAAFdmFsdWUAAAABBQAAAA9vcmRlclByaWNlQXNzZXQDAwkBAAAAAiE9AAAAAgUAAAAQb3JkZXJBbXRBc3NldFN0cgUAAAAKYW10QXNzZXRJZAYJAQAAAAIhPQAAAAIFAAAAEm9yZGVyUHJpY2VBc3NldFN0cgUAAAAMcHJpY2VBc3NldElkCQAAAgAAAAECAAAAE1dyb25nIG9yZGVyIGFzc2V0cy4EAAAACm9yZGVyUHJpY2UIBQAAAAVvcmRlcgAAAAVwcmljZQQAAAAIcHJpY2VEY20JAABrAAAAAwUAAAAGc2NhbGU4BQAAAA1wcmljZUFzc2V0RGNtBQAAAAthbXRBc3NldERjbQQAAAAQY2FzdGVkT3JkZXJQcmljZQkBAAAAB3RvU2NhbGUAAAADBQAAAApvcmRlclByaWNlBQAAAAZzY2FsZTgFAAAACHByaWNlRGNtBAAAABFpc09yZGVyUHJpY2VWYWxpZAMJAAAAAAAAAggFAAAABW9yZGVyAAAACW9yZGVyVHlwZQUAAAADQnV5CQAAZwAAAAIFAAAACGN1clByaWNlBQAAABBjYXN0ZWRPcmRlclByaWNlCQAAZwAAAAIFAAAAEGNhc3RlZE9yZGVyUHJpY2UFAAAACGN1clByaWNlBgEAAAAJY29tbW9uR2V0AAAAAQAAAAFpAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAAB1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAApwbXRBc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAABnBtdEFtdAgFAAAAA3BtdAAAAAZhbW91bnQEAAAAA3JlcwkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEFAAAACnBtdEFzc2V0SWQFAAAABnBtdEFtdAgFAAAAAWkAAAAGY2FsbGVyBAAAAAhvdXRBbUFtdAgFAAAAA3JlcwAAAAJfMQQAAAAIb3V0UHJBbXQIBQAAAANyZXMAAAACXzIEAAAACnBvb2xTdGF0dXMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQgFAAAAA3JlcwAAAAJfOQQAAAAFc3RhdGUIBQAAAANyZXMAAAADXzEwAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAMUG9vbFNodXRkb3duCQAAAgAAAAEJAAEsAAAAAgIAAAAsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwkABRcAAAAFBQAAAAhvdXRBbUFtdAUAAAAIb3V0UHJBbXQFAAAABnBtdEFtdAUAAAAKcG10QXNzZXRJZAUAAAAFc3RhdGUBAAAACWNvbW1vblB1dAAAAAMAAAABaQAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAAZlbWl0THADCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAACCQAAAgAAAAECAAAAH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAAAACmFtQXNzZXRQbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACnByQXNzZXRQbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEEAAAABmVzdFB1dAkBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAACQkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAABFzbGlwcGFnZVRvbGVyYW5jZQgFAAAACmFtQXNzZXRQbXQAAAAGYW1vdW50CAUAAAAKYW1Bc3NldFBtdAAAAAdhc3NldElkCAUAAAAKcHJBc3NldFBtdAAAAAZhbW91bnQIBQAAAApwckFzc2V0UG10AAAAB2Fzc2V0SWQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBwUAAAAGZW1pdExwBAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAAAZlc3RQdXQAAAACXzgDAwMJAQAAABBpc0dsb2JhbFNodXRkb3duAAAAAAYJAAAAAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAAPUG9vbFB1dERpc2FibGVkBgkAAAAAAAACBQAAAApwb29sU3RhdHVzBQAAAAxQb29sU2h1dGRvd24JAAACAAAAAQkAASwAAAACAgAAACxQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkAAaQAAAABBQAAAApwb29sU3RhdHVzBQAAAAZlc3RQdXQAAAAKAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAAAgAAAA9mYWN0b3J5Q29udHJhY3QAAAAQbWFuYWdlclB1YmxpY0tleQMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAEmtleUZhY3RvcnlDb250cmFjdAAAAAAFAAAAD2ZhY3RvcnlDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAFAAAAEG1hbmFnZXJQdWJsaWNLZXkFAAAAA25pbAAAAAFpAQAAAANwdXQAAAACAAAAEXNsaXBwYWdlVG9sZXJhbmNlAAAAD3Nob3VsZEF1dG9TdGFrZQQAAAAKZmFjdG9yeUNmZwkBAAAAEGdldEZhY3RvcnlDb25maWcAAAAABAAAAA9zdGFraW5nQ29udHJhY3QJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABCQABkQAAAAIFAAAACmZhY3RvcnlDZmcFAAAAGWlkeEZhY3RvcnlTdGFraW5nQ29udHJhY3QCAAAAIUVycm9yLiBJbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzLgQAAAAQc2xpcHBhZ2VDb250cmFjdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAAKZmFjdG9yeUNmZwUAAAAaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QCAAAAK0Vycm9yLiBJbmNvcnJlY3Qgc2xpcHBhZ2UgY29udHJhY3QgYWRkcmVzcy4EAAAABmVzdFB1dAkBAAAA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cXVhbnRpdHkEAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAphbXRBc3NldElkBAAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwcmljZUFzc2V0SWQEAAAACnByaWNlc0xpc3QJAQAAAApjYWxjUHJpY2VzAAAAAwUAAAASYWNjQW10QXNzZXRCYWxhbmNlBQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQUAAAANcG9vbExQQmFsYW5jZQQAAAAIY3VyUHJpY2UJAAGRAAAAAgUAAAAKcHJpY2VzTGlzdAAAAAAAAAAAAAQAAAAPbHBBbXRBc3NldFNoYXJlCQABkQAAAAIFAAAACnByaWNlc0xpc3QAAAAAAAAAAAEEAAAAEWxwUHJpY2VBc3NldFNoYXJlCQABkQAAAAIFAAAACnByaWNlc0xpc3QAAAAAAAAAAAIEAAAACnBvb2xXZWlnaHQJAQAAAAV2YWx1ZQAAAAEJAAQaAAAAAgUAAAAPZmFjdG9yeUNvbnRyYWN0CQEAAAANa2V5UG9vbFdlaWdodAAAAAEJAAQlAAAAAQUAAAAEdGhpcwkABRQAAAACBQAAAANuaWwJAAS5AAAAAgkABEwAAAACAgAAAA4lZCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAAEmFjY0FtdEFzc2V0QmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAAFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAANcG9vbExQQmFsYW5jZQkABEwAAAACCQABpgAAAAEFAAAACGN1clByaWNlCQAETAAAAAIJAAGmAAAAAQUAAAAPbHBBbXRBc3NldFNoYXJlCQAETAAAAAIJAAGmAAAAAQUAAAARbHBQcmljZUFzc2V0U2hhcmUJAARMAAAAAgkAAaQAAAABBQAAAApwb29sV2VpZ2h0BQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAACBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQAAAAMAAAARc2xpcHBhZ2VUb2xlcmFuY2UAAAANaW5BbXRBc3NldEFtdAAAAAt1c2VyQWRkcmVzcwQAAAADY2ZnCQEAAAANZ2V0UG9vbENvbmZpZwAAAAAEAAAACWxwQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAQaWR4UG9vbExQQXNzZXRJZAQAAAAMYW1Bc3NldElkU3RyCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4QW10QXNzZXRJZAQAAAAJYW1Bc3NldElkCQACWQAAAAEFAAAADGFtQXNzZXRJZFN0cgQAAAAMcHJBc3NldElkU3RyCQABkQAAAAIFAAAAA2NmZwUAAAAPaWR4UHJpY2VBc3NldElkBAAAAAlwckFzc2V0SWQJAAJZAAAAAQUAAAAMcHJBc3NldElkU3RyBAAAAAthbXRBc3NldERjbQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAA2NmZwUAAAAOaWR4QW10QXNzZXREY20EAAAADXByaWNlQXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFByaWNlQXNzZXREY20EAAAACnBvb2xTdGF0dXMJAAGRAAAAAgUAAAADY2ZnBQAAAA1pZHhQb29sU3RhdHVzBAAAAA1wb29sTFBCYWxhbmNlCAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAD7AAAAAEFAAAACWxwQXNzZXRJZAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAkAAlgAAAABBQAAAAlscEFzc2V0SWQCAAAADiBkb2Vzbid0IGV4aXN0AAAACHF1YW50aXR5BAAAABJhY2NBbXRBc3NldEJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAMYW1Bc3NldElkU3RyBAAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQkBAAAADWdldEFjY0JhbGFuY2UAAAABBQAAAAxwckFzc2V0SWRTdHIEAAAADmFtdEFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAABJhY2NBbXRBc3NldEJhbGFuY2UFAAAAC2FtdEFzc2V0RGNtBAAAABBwcmljZUFzc2V0QW10WDE4CQEAAAAFdG9YMTgAAAACBQAAABRhY2NQcmljZUFzc2V0QmFsYW5jZQUAAAANcHJpY2VBc3NldERjbQQAAAALY3VyUHJpY2VYMTgDCQAAAAAAAAIFAAAADXBvb2xMUEJhbGFuY2UAAAAAAAAAAAAFAAAACnplcm9CaWdJbnQJAQAAAA9jYWxjUHJpY2VCaWdJbnQAAAACBQAAABBwcmljZUFzc2V0QW10WDE4BQAAAA5hbXRBc3NldEFtdFgxOAQAAAAQaW5BbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAANaW5BbXRBc3NldEFtdAUAAAALYW10QXNzZXREY20EAAAAEmluUHJpY2VBc3NldEFtdFgxOAkAATwAAAADBQAAABBpbkFtdEFzc2V0QW10WDE4BQAAAAtjdXJQcmljZVgxOAUAAAAHc2NhbGUxOAQAAAAPaW5QcmljZUFzc2V0QW10CQEAAAAHZnJvbVgxOAAAAAIFAAAAEmluUHJpY2VBc3NldEFtdFgxOAUAAAANcHJpY2VBc3NldERjbQQAAAAGZXN0UHV0CQEAAAAUZXN0aW1hdGVQdXRPcGVyYXRpb24AAAAJAgAAAAAFAAAAEXNsaXBwYWdlVG9sZXJhbmNlBQAAAA1pbkFtdEFzc2V0QW10BQAAAAlhbUFzc2V0SWQFAAAAD2luUHJpY2VBc3NldEFtdAUAAAAJcHJBc3NldElkBQAAAAt1c2VyQWRkcmVzcwYHBAAAAAljYWxjTHBBbXQIBQAAAAZlc3RQdXQAAAACXzEEAAAADGN1clByaWNlQ2FsYwgFAAAABmVzdFB1dAAAAAJfMwQAAAAJYW1CYWxhbmNlCAUAAAAGZXN0UHV0AAAAAl80BAAAAAlwckJhbGFuY2UIBQAAAAZlc3RQdXQAAAACXzUEAAAACmxwRW1pc3Npb24IBQAAAAZlc3RQdXQAAAACXzYJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAMJWQlZCVkJWQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAAJY2FsY0xwQW10CQAETAAAAAIJAAGkAAAAAQkBAAAAB2Zyb21YMTgAAAACBQAAAAtjdXJQcmljZVgxOAUAAAAGc2NhbGU4CQAETAAAAAIJAAGkAAAAAQUAAAAJYW1CYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAJcHJCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAKbHBFbWlzc2lvbgkABEwAAAACBQAAAApwb29sU3RhdHVzBQAAAANuaWwFAAAAA1NFUAAAAAFpAQAAAB9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAAAAAwAAABFzbGlwcGFnZVRvbGVyYW5jZQAAAA9pblByaWNlQXNzZXRBbXQAAAALdXNlckFkZHJlc3MEAAAAA2NmZwkBAAAADWdldFBvb2xDb25maWcAAAAABAAAAAlscEFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAANjZmcFAAAAEGlkeFBvb2xMUEFzc2V0SWQEAAAADGFtQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAADWlkeEFtdEFzc2V0SWQEAAAACWFtQXNzZXRJZAkAAlkAAAABBQAAAAxhbUFzc2V0SWRTdHIEAAAADHByQXNzZXRJZFN0cgkAAZEAAAACBQAAAANjZmcFAAAAD2lkeFByaWNlQXNzZXRJZAQAAAAJcHJBc3NldElkCQACWQAAAAEFAAAADHByQXNzZXRJZFN0cgQAAAALYW10QXNzZXREY20JAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAANjZmcFAAAADmlkeEFtdEFzc2V0RGNtBAAAAA1wcmljZUFzc2V0RGNtCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAADY2ZnBQAAABBpZHhQcmljZUFzc2V0RGNtBAAAAApwb29sU3RhdHVzCQABkQAAAAIFAAAAA2NmZwUAAAANaWR4UG9vbFN0YXR1cwQAAAANcG9vbExQQmFsYW5jZQgJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABBQAAAAlscEFzc2V0SWQJAAEsAAAAAgkAASwAAAACAgAAAAZBc3NldCAJAAJYAAAAAQUAAAAJbHBBc3NldElkAgAAAA4gZG9lc24ndCBleGlzdAAAAAhxdWFudGl0eQQAAAASYWNjQW10QXNzZXRCYWxhbmNlCQEAAAANZ2V0QWNjQmFsYW5jZQAAAAEFAAAADGFtQXNzZXRJZFN0cgQAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UJAQAAAA1nZXRBY2NCYWxhbmNlAAAAAQUAAAAMcHJBc3NldElkU3RyBAAAAA5hbXRBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAASYWNjQW10QXNzZXRCYWxhbmNlBQAAAAthbXRBc3NldERjbQQAAAAQcHJpY2VBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAUYWNjUHJpY2VBc3NldEJhbGFuY2UFAAAADXByaWNlQXNzZXREY20EAAAAC2N1clByaWNlWDE4AwkAAAAAAAACBQAAAA1wb29sTFBCYWxhbmNlAAAAAAAAAAAABQAAAAp6ZXJvQmlnSW50CQEAAAAPY2FsY1ByaWNlQmlnSW50AAAAAgUAAAAQcHJpY2VBc3NldEFtdFgxOAUAAAAOYW10QXNzZXRBbXRYMTgEAAAAEmluUHJpY2VBc3NldEFtdFgxOAkBAAAABXRvWDE4AAAAAgUAAAAPaW5QcmljZUFzc2V0QW10BQAAAA1wcmljZUFzc2V0RGNtBAAAABBpbkFtdEFzc2V0QW10WDE4CQABPAAAAAMFAAAAEmluUHJpY2VBc3NldEFtdFgxOAUAAAAHc2NhbGUxOAUAAAALY3VyUHJpY2VYMTgEAAAADWluQW10QXNzZXRBbXQJAQAAAAdmcm9tWDE4AAAAAgUAAAAQaW5BbXRBc3NldEFtdFgxOAUAAAALYW10QXNzZXREY20EAAAABmVzdFB1dAkBAAAAFGVzdGltYXRlUHV0T3BlcmF0aW9uAAAACQIAAAAABQAAABFzbGlwcGFnZVRvbGVyYW5jZQUAAAANaW5BbXRBc3NldEFtdAUAAAAJYW1Bc3NldElkBQAAAA9pblByaWNlQXNzZXRBbXQFAAAACXByQXNzZXRJZAUAAAALdXNlckFkZHJlc3MGBwQAAAAJY2FsY0xwQW10CAUAAAAGZXN0UHV0AAAAAl8xBAAAAAxjdXJQcmljZUNhbGMIBQAAAAZlc3RQdXQAAAACXzMEAAAACWFtQmFsYW5jZQgFAAAABmVzdFB1dAAAAAJfNAQAAAAJcHJCYWxhbmNlCAUAAAAGZXN0UHV0AAAAAl81BAAAAApscEVtaXNzaW9uCAUAAAAGZXN0UHV0AAAAAl82CQAFFAAAAAIFAAAAA25pbAkABLkAAAACCQAETAAAAAICAAAADCVkJWQlZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAACWNhbGNMcEFtdAkABEwAAAACCQABpAAAAAEJAQAAAAdmcm9tWDE4AAAAAgUAAAALY3VyUHJpY2VYMTgFAAAABnNjYWxlOAkABEwAAAACCQABpAAAAAEFAAAACWFtQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACXByQmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAACmxwRW1pc3Npb24JAARMAAAAAgUAAAAKcG9vbFN0YXR1cwUAAAADbmlsBQAAAANTRVAAAAABaQEAAAATZXZhbHVhdGVHZXRSRUFET05MWQAAAAMAAAAQcGF5bWVudExwQXNzZXRJZAAAAAxwYXltZW50THBBbXQAAAAOdXNlckFkZHJlc3NTdHIEAAAAA3JlcwkBAAAAFGVzdGltYXRlR2V0T3BlcmF0aW9uAAAABAIAAAAABQAAABBwYXltZW50THBBc3NldElkBQAAAAxwYXltZW50THBBbXQFAAAABHRoaXMEAAAACG91dEFtQW10CAUAAAADcmVzAAAAAl8xBAAAAAhvdXRQckFtdAgFAAAAA3JlcwAAAAJfMgQAAAAJYW1CYWxhbmNlCAUAAAADcmVzAAAAAl81BAAAAAlwckJhbGFuY2UIBQAAAANyZXMAAAACXzYEAAAACmxwRW1pc3Npb24IBQAAAANyZXMAAAACXzcEAAAACGN1clByaWNlCAUAAAADcmVzAAAAAl84BAAAAApwb29sU3RhdHVzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEIBQAAAANyZXMAAAACXzkJAAUUAAAAAgUAAAADbmlsCQAEuQAAAAIJAARMAAAAAgIAAAAOJWQlZCVkJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAAhvdXRBbUFtdAkABEwAAAACCQABpAAAAAEFAAAACG91dFByQW10CQAETAAAAAIJAAGkAAAAAQUAAAAJYW1CYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAJcHJCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAKbHBFbWlzc2lvbgkABEwAAAACCQABpgAAAAEFAAAACGN1clByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAKcG9vbFN0YXR1cwUAAAADbmlsBQAAAANTRVAAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAFT3JkZXIEAAAABW9yZGVyBQAAAAckbWF0Y2gwAwkBAAAAG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZAAAAAEFAAAABW9yZGVyCQAB9AAAAAMIBQAAAAVvcmRlcgAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAABW9yZGVyAAAABnByb29mcwAAAAAAAAAAAAgFAAAABW9yZGVyAAAAD3NlbmRlclB1YmxpY0tleQcEAAAADW1hbmFnZXJQdWJsaWMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkBAAAAE2tleU1hbmFnZXJQdWJsaWNLZXkAAAAABQAAAAVFTVBUWQMJAAAAAAAAAgUAAAANbWFuYWdlclB1YmxpYwUAAAAFRU1QVFkJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5CQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABBQAAAA1tYW5hZ2VyUHVibGljTKbJZw==", "height": 2806912, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Cc9Zs6VFd6MmQpmUgr8UnX9oRQ6aP7ZY2Pbbd2ge3yz4 Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-let a = Address(base58'3P8s92Udr7jNWMv6WctM9Hnc9EytXitmym5')
4+let a = 8
55
6-let b = 8
6+let b = 100000000
77
8-let c = 100000000
8+let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
12-let e = "__"
12+let e = toBigInt(0)
1313
14-let f = 1
14+let f = "__"
1515
16-let g = 2
16+let g = ""
1717
18-let h = 3
18+let h = 1
1919
20-let i = 4
20+let i = 2
2121
22-let j = 1
22+let j = 3
2323
24-let k = 2
24+let k = 4
2525
26-let l = 3
26+let l = 1
2727
28-let m = 4
28+let m = 2
2929
30-let n = 5
30+let n = 3
3131
32-let o = 6
32+let o = 4
3333
34-let p = 7
34+let p = 5
3535
36-let q = 8
36+let q = 6
3737
38-let r = 9
38+let r = 7
3939
40-let s = 10
40+let s = 8
4141
42-let t = 11
42+let t = 9
4343
44-let u = 1
44+let u = 10
4545
46-let v = 2
46+let v = 1
4747
48-let w = 3
48+let w = 2
4949
50-let x = 1
50+let x = 3
5151
52-let y = 2
52+let y = 1
5353
54-func z () = "%s%s__price__last"
54+let z = 7
55+
56+func A (B,C) = fraction(toBigInt(B), d, toBigInt(C))
5557
5658
57-func A (B,C) = makeString(["%s%s%d%d__price__history", toString(B), toString(C)], e)
59+func D (E,F) = toInt(fraction(E, toBigInt(F), d))
5860
5961
60-func D (E,F) = (((("%d%d%s__" + E) + "__") + F) + "__locked")
62+func G (H,I,J) = fraction(H, I, J)
6163
6264
63-func G (E,F,H) = (((((("%d%d%s%s__" + E) + "__") + F) + "__") + H) + "__locked")
65+func K (E) = if ((e > E))
66+ then -(E)
67+ else E
6468
6569
66-func I (H,J) = ((("%s%s%s__P__" + H) + "__") + J)
70+func L () = "%s__factoryContract"
6771
6872
69-func K (H,J) = ((("%s%s%s__G__" + H) + "__") + J)
73+func M () = "%s__managerPublicKey"
7074
7175
72-func L () = "%s__amountAsset"
76+func N () = "%s%s__price__last"
7377
7478
75-func M () = "%s__priceAsset"
79+func O (P,Q) = makeString(["%s%s%d%d__price__history", toString(P), toString(Q)], f)
7680
7781
78-func N () = "%s__factoryConfig"
82+func R (S,T) = ((("%s%s%s__P__" + S) + "__") + T)
7983
8084
81-func O (P) = (("%s%s%s__" + P) + "__mappings__poolContract2LpAsset")
85+func U (S,T) = ((("%s%s%s__G__" + S) + "__") + T)
8286
8387
84-func Q (R,S) = (((("%d%d%s__" + R) + "__") + S) + "__config")
88+func V () = "%s__amountAsset"
8589
8690
87-func T (U) = ("%s%s%s__mappings__baseAsset2internalId__" + U)
91+func W () = "%s__priceAsset"
8892
8993
90-func V () = "%s__shutdown"
94+func X (P,Q) = makeString(["%s%s%d%d__K_history", toString(P), toString(Q)], f)
9195
9296
93-func W (X) = ("%s%s__poolWeight__" + X)
97+func Y () = "%s__factoryConfig"
9498
9599
96-func Y () = valueOrElse(getBoolean(a, V()), false)
100+func Z (aa) = (("%s%s%s__" + aa) + "__mappings__poolContract2LpAsset")
97101
98102
99-func Z () = {
100- let aa = valueOrErrorMessage(getString(this, L()), "No config for amount asset found")
101- let ab = valueOrErrorMessage(getString(this, M()), "No config for price asset found")
102- let ac = valueOrErrorMessage(getInteger(a, T(ab)), "No config for internal price asset found")
103- let ad = valueOrErrorMessage(getInteger(a, T(aa)), "No config for internal amount asset found")
104- split(valueOrErrorMessage(getString(a, Q(toString(ad), toString(ac))), "No factory config found for pool assets."), e)
103+func ab (ac,ad) = (((("%d%d%s__" + ac) + "__") + ad) + "__config")
104+
105+
106+func ae (af) = ("%s%s%s__mappings__baseAsset2internalId__" + af)
107+
108+
109+func ag () = "%s__shutdown"
110+
111+
112+func ah (ai) = ("%s%s__poolWeight__" + ai)
113+
114+
115+func aj (ak,al) = valueOrErrorMessage(getString(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
116+
117+
118+func am (ak,al) = valueOrErrorMessage(getInteger(ak, al), makeString(["mandatory ", toString(ak), ".", al, " is not defined"], ""))
119+
120+
121+let an = addressFromStringValue(aj(this, L()))
122+
123+func ao () = valueOrElse(getBoolean(an, ag()), false)
124+
125+
126+func ap () = {
127+ let aq = aj(this, V())
128+ let ar = aj(this, W())
129+ let ad = am(an, ae(ar))
130+ let ac = am(an, ae(aq))
131+ split(aj(an, ab(toString(ac), toString(ad))), f)
105132 }
106133
107134
108-func ae () = split(valueOrErrorMessage(getString(a, N()), "No factory config found."), e)
135+func as () = split(aj(an, Y()), f)
109136
110137
111-func af (ag,ah) = {
112- let ai = getString(this, D(ag, ah))
113- if (isDefined(ai))
114- then split(value(ai), e)
115- else ["", "0", "0", "0"]
138+func at (au,av,aw,ax,ay,az,aA,aB,aC,aD) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(au), toString(av), toString(aw), toString(ax), toString(ay), toString(az), toString(aA), toString(aB), toString(aC), toString(aD)], f)
139+
140+
141+func aE (aF,aG,aH,ax,aA,aB) = makeString(["%d%d%d%d%d%d", toString(aF), toString(aG), toString(aH), toString(ax), toString(aA), toString(aB)], f)
142+
143+
144+func aI (aJ) = if ((aJ == "WAVES"))
145+ then wavesBalance(this).available
146+ else assetBalance(this, fromBase58String(aJ))
147+
148+
149+func aK (aL,aM) = fraction(aL, d, aM)
150+
151+
152+func aN (aO,aP,aQ,aR) = {
153+ let aS = A(aQ, aO)
154+ let aT = A(aR, aP)
155+ aK(aT, aS)
116156 }
117157
118158
119-func aj (ag,ah,H) = {
120- let ai = getString(this, G(ag, ah, H))
121- if (isDefined(ai))
122- then split(value(ai), e)
123- else ["", "0", "0", "0", "0"]
159+func aU (aV,aW,aX) = {
160+ let aY = ap()
161+ let aZ = parseIntValue(aY[q])
162+ let ba = parseIntValue(aY[r])
163+ let bb = aN(aZ, ba, aV, aW)
164+ let aS = A(aV, aZ)
165+ let aT = A(aW, ba)
166+ let bc = A(aX, b)
167+ let bd = aK(aS, bc)
168+ let be = aK(aT, bc)
169+[bb, bd, be]
124170 }
125171
126172
127-func ak (al,am,an) = makeString(["%d%d%d", toString(al), toString(am), toString(an)], e)
128-
129-
130-func ao (al,am,an,H) = makeString(["%d%d%d", toString(al), toString(am), toString(an)], e)
131-
132-
133-func ap (aq,ar,as,at,au,av,aw,ax) = makeString(["%d%d%d%d%d%d%d", toString(aq), toString(ar), toString(as), toString(at), toString(au), toString(av), toString(aw), toString(ax)], e)
134-
135-
136-func ay (az,aA,aB,at,aw,ax) = makeString(["%d%d%d%d%d%d", toString(az), toString(aA), toString(aB), toString(at), toString(aw), toString(ax)], e)
137-
138-
139-func aC (aD,aE,aF) = fraction(aD, aE, aF)
140-
141-
142-func aG (aH,aI) = fraction(aH, c, aI)
143-
144-
145-func aJ (aK,aL,aM,aN) = {
146- let aO = aC(aM, c, aK)
147- let aP = aC(aN, c, aL)
148- aG(aP, aO)
149- }
150-
151-
152-func aQ (aR) = if ((aR == "WAVES"))
153- then wavesBalance(this).available
154- else assetBalance(this, fromBase58String(aR))
155-
156-
157-func aS (aM,aN,aT) = {
158- let aU = Z()
159- let aK = parseIntValue(aU[o])
160- let aL = parseIntValue(aU[p])
161- let aV = aJ(aK, aL, aM, aN)
162- let aW = aC(aM, c, aK)
163- let aX = aC(aN, c, aL)
164- let aY = aG(aW, aT)
165- let aZ = aG(aX, aT)
166-[aV, aY, aZ]
167- }
168-
169-
170-func ba (bb,bc,H) = {
171- let bd = Z()
172- let be = bd[l]
173- let bf = bd[m]
174- let bg = bd[n]
175- let ag = bd[q]
176- let ah = bd[r]
177- let aK = parseIntValue(bd[o])
178- let aL = parseIntValue(bd[p])
179- let bh = bd[k]
180- let bi = aj(ag, ah, H)
181- let bj = parseIntValue(bi[w])
182- let bk = parseIntValue(bi[u])
183- let bl = parseIntValue(bi[v])
184- let bm = af(ag, ah)
185- let bn = parseIntValue(bm[w])
186- let bo = parseIntValue(bm[u])
187- let bp = parseIntValue(bm[v])
188- if ((be != bb))
173+func bf (bg,bh,bi,S) = {
174+ let aY = ap()
175+ let bj = aY[n]
176+ let bk = aY[o]
177+ let bl = aY[p]
178+ let aO = parseIntValue(aY[q])
179+ let aP = parseIntValue(aY[r])
180+ let bm = aY[m]
181+ let bn = valueOrErrorMessage(assetInfo(fromBase58String(bj)), (("Asset " + bj) + " doesn't exist")).quantity
182+ if ((bj != bh))
189183 then throw("Invalid asset passed.")
190184 else {
191- let bq = aQ(bf)
192- let br = aQ(bg)
193- let aW = aC(bq, c, aK)
194- let aX = aC(br, c, aL)
195- let az = fraction(aW, bc, bn)
196- let aA = fraction(aX, bc, bn)
197- let bs = aC(az, aK, c)
198- let bt = aC(aA, aL, c)
199- let bu = aG(aX, aW)
200- $Tuple14(bs, bt, ag, ah, bk, bf, bl, bg, bj, bo, bp, bn, bu, bh)
185+ let bo = aI(bk)
186+ let bp = A(bo, aO)
187+ let bq = aI(bl)
188+ let br = A(bq, aP)
189+ let bs = aK(br, bp)
190+ let bt = D(bs, b)
191+ let bu = A(bi, b)
192+ let bv = A(bn, b)
193+ let bw = fraction(bp, bu, bv)
194+ let bx = fraction(br, bu, bv)
195+ let by = D(bw, aO)
196+ let bz = D(bx, aP)
197+ let bA = if ((bg == ""))
198+ then nil
199+ else [ScriptTransfer(S, by, if ((bk == "WAVES"))
200+ then unit
201+ else fromBase58String(bk)), ScriptTransfer(S, bz, if ((bl == "WAVES"))
202+ then unit
203+ else fromBase58String(bl)), StringEntry(U(toString(S), bg), aE(by, bz, bi, bt, height, lastBlock.timestamp)), IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt)]
204+ $Tuple10(by, bz, bk, bl, bo, bq, bn, bs, bm, bA)
201205 }
202206 }
203207
204208
205-func bv (bw,aq,bx,ar,by,H,bz) = {
206- let aU = Z()
207- let be = fromBase58String(aU[l])
208- let bf = aU[m]
209- let bg = aU[n]
210- let ag = aU[q]
211- let ah = aU[r]
212- let aK = parseIntValue(aU[o])
213- let aL = parseIntValue(aU[p])
214- let bh = aU[k]
215- let bA = af(ag, ah)
216- let bo = parseIntValue(bA[u])
217- let bp = parseIntValue(bA[v])
218- let bn = parseIntValue(bA[w])
219- let bB = aj(ag, ah, H)
220- let bk = parseIntValue(bB[u])
221- let bl = parseIntValue(bB[v])
222- let bj = parseIntValue(bB[w])
223- if (if ((bf != bx))
209+func bB (bg,bC,bD,bE,bF,bG,S,bH,bI) = {
210+ let aY = ap()
211+ let bj = fromBase58String(aY[n])
212+ let bJ = aY[o]
213+ let bK = aY[p]
214+ let bL = aY[s]
215+ let bM = aY[t]
216+ let aZ = parseIntValue(aY[q])
217+ let ba = parseIntValue(aY[r])
218+ let bm = aY[m]
219+ let bn = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
220+ let bN = toBase58String(valueOrElse(bE, fromBase58String("WAVES")))
221+ let bO = toBase58String(valueOrElse(bG, fromBase58String("WAVES")))
222+ if (if ((bJ != bN))
224223 then true
225- else (bg != by))
226- then throw("Invalid amount or price asset passed.")
224+ else (bK != bO))
225+ then throw("Invalid amt or price asset passed.")
227226 else {
228- let bq = if (bz)
229- then aQ(bf)
230- else (aQ(bf) - aq)
231- let br = if (bz)
232- then aQ(bg)
233- else (aQ(bg) - ar)
234- let bC = aC(aq, c, aK)
235- let bD = aC(ar, c, aL)
236- let bE = aG(bD, bC)
237- let aW = aC(bq, c, aK)
238- let aX = aC(br, c, aL)
239- let bF = if ((bn == 0))
240- then 0
241- else aG(aX, aW)
242- let bG = if ((bF == 0))
243- then 0
244- else if ((bF > bE))
245- then fraction((bF - bE), 100, bF)
246- else fraction((bE - bF), 100, bF)
247- if (if ((bF != 0))
248- then ((bG * c) > bw)
249- else false)
250- then throw(((("Price slippage " + toString((bG * c))) + " exceeded the passed limit of ") + toString(bw)))
227+ let bo = if (bH)
228+ then aI(bJ)
229+ else (aI(bJ) - bD)
230+ let bq = if (bH)
231+ then aI(bK)
232+ else (aI(bK) - bF)
233+ let bP = A(bD, aZ)
234+ let bQ = A(bF, ba)
235+ let bR = aK(bQ, bP)
236+ let bp = A(bo, aZ)
237+ let br = A(bq, ba)
238+ let bS = if ((bn == 0))
239+ then {
240+ let bs = e
241+ let bT = e
242+ let bc = pow((bP * bQ), 0, toBigInt(5), 1, 0, DOWN)
243+ $Tuple5(D(bc, b), D(bP, aZ), D(bQ, ba), aK((br + bQ), (bp + bP)), bT)
244+ }
251245 else {
252- let bH = aG((aX + bD), (aW + bC))
253- let bI = if ((bn == 0))
254- then {
255- let bJ = pow(bC, 0, 5, 1, 0, DOWN)
256- let bK = pow(bD, 0, 5, 1, 0, DOWN)
257- (bJ * bK)
246+ let bs = aK(br, bp)
247+ let bT = fraction(K((bs - bR)), d, bs)
248+ let bU = A(bC, b)
249+ if (if ((bs != e))
250+ then (bT > bU)
251+ else false)
252+ then throw(((("Price slippage " + toString(bT)) + " exceeded the passed limit of ") + toString(bU)))
253+ else {
254+ let bv = A(bn, b)
255+ let bV = fraction(bP, bs, d)
256+ let bW = fraction(bQ, d, bs)
257+ let bX = if ((bV > bQ))
258+ then $Tuple2(bW, bQ)
259+ else $Tuple2(bP, bV)
260+ let bY = bX._1
261+ let bZ = bX._2
262+ let bc = fraction(bv, bZ, br)
263+ $Tuple5(D(bc, b), D(bY, aZ), D(bZ, ba), bs, bT)
258264 }
259- else {
260- let bL = fraction(bn, bC, aW)
261- let bM = fraction(bn, bD, aX)
262- if ((bM > bL))
263- then bL
264- else bM
265- }
266- $Tuple13(bI, bH, bk, bl, bj, bo, bp, bn, ag, ah, be, bG, bh)
265+ }
266+ let ca = bS._1
267+ let cb = bS._2
268+ let cc = bS._3
269+ let bt = D(bS._4, b)
270+ let cd = D(bS._5, b)
271+ if ((0 >= ca))
272+ then throw("Invalid calculations. LP calculated is less than zero.")
273+ else {
274+ let ce = if (!(bI))
275+ then 0
276+ else ca
277+ let cf = (bD - cb)
278+ let cg = (bF - cc)
279+ let ch = [IntegerEntry(N(), bt), IntegerEntry(O(height, lastBlock.timestamp), bt), StringEntry(R(S, bg), at(cb, cc, ce, bt, bC, cd, height, lastBlock.timestamp, cf, cg))]
280+ $Tuple13(ca, ce, bt, bo, bq, bn, bj, bm, ch, cf, cg, bE, bG)
267281 }
268282 }
269283 }
270284
271285
272-func bN (bO) = {
273- let aU = Z()
274- let bf = aU[m]
275- let bg = aU[n]
276- let bh = parseIntValue(aU[k])
277- let bP = aU[t]
278- let bQ = parseIntValue(aU[o])
279- let aL = parseIntValue(aU[p])
280- let bq = aQ(bf)
281- let br = aQ(bg)
282- let bu = if ((bO.orderType == Buy))
283- then aJ(bQ, aL, (bq + bO.amount), br)
284- else aJ(bQ, aL, (bq + bO.amount), br)
285- let bR = if (if (if (Y())
286+func ci (cj) = {
287+ let aY = ap()
288+ let ck = aY[o]
289+ let cl = aY[p]
290+ let bm = parseIntValue(aY[m])
291+ let aZ = parseIntValue(aY[q])
292+ let ba = parseIntValue(aY[r])
293+ let cm = aI(ck)
294+ let cn = aI(cl)
295+ let bs = if ((cj.orderType == Buy))
296+ then aN(aZ, ba, (cm + cj.amount), cn)
297+ else aN(aZ, ba, (cm - cj.amount), cn)
298+ let bt = D(bs, b)
299+ if (if (if (ao())
286300 then true
287- else (bh == h))
301+ else (bm == j))
288302 then true
289- else (bh == i))
290- then false
291- else true
292- let bS = true
293- let bT = bO.assetPair.amountAsset
294- let bU = if ((bT == unit))
295- then "WAVES"
296- else toBase58String(value(bT))
297- let bV = bO.assetPair.priceAsset
298- let bW = if ((bV == unit))
299- then "WAVES"
300- else toBase58String(value(bV))
301- let bX = if (if ((bU != bf))
302- then true
303- else (bW != bg))
304- then false
305- else true
306- let bY = bO.price
307- let bZ = fraction(c, aL, bQ)
308- let ca = aC(bY, c, bZ)
309- let cb = if ((bO.orderType == Buy))
310- then (bu >= ca)
311- else (ca >= bu)
312- if (if (if (bX)
313- then bS
314- else false)
315- then bR
316- else false)
317- then cb
318- else false
319- }
320-
321-
322-@Callable(cc)
323-func put (bw,cd) = {
324- let ce = ae()
325- let cf = valueOrErrorMessage(addressFromString(ce[x]), "Error. Incorrect staking address.")
326- let cg = value(cc.payments[0])
327- let aq = cg.amount
328- let bx = if (!(isDefined(cg.assetId)))
329- then fromBase58String("WAVES")
330- else value(cg.assetId)
331- let ch = value(cc.payments[1])
332- let ar = ch.amount
333- let by = if (!(isDefined(ch.assetId)))
334- then fromBase58String("WAVES")
335- else value(ch.assetId)
336- let ci = bv(bw, aq, toBase58String(bx), ar, toBase58String(by), toString(cc.caller), false)
337- let bI = ci._1
338- let bF = ci._2
339- let bk = ci._3
340- let bl = ci._4
341- let bj = ci._5
342- let bo = ci._6
343- let bp = ci._7
344- let bn = ci._8
345- let ag = ci._9
346- let ah = ci._10
347- let be = ci._11
348- let cj = ci._12
349- let bh = parseIntValue(ci._13)
350- if (if (if (Y())
351- then true
352- else (bh == g))
353- then true
354- else (bh == i))
355- then throw(("Put operation is blocked by admin. Status = " + toString(bh)))
303+ else (bm == k))
304+ then throw("Exchange operations disabled")
356305 else {
357- let ck = invoke(a, "emit", [bI], nil)
358- if ((ck == ck))
359- then if ((ck != "success"))
360- then throw("LP asset reissue failed during emit call on factory.")
361- else {
362- let cl = [StringEntry(z(), ("%s__" + toString(bF))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bF))), StringEntry(I(toString(cc.caller), toBase58String(cc.transactionId)), ap(aq, ar, bI, bF, bw, cj, height, lastBlock.timestamp)), StringEntry(G(ag, ah, toString(cc.caller)), ak((bk + aq), (bl + ar), (bj + bI))), StringEntry(D(ag, ah), ak((bo + aq), (bp + ar), (bn + bI)))]
363- if (cd)
364- then {
365- let cm = invoke(cf, "stake", nil, [AttachedPayment(be, bI)])
366- if ((cm == cm))
367- then cl
368- else throw("Strict value is not equal to itself.")
369- }
370- else (cl :+ ScriptTransfer(cc.caller, bI, be))
371- }
372- else throw("Strict value is not equal to itself.")
306+ let co = cj.assetPair.amountAsset
307+ let cp = if ((co == unit))
308+ then "WAVES"
309+ else toBase58String(value(co))
310+ let cq = cj.assetPair.priceAsset
311+ let cr = if ((cq == unit))
312+ then "WAVES"
313+ else toBase58String(value(cq))
314+ if (if ((cp != ck))
315+ then true
316+ else (cr != cl))
317+ then throw("Wrong order assets.")
318+ else {
319+ let cs = cj.price
320+ let ct = fraction(b, ba, aZ)
321+ let cu = G(cs, b, ct)
322+ let cv = if ((cj.orderType == Buy))
323+ then (bt >= cu)
324+ else (cu >= bt)
325+ true
326+ }
373327 }
374328 }
375329
376330
331+func cw (cx) = if ((size(cx.payments) != 1))
332+ then throw("exactly 1 payment is expected")
333+ else {
334+ let cy = value(cx.payments[0])
335+ let bh = value(cy.assetId)
336+ let cz = cy.amount
337+ let bS = bf(toBase58String(cx.transactionId), toBase58String(bh), cz, cx.caller)
338+ let by = bS._1
339+ let bz = bS._2
340+ let bm = parseIntValue(bS._9)
341+ let bA = bS._10
342+ if (if (ao())
343+ then true
344+ else (bm == k))
345+ then throw(("Get operation is blocked by admin. Status = " + toString(bm)))
346+ else $Tuple5(by, bz, cz, bh, bA)
347+ }
377348
378-@Callable(cc)
379-func get () = {
380- let cg = value(cc.payments[0])
381- let cn = value(cg.assetId)
382- let co = cg.amount
383- let cl = ba(toBase58String(cn), co, toString(cc.caller))
384- let az = cl._1
385- let aA = cl._2
386- let ag = cl._3
387- let ah = cl._4
388- let bk = cl._5
389- let bf = cl._6
390- let bl = cl._7
391- let bg = cl._8
392- let bj = cl._9
393- let bo = cl._10
394- let bp = cl._11
395- let bn = cl._12
396- let bu = cl._13
397- let bh = parseIntValue(cl._14)
398- if (if (Y())
399- then true
400- else (bh == i))
401- then throw(("Get operation is blocked by admin. Status = " + toString(bh)))
402- else {
403- let cp = invoke(a, "burn", [co], [AttachedPayment(cn, co)])
404- if ((cp == cp))
405- then if ((cp != "success"))
406- then throw("LP asset burn failed during emit call on factory.")
407- else [ScriptTransfer(cc.caller, az, if ((bf == "WAVES"))
408- then unit
409- else fromBase58String(bf)), ScriptTransfer(cc.caller, aA, fromBase58String(bg)), StringEntry(G(ag, ah, toString(cc.caller)), ak((bk - az), (bl - aA), (bj - co))), StringEntry(D(ag, ah), ak((bo - az), (bp - aA), (bn - co))), StringEntry(K(toString(cc.caller), toBase58String(cc.transactionId)), ay(az, aA, co, bu, height, lastBlock.timestamp)), StringEntry(z(), ("%s__" + toString(bu))), StringEntry(A(height, lastBlock.timestamp), ("%s__" + toString(bu)))]
349+
350+func cA (cx,bC,bI) = if ((size(cx.payments) != 2))
351+ then throw("exactly 2 payments are expected")
352+ else {
353+ let cB = value(cx.payments[0])
354+ let cC = value(cx.payments[1])
355+ let cD = bB(toBase58String(cx.transactionId), bC, cB.amount, cB.assetId, cC.amount, cC.assetId, toString(cx.caller), false, bI)
356+ let bm = parseIntValue(cD._8)
357+ if (if (if (ao())
358+ then true
359+ else (bm == i))
360+ then true
361+ else (bm == k))
362+ then throw(("Put operation is blocked by admin. Status = " + toString(bm)))
363+ else cD
364+ }
365+
366+
367+@Callable(cx)
368+func constructor (an,cE) = if ((cx.caller != this))
369+ then throw("permissions denied")
370+ else [StringEntry(L(), an), StringEntry(M(), cE)]
371+
372+
373+
374+@Callable(cx)
375+func put (bC,cF) = {
376+ let cG = as()
377+ let cH = valueOrErrorMessage(addressFromString(cG[y]), "Error. Incorrect staking address.")
378+ let cI = valueOrErrorMessage(addressFromString(cG[z]), "Error. Incorrect slippage contract address.")
379+ let cD = cA(cx, bC, true)
380+ let ce = cD._2
381+ let bj = cD._7
382+ let bA = cD._9
383+ let cf = cD._10
384+ let cg = cD._11
385+ let cJ = cD._12
386+ let cK = cD._13
387+ let cL = invoke(an, "emit", [ce], nil)
388+ if ((cL == cL))
389+ then {
390+ let cM = if ((cf > 0))
391+ then invoke(cI, "put", nil, [AttachedPayment(cJ, cf)])
392+ else nil
393+ if ((cM == cM))
394+ then {
395+ let cN = if ((cg > 0))
396+ then invoke(cI, "put", nil, [AttachedPayment(cK, cg)])
397+ else nil
398+ if ((cN == cN))
399+ then {
400+ let cO = if (cF)
401+ then invoke(cH, "stake", nil, [AttachedPayment(bj, ce)])
402+ else nil
403+ if ((cO == cO))
404+ then (bA :+ ScriptTransfer(cx.caller, ce, bj))
405+ else throw("Strict value is not equal to itself.")
406+ }
407+ else throw("Strict value is not equal to itself.")
408+ }
410409 else throw("Strict value is not equal to itself.")
411410 }
411+ else throw("Strict value is not equal to itself.")
412412 }
413413
414414
415415
416-@Callable(cc)
417-func activate (cq,cr) = if ((toString(cc.caller) != toString(a)))
418- then throw("permissions denied")
419- else $Tuple2([StringEntry(L(), cq), StringEntry(M(), cr)], "success")
420-
421-
422-
423-@Callable(cc)
424-func statsREADONLY () = {
425- let aU = Z()
426- let be = fromBase58String(aU[l])
427- let bf = aU[m]
428- let bg = aU[n]
429- let ag = aU[q]
430- let ah = aU[r]
431- let aK = parseIntValue(aU[o])
432- let aL = parseIntValue(aU[p])
433- let bA = af(ag, ah)
434- let bn = parseIntValue(bA[w])
435- let bq = aQ(bf)
436- let br = aQ(bg)
437- let cs = aS(bq, br, bn)
438- let bu = cs[0]
439- let aY = cs[1]
440- let aZ = cs[2]
441- let ct = valueOrErrorMessage(getInteger(a, W(toString(this))), "Pool doesn't have weight.")
442- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(bq), toString(br), toString(bn), toString(bu), toString(aY), toString(aZ), toString(ct)], e))
416+@Callable(cx)
417+func putForFree () = {
418+ let cD = cA(cx, 1, false)
419+ cD._9
443420 }
444421
445422
446423
447-@Callable(cc)
448-func evaluatePutByAmountAssetREADONLY (bw,aq,H) = {
449- let aU = Z()
450- let be = fromBase58String(aU[l])
451- let bf = aU[m]
452- let bg = aU[n]
453- let ag = aU[q]
454- let ah = aU[r]
455- let aK = parseIntValue(aU[o])
456- let aL = parseIntValue(aU[p])
457- let bh = aU[k]
458- let bA = af(ag, ah)
459- let bn = parseIntValue(bA[w])
460- let bq = aQ(bf)
461- let br = aQ(bg)
462- let cu = aC(bq, c, aK)
463- let cv = aC(br, c, aL)
464- let bF = if ((bn == 0))
465- then 0
466- else aG(cv, cu)
467- let bD = fraction(aq, bF, c)
468- let ar = aC(bD, aL, c)
469- let ci = bv(bw, aq, bf, ar, bg, H, true)
470- let cw = ci._1
471- let cx = ci._2
472- let cy = ci._6
473- let cz = ci._7
474- let cA = ci._8
475- let cB = parseIntValue(ci._13)
476- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cw), toString(bF), toString(cy), toString(cz), toString(cA), toString(cB)], e))
424+@Callable(cx)
425+func get () = {
426+ let bS = cw(cx)
427+ let cP = bS._1
428+ let bz = bS._2
429+ let cz = bS._3
430+ let bh = bS._4
431+ let bA = bS._5
432+ let cQ = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
433+ if ((cQ == cQ))
434+ then bA
435+ else throw("Strict value is not equal to itself.")
477436 }
478437
479438
480439
481-@Callable(cc)
482-func evaluatePutByPriceAssetREADONLY (bw,ar,H) = {
483- let aU = Z()
484- let be = fromBase58String(aU[l])
485- let bf = aU[m]
486- let bg = aU[n]
487- let ag = aU[q]
488- let ah = aU[r]
489- let aK = parseIntValue(aU[o])
490- let aL = parseIntValue(aU[p])
491- let bh = aU[k]
492- let bA = af(ag, ah)
493- let bn = parseIntValue(bA[w])
494- let bq = aQ(bf)
495- let br = aQ(bg)
496- let cu = aC(bq, c, aK)
497- let cv = aC(br, c, aL)
498- let cC = aC(ar, c, aL)
499- let bF = if ((bn == 0))
500- then 0
501- else aG(cv, cu)
502- let bC = fraction(cC, c, bF)
503- let aq = aC(bC, aK, c)
504- let ci = bv(bw, aq, bf, ar, bg, H, true)
505- let cw = ci._1
506- let cx = ci._2
507- let cy = ci._6
508- let cz = ci._7
509- let cA = ci._8
510- let cB = parseIntValue(ci._13)
511- $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(cw), toString(bF), toString(cy), toString(cz), toString(cA), toString(cB)], e))
440+@Callable(cx)
441+func getNoLess (cR,cS) = {
442+ let bS = cw(cx)
443+ let by = bS._1
444+ let bz = bS._2
445+ let cz = bS._3
446+ let bh = bS._4
447+ let bA = bS._5
448+ if ((cR > by))
449+ then throw(((("noLessThenAmtAsset failed: " + toString(by)) + " < ") + toString(cR)))
450+ else if ((cS > bz))
451+ then throw(((("noLessThenPriceAsset failed: " + toString(bz)) + " < ") + toString(cS)))
452+ else {
453+ let cQ = invoke(an, "burn", [cz], [AttachedPayment(bh, cz)])
454+ if ((cQ == cQ))
455+ then bA
456+ else throw("Strict value is not equal to itself.")
457+ }
512458 }
513459
514460
515461
516-@Callable(cc)
517-func evaluateGetREADONLY (bb,bc,H) = {
518- let cl = ba(bb, bc, H)
519- let az = cl._1
520- let aA = cl._2
521- let bo = cl._10
522- let bp = cl._11
523- let bn = cl._12
524- let bu = cl._13
525- let bh = parseIntValue(cl._14)
526- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(az), toString(aA), toString(bo), toString(bp), toString(bn), toString(bu), toString(bh)], e))
462+@Callable(cx)
463+func activate (cT,cU) = if ((toString(cx.caller) != toString(an)))
464+ then throw("permissions denied")
465+ else $Tuple2([StringEntry(V(), cT), StringEntry(W(), cU)], "success")
466+
467+
468+
469+@Callable(cx)
470+func statsREADONLY () = {
471+ let aY = ap()
472+ let bj = fromBase58String(aY[n])
473+ let ck = aY[o]
474+ let cl = aY[p]
475+ let bL = aY[s]
476+ let bM = aY[t]
477+ let aZ = parseIntValue(aY[q])
478+ let ba = parseIntValue(aY[r])
479+ let cV = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
480+ let cm = aI(ck)
481+ let cn = aI(cl)
482+ let cW = aU(cm, cn, cV)
483+ let bt = cW[0]
484+ let cX = cW[1]
485+ let cY = cW[2]
486+ let cZ = value(getInteger(an, ah(toString(this))))
487+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cV), toString(bt), toString(cX), toString(cY), toString(cZ)], f))
527488 }
528489
529490
530491
531-@Callable(cc)
532-func hashREADONLY () = $Tuple2(nil, toBase64String(value(scriptHash(this))))
492+@Callable(cx)
493+func evaluatePutByAmountAssetREADONLY (bC,au,S) = {
494+ let aY = ap()
495+ let bj = fromBase58String(aY[n])
496+ let bJ = aY[o]
497+ let bk = fromBase58String(bJ)
498+ let bK = aY[p]
499+ let bl = fromBase58String(bK)
500+ let aZ = parseIntValue(aY[q])
501+ let ba = parseIntValue(aY[r])
502+ let bm = aY[m]
503+ let cV = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
504+ let cm = aI(bJ)
505+ let cn = aI(bK)
506+ let aS = A(cm, aZ)
507+ let aT = A(cn, ba)
508+ let bs = if ((cV == 0))
509+ then e
510+ else aK(aT, aS)
511+ let da = A(au, aZ)
512+ let db = fraction(da, bs, d)
513+ let av = D(db, ba)
514+ let cD = bB("", bC, au, bk, av, bl, S, true, false)
515+ let ca = cD._1
516+ let dc = cD._3
517+ let bo = cD._4
518+ let bq = cD._5
519+ let bn = cD._6
520+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm], f))
521+ }
533522
534523
535-@Verifier(cD)
536-func cE () = {
537- let cF = cD
538- if ($isInstanceOf(cF, "Order"))
524+
525+@Callable(cx)
526+func evaluatePutByPriceAssetREADONLY (bC,av,S) = {
527+ let aY = ap()
528+ let bj = fromBase58String(aY[n])
529+ let bJ = aY[o]
530+ let bk = fromBase58String(bJ)
531+ let bK = aY[p]
532+ let bl = fromBase58String(bK)
533+ let aZ = parseIntValue(aY[q])
534+ let ba = parseIntValue(aY[r])
535+ let bm = aY[m]
536+ let cV = valueOrErrorMessage(assetInfo(bj), (("Asset " + toBase58String(bj)) + " doesn't exist")).quantity
537+ let cm = aI(bJ)
538+ let cn = aI(bK)
539+ let aS = A(cm, aZ)
540+ let aT = A(cn, ba)
541+ let bs = if ((cV == 0))
542+ then e
543+ else aK(aT, aS)
544+ let db = A(av, ba)
545+ let da = fraction(db, d, bs)
546+ let au = D(da, aZ)
547+ let cD = bB("", bC, au, bk, av, bl, S, true, false)
548+ let ca = cD._1
549+ let dc = cD._3
550+ let bo = cD._4
551+ let bq = cD._5
552+ let bn = cD._6
553+ $Tuple2(nil, makeString(["%d%d%d%d%d%d", toString(ca), toString(D(bs, b)), toString(bo), toString(bq), toString(bn), bm], f))
554+ }
555+
556+
557+
558+@Callable(cx)
559+func evaluateGetREADONLY (dd,de,df) = {
560+ let bS = bf("", dd, de, this)
561+ let by = bS._1
562+ let bz = bS._2
563+ let bo = bS._5
564+ let bq = bS._6
565+ let bn = bS._7
566+ let bt = bS._8
567+ let bm = parseIntValue(bS._9)
568+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(by), toString(bz), toString(bo), toString(bq), toString(bn), toString(bt), toString(bm)], f))
569+ }
570+
571+
572+@Verifier(dg)
573+func dh () = {
574+ let di = dg
575+ if ($isInstanceOf(di, "Order"))
539576 then {
540- let bO = cF
541- sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
577+ let cj = di
578+ if (ci(cj))
579+ then sigVerify(cj.bodyBytes, cj.proofs[0], cj.senderPublicKey)
580+ else false
542581 }
543- else sigVerify(cD.bodyBytes, cD.proofs[0], cD.senderPublicKey)
582+ else {
583+ let dj = valueOrElse(getString(this, M()), g)
584+ if ((dj == g))
585+ then sigVerify(dg.bodyBytes, dg.proofs[0], dg.senderPublicKey)
586+ else sigVerify(dg.bodyBytes, dg.proofs[0], fromBase58String(dj))
587+ }
544588 }
545589

github/deemru/w8io/6500d08 
118.15 ms