tx · M2T72RAvysTtjXPqNY7HcHTygTbyo96ERXWUj6n3FPV

3MsCuhfTF9EnyVoNh2yqo4eZ1Q24Ki3fntS:  -0.03500000 Waves

2022.12.16 09:28 [2362494] smart account 3MsCuhfTF9EnyVoNh2yqo4eZ1Q24Ki3fntS > SELF 0.00000000 Waves

{ "type": 13, "id": "M2T72RAvysTtjXPqNY7HcHTygTbyo96ERXWUj6n3FPV", "fee": 3500000, "feeAssetId": null, "timestamp": 1671172029771, "version": 1, "sender": "3MsCuhfTF9EnyVoNh2yqo4eZ1Q24Ki3fntS", "senderPublicKey": "8rqHfvDx1Q95zF6SWwiQWVTu2vr2wNQpxUzAx84ZAedj", "proofs": [ "WGeVhiHmWDPXrDY2PMY9FPZE8RcPg2wBsATPUx7YVSMTSdtSzroSe8vvmU2RHpXaszrY1dLzkBULPdGQbpHboJE" ], "script": "base64:BgKdLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNTg4MjI0Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA4MDEyMTAxMyIDa0xwIg0kdDAyMTQ4NDIxNTg0Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNjkyNDU2MiIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU2NjI0NzE1IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MzcyNDg5NiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjYzOTcyNjU2NCIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjg0NjUyODUxNSILdG90YWxBbW91bnQiDSR0MDI4NTE5Mjg3NDUiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDMzMjczMzM3MzUiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDM0Mjk3MzQzNjIiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzU1NDczNTY5OSIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNjI4NTM2NDgyIg0kdDAzNjQ4NTM2NTkzIg0kdDAzNjg5OTM3MDU2Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzNzk1MDM4MTAzIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM4NjAzMzg4NTAiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM4ODUzMzg5NjEiDSR0MDM5MjE4MzkzNzQiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDQwMjc2NDA0MjciDSR0MDQwOTIyNDExNjkiDSR0MDQxMTcyNDEyODAiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQyMjI4NDIzMTAiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQzMjYxNDMzNDIiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDQ0NjU0NDU0NiIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ1ODM4NDU5MTkiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0NzEwNjQ3MTcwIhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobwABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFIAUkBSwkAoAMBCQC9AgQFAUgJALYCAQUBSQUBZAUBSwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFRAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBagEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AAJhZQIHJXNfX2ZlZQACYWYJAGsDAAoFAWIAkE4AAmFnCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQJhZgACYWgJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWkJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWsAHgACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWoFAmFrAQJhbQACESVzX19mYWN0b3J5Q29uZmlnAQJhbgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW8BAmFwCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFwAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcgICX18FAmFzAghfX2NvbmZpZwECYXQBAmF1CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF1AQJhdgACDCVzX19zaHV0ZG93bgECYXcBAmF4CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXgBAmF5AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF6Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUEDAmFCAmFDAmFECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQgINIHNlbmRlclZhbGlkPQkApQMBBQJhQwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUQBAmFFAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFIAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFJAQJhSgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAQJhSwECYUoJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAAJhTAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUEdGhpcwkBAVIAAAJhTQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUCYUwFAmF6AQJhTgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUwJAQJhdgAHAQJhTwAJANkEAQkBAmFFAgUCYUwJAQJhbgABAmFQAAQCYVEJAQJhRQIFBHRoaXMJAQJhYwAEAmFSCQECYUUCBQR0aGlzCQECYWQABAJhcwkBAmFIAgUCYUwJAQJhdAEFAmFSBAJhcgkBAmFIAgUCYUwJAQJhdAEFAmFRCQC1CQIJAQJhRQIFAmFMCQECYXECCQCkAwEFAmFyCQCkAwEFAmFzBQFqAQJhUwECYVQDCQAAAgUCYVQFAWkFBHVuaXQJANkEAQUCYVQBAmFVAQJhVAMJAAACBQJhVAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhVAECYVYBAmFXCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVcFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVwUBcAkA2QQBCQCRAwIFAmFXBQFxCQECYVMBCQCRAwIFAmFXBQFyCQECYVMBCQCRAwIFAmFXBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVwUBdQACYVgJAQJhVgEJAQJhUAAAAmFZBQJhWAACYVoIBQJhWQJfMQACYmEIBQJhWQJfMgACYmIIBQJhWQJfMwACYmMIBQJhWQJfNAACYmQIBQJhWQJfNQACYmUIBQJhWQJfNgACYmYIBQJhWQJfNwECYmcACQC1CQIJAQJhRQIFAmFMCQECYW0ABQFqAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJnAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZwAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJqCgJiawJibAJibQJibgJibwJicAJicQJicgJicwJidAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQFA25pbAUBagECYnUGAmJ2AmJ3AmJ4AmJuAmJxAmJyCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyBQNuaWwFAWoBAmJ5AQJiegMJAAACBQJiegIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnoBAmJBAgJiQgJiQwkAvAIDBQJiQgUBZAUCYkMBAmJEAwJiQgJiQwFLCQC9AgQFAmJCBQFkBQJiQwUBSwECYkUEAmJGAmJHAmJIAmJJBAJiSgkBAUQCBQJiSAUCYkYEAmJLCQEBRAIFAmJJBQJiRwkBAmJBAgUCYksFAmJKAQJiTAMCYkgCYkkCYk0EAmJOCQECYVAABAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJiUQkBAmJFBAUCYk8FAmJQBQJiSAUCYkkEAmJDCQEBRAIFAmJIBQJiTwQCYkIJAQFEAgUCYkkFAmJQBAJiUgkBAUQCBQJiTQUBYgQCYlMJAQJiQQIFAmJDBQJiUgQCYlQJAQJiQQIFAmJCBQJiUgkAzAgCBQJiUQkAzAgCBQJiUwkAzAgCBQJiVAUDbmlsAQJiVQMCYkgCYkkCYk0EAmJWCQECYkwDBQJiSAUCYkkFAmJNCQDMCAIJAQFHAgkAkQMCBQJiVgAABQFiCQDMCAIJAQFHAgkAkQMCBQJiVgABBQFiCQDMCAIJAQFHAgkAkQMCBQJiVgACBQFiBQNuaWwBAmJXBAJiWAJiWQJiWgFaBAJiTgkBAmFQAAQCY2EJAJEDAgUCYk4FAXEEAmNiCQCRAwIFAmJOBQFyBAJjYwkAkQMCBQJiTgUBcwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCY2QJAJEDAgUCYk4FAXAEAmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY2EJAKwCAgkArAICAgZBc3NldCAFAmNhAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmNhBQJiWQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2YJAQJieQEFAmNiBAJjZwkBAUQCBQJjZgUCYkYEAmNoCQECYnkBBQJjYwQCY2kJAQFEAgUCY2gFAmJHBAJjagkBAmJBAgUCY2kFAmNnBAJjawkBAUcCBQJjagUBYgQCY2wJAQFEAgUCYloFAWIEAmNtCQEBRAIFAmNlBQFiBAJjbgkAvAIDBQJjZwUCY2wFAmNtBAJjbwkAvAIDBQJjaQUCY2wFAmNtBAJjcAkBAUoDBQJjbgUCYkYFBUZMT09SBAJjcQkBAUoDBQJjbwUCYkcFBUZMT09SBAJjcgMJAAACBQJiWAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCY3ADCQAAAgUCY2ICBVdBVkVTBQR1bml0CQDZBAEFAmNiCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmNxAwkAAAIFAmNjAgVXQVZFUwUEdW5pdAkA2QQBBQJjYwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAVoFAmJYCQECYnUGBQJjcAUCY3EFAmJaBQJjawUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjawUDbmlsCQCcCgoFAmNwBQJjcQUCY2IFAmNjBQJjZgUCY2gFAmNlBQJjagUCY2QFAmNyAQJjcwkCYlgCY3QCY3UCY3YCY3cCY3gBWgJjeQJjegQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmNBCQCRAwIFAmJOBQFyBAJjQgkAkQMCBQJiTgUBcwQCY0MJAJEDAgUCYk4FAXYEAmNECQCRAwIFAmJOBQF3BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJjZAkAkQMCBQJiTgUBcAQCY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2EJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2ECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjRQkA2AQBCQELdmFsdWVPckVsc2UCBQJjdgkA2QQBAgVXQVZFUwQCY0YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3gJANkEAQIFV0FWRVMDAwkBAiE9AgUCY0EFAmNFBgkBAiE9AgUCY0IFAmNGCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCY2YDBQJjeQkBAmJ5AQUCY0EJAGUCCQECYnkBBQJjQQUCY3UEAmNoAwUCY3kJAQJieQEFAmNCCQBlAgkBAmJ5AQUCY0IFAmN3BAJjRwkBAUQCBQJjdQUCYk8EAmNICQEBRAIFAmN3BQJiUAQCY0kJAQJiQQIFAmNIBQJjRwQCY2cJAQFEAgUCY2YFAmJPBAJjaQkBAUQCBQJjaAUCYlAEAmNKAwkAAAIFAmNlAAAEAmNqBQFlBAJjSwUBZQQCYlIJAHYGCQC5AgIFAmNHBQJjSAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiUgUBYgkBAUcCBQJjRwUCYk8JAQFHAgUCY0gFAmJQCQECYkECCQC3AgIFAmNpBQJjSAkAtwICBQJjZwUCY0cFAmNLBAJjagkBAmJBAgUCY2kFAmNnBAJjSwkAvAIDCQEBUQEJALgCAgUCY2oFAmNJBQFkBQJjagQCY0wJAQFEAgUCY3QFAWIDAwkBAiE9AgUCY2oFAWUJAL8CAgUCY0sFAmNMBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSwIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNMBAJjbQkBAUQCBQJjZQUBYgQCY00JAL0CBAUCY0cJAQJiRAMFAmNpBQJjZwUHQ0VJTElORwUBZAUHQ0VJTElORwQCY04JAL0CBAUCY0gFAWQJAQJiRAMFAmNpBQJjZwUFRkxPT1IFB0NFSUxJTkcEAmNPAwkAvwICBQJjTQUCY0gJAJQKAgUCY04FAmNICQCUCgIFAmNHBQJjTQQCY1AIBQJjTwJfMQQCY1EIBQJjTwJfMgQCYlIJAL0CBAUCY20FAmNRBQJjaQUFRkxPT1IJAJcKBQkBAUoDBQJiUgUBYgUFRkxPT1IJAQFKAwUCY1AFAmJPBQdDRUlMSU5HCQEBSgMFAmNRBQJiUAUHQ0VJTElORwUCY2oFAmNLBAJjUggFAmNKAl8xBAJjUwgFAmNKAl8yBAJjVAgFAmNKAl8zBAJjawkBAUcCCAUCY0oCXzQFAWIEAmNVCQEBRwIIBQJjSgJfNQUBYgMJAGcCAAAFAmNSCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjVgMJAQEhAQUCY3oAAAUCY1IEAmNXCQBlAgUCY3UFAmNTBAJjWAkAZQIFAmN3BQJjVAQCY1kJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQFaBQJiWAkBAmJqCgUCY1MFAmNUBQJjVgUCY2sFAmN0BQJjVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1cFAmNYBQNuaWwJAJ8KDQUCY1IFAmNWBQJjawUCY2YFAmNoBQJjZQUCY2EFAmNkBQJjWQUCY1cFAmNYBQJjdgUCY3gBAmNaAwJkYQJkYgJjZQQCZGMJALwCAwkAdgYJALkCAgUCZGEFAmRiAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2UDCQAAAgUCY2UFAWYFAWYFAmRjAQJkZAMCZGUCZGYCZGcEAmRoCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmMFAmRlBAJkaQkAuAICCQC2AgEJAQJieQEJAQJhVQEFAmJkBQJkZgQCZGoJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiYghxdWFudGl0eQUCZGcEAmRrCQECY1oDBQJkaAUCZGkFAmRqBQJkawECZGwDAmRtAmRuAmRnBAJkaAkAZAIJAQJieQEJAQJhVQEFAmJjBQJkbQQCZGkJAGQCCQECYnkBCQECYVUBBQJiZAUCZG4EAmRqCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmIIcXVhbnRpdHkFAmRnBAJkYwkBAmNaAwkAtgIBBQJkaAkAtgIBBQJkaQkAtgIBBQJkagQCZG8JAMwIAgkBDEludGVnZXJFbnRyeQIFAmFpBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWgJAKYDAQUCZGMFA25pbAkAlAoCBQJkbwUCZGMBAmRwAgJkcQJkYwMJAMACAgUCZGMFAmRxBgkBAmFJAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkcQkAzAgCCQCmAwEFAmRjBQNuaWwCASABAmRyAQJkcwQCZHQIBQJkcwZhbW91bnQEAmR1CQBuBAgFAmRzBmFtb3VudAgFAmRzBXByaWNlBQFiBQVGTE9PUgQCZHYDCQAAAggFAmRzCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmR0CQEBLQEFAmR1CQCUCgIJAQEtAQUCZHQFAmR1BAJkbQgFAmR2Al8xBAJkbggFAmR2Al8yAwMDCQECYU4ABgkAAAIFAmJhBQFtBgkAAAIFAmJhBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmRzCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmMGCQECIT0CCAgFAmRzCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiZAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmR3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFAmFoCQECYUsBAg9rTHAgaXMgcmVxdWlyZWQJAQJhSwECC2ludmFsaWQga0xwBAJkeAkBAmRsAwUCZG0FAmRuAAAEAmR5CAUCZHgCXzEEAmR6CAUCZHgCXzIEAmRBCQDAAgIFAmR6BQJkdwUCZEEBAmRCAQJkQwMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZEQJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAAEAmJZCQEFdmFsdWUBCAUCZEQHYXNzZXRJZAQCZEUIBQJkRAZhbW91bnQEAmNKCQECYlcECQDYBAEIBQJkQw10cmFuc2FjdGlvbklkCQDYBAEFAmJZBQJkRQgFAmRDBmNhbGxlcgQCY3AIBQJjSgJfMQQCY3EIBQJjSgJfMgQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjcggFAmNKA18xMAMDCQECYU4ABgkAAAIFAmNkBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAkAlwoFBQJjcAUCY3EFAmRFBQJiWQUCY3IBAmRGAwJkQwJjdAJjegMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkRwkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZEgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEEAmRJCQECY3MJCQDYBAEIBQJkQw10cmFuc2FjdGlvbklkBQJjdAgFAmRHBmFtb3VudAgFAmRHB2Fzc2V0SWQIBQJkSAZhbW91bnQIBQJkSAdhc3NldElkCQClCAEIBQJkQwZjYWxsZXIHBQJjegQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmRJAl84AwMDCQECYU4ABgkAAAIFAmNkBQFsBgkAAAIFAmNkBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAUCZEkBAmRKAQJkSwQCZEwJAPwHBAUCYUwCBGVtaXQJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmRMBQJkTAQCZE0EAmROBQJkTAMJAAECBQJkTgIHQWRkcmVzcwQCZE8FAmROCQD8BwQFAmRPAgRlbWl0CQDMCAIFAmRLBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkTQUCZE0FAmRLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkUAECZEsEAmRRCQBrAwUCZEsFAmFnBQFiCQCUCgIJAGUCBQJkSwUCZFEFAmRRAQJkUgQCZFMCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCZFYJAQJieQEJAQJhVQEFAmJjBAJkVwkBAmJ5AQkBAmFVAQUCYmQEAmRYAwkAAAIFAmRUBQJiYwYDCQAAAgUCZFQFAmJkBwkBAmFJAQINaW52YWxpZCBhc3NldAQCZFkDBQJkVQkAlAoCBQJkVgUCZFcDBQJkWAkAlAoCCQBlAgUCZFYFAmRTBQJkVwkAlAoCBQJkVgkAZQIFAmRXBQJkUwQCZFoIBQJkWQJfMQQCZWEIBQJkWQJfMgQCZWIDBQJkWAkAlAoCBQJkUwAACQCUCgIAAAUCZFMEAmVjCAUCZWICXzEEAmVkCAUCZWICXzIEAmR0CAkBAmRQAQUCZWMCXzEEAmR1CAkBAmRQAQUCZWQCXzEEAmVlCQECZFABBQJkUwQCZWYIBQJlZQJfMQQCZFEIBQJlZQJfMgQCZWcJAGQCBQJkWgUCZHQEAmVoCQBkAgUCZWEFAmR1BAJlaQkBAmJBAgkBAUQCBQJlaAUCYmYJAQFEAgUCZWcFAmJlBAJlagkBAUcCBQJlaQUBYgQCZWsDBQJkWAUCZFoFAmVhBAJlbAkAtgIBBQJlawQCZW0JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiYgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiYgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVuAwkAvwICBQJlbQUBZgYJAQJhSQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZW4FAmVuBAJlbwkAtgIBBQJlZgQCZXAJAJYDAQkAzAgCAAAJAMwIAgkBAUoDCQC8AgMFAmVtCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZW8FAWQFAmVsABIAEgUERE9XTgUBZAUBZAUBYgUFRkxPT1IFA25pbAQCY1kDBQJkVQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYmoKBQJlYwUCZWQFAmVwBQJlagAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVxCQECYkECCQEBRAIFAmVhBQJiZgkBAUQCBQJkWgUCYmUEAmVyCQEBRwIFAmVxBQFiBAJlcwQCZXQDBQJkWAkAlAoCBQJlYwUCZFoJAJQKAgUCZWQFAmVhBAJkSwgFAmV0Al8xBAJldQgFAmV0Al8yBAJldgkAoAMBCQC8AgMFAmVtCQC2AgEJAGkCBQJkSwACCQC2AgEFAmV1CQBrAwkAZQIFAmVwBQJldgUBYgUCZXYJAJcKBQUCZXAFAmNZBQJkUQUCZXMFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldwUCZXgCZWYCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCYk4JAQJhUAAEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmV5CQDMCAIDCQAAAgUCZFQFAmJiBgkBAmFJAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmV5BQJleQQCZXoDCQAAAgUCZXgFAmJjBgMJAAACBQJleAUCYmQHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJlQQMFAmV6CQC2AgEJAQJieQEJAQJhVQEFAmJjCQC2AgEJAQJieQEJAQJhVQEFAmJkBAJlQgMFAmV6BQJiTwUCYlAEAmVDCQECYnkBCQECYVUBBQJiYwQCZUQJAQJieQEJAQJhVQEFAmJkBAJlRQMFAmV6BQJlQwUCZUQEAmVGCQC2AgEFAmVFBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUcJALYCAQUCZWYEAmVICQCWAwEJAMwIAgAACQDMCAIJAQFKAwkAvAIDBQJlQQkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZUcFAWQFAmVtABIFAWgAAAASBQRET1dOBQFkBQJlQgUFRkxPT1IFA25pbAQCZUkJAQJkUAEFAmVIBAJlSggFAmVJAl8xBAJkUQgFAmVJAl8yBAJlSwMFAmV6CQCWCgQFAmVKAAAJAGUCBQJlQwUCZUgFAmVECQCWCgQAAAUCZUoFAmVDCQBlAgUCZUQFAmVIBAJlTAgFAmVLAl8xBAJlTQgFAmVLAl8yBAJlTggFAmVLAl8zBAJlTwgFAmVLAl80BAJlaQkBAmJBAgkBAUQCBQJlTwUCYmYJAQFEAgUCZU4FAmJlBAJlagkBAUcCBQJlaQUBYgQCY1kDBQJkVQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQkBBXZhbHVlAQUBWgkA2AQBCQEFdmFsdWUBBQJhYQkBAmJ1BgUCZUwFAmVNBQJlZgUCZWoFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFA25pbAQCZXEJAQJiQQIJAQFEAgUCZUQFAmJmCQEBRAIFAmVDBQJiZQQCZXIJAQFHAgUCZXEFAWIEAmVzBAJlUAkAaAIJAKADAQkAvAIDBQJlQQUCZUcFAmVtAAIJAGsDCQBlAgUCZUoFAmVQBQFiBQJlUAkAlwoFBQJlSgUCY1kFAmRRBQJlcwUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVRAAQCZE4JAKIIAQkBAVMAAwkAAQIFAmROAgZTdHJpbmcEAmVSBQJkTgkA2QQBBQJlUgMJAAECBQJkTgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUwAEAmROCQCiCAEJAQFUAAMJAAECBQJkTgIGU3RyaW5nBAJlUgUCZE4JANkEAQUCZVIDCQABAgUCZE4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVQBAmRDBAJkTgkBAmVRAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVUFAmROCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQUCZVUDCQABAgUCZE4CBFVuaXQJAAACCAUCZEMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmVWAQJkQwQCZVcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZE4JAQJlUQADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVVBQJkTgMJAAACCAUCZEMPY2FsbGVyUHVibGljS2V5BQJlVQYFAmVXAwkAAQIFAmROAgRVbml0AwkAAAIIBQJkQwZjYWxsZXIFBHRoaXMGBQJlVwkAAgECC01hdGNoIGVycm9yGwJkQwEKc2V0TWFuYWdlcgECZVgEAmVZCQECZVYBBQJkQwMJAAACBQJlWQUCZVkEAmVaCQDZBAEFAmVYAwkAAAIFAmVaBQJlWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmVYBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBDmNvbmZpcm1NYW5hZ2VyAAQCZmEJAQJlUwAEAmZiAwkBCWlzRGVmaW5lZAEFAmZhBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYgUCZmIEAmZjAwkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZhBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYwUCZmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmZhCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNwdXQCAmN0AmZkAwkAZgIAAAUCY3QJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJjdAYEAmNWCAUCZEkCXzIEAmNhCAUCZEkCXzcEAmNyCAUCZEkCXzkEAmNXCAUCZEkDXzEwBAJjWAgFAmRJA18xMQQCZmUIBQJkSQNfMTIEAmZmCAUCZEkDXzEzBAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZmcDCQBmAgUCY1cAAAkA/AcEBQJiaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZlBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAMJAGYCBQJjWAAACQD8BwQFAmJpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmYFAmNYBQNuaWwFA25pbAMJAAACBQJmaAUCZmgEAmZpAwUCZmQEAmZqCQD8BwQFAmJoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCY1YFA25pbAMJAAACBQJmagUCZmoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJjVgUCY2EFA25pbAQCZmsJAQJkbAMAAAAAAAADCQAAAgUCZmsFAmZrBAJkYwgFAmZrAl8yBAJmbAgFAmZrAl8xBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCCQDOCAIFAmNyBQJmaQUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCnB1dEZvckZyZWUBAmZuAwkAZgIAAAUCZm4JAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJmbgcEAmNyCAUCZEkCXzkEAmRHCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABmFtb3VudAQCZEgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEGYW1vdW50BAJkawkBAmRkAwUCZEcFAmRICQC2AgEAAAMJAAACBQJkawUCZGsEAmZvCQECZGwDAAAAAAAABAJmbAgFAmZvAl8xBAJkYwgFAmZvAl8yBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCBQJjcgUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCXB1dE9uZVRrbgICZnACZnEEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnQDAwMJAQJhTgAGCQAAAgUCYmEFAWwGCQAAAgUCYmEFAW4GBQJmcgQCZXkJAMwIAgMDCQEBIQEFAmZ0BgkBAmVUAQUCZEMGCQECYUkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJmdQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZFQIBQJmdQdhc3NldElkBAJkUwgFAmZ1BmFtb3VudAQCZGsDCQAAAgUCZFQFAmJjCQECZGQDCQC2AgEFAmRTCQC2AgEAAAkAtgIBAAADCQAAAgUCZFQFAmJkCQECZGQDCQC2AgEAAAkAtgIBBQJkUwkAtgIBAAAJAQJhSQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJmdgkBAmRSBAUCZFMFAmRUBQFaBQJhYQMJAAACBQJmdgUCZnYEAmRYCAUCZnYCXzUEAmZ3CAUCZnYCXzQEAmRRCAUCZnYCXzMEAmNZCAUCZnYCXzIEAmZ4CAUCZnYCXzEEAmZ5AwMJAGYCBQJmcAAACQBmAgUCZnAFAmZ4BwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcAUDbmlsAgAFAmZ4BAJkTAkBAmRKAQUCZnkDCQAAAgUCZEwFAmRMBAJmaQMFAmZxBAJmegkA/AcEBQJiaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZ5BQNuaWwDCQAAAgUCZnoFAmZ6BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRDBmNhbGxlcgUCZnkFAmJiBQNuaWwEAmZBAwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJkVAUDbmlsBQNuaWwEAmZCAwkAAAIFBHRoaXMFAmFNCQCUCgIAAAAAAwUCZFgJAJQKAgkBAS0BBQJkUQAACQCUCgIAAAkBAS0BBQJkUQQCZG0IBQJmQgJfMQQCZG4IBQJmQgJfMgQCZkMJAQJkbAMFAmRtBQJkbgAABAJmbAgFAmZDAl8xBAJkYwgFAmZDAl8yBAJkdwkBBXZhbHVlAQkAoggBBQJhaAQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZpBQJmQQUCZmwFAmZ5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARFwdXRPbmVUa25SRUFET05MWQICZFQCZFMEAmZECQECZFIEBQJkUwkBAmFTAQUCZFQFBHVuaXQFBHVuaXQEAmZ4CAUCZkQCXzEEAmNZCAUCZkQCXzIEAmRRCAUCZkQCXzMEAmZ3CAUCZkQCXzQEAmRYCAUCZkQCXzUJAJQKAgUDbmlsCQCVCgMFAmZ4BQJkUQUCZncCZEMBCWdldE9uZVRrbgICZkUCZnAEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkYDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZyBAJleQkAzAgCAwMJAQEhAQUCZkYGCQECZVQBBQJkQwYJAQJhSQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRDCHBheW1lbnRzAAEGCQECYUkBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJleQUCZXkEAmV4CQECYVMBBQJmRQQCZnUJAJEDAggFAmRDCHBheW1lbnRzAAAEAmRUCAUCZnUHYXNzZXRJZAQCZWYIBQJmdQZhbW91bnQEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZWYEAVoIBQJkQwZjYWxsZXIEAmFhCAUCZEMNdHJhbnNhY3Rpb25JZAQCZkcJAQJldwUFAmV4BQJlZgUCZFQFAVoFAmFhAwkAAAIFAmZHBQJmRwQCZXoIBQJmRwJfNQQCZncIBQJmRwJfNAQCZFEIBQJmRwJfMwQCY1kIBQJmRwJfMgQCZkgIBQJmRwJfMQQCZEsDAwkAZgIFAmZwAAAJAGYCBQJmcAUCZkgHCQECYUkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUCZkgEAmZJCQD8BwQFAmFMAgRidXJuCQDMCAIFAmVmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRUBQJlZgUDbmlsAwkAAAIFAmZJBQJmSQQCZkoJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCZEsFAmV4BQNuaWwEAmZBAwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJleAUDbmlsBQNuaWwEAmZLBAJmTAMJAAACBQR0aGlzBQJhTQAABQJkUQMFAmV6CQCUCgIJAQEtAQkAZAIFAmRLBQJmTAAACQCUCgIAAAkBAS0BCQBkAgUCZEsFAmZMBAJkbQgFAmZLAl8xBAJkbggFAmZLAl8yBAJmTQkBAmRsAwUCZG0FAmRuAAAEAmZsCAUCZk0CXzEEAmRjCAUCZk0CXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNZBQJmSgUCZkEFAmZsBQJkSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwERZ2V0T25lVGtuUkVBRE9OTFkCAmV4AmVmBAJmTgkBAmV3BQkBAmFTAQUCZXgFAmVmBQJiYgUEdW5pdAUEdW5pdAQCZkgIBQJmTgJfMQQCY1kIBQJmTgJfMgQCZFEIBQJmTgJfMwQCZncIBQJmTgJfNAQCZXoIBQJmTgJfNQkAlAoCBQNuaWwJAJUKAwUCZkgFAmRRBQJmdwJkQwETdW5zdGFrZUFuZEdldE9uZVRrbgMCZk8CZkUCZnAEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkYDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZyBAJleQkAzAgCAwMJAQEhAQUCZkYGCQECZVQBBQJkQwYJAQJhSQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRDCHBheW1lbnRzAAAGCQECYUkBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJleQUCZXkEAmV4CQECYVMBBQJmRQQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZlAJAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiYgkAzAgCBQJmTwUDbmlsBQNuaWwDCQAAAgUCZlAFAmZQBAJmUQkBAmV3BQUCZXgFAmZPBQJiYgUBWgUCYWEDCQAAAgUCZlEFAmZRBAJleggFAmZRAl81BAJmdwgFAmZRAl80BAJkUQgFAmZRAl8zBAJjWQgFAmZRAl8yBAJmSAgFAmZRAl8xBAJkSwMDCQBmAgUCZnAAAAkAZgIFAmZwBQJmSAcJAQJhSQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZnAFA25pbAIABQJmSAQCZkkJAPwHBAUCYUwCBGJ1cm4JAMwIAgUCZk8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZPBQNuaWwDCQAAAgUCZkkFAmZJBAJmSgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJkSwUCZXgFA25pbAQCZkEDCQBmAgUCZFEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTQUCZFEFAmV4BQNuaWwFA25pbAQCZlIEAmZMAwkAAAIFBHRoaXMFAmFNAAAFAmRRAwUCZXoJAJQKAgkBAS0BCQBkAgUCZEsFAmZMAAAJAJQKAgAACQEBLQEJAGQCBQJkSwUCZkwEAmRtCAUCZlICXzEEAmRuCAUCZlICXzIEAmZTCQECZGwDBQJkbQUCZG4AAAQCZmwIBQJmUwJfMQQCZGMIBQJmUwJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZKBQJmQQUCZmwFAmRLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNnZXQABAJjSgkBAmRCAQUCZEMEAmZUCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZEUEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZVBQJmVQQCZlYJAQJkbAMJAQEtAQUCZlQJAQEtAQUCY3EAAAQCZmwIBQJmVgJfMQQCZGMIBQJmVgJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQlnZXROb0xlc3MCAmZXAmZYBAJjSgkBAmRCAQUCZEMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUDCQBmAgUCZlcFAmNwCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjcAIDIDwgCQCkAwEFAmZXAwkAZgIFAmZYBQJjcQkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNxAgMgPCAJAKQDAQUCZlgEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZEUEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZVBQJmVQQCZlkJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmwIBQJmWQJfMQQCZGMIBQJmWQJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQ11bnN0YWtlQW5kR2V0AQJkSwQCZloDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmWgUCZloEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZlAJAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJjYQkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZlAFAmZQBAJjSgkBAmJXBAkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAkA2AQBBQJjYQUCZEsIBQJkQwZjYWxsZXIEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY3IIBQJjSgNfMTAEAmdhAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBgMJAAACBQJnYQUCZ2EEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNhBQJkSwUDbmlsAwkAAAIFAmZVBQJmVQQCZ2IJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmwIBQJnYgJfMQQCZGMIBQJnYgJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJmTwJnYwJmWAQCZkYDCQECYU4ABgkAAAIFAmJhBQFuBAJleQkAzAgCAwkBASEBBQJmRgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmZQCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmIJAMwIAgUCZk8FA25pbAUDbmlsAwkAAAIFAmZQBQJmUAQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYmIFAmZPCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjcggFAmNKA18xMAQCZ2QJAMwIAgMJAGcCBQJjcAUCZ2MGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ2MFA25pbAIACQDMCAIDCQBnAgUCY3EFAmZYBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlgFA25pbAIABQNuaWwDCQAAAgUCZ2QFAmdkBAJmVQkA/AcEBQJhTAIEYnVybgkAzAgCBQJmTwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZk8FA25pbAMJAAACBQJmVQUCZlUEAmdlCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZsCAUCZ2UCXzEEAmRjCAUCZ2UCXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEIYWN0aXZhdGUCAmdmAmdnAwkBAiE9AgkApQgBCAUCZEMGY2FsbGVyCQClCAEFAmFMCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAAUCZ2YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAAUCZ2cFA25pbAIHc3VjY2VzcwJkQwEKcmVmcmVzaEtMcAAEAmdoCQELdmFsdWVPckVsc2UCCQCfCAEFAmFpAAAEAmdpAwkAZwIJAGUCBQZoZWlnaHQFAmdoBQJhbAUEdW5pdAkBAmFJAQkAuQkCCQDMCAIJAKQDAQUCYWwJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdpBQJnaQQCZHcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFoAgEwCQECYUsBAgtpbnZhbGlkIGtMcAQCZ2oJAQJkbAMAAAAAAAAEAmdrCAUCZ2oCXzEEAmRjCAUCZ2oCXzIEAmRvAwkBAiE9AgUCZHcFAmRjBQJnawkBAmFJAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmRvCQCmAwEFAmRjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhUAACZEMBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJ6CQCUCgIFA25pbAkBAmJ5AQUCYnoCZEMBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJIAmJJAmJNBAJiVgkBAmJMAwUCYkgFAmJJBQJiTQkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJWAAAJAMwIAgkApgMBCQCRAwIFAmJWAAEJAMwIAgkApgMBCQCRAwIFAmJWAAIFA25pbAJkQwEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRDARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAUkJAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUBSQJkQwEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiQgJiQwkAlAoCBQNuaWwJAKYDAQkBAmJBAgkApwMBBQJiQgkApwMBBQJiQwJkQwEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJYAmN0AmN1AmN2AmN3AmN4AVoCY3kCY3oJAJQKAgUDbmlsCQECY3MJBQJiWAUCY3QFAmN1BQJjdgUCY3cFAmN4BQFaBQJjeQUCY3oCZEMBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiWAJiWQJiWgFaBAJjSgkBAmJXBAUCYlgFAmJZBQJiWgkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWgkAlAoCBQNuaWwJAJwKCggFAmNKAl8xCAUCY0oCXzIIBQJjSgJfMwgFAmNKAl80CAUCY0oCXzUIBQJjSgJfNggFAmNKAl83CQCmAwEIBQJjSgJfOAgFAmNKAl85CAUCY0oDXzEwAmRDAQ1zdGF0c1JFQURPTkxZAAQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmdsCQCRAwIFAmJOBQFyBAJnbQkAkQMCBQJiTgUBcwQCY0MJAJEDAgUCYk4FAXYEAmNECQCRAwIFAmJOBQF3BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdvCQECYnkBBQJnbAQCZ3AJAQJieQEFAmdtBAJncQMJAAACBQJnbgAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiTAMFAmdvBQJncAUCZ24EAmNrAAAEAmdyCQEBRwIJAJEDAgUCZ3EAAQUBYgQCZ3MJAQFHAgkAkQMCBQJncQACBQFiBAJndAkBBXZhbHVlAQkAmggCBQJhTAkBAmF3AQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZ28JAMwIAgkApAMBBQJncAkAzAgCCQCkAwEFAmduCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJncgkAzAgCCQCkAwEFAmdzCQDMCAIJAKQDAQUCZ3QFA25pbAUBagJkQwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN1BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdvCQECYnkBBQJjQQQCZ3AJAQJieQEFAmNCBAJiSgkBAUQCBQJnbwUCYk8EAmJLCQEBRAIFAmdwBQJiUAQCY2oDCQAAAgUCZ24AAAUBZQkBAmJBAgUCYksFAmJKBAJjRwkBAUQCBQJjdQUCYk8EAmNICQC8AgMFAmNHBQJjagUBZAQCY3cJAQFHAgUCY0gFAmJQBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndQgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmN3BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd2CQECYnkBBQJjQQQCZ3cJAQJieQEFAmNCBAJneAkBAUQCBQJndgUCYk8EAmd5CQEBRAIFAmd3BQJiUAQCY2oDCQAAAgUCZ24AAAUBZQkBAmJBAgUCZ3kFAmd4BAJjSAkBAUQCBQJjdwUCYlAEAmNHCQC8AgMFAmNIBQFkBQJjagQCY3UJAQFHAgUCY0cFAmJPBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndQgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmd6AmdBBAJjSgkBAmJXBAIABQJnegUCZ0EFBHRoaXMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNmCAUCY0oCXzUEAmNoCAUCY0oCXzYEAmNlCAUCY0oCXzcEAmNrCAUCY0oCXzgEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNwCQDMCAIJAKQDAQUCY3EJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgkApgMBBQJjawkAzAgCCQCkAwEFAmNkBQNuaWwFAWoBAmdCAQJnQwAEAmdEBAJkTgkBAmVRAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVUFAmROBQJlVQMJAAECBQJkTgIEVW5pdAgFAmdCD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkTgUCZ0IDCQABAgUCZE4CBU9yZGVyBAJkcwUCZE4EAmdFCQECYU8ABAJhQgkBAmRyAQUCZHMEAmFDCQD0AwMIBQJkcwlib2R5Qnl0ZXMJAJEDAggFAmRzBnByb29mcwAACAUCZHMPc2VuZGVyUHVibGljS2V5BAJhRAkA9AMDCAUCZHMJYm9keUJ5dGVzCQCRAwIIBQJkcwZwcm9vZnMAAQUCZ0UDAwMFAmFCBQJhQwcFAmFEBwYJAQJhQQMFAmFCBQJhQwUCYUQDCQABAgUCZE4CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlUgUCZE4EAmdGCQD2AwEJAQV2YWx1ZQEIBQJlUgZzY3JpcHQEAmdHCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUwJAQJheQAEAmdICQDxBwEFBHRoaXMDAwkAAAIFAmdHBQJnRgkBAiE9AgUCZ0gFAmdGBwYJAPQDAwgFAmdCCWJvZHlCeXRlcwkAkQMCCAUCZ0IGcHJvb2ZzAAAFAmdECQD0AwMIBQJnQglib2R5Qnl0ZXMJAJEDAggFAmdCBnByb29mcwAABQJnRE1P6gM=", "chainId": 84, "height": 2362494, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9U3EKSVgc2kvbqVig8rQUE9j75DTZUD9LbVj9nJSZ5ds Next: AJbgM7ZbHGdqxxtiC6YDv5bEiS1vz8A692j97GKwAf8T Diff:
OldNewDifferences
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
71-func N (H) = if ((0 > H))
71+func L (M,N,O) = fraction(M, N, O)
72+
73+
74+func P (H) = if ((0 > H))
7275 then -(H)
7376 else H
7477
7578
76-func O (H) = if ((e > H))
79+func Q (H) = if ((e > H))
7780 then -(H)
7881 else H
7982
8083
81-func P () = "%s__factoryContract"
84+func R () = "%s__factoryContract"
8285
8386
84-func Q () = "%s__managerPublicKey"
87+func S () = "%s__managerPublicKey"
8588
8689
87-func R () = "%s__pendingManagerPublicKey"
90+func T () = "%s__pendingManagerPublicKey"
8891
8992
90-func S () = "%s%s__price__last"
93+func U () = "%s%s__price__last"
9194
9295
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
96+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9497
9598
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
99+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
97100
98101
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
102+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
100103
101104
102-func aa () = "%s__amountAsset"
105+func ac () = "%s__amountAsset"
103106
104107
105-func ab () = "%s__priceAsset"
108+func ad () = "%s__priceAsset"
106109
107110
108-func ac () = "%s__factoryConfig"
111+let ae = "%s__fee"
112+
113+let af = fraction(10, b, 10000)
114+
115+let ag = valueOrElse(getInteger(this, ae), af)
116+
117+let ah = makeString(["%s", "kLp"], j)
118+
119+let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120+
121+let aj = makeString(["%s", "refreshKLpDelay"], j)
122+
123+let ak = 30
124+
125+let al = valueOrElse(getInteger(this, aj), ak)
126+
127+func am () = "%s__factoryConfig"
109128
110129
111-func ad () = "%s%s__matcher__publicKey"
130+func an () = "%s%s__matcher__publicKey"
112131
113132
114-func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
133+func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
115134
116135
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136+func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
118137
119138
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
139+func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
121140
122141
123-func al () = "%s__shutdown"
142+func av () = "%s__shutdown"
124143
125144
126-func am (an) = ("%s%s__poolWeight__" + an)
145+func aw (ax) = ("%s%s__poolWeight__" + ax)
127146
128147
129-func ao () = "%s__allowedLpScriptHash"
148+func ay () = "%s__allowedLpScriptHash"
130149
131150
132-let ap = "%s__feeCollectorAddress"
151+let az = "%s__feeCollectorAddress"
133152
134-func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
153+func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
135154
136155
137-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
156+func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
138157
139158
140-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
159+func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
141160
142161
143-func ay (az) = throw(makeString(["lp.ride:", az], " "))
162+func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
144163
145164
146-let aA = addressFromStringValue(au(this, P()))
147-
148-let aB = addressFromStringValue(au(aA, ap))
149-
150-let aC = {
151- let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152- if ($isInstanceOf(aD, "Int"))
153- then aD
154- else throw(($getType(aD) + " couldn't be cast to Int"))
155- }
156-
157-let aE = {
158- let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159- if ($isInstanceOf(aD, "Int"))
160- then aD
161- else throw(($getType(aD) + " couldn't be cast to Int"))
162- }
163-
164-func aF () = valueOrElse(getBoolean(aA, al()), false)
165+func aK (aJ) = makeString(["lp.ride:", aJ], " ")
165166
166167
167-func aG () = fromBase58String(au(aA, ad()))
168+let aL = addressFromStringValue(aE(this, R()))
169+
170+let aM = addressFromStringValue(aE(aL, az))
171+
172+func aN () = valueOrElse(getBoolean(aL, av()), false)
168173
169174
170-func aH () = {
171- let aI = au(this, aa())
172- let aJ = au(this, ab())
173- let ai = ax(aA, aj(aJ))
174- let ah = ax(aA, aj(aI))
175- split(au(aA, ag(toString(ah), toString(ai))), j)
175+func aO () = fromBase58String(aE(aL, an()))
176+
177+
178+func aP () = {
179+ let aQ = aE(this, ac())
180+ let aR = aE(this, ad())
181+ let as = aH(aL, at(aR))
182+ let ar = aH(aL, at(aQ))
183+ split(aE(aL, aq(toString(ar), toString(as))), j)
176184 }
177185
178186
179-func aK (aL) = if ((aL == i))
187+func aS (aT) = if ((aT == i))
180188 then unit
181- else fromBase58String(aL)
189+ else fromBase58String(aT)
182190
183191
184-func aM (aL) = if ((aL == unit))
192+func aU (aT) = if ((aT == unit))
185193 then i
186- else toBase58String(value(aL))
194+ else toBase58String(value(aT))
187195
188196
189-func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
197+func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
190198
191199
192-let aP = aN(aH())
200+let aX = aV(aP())
193201
194-let aQ = aP
202+let aY = aX
195203
196-let aR = aQ._1
204+let aZ = aY._1
197205
198-let aS = aQ._2
206+let ba = aY._2
199207
200-let aT = aQ._3
208+let bb = aY._3
201209
202-let aU = aQ._4
210+let bc = aY._4
203211
204-let aV = aQ._5
212+let bd = aY._5
205213
206-let aW = aQ._6
214+let be = aY._6
207215
208-let aX = aQ._7
216+let bf = aY._7
209217
210-func aY () = split(au(aA, ac()), j)
218+func bg () = split(aE(aL, am()), j)
211219
212220
213-let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
221+let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
214222
215-let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
223+let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
216224
217-func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
225+func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
218226
219227
220-func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
228+func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
221229
222230
223-func bq (br) = if ((br == "WAVES"))
231+func by (bz) = if ((bz == "WAVES"))
224232 then wavesBalance(this).available
225- else assetBalance(this, fromBase58String(br))
233+ else assetBalance(this, fromBase58String(bz))
226234
227235
228-func bs (bt,bu) = fraction(bt, d, bu)
236+func bA (bB,bC) = fraction(bB, d, bC)
229237
230238
231-func bv (bw,bx,by,bz) = {
232- let bA = D(by, bw)
233- let bB = D(bz, bx)
234- bs(bB, bA)
239+func bD (bB,bC,K) = fraction(bB, d, bC, K)
240+
241+
242+func bE (bF,bG,bH,bI) = {
243+ let bJ = D(bH, bF)
244+ let bK = D(bI, bG)
245+ bA(bK, bJ)
235246 }
236247
237248
238-func bC (by,bz,bD) = {
239- let bE = aH()
240- let bF = parseIntValue(bE[t])
241- let bG = parseIntValue(bE[u])
242- let bH = bv(bF, bG, by, bz)
243- let bu = D(by, bF)
244- let bt = D(bz, bG)
245- let bI = D(bD, b)
246- let bJ = bs(bu, bI)
247- let bK = bs(bt, bI)
248-[bH, bJ, bK]
249+func bL (bH,bI,bM) = {
250+ let bN = aP()
251+ let bO = parseIntValue(bN[t])
252+ let bP = parseIntValue(bN[u])
253+ let bQ = bE(bO, bP, bH, bI)
254+ let bC = D(bH, bO)
255+ let bB = D(bI, bP)
256+ let bR = D(bM, b)
257+ let bS = bA(bC, bR)
258+ let bT = bA(bB, bR)
259+[bQ, bS, bT]
249260 }
250261
251262
252-func bL (by,bz,bD) = {
253- let bM = bC(by, bz, bD)
254-[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
263+func bU (bH,bI,bM) = {
264+ let bV = bL(bH, bI, bM)
265+[G(bV[0], b), G(bV[1], b), G(bV[2], b)]
255266 }
256267
257268
258-func bN (bO,bP,bQ,X) = {
259- let bE = aH()
260- let bR = bE[q]
261- let bS = bE[r]
262- let bT = bE[s]
263- let bw = parseIntValue(bE[t])
264- let bx = parseIntValue(bE[u])
265- let bU = bE[p]
266- let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267- if ((bR != bP))
269+func bW (bX,bY,bZ,Z) = {
270+ let bN = aP()
271+ let ca = bN[q]
272+ let cb = bN[r]
273+ let cc = bN[s]
274+ let bF = parseIntValue(bN[t])
275+ let bG = parseIntValue(bN[u])
276+ let cd = bN[p]
277+ let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278+ if ((ca != bY))
268279 then throw("Invalid asset passed.")
269280 else {
270- let bW = bq(bS)
271- let bX = D(bW, bw)
272- let bY = bq(bT)
273- let bZ = D(bY, bx)
274- let ca = bs(bZ, bX)
275- let cb = G(ca, b)
276- let cc = D(bQ, b)
277- let cd = D(bV, b)
278- let ce = fraction(bX, cc, cd)
279- let cf = fraction(bZ, cc, cd)
280- let cg = G(ce, bw)
281- let ch = G(cf, bx)
282- let ci = if ((bO == ""))
281+ let cf = by(cb)
282+ let cg = D(cf, bF)
283+ let ch = by(cc)
284+ let ci = D(ch, bG)
285+ let cj = bA(ci, cg)
286+ let ck = G(cj, b)
287+ let cl = D(bZ, b)
288+ let cm = D(ce, b)
289+ let cn = fraction(cg, cl, cm)
290+ let co = fraction(ci, cl, cm)
291+ let cp = J(cn, bF, FLOOR)
292+ let cq = J(co, bG, FLOOR)
293+ let cr = if ((bX == ""))
283294 then nil
284- else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
295+ else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
285296 then unit
286- else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
297+ else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
287298 then unit
288- else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289- $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
299+ else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300+ $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
290301 }
291302 }
292303
293304
294-func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295- let bE = aH()
296- let bR = fromBase58String(bE[q])
297- let cr = bE[r]
298- let cs = bE[s]
299- let ct = bE[v]
300- let cu = bE[w]
301- let bF = parseIntValue(bE[t])
302- let bG = parseIntValue(bE[u])
303- let bU = bE[p]
304- let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305- let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306- let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307- if (if ((cr != cv))
305+func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306+ let bN = aP()
307+ let ca = fromBase58String(bN[q])
308+ let cA = bN[r]
309+ let cB = bN[s]
310+ let cC = bN[v]
311+ let cD = bN[w]
312+ let bO = parseIntValue(bN[t])
313+ let bP = parseIntValue(bN[u])
314+ let cd = bN[p]
315+ let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316+ let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317+ let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318+ if (if ((cA != cE))
308319 then true
309- else (cs != cw))
320+ else (cB != cF))
310321 then throw("Invalid amt or price asset passed.")
311322 else {
312- let bW = if (cp)
313- then bq(cr)
314- else (bq(cr) - cl)
315- let bY = if (cp)
316- then bq(cs)
317- else (bq(cs) - cn)
318- let cx = D(cl, bF)
319- let cy = D(cn, bG)
320- let cz = bs(cy, cx)
321- let bX = D(bW, bF)
322- let bZ = D(bY, bG)
323- let cA = if ((bV == 0))
323+ let cf = if (cy)
324+ then by(cA)
325+ else (by(cA) - cu)
326+ let ch = if (cy)
327+ then by(cB)
328+ else (by(cB) - cw)
329+ let cG = D(cu, bO)
330+ let cH = D(cw, bP)
331+ let cI = bA(cH, cG)
332+ let cg = D(cf, bO)
333+ let ci = D(ch, bP)
334+ let cJ = if ((ce == 0))
324335 then {
325- let ca = e
326- let cB = e
327- let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328- $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
336+ let cj = e
337+ let cK = e
338+ let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339+ $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
329340 }
330341 else {
331- let ca = bs(bZ, bX)
332- let cB = fraction(O((ca - cz)), d, ca)
333- let cC = D(ck, b)
334- if (if ((ca != e))
335- then (cB > cC)
342+ let cj = bA(ci, cg)
343+ let cK = fraction(Q((cj - cI)), d, cj)
344+ let cL = D(ct, b)
345+ if (if ((cj != e))
346+ then (cK > cL)
336347 else false)
337- then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
348+ then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
338349 else {
339- let cd = D(bV, b)
340- let cD = fraction(cx, ca, d)
341- let cE = fraction(cy, d, ca)
342- let cF = if ((cD > cy))
343- then $Tuple2(cE, cy)
344- else $Tuple2(cx, cD)
345- let cG = cF._1
346- let cH = cF._2
347- let bI = fraction(cd, cH, bZ)
348- $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
350+ let cm = D(ce, b)
351+ let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352+ let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353+ let cO = if ((cM > cH))
354+ then $Tuple2(cN, cH)
355+ else $Tuple2(cG, cM)
356+ let cP = cO._1
357+ let cQ = cO._2
358+ let bR = fraction(cm, cQ, ci, FLOOR)
359+ $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
349360 }
350361 }
351- let cI = cA._1
352- let cJ = cA._2
353- let cK = cA._3
354- let cb = G(cA._4, b)
355- let cL = G(cA._5, b)
356- if ((0 >= cI))
362+ let cR = cJ._1
363+ let cS = cJ._2
364+ let cT = cJ._3
365+ let ck = G(cJ._4, b)
366+ let cU = G(cJ._5, b)
367+ if ((0 >= cR))
357368 then throw("Invalid calculations. LP calculated is less than zero.")
358369 else {
359- let cM = if (!(cq))
370+ let cV = if (!(cz))
360371 then 0
361- else cI
362- let cN = (cl - cJ)
363- let cO = (cn - cK)
364- let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365- $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
372+ else cR
373+ let cW = (cu - cS)
374+ let cX = (cw - cT)
375+ let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376+ $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
366377 }
367378 }
368379 }
369380
370381
371-func cQ (cR) = {
372- let bE = aH()
373- let cS = bE[r]
374- let cT = bE[s]
375- let bU = parseIntValue(bE[p])
376- let bF = parseIntValue(bE[t])
377- let bG = parseIntValue(bE[u])
378- let cU = bq(cS)
379- let cV = bq(cT)
380- let ca = if ((cR.orderType == Buy))
381- then bv(bF, bG, (cU + cR.amount), cV)
382- else bv(bF, bG, (cU - cR.amount), cV)
383- let cb = G(ca, b)
384- if (if (if (aF())
385- then true
386- else (bU == m))
387- then true
388- else (bU == n))
389- then throw("Exchange operations disabled")
390- else {
391- let cW = cR.assetPair.amountAsset
392- let cX = if ((cW == unit))
393- then "WAVES"
394- else toBase58String(value(cW))
395- let cY = cR.assetPair.priceAsset
396- let cZ = if ((cY == unit))
397- then "WAVES"
398- else toBase58String(value(cY))
399- if (if ((cX != cS))
400- then true
401- else (cZ != cT))
402- then throw("Wrong order assets.")
403- else {
404- let da = cR.price
405- let db = fraction(b, bG, bF)
406- let dc = J(da, b, db)
407- let dd = if ((cR.orderType == Buy))
408- then (cb >= dc)
409- else (dc >= cb)
410- true
411- }
412- }
382+func cZ (da,db,ce) = {
383+ let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384+ if ((ce == f))
385+ then f
386+ else dc
413387 }
414388
415389
416-func de (df) = if ((size(df.payments) != 1))
390+func dd (de,df,dg) = {
391+ let dh = (toBigInt(by(aU(bc))) - de)
392+ let di = (toBigInt(by(aU(bd))) - df)
393+ let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394+ let dk = cZ(dh, di, dj)
395+ dk
396+ }
397+
398+
399+func dl (dm,dn,dg) = {
400+ let dh = (by(aU(bc)) + dm)
401+ let di = (by(aU(bd)) + dn)
402+ let dj = (value(assetInfo(bb)).quantity + dg)
403+ let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404+ let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405+ $Tuple2(do, dc)
406+ }
407+
408+
409+func dp (dq,dc) = if ((dc >= dq))
410+ then true
411+ else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412+
413+
414+func dr (ds) = {
415+ let dt = ds.amount
416+ let du = fraction(ds.amount, ds.price, b, FLOOR)
417+ let dv = if ((ds.orderType == Buy))
418+ then $Tuple2(dt, -(du))
419+ else $Tuple2(-(dt), du)
420+ let dm = dv._1
421+ let dn = dv._2
422+ if (if (if (aN())
423+ then true
424+ else (ba == m))
425+ then true
426+ else (ba == n))
427+ then throw("Exchange operations disabled")
428+ else if (if ((ds.assetPair.amountAsset != bc))
429+ then true
430+ else (ds.assetPair.priceAsset != bd))
431+ then throw("Wrong order assets.")
432+ else {
433+ let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434+ let dx = dl(dm, dn, 0)
435+ let dy = dx._1
436+ let dz = dx._2
437+ let dA = (dz >= dw)
438+ dA
439+ }
440+ }
441+
442+
443+func dB (dC) = if ((size(dC.payments) != 1))
417444 then throw("exactly 1 payment is expected")
418445 else {
419- let dg = value(df.payments[0])
420- let bP = value(dg.assetId)
421- let dh = dg.amount
422- let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423- let cg = cA._1
424- let ch = cA._2
425- let bU = parseIntValue(cA._9)
426- let ci = cA._10
427- if (if (aF())
446+ let dD = value(dC.payments[0])
447+ let bY = value(dD.assetId)
448+ let dE = dD.amount
449+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450+ let cp = cJ._1
451+ let cq = cJ._2
452+ let cd = parseIntValue(cJ._9)
453+ let cr = cJ._10
454+ if (if (aN())
428455 then true
429- else (bU == n))
430- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431- else $Tuple5(cg, ch, dh, bP, ci)
456+ else (cd == n))
457+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458+ else $Tuple5(cp, cq, dE, bY, cr)
432459 }
433460
434461
435-func di (df,ck,cq) = if ((size(df.payments) != 2))
462+func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
436463 then throw("exactly 2 payments are expected")
437464 else {
438- let dj = value(df.payments[0])
439- let dk = value(df.payments[1])
440- let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441- let bU = parseIntValue(dl._8)
442- if (if (if (aF())
465+ let dG = value(dC.payments[0])
466+ let dH = value(dC.payments[1])
467+ let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468+ let cd = parseIntValue(dI._8)
469+ if (if (if (aN())
443470 then true
444- else (bU == l))
471+ else (cd == l))
445472 then true
446- else (bU == n))
447- then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448- else dl
473+ else (cd == n))
474+ then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475+ else dI
449476 }
450477
451478
452-func dm (dn) = {
453- let do = invoke(aA, "emit", [dn], nil)
454- if ((do == do))
479+func dJ (dK) = {
480+ let dL = invoke(aL, "emit", [dK], nil)
481+ if ((dL == dL))
455482 then {
456- let dp = {
457- let dq = do
458- if ($isInstanceOf(dq, "Address"))
483+ let dM = {
484+ let dN = dL
485+ if ($isInstanceOf(dN, "Address"))
459486 then {
460- let dr = dq
461- invoke(dr, "emit", [dn], nil)
487+ let dO = dN
488+ invoke(dO, "emit", [dK], nil)
462489 }
463490 else unit
464491 }
465- if ((dp == dp))
466- then dn
492+ if ((dM == dM))
493+ then dK
467494 else throw("Strict value is not equal to itself.")
468495 }
469496 else throw("Strict value is not equal to itself.")
470497 }
471498
472499
473-func ds (dn,dt) = {
474- let du = if ((dt == 0))
475- then 0
476- else fraction(dn, dt, b)
477- $Tuple2((dn - du), du)
500+func dP (dK) = {
501+ let dQ = fraction(dK, ag, b)
502+ $Tuple2((dK - dQ), dQ)
478503 }
479504
480505
481-func dv (dw,dx,X,Y) = {
482- let dy = (Y == unit)
483- let dz = bq(aM(aU))
484- let dA = bq(aM(aV))
485- let dB = if ((dx == aU))
506+func dR (dS,dT,Z,aa) = {
507+ let dU = (aa == unit)
508+ let dV = by(aU(bc))
509+ let dW = by(aU(bd))
510+ let dX = if ((dT == bc))
486511 then true
487- else if ((dx == aV))
512+ else if ((dT == bd))
488513 then false
489- else ay("invalid asset")
490- let dC = if (dy)
491- then $Tuple2(dz, dA)
492- else if (dB)
493- then $Tuple2((dz - dw), dA)
494- else $Tuple2(dz, (dA - dw))
495- let dD = dC._1
496- let dE = dC._2
497- let dF = if (dB)
498- then $Tuple2(dw, 0)
499- else $Tuple2(0, dw)
500- let dG = dF._1
501- let dH = dF._2
502- let dI = ds(dG, aC)._1
503- let dJ = ds(dH, aC)._1
504- let dK = ds(dw, aC)
505- let dL = dK._1
506- let du = dK._2
507- let dM = (dD + dI)
508- let dN = (dE + dJ)
509- let dO = bs(D(dN, aX), D(dM, aW))
510- let dP = G(dO, b)
511- let dQ = if (dB)
512- then dD
513- else dE
514- let dR = toBigInt(dQ)
515- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516- let dT = if ((dS > f))
514+ else aI("invalid asset")
515+ let dY = if (dU)
516+ then $Tuple2(dV, dW)
517+ else if (dX)
518+ then $Tuple2((dV - dS), dW)
519+ else $Tuple2(dV, (dW - dS))
520+ let dZ = dY._1
521+ let ea = dY._2
522+ let eb = if (dX)
523+ then $Tuple2(dS, 0)
524+ else $Tuple2(0, dS)
525+ let ec = eb._1
526+ let ed = eb._2
527+ let dt = dP(ec)._1
528+ let du = dP(ed)._1
529+ let ee = dP(dS)
530+ let ef = ee._1
531+ let dQ = ee._2
532+ let eg = (dZ + dt)
533+ let eh = (ea + du)
534+ let ei = bA(D(eh, bf), D(eg, be))
535+ let ej = G(ei, b)
536+ let ek = if (dX)
537+ then dZ
538+ else ea
539+ let el = toBigInt(ek)
540+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541+ let en = if ((em > f))
517542 then true
518- else ay("initial deposit requires all coins")
519- if ((dT == dT))
543+ else aI("initial deposit requires all coins")
544+ if ((en == en))
520545 then {
521- let dU = toBigInt(dL)
522- let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523- let cP = if (dy)
546+ let eo = toBigInt(ef)
547+ let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
548+ let cY = if (dU)
524549 then nil
525- else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526- let dW = bs(D(dE, aX), D(dD, aW))
527- let dX = G(dW, b)
528- let dY = {
529- let dZ = if (dB)
530- then $Tuple2(dG, dD)
531- else $Tuple2(dH, dE)
532- let dn = dZ._1
533- let ea = dZ._2
534- let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535- fraction((dV - eb), b, eb)
550+ else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551+ let eq = bA(D(ea, bf), D(dZ, be))
552+ let er = G(eq, b)
553+ let es = {
554+ let et = if (dX)
555+ then $Tuple2(ec, dZ)
556+ else $Tuple2(ed, ea)
557+ let dK = et._1
558+ let eu = et._2
559+ let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560+ fraction((ep - ev), b, ev)
536561 }
537- $Tuple4(dV, cP, du, dY)
562+ $Tuple5(ep, cY, dQ, es, dX)
538563 }
539564 else throw("Strict value is not equal to itself.")
540565 }
541566
542567
543-func ec (ed,dL,dx,X,Y) = {
544- let dy = (Y == unit)
545- let ee = [if ((dx == aT))
568+func ew (ex,ef,dT,Z,aa) = {
569+ let dU = (aa == unit)
570+ let bN = aP()
571+ let bO = parseIntValue(bN[t])
572+ let bP = parseIntValue(bN[u])
573+ let ey = [if ((dT == bb))
546574 then true
547- else ay("invalid lp asset")]
548- if ((ee == ee))
575+ else aI("invalid lp asset")]
576+ if ((ey == ey))
549577 then {
550- let ef = if ((ed == aU))
578+ let ez = if ((ex == bc))
551579 then true
552- else if ((ed == aV))
580+ else if ((ex == bd))
553581 then false
554- else ay("invalid asset")
555- let eg = if (ef)
556- then toBigInt(bq(aM(aU)))
557- else toBigInt(bq(aM(aV)))
558- let eh = bq(aM(aU))
559- let ei = bq(aM(aV))
560- let ej = if (ef)
561- then eh
562- else ei
563- let ek = toBigInt(ej)
564- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565- let el = toBigInt(dL)
566- let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567- let en = ds(em, aE)
568- let eo = en._1
569- let du = en._2
570- let ep = if (ef)
571- then $Tuple4(eo, 0, (eh - em), ei)
572- else $Tuple4(0, eo, eh, (ei - em))
573- let eq = ep._1
574- let er = ep._2
575- let es = ep._3
576- let et = ep._4
577- let dO = bs(D(et, aX), D(es, aW))
578- let dP = G(dO, b)
579- let cP = if (dy)
582+ else aI("invalid asset")
583+ let eA = if (ez)
584+ then toBigInt(by(aU(bc)))
585+ else toBigInt(by(aU(bd)))
586+ let eB = if (ez)
587+ then bO
588+ else bP
589+ let eC = by(aU(bc))
590+ let eD = by(aU(bd))
591+ let eE = if (ez)
592+ then eC
593+ else eD
594+ let eF = toBigInt(eE)
595+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596+ let eG = toBigInt(ef)
597+ let eH = max([0, J(fraction(eA, (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN)), d), eB, FLOOR)])
598+ let eI = dP(eH)
599+ let eJ = eI._1
600+ let dQ = eI._2
601+ let eK = if (ez)
602+ then $Tuple4(eJ, 0, (eC - eH), eD)
603+ else $Tuple4(0, eJ, eC, (eD - eH))
604+ let eL = eK._1
605+ let eM = eK._2
606+ let eN = eK._3
607+ let eO = eK._4
608+ let ei = bA(D(eO, bf), D(eN, be))
609+ let ej = G(ei, b)
610+ let cY = if (dU)
580611 then nil
581- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582- let dW = bs(D(ei, aX), D(eh, aW))
583- let dX = G(dW, b)
584- let dY = {
585- let eu = (toInt(fraction(eg, el, dS)) * 2)
586- fraction((eo - eu), b, eu)
612+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613+ let eq = bA(D(eD, bf), D(eC, be))
614+ let er = G(eq, b)
615+ let es = {
616+ let eP = (toInt(fraction(eA, eG, em)) * 2)
617+ fraction((eJ - eP), b, eP)
587618 }
588- $Tuple4(eo, cP, du, dY)
619+ $Tuple5(eJ, cY, dQ, es, ez)
589620 }
590621 else throw("Strict value is not equal to itself.")
591622 }
592623
593624
594-func ev () = {
595- let dq = getString(Q())
596- if ($isInstanceOf(dq, "String"))
625+func eQ () = {
626+ let dN = getString(S())
627+ if ($isInstanceOf(dN, "String"))
597628 then {
598- let ew = dq
599- fromBase58String(ew)
629+ let eR = dN
630+ fromBase58String(eR)
600631 }
601- else if ($isInstanceOf(dq, "Unit"))
632+ else if ($isInstanceOf(dN, "Unit"))
602633 then unit
603634 else throw("Match error")
604635 }
605636
606637
607-func ex () = {
608- let dq = getString(R())
609- if ($isInstanceOf(dq, "String"))
638+func eS () = {
639+ let dN = getString(T())
640+ if ($isInstanceOf(dN, "String"))
610641 then {
611- let ew = dq
612- fromBase58String(ew)
642+ let eR = dN
643+ fromBase58String(eR)
613644 }
614- else if ($isInstanceOf(dq, "Unit"))
645+ else if ($isInstanceOf(dN, "Unit"))
615646 then unit
616647 else throw("Match error")
617648 }
618649
619650
620-func ey (df) = {
621- let dq = ev()
622- if ($isInstanceOf(dq, "ByteVector"))
651+func eT (dC) = {
652+ let dN = eQ()
653+ if ($isInstanceOf(dN, "ByteVector"))
623654 then {
624- let ez = dq
625- (df.callerPublicKey == ez)
655+ let eU = dN
656+ (dC.callerPublicKey == eU)
626657 }
627- else if ($isInstanceOf(dq, "Unit"))
628- then (df.caller == this)
658+ else if ($isInstanceOf(dN, "Unit"))
659+ then (dC.caller == this)
629660 else throw("Match error")
630661 }
631662
632663
633-func eA (df) = {
634- let eB = throw("Permission denied")
635- let dq = ev()
636- if ($isInstanceOf(dq, "ByteVector"))
664+func eV (dC) = {
665+ let eW = throw("Permission denied")
666+ let dN = eQ()
667+ if ($isInstanceOf(dN, "ByteVector"))
637668 then {
638- let ez = dq
639- if ((df.callerPublicKey == ez))
669+ let eU = dN
670+ if ((dC.callerPublicKey == eU))
640671 then true
641- else eB
672+ else eW
642673 }
643- else if ($isInstanceOf(dq, "Unit"))
644- then if ((df.caller == this))
674+ else if ($isInstanceOf(dN, "Unit"))
675+ then if ((dC.caller == this))
645676 then true
646- else eB
677+ else eW
647678 else throw("Match error")
648679 }
649680
650681
651-@Callable(df)
652-func setManager (eC) = {
653- let eD = eA(df)
654- if ((eD == eD))
682+@Callable(dC)
683+func setManager (eX) = {
684+ let eY = eV(dC)
685+ if ((eY == eY))
655686 then {
656- let eE = fromBase58String(eC)
657- if ((eE == eE))
658- then [StringEntry(R(), eC)]
687+ let eZ = fromBase58String(eX)
688+ if ((eZ == eZ))
689+ then [StringEntry(T(), eX)]
659690 else throw("Strict value is not equal to itself.")
660691 }
661692 else throw("Strict value is not equal to itself.")
663694
664695
665696
666-@Callable(df)
697+@Callable(dC)
667698 func confirmManager () = {
668- let eF = ex()
669- let eG = if (isDefined(eF))
699+ let fa = eS()
700+ let fb = if (isDefined(fa))
670701 then true
671702 else throw("No pending manager")
672- if ((eG == eG))
703+ if ((fb == fb))
673704 then {
674- let eH = if ((df.callerPublicKey == value(eF)))
705+ let fc = if ((dC.callerPublicKey == value(fa)))
675706 then true
676707 else throw("You are not pending manager")
677- if ((eH == eH))
678- then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
708+ if ((fc == fc))
709+ then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
679710 else throw("Strict value is not equal to itself.")
680711 }
681712 else throw("Strict value is not equal to itself.")
683714
684715
685716
686-@Callable(df)
687-func put (ck,eI) = if ((0 > ck))
717+@Callable(dC)
718+func put (ct,fd) = if ((0 > ct))
688719 then throw("Invalid slippageTolerance passed")
689720 else {
690- let dl = di(df, ck, true)
691- let cM = dl._2
692- let bR = dl._7
693- let ci = dl._9
694- let cN = dl._10
695- let cO = dl._11
696- let eJ = dl._12
697- let eK = dl._13
698- let do = invoke(aA, "emit", [cM], nil)
699- if ((do == do))
721+ let dI = dF(dC, ct, true)
722+ let cV = dI._2
723+ let ca = dI._7
724+ let cr = dI._9
725+ let cW = dI._10
726+ let cX = dI._11
727+ let fe = dI._12
728+ let ff = dI._13
729+ let dG = toBigInt(value(dC.payments[0]).amount)
730+ let dH = toBigInt(value(dC.payments[1]).amount)
731+ let dk = dd(dG, dH, toBigInt(0))
732+ if ((dk == dk))
700733 then {
701- let dp = {
702- let dq = do
703- if ($isInstanceOf(dq, "Address"))
704- then {
705- let dr = dq
706- invoke(dr, "emit", [cM], nil)
734+ let dL = invoke(aL, "emit", [cV], nil)
735+ if ((dL == dL))
736+ then {
737+ let dM = {
738+ let dN = dL
739+ if ($isInstanceOf(dN, "Address"))
740+ then {
741+ let dO = dN
742+ invoke(dO, "emit", [cV], nil)
743+ }
744+ else unit
707745 }
708- else unit
709- }
710- if ((dp == dp))
711- then {
712- let eL = if ((cN > 0))
713- then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714- else nil
715- if ((eL == eL))
746+ if ((dM == dM))
716747 then {
717- let eM = if ((cO > 0))
718- then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
748+ let fg = if ((cW > 0))
749+ then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
719750 else nil
720- if ((eM == eM))
751+ if ((fg == fg))
721752 then {
722- let eN = if (eI)
753+ let fh = if ((cX > 0))
754+ then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
755+ else nil
756+ if ((fh == fh))
723757 then {
724- let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725- if ((eO == eO))
726- then nil
758+ let fi = if (fd)
759+ then {
760+ let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761+ if ((fj == fj))
762+ then nil
763+ else throw("Strict value is not equal to itself.")
764+ }
765+ else [ScriptTransfer(dC.caller, cV, ca)]
766+ let fk = dl(0, 0, 0)
767+ if ((fk == fk))
768+ then {
769+ let dc = fk._2
770+ let fl = fk._1
771+ let fm = dp(dk, dc)
772+ if ((fm == fm))
773+ then ((cr ++ fi) ++ fl)
774+ else throw("Strict value is not equal to itself.")
775+ }
727776 else throw("Strict value is not equal to itself.")
728777 }
729- else [ScriptTransfer(df.caller, cM, bR)]
730- (ci ++ eN)
778+ else throw("Strict value is not equal to itself.")
731779 }
732780 else throw("Strict value is not equal to itself.")
733781 }
740788
741789
742790
743-@Callable(df)
744-func putForFree (eP) = if ((0 > eP))
791+@Callable(dC)
792+func putForFree (fn) = if ((0 > fn))
745793 then throw("Invalid value passed")
746794 else {
747- let dl = di(df, eP, false)
748- dl._9
795+ let dI = dF(dC, fn, false)
796+ let cr = dI._9
797+ let dG = toBigInt(value(dC.payments[0]).amount)
798+ let dH = toBigInt(value(dC.payments[1]).amount)
799+ let dk = dd(dG, dH, toBigInt(0))
800+ if ((dk == dk))
801+ then {
802+ let fo = dl(0, 0, 0)
803+ let fl = fo._1
804+ let dc = fo._2
805+ let fm = dp(dk, dc)
806+ if ((fm == fm))
807+ then (cr ++ fl)
808+ else throw("Strict value is not equal to itself.")
809+ }
810+ else throw("Strict value is not equal to itself.")
749811 }
750812
751813
752814
753-@Callable(df)
754-func putOneTkn (eQ,eR) = {
755- let eS = {
756- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757- if ($isInstanceOf(aD, "Boolean"))
758- then aD
759- else throw(($getType(aD) + " couldn't be cast to Boolean"))
815+@Callable(dC)
816+func putOneTkn (fp,fq) = {
817+ let fr = {
818+ let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819+ if ($isInstanceOf(fs, "Boolean"))
820+ then fs
821+ else throw(($getType(fs) + " couldn't be cast to Boolean"))
760822 }
761- let eT = if (if (if (aF())
823+ let ft = if (if (if (aN())
762824 then true
763- else (aS == l))
825+ else (ba == l))
764826 then true
765- else (aS == n))
827+ else (ba == n))
766828 then true
767- else eS
768- let ee = [if (if (!(eT))
829+ else fr
830+ let ey = [if (if (!(ft))
769831 then true
770- else ey(df))
832+ else eT(dC))
771833 then true
772- else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
834+ else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
773835 then true
774- else ay("exactly 1 payment are expected")]
775- if ((ee == ee))
836+ else aI("exactly 1 payment are expected")]
837+ if ((ey == ey))
776838 then {
777- let eU = df.payments[0]
778- let dx = eU.assetId
779- let dw = eU.amount
780- let X = df.caller
781- let Y = df.transactionId
782- let eV = dv(dw, dx, X, Y)
783- if ((eV == eV))
839+ let fu = dC.payments[0]
840+ let dT = fu.assetId
841+ let dS = fu.amount
842+ let dk = if ((dT == bc))
843+ then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844+ else if ((dT == bd))
845+ then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
846+ else aI("payment asset is not supported")
847+ let Z = dC.caller
848+ let aa = dC.transactionId
849+ let fv = dR(dS, dT, Z, aa)
850+ if ((fv == fv))
784851 then {
785- let eW = eV._4
786- let du = eV._3
787- let cP = eV._2
788- let eX = eV._1
789- let eY = if (if ((eQ > 0))
790- then (eQ > eX)
852+ let dX = fv._5
853+ let fw = fv._4
854+ let dQ = fv._3
855+ let cY = fv._2
856+ let fx = fv._1
857+ let fy = if (if ((fp > 0))
858+ then (fp > fx)
791859 else false)
792- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793- else eX
794- let do = dm(eY)
795- if ((do == do))
860+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
861+ else fx
862+ let dL = dJ(fy)
863+ if ((dL == dL))
796864 then {
797- let eN = if (eR)
865+ let fi = if (fq)
798866 then {
799- let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800- if ((eZ == eZ))
867+ let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
868+ if ((fz == fz))
801869 then nil
802870 else throw("Strict value is not equal to itself.")
803871 }
804- else [ScriptTransfer(df.caller, eY, aT)]
805- let fa = if ((du > 0))
806- then [ScriptTransfer(aB, du, dx)]
872+ else [ScriptTransfer(dC.caller, fy, bb)]
873+ let fA = if ((dQ > 0))
874+ then [ScriptTransfer(aM, dQ, dT)]
807875 else nil
808- $Tuple2(((cP ++ eN) ++ fa), eY)
876+ let fB = if ((this == aM))
877+ then $Tuple2(0, 0)
878+ else if (dX)
879+ then $Tuple2(-(dQ), 0)
880+ else $Tuple2(0, -(dQ))
881+ let dm = fB._1
882+ let dn = fB._2
883+ let fC = dl(dm, dn, 0)
884+ let fl = fC._1
885+ let dc = fC._2
886+ let dw = value(getString(ah))
887+ let fm = dp(dk, dc)
888+ if ((fm == fm))
889+ then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
890+ else throw("Strict value is not equal to itself.")
809891 }
810892 else throw("Strict value is not equal to itself.")
811893 }
816898
817899
818900
819-@Callable(df)
820-func putOneTknREADONLY (dx,dw) = {
821- let fb = dv(dw, aK(dx), unit, unit)
822- let eX = fb._1
823- let cP = fb._2
824- let du = fb._3
825- let eW = fb._4
826- $Tuple2(nil, $Tuple3(eX, du, eW))
901+@Callable(dC)
902+func putOneTknREADONLY (dT,dS) = {
903+ let fD = dR(dS, aS(dT), unit, unit)
904+ let fx = fD._1
905+ let cY = fD._2
906+ let dQ = fD._3
907+ let fw = fD._4
908+ let dX = fD._5
909+ $Tuple2(nil, $Tuple3(fx, dQ, fw))
827910 }
828911
829912
830913
831-@Callable(df)
832-func getOneTkn (fc,eQ) = {
833- let eS = {
834- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aD, "Boolean"))
836- then aD
837- else throw(($getType(aD) + " couldn't be cast to Boolean"))
914+@Callable(dC)
915+func getOneTkn (fE,fp) = {
916+ let fr = {
917+ let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
918+ if ($isInstanceOf(fs, "Boolean"))
919+ then fs
920+ else throw(($getType(fs) + " couldn't be cast to Boolean"))
838921 }
839- let fd = if (if (aF())
922+ let fF = if (if (aN())
840923 then true
841- else (aS == n))
924+ else (ba == n))
842925 then true
843- else eS
844- let ee = [if (if (!(fd))
926+ else fr
927+ let ey = [if (if (!(fF))
845928 then true
846- else ey(df))
929+ else eT(dC))
847930 then true
848- else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
931+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
849932 then true
850- else ay("exactly 1 payment are expected")]
851- if ((ee == ee))
933+ else aI("exactly 1 payment are expected")]
934+ if ((ey == ey))
852935 then {
853- let ed = aK(fc)
854- let eU = df.payments[0]
855- let dx = eU.assetId
856- let dL = eU.amount
857- let X = df.caller
858- let Y = df.transactionId
859- let fe = ec(ed, dL, dx, X, Y)
860- if ((fe == fe))
936+ let ex = aS(fE)
937+ let fu = dC.payments[0]
938+ let dT = fu.assetId
939+ let ef = fu.amount
940+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
941+ let Z = dC.caller
942+ let aa = dC.transactionId
943+ let fG = ew(ex, ef, dT, Z, aa)
944+ if ((fG == fG))
861945 then {
862- let eW = fe._4
863- let du = fe._3
864- let cP = fe._2
865- let ff = fe._1
866- let dn = if (if ((eQ > 0))
867- then (eQ > ff)
946+ let ez = fG._5
947+ let fw = fG._4
948+ let dQ = fG._3
949+ let cY = fG._2
950+ let fH = fG._1
951+ let dK = if (if ((fp > 0))
952+ then (fp > fH)
868953 else false)
869- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870- else ff
871- let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872- if ((fg == fg))
954+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
955+ else fH
956+ let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
957+ if ((fI == fI))
873958 then {
874- let fh = [ScriptTransfer(X, dn, ed)]
875- let fa = if ((du > 0))
876- then [ScriptTransfer(aB, du, ed)]
959+ let fJ = [ScriptTransfer(Z, dK, ex)]
960+ let fA = if ((dQ > 0))
961+ then [ScriptTransfer(aM, dQ, ex)]
877962 else nil
878- $Tuple2(((cP ++ fh) ++ fa), dn)
963+ let fK = {
964+ let fL = if ((this == aM))
965+ then 0
966+ else dQ
967+ if (ez)
968+ then $Tuple2(-((dK + fL)), 0)
969+ else $Tuple2(0, -((dK + fL)))
970+ }
971+ let dm = fK._1
972+ let dn = fK._2
973+ let fM = dl(dm, dn, 0)
974+ let fl = fM._1
975+ let dc = fM._2
976+ let fm = dp(dk, dc)
977+ if ((fm == fm))
978+ then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
979+ else throw("Strict value is not equal to itself.")
879980 }
880981 else throw("Strict value is not equal to itself.")
881982 }
886987
887988
888989
889-@Callable(df)
890-func getOneTknREADONLY (ed,dL) = {
891- let fi = ec(aK(ed), dL, aT, unit, unit)
892- let ff = fi._1
893- let cP = fi._2
894- let du = fi._3
895- let eW = fi._4
896- $Tuple2(nil, $Tuple3(ff, du, eW))
990+@Callable(dC)
991+func getOneTknREADONLY (ex,ef) = {
992+ let fN = ew(aS(ex), ef, bb, unit, unit)
993+ let fH = fN._1
994+ let cY = fN._2
995+ let dQ = fN._3
996+ let fw = fN._4
997+ let ez = fN._5
998+ $Tuple2(nil, $Tuple3(fH, dQ, fw))
897999 }
8981000
8991001
9001002
901-@Callable(df)
902-func unstakeAndGetOneTkn (fj,fc,eQ) = {
903- let eS = {
904- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905- if ($isInstanceOf(aD, "Boolean"))
906- then aD
907- else throw(($getType(aD) + " couldn't be cast to Boolean"))
1003+@Callable(dC)
1004+func unstakeAndGetOneTkn (fO,fE,fp) = {
1005+ let fr = {
1006+ let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1007+ if ($isInstanceOf(fs, "Boolean"))
1008+ then fs
1009+ else throw(($getType(fs) + " couldn't be cast to Boolean"))
9081010 }
909- let fd = if (if (aF())
1011+ let fF = if (if (aN())
9101012 then true
911- else (aS == n))
1013+ else (ba == n))
9121014 then true
913- else eS
914- let ee = [if (if (!(fd))
1015+ else fr
1016+ let ey = [if (if (!(fF))
9151017 then true
916- else ey(df))
1018+ else eT(dC))
9171019 then true
918- else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
1020+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
9191021 then true
920- else ay("no payments are expected")]
921- if ((ee == ee))
1022+ else aI("no payments are expected")]
1023+ if ((ey == ey))
9221024 then {
923- let ed = aK(fc)
924- let X = df.caller
925- let Y = df.transactionId
926- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927- if ((fk == fk))
1025+ let ex = aS(fE)
1026+ let Z = dC.caller
1027+ let aa = dC.transactionId
1028+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1029+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1030+ if ((fP == fP))
9281031 then {
929- let fl = ec(ed, fj, aT, X, Y)
930- if ((fl == fl))
1032+ let fQ = ew(ex, fO, bb, Z, aa)
1033+ if ((fQ == fQ))
9311034 then {
932- let eW = fl._4
933- let du = fl._3
934- let cP = fl._2
935- let ff = fl._1
936- let dn = if (if ((eQ > 0))
937- then (eQ > ff)
1035+ let ez = fQ._5
1036+ let fw = fQ._4
1037+ let dQ = fQ._3
1038+ let cY = fQ._2
1039+ let fH = fQ._1
1040+ let dK = if (if ((fp > 0))
1041+ then (fp > fH)
9381042 else false)
939- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940- else ff
941- let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942- if ((fg == fg))
1043+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1044+ else fH
1045+ let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1046+ if ((fI == fI))
9431047 then {
944- let fh = [ScriptTransfer(df.caller, dn, ed)]
945- let fa = if ((du > 0))
946- then [ScriptTransfer(aB, du, ed)]
1048+ let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1049+ let fA = if ((dQ > 0))
1050+ then [ScriptTransfer(aM, dQ, ex)]
9471051 else nil
948- $Tuple2(((cP ++ fh) ++ fa), dn)
1052+ let fR = {
1053+ let fL = if ((this == aM))
1054+ then 0
1055+ else dQ
1056+ if (ez)
1057+ then $Tuple2(-((dK + fL)), 0)
1058+ else $Tuple2(0, -((dK + fL)))
1059+ }
1060+ let dm = fR._1
1061+ let dn = fR._2
1062+ let fS = dl(dm, dn, 0)
1063+ let fl = fS._1
1064+ let dc = fS._2
1065+ let fm = dp(dk, dc)
1066+ if ((fm == fm))
1067+ then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1068+ else throw("Strict value is not equal to itself.")
9491069 }
9501070 else throw("Strict value is not equal to itself.")
9511071 }
9581078
9591079
9601080
961-@Callable(df)
1081+@Callable(dC)
9621082 func get () = {
963- let cA = de(df)
964- let fm = cA._1
965- let ch = cA._2
966- let dh = cA._3
967- let bP = cA._4
968- let ci = cA._5
969- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970- if ((fn == fn))
971- then ci
1083+ let cJ = dB(dC)
1084+ let fT = cJ._1
1085+ let cq = cJ._2
1086+ let dE = cJ._3
1087+ let bY = cJ._4
1088+ let cr = cJ._5
1089+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1090+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1091+ if ((fU == fU))
1092+ then {
1093+ let fV = dl(-(fT), -(cq), 0)
1094+ let fl = fV._1
1095+ let dc = fV._2
1096+ let fm = dp(dk, dc)
1097+ if ((fm == fm))
1098+ then (cr ++ fl)
1099+ else throw("Strict value is not equal to itself.")
1100+ }
9721101 else throw("Strict value is not equal to itself.")
9731102 }
9741103
9751104
9761105
977-@Callable(df)
978-func getNoLess (fo,fp) = {
979- let cA = de(df)
980- let cg = cA._1
981- let ch = cA._2
982- let dh = cA._3
983- let bP = cA._4
984- let ci = cA._5
985- if ((fo > cg))
986- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987- else if ((fp > ch))
988- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
1106+@Callable(dC)
1107+func getNoLess (fW,fX) = {
1108+ let cJ = dB(dC)
1109+ let cp = cJ._1
1110+ let cq = cJ._2
1111+ let dE = cJ._3
1112+ let bY = cJ._4
1113+ let cr = cJ._5
1114+ if ((fW > cp))
1115+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
1116+ else if ((fX > cq))
1117+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
9891118 else {
990- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991- if ((fn == fn))
992- then ci
1119+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1120+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1121+ if ((fU == fU))
1122+ then {
1123+ let fY = dl(-(cp), -(cq), 0)
1124+ let fl = fY._1
1125+ let dc = fY._2
1126+ let fm = dp(dk, dc)
1127+ if ((fm == fm))
1128+ then (cr ++ fl)
1129+ else throw("Strict value is not equal to itself.")
1130+ }
9931131 else throw("Strict value is not equal to itself.")
9941132 }
9951133 }
9961134
9971135
9981136
999-@Callable(df)
1000-func unstakeAndGet (dn) = {
1001- let fq = if ((size(df.payments) != 0))
1137+@Callable(dC)
1138+func unstakeAndGet (dK) = {
1139+ let fZ = if ((size(dC.payments) != 0))
10021140 then throw("No payments are expected")
10031141 else true
1004- if ((fq == fq))
1142+ if ((fZ == fZ))
10051143 then {
1006- let bE = aH()
1007- let bR = fromBase58String(bE[q])
1008- let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009- if ((fk == fk))
1144+ let bN = aP()
1145+ let ca = fromBase58String(bN[q])
1146+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1147+ let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1148+ if ((fP == fP))
10101149 then {
1011- let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012- let bU = parseIntValue(cA._9)
1013- let ci = cA._10
1014- let fr = if (if (aF())
1150+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1151+ let cp = cJ._1
1152+ let cq = cJ._2
1153+ let cd = parseIntValue(cJ._9)
1154+ let cr = cJ._10
1155+ let ga = if (if (aN())
10151156 then true
1016- else (bU == n))
1017- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1157+ else (cd == n))
1158+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
10181159 else true
1019- if ((fr == fr))
1160+ if ((ga == ga))
10201161 then {
1021- let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022- if ((fn == fn))
1023- then ci
1162+ let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1163+ if ((fU == fU))
1164+ then {
1165+ let gb = dl(-(cp), -(cq), 0)
1166+ let fl = gb._1
1167+ let dc = gb._2
1168+ let fm = dp(dk, dc)
1169+ if ((fm == fm))
1170+ then (cr ++ fl)
1171+ else throw("Strict value is not equal to itself.")
1172+ }
10241173 else throw("Strict value is not equal to itself.")
10251174 }
10261175 else throw("Strict value is not equal to itself.")
10321181
10331182
10341183
1035-@Callable(df)
1036-func unstakeAndGetNoLess (fj,fs,fp) = {
1037- let fd = if (aF())
1184+@Callable(dC)
1185+func unstakeAndGetNoLess (fO,gc,fX) = {
1186+ let fF = if (aN())
10381187 then true
1039- else (aS == n)
1040- let ee = [if (!(fd))
1188+ else (ba == n)
1189+ let ey = [if (!(fF))
10411190 then true
1042- else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
1191+ else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10431192 then true
10441193 else throw("no payments are expected")]
1045- if ((ee == ee))
1194+ if ((ey == ey))
10461195 then {
1047- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048- if ((fk == fk))
1196+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1197+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1198+ if ((fP == fP))
10491199 then {
1050- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051- let cg = cA._1
1052- let ch = cA._2
1053- let ci = cA._10
1054- let ft = [if ((cg >= fs))
1200+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1201+ let cp = cJ._1
1202+ let cq = cJ._2
1203+ let cr = cJ._10
1204+ let gd = [if ((cp >= gc))
10551205 then true
1056- else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1206+ else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
10571207 then true
1058- else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059- if ((ft == ft))
1208+ else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1209+ if ((gd == gd))
10601210 then {
1061- let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062- if ((fn == fn))
1063- then ci
1211+ let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1212+ if ((fU == fU))
1213+ then {
1214+ let ge = dl(-(cp), -(cq), 0)
1215+ let fl = ge._1
1216+ let dc = ge._2
1217+ let fm = dp(dk, dc)
1218+ if ((fm == fm))
1219+ then (cr ++ fl)
1220+ else throw("Strict value is not equal to itself.")
1221+ }
10641222 else throw("Strict value is not equal to itself.")
10651223 }
10661224 else throw("Strict value is not equal to itself.")
10721230
10731231
10741232
1075-@Callable(df)
1076-func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1233+@Callable(dC)
1234+func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
10771235 then throw("permissions denied")
1078- else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1236+ else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
10791237
10801238
10811239
1082-@Callable(df)
1083-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084-
1085-
1086-
1087-@Callable(df)
1088-func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089-
1090-
1091-
1092-@Callable(df)
1093-func calcPricesWrapperREADONLY (by,bz,bD) = {
1094- let bM = bC(by, bz, bD)
1095- $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
1240+@Callable(dC)
1241+func refreshKLp () = {
1242+ let gh = valueOrElse(getInteger(ai), 0)
1243+ let gi = if (((height - gh) >= al))
1244+ then unit
1245+ else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1246+ if ((gi == gi))
1247+ then {
1248+ let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1249+ let gj = dl(0, 0, 0)
1250+ let gk = gj._1
1251+ let dc = gj._2
1252+ let do = if ((dw != dc))
1253+ then gk
1254+ else aI("nothing to refresh")
1255+ $Tuple2(do, toString(dc))
1256+ }
1257+ else throw("Strict value is not equal to itself.")
10961258 }
10971259
10981260
10991261
1100-@Callable(df)
1262+@Callable(dC)
1263+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
1264+
1265+
1266+
1267+@Callable(dC)
1268+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1269+
1270+
1271+
1272+@Callable(dC)
1273+func calcPricesWrapperREADONLY (bH,bI,bM) = {
1274+ let bV = bL(bH, bI, bM)
1275+ $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
1276+ }
1277+
1278+
1279+
1280+@Callable(dC)
11011281 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11021282
11031283
11041284
1105-@Callable(df)
1285+@Callable(dC)
11061286 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11071287
11081288
11091289
1110-@Callable(df)
1111-func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1290+@Callable(dC)
1291+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
11121292
11131293
11141294
1115-@Callable(df)
1116-func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1295+@Callable(dC)
1296+func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
11171297
11181298
11191299
1120-@Callable(df)
1121-func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122- let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123- $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
1300+@Callable(dC)
1301+func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
1302+ let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
1303+ $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
11241304 }
11251305
11261306
11271307
1128-@Callable(df)
1308+@Callable(dC)
11291309 func statsREADONLY () = {
1130- let bE = aH()
1131- let bR = fromBase58String(bE[q])
1132- let cS = bE[r]
1133- let cT = bE[s]
1134- let ct = bE[v]
1135- let cu = bE[w]
1136- let bF = parseIntValue(bE[t])
1137- let bG = parseIntValue(bE[u])
1138- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139- let cU = bq(cS)
1140- let cV = bq(cT)
1141- let fx = if ((fw == 0))
1310+ let bN = aP()
1311+ let ca = fromBase58String(bN[q])
1312+ let gl = bN[r]
1313+ let gm = bN[s]
1314+ let cC = bN[v]
1315+ let cD = bN[w]
1316+ let bO = parseIntValue(bN[t])
1317+ let bP = parseIntValue(bN[u])
1318+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1319+ let go = by(gl)
1320+ let gp = by(gm)
1321+ let gq = if ((gn == 0))
11421322 then [e, e, e]
1143- else bC(cU, cV, fw)
1144- let cb = 0
1145- let fy = G(fx[1], b)
1146- let fz = G(fx[2], b)
1147- let fA = value(getInteger(aA, am(toString(this))))
1148- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
1323+ else bL(go, gp, gn)
1324+ let ck = 0
1325+ let gr = G(gq[1], b)
1326+ let gs = G(gq[2], b)
1327+ let gt = value(getInteger(aL, aw(toString(this))))
1328+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
11491329 }
11501330
11511331
11521332
1153-@Callable(df)
1154-func evaluatePutByAmountAssetREADONLY (cl) = {
1155- let bE = aH()
1156- let bR = fromBase58String(bE[q])
1157- let cr = bE[r]
1158- let bS = fromBase58String(cr)
1159- let cs = bE[s]
1160- let bT = fromBase58String(cs)
1161- let bF = parseIntValue(bE[t])
1162- let bG = parseIntValue(bE[u])
1163- let bU = bE[p]
1164- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165- let cU = bq(cr)
1166- let cV = bq(cs)
1167- let bA = D(cU, bF)
1168- let bB = D(cV, bG)
1169- let ca = if ((fw == 0))
1333+@Callable(dC)
1334+func evaluatePutByAmountAssetREADONLY (cu) = {
1335+ let bN = aP()
1336+ let ca = fromBase58String(bN[q])
1337+ let cA = bN[r]
1338+ let cb = fromBase58String(cA)
1339+ let cB = bN[s]
1340+ let cc = fromBase58String(cB)
1341+ let bO = parseIntValue(bN[t])
1342+ let bP = parseIntValue(bN[u])
1343+ let cd = bN[p]
1344+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1345+ let go = by(cA)
1346+ let gp = by(cB)
1347+ let bJ = D(go, bO)
1348+ let bK = D(gp, bP)
1349+ let cj = if ((gn == 0))
11701350 then e
1171- else bs(bB, bA)
1172- let cx = D(cl, bF)
1173- let cy = fraction(cx, ca, d)
1174- let cn = G(cy, bG)
1175- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176- let cI = dl._1
1177- let fB = dl._3
1178- let bW = dl._4
1179- let bY = dl._5
1180- let bV = dl._6
1181- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1351+ else bA(bK, bJ)
1352+ let cG = D(cu, bO)
1353+ let cH = fraction(cG, cj, d)
1354+ let cw = G(cH, bP)
1355+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1356+ let cR = dI._1
1357+ let gu = dI._3
1358+ let cf = dI._4
1359+ let ch = dI._5
1360+ let ce = dI._6
1361+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
11821362 }
11831363
11841364
11851365
1186-@Callable(df)
1187-func evaluatePutByPriceAssetREADONLY (cn) = {
1188- let bE = aH()
1189- let bR = fromBase58String(bE[q])
1190- let cr = bE[r]
1191- let bS = fromBase58String(cr)
1192- let cs = bE[s]
1193- let bT = fromBase58String(cs)
1194- let bF = parseIntValue(bE[t])
1195- let bG = parseIntValue(bE[u])
1196- let bU = bE[p]
1197- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198- let fC = bq(cr)
1199- let fD = bq(cs)
1200- let fE = D(fC, bF)
1201- let fF = D(fD, bG)
1202- let ca = if ((fw == 0))
1366+@Callable(dC)
1367+func evaluatePutByPriceAssetREADONLY (cw) = {
1368+ let bN = aP()
1369+ let ca = fromBase58String(bN[q])
1370+ let cA = bN[r]
1371+ let cb = fromBase58String(cA)
1372+ let cB = bN[s]
1373+ let cc = fromBase58String(cB)
1374+ let bO = parseIntValue(bN[t])
1375+ let bP = parseIntValue(bN[u])
1376+ let cd = bN[p]
1377+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1378+ let gv = by(cA)
1379+ let gw = by(cB)
1380+ let gx = D(gv, bO)
1381+ let gy = D(gw, bP)
1382+ let cj = if ((gn == 0))
12031383 then e
1204- else bs(fF, fE)
1205- let cy = D(cn, bG)
1206- let cx = fraction(cy, d, ca)
1207- let cl = G(cx, bF)
1208- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209- let cI = dl._1
1210- let fB = dl._3
1211- let bW = dl._4
1212- let bY = dl._5
1213- let bV = dl._6
1214- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1384+ else bA(gy, gx)
1385+ let cH = D(cw, bP)
1386+ let cG = fraction(cH, d, cj)
1387+ let cu = G(cG, bO)
1388+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1389+ let cR = dI._1
1390+ let gu = dI._3
1391+ let cf = dI._4
1392+ let ch = dI._5
1393+ let ce = dI._6
1394+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
12151395 }
12161396
12171397
12181398
1219-@Callable(df)
1220-func evaluateGetREADONLY (fG,fH) = {
1221- let cA = bN("", fG, fH, this)
1222- let cg = cA._1
1223- let ch = cA._2
1224- let bW = cA._5
1225- let bY = cA._6
1226- let bV = cA._7
1227- let cb = cA._8
1228- let bU = parseIntValue(cA._9)
1229- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
1399+@Callable(dC)
1400+func evaluateGetREADONLY (gz,gA) = {
1401+ let cJ = bW("", gz, gA, this)
1402+ let cp = cJ._1
1403+ let cq = cJ._2
1404+ let cf = cJ._5
1405+ let ch = cJ._6
1406+ let ce = cJ._7
1407+ let ck = cJ._8
1408+ let cd = parseIntValue(cJ._9)
1409+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
12301410 }
12311411
12321412
1233-@Verifier(fI)
1234-func fJ () = {
1235- let fK = {
1236- let dq = ev()
1237- if ($isInstanceOf(dq, "ByteVector"))
1413+@Verifier(gB)
1414+func gC () = {
1415+ let gD = {
1416+ let dN = eQ()
1417+ if ($isInstanceOf(dN, "ByteVector"))
12381418 then {
1239- let ez = dq
1240- ez
1419+ let eU = dN
1420+ eU
12411421 }
1242- else if ($isInstanceOf(dq, "Unit"))
1243- then fI.senderPublicKey
1422+ else if ($isInstanceOf(dN, "Unit"))
1423+ then gB.senderPublicKey
12441424 else throw("Match error")
12451425 }
1246- let dq = fI
1247- if ($isInstanceOf(dq, "Order"))
1426+ let dN = gB
1427+ if ($isInstanceOf(dN, "Order"))
12481428 then {
1249- let cR = dq
1250- let fL = aG()
1251- let ar = cQ(cR)
1252- let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253- let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254- if (if (if (ar)
1255- then as
1429+ let ds = dN
1430+ let gE = aO()
1431+ let aB = dr(ds)
1432+ let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1433+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
1434+ if (if (if (aB)
1435+ then aC
12561436 else false)
1257- then at
1437+ then aD
12581438 else false)
12591439 then true
1260- else aq(ar, as, at)
1440+ else aA(aB, aC, aD)
12611441 }
1262- else if ($isInstanceOf(dq, "SetScriptTransaction"))
1442+ else if ($isInstanceOf(dN, "SetScriptTransaction"))
12631443 then {
1264- let ew = dq
1265- let fM = blake2b256(value(ew.script))
1266- let fN = fromBase64String(value(getString(aA, ao())))
1267- let fO = scriptHash(this)
1268- if (if ((fN == fM))
1269- then (fO != fM)
1444+ let eR = dN
1445+ let gF = blake2b256(value(eR.script))
1446+ let gG = fromBase64String(value(getString(aL, ay())))
1447+ let gH = scriptHash(this)
1448+ if (if ((gG == gF))
1449+ then (gH != gF)
12701450 else false)
12711451 then true
1272- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1452+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
12731453 }
1274- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1454+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
12751455 }
12761456
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
68-func J (K,L,M) = fraction(K, L, M)
68+func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
71-func N (H) = if ((0 > H))
71+func L (M,N,O) = fraction(M, N, O)
72+
73+
74+func P (H) = if ((0 > H))
7275 then -(H)
7376 else H
7477
7578
76-func O (H) = if ((e > H))
79+func Q (H) = if ((e > H))
7780 then -(H)
7881 else H
7982
8083
81-func P () = "%s__factoryContract"
84+func R () = "%s__factoryContract"
8285
8386
84-func Q () = "%s__managerPublicKey"
87+func S () = "%s__managerPublicKey"
8588
8689
87-func R () = "%s__pendingManagerPublicKey"
90+func T () = "%s__pendingManagerPublicKey"
8891
8992
90-func S () = "%s%s__price__last"
93+func U () = "%s%s__price__last"
9194
9295
93-func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
96+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9497
9598
96-func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
99+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
97100
98101
99-func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
102+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
100103
101104
102-func aa () = "%s__amountAsset"
105+func ac () = "%s__amountAsset"
103106
104107
105-func ab () = "%s__priceAsset"
108+func ad () = "%s__priceAsset"
106109
107110
108-func ac () = "%s__factoryConfig"
111+let ae = "%s__fee"
112+
113+let af = fraction(10, b, 10000)
114+
115+let ag = valueOrElse(getInteger(this, ae), af)
116+
117+let ah = makeString(["%s", "kLp"], j)
118+
119+let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120+
121+let aj = makeString(["%s", "refreshKLpDelay"], j)
122+
123+let ak = 30
124+
125+let al = valueOrElse(getInteger(this, aj), ak)
126+
127+func am () = "%s__factoryConfig"
109128
110129
111-func ad () = "%s%s__matcher__publicKey"
130+func an () = "%s%s__matcher__publicKey"
112131
113132
114-func ae (af) = (("%s%s%s__" + af) + "__mappings__poolContract2LpAsset")
133+func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
115134
116135
117-func ag (ah,ai) = (((("%d%d%s__" + ah) + "__") + ai) + "__config")
136+func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
118137
119138
120-func aj (ak) = ("%s%s%s__mappings__baseAsset2internalId__" + ak)
139+func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
121140
122141
123-func al () = "%s__shutdown"
142+func av () = "%s__shutdown"
124143
125144
126-func am (an) = ("%s%s__poolWeight__" + an)
145+func aw (ax) = ("%s%s__poolWeight__" + ax)
127146
128147
129-func ao () = "%s__allowedLpScriptHash"
148+func ay () = "%s__allowedLpScriptHash"
130149
131150
132-let ap = "%s__feeCollectorAddress"
151+let az = "%s__feeCollectorAddress"
133152
134-func aq (ar,as,at) = throw(((((("order validation failed: orderValid=" + toString(ar)) + " senderValid=") + toString(as)) + " matcherValid=") + toString(at)))
153+func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
135154
136155
137-func au (av,aw) = valueOrErrorMessage(getString(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
156+func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
138157
139158
140-func ax (av,aw) = valueOrErrorMessage(getInteger(av, aw), makeString(["mandatory ", toString(av), ".", aw, " is not defined"], ""))
159+func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
141160
142161
143-func ay (az) = throw(makeString(["lp.ride:", az], " "))
162+func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
144163
145164
146-let aA = addressFromStringValue(au(this, P()))
147-
148-let aB = addressFromStringValue(au(aA, ap))
149-
150-let aC = {
151- let aD = invoke(aA, "getInFeeREADONLY", [toString(this)], nil)
152- if ($isInstanceOf(aD, "Int"))
153- then aD
154- else throw(($getType(aD) + " couldn't be cast to Int"))
155- }
156-
157-let aE = {
158- let aD = invoke(aA, "getOutFeeREADONLY", [toString(this)], nil)
159- if ($isInstanceOf(aD, "Int"))
160- then aD
161- else throw(($getType(aD) + " couldn't be cast to Int"))
162- }
163-
164-func aF () = valueOrElse(getBoolean(aA, al()), false)
165+func aK (aJ) = makeString(["lp.ride:", aJ], " ")
165166
166167
167-func aG () = fromBase58String(au(aA, ad()))
168+let aL = addressFromStringValue(aE(this, R()))
169+
170+let aM = addressFromStringValue(aE(aL, az))
171+
172+func aN () = valueOrElse(getBoolean(aL, av()), false)
168173
169174
170-func aH () = {
171- let aI = au(this, aa())
172- let aJ = au(this, ab())
173- let ai = ax(aA, aj(aJ))
174- let ah = ax(aA, aj(aI))
175- split(au(aA, ag(toString(ah), toString(ai))), j)
175+func aO () = fromBase58String(aE(aL, an()))
176+
177+
178+func aP () = {
179+ let aQ = aE(this, ac())
180+ let aR = aE(this, ad())
181+ let as = aH(aL, at(aR))
182+ let ar = aH(aL, at(aQ))
183+ split(aE(aL, aq(toString(ar), toString(as))), j)
176184 }
177185
178186
179-func aK (aL) = if ((aL == i))
187+func aS (aT) = if ((aT == i))
180188 then unit
181- else fromBase58String(aL)
189+ else fromBase58String(aT)
182190
183191
184-func aM (aL) = if ((aL == unit))
192+func aU (aT) = if ((aT == unit))
185193 then i
186- else toBase58String(value(aL))
194+ else toBase58String(value(aT))
187195
188196
189-func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
197+func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
190198
191199
192-let aP = aN(aH())
200+let aX = aV(aP())
193201
194-let aQ = aP
202+let aY = aX
195203
196-let aR = aQ._1
204+let aZ = aY._1
197205
198-let aS = aQ._2
206+let ba = aY._2
199207
200-let aT = aQ._3
208+let bb = aY._3
201209
202-let aU = aQ._4
210+let bc = aY._4
203211
204-let aV = aQ._5
212+let bd = aY._5
205213
206-let aW = aQ._6
214+let be = aY._6
207215
208-let aX = aQ._7
216+let bf = aY._7
209217
210-func aY () = split(au(aA, ac()), j)
218+func bg () = split(aE(aL, am()), j)
211219
212220
213-let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
221+let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
214222
215-let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
223+let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
216224
217-func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
225+func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
218226
219227
220-func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
228+func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
221229
222230
223-func bq (br) = if ((br == "WAVES"))
231+func by (bz) = if ((bz == "WAVES"))
224232 then wavesBalance(this).available
225- else assetBalance(this, fromBase58String(br))
233+ else assetBalance(this, fromBase58String(bz))
226234
227235
228-func bs (bt,bu) = fraction(bt, d, bu)
236+func bA (bB,bC) = fraction(bB, d, bC)
229237
230238
231-func bv (bw,bx,by,bz) = {
232- let bA = D(by, bw)
233- let bB = D(bz, bx)
234- bs(bB, bA)
239+func bD (bB,bC,K) = fraction(bB, d, bC, K)
240+
241+
242+func bE (bF,bG,bH,bI) = {
243+ let bJ = D(bH, bF)
244+ let bK = D(bI, bG)
245+ bA(bK, bJ)
235246 }
236247
237248
238-func bC (by,bz,bD) = {
239- let bE = aH()
240- let bF = parseIntValue(bE[t])
241- let bG = parseIntValue(bE[u])
242- let bH = bv(bF, bG, by, bz)
243- let bu = D(by, bF)
244- let bt = D(bz, bG)
245- let bI = D(bD, b)
246- let bJ = bs(bu, bI)
247- let bK = bs(bt, bI)
248-[bH, bJ, bK]
249+func bL (bH,bI,bM) = {
250+ let bN = aP()
251+ let bO = parseIntValue(bN[t])
252+ let bP = parseIntValue(bN[u])
253+ let bQ = bE(bO, bP, bH, bI)
254+ let bC = D(bH, bO)
255+ let bB = D(bI, bP)
256+ let bR = D(bM, b)
257+ let bS = bA(bC, bR)
258+ let bT = bA(bB, bR)
259+[bQ, bS, bT]
249260 }
250261
251262
252-func bL (by,bz,bD) = {
253- let bM = bC(by, bz, bD)
254-[G(bM[0], b), G(bM[1], b), G(bM[2], b)]
263+func bU (bH,bI,bM) = {
264+ let bV = bL(bH, bI, bM)
265+[G(bV[0], b), G(bV[1], b), G(bV[2], b)]
255266 }
256267
257268
258-func bN (bO,bP,bQ,X) = {
259- let bE = aH()
260- let bR = bE[q]
261- let bS = bE[r]
262- let bT = bE[s]
263- let bw = parseIntValue(bE[t])
264- let bx = parseIntValue(bE[u])
265- let bU = bE[p]
266- let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
267- if ((bR != bP))
269+func bW (bX,bY,bZ,Z) = {
270+ let bN = aP()
271+ let ca = bN[q]
272+ let cb = bN[r]
273+ let cc = bN[s]
274+ let bF = parseIntValue(bN[t])
275+ let bG = parseIntValue(bN[u])
276+ let cd = bN[p]
277+ let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278+ if ((ca != bY))
268279 then throw("Invalid asset passed.")
269280 else {
270- let bW = bq(bS)
271- let bX = D(bW, bw)
272- let bY = bq(bT)
273- let bZ = D(bY, bx)
274- let ca = bs(bZ, bX)
275- let cb = G(ca, b)
276- let cc = D(bQ, b)
277- let cd = D(bV, b)
278- let ce = fraction(bX, cc, cd)
279- let cf = fraction(bZ, cc, cd)
280- let cg = G(ce, bw)
281- let ch = G(cf, bx)
282- let ci = if ((bO == ""))
281+ let cf = by(cb)
282+ let cg = D(cf, bF)
283+ let ch = by(cc)
284+ let ci = D(ch, bG)
285+ let cj = bA(ci, cg)
286+ let ck = G(cj, b)
287+ let cl = D(bZ, b)
288+ let cm = D(ce, b)
289+ let cn = fraction(cg, cl, cm)
290+ let co = fraction(ci, cl, cm)
291+ let cp = J(cn, bF, FLOOR)
292+ let cq = J(co, bG, FLOOR)
293+ let cr = if ((bX == ""))
283294 then nil
284- else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
295+ else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
285296 then unit
286- else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
297+ else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
287298 then unit
288- else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
289- $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
299+ else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300+ $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
290301 }
291302 }
292303
293304
294-func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
295- let bE = aH()
296- let bR = fromBase58String(bE[q])
297- let cr = bE[r]
298- let cs = bE[s]
299- let ct = bE[v]
300- let cu = bE[w]
301- let bF = parseIntValue(bE[t])
302- let bG = parseIntValue(bE[u])
303- let bU = bE[p]
304- let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
305- let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
306- let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
307- if (if ((cr != cv))
305+func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306+ let bN = aP()
307+ let ca = fromBase58String(bN[q])
308+ let cA = bN[r]
309+ let cB = bN[s]
310+ let cC = bN[v]
311+ let cD = bN[w]
312+ let bO = parseIntValue(bN[t])
313+ let bP = parseIntValue(bN[u])
314+ let cd = bN[p]
315+ let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316+ let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317+ let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318+ if (if ((cA != cE))
308319 then true
309- else (cs != cw))
320+ else (cB != cF))
310321 then throw("Invalid amt or price asset passed.")
311322 else {
312- let bW = if (cp)
313- then bq(cr)
314- else (bq(cr) - cl)
315- let bY = if (cp)
316- then bq(cs)
317- else (bq(cs) - cn)
318- let cx = D(cl, bF)
319- let cy = D(cn, bG)
320- let cz = bs(cy, cx)
321- let bX = D(bW, bF)
322- let bZ = D(bY, bG)
323- let cA = if ((bV == 0))
323+ let cf = if (cy)
324+ then by(cA)
325+ else (by(cA) - cu)
326+ let ch = if (cy)
327+ then by(cB)
328+ else (by(cB) - cw)
329+ let cG = D(cu, bO)
330+ let cH = D(cw, bP)
331+ let cI = bA(cH, cG)
332+ let cg = D(cf, bO)
333+ let ci = D(ch, bP)
334+ let cJ = if ((ce == 0))
324335 then {
325- let ca = e
326- let cB = e
327- let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
328- $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
336+ let cj = e
337+ let cK = e
338+ let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339+ $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
329340 }
330341 else {
331- let ca = bs(bZ, bX)
332- let cB = fraction(O((ca - cz)), d, ca)
333- let cC = D(ck, b)
334- if (if ((ca != e))
335- then (cB > cC)
342+ let cj = bA(ci, cg)
343+ let cK = fraction(Q((cj - cI)), d, cj)
344+ let cL = D(ct, b)
345+ if (if ((cj != e))
346+ then (cK > cL)
336347 else false)
337- then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
348+ then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
338349 else {
339- let cd = D(bV, b)
340- let cD = fraction(cx, ca, d)
341- let cE = fraction(cy, d, ca)
342- let cF = if ((cD > cy))
343- then $Tuple2(cE, cy)
344- else $Tuple2(cx, cD)
345- let cG = cF._1
346- let cH = cF._2
347- let bI = fraction(cd, cH, bZ)
348- $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
350+ let cm = D(ce, b)
351+ let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352+ let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353+ let cO = if ((cM > cH))
354+ then $Tuple2(cN, cH)
355+ else $Tuple2(cG, cM)
356+ let cP = cO._1
357+ let cQ = cO._2
358+ let bR = fraction(cm, cQ, ci, FLOOR)
359+ $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
349360 }
350361 }
351- let cI = cA._1
352- let cJ = cA._2
353- let cK = cA._3
354- let cb = G(cA._4, b)
355- let cL = G(cA._5, b)
356- if ((0 >= cI))
362+ let cR = cJ._1
363+ let cS = cJ._2
364+ let cT = cJ._3
365+ let ck = G(cJ._4, b)
366+ let cU = G(cJ._5, b)
367+ if ((0 >= cR))
357368 then throw("Invalid calculations. LP calculated is less than zero.")
358369 else {
359- let cM = if (!(cq))
370+ let cV = if (!(cz))
360371 then 0
361- else cI
362- let cN = (cl - cJ)
363- let cO = (cn - cK)
364- let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
365- $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
372+ else cR
373+ let cW = (cu - cS)
374+ let cX = (cw - cT)
375+ let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376+ $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
366377 }
367378 }
368379 }
369380
370381
371-func cQ (cR) = {
372- let bE = aH()
373- let cS = bE[r]
374- let cT = bE[s]
375- let bU = parseIntValue(bE[p])
376- let bF = parseIntValue(bE[t])
377- let bG = parseIntValue(bE[u])
378- let cU = bq(cS)
379- let cV = bq(cT)
380- let ca = if ((cR.orderType == Buy))
381- then bv(bF, bG, (cU + cR.amount), cV)
382- else bv(bF, bG, (cU - cR.amount), cV)
383- let cb = G(ca, b)
384- if (if (if (aF())
385- then true
386- else (bU == m))
387- then true
388- else (bU == n))
389- then throw("Exchange operations disabled")
390- else {
391- let cW = cR.assetPair.amountAsset
392- let cX = if ((cW == unit))
393- then "WAVES"
394- else toBase58String(value(cW))
395- let cY = cR.assetPair.priceAsset
396- let cZ = if ((cY == unit))
397- then "WAVES"
398- else toBase58String(value(cY))
399- if (if ((cX != cS))
400- then true
401- else (cZ != cT))
402- then throw("Wrong order assets.")
403- else {
404- let da = cR.price
405- let db = fraction(b, bG, bF)
406- let dc = J(da, b, db)
407- let dd = if ((cR.orderType == Buy))
408- then (cb >= dc)
409- else (dc >= cb)
410- true
411- }
412- }
382+func cZ (da,db,ce) = {
383+ let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384+ if ((ce == f))
385+ then f
386+ else dc
413387 }
414388
415389
416-func de (df) = if ((size(df.payments) != 1))
390+func dd (de,df,dg) = {
391+ let dh = (toBigInt(by(aU(bc))) - de)
392+ let di = (toBigInt(by(aU(bd))) - df)
393+ let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394+ let dk = cZ(dh, di, dj)
395+ dk
396+ }
397+
398+
399+func dl (dm,dn,dg) = {
400+ let dh = (by(aU(bc)) + dm)
401+ let di = (by(aU(bd)) + dn)
402+ let dj = (value(assetInfo(bb)).quantity + dg)
403+ let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404+ let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405+ $Tuple2(do, dc)
406+ }
407+
408+
409+func dp (dq,dc) = if ((dc >= dq))
410+ then true
411+ else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412+
413+
414+func dr (ds) = {
415+ let dt = ds.amount
416+ let du = fraction(ds.amount, ds.price, b, FLOOR)
417+ let dv = if ((ds.orderType == Buy))
418+ then $Tuple2(dt, -(du))
419+ else $Tuple2(-(dt), du)
420+ let dm = dv._1
421+ let dn = dv._2
422+ if (if (if (aN())
423+ then true
424+ else (ba == m))
425+ then true
426+ else (ba == n))
427+ then throw("Exchange operations disabled")
428+ else if (if ((ds.assetPair.amountAsset != bc))
429+ then true
430+ else (ds.assetPair.priceAsset != bd))
431+ then throw("Wrong order assets.")
432+ else {
433+ let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434+ let dx = dl(dm, dn, 0)
435+ let dy = dx._1
436+ let dz = dx._2
437+ let dA = (dz >= dw)
438+ dA
439+ }
440+ }
441+
442+
443+func dB (dC) = if ((size(dC.payments) != 1))
417444 then throw("exactly 1 payment is expected")
418445 else {
419- let dg = value(df.payments[0])
420- let bP = value(dg.assetId)
421- let dh = dg.amount
422- let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
423- let cg = cA._1
424- let ch = cA._2
425- let bU = parseIntValue(cA._9)
426- let ci = cA._10
427- if (if (aF())
446+ let dD = value(dC.payments[0])
447+ let bY = value(dD.assetId)
448+ let dE = dD.amount
449+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450+ let cp = cJ._1
451+ let cq = cJ._2
452+ let cd = parseIntValue(cJ._9)
453+ let cr = cJ._10
454+ if (if (aN())
428455 then true
429- else (bU == n))
430- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
431- else $Tuple5(cg, ch, dh, bP, ci)
456+ else (cd == n))
457+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458+ else $Tuple5(cp, cq, dE, bY, cr)
432459 }
433460
434461
435-func di (df,ck,cq) = if ((size(df.payments) != 2))
462+func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
436463 then throw("exactly 2 payments are expected")
437464 else {
438- let dj = value(df.payments[0])
439- let dk = value(df.payments[1])
440- let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
441- let bU = parseIntValue(dl._8)
442- if (if (if (aF())
465+ let dG = value(dC.payments[0])
466+ let dH = value(dC.payments[1])
467+ let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468+ let cd = parseIntValue(dI._8)
469+ if (if (if (aN())
443470 then true
444- else (bU == l))
471+ else (cd == l))
445472 then true
446- else (bU == n))
447- then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
448- else dl
473+ else (cd == n))
474+ then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475+ else dI
449476 }
450477
451478
452-func dm (dn) = {
453- let do = invoke(aA, "emit", [dn], nil)
454- if ((do == do))
479+func dJ (dK) = {
480+ let dL = invoke(aL, "emit", [dK], nil)
481+ if ((dL == dL))
455482 then {
456- let dp = {
457- let dq = do
458- if ($isInstanceOf(dq, "Address"))
483+ let dM = {
484+ let dN = dL
485+ if ($isInstanceOf(dN, "Address"))
459486 then {
460- let dr = dq
461- invoke(dr, "emit", [dn], nil)
487+ let dO = dN
488+ invoke(dO, "emit", [dK], nil)
462489 }
463490 else unit
464491 }
465- if ((dp == dp))
466- then dn
492+ if ((dM == dM))
493+ then dK
467494 else throw("Strict value is not equal to itself.")
468495 }
469496 else throw("Strict value is not equal to itself.")
470497 }
471498
472499
473-func ds (dn,dt) = {
474- let du = if ((dt == 0))
475- then 0
476- else fraction(dn, dt, b)
477- $Tuple2((dn - du), du)
500+func dP (dK) = {
501+ let dQ = fraction(dK, ag, b)
502+ $Tuple2((dK - dQ), dQ)
478503 }
479504
480505
481-func dv (dw,dx,X,Y) = {
482- let dy = (Y == unit)
483- let dz = bq(aM(aU))
484- let dA = bq(aM(aV))
485- let dB = if ((dx == aU))
506+func dR (dS,dT,Z,aa) = {
507+ let dU = (aa == unit)
508+ let dV = by(aU(bc))
509+ let dW = by(aU(bd))
510+ let dX = if ((dT == bc))
486511 then true
487- else if ((dx == aV))
512+ else if ((dT == bd))
488513 then false
489- else ay("invalid asset")
490- let dC = if (dy)
491- then $Tuple2(dz, dA)
492- else if (dB)
493- then $Tuple2((dz - dw), dA)
494- else $Tuple2(dz, (dA - dw))
495- let dD = dC._1
496- let dE = dC._2
497- let dF = if (dB)
498- then $Tuple2(dw, 0)
499- else $Tuple2(0, dw)
500- let dG = dF._1
501- let dH = dF._2
502- let dI = ds(dG, aC)._1
503- let dJ = ds(dH, aC)._1
504- let dK = ds(dw, aC)
505- let dL = dK._1
506- let du = dK._2
507- let dM = (dD + dI)
508- let dN = (dE + dJ)
509- let dO = bs(D(dN, aX), D(dM, aW))
510- let dP = G(dO, b)
511- let dQ = if (dB)
512- then dD
513- else dE
514- let dR = toBigInt(dQ)
515- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
516- let dT = if ((dS > f))
514+ else aI("invalid asset")
515+ let dY = if (dU)
516+ then $Tuple2(dV, dW)
517+ else if (dX)
518+ then $Tuple2((dV - dS), dW)
519+ else $Tuple2(dV, (dW - dS))
520+ let dZ = dY._1
521+ let ea = dY._2
522+ let eb = if (dX)
523+ then $Tuple2(dS, 0)
524+ else $Tuple2(0, dS)
525+ let ec = eb._1
526+ let ed = eb._2
527+ let dt = dP(ec)._1
528+ let du = dP(ed)._1
529+ let ee = dP(dS)
530+ let ef = ee._1
531+ let dQ = ee._2
532+ let eg = (dZ + dt)
533+ let eh = (ea + du)
534+ let ei = bA(D(eh, bf), D(eg, be))
535+ let ej = G(ei, b)
536+ let ek = if (dX)
537+ then dZ
538+ else ea
539+ let el = toBigInt(ek)
540+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541+ let en = if ((em > f))
517542 then true
518- else ay("initial deposit requires all coins")
519- if ((dT == dT))
543+ else aI("initial deposit requires all coins")
544+ if ((en == en))
520545 then {
521- let dU = toBigInt(dL)
522- let dV = max([0, toInt(((dS * (sqrtBigInt((d + ((dU * d) / dR)), 18, 18, DOWN) - d)) / d))])
523- let cP = if (dy)
546+ let eo = toBigInt(ef)
547+ let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
548+ let cY = if (dU)
524549 then nil
525- else [IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dG, dH, dV, dP, 0, 0, height, lastBlock.timestamp, 0, 0))]
526- let dW = bs(D(dE, aX), D(dD, aW))
527- let dX = G(dW, b)
528- let dY = {
529- let dZ = if (dB)
530- then $Tuple2(dG, dD)
531- else $Tuple2(dH, dE)
532- let dn = dZ._1
533- let ea = dZ._2
534- let eb = toInt(fraction(dS, toBigInt((dn / 2)), toBigInt(ea)))
535- fraction((dV - eb), b, eb)
550+ else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551+ let eq = bA(D(ea, bf), D(dZ, be))
552+ let er = G(eq, b)
553+ let es = {
554+ let et = if (dX)
555+ then $Tuple2(ec, dZ)
556+ else $Tuple2(ed, ea)
557+ let dK = et._1
558+ let eu = et._2
559+ let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560+ fraction((ep - ev), b, ev)
536561 }
537- $Tuple4(dV, cP, du, dY)
562+ $Tuple5(ep, cY, dQ, es, dX)
538563 }
539564 else throw("Strict value is not equal to itself.")
540565 }
541566
542567
543-func ec (ed,dL,dx,X,Y) = {
544- let dy = (Y == unit)
545- let ee = [if ((dx == aT))
568+func ew (ex,ef,dT,Z,aa) = {
569+ let dU = (aa == unit)
570+ let bN = aP()
571+ let bO = parseIntValue(bN[t])
572+ let bP = parseIntValue(bN[u])
573+ let ey = [if ((dT == bb))
546574 then true
547- else ay("invalid lp asset")]
548- if ((ee == ee))
575+ else aI("invalid lp asset")]
576+ if ((ey == ey))
549577 then {
550- let ef = if ((ed == aU))
578+ let ez = if ((ex == bc))
551579 then true
552- else if ((ed == aV))
580+ else if ((ex == bd))
553581 then false
554- else ay("invalid asset")
555- let eg = if (ef)
556- then toBigInt(bq(aM(aU)))
557- else toBigInt(bq(aM(aV)))
558- let eh = bq(aM(aU))
559- let ei = bq(aM(aV))
560- let ej = if (ef)
561- then eh
562- else ei
563- let ek = toBigInt(ej)
564- let dS = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
565- let el = toBigInt(dL)
566- let em = max([0, toInt(((eg * (d - pow((d - ((el * d) / dS)), 18, h, 0, 18, DOWN))) / d))])
567- let en = ds(em, aE)
568- let eo = en._1
569- let du = en._2
570- let ep = if (ef)
571- then $Tuple4(eo, 0, (eh - em), ei)
572- else $Tuple4(0, eo, eh, (ei - em))
573- let eq = ep._1
574- let er = ep._2
575- let es = ep._3
576- let et = ep._4
577- let dO = bs(D(et, aX), D(es, aW))
578- let dP = G(dO, b)
579- let cP = if (dy)
582+ else aI("invalid asset")
583+ let eA = if (ez)
584+ then toBigInt(by(aU(bc)))
585+ else toBigInt(by(aU(bd)))
586+ let eB = if (ez)
587+ then bO
588+ else bP
589+ let eC = by(aU(bc))
590+ let eD = by(aU(bd))
591+ let eE = if (ez)
592+ then eC
593+ else eD
594+ let eF = toBigInt(eE)
595+ let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596+ let eG = toBigInt(ef)
597+ let eH = max([0, J(fraction(eA, (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN)), d), eB, FLOOR)])
598+ let eI = dP(eH)
599+ let eJ = eI._1
600+ let dQ = eI._2
601+ let eK = if (ez)
602+ then $Tuple4(eJ, 0, (eC - eH), eD)
603+ else $Tuple4(0, eJ, eC, (eD - eH))
604+ let eL = eK._1
605+ let eM = eK._2
606+ let eN = eK._3
607+ let eO = eK._4
608+ let ei = bA(D(eO, bf), D(eN, be))
609+ let ej = G(ei, b)
610+ let cY = if (dU)
580611 then nil
581- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(eq, er, dL, dP, height, lastBlock.timestamp)), IntegerEntry(S(), dP), IntegerEntry(T(height, lastBlock.timestamp), dP)]
582- let dW = bs(D(ei, aX), D(eh, aW))
583- let dX = G(dW, b)
584- let dY = {
585- let eu = (toInt(fraction(eg, el, dS)) * 2)
586- fraction((eo - eu), b, eu)
612+ else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613+ let eq = bA(D(eD, bf), D(eC, be))
614+ let er = G(eq, b)
615+ let es = {
616+ let eP = (toInt(fraction(eA, eG, em)) * 2)
617+ fraction((eJ - eP), b, eP)
587618 }
588- $Tuple4(eo, cP, du, dY)
619+ $Tuple5(eJ, cY, dQ, es, ez)
589620 }
590621 else throw("Strict value is not equal to itself.")
591622 }
592623
593624
594-func ev () = {
595- let dq = getString(Q())
596- if ($isInstanceOf(dq, "String"))
625+func eQ () = {
626+ let dN = getString(S())
627+ if ($isInstanceOf(dN, "String"))
597628 then {
598- let ew = dq
599- fromBase58String(ew)
629+ let eR = dN
630+ fromBase58String(eR)
600631 }
601- else if ($isInstanceOf(dq, "Unit"))
632+ else if ($isInstanceOf(dN, "Unit"))
602633 then unit
603634 else throw("Match error")
604635 }
605636
606637
607-func ex () = {
608- let dq = getString(R())
609- if ($isInstanceOf(dq, "String"))
638+func eS () = {
639+ let dN = getString(T())
640+ if ($isInstanceOf(dN, "String"))
610641 then {
611- let ew = dq
612- fromBase58String(ew)
642+ let eR = dN
643+ fromBase58String(eR)
613644 }
614- else if ($isInstanceOf(dq, "Unit"))
645+ else if ($isInstanceOf(dN, "Unit"))
615646 then unit
616647 else throw("Match error")
617648 }
618649
619650
620-func ey (df) = {
621- let dq = ev()
622- if ($isInstanceOf(dq, "ByteVector"))
651+func eT (dC) = {
652+ let dN = eQ()
653+ if ($isInstanceOf(dN, "ByteVector"))
623654 then {
624- let ez = dq
625- (df.callerPublicKey == ez)
655+ let eU = dN
656+ (dC.callerPublicKey == eU)
626657 }
627- else if ($isInstanceOf(dq, "Unit"))
628- then (df.caller == this)
658+ else if ($isInstanceOf(dN, "Unit"))
659+ then (dC.caller == this)
629660 else throw("Match error")
630661 }
631662
632663
633-func eA (df) = {
634- let eB = throw("Permission denied")
635- let dq = ev()
636- if ($isInstanceOf(dq, "ByteVector"))
664+func eV (dC) = {
665+ let eW = throw("Permission denied")
666+ let dN = eQ()
667+ if ($isInstanceOf(dN, "ByteVector"))
637668 then {
638- let ez = dq
639- if ((df.callerPublicKey == ez))
669+ let eU = dN
670+ if ((dC.callerPublicKey == eU))
640671 then true
641- else eB
672+ else eW
642673 }
643- else if ($isInstanceOf(dq, "Unit"))
644- then if ((df.caller == this))
674+ else if ($isInstanceOf(dN, "Unit"))
675+ then if ((dC.caller == this))
645676 then true
646- else eB
677+ else eW
647678 else throw("Match error")
648679 }
649680
650681
651-@Callable(df)
652-func setManager (eC) = {
653- let eD = eA(df)
654- if ((eD == eD))
682+@Callable(dC)
683+func setManager (eX) = {
684+ let eY = eV(dC)
685+ if ((eY == eY))
655686 then {
656- let eE = fromBase58String(eC)
657- if ((eE == eE))
658- then [StringEntry(R(), eC)]
687+ let eZ = fromBase58String(eX)
688+ if ((eZ == eZ))
689+ then [StringEntry(T(), eX)]
659690 else throw("Strict value is not equal to itself.")
660691 }
661692 else throw("Strict value is not equal to itself.")
662693 }
663694
664695
665696
666-@Callable(df)
697+@Callable(dC)
667698 func confirmManager () = {
668- let eF = ex()
669- let eG = if (isDefined(eF))
699+ let fa = eS()
700+ let fb = if (isDefined(fa))
670701 then true
671702 else throw("No pending manager")
672- if ((eG == eG))
703+ if ((fb == fb))
673704 then {
674- let eH = if ((df.callerPublicKey == value(eF)))
705+ let fc = if ((dC.callerPublicKey == value(fa)))
675706 then true
676707 else throw("You are not pending manager")
677- if ((eH == eH))
678- then [StringEntry(Q(), toBase58String(value(eF))), DeleteEntry(R())]
708+ if ((fc == fc))
709+ then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
679710 else throw("Strict value is not equal to itself.")
680711 }
681712 else throw("Strict value is not equal to itself.")
682713 }
683714
684715
685716
686-@Callable(df)
687-func put (ck,eI) = if ((0 > ck))
717+@Callable(dC)
718+func put (ct,fd) = if ((0 > ct))
688719 then throw("Invalid slippageTolerance passed")
689720 else {
690- let dl = di(df, ck, true)
691- let cM = dl._2
692- let bR = dl._7
693- let ci = dl._9
694- let cN = dl._10
695- let cO = dl._11
696- let eJ = dl._12
697- let eK = dl._13
698- let do = invoke(aA, "emit", [cM], nil)
699- if ((do == do))
721+ let dI = dF(dC, ct, true)
722+ let cV = dI._2
723+ let ca = dI._7
724+ let cr = dI._9
725+ let cW = dI._10
726+ let cX = dI._11
727+ let fe = dI._12
728+ let ff = dI._13
729+ let dG = toBigInt(value(dC.payments[0]).amount)
730+ let dH = toBigInt(value(dC.payments[1]).amount)
731+ let dk = dd(dG, dH, toBigInt(0))
732+ if ((dk == dk))
700733 then {
701- let dp = {
702- let dq = do
703- if ($isInstanceOf(dq, "Address"))
704- then {
705- let dr = dq
706- invoke(dr, "emit", [cM], nil)
734+ let dL = invoke(aL, "emit", [cV], nil)
735+ if ((dL == dL))
736+ then {
737+ let dM = {
738+ let dN = dL
739+ if ($isInstanceOf(dN, "Address"))
740+ then {
741+ let dO = dN
742+ invoke(dO, "emit", [cV], nil)
743+ }
744+ else unit
707745 }
708- else unit
709- }
710- if ((dp == dp))
711- then {
712- let eL = if ((cN > 0))
713- then invoke(ba, "put", nil, [AttachedPayment(eJ, cN)])
714- else nil
715- if ((eL == eL))
746+ if ((dM == dM))
716747 then {
717- let eM = if ((cO > 0))
718- then invoke(ba, "put", nil, [AttachedPayment(eK, cO)])
748+ let fg = if ((cW > 0))
749+ then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
719750 else nil
720- if ((eM == eM))
751+ if ((fg == fg))
721752 then {
722- let eN = if (eI)
753+ let fh = if ((cX > 0))
754+ then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
755+ else nil
756+ if ((fh == fh))
723757 then {
724- let eO = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
725- if ((eO == eO))
726- then nil
758+ let fi = if (fd)
759+ then {
760+ let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761+ if ((fj == fj))
762+ then nil
763+ else throw("Strict value is not equal to itself.")
764+ }
765+ else [ScriptTransfer(dC.caller, cV, ca)]
766+ let fk = dl(0, 0, 0)
767+ if ((fk == fk))
768+ then {
769+ let dc = fk._2
770+ let fl = fk._1
771+ let fm = dp(dk, dc)
772+ if ((fm == fm))
773+ then ((cr ++ fi) ++ fl)
774+ else throw("Strict value is not equal to itself.")
775+ }
727776 else throw("Strict value is not equal to itself.")
728777 }
729- else [ScriptTransfer(df.caller, cM, bR)]
730- (ci ++ eN)
778+ else throw("Strict value is not equal to itself.")
731779 }
732780 else throw("Strict value is not equal to itself.")
733781 }
734782 else throw("Strict value is not equal to itself.")
735783 }
736784 else throw("Strict value is not equal to itself.")
737785 }
738786 else throw("Strict value is not equal to itself.")
739787 }
740788
741789
742790
743-@Callable(df)
744-func putForFree (eP) = if ((0 > eP))
791+@Callable(dC)
792+func putForFree (fn) = if ((0 > fn))
745793 then throw("Invalid value passed")
746794 else {
747- let dl = di(df, eP, false)
748- dl._9
795+ let dI = dF(dC, fn, false)
796+ let cr = dI._9
797+ let dG = toBigInt(value(dC.payments[0]).amount)
798+ let dH = toBigInt(value(dC.payments[1]).amount)
799+ let dk = dd(dG, dH, toBigInt(0))
800+ if ((dk == dk))
801+ then {
802+ let fo = dl(0, 0, 0)
803+ let fl = fo._1
804+ let dc = fo._2
805+ let fm = dp(dk, dc)
806+ if ((fm == fm))
807+ then (cr ++ fl)
808+ else throw("Strict value is not equal to itself.")
809+ }
810+ else throw("Strict value is not equal to itself.")
749811 }
750812
751813
752814
753-@Callable(df)
754-func putOneTkn (eQ,eR) = {
755- let eS = {
756- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
757- if ($isInstanceOf(aD, "Boolean"))
758- then aD
759- else throw(($getType(aD) + " couldn't be cast to Boolean"))
815+@Callable(dC)
816+func putOneTkn (fp,fq) = {
817+ let fr = {
818+ let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819+ if ($isInstanceOf(fs, "Boolean"))
820+ then fs
821+ else throw(($getType(fs) + " couldn't be cast to Boolean"))
760822 }
761- let eT = if (if (if (aF())
823+ let ft = if (if (if (aN())
762824 then true
763- else (aS == l))
825+ else (ba == l))
764826 then true
765- else (aS == n))
827+ else (ba == n))
766828 then true
767- else eS
768- let ee = [if (if (!(eT))
829+ else fr
830+ let ey = [if (if (!(ft))
769831 then true
770- else ey(df))
832+ else eT(dC))
771833 then true
772- else ay("put operation is blocked by admin"), if ((size(df.payments) == 1))
834+ else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
773835 then true
774- else ay("exactly 1 payment are expected")]
775- if ((ee == ee))
836+ else aI("exactly 1 payment are expected")]
837+ if ((ey == ey))
776838 then {
777- let eU = df.payments[0]
778- let dx = eU.assetId
779- let dw = eU.amount
780- let X = df.caller
781- let Y = df.transactionId
782- let eV = dv(dw, dx, X, Y)
783- if ((eV == eV))
839+ let fu = dC.payments[0]
840+ let dT = fu.assetId
841+ let dS = fu.amount
842+ let dk = if ((dT == bc))
843+ then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844+ else if ((dT == bd))
845+ then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
846+ else aI("payment asset is not supported")
847+ let Z = dC.caller
848+ let aa = dC.transactionId
849+ let fv = dR(dS, dT, Z, aa)
850+ if ((fv == fv))
784851 then {
785- let eW = eV._4
786- let du = eV._3
787- let cP = eV._2
788- let eX = eV._1
789- let eY = if (if ((eQ > 0))
790- then (eQ > eX)
852+ let dX = fv._5
853+ let fw = fv._4
854+ let dQ = fv._3
855+ let cY = fv._2
856+ let fx = fv._1
857+ let fy = if (if ((fp > 0))
858+ then (fp > fx)
791859 else false)
792- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
793- else eX
794- let do = dm(eY)
795- if ((do == do))
860+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
861+ else fx
862+ let dL = dJ(fy)
863+ if ((dL == dL))
796864 then {
797- let eN = if (eR)
865+ let fi = if (fq)
798866 then {
799- let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
800- if ((eZ == eZ))
867+ let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
868+ if ((fz == fz))
801869 then nil
802870 else throw("Strict value is not equal to itself.")
803871 }
804- else [ScriptTransfer(df.caller, eY, aT)]
805- let fa = if ((du > 0))
806- then [ScriptTransfer(aB, du, dx)]
872+ else [ScriptTransfer(dC.caller, fy, bb)]
873+ let fA = if ((dQ > 0))
874+ then [ScriptTransfer(aM, dQ, dT)]
807875 else nil
808- $Tuple2(((cP ++ eN) ++ fa), eY)
876+ let fB = if ((this == aM))
877+ then $Tuple2(0, 0)
878+ else if (dX)
879+ then $Tuple2(-(dQ), 0)
880+ else $Tuple2(0, -(dQ))
881+ let dm = fB._1
882+ let dn = fB._2
883+ let fC = dl(dm, dn, 0)
884+ let fl = fC._1
885+ let dc = fC._2
886+ let dw = value(getString(ah))
887+ let fm = dp(dk, dc)
888+ if ((fm == fm))
889+ then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
890+ else throw("Strict value is not equal to itself.")
809891 }
810892 else throw("Strict value is not equal to itself.")
811893 }
812894 else throw("Strict value is not equal to itself.")
813895 }
814896 else throw("Strict value is not equal to itself.")
815897 }
816898
817899
818900
819-@Callable(df)
820-func putOneTknREADONLY (dx,dw) = {
821- let fb = dv(dw, aK(dx), unit, unit)
822- let eX = fb._1
823- let cP = fb._2
824- let du = fb._3
825- let eW = fb._4
826- $Tuple2(nil, $Tuple3(eX, du, eW))
901+@Callable(dC)
902+func putOneTknREADONLY (dT,dS) = {
903+ let fD = dR(dS, aS(dT), unit, unit)
904+ let fx = fD._1
905+ let cY = fD._2
906+ let dQ = fD._3
907+ let fw = fD._4
908+ let dX = fD._5
909+ $Tuple2(nil, $Tuple3(fx, dQ, fw))
827910 }
828911
829912
830913
831-@Callable(df)
832-func getOneTkn (fc,eQ) = {
833- let eS = {
834- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
835- if ($isInstanceOf(aD, "Boolean"))
836- then aD
837- else throw(($getType(aD) + " couldn't be cast to Boolean"))
914+@Callable(dC)
915+func getOneTkn (fE,fp) = {
916+ let fr = {
917+ let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
918+ if ($isInstanceOf(fs, "Boolean"))
919+ then fs
920+ else throw(($getType(fs) + " couldn't be cast to Boolean"))
838921 }
839- let fd = if (if (aF())
922+ let fF = if (if (aN())
840923 then true
841- else (aS == n))
924+ else (ba == n))
842925 then true
843- else eS
844- let ee = [if (if (!(fd))
926+ else fr
927+ let ey = [if (if (!(fF))
845928 then true
846- else ey(df))
929+ else eT(dC))
847930 then true
848- else ay("get operation is blocked by admin"), if ((size(df.payments) == 1))
931+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
849932 then true
850- else ay("exactly 1 payment are expected")]
851- if ((ee == ee))
933+ else aI("exactly 1 payment are expected")]
934+ if ((ey == ey))
852935 then {
853- let ed = aK(fc)
854- let eU = df.payments[0]
855- let dx = eU.assetId
856- let dL = eU.amount
857- let X = df.caller
858- let Y = df.transactionId
859- let fe = ec(ed, dL, dx, X, Y)
860- if ((fe == fe))
936+ let ex = aS(fE)
937+ let fu = dC.payments[0]
938+ let dT = fu.assetId
939+ let ef = fu.amount
940+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
941+ let Z = dC.caller
942+ let aa = dC.transactionId
943+ let fG = ew(ex, ef, dT, Z, aa)
944+ if ((fG == fG))
861945 then {
862- let eW = fe._4
863- let du = fe._3
864- let cP = fe._2
865- let ff = fe._1
866- let dn = if (if ((eQ > 0))
867- then (eQ > ff)
946+ let ez = fG._5
947+ let fw = fG._4
948+ let dQ = fG._3
949+ let cY = fG._2
950+ let fH = fG._1
951+ let dK = if (if ((fp > 0))
952+ then (fp > fH)
868953 else false)
869- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
870- else ff
871- let fg = invoke(aA, "burn", [dL], [AttachedPayment(dx, dL)])
872- if ((fg == fg))
954+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
955+ else fH
956+ let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
957+ if ((fI == fI))
873958 then {
874- let fh = [ScriptTransfer(X, dn, ed)]
875- let fa = if ((du > 0))
876- then [ScriptTransfer(aB, du, ed)]
959+ let fJ = [ScriptTransfer(Z, dK, ex)]
960+ let fA = if ((dQ > 0))
961+ then [ScriptTransfer(aM, dQ, ex)]
877962 else nil
878- $Tuple2(((cP ++ fh) ++ fa), dn)
963+ let fK = {
964+ let fL = if ((this == aM))
965+ then 0
966+ else dQ
967+ if (ez)
968+ then $Tuple2(-((dK + fL)), 0)
969+ else $Tuple2(0, -((dK + fL)))
970+ }
971+ let dm = fK._1
972+ let dn = fK._2
973+ let fM = dl(dm, dn, 0)
974+ let fl = fM._1
975+ let dc = fM._2
976+ let fm = dp(dk, dc)
977+ if ((fm == fm))
978+ then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
979+ else throw("Strict value is not equal to itself.")
879980 }
880981 else throw("Strict value is not equal to itself.")
881982 }
882983 else throw("Strict value is not equal to itself.")
883984 }
884985 else throw("Strict value is not equal to itself.")
885986 }
886987
887988
888989
889-@Callable(df)
890-func getOneTknREADONLY (ed,dL) = {
891- let fi = ec(aK(ed), dL, aT, unit, unit)
892- let ff = fi._1
893- let cP = fi._2
894- let du = fi._3
895- let eW = fi._4
896- $Tuple2(nil, $Tuple3(ff, du, eW))
990+@Callable(dC)
991+func getOneTknREADONLY (ex,ef) = {
992+ let fN = ew(aS(ex), ef, bb, unit, unit)
993+ let fH = fN._1
994+ let cY = fN._2
995+ let dQ = fN._3
996+ let fw = fN._4
997+ let ez = fN._5
998+ $Tuple2(nil, $Tuple3(fH, dQ, fw))
897999 }
8981000
8991001
9001002
901-@Callable(df)
902-func unstakeAndGetOneTkn (fj,fc,eQ) = {
903- let eS = {
904- let aD = invoke(aA, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
905- if ($isInstanceOf(aD, "Boolean"))
906- then aD
907- else throw(($getType(aD) + " couldn't be cast to Boolean"))
1003+@Callable(dC)
1004+func unstakeAndGetOneTkn (fO,fE,fp) = {
1005+ let fr = {
1006+ let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1007+ if ($isInstanceOf(fs, "Boolean"))
1008+ then fs
1009+ else throw(($getType(fs) + " couldn't be cast to Boolean"))
9081010 }
909- let fd = if (if (aF())
1011+ let fF = if (if (aN())
9101012 then true
911- else (aS == n))
1013+ else (ba == n))
9121014 then true
913- else eS
914- let ee = [if (if (!(fd))
1015+ else fr
1016+ let ey = [if (if (!(fF))
9151017 then true
916- else ey(df))
1018+ else eT(dC))
9171019 then true
918- else ay("get operation is blocked by admin"), if ((size(df.payments) == 0))
1020+ else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
9191021 then true
920- else ay("no payments are expected")]
921- if ((ee == ee))
1022+ else aI("no payments are expected")]
1023+ if ((ey == ey))
9221024 then {
923- let ed = aK(fc)
924- let X = df.caller
925- let Y = df.transactionId
926- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
927- if ((fk == fk))
1025+ let ex = aS(fE)
1026+ let Z = dC.caller
1027+ let aa = dC.transactionId
1028+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1029+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1030+ if ((fP == fP))
9281031 then {
929- let fl = ec(ed, fj, aT, X, Y)
930- if ((fl == fl))
1032+ let fQ = ew(ex, fO, bb, Z, aa)
1033+ if ((fQ == fQ))
9311034 then {
932- let eW = fl._4
933- let du = fl._3
934- let cP = fl._2
935- let ff = fl._1
936- let dn = if (if ((eQ > 0))
937- then (eQ > ff)
1035+ let ez = fQ._5
1036+ let fw = fQ._4
1037+ let dQ = fQ._3
1038+ let cY = fQ._2
1039+ let fH = fQ._1
1040+ let dK = if (if ((fp > 0))
1041+ then (fp > fH)
9381042 else false)
939- then ay(makeString(["amount to receive is less than ", toString(eQ)], ""))
940- else ff
941- let fg = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
942- if ((fg == fg))
1043+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1044+ else fH
1045+ let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1046+ if ((fI == fI))
9431047 then {
944- let fh = [ScriptTransfer(df.caller, dn, ed)]
945- let fa = if ((du > 0))
946- then [ScriptTransfer(aB, du, ed)]
1048+ let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1049+ let fA = if ((dQ > 0))
1050+ then [ScriptTransfer(aM, dQ, ex)]
9471051 else nil
948- $Tuple2(((cP ++ fh) ++ fa), dn)
1052+ let fR = {
1053+ let fL = if ((this == aM))
1054+ then 0
1055+ else dQ
1056+ if (ez)
1057+ then $Tuple2(-((dK + fL)), 0)
1058+ else $Tuple2(0, -((dK + fL)))
1059+ }
1060+ let dm = fR._1
1061+ let dn = fR._2
1062+ let fS = dl(dm, dn, 0)
1063+ let fl = fS._1
1064+ let dc = fS._2
1065+ let fm = dp(dk, dc)
1066+ if ((fm == fm))
1067+ then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1068+ else throw("Strict value is not equal to itself.")
9491069 }
9501070 else throw("Strict value is not equal to itself.")
9511071 }
9521072 else throw("Strict value is not equal to itself.")
9531073 }
9541074 else throw("Strict value is not equal to itself.")
9551075 }
9561076 else throw("Strict value is not equal to itself.")
9571077 }
9581078
9591079
9601080
961-@Callable(df)
1081+@Callable(dC)
9621082 func get () = {
963- let cA = de(df)
964- let fm = cA._1
965- let ch = cA._2
966- let dh = cA._3
967- let bP = cA._4
968- let ci = cA._5
969- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
970- if ((fn == fn))
971- then ci
1083+ let cJ = dB(dC)
1084+ let fT = cJ._1
1085+ let cq = cJ._2
1086+ let dE = cJ._3
1087+ let bY = cJ._4
1088+ let cr = cJ._5
1089+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1090+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1091+ if ((fU == fU))
1092+ then {
1093+ let fV = dl(-(fT), -(cq), 0)
1094+ let fl = fV._1
1095+ let dc = fV._2
1096+ let fm = dp(dk, dc)
1097+ if ((fm == fm))
1098+ then (cr ++ fl)
1099+ else throw("Strict value is not equal to itself.")
1100+ }
9721101 else throw("Strict value is not equal to itself.")
9731102 }
9741103
9751104
9761105
977-@Callable(df)
978-func getNoLess (fo,fp) = {
979- let cA = de(df)
980- let cg = cA._1
981- let ch = cA._2
982- let dh = cA._3
983- let bP = cA._4
984- let ci = cA._5
985- if ((fo > cg))
986- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
987- else if ((fp > ch))
988- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
1106+@Callable(dC)
1107+func getNoLess (fW,fX) = {
1108+ let cJ = dB(dC)
1109+ let cp = cJ._1
1110+ let cq = cJ._2
1111+ let dE = cJ._3
1112+ let bY = cJ._4
1113+ let cr = cJ._5
1114+ if ((fW > cp))
1115+ then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
1116+ else if ((fX > cq))
1117+ then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
9891118 else {
990- let fn = invoke(aA, "burn", [dh], [AttachedPayment(bP, dh)])
991- if ((fn == fn))
992- then ci
1119+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1120+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1121+ if ((fU == fU))
1122+ then {
1123+ let fY = dl(-(cp), -(cq), 0)
1124+ let fl = fY._1
1125+ let dc = fY._2
1126+ let fm = dp(dk, dc)
1127+ if ((fm == fm))
1128+ then (cr ++ fl)
1129+ else throw("Strict value is not equal to itself.")
1130+ }
9931131 else throw("Strict value is not equal to itself.")
9941132 }
9951133 }
9961134
9971135
9981136
999-@Callable(df)
1000-func unstakeAndGet (dn) = {
1001- let fq = if ((size(df.payments) != 0))
1137+@Callable(dC)
1138+func unstakeAndGet (dK) = {
1139+ let fZ = if ((size(dC.payments) != 0))
10021140 then throw("No payments are expected")
10031141 else true
1004- if ((fq == fq))
1142+ if ((fZ == fZ))
10051143 then {
1006- let bE = aH()
1007- let bR = fromBase58String(bE[q])
1008- let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
1009- if ((fk == fk))
1144+ let bN = aP()
1145+ let ca = fromBase58String(bN[q])
1146+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1147+ let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1148+ if ((fP == fP))
10101149 then {
1011- let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
1012- let bU = parseIntValue(cA._9)
1013- let ci = cA._10
1014- let fr = if (if (aF())
1150+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
1151+ let cp = cJ._1
1152+ let cq = cJ._2
1153+ let cd = parseIntValue(cJ._9)
1154+ let cr = cJ._10
1155+ let ga = if (if (aN())
10151156 then true
1016- else (bU == n))
1017- then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
1157+ else (cd == n))
1158+ then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
10181159 else true
1019- if ((fr == fr))
1160+ if ((ga == ga))
10201161 then {
1021- let fn = invoke(aA, "burn", [dn], [AttachedPayment(bR, dn)])
1022- if ((fn == fn))
1023- then ci
1162+ let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1163+ if ((fU == fU))
1164+ then {
1165+ let gb = dl(-(cp), -(cq), 0)
1166+ let fl = gb._1
1167+ let dc = gb._2
1168+ let fm = dp(dk, dc)
1169+ if ((fm == fm))
1170+ then (cr ++ fl)
1171+ else throw("Strict value is not equal to itself.")
1172+ }
10241173 else throw("Strict value is not equal to itself.")
10251174 }
10261175 else throw("Strict value is not equal to itself.")
10271176 }
10281177 else throw("Strict value is not equal to itself.")
10291178 }
10301179 else throw("Strict value is not equal to itself.")
10311180 }
10321181
10331182
10341183
1035-@Callable(df)
1036-func unstakeAndGetNoLess (fj,fs,fp) = {
1037- let fd = if (aF())
1184+@Callable(dC)
1185+func unstakeAndGetNoLess (fO,gc,fX) = {
1186+ let fF = if (aN())
10381187 then true
1039- else (aS == n)
1040- let ee = [if (!(fd))
1188+ else (ba == n)
1189+ let ey = [if (!(fF))
10411190 then true
1042- else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
1191+ else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10431192 then true
10441193 else throw("no payments are expected")]
1045- if ((ee == ee))
1194+ if ((ey == ey))
10461195 then {
1047- let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1048- if ((fk == fk))
1196+ let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1197+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1198+ if ((fP == fP))
10491199 then {
1050- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
1051- let cg = cA._1
1052- let ch = cA._2
1053- let ci = cA._10
1054- let ft = [if ((cg >= fs))
1200+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
1201+ let cp = cJ._1
1202+ let cq = cJ._2
1203+ let cr = cJ._10
1204+ let gd = [if ((cp >= gc))
10551205 then true
1056- else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
1206+ else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
10571207 then true
1058- else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1059- if ((ft == ft))
1208+ else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1209+ if ((gd == gd))
10601210 then {
1061- let fn = invoke(aA, "burn", [fj], [AttachedPayment(aT, fj)])
1062- if ((fn == fn))
1063- then ci
1211+ let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1212+ if ((fU == fU))
1213+ then {
1214+ let ge = dl(-(cp), -(cq), 0)
1215+ let fl = ge._1
1216+ let dc = ge._2
1217+ let fm = dp(dk, dc)
1218+ if ((fm == fm))
1219+ then (cr ++ fl)
1220+ else throw("Strict value is not equal to itself.")
1221+ }
10641222 else throw("Strict value is not equal to itself.")
10651223 }
10661224 else throw("Strict value is not equal to itself.")
10671225 }
10681226 else throw("Strict value is not equal to itself.")
10691227 }
10701228 else throw("Strict value is not equal to itself.")
10711229 }
10721230
10731231
10741232
1075-@Callable(df)
1076-func activate (fu,fv) = if ((toString(df.caller) != toString(aA)))
1233+@Callable(dC)
1234+func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
10771235 then throw("permissions denied")
1078- else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
1236+ else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
10791237
10801238
10811239
1082-@Callable(df)
1083-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
1084-
1085-
1086-
1087-@Callable(df)
1088-func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
1089-
1090-
1091-
1092-@Callable(df)
1093-func calcPricesWrapperREADONLY (by,bz,bD) = {
1094- let bM = bC(by, bz, bD)
1095- $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
1240+@Callable(dC)
1241+func refreshKLp () = {
1242+ let gh = valueOrElse(getInteger(ai), 0)
1243+ let gi = if (((height - gh) >= al))
1244+ then unit
1245+ else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1246+ if ((gi == gi))
1247+ then {
1248+ let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1249+ let gj = dl(0, 0, 0)
1250+ let gk = gj._1
1251+ let dc = gj._2
1252+ let do = if ((dw != dc))
1253+ then gk
1254+ else aI("nothing to refresh")
1255+ $Tuple2(do, toString(dc))
1256+ }
1257+ else throw("Strict value is not equal to itself.")
10961258 }
10971259
10981260
10991261
1100-@Callable(df)
1262+@Callable(dC)
1263+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
1264+
1265+
1266+
1267+@Callable(dC)
1268+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
1269+
1270+
1271+
1272+@Callable(dC)
1273+func calcPricesWrapperREADONLY (bH,bI,bM) = {
1274+ let bV = bL(bH, bI, bM)
1275+ $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
1276+ }
1277+
1278+
1279+
1280+@Callable(dC)
11011281 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11021282
11031283
11041284
1105-@Callable(df)
1285+@Callable(dC)
11061286 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11071287
11081288
11091289
1110-@Callable(df)
1111-func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
1290+@Callable(dC)
1291+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
11121292
11131293
11141294
1115-@Callable(df)
1116-func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
1295+@Callable(dC)
1296+func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
11171297
11181298
11191299
1120-@Callable(df)
1121-func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
1122- let cA = bN(bO, bP, bQ, addressFromStringValue(X))
1123- $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
1300+@Callable(dC)
1301+func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
1302+ let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
1303+ $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
11241304 }
11251305
11261306
11271307
1128-@Callable(df)
1308+@Callable(dC)
11291309 func statsREADONLY () = {
1130- let bE = aH()
1131- let bR = fromBase58String(bE[q])
1132- let cS = bE[r]
1133- let cT = bE[s]
1134- let ct = bE[v]
1135- let cu = bE[w]
1136- let bF = parseIntValue(bE[t])
1137- let bG = parseIntValue(bE[u])
1138- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1139- let cU = bq(cS)
1140- let cV = bq(cT)
1141- let fx = if ((fw == 0))
1310+ let bN = aP()
1311+ let ca = fromBase58String(bN[q])
1312+ let gl = bN[r]
1313+ let gm = bN[s]
1314+ let cC = bN[v]
1315+ let cD = bN[w]
1316+ let bO = parseIntValue(bN[t])
1317+ let bP = parseIntValue(bN[u])
1318+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1319+ let go = by(gl)
1320+ let gp = by(gm)
1321+ let gq = if ((gn == 0))
11421322 then [e, e, e]
1143- else bC(cU, cV, fw)
1144- let cb = 0
1145- let fy = G(fx[1], b)
1146- let fz = G(fx[2], b)
1147- let fA = value(getInteger(aA, am(toString(this))))
1148- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
1323+ else bL(go, gp, gn)
1324+ let ck = 0
1325+ let gr = G(gq[1], b)
1326+ let gs = G(gq[2], b)
1327+ let gt = value(getInteger(aL, aw(toString(this))))
1328+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
11491329 }
11501330
11511331
11521332
1153-@Callable(df)
1154-func evaluatePutByAmountAssetREADONLY (cl) = {
1155- let bE = aH()
1156- let bR = fromBase58String(bE[q])
1157- let cr = bE[r]
1158- let bS = fromBase58String(cr)
1159- let cs = bE[s]
1160- let bT = fromBase58String(cs)
1161- let bF = parseIntValue(bE[t])
1162- let bG = parseIntValue(bE[u])
1163- let bU = bE[p]
1164- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1165- let cU = bq(cr)
1166- let cV = bq(cs)
1167- let bA = D(cU, bF)
1168- let bB = D(cV, bG)
1169- let ca = if ((fw == 0))
1333+@Callable(dC)
1334+func evaluatePutByAmountAssetREADONLY (cu) = {
1335+ let bN = aP()
1336+ let ca = fromBase58String(bN[q])
1337+ let cA = bN[r]
1338+ let cb = fromBase58String(cA)
1339+ let cB = bN[s]
1340+ let cc = fromBase58String(cB)
1341+ let bO = parseIntValue(bN[t])
1342+ let bP = parseIntValue(bN[u])
1343+ let cd = bN[p]
1344+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1345+ let go = by(cA)
1346+ let gp = by(cB)
1347+ let bJ = D(go, bO)
1348+ let bK = D(gp, bP)
1349+ let cj = if ((gn == 0))
11701350 then e
1171- else bs(bB, bA)
1172- let cx = D(cl, bF)
1173- let cy = fraction(cx, ca, d)
1174- let cn = G(cy, bG)
1175- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1176- let cI = dl._1
1177- let fB = dl._3
1178- let bW = dl._4
1179- let bY = dl._5
1180- let bV = dl._6
1181- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1351+ else bA(bK, bJ)
1352+ let cG = D(cu, bO)
1353+ let cH = fraction(cG, cj, d)
1354+ let cw = G(cH, bP)
1355+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1356+ let cR = dI._1
1357+ let gu = dI._3
1358+ let cf = dI._4
1359+ let ch = dI._5
1360+ let ce = dI._6
1361+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
11821362 }
11831363
11841364
11851365
1186-@Callable(df)
1187-func evaluatePutByPriceAssetREADONLY (cn) = {
1188- let bE = aH()
1189- let bR = fromBase58String(bE[q])
1190- let cr = bE[r]
1191- let bS = fromBase58String(cr)
1192- let cs = bE[s]
1193- let bT = fromBase58String(cs)
1194- let bF = parseIntValue(bE[t])
1195- let bG = parseIntValue(bE[u])
1196- let bU = bE[p]
1197- let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1198- let fC = bq(cr)
1199- let fD = bq(cs)
1200- let fE = D(fC, bF)
1201- let fF = D(fD, bG)
1202- let ca = if ((fw == 0))
1366+@Callable(dC)
1367+func evaluatePutByPriceAssetREADONLY (cw) = {
1368+ let bN = aP()
1369+ let ca = fromBase58String(bN[q])
1370+ let cA = bN[r]
1371+ let cb = fromBase58String(cA)
1372+ let cB = bN[s]
1373+ let cc = fromBase58String(cB)
1374+ let bO = parseIntValue(bN[t])
1375+ let bP = parseIntValue(bN[u])
1376+ let cd = bN[p]
1377+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1378+ let gv = by(cA)
1379+ let gw = by(cB)
1380+ let gx = D(gv, bO)
1381+ let gy = D(gw, bP)
1382+ let cj = if ((gn == 0))
12031383 then e
1204- else bs(fF, fE)
1205- let cy = D(cn, bG)
1206- let cx = fraction(cy, d, ca)
1207- let cl = G(cx, bF)
1208- let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
1209- let cI = dl._1
1210- let fB = dl._3
1211- let bW = dl._4
1212- let bY = dl._5
1213- let bV = dl._6
1214- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
1384+ else bA(gy, gx)
1385+ let cH = D(cw, bP)
1386+ let cG = fraction(cH, d, cj)
1387+ let cu = G(cG, bO)
1388+ let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
1389+ let cR = dI._1
1390+ let gu = dI._3
1391+ let cf = dI._4
1392+ let ch = dI._5
1393+ let ce = dI._6
1394+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
12151395 }
12161396
12171397
12181398
1219-@Callable(df)
1220-func evaluateGetREADONLY (fG,fH) = {
1221- let cA = bN("", fG, fH, this)
1222- let cg = cA._1
1223- let ch = cA._2
1224- let bW = cA._5
1225- let bY = cA._6
1226- let bV = cA._7
1227- let cb = cA._8
1228- let bU = parseIntValue(cA._9)
1229- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
1399+@Callable(dC)
1400+func evaluateGetREADONLY (gz,gA) = {
1401+ let cJ = bW("", gz, gA, this)
1402+ let cp = cJ._1
1403+ let cq = cJ._2
1404+ let cf = cJ._5
1405+ let ch = cJ._6
1406+ let ce = cJ._7
1407+ let ck = cJ._8
1408+ let cd = parseIntValue(cJ._9)
1409+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
12301410 }
12311411
12321412
1233-@Verifier(fI)
1234-func fJ () = {
1235- let fK = {
1236- let dq = ev()
1237- if ($isInstanceOf(dq, "ByteVector"))
1413+@Verifier(gB)
1414+func gC () = {
1415+ let gD = {
1416+ let dN = eQ()
1417+ if ($isInstanceOf(dN, "ByteVector"))
12381418 then {
1239- let ez = dq
1240- ez
1419+ let eU = dN
1420+ eU
12411421 }
1242- else if ($isInstanceOf(dq, "Unit"))
1243- then fI.senderPublicKey
1422+ else if ($isInstanceOf(dN, "Unit"))
1423+ then gB.senderPublicKey
12441424 else throw("Match error")
12451425 }
1246- let dq = fI
1247- if ($isInstanceOf(dq, "Order"))
1426+ let dN = gB
1427+ if ($isInstanceOf(dN, "Order"))
12481428 then {
1249- let cR = dq
1250- let fL = aG()
1251- let ar = cQ(cR)
1252- let as = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1253- let at = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
1254- if (if (if (ar)
1255- then as
1429+ let ds = dN
1430+ let gE = aO()
1431+ let aB = dr(ds)
1432+ let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1433+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
1434+ if (if (if (aB)
1435+ then aC
12561436 else false)
1257- then at
1437+ then aD
12581438 else false)
12591439 then true
1260- else aq(ar, as, at)
1440+ else aA(aB, aC, aD)
12611441 }
1262- else if ($isInstanceOf(dq, "SetScriptTransaction"))
1442+ else if ($isInstanceOf(dN, "SetScriptTransaction"))
12631443 then {
1264- let ew = dq
1265- let fM = blake2b256(value(ew.script))
1266- let fN = fromBase64String(value(getString(aA, ao())))
1267- let fO = scriptHash(this)
1268- if (if ((fN == fM))
1269- then (fO != fM)
1444+ let eR = dN
1445+ let gF = blake2b256(value(eR.script))
1446+ let gG = fromBase64String(value(getString(aL, ay())))
1447+ let gH = scriptHash(this)
1448+ if (if ((gG == gF))
1449+ then (gH != gF)
12701450 else false)
12711451 then true
1272- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1452+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
12731453 }
1274- else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
1454+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
12751455 }
12761456

github/deemru/w8io/026f985 
376.69 ms