tx · 8Gcr1AQyNGGr6UstxrYqZR3Uh9yX4Fqa3U1ENU7P9ScW

3N9KXr9JbnPwrN9oacmFjc3qB4tYrzvxWss:  -0.03500000 Waves

2022.12.16 09:58 [2362523] smart account 3N9KXr9JbnPwrN9oacmFjc3qB4tYrzvxWss > SELF 0.00000000 Waves

{ "type": 13, "id": "8Gcr1AQyNGGr6UstxrYqZR3Uh9yX4Fqa3U1ENU7P9ScW", "fee": 3500000, "feeAssetId": null, "timestamp": 1671173914653, "version": 1, "sender": "3N9KXr9JbnPwrN9oacmFjc3qB4tYrzvxWss", "senderPublicKey": "CuH6mrgac4GztriBQFELtAx7gw4diUcD94EVLt78E1kt", "proofs": [ "5MTEK6LEfr1tSZQZKkS49KuVFHk6ymdqpSXyLPZuueUjCwtsNd62VqACazLT6f8NtZHn1oH8aaWLWNsMhkLpHo3D" ], "script": "base64:BgKdLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNTg4MjI0Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA4MDEyMTAxMyIDa0xwIg0kdDAyMTQ4NDIxNTg0Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNjkyNDU2MiIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU2NjI0NzE1IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MzcyNDg5NiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjYzOTcyNjU2NCIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjg0NjUyODUxNSILdG90YWxBbW91bnQiDSR0MDI4NTE5Mjg3NDUiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDMzMjczMzM3MzUiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDM0Mjk3MzQzNjIiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzU1NDczNTY5OSIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNjI4NTM2NDgyIg0kdDAzNjQ4NTM2NTkzIg0kdDAzNjg5OTM3MDU2Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzNzk1MDM4MTAzIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM4NjAzMzg4NTAiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM4ODUzMzg5NjEiDSR0MDM5MjE4MzkzNzQiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDQwMjc2NDA0MjciDSR0MDQwOTIyNDExNjkiDSR0MDQxMTcyNDEyODAiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQyMjI4NDIzMTAiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQzMjYxNDMzNDIiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDQ0NjU0NDU0NiIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ1ODM4NDU5MTkiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0NzEwNjQ3MTcwIhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobwABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFIAUkBSwkAoAMBCQC9AgQFAUgJALYCAQUBSQUBZAUBSwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFRAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBagEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AAJhZQIHJXNfX2ZlZQACYWYJAGsDAAoFAWIAkE4AAmFnCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQJhZgACYWgJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWkJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWsAHgACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWoFAmFrAQJhbQACESVzX19mYWN0b3J5Q29uZmlnAQJhbgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW8BAmFwCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFwAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcgICX18FAmFzAghfX2NvbmZpZwECYXQBAmF1CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF1AQJhdgACDCVzX19zaHV0ZG93bgECYXcBAmF4CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXgBAmF5AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF6Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUEDAmFCAmFDAmFECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQgINIHNlbmRlclZhbGlkPQkApQMBBQJhQwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUQBAmFFAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFIAgJhRgJhRwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFGBQJhRwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhRgkAzAgCAgEuCQDMCAIFAmFHCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFJAQJhSgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAQJhSwECYUoJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhSgUDbmlsAgEgAAJhTAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUEdGhpcwkBAVIAAAJhTQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFFAgUCYUwFAmF6AQJhTgAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUwJAQJhdgAHAQJhTwAJANkEAQkBAmFFAgUCYUwJAQJhbgABAmFQAAQCYVEJAQJhRQIFBHRoaXMJAQJhYwAEAmFSCQECYUUCBQR0aGlzCQECYWQABAJhcwkBAmFIAgUCYUwJAQJhdAEFAmFSBAJhcgkBAmFIAgUCYUwJAQJhdAEFAmFRCQC1CQIJAQJhRQIFAmFMCQECYXECCQCkAwEFAmFyCQCkAwEFAmFzBQFqAQJhUwECYVQDCQAAAgUCYVQFAWkFBHVuaXQJANkEAQUCYVQBAmFVAQJhVAMJAAACBQJhVAUEdW5pdAUBaQkA2AQBCQEFdmFsdWUBBQJhVAECYVYBAmFXCQCZCgcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYVcFAW8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVwUBcAkA2QQBCQCRAwIFAmFXBQFxCQECYVMBCQCRAwIFAmFXBQFyCQECYVMBCQCRAwIFAmFXBQFzCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVcFAXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVwUBdQACYVgJAQJhVgEJAQJhUAAAAmFZBQJhWAACYVoIBQJhWQJfMQACYmEIBQJhWQJfMgACYmIIBQJhWQJfMwACYmMIBQJhWQJfNAACYmQIBQJhWQJfNQACYmUIBQJhWQJfNgACYmYIBQJhWQJfNwECYmcACQC1CQIJAQJhRQIFAmFMCQECYW0ABQFqAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJnAAUBQgIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwACYmkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZwAFAUMCGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MBAmJqCgJiawJibAJibQJibgJibwJicAJicQJicgJicwJidAkAuQkCCQDMCAICFCVkJWQlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgkAzAgCCQCkAwEFAmJzCQDMCAIJAKQDAQUCYnQFA25pbAUBagECYnUGAmJ2AmJ3AmJ4AmJuAmJxAmJyCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyBQNuaWwFAWoBAmJ5AQJiegMJAAACBQJiegIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYnoBAmJBAgJiQgJiQwkAvAIDBQJiQgUBZAUCYkMBAmJEAwJiQgJiQwFLCQC9AgQFAmJCBQFkBQJiQwUBSwECYkUEAmJGAmJHAmJIAmJJBAJiSgkBAUQCBQJiSAUCYkYEAmJLCQEBRAIFAmJJBQJiRwkBAmJBAgUCYksFAmJKAQJiTAMCYkgCYkkCYk0EAmJOCQECYVAABAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJiUQkBAmJFBAUCYk8FAmJQBQJiSAUCYkkEAmJDCQEBRAIFAmJIBQJiTwQCYkIJAQFEAgUCYkkFAmJQBAJiUgkBAUQCBQJiTQUBYgQCYlMJAQJiQQIFAmJDBQJiUgQCYlQJAQJiQQIFAmJCBQJiUgkAzAgCBQJiUQkAzAgCBQJiUwkAzAgCBQJiVAUDbmlsAQJiVQMCYkgCYkkCYk0EAmJWCQECYkwDBQJiSAUCYkkFAmJNCQDMCAIJAQFHAgkAkQMCBQJiVgAABQFiCQDMCAIJAQFHAgkAkQMCBQJiVgABBQFiCQDMCAIJAQFHAgkAkQMCBQJiVgACBQFiBQNuaWwBAmJXBAJiWAJiWQJiWgFaBAJiTgkBAmFQAAQCY2EJAJEDAgUCYk4FAXEEAmNiCQCRAwIFAmJOBQFyBAJjYwkAkQMCBQJiTgUBcwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCY2QJAJEDAgUCYk4FAXAEAmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY2EJAKwCAgkArAICAgZBc3NldCAFAmNhAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmNhBQJiWQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2YJAQJieQEFAmNiBAJjZwkBAUQCBQJjZgUCYkYEAmNoCQECYnkBBQJjYwQCY2kJAQFEAgUCY2gFAmJHBAJjagkBAmJBAgUCY2kFAmNnBAJjawkBAUcCBQJjagUBYgQCY2wJAQFEAgUCYloFAWIEAmNtCQEBRAIFAmNlBQFiBAJjbgkAvAIDBQJjZwUCY2wFAmNtBAJjbwkAvAIDBQJjaQUCY2wFAmNtBAJjcAkBAUoDBQJjbgUCYkYFBUZMT09SBAJjcQkBAUoDBQJjbwUCYkcFBUZMT09SBAJjcgMJAAACBQJiWAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCY3ADCQAAAgUCY2ICBVdBVkVTBQR1bml0CQDZBAEFAmNiCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmNxAwkAAAIFAmNjAgVXQVZFUwUEdW5pdAkA2QQBBQJjYwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAVoFAmJYCQECYnUGBQJjcAUCY3EFAmJaBQJjawUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjawUDbmlsCQCcCgoFAmNwBQJjcQUCY2IFAmNjBQJjZgUCY2gFAmNlBQJjagUCY2QFAmNyAQJjcwkCYlgCY3QCY3UCY3YCY3cCY3gBWgJjeQJjegQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmNBCQCRAwIFAmJOBQFyBAJjQgkAkQMCBQJiTgUBcwQCY0MJAJEDAgUCYk4FAXYEAmNECQCRAwIFAmJOBQF3BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJjZAkAkQMCBQJiTgUBcAQCY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2EJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2ECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjRQkA2AQBCQELdmFsdWVPckVsc2UCBQJjdgkA2QQBAgVXQVZFUwQCY0YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3gJANkEAQIFV0FWRVMDAwkBAiE9AgUCY0EFAmNFBgkBAiE9AgUCY0IFAmNGCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCY2YDBQJjeQkBAmJ5AQUCY0EJAGUCCQECYnkBBQJjQQUCY3UEAmNoAwUCY3kJAQJieQEFAmNCCQBlAgkBAmJ5AQUCY0IFAmN3BAJjRwkBAUQCBQJjdQUCYk8EAmNICQEBRAIFAmN3BQJiUAQCY0kJAQJiQQIFAmNIBQJjRwQCY2cJAQFEAgUCY2YFAmJPBAJjaQkBAUQCBQJjaAUCYlAEAmNKAwkAAAIFAmNlAAAEAmNqBQFlBAJjSwUBZQQCYlIJAHYGCQC5AgIFAmNHBQJjSAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiUgUBYgkBAUcCBQJjRwUCYk8JAQFHAgUCY0gFAmJQCQECYkECCQC3AgIFAmNpBQJjSAkAtwICBQJjZwUCY0cFAmNLBAJjagkBAmJBAgUCY2kFAmNnBAJjSwkAvAIDCQEBUQEJALgCAgUCY2oFAmNJBQFkBQJjagQCY0wJAQFEAgUCY3QFAWIDAwkBAiE9AgUCY2oFAWUJAL8CAgUCY0sFAmNMBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSwIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNMBAJjbQkBAUQCBQJjZQUBYgQCY00JAL0CBAUCY0cJAQJiRAMFAmNpBQJjZwUHQ0VJTElORwUBZAUHQ0VJTElORwQCY04JAL0CBAUCY0gFAWQJAQJiRAMFAmNpBQJjZwUFRkxPT1IFB0NFSUxJTkcEAmNPAwkAvwICBQJjTQUCY0gJAJQKAgUCY04FAmNICQCUCgIFAmNHBQJjTQQCY1AIBQJjTwJfMQQCY1EIBQJjTwJfMgQCYlIJAL0CBAUCY20FAmNRBQJjaQUFRkxPT1IJAJcKBQkBAUoDBQJiUgUBYgUFRkxPT1IJAQFKAwUCY1AFAmJPBQdDRUlMSU5HCQEBSgMFAmNRBQJiUAUHQ0VJTElORwUCY2oFAmNLBAJjUggFAmNKAl8xBAJjUwgFAmNKAl8yBAJjVAgFAmNKAl8zBAJjawkBAUcCCAUCY0oCXzQFAWIEAmNVCQEBRwIIBQJjSgJfNQUBYgMJAGcCAAAFAmNSCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjVgMJAQEhAQUCY3oAAAUCY1IEAmNXCQBlAgUCY3UFAmNTBAJjWAkAZQIFAmN3BQJjVAQCY1kJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQFaBQJiWAkBAmJqCgUCY1MFAmNUBQJjVgUCY2sFAmN0BQJjVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1cFAmNYBQNuaWwJAJ8KDQUCY1IFAmNWBQJjawUCY2YFAmNoBQJjZQUCY2EFAmNkBQJjWQUCY1cFAmNYBQJjdgUCY3gBAmNaAwJkYQJkYgJjZQQCZGMJALwCAwkAdgYJALkCAgUCZGEFAmRiAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2UDCQAAAgUCY2UFAWYFAWYFAmRjAQJkZAMCZGUCZGYCZGcEAmRoCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmMFAmRlBAJkaQkAuAICCQC2AgEJAQJieQEJAQJhVQEFAmJkBQJkZgQCZGoJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiYghxdWFudGl0eQUCZGcEAmRrCQECY1oDBQJkaAUCZGkFAmRqBQJkawECZGwDAmRtAmRuAmRnBAJkaAkAZAIJAQJieQEJAQJhVQEFAmJjBQJkbQQCZGkJAGQCCQECYnkBCQECYVUBBQJiZAUCZG4EAmRqCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmIIcXVhbnRpdHkFAmRnBAJkYwkBAmNaAwkAtgIBBQJkaAkAtgIBBQJkaQkAtgIBBQJkagQCZG8JAMwIAgkBDEludGVnZXJFbnRyeQIFAmFpBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWgJAKYDAQUCZGMFA25pbAkAlAoCBQJkbwUCZGMBAmRwAgJkcQJkYwMJAMACAgUCZGMFAmRxBgkBAmFJAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkcQkAzAgCCQCmAwEFAmRjBQNuaWwCASABAmRyAQJkcwQCZHQIBQJkcwZhbW91bnQEAmR1CQBuBAgFAmRzBmFtb3VudAgFAmRzBXByaWNlBQFiBQVGTE9PUgQCZHYDCQAAAggFAmRzCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmR0CQEBLQEFAmR1CQCUCgIJAQEtAQUCZHQFAmR1BAJkbQgFAmR2Al8xBAJkbggFAmR2Al8yAwMDCQECYU4ABgkAAAIFAmJhBQFtBgkAAAIFAmJhBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmRzCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmMGCQECIT0CCAgFAmRzCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiZAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmR3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFAmFoCQECYUsBAg9rTHAgaXMgcmVxdWlyZWQJAQJhSwECC2ludmFsaWQga0xwBAJkeAkBAmRsAwUCZG0FAmRuAAAEAmR5CAUCZHgCXzEEAmR6CAUCZHgCXzIEAmRBCQDAAgIFAmR6BQJkdwUCZEEBAmRCAQJkQwMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZEQJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAAEAmJZCQEFdmFsdWUBCAUCZEQHYXNzZXRJZAQCZEUIBQJkRAZhbW91bnQEAmNKCQECYlcECQDYBAEIBQJkQw10cmFuc2FjdGlvbklkCQDYBAEFAmJZBQJkRQgFAmRDBmNhbGxlcgQCY3AIBQJjSgJfMQQCY3EIBQJjSgJfMgQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjcggFAmNKA18xMAMDCQECYU4ABgkAAAIFAmNkBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAkAlwoFBQJjcAUCY3EFAmRFBQJiWQUCY3IBAmRGAwJkQwJjdAJjegMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkRwkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZEgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEEAmRJCQECY3MJCQDYBAEIBQJkQw10cmFuc2FjdGlvbklkBQJjdAgFAmRHBmFtb3VudAgFAmRHB2Fzc2V0SWQIBQJkSAZhbW91bnQIBQJkSAdhc3NldElkCQClCAEIBQJkQwZjYWxsZXIHBQJjegQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmRJAl84AwMDCQECYU4ABgkAAAIFAmNkBQFsBgkAAAIFAmNkBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAUCZEkBAmRKAQJkSwQCZEwJAPwHBAUCYUwCBGVtaXQJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmRMBQJkTAQCZE0EAmROBQJkTAMJAAECBQJkTgIHQWRkcmVzcwQCZE8FAmROCQD8BwQFAmRPAgRlbWl0CQDMCAIFAmRLBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkTQUCZE0FAmRLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkUAECZEsEAmRRCQBrAwUCZEsFAmFnBQFiCQCUCgIJAGUCBQJkSwUCZFEFAmRRAQJkUgQCZFMCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCZFYJAQJieQEJAQJhVQEFAmJjBAJkVwkBAmJ5AQkBAmFVAQUCYmQEAmRYAwkAAAIFAmRUBQJiYwYDCQAAAgUCZFQFAmJkBwkBAmFJAQINaW52YWxpZCBhc3NldAQCZFkDBQJkVQkAlAoCBQJkVgUCZFcDBQJkWAkAlAoCCQBlAgUCZFYFAmRTBQJkVwkAlAoCBQJkVgkAZQIFAmRXBQJkUwQCZFoIBQJkWQJfMQQCZWEIBQJkWQJfMgQCZWIDBQJkWAkAlAoCBQJkUwAACQCUCgIAAAUCZFMEAmVjCAUCZWICXzEEAmVkCAUCZWICXzIEAmR0CAkBAmRQAQUCZWMCXzEEAmR1CAkBAmRQAQUCZWQCXzEEAmVlCQECZFABBQJkUwQCZWYIBQJlZQJfMQQCZFEIBQJlZQJfMgQCZWcJAGQCBQJkWgUCZHQEAmVoCQBkAgUCZWEFAmR1BAJlaQkBAmJBAgkBAUQCBQJlaAUCYmYJAQFEAgUCZWcFAmJlBAJlagkBAUcCBQJlaQUBYgQCZWsDBQJkWAUCZFoFAmVhBAJlbAkAtgIBBQJlawQCZW0JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiYgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiYgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVuAwkAvwICBQJlbQUBZgYJAQJhSQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZW4FAmVuBAJlbwkAtgIBBQJlZgQCZXAJAJYDAQkAzAgCAAAJAMwIAgkBAUoDCQC8AgMFAmVtCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZW8FAWQFAmVsABIAEgUERE9XTgUBZAUBZAUBYgUFRkxPT1IFA25pbAQCY1kDBQJkVQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYmoKBQJlYwUCZWQFAmVwBQJlagAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVxCQECYkECCQEBRAIFAmVhBQJiZgkBAUQCBQJkWgUCYmUEAmVyCQEBRwIFAmVxBQFiBAJlcwQCZXQDBQJkWAkAlAoCBQJlYwUCZFoJAJQKAgUCZWQFAmVhBAJkSwgFAmV0Al8xBAJldQgFAmV0Al8yBAJldgkAoAMBCQC8AgMFAmVtCQC2AgEJAGkCBQJkSwACCQC2AgEFAmV1CQBrAwkAZQIFAmVwBQJldgUBYgUCZXYJAJcKBQUCZXAFAmNZBQJkUQUCZXMFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldwUCZXgCZWYCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCYk4JAQJhUAAEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmV5CQDMCAIDCQAAAgUCZFQFAmJiBgkBAmFJAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmV5BQJleQQCZXoDCQAAAgUCZXgFAmJjBgMJAAACBQJleAUCYmQHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJlQQMFAmV6CQC2AgEJAQJieQEJAQJhVQEFAmJjCQC2AgEJAQJieQEJAQJhVQEFAmJkBAJlQgMFAmV6BQJiTwUCYlAEAmVDCQECYnkBCQECYVUBBQJiYwQCZUQJAQJieQEJAQJhVQEFAmJkBAJlRQMFAmV6BQJlQwUCZUQEAmVGCQC2AgEFAmVFBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUcJALYCAQUCZWYEAmVICQCWAwEJAMwIAgAACQDMCAIJAQFKAwkAvAIDBQJlQQkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZUcFAWQFAmVtABIFAWgAAAASBQRET1dOBQFkBQJlQgUFRkxPT1IFA25pbAQCZUkJAQJkUAEFAmVIBAJlSggFAmVJAl8xBAJkUQgFAmVJAl8yBAJlSwMFAmV6CQCWCgQFAmVKAAAJAGUCBQJlQwUCZUgFAmVECQCWCgQAAAUCZUoFAmVDCQBlAgUCZUQFAmVIBAJlTAgFAmVLAl8xBAJlTQgFAmVLAl8yBAJlTggFAmVLAl8zBAJlTwgFAmVLAl80BAJlaQkBAmJBAgkBAUQCBQJlTwUCYmYJAQFEAgUCZU4FAmJlBAJlagkBAUcCBQJlaQUBYgQCY1kDBQJkVQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQkBBXZhbHVlAQUBWgkA2AQBCQEFdmFsdWUBBQJhYQkBAmJ1BgUCZUwFAmVNBQJlZgUCZWoFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFA25pbAQCZXEJAQJiQQIJAQFEAgUCZUQFAmJmCQEBRAIFAmVDBQJiZQQCZXIJAQFHAgUCZXEFAWIEAmVzBAJlUAkAaAIJAKADAQkAvAIDBQJlQQUCZUcFAmVtAAIJAGsDCQBlAgUCZUoFAmVQBQFiBQJlUAkAlwoFBQJlSgUCY1kFAmRRBQJlcwUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVRAAQCZE4JAKIIAQkBAVMAAwkAAQIFAmROAgZTdHJpbmcEAmVSBQJkTgkA2QQBBQJlUgMJAAECBQJkTgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUwAEAmROCQCiCAEJAQFUAAMJAAECBQJkTgIGU3RyaW5nBAJlUgUCZE4JANkEAQUCZVIDCQABAgUCZE4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVQBAmRDBAJkTgkBAmVRAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVUFAmROCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQUCZVUDCQABAgUCZE4CBFVuaXQJAAACCAUCZEMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmVWAQJkQwQCZVcJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZE4JAQJlUQADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVVBQJkTgMJAAACCAUCZEMPY2FsbGVyUHVibGljS2V5BQJlVQYFAmVXAwkAAQIFAmROAgRVbml0AwkAAAIIBQJkQwZjYWxsZXIFBHRoaXMGBQJlVwkAAgECC01hdGNoIGVycm9yGwJkQwEKc2V0TWFuYWdlcgECZVgEAmVZCQECZVYBBQJkQwMJAAACBQJlWQUCZVkEAmVaCQDZBAEFAmVYAwkAAAIFAmVaBQJlWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmVYBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBDmNvbmZpcm1NYW5hZ2VyAAQCZmEJAQJlUwAEAmZiAwkBCWlzRGVmaW5lZAEFAmZhBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYgUCZmIEAmZjAwkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmZhBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYwUCZmMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmZhCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNwdXQCAmN0AmZkAwkAZgIAAAUCY3QJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJjdAYEAmNWCAUCZEkCXzIEAmNhCAUCZEkCXzcEAmNyCAUCZEkCXzkEAmNXCAUCZEkDXzEwBAJjWAgFAmRJA18xMQQCZmUIBQJkSQNfMTIEAmZmCAUCZEkDXzEzBAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZmcDCQBmAgUCY1cAAAkA/AcEBQJiaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZlBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAMJAGYCBQJjWAAACQD8BwQFAmJpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmYFAmNYBQNuaWwFA25pbAMJAAACBQJmaAUCZmgEAmZpAwUCZmQEAmZqCQD8BwQFAmJoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCY1YFA25pbAMJAAACBQJmagUCZmoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJjVgUCY2EFA25pbAQCZmsJAQJkbAMAAAAAAAADCQAAAgUCZmsFAmZrBAJkYwgFAmZrAl8yBAJmbAgFAmZrAl8xBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCCQDOCAIFAmNyBQJmaQUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCnB1dEZvckZyZWUBAmZuAwkAZgIAAAUCZm4JAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJmbgcEAmNyCAUCZEkCXzkEAmRHCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABmFtb3VudAQCZEgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEGYW1vdW50BAJkawkBAmRkAwUCZEcFAmRICQC2AgEAAAMJAAACBQJkawUCZGsEAmZvCQECZGwDAAAAAAAABAJmbAgFAmZvAl8xBAJkYwgFAmZvAl8yBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAzggCBQJjcgUCZmwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCXB1dE9uZVRrbgICZnACZnEEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnQDAwMJAQJhTgAGCQAAAgUCYmEFAWwGCQAAAgUCYmEFAW4GBQJmcgQCZXkJAMwIAgMDCQEBIQEFAmZ0BgkBAmVUAQUCZEMGCQECYUkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJmdQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZFQIBQJmdQdhc3NldElkBAJkUwgFAmZ1BmFtb3VudAQCZGsDCQAAAgUCZFQFAmJjCQECZGQDCQC2AgEFAmRTCQC2AgEAAAkAtgIBAAADCQAAAgUCZFQFAmJkCQECZGQDCQC2AgEAAAkAtgIBBQJkUwkAtgIBAAAJAQJhSQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJmdgkBAmRSBAUCZFMFAmRUBQFaBQJhYQMJAAACBQJmdgUCZnYEAmRYCAUCZnYCXzUEAmZ3CAUCZnYCXzQEAmRRCAUCZnYCXzMEAmNZCAUCZnYCXzIEAmZ4CAUCZnYCXzEEAmZ5AwMJAGYCBQJmcAAACQBmAgUCZnAFAmZ4BwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcAUDbmlsAgAFAmZ4BAJkTAkBAmRKAQUCZnkDCQAAAgUCZEwFAmRMBAJmaQMFAmZxBAJmegkA/AcEBQJiaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZ5BQNuaWwDCQAAAgUCZnoFAmZ6BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRDBmNhbGxlcgUCZnkFAmJiBQNuaWwEAmZBAwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJkVAUDbmlsBQNuaWwEAmZCAwkAAAIFBHRoaXMFAmFNCQCUCgIAAAAAAwUCZFgJAJQKAgkBAS0BBQJkUQAACQCUCgIAAAkBAS0BBQJkUQQCZG0IBQJmQgJfMQQCZG4IBQJmQgJfMgQCZkMJAQJkbAMFAmRtBQJkbgAABAJmbAgFAmZDAl8xBAJkYwgFAmZDAl8yBAJkdwkBBXZhbHVlAQkAoggBBQJhaAQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZpBQJmQQUCZmwFAmZ5CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARFwdXRPbmVUa25SRUFET05MWQICZFQCZFMEAmZECQECZFIEBQJkUwkBAmFTAQUCZFQFBHVuaXQFBHVuaXQEAmZ4CAUCZkQCXzEEAmNZCAUCZkQCXzIEAmRRCAUCZkQCXzMEAmZ3CAUCZkQCXzQEAmRYCAUCZkQCXzUJAJQKAgUDbmlsCQCVCgMFAmZ4BQJkUQUCZncCZEMBCWdldE9uZVRrbgICZkUCZnAEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkYDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZyBAJleQkAzAgCAwMJAQEhAQUCZkYGCQECZVQBBQJkQwYJAQJhSQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRDCHBheW1lbnRzAAEGCQECYUkBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJleQUCZXkEAmV4CQECYVMBBQJmRQQCZnUJAJEDAggFAmRDCHBheW1lbnRzAAAEAmRUCAUCZnUHYXNzZXRJZAQCZWYIBQJmdQZhbW91bnQEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZWYEAVoIBQJkQwZjYWxsZXIEAmFhCAUCZEMNdHJhbnNhY3Rpb25JZAQCZkcJAQJldwUFAmV4BQJlZgUCZFQFAVoFAmFhAwkAAAIFAmZHBQJmRwQCZXoIBQJmRwJfNQQCZncIBQJmRwJfNAQCZFEIBQJmRwJfMwQCY1kIBQJmRwJfMgQCZkgIBQJmRwJfMQQCZEsDAwkAZgIFAmZwAAAJAGYCBQJmcAUCZkgHCQECYUkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUCZkgEAmZJCQD8BwQFAmFMAgRidXJuCQDMCAIFAmVmBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRUBQJlZgUDbmlsAwkAAAIFAmZJBQJmSQQCZkoJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCZEsFAmV4BQNuaWwEAmZBAwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJleAUDbmlsBQNuaWwEAmZLBAJmTAMJAAACBQR0aGlzBQJhTQAABQJkUQMFAmV6CQCUCgIJAQEtAQkAZAIFAmRLBQJmTAAACQCUCgIAAAkBAS0BCQBkAgUCZEsFAmZMBAJkbQgFAmZLAl8xBAJkbggFAmZLAl8yBAJmTQkBAmRsAwUCZG0FAmRuAAAEAmZsCAUCZk0CXzEEAmRjCAUCZk0CXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQCUCgIJAM4IAgkAzggCCQDOCAIFAmNZBQJmSgUCZkEFAmZsBQJkSwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwERZ2V0T25lVGtuUkVBRE9OTFkCAmV4AmVmBAJmTgkBAmV3BQkBAmFTAQUCZXgFAmVmBQJiYgUEdW5pdAUEdW5pdAQCZkgIBQJmTgJfMQQCY1kIBQJmTgJfMgQCZFEIBQJmTgJfMwQCZncIBQJmTgJfNAQCZXoIBQJmTgJfNQkAlAoCBQNuaWwJAJUKAwUCZkgFAmRRBQJmdwJkQwETdW5zdGFrZUFuZEdldE9uZVRrbgMCZk8CZkUCZnAEAmZyCgACZnMJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcwIHQm9vbGVhbgUCZnMJAAIBCQCsAgIJAAMBBQJmcwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkYDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZyBAJleQkAzAgCAwMJAQEhAQUCZkYGCQECZVQBBQJkQwYJAQJhSQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRDCHBheW1lbnRzAAAGCQECYUkBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJleQUCZXkEAmV4CQECYVMBBQJmRQQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZlAJAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiYgkAzAgCBQJmTwUDbmlsBQNuaWwDCQAAAgUCZlAFAmZQBAJmUQkBAmV3BQUCZXgFAmZPBQJiYgUBWgUCYWEDCQAAAgUCZlEFAmZRBAJleggFAmZRAl81BAJmdwgFAmZRAl80BAJkUQgFAmZRAl8zBAJjWQgFAmZRAl8yBAJmSAgFAmZRAl8xBAJkSwMDCQBmAgUCZnAAAAkAZgIFAmZwBQJmSAcJAQJhSQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZnAFA25pbAIABQJmSAQCZkkJAPwHBAUCYUwCBGJ1cm4JAMwIAgUCZk8FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZPBQNuaWwDCQAAAgUCZkkFAmZJBAJmSgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJkSwUCZXgFA25pbAQCZkEDCQBmAgUCZFEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTQUCZFEFAmV4BQNuaWwFA25pbAQCZlIEAmZMAwkAAAIFBHRoaXMFAmFNAAAFAmRRAwUCZXoJAJQKAgkBAS0BCQBkAgUCZEsFAmZMAAAJAJQKAgAACQEBLQEJAGQCBQJkSwUCZkwEAmRtCAUCZlICXzEEAmRuCAUCZlICXzIEAmZTCQECZGwDBQJkbQUCZG4AAAQCZmwIBQJmUwJfMQQCZGMIBQJmUwJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZKBQJmQQUCZmwFAmRLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNnZXQABAJjSgkBAmRCAQUCZEMEAmZUCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZEUEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZVBQJmVQQCZlYJAQJkbAMJAQEtAQUCZlQJAQEtAQUCY3EAAAQCZmwIBQJmVgJfMQQCZGMIBQJmVgJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQlnZXROb0xlc3MCAmZXAmZYBAJjSgkBAmRCAQUCZEMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUDCQBmAgUCZlcFAmNwCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjcAIDIDwgCQCkAwEFAmZXAwkAZgIFAmZYBQJjcQkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNxAgMgPCAJAKQDAQUCZlgEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZEUEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZVBQJmVQQCZlkJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmwIBQJmWQJfMQQCZGMIBQJmWQJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQ11bnN0YWtlQW5kR2V0AQJkSwQCZloDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmWgUCZloEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZlAJAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJjYQkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZlAFAmZQBAJjSgkBAmJXBAkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAkA2AQBBQJjYQUCZEsIBQJkQwZjYWxsZXIEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY3IIBQJjSgNfMTAEAmdhAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBgMJAAACBQJnYQUCZ2EEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNhBQJkSwUDbmlsAwkAAAIFAmZVBQJmVQQCZ2IJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmwIBQJnYgJfMQQCZGMIBQJnYgJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJmTwJnYwJmWAQCZkYDCQECYU4ABgkAAAIFAmJhBQFuBAJleQkAzAgCAwkBASEBBQJmRgYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmZQCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmIJAMwIAgUCZk8FA25pbAUDbmlsAwkAAAIFAmZQBQJmUAQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYmIFAmZPCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjcggFAmNKA18xMAQCZ2QJAMwIAgMJAGcCBQJjcAUCZ2MGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ2MFA25pbAIACQDMCAIDCQBnAgUCY3EFAmZYBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlgFA25pbAIABQNuaWwDCQAAAgUCZ2QFAmdkBAJmVQkA/AcEBQJhTAIEYnVybgkAzAgCBQJmTwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZk8FA25pbAMJAAACBQJmVQUCZlUEAmdlCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZsCAUCZ2UCXzEEAmRjCAUCZ2UCXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEIYWN0aXZhdGUCAmdmAmdnAwkBAiE9AgkApQgBCAUCZEMGY2FsbGVyCQClCAEFAmFMCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAAUCZ2YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAAUCZ2cFA25pbAIHc3VjY2VzcwJkQwEKcmVmcmVzaEtMcAAEAmdoCQELdmFsdWVPckVsc2UCCQCfCAEFAmFpAAAEAmdpAwkAZwIJAGUCBQZoZWlnaHQFAmdoBQJhbAUEdW5pdAkBAmFJAQkAuQkCCQDMCAIJAKQDAQUCYWwJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdpBQJnaQQCZHcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFoAgEwCQECYUsBAgtpbnZhbGlkIGtMcAQCZ2oJAQJkbAMAAAAAAAAEAmdrCAUCZ2oCXzEEAmRjCAUCZ2oCXzIEAmRvAwkBAiE9AgUCZHcFAmRjBQJnawkBAmFJAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmRvCQCmAwEFAmRjCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhUAACZEMBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJ6CQCUCgIFA25pbAkBAmJ5AQUCYnoCZEMBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJIAmJJAmJNBAJiVgkBAmJMAwUCYkgFAmJJBQJiTQkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmJWAAAJAMwIAgkApgMBCQCRAwIFAmJWAAEJAMwIAgkApgMBCQCRAwIFAmJWAAIFA25pbAJkQwEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmRDARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFIAUkJAJQKAgUDbmlsCQEBRwIJAKcDAQUBSAUBSQJkQwEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiQgJiQwkAlAoCBQNuaWwJAKYDAQkBAmJBAgkApwMBBQJiQgkApwMBBQJiQwJkQwEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmJYAmN0AmN1AmN2AmN3AmN4AVoCY3kCY3oJAJQKAgUDbmlsCQECY3MJBQJiWAUCY3QFAmN1BQJjdgUCY3cFAmN4BQFaBQJjeQUCY3oCZEMBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJiWAJiWQJiWgFaBAJjSgkBAmJXBAUCYlgFAmJZBQJiWgkBEUBleHRyTmF0aXZlKDEwNjIpAQUBWgkAlAoCBQNuaWwJAJwKCggFAmNKAl8xCAUCY0oCXzIIBQJjSgJfMwgFAmNKAl80CAUCY0oCXzUIBQJjSgJfNggFAmNKAl83CQCmAwEIBQJjSgJfOAgFAmNKAl85CAUCY0oDXzEwAmRDAQ1zdGF0c1JFQURPTkxZAAQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmdsCQCRAwIFAmJOBQFyBAJnbQkAkQMCBQJiTgUBcwQCY0MJAJEDAgUCYk4FAXYEAmNECQCRAwIFAmJOBQF3BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdvCQECYnkBBQJnbAQCZ3AJAQJieQEFAmdtBAJncQMJAAACBQJnbgAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJiTAMFAmdvBQJncAUCZ24EAmNrAAAEAmdyCQEBRwIJAJEDAgUCZ3EAAQUBYgQCZ3MJAQFHAgkAkQMCBQJncQACBQFiBAJndAkBBXZhbHVlAQkAmggCBQJhTAkBAmF3AQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZ28JAMwIAgkApAMBBQJncAkAzAgCCQCkAwEFAmduCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJncgkAzAgCCQCkAwEFAmdzCQDMCAIJAKQDAQUCZ3QFA25pbAUBagJkQwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN1BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmdvCQECYnkBBQJjQQQCZ3AJAQJieQEFAmNCBAJiSgkBAUQCBQJnbwUCYk8EAmJLCQEBRAIFAmdwBQJiUAQCY2oDCQAAAgUCZ24AAAUBZQkBAmJBAgUCYksFAmJKBAJjRwkBAUQCBQJjdQUCYk8EAmNICQC8AgMFAmNHBQJjagUBZAQCY3cJAQFHAgUCY0gFAmJQBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndQgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmN3BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd2CQECYnkBBQJjQQQCZ3cJAQJieQEFAmNCBAJneAkBAUQCBQJndgUCYk8EAmd5CQEBRAIFAmd3BQJiUAQCY2oDCQAAAgUCZ24AAAUBZQkBAmJBAgUCZ3kFAmd4BAJjSAkBAUQCBQJjdwUCYlAEAmNHCQC8AgMFAmNIBQFkBQJjagQCY3UJAQFHAgUCY0cFAmJPBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndQgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmd6AmdBBAJjSgkBAmJXBAIABQJnegUCZ0EFBHRoaXMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNmCAUCY0oCXzUEAmNoCAUCY0oCXzYEAmNlCAUCY0oCXzcEAmNrCAUCY0oCXzgEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNwCQDMCAIJAKQDAQUCY3EJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgkApgMBBQJjawkAzAgCCQCkAwEFAmNkBQNuaWwFAWoBAmdCAQJnQwAEAmdEBAJkTgkBAmVRAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVUFAmROBQJlVQMJAAECBQJkTgIEVW5pdAgFAmdCD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkTgUCZ0IDCQABAgUCZE4CBU9yZGVyBAJkcwUCZE4EAmdFCQECYU8ABAJhQgkBAmRyAQUCZHMEAmFDCQD0AwMIBQJkcwlib2R5Qnl0ZXMJAJEDAggFAmRzBnByb29mcwAACAUCZHMPc2VuZGVyUHVibGljS2V5BAJhRAkA9AMDCAUCZHMJYm9keUJ5dGVzCQCRAwIIBQJkcwZwcm9vZnMAAQUCZ0UDAwMFAmFCBQJhQwcFAmFEBwYJAQJhQQMFAmFCBQJhQwUCYUQDCQABAgUCZE4CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlUgUCZE4EAmdGCQD2AwEJAQV2YWx1ZQEIBQJlUgZzY3JpcHQEAmdHCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUwJAQJheQAEAmdICQDxBwEFBHRoaXMDAwkAAAIFAmdHBQJnRgkBAiE9AgUCZ0gFAmdGBwYJAPQDAwgFAmdCCWJvZHlCeXRlcwkAkQMCCAUCZ0IGcHJvb2ZzAAAFAmdECQD0AwMIBQJnQglib2R5Qnl0ZXMJAJEDAggFAmdCBnByb29mcwAABQJnRE1P6gM=", "chainId": 84, "height": 2362523, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8dnW4ztARBTtRJVJCEjSDTqsVd8ondzy5SS4oiSA4K3r Next: EfXSUGbcwgUyirFw665ArpTENB1vhzsr7ESpq9bzr4i3 Diff:
OldNewDifferences
288288 let cm = D(ce, b)
289289 let cn = fraction(cg, cl, cm)
290290 let co = fraction(ci, cl, cm)
291- let cp = G(cn, bF)
292- let cq = G(co, bG)
291+ let cp = J(cn, bF, FLOOR)
292+ let cq = J(co, bG, FLOOR)
293293 let cr = if ((bX == ""))
294294 then nil
295295 else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
544544 if ((en == en))
545545 then {
546546 let eo = toBigInt(ef)
547- let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
547+ let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
548548 let cY = if (dU)
549549 then nil
550550 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))]
567567
568568 func ew (ex,ef,dT,Z,aa) = {
569569 let dU = (aa == unit)
570+ let bN = aP()
571+ let bO = parseIntValue(bN[t])
572+ let bP = parseIntValue(bN[u])
570573 let ey = [if ((dT == bb))
571574 then true
572575 else aI("invalid lp asset")]
580583 let eA = if (ez)
581584 then toBigInt(by(aU(bc)))
582585 else toBigInt(by(aU(bd)))
583- let eB = by(aU(bc))
584- let eC = by(aU(bd))
585- let eD = if (ez)
586- then eB
587- else eC
588- let eE = toBigInt(eD)
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)
589595 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
590- let eF = toBigInt(ef)
591- let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592- let eH = dP(eG)
593- let eI = eH._1
594- let dQ = eH._2
595- let eJ = if (ez)
596- then $Tuple4(eI, 0, (eB - eG), eC)
597- else $Tuple4(0, eI, eB, (eC - eG))
598- let eK = eJ._1
599- let eL = eJ._2
600- let eM = eJ._3
601- let eN = eJ._4
602- let ei = bA(D(eN, bf), D(eM, be))
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))
603609 let ej = G(ei, b)
604610 let cY = if (dU)
605611 then nil
606- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607- let eq = bA(D(eC, bf), D(eB, be))
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))
608614 let er = G(eq, b)
609615 let es = {
610- let eO = (toInt(fraction(eA, eF, em)) * 2)
611- fraction((eI - eO), b, eO)
616+ let eP = (toInt(fraction(eA, eG, em)) * 2)
617+ fraction((eJ - eP), b, eP)
612618 }
613- $Tuple5(eI, cY, dQ, es, ez)
619+ $Tuple5(eJ, cY, dQ, es, ez)
614620 }
615621 else throw("Strict value is not equal to itself.")
616622 }
617623
618624
619-func eP () = {
625+func eQ () = {
620626 let dN = getString(S())
621627 if ($isInstanceOf(dN, "String"))
622628 then {
623- let eQ = dN
624- fromBase58String(eQ)
629+ let eR = dN
630+ fromBase58String(eR)
625631 }
626632 else if ($isInstanceOf(dN, "Unit"))
627633 then unit
629635 }
630636
631637
632-func eR () = {
638+func eS () = {
633639 let dN = getString(T())
634640 if ($isInstanceOf(dN, "String"))
635641 then {
636- let eQ = dN
637- fromBase58String(eQ)
642+ let eR = dN
643+ fromBase58String(eR)
638644 }
639645 else if ($isInstanceOf(dN, "Unit"))
640646 then unit
642648 }
643649
644650
645-func eS (dC) = {
646- let dN = eP()
651+func eT (dC) = {
652+ let dN = eQ()
647653 if ($isInstanceOf(dN, "ByteVector"))
648654 then {
649- let eT = dN
650- (dC.callerPublicKey == eT)
655+ let eU = dN
656+ (dC.callerPublicKey == eU)
651657 }
652658 else if ($isInstanceOf(dN, "Unit"))
653659 then (dC.caller == this)
655661 }
656662
657663
658-func eU (dC) = {
659- let eV = throw("Permission denied")
660- let dN = eP()
664+func eV (dC) = {
665+ let eW = throw("Permission denied")
666+ let dN = eQ()
661667 if ($isInstanceOf(dN, "ByteVector"))
662668 then {
663- let eT = dN
664- if ((dC.callerPublicKey == eT))
669+ let eU = dN
670+ if ((dC.callerPublicKey == eU))
665671 then true
666- else eV
672+ else eW
667673 }
668674 else if ($isInstanceOf(dN, "Unit"))
669675 then if ((dC.caller == this))
670676 then true
671- else eV
677+ else eW
672678 else throw("Match error")
673679 }
674680
675681
676682 @Callable(dC)
677-func setManager (eW) = {
678- let eX = eU(dC)
679- if ((eX == eX))
683+func setManager (eX) = {
684+ let eY = eV(dC)
685+ if ((eY == eY))
680686 then {
681- let eY = fromBase58String(eW)
682- if ((eY == eY))
683- then [StringEntry(T(), eW)]
687+ let eZ = fromBase58String(eX)
688+ if ((eZ == eZ))
689+ then [StringEntry(T(), eX)]
684690 else throw("Strict value is not equal to itself.")
685691 }
686692 else throw("Strict value is not equal to itself.")
690696
691697 @Callable(dC)
692698 func confirmManager () = {
693- let eZ = eR()
694- let fa = if (isDefined(eZ))
699+ let fa = eS()
700+ let fb = if (isDefined(fa))
695701 then true
696702 else throw("No pending manager")
697- if ((fa == fa))
703+ if ((fb == fb))
698704 then {
699- let fb = if ((dC.callerPublicKey == value(eZ)))
705+ let fc = if ((dC.callerPublicKey == value(fa)))
700706 then true
701707 else throw("You are not pending manager")
702- if ((fb == fb))
703- then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
708+ if ((fc == fc))
709+ then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
704710 else throw("Strict value is not equal to itself.")
705711 }
706712 else throw("Strict value is not equal to itself.")
709715
710716
711717 @Callable(dC)
712-func put (ct,fc) = if ((0 > ct))
718+func put (ct,fd) = if ((0 > ct))
713719 then throw("Invalid slippageTolerance passed")
714720 else {
715721 let dI = dF(dC, ct, true)
718724 let cr = dI._9
719725 let cW = dI._10
720726 let cX = dI._11
721- let fd = dI._12
722- let fe = dI._13
727+ let fe = dI._12
728+ let ff = dI._13
723729 let dG = toBigInt(value(dC.payments[0]).amount)
724730 let dH = toBigInt(value(dC.payments[1]).amount)
725731 let dk = dd(dG, dH, toBigInt(0))
739745 }
740746 if ((dM == dM))
741747 then {
742- let ff = if ((cW > 0))
743- then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
748+ let fg = if ((cW > 0))
749+ then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
744750 else nil
745- if ((ff == ff))
751+ if ((fg == fg))
746752 then {
747- let fg = if ((cX > 0))
748- then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
753+ let fh = if ((cX > 0))
754+ then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
749755 else nil
750- if ((fg == fg))
756+ if ((fh == fh))
751757 then {
752- let fh = if (fc)
758+ let fi = if (fd)
753759 then {
754- let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
755- if ((fi == fi))
760+ let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761+ if ((fj == fj))
756762 then nil
757763 else throw("Strict value is not equal to itself.")
758764 }
759765 else [ScriptTransfer(dC.caller, cV, ca)]
760- let fj = dl(0, 0, 0)
761- if ((fj == fj))
766+ let fk = dl(0, 0, 0)
767+ if ((fk == fk))
762768 then {
763- let dc = fj._2
764- let fk = fj._1
765- let fl = dp(dk, dc)
766- if ((fl == fl))
767- then ((cr ++ fh) ++ fk)
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)
768774 else throw("Strict value is not equal to itself.")
769775 }
770776 else throw("Strict value is not equal to itself.")
783789
784790
785791 @Callable(dC)
786-func putForFree (fm) = if ((0 > fm))
792+func putForFree (fn) = if ((0 > fn))
787793 then throw("Invalid value passed")
788794 else {
789- let dI = dF(dC, fm, false)
795+ let dI = dF(dC, fn, false)
790796 let cr = dI._9
791797 let dG = toBigInt(value(dC.payments[0]).amount)
792798 let dH = toBigInt(value(dC.payments[1]).amount)
793799 let dk = dd(dG, dH, toBigInt(0))
794800 if ((dk == dk))
795801 then {
796- let fn = dl(0, 0, 0)
797- let fk = fn._1
798- let dc = fn._2
799- let fl = dp(dk, dc)
800- if ((fl == fl))
801- then (cr ++ fk)
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)
802808 else throw("Strict value is not equal to itself.")
803809 }
804810 else throw("Strict value is not equal to itself.")
807813
808814
809815 @Callable(dC)
810-func putOneTkn (fo,fp) = {
811- let fq = {
812- let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
813- if ($isInstanceOf(fr, "Boolean"))
814- then fr
815- else throw(($getType(fr) + " couldn't be cast to Boolean"))
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"))
816822 }
817- let fs = if (if (if (aN())
823+ let ft = if (if (if (aN())
818824 then true
819825 else (ba == l))
820826 then true
821827 else (ba == n))
822828 then true
823- else fq
824- let ey = [if (if (!(fs))
829+ else fr
830+ let ey = [if (if (!(ft))
825831 then true
826- else eS(dC))
832+ else eT(dC))
827833 then true
828834 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
829835 then true
830836 else aI("exactly 1 payment are expected")]
831837 if ((ey == ey))
832838 then {
833- let ft = dC.payments[0]
834- let dT = ft.assetId
835- let dS = ft.amount
839+ let fu = dC.payments[0]
840+ let dT = fu.assetId
841+ let dS = fu.amount
836842 let dk = if ((dT == bc))
837843 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
838844 else if ((dT == bd))
840846 else aI("payment asset is not supported")
841847 let Z = dC.caller
842848 let aa = dC.transactionId
843- let fu = dR(dS, dT, Z, aa)
844- if ((fu == fu))
849+ let fv = dR(dS, dT, Z, aa)
850+ if ((fv == fv))
845851 then {
846- let dX = fu._5
847- let fv = fu._4
848- let dQ = fu._3
849- let cY = fu._2
850- let fw = fu._1
851- let fx = if (if ((fo > 0))
852- then (fo > fw)
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)
853859 else false)
854- then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
855- else fw
856- let dL = dJ(fx)
860+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
861+ else fx
862+ let dL = dJ(fy)
857863 if ((dL == dL))
858864 then {
859- let fh = if (fp)
865+ let fi = if (fq)
860866 then {
861- let fy = invoke(bh, "stake", nil, [AttachedPayment(bb, fx)])
862- if ((fy == fy))
867+ let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
868+ if ((fz == fz))
863869 then nil
864870 else throw("Strict value is not equal to itself.")
865871 }
866- else [ScriptTransfer(dC.caller, fx, bb)]
867- let fz = if ((dQ > 0))
872+ else [ScriptTransfer(dC.caller, fy, bb)]
873+ let fA = if ((dQ > 0))
868874 then [ScriptTransfer(aM, dQ, dT)]
869875 else nil
870- let fA = if ((this == aM))
876+ let fB = if ((this == aM))
871877 then $Tuple2(0, 0)
872878 else if (dX)
873879 then $Tuple2(-(dQ), 0)
874880 else $Tuple2(0, -(dQ))
875- let dm = fA._1
876- let dn = fA._2
877- let fB = dl(dm, dn, 0)
878- let fk = fB._1
879- let dc = fB._2
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
880886 let dw = value(getString(ah))
881- let fl = dp(dk, dc)
882- if ((fl == fl))
883- then $Tuple2((((cY ++ fh) ++ fz) ++ fk), fx)
887+ let fm = dp(dk, dc)
888+ if ((fm == fm))
889+ then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
884890 else throw("Strict value is not equal to itself.")
885891 }
886892 else throw("Strict value is not equal to itself.")
894900
895901 @Callable(dC)
896902 func putOneTknREADONLY (dT,dS) = {
897- let fC = dR(dS, aS(dT), unit, unit)
898- let fw = fC._1
899- let cY = fC._2
900- let dQ = fC._3
901- let fv = fC._4
902- let dX = fC._5
903- $Tuple2(nil, $Tuple3(fw, dQ, fv))
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))
904910 }
905911
906912
907913
908914 @Callable(dC)
909-func getOneTkn (fD,fo) = {
910- let fq = {
911- let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912- if ($isInstanceOf(fr, "Boolean"))
913- then fr
914- else throw(($getType(fr) + " couldn't be cast to Boolean"))
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"))
915921 }
916- let fE = if (if (aN())
922+ let fF = if (if (aN())
917923 then true
918924 else (ba == n))
919925 then true
920- else fq
921- let ey = [if (if (!(fE))
926+ else fr
927+ let ey = [if (if (!(fF))
922928 then true
923- else eS(dC))
929+ else eT(dC))
924930 then true
925931 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
926932 then true
927933 else aI("exactly 1 payment are expected")]
928934 if ((ey == ey))
929935 then {
930- let ex = aS(fD)
931- let ft = dC.payments[0]
932- let dT = ft.assetId
933- let ef = ft.amount
936+ let ex = aS(fE)
937+ let fu = dC.payments[0]
938+ let dT = fu.assetId
939+ let ef = fu.amount
934940 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
935941 let Z = dC.caller
936942 let aa = dC.transactionId
937- let fF = ew(ex, ef, dT, Z, aa)
938- if ((fF == fF))
943+ let fG = ew(ex, ef, dT, Z, aa)
944+ if ((fG == fG))
939945 then {
940- let ez = fF._5
941- let fv = fF._4
942- let dQ = fF._3
943- let cY = fF._2
944- let fG = fF._1
945- let dK = if (if ((fo > 0))
946- then (fo > fG)
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)
947953 else false)
948- then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
949- else fG
950- let fH = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
951- if ((fH == fH))
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))
952958 then {
953- let fI = [ScriptTransfer(Z, dK, ex)]
954- let fz = if ((dQ > 0))
959+ let fJ = [ScriptTransfer(Z, dK, ex)]
960+ let fA = if ((dQ > 0))
955961 then [ScriptTransfer(aM, dQ, ex)]
956962 else nil
957- let fJ = {
958- let fK = if ((this == aM))
963+ let fK = {
964+ let fL = if ((this == aM))
959965 then 0
960966 else dQ
961967 if (ez)
962- then $Tuple2(-((dK + fK)), 0)
963- else $Tuple2(0, -((dK + fK)))
968+ then $Tuple2(-((dK + fL)), 0)
969+ else $Tuple2(0, -((dK + fL)))
964970 }
965- let dm = fJ._1
966- let dn = fJ._2
967- let fL = dl(dm, dn, 0)
968- let fk = fL._1
969- let dc = fL._2
970- let fl = dp(dk, dc)
971- if ((fl == fl))
972- then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
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)
973979 else throw("Strict value is not equal to itself.")
974980 }
975981 else throw("Strict value is not equal to itself.")
983989
984990 @Callable(dC)
985991 func getOneTknREADONLY (ex,ef) = {
986- let fM = ew(aS(ex), ef, bb, unit, unit)
987- let fG = fM._1
988- let cY = fM._2
989- let dQ = fM._3
990- let fv = fM._4
991- let ez = fM._5
992- $Tuple2(nil, $Tuple3(fG, dQ, fv))
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))
993999 }
9941000
9951001
9961002
9971003 @Callable(dC)
998-func unstakeAndGetOneTkn (fN,fD,fo) = {
999- let fq = {
1000- let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1001- if ($isInstanceOf(fr, "Boolean"))
1002- then fr
1003- else throw(($getType(fr) + " couldn't be cast to Boolean"))
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"))
10041010 }
1005- let fE = if (if (aN())
1011+ let fF = if (if (aN())
10061012 then true
10071013 else (ba == n))
10081014 then true
1009- else fq
1010- let ey = [if (if (!(fE))
1015+ else fr
1016+ let ey = [if (if (!(fF))
10111017 then true
1012- else eS(dC))
1018+ else eT(dC))
10131019 then true
10141020 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10151021 then true
10161022 else aI("no payments are expected")]
10171023 if ((ey == ey))
10181024 then {
1019- let ex = aS(fD)
1025+ let ex = aS(fE)
10201026 let Z = dC.caller
10211027 let aa = dC.transactionId
10221028 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1023- let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1024- if ((fO == fO))
1029+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1030+ if ((fP == fP))
10251031 then {
1026- let fP = ew(ex, fN, bb, Z, aa)
1027- if ((fP == fP))
1032+ let fQ = ew(ex, fO, bb, Z, aa)
1033+ if ((fQ == fQ))
10281034 then {
1029- let ez = fP._5
1030- let fv = fP._4
1031- let dQ = fP._3
1032- let cY = fP._2
1033- let fG = fP._1
1034- let dK = if (if ((fo > 0))
1035- then (fo > fG)
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)
10361042 else false)
1037- then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
1038- else fG
1039- let fH = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1040- if ((fH == fH))
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))
10411047 then {
1042- let fI = [ScriptTransfer(dC.caller, dK, ex)]
1043- let fz = if ((dQ > 0))
1048+ let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1049+ let fA = if ((dQ > 0))
10441050 then [ScriptTransfer(aM, dQ, ex)]
10451051 else nil
1046- let fQ = {
1047- let fK = if ((this == aM))
1052+ let fR = {
1053+ let fL = if ((this == aM))
10481054 then 0
10491055 else dQ
10501056 if (ez)
1051- then $Tuple2(-((dK + fK)), 0)
1052- else $Tuple2(0, -((dK + fK)))
1057+ then $Tuple2(-((dK + fL)), 0)
1058+ else $Tuple2(0, -((dK + fL)))
10531059 }
1054- let dm = fQ._1
1055- let dn = fQ._2
1056- let fR = dl(dm, dn, 0)
1057- let fk = fR._1
1058- let dc = fR._2
1059- let fl = dp(dk, dc)
1060- if ((fl == fl))
1061- then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
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)
10621068 else throw("Strict value is not equal to itself.")
10631069 }
10641070 else throw("Strict value is not equal to itself.")
10751081 @Callable(dC)
10761082 func get () = {
10771083 let cJ = dB(dC)
1078- let fS = cJ._1
1084+ let fT = cJ._1
10791085 let cq = cJ._2
10801086 let dE = cJ._3
10811087 let bY = cJ._4
10821088 let cr = cJ._5
10831089 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1084- let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1085- if ((fT == fT))
1090+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1091+ if ((fU == fU))
10861092 then {
1087- let fU = dl(-(fS), -(cq), 0)
1088- let fk = fU._1
1089- let dc = fU._2
1090- let fl = dp(dk, dc)
1091- if ((fl == fl))
1092- then (cr ++ fk)
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)
10931099 else throw("Strict value is not equal to itself.")
10941100 }
10951101 else throw("Strict value is not equal to itself.")
10981104
10991105
11001106 @Callable(dC)
1101-func getNoLess (fV,fW) = {
1107+func getNoLess (fW,fX) = {
11021108 let cJ = dB(dC)
11031109 let cp = cJ._1
11041110 let cq = cJ._2
11051111 let dE = cJ._3
11061112 let bY = cJ._4
11071113 let cr = cJ._5
1108- if ((fV > cp))
1109- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fV)))
1110- else if ((fW > cq))
1111- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fW)))
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)))
11121118 else {
11131119 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1114- let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1115- if ((fT == fT))
1120+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1121+ if ((fU == fU))
11161122 then {
1117- let fX = dl(-(cp), -(cq), 0)
1118- let fk = fX._1
1119- let dc = fX._2
1120- let fl = dp(dk, dc)
1121- if ((fl == fl))
1122- then (cr ++ fk)
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)
11231129 else throw("Strict value is not equal to itself.")
11241130 }
11251131 else throw("Strict value is not equal to itself.")
11301136
11311137 @Callable(dC)
11321138 func unstakeAndGet (dK) = {
1133- let fY = if ((size(dC.payments) != 0))
1139+ let fZ = if ((size(dC.payments) != 0))
11341140 then throw("No payments are expected")
11351141 else true
1136- if ((fY == fY))
1142+ if ((fZ == fZ))
11371143 then {
11381144 let bN = aP()
11391145 let ca = fromBase58String(bN[q])
11401146 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1141- let fO = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1142- if ((fO == fO))
1147+ let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1148+ if ((fP == fP))
11431149 then {
11441150 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11451151 let cp = cJ._1
11461152 let cq = cJ._2
11471153 let cd = parseIntValue(cJ._9)
11481154 let cr = cJ._10
1149- let fZ = if (if (aN())
1155+ let ga = if (if (aN())
11501156 then true
11511157 else (cd == n))
11521158 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11531159 else true
1154- if ((fZ == fZ))
1160+ if ((ga == ga))
11551161 then {
1156- let fT = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1157- if ((fT == fT))
1162+ let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1163+ if ((fU == fU))
11581164 then {
1159- let ga = dl(-(cp), -(cq), 0)
1160- let fk = ga._1
1161- let dc = ga._2
1162- let fl = dp(dk, dc)
1163- if ((fl == fl))
1164- then (cr ++ fk)
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)
11651171 else throw("Strict value is not equal to itself.")
11661172 }
11671173 else throw("Strict value is not equal to itself.")
11761182
11771183
11781184 @Callable(dC)
1179-func unstakeAndGetNoLess (fN,gb,fW) = {
1180- let fE = if (aN())
1185+func unstakeAndGetNoLess (fO,gc,fX) = {
1186+ let fF = if (aN())
11811187 then true
11821188 else (ba == n)
1183- let ey = [if (!(fE))
1189+ let ey = [if (!(fF))
11841190 then true
11851191 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
11861192 then true
11881194 if ((ey == ey))
11891195 then {
11901196 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1191- let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1192- if ((fO == fO))
1197+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1198+ if ((fP == fP))
11931199 then {
1194- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fN, dC.caller)
1200+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
11951201 let cp = cJ._1
11961202 let cq = cJ._2
11971203 let cr = cJ._10
1198- let gc = [if ((cp >= gb))
1204+ let gd = [if ((cp >= gc))
11991205 then true
1200- else throw(makeString(["amount asset amount to receive is less than ", toString(gb)], "")), if ((cq >= fW))
1206+ else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
12011207 then true
1202- else throw(makeString(["price asset amount to receive is less than ", toString(fW)], ""))]
1203- if ((gc == gc))
1208+ else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1209+ if ((gd == gd))
12041210 then {
1205- let fT = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1206- if ((fT == fT))
1211+ let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1212+ if ((fU == fU))
12071213 then {
1208- let gd = dl(-(cp), -(cq), 0)
1209- let fk = gd._1
1210- let dc = gd._2
1211- let fl = dp(dk, dc)
1212- if ((fl == fl))
1213- then (cr ++ fk)
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)
12141220 else throw("Strict value is not equal to itself.")
12151221 }
12161222 else throw("Strict value is not equal to itself.")
12251231
12261232
12271233 @Callable(dC)
1228-func activate (ge,gf) = if ((toString(dC.caller) != toString(aL)))
1234+func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
12291235 then throw("permissions denied")
1230- else $Tuple2([StringEntry(ac(), ge), StringEntry(ad(), gf)], "success")
1236+ else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
12311237
12321238
12331239
12341240 @Callable(dC)
12351241 func refreshKLp () = {
1236- let gg = valueOrElse(getInteger(ai), 0)
1237- let gh = if (((height - gg) >= al))
1242+ let gh = valueOrElse(getInteger(ai), 0)
1243+ let gi = if (((height - gh) >= al))
12381244 then unit
12391245 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1240- if ((gh == gh))
1246+ if ((gi == gi))
12411247 then {
12421248 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1243- let gi = dl(0, 0, 0)
1244- let gj = gi._1
1245- let dc = gi._2
1249+ let gj = dl(0, 0, 0)
1250+ let gk = gj._1
1251+ let dc = gj._2
12461252 let do = if ((dw != dc))
1247- then gj
1253+ then gk
12481254 else aI("nothing to refresh")
12491255 $Tuple2(do, toString(dc))
12501256 }
13031309 func statsREADONLY () = {
13041310 let bN = aP()
13051311 let ca = fromBase58String(bN[q])
1306- let gk = bN[r]
1307- let gl = bN[s]
1312+ let gl = bN[r]
1313+ let gm = bN[s]
13081314 let cC = bN[v]
13091315 let cD = bN[w]
13101316 let bO = parseIntValue(bN[t])
13111317 let bP = parseIntValue(bN[u])
1312- let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1313- let gn = by(gk)
1318+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13141319 let go = by(gl)
1315- let gp = if ((gm == 0))
1320+ let gp = by(gm)
1321+ let gq = if ((gn == 0))
13161322 then [e, e, e]
1317- else bL(gn, go, gm)
1323+ else bL(go, gp, gn)
13181324 let ck = 0
1319- let gq = G(gp[1], b)
1320- let gr = G(gp[2], b)
1321- let gs = value(getInteger(aL, aw(toString(this))))
1322- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gn), toString(go), toString(gm), toString(ck), toString(gq), toString(gr), toString(gs)], j))
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))
13231329 }
13241330
13251331
13351341 let bO = parseIntValue(bN[t])
13361342 let bP = parseIntValue(bN[u])
13371343 let cd = bN[p]
1338- let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1339- let gn = by(cA)
1340- let go = by(cB)
1341- let bJ = D(gn, bO)
1342- let bK = D(go, bP)
1343- let cj = if ((gm == 0))
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))
13441350 then e
13451351 else bA(bK, bJ)
13461352 let cG = D(cu, bO)
13481354 let cw = G(cH, bP)
13491355 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13501356 let cR = dI._1
1351- let gt = dI._3
1357+ let gu = dI._3
13521358 let cf = dI._4
13531359 let ch = dI._5
13541360 let ce = dI._6
13681374 let bO = parseIntValue(bN[t])
13691375 let bP = parseIntValue(bN[u])
13701376 let cd = bN[p]
1371- let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1372- let gu = by(cA)
1373- let gv = by(cB)
1374- let gw = D(gu, bO)
1375- let gx = D(gv, bP)
1376- let cj = if ((gm == 0))
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))
13771383 then e
1378- else bA(gx, gw)
1384+ else bA(gy, gx)
13791385 let cH = D(cw, bP)
13801386 let cG = fraction(cH, d, cj)
13811387 let cu = G(cG, bO)
13821388 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13831389 let cR = dI._1
1384- let gt = dI._3
1390+ let gu = dI._3
13851391 let cf = dI._4
13861392 let ch = dI._5
13871393 let ce = dI._6
13911397
13921398
13931399 @Callable(dC)
1394-func evaluateGetREADONLY (gy,gz) = {
1395- let cJ = bW("", gy, gz, this)
1400+func evaluateGetREADONLY (gz,gA) = {
1401+ let cJ = bW("", gz, gA, this)
13961402 let cp = cJ._1
13971403 let cq = cJ._2
13981404 let cf = cJ._5
14041410 }
14051411
14061412
1407-@Verifier(gA)
1408-func gB () = {
1409- let gC = {
1410- let dN = eP()
1413+@Verifier(gB)
1414+func gC () = {
1415+ let gD = {
1416+ let dN = eQ()
14111417 if ($isInstanceOf(dN, "ByteVector"))
14121418 then {
1413- let eT = dN
1414- eT
1419+ let eU = dN
1420+ eU
14151421 }
14161422 else if ($isInstanceOf(dN, "Unit"))
1417- then gA.senderPublicKey
1423+ then gB.senderPublicKey
14181424 else throw("Match error")
14191425 }
1420- let dN = gA
1426+ let dN = gB
14211427 if ($isInstanceOf(dN, "Order"))
14221428 then {
14231429 let ds = dN
1424- let gD = aO()
1430+ let gE = aO()
14251431 let aB = dr(ds)
14261432 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1427- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gD)
1433+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
14281434 if (if (if (aB)
14291435 then aC
14301436 else false)
14351441 }
14361442 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14371443 then {
1438- let eQ = dN
1439- let gE = blake2b256(value(eQ.script))
1440- let gF = fromBase64String(value(getString(aL, ay())))
1441- let gG = scriptHash(this)
1442- if (if ((gF == gE))
1443- then (gG != gE)
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)
14441450 else false)
14451451 then true
1446- else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
1452+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14471453 }
1448- else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
1454+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14491455 }
14501456
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
6868 func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
7171 func L (M,N,O) = fraction(M, N, O)
7272
7373
7474 func P (H) = if ((0 > H))
7575 then -(H)
7676 else H
7777
7878
7979 func Q (H) = if ((e > H))
8080 then -(H)
8181 else H
8282
8383
8484 func R () = "%s__factoryContract"
8585
8686
8787 func S () = "%s__managerPublicKey"
8888
8989
9090 func T () = "%s__pendingManagerPublicKey"
9191
9292
9393 func U () = "%s%s__price__last"
9494
9595
9696 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9797
9898
9999 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
100100
101101
102102 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
103103
104104
105105 func ac () = "%s__amountAsset"
106106
107107
108108 func ad () = "%s__priceAsset"
109109
110110
111111 let ae = "%s__fee"
112112
113113 let af = fraction(10, b, 10000)
114114
115115 let ag = valueOrElse(getInteger(this, ae), af)
116116
117117 let ah = makeString(["%s", "kLp"], j)
118118
119119 let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120120
121121 let aj = makeString(["%s", "refreshKLpDelay"], j)
122122
123123 let ak = 30
124124
125125 let al = valueOrElse(getInteger(this, aj), ak)
126126
127127 func am () = "%s__factoryConfig"
128128
129129
130130 func an () = "%s%s__matcher__publicKey"
131131
132132
133133 func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
134134
135135
136136 func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
137137
138138
139139 func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
140140
141141
142142 func av () = "%s__shutdown"
143143
144144
145145 func aw (ax) = ("%s%s__poolWeight__" + ax)
146146
147147
148148 func ay () = "%s__allowedLpScriptHash"
149149
150150
151151 let az = "%s__feeCollectorAddress"
152152
153153 func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
154154
155155
156156 func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157157
158158
159159 func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
160160
161161
162162 func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
163163
164164
165165 func aK (aJ) = makeString(["lp.ride:", aJ], " ")
166166
167167
168168 let aL = addressFromStringValue(aE(this, R()))
169169
170170 let aM = addressFromStringValue(aE(aL, az))
171171
172172 func aN () = valueOrElse(getBoolean(aL, av()), false)
173173
174174
175175 func aO () = fromBase58String(aE(aL, an()))
176176
177177
178178 func aP () = {
179179 let aQ = aE(this, ac())
180180 let aR = aE(this, ad())
181181 let as = aH(aL, at(aR))
182182 let ar = aH(aL, at(aQ))
183183 split(aE(aL, aq(toString(ar), toString(as))), j)
184184 }
185185
186186
187187 func aS (aT) = if ((aT == i))
188188 then unit
189189 else fromBase58String(aT)
190190
191191
192192 func aU (aT) = if ((aT == unit))
193193 then i
194194 else toBase58String(value(aT))
195195
196196
197197 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]))
198198
199199
200200 let aX = aV(aP())
201201
202202 let aY = aX
203203
204204 let aZ = aY._1
205205
206206 let ba = aY._2
207207
208208 let bb = aY._3
209209
210210 let bc = aY._4
211211
212212 let bd = aY._5
213213
214214 let be = aY._6
215215
216216 let bf = aY._7
217217
218218 func bg () = split(aE(aL, am()), j)
219219
220220
221221 let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
222222
223223 let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
224224
225225 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)
226226
227227
228228 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)
229229
230230
231231 func by (bz) = if ((bz == "WAVES"))
232232 then wavesBalance(this).available
233233 else assetBalance(this, fromBase58String(bz))
234234
235235
236236 func bA (bB,bC) = fraction(bB, d, bC)
237237
238238
239239 func bD (bB,bC,K) = fraction(bB, d, bC, K)
240240
241241
242242 func bE (bF,bG,bH,bI) = {
243243 let bJ = D(bH, bF)
244244 let bK = D(bI, bG)
245245 bA(bK, bJ)
246246 }
247247
248248
249249 func bL (bH,bI,bM) = {
250250 let bN = aP()
251251 let bO = parseIntValue(bN[t])
252252 let bP = parseIntValue(bN[u])
253253 let bQ = bE(bO, bP, bH, bI)
254254 let bC = D(bH, bO)
255255 let bB = D(bI, bP)
256256 let bR = D(bM, b)
257257 let bS = bA(bC, bR)
258258 let bT = bA(bB, bR)
259259 [bQ, bS, bT]
260260 }
261261
262262
263263 func bU (bH,bI,bM) = {
264264 let bV = bL(bH, bI, bM)
265265 [G(bV[0], b), G(bV[1], b), G(bV[2], b)]
266266 }
267267
268268
269269 func bW (bX,bY,bZ,Z) = {
270270 let bN = aP()
271271 let ca = bN[q]
272272 let cb = bN[r]
273273 let cc = bN[s]
274274 let bF = parseIntValue(bN[t])
275275 let bG = parseIntValue(bN[u])
276276 let cd = bN[p]
277277 let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278278 if ((ca != bY))
279279 then throw("Invalid asset passed.")
280280 else {
281281 let cf = by(cb)
282282 let cg = D(cf, bF)
283283 let ch = by(cc)
284284 let ci = D(ch, bG)
285285 let cj = bA(ci, cg)
286286 let ck = G(cj, b)
287287 let cl = D(bZ, b)
288288 let cm = D(ce, b)
289289 let cn = fraction(cg, cl, cm)
290290 let co = fraction(ci, cl, cm)
291- let cp = G(cn, bF)
292- let cq = G(co, bG)
291+ let cp = J(cn, bF, FLOOR)
292+ let cq = J(co, bG, FLOOR)
293293 let cr = if ((bX == ""))
294294 then nil
295295 else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
296296 then unit
297297 else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
298298 then unit
299299 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)]
300300 $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
301301 }
302302 }
303303
304304
305305 func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306306 let bN = aP()
307307 let ca = fromBase58String(bN[q])
308308 let cA = bN[r]
309309 let cB = bN[s]
310310 let cC = bN[v]
311311 let cD = bN[w]
312312 let bO = parseIntValue(bN[t])
313313 let bP = parseIntValue(bN[u])
314314 let cd = bN[p]
315315 let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316316 let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317317 let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318318 if (if ((cA != cE))
319319 then true
320320 else (cB != cF))
321321 then throw("Invalid amt or price asset passed.")
322322 else {
323323 let cf = if (cy)
324324 then by(cA)
325325 else (by(cA) - cu)
326326 let ch = if (cy)
327327 then by(cB)
328328 else (by(cB) - cw)
329329 let cG = D(cu, bO)
330330 let cH = D(cw, bP)
331331 let cI = bA(cH, cG)
332332 let cg = D(cf, bO)
333333 let ci = D(ch, bP)
334334 let cJ = if ((ce == 0))
335335 then {
336336 let cj = e
337337 let cK = e
338338 let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339339 $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
340340 }
341341 else {
342342 let cj = bA(ci, cg)
343343 let cK = fraction(Q((cj - cI)), d, cj)
344344 let cL = D(ct, b)
345345 if (if ((cj != e))
346346 then (cK > cL)
347347 else false)
348348 then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
349349 else {
350350 let cm = D(ce, b)
351351 let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352352 let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353353 let cO = if ((cM > cH))
354354 then $Tuple2(cN, cH)
355355 else $Tuple2(cG, cM)
356356 let cP = cO._1
357357 let cQ = cO._2
358358 let bR = fraction(cm, cQ, ci, FLOOR)
359359 $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
360360 }
361361 }
362362 let cR = cJ._1
363363 let cS = cJ._2
364364 let cT = cJ._3
365365 let ck = G(cJ._4, b)
366366 let cU = G(cJ._5, b)
367367 if ((0 >= cR))
368368 then throw("Invalid calculations. LP calculated is less than zero.")
369369 else {
370370 let cV = if (!(cz))
371371 then 0
372372 else cR
373373 let cW = (cu - cS)
374374 let cX = (cw - cT)
375375 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))]
376376 $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
377377 }
378378 }
379379 }
380380
381381
382382 func cZ (da,db,ce) = {
383383 let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384384 if ((ce == f))
385385 then f
386386 else dc
387387 }
388388
389389
390390 func dd (de,df,dg) = {
391391 let dh = (toBigInt(by(aU(bc))) - de)
392392 let di = (toBigInt(by(aU(bd))) - df)
393393 let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394394 let dk = cZ(dh, di, dj)
395395 dk
396396 }
397397
398398
399399 func dl (dm,dn,dg) = {
400400 let dh = (by(aU(bc)) + dm)
401401 let di = (by(aU(bd)) + dn)
402402 let dj = (value(assetInfo(bb)).quantity + dg)
403403 let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404404 let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405405 $Tuple2(do, dc)
406406 }
407407
408408
409409 func dp (dq,dc) = if ((dc >= dq))
410410 then true
411411 else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412412
413413
414414 func dr (ds) = {
415415 let dt = ds.amount
416416 let du = fraction(ds.amount, ds.price, b, FLOOR)
417417 let dv = if ((ds.orderType == Buy))
418418 then $Tuple2(dt, -(du))
419419 else $Tuple2(-(dt), du)
420420 let dm = dv._1
421421 let dn = dv._2
422422 if (if (if (aN())
423423 then true
424424 else (ba == m))
425425 then true
426426 else (ba == n))
427427 then throw("Exchange operations disabled")
428428 else if (if ((ds.assetPair.amountAsset != bc))
429429 then true
430430 else (ds.assetPair.priceAsset != bd))
431431 then throw("Wrong order assets.")
432432 else {
433433 let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434434 let dx = dl(dm, dn, 0)
435435 let dy = dx._1
436436 let dz = dx._2
437437 let dA = (dz >= dw)
438438 dA
439439 }
440440 }
441441
442442
443443 func dB (dC) = if ((size(dC.payments) != 1))
444444 then throw("exactly 1 payment is expected")
445445 else {
446446 let dD = value(dC.payments[0])
447447 let bY = value(dD.assetId)
448448 let dE = dD.amount
449449 let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450450 let cp = cJ._1
451451 let cq = cJ._2
452452 let cd = parseIntValue(cJ._9)
453453 let cr = cJ._10
454454 if (if (aN())
455455 then true
456456 else (cd == n))
457457 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458458 else $Tuple5(cp, cq, dE, bY, cr)
459459 }
460460
461461
462462 func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
463463 then throw("exactly 2 payments are expected")
464464 else {
465465 let dG = value(dC.payments[0])
466466 let dH = value(dC.payments[1])
467467 let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468468 let cd = parseIntValue(dI._8)
469469 if (if (if (aN())
470470 then true
471471 else (cd == l))
472472 then true
473473 else (cd == n))
474474 then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475475 else dI
476476 }
477477
478478
479479 func dJ (dK) = {
480480 let dL = invoke(aL, "emit", [dK], nil)
481481 if ((dL == dL))
482482 then {
483483 let dM = {
484484 let dN = dL
485485 if ($isInstanceOf(dN, "Address"))
486486 then {
487487 let dO = dN
488488 invoke(dO, "emit", [dK], nil)
489489 }
490490 else unit
491491 }
492492 if ((dM == dM))
493493 then dK
494494 else throw("Strict value is not equal to itself.")
495495 }
496496 else throw("Strict value is not equal to itself.")
497497 }
498498
499499
500500 func dP (dK) = {
501501 let dQ = fraction(dK, ag, b)
502502 $Tuple2((dK - dQ), dQ)
503503 }
504504
505505
506506 func dR (dS,dT,Z,aa) = {
507507 let dU = (aa == unit)
508508 let dV = by(aU(bc))
509509 let dW = by(aU(bd))
510510 let dX = if ((dT == bc))
511511 then true
512512 else if ((dT == bd))
513513 then false
514514 else aI("invalid asset")
515515 let dY = if (dU)
516516 then $Tuple2(dV, dW)
517517 else if (dX)
518518 then $Tuple2((dV - dS), dW)
519519 else $Tuple2(dV, (dW - dS))
520520 let dZ = dY._1
521521 let ea = dY._2
522522 let eb = if (dX)
523523 then $Tuple2(dS, 0)
524524 else $Tuple2(0, dS)
525525 let ec = eb._1
526526 let ed = eb._2
527527 let dt = dP(ec)._1
528528 let du = dP(ed)._1
529529 let ee = dP(dS)
530530 let ef = ee._1
531531 let dQ = ee._2
532532 let eg = (dZ + dt)
533533 let eh = (ea + du)
534534 let ei = bA(D(eh, bf), D(eg, be))
535535 let ej = G(ei, b)
536536 let ek = if (dX)
537537 then dZ
538538 else ea
539539 let el = toBigInt(ek)
540540 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541541 let en = if ((em > f))
542542 then true
543543 else aI("initial deposit requires all coins")
544544 if ((en == en))
545545 then {
546546 let eo = toBigInt(ef)
547- let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
547+ let ep = max([0, J(fraction(em, (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d), d), b, FLOOR)])
548548 let cY = if (dU)
549549 then nil
550550 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))]
551551 let eq = bA(D(ea, bf), D(dZ, be))
552552 let er = G(eq, b)
553553 let es = {
554554 let et = if (dX)
555555 then $Tuple2(ec, dZ)
556556 else $Tuple2(ed, ea)
557557 let dK = et._1
558558 let eu = et._2
559559 let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560560 fraction((ep - ev), b, ev)
561561 }
562562 $Tuple5(ep, cY, dQ, es, dX)
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568568 func ew (ex,ef,dT,Z,aa) = {
569569 let dU = (aa == unit)
570+ let bN = aP()
571+ let bO = parseIntValue(bN[t])
572+ let bP = parseIntValue(bN[u])
570573 let ey = [if ((dT == bb))
571574 then true
572575 else aI("invalid lp asset")]
573576 if ((ey == ey))
574577 then {
575578 let ez = if ((ex == bc))
576579 then true
577580 else if ((ex == bd))
578581 then false
579582 else aI("invalid asset")
580583 let eA = if (ez)
581584 then toBigInt(by(aU(bc)))
582585 else toBigInt(by(aU(bd)))
583- let eB = by(aU(bc))
584- let eC = by(aU(bd))
585- let eD = if (ez)
586- then eB
587- else eC
588- let eE = toBigInt(eD)
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)
589595 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
590- let eF = toBigInt(ef)
591- let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592- let eH = dP(eG)
593- let eI = eH._1
594- let dQ = eH._2
595- let eJ = if (ez)
596- then $Tuple4(eI, 0, (eB - eG), eC)
597- else $Tuple4(0, eI, eB, (eC - eG))
598- let eK = eJ._1
599- let eL = eJ._2
600- let eM = eJ._3
601- let eN = eJ._4
602- let ei = bA(D(eN, bf), D(eM, be))
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))
603609 let ej = G(ei, b)
604610 let cY = if (dU)
605611 then nil
606- else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607- let eq = bA(D(eC, bf), D(eB, be))
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))
608614 let er = G(eq, b)
609615 let es = {
610- let eO = (toInt(fraction(eA, eF, em)) * 2)
611- fraction((eI - eO), b, eO)
616+ let eP = (toInt(fraction(eA, eG, em)) * 2)
617+ fraction((eJ - eP), b, eP)
612618 }
613- $Tuple5(eI, cY, dQ, es, ez)
619+ $Tuple5(eJ, cY, dQ, es, ez)
614620 }
615621 else throw("Strict value is not equal to itself.")
616622 }
617623
618624
619-func eP () = {
625+func eQ () = {
620626 let dN = getString(S())
621627 if ($isInstanceOf(dN, "String"))
622628 then {
623- let eQ = dN
624- fromBase58String(eQ)
629+ let eR = dN
630+ fromBase58String(eR)
625631 }
626632 else if ($isInstanceOf(dN, "Unit"))
627633 then unit
628634 else throw("Match error")
629635 }
630636
631637
632-func eR () = {
638+func eS () = {
633639 let dN = getString(T())
634640 if ($isInstanceOf(dN, "String"))
635641 then {
636- let eQ = dN
637- fromBase58String(eQ)
642+ let eR = dN
643+ fromBase58String(eR)
638644 }
639645 else if ($isInstanceOf(dN, "Unit"))
640646 then unit
641647 else throw("Match error")
642648 }
643649
644650
645-func eS (dC) = {
646- let dN = eP()
651+func eT (dC) = {
652+ let dN = eQ()
647653 if ($isInstanceOf(dN, "ByteVector"))
648654 then {
649- let eT = dN
650- (dC.callerPublicKey == eT)
655+ let eU = dN
656+ (dC.callerPublicKey == eU)
651657 }
652658 else if ($isInstanceOf(dN, "Unit"))
653659 then (dC.caller == this)
654660 else throw("Match error")
655661 }
656662
657663
658-func eU (dC) = {
659- let eV = throw("Permission denied")
660- let dN = eP()
664+func eV (dC) = {
665+ let eW = throw("Permission denied")
666+ let dN = eQ()
661667 if ($isInstanceOf(dN, "ByteVector"))
662668 then {
663- let eT = dN
664- if ((dC.callerPublicKey == eT))
669+ let eU = dN
670+ if ((dC.callerPublicKey == eU))
665671 then true
666- else eV
672+ else eW
667673 }
668674 else if ($isInstanceOf(dN, "Unit"))
669675 then if ((dC.caller == this))
670676 then true
671- else eV
677+ else eW
672678 else throw("Match error")
673679 }
674680
675681
676682 @Callable(dC)
677-func setManager (eW) = {
678- let eX = eU(dC)
679- if ((eX == eX))
683+func setManager (eX) = {
684+ let eY = eV(dC)
685+ if ((eY == eY))
680686 then {
681- let eY = fromBase58String(eW)
682- if ((eY == eY))
683- then [StringEntry(T(), eW)]
687+ let eZ = fromBase58String(eX)
688+ if ((eZ == eZ))
689+ then [StringEntry(T(), eX)]
684690 else throw("Strict value is not equal to itself.")
685691 }
686692 else throw("Strict value is not equal to itself.")
687693 }
688694
689695
690696
691697 @Callable(dC)
692698 func confirmManager () = {
693- let eZ = eR()
694- let fa = if (isDefined(eZ))
699+ let fa = eS()
700+ let fb = if (isDefined(fa))
695701 then true
696702 else throw("No pending manager")
697- if ((fa == fa))
703+ if ((fb == fb))
698704 then {
699- let fb = if ((dC.callerPublicKey == value(eZ)))
705+ let fc = if ((dC.callerPublicKey == value(fa)))
700706 then true
701707 else throw("You are not pending manager")
702- if ((fb == fb))
703- then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
708+ if ((fc == fc))
709+ then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
704710 else throw("Strict value is not equal to itself.")
705711 }
706712 else throw("Strict value is not equal to itself.")
707713 }
708714
709715
710716
711717 @Callable(dC)
712-func put (ct,fc) = if ((0 > ct))
718+func put (ct,fd) = if ((0 > ct))
713719 then throw("Invalid slippageTolerance passed")
714720 else {
715721 let dI = dF(dC, ct, true)
716722 let cV = dI._2
717723 let ca = dI._7
718724 let cr = dI._9
719725 let cW = dI._10
720726 let cX = dI._11
721- let fd = dI._12
722- let fe = dI._13
727+ let fe = dI._12
728+ let ff = dI._13
723729 let dG = toBigInt(value(dC.payments[0]).amount)
724730 let dH = toBigInt(value(dC.payments[1]).amount)
725731 let dk = dd(dG, dH, toBigInt(0))
726732 if ((dk == dk))
727733 then {
728734 let dL = invoke(aL, "emit", [cV], nil)
729735 if ((dL == dL))
730736 then {
731737 let dM = {
732738 let dN = dL
733739 if ($isInstanceOf(dN, "Address"))
734740 then {
735741 let dO = dN
736742 invoke(dO, "emit", [cV], nil)
737743 }
738744 else unit
739745 }
740746 if ((dM == dM))
741747 then {
742- let ff = if ((cW > 0))
743- then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
748+ let fg = if ((cW > 0))
749+ then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
744750 else nil
745- if ((ff == ff))
751+ if ((fg == fg))
746752 then {
747- let fg = if ((cX > 0))
748- then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
753+ let fh = if ((cX > 0))
754+ then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
749755 else nil
750- if ((fg == fg))
756+ if ((fh == fh))
751757 then {
752- let fh = if (fc)
758+ let fi = if (fd)
753759 then {
754- let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
755- if ((fi == fi))
760+ let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761+ if ((fj == fj))
756762 then nil
757763 else throw("Strict value is not equal to itself.")
758764 }
759765 else [ScriptTransfer(dC.caller, cV, ca)]
760- let fj = dl(0, 0, 0)
761- if ((fj == fj))
766+ let fk = dl(0, 0, 0)
767+ if ((fk == fk))
762768 then {
763- let dc = fj._2
764- let fk = fj._1
765- let fl = dp(dk, dc)
766- if ((fl == fl))
767- then ((cr ++ fh) ++ fk)
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)
768774 else throw("Strict value is not equal to itself.")
769775 }
770776 else throw("Strict value is not equal to itself.")
771777 }
772778 else throw("Strict value is not equal to itself.")
773779 }
774780 else throw("Strict value is not equal to itself.")
775781 }
776782 else throw("Strict value is not equal to itself.")
777783 }
778784 else throw("Strict value is not equal to itself.")
779785 }
780786 else throw("Strict value is not equal to itself.")
781787 }
782788
783789
784790
785791 @Callable(dC)
786-func putForFree (fm) = if ((0 > fm))
792+func putForFree (fn) = if ((0 > fn))
787793 then throw("Invalid value passed")
788794 else {
789- let dI = dF(dC, fm, false)
795+ let dI = dF(dC, fn, false)
790796 let cr = dI._9
791797 let dG = toBigInt(value(dC.payments[0]).amount)
792798 let dH = toBigInt(value(dC.payments[1]).amount)
793799 let dk = dd(dG, dH, toBigInt(0))
794800 if ((dk == dk))
795801 then {
796- let fn = dl(0, 0, 0)
797- let fk = fn._1
798- let dc = fn._2
799- let fl = dp(dk, dc)
800- if ((fl == fl))
801- then (cr ++ fk)
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)
802808 else throw("Strict value is not equal to itself.")
803809 }
804810 else throw("Strict value is not equal to itself.")
805811 }
806812
807813
808814
809815 @Callable(dC)
810-func putOneTkn (fo,fp) = {
811- let fq = {
812- let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
813- if ($isInstanceOf(fr, "Boolean"))
814- then fr
815- else throw(($getType(fr) + " couldn't be cast to Boolean"))
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"))
816822 }
817- let fs = if (if (if (aN())
823+ let ft = if (if (if (aN())
818824 then true
819825 else (ba == l))
820826 then true
821827 else (ba == n))
822828 then true
823- else fq
824- let ey = [if (if (!(fs))
829+ else fr
830+ let ey = [if (if (!(ft))
825831 then true
826- else eS(dC))
832+ else eT(dC))
827833 then true
828834 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
829835 then true
830836 else aI("exactly 1 payment are expected")]
831837 if ((ey == ey))
832838 then {
833- let ft = dC.payments[0]
834- let dT = ft.assetId
835- let dS = ft.amount
839+ let fu = dC.payments[0]
840+ let dT = fu.assetId
841+ let dS = fu.amount
836842 let dk = if ((dT == bc))
837843 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
838844 else if ((dT == bd))
839845 then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
840846 else aI("payment asset is not supported")
841847 let Z = dC.caller
842848 let aa = dC.transactionId
843- let fu = dR(dS, dT, Z, aa)
844- if ((fu == fu))
849+ let fv = dR(dS, dT, Z, aa)
850+ if ((fv == fv))
845851 then {
846- let dX = fu._5
847- let fv = fu._4
848- let dQ = fu._3
849- let cY = fu._2
850- let fw = fu._1
851- let fx = if (if ((fo > 0))
852- then (fo > fw)
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)
853859 else false)
854- then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
855- else fw
856- let dL = dJ(fx)
860+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
861+ else fx
862+ let dL = dJ(fy)
857863 if ((dL == dL))
858864 then {
859- let fh = if (fp)
865+ let fi = if (fq)
860866 then {
861- let fy = invoke(bh, "stake", nil, [AttachedPayment(bb, fx)])
862- if ((fy == fy))
867+ let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
868+ if ((fz == fz))
863869 then nil
864870 else throw("Strict value is not equal to itself.")
865871 }
866- else [ScriptTransfer(dC.caller, fx, bb)]
867- let fz = if ((dQ > 0))
872+ else [ScriptTransfer(dC.caller, fy, bb)]
873+ let fA = if ((dQ > 0))
868874 then [ScriptTransfer(aM, dQ, dT)]
869875 else nil
870- let fA = if ((this == aM))
876+ let fB = if ((this == aM))
871877 then $Tuple2(0, 0)
872878 else if (dX)
873879 then $Tuple2(-(dQ), 0)
874880 else $Tuple2(0, -(dQ))
875- let dm = fA._1
876- let dn = fA._2
877- let fB = dl(dm, dn, 0)
878- let fk = fB._1
879- let dc = fB._2
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
880886 let dw = value(getString(ah))
881- let fl = dp(dk, dc)
882- if ((fl == fl))
883- then $Tuple2((((cY ++ fh) ++ fz) ++ fk), fx)
887+ let fm = dp(dk, dc)
888+ if ((fm == fm))
889+ then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
884890 else throw("Strict value is not equal to itself.")
885891 }
886892 else throw("Strict value is not equal to itself.")
887893 }
888894 else throw("Strict value is not equal to itself.")
889895 }
890896 else throw("Strict value is not equal to itself.")
891897 }
892898
893899
894900
895901 @Callable(dC)
896902 func putOneTknREADONLY (dT,dS) = {
897- let fC = dR(dS, aS(dT), unit, unit)
898- let fw = fC._1
899- let cY = fC._2
900- let dQ = fC._3
901- let fv = fC._4
902- let dX = fC._5
903- $Tuple2(nil, $Tuple3(fw, dQ, fv))
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))
904910 }
905911
906912
907913
908914 @Callable(dC)
909-func getOneTkn (fD,fo) = {
910- let fq = {
911- let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912- if ($isInstanceOf(fr, "Boolean"))
913- then fr
914- else throw(($getType(fr) + " couldn't be cast to Boolean"))
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"))
915921 }
916- let fE = if (if (aN())
922+ let fF = if (if (aN())
917923 then true
918924 else (ba == n))
919925 then true
920- else fq
921- let ey = [if (if (!(fE))
926+ else fr
927+ let ey = [if (if (!(fF))
922928 then true
923- else eS(dC))
929+ else eT(dC))
924930 then true
925931 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
926932 then true
927933 else aI("exactly 1 payment are expected")]
928934 if ((ey == ey))
929935 then {
930- let ex = aS(fD)
931- let ft = dC.payments[0]
932- let dT = ft.assetId
933- let ef = ft.amount
936+ let ex = aS(fE)
937+ let fu = dC.payments[0]
938+ let dT = fu.assetId
939+ let ef = fu.amount
934940 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
935941 let Z = dC.caller
936942 let aa = dC.transactionId
937- let fF = ew(ex, ef, dT, Z, aa)
938- if ((fF == fF))
943+ let fG = ew(ex, ef, dT, Z, aa)
944+ if ((fG == fG))
939945 then {
940- let ez = fF._5
941- let fv = fF._4
942- let dQ = fF._3
943- let cY = fF._2
944- let fG = fF._1
945- let dK = if (if ((fo > 0))
946- then (fo > fG)
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)
947953 else false)
948- then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
949- else fG
950- let fH = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
951- if ((fH == fH))
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))
952958 then {
953- let fI = [ScriptTransfer(Z, dK, ex)]
954- let fz = if ((dQ > 0))
959+ let fJ = [ScriptTransfer(Z, dK, ex)]
960+ let fA = if ((dQ > 0))
955961 then [ScriptTransfer(aM, dQ, ex)]
956962 else nil
957- let fJ = {
958- let fK = if ((this == aM))
963+ let fK = {
964+ let fL = if ((this == aM))
959965 then 0
960966 else dQ
961967 if (ez)
962- then $Tuple2(-((dK + fK)), 0)
963- else $Tuple2(0, -((dK + fK)))
968+ then $Tuple2(-((dK + fL)), 0)
969+ else $Tuple2(0, -((dK + fL)))
964970 }
965- let dm = fJ._1
966- let dn = fJ._2
967- let fL = dl(dm, dn, 0)
968- let fk = fL._1
969- let dc = fL._2
970- let fl = dp(dk, dc)
971- if ((fl == fl))
972- then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
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)
973979 else throw("Strict value is not equal to itself.")
974980 }
975981 else throw("Strict value is not equal to itself.")
976982 }
977983 else throw("Strict value is not equal to itself.")
978984 }
979985 else throw("Strict value is not equal to itself.")
980986 }
981987
982988
983989
984990 @Callable(dC)
985991 func getOneTknREADONLY (ex,ef) = {
986- let fM = ew(aS(ex), ef, bb, unit, unit)
987- let fG = fM._1
988- let cY = fM._2
989- let dQ = fM._3
990- let fv = fM._4
991- let ez = fM._5
992- $Tuple2(nil, $Tuple3(fG, dQ, fv))
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))
993999 }
9941000
9951001
9961002
9971003 @Callable(dC)
998-func unstakeAndGetOneTkn (fN,fD,fo) = {
999- let fq = {
1000- let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1001- if ($isInstanceOf(fr, "Boolean"))
1002- then fr
1003- else throw(($getType(fr) + " couldn't be cast to Boolean"))
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"))
10041010 }
1005- let fE = if (if (aN())
1011+ let fF = if (if (aN())
10061012 then true
10071013 else (ba == n))
10081014 then true
1009- else fq
1010- let ey = [if (if (!(fE))
1015+ else fr
1016+ let ey = [if (if (!(fF))
10111017 then true
1012- else eS(dC))
1018+ else eT(dC))
10131019 then true
10141020 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10151021 then true
10161022 else aI("no payments are expected")]
10171023 if ((ey == ey))
10181024 then {
1019- let ex = aS(fD)
1025+ let ex = aS(fE)
10201026 let Z = dC.caller
10211027 let aa = dC.transactionId
10221028 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1023- let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1024- if ((fO == fO))
1029+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1030+ if ((fP == fP))
10251031 then {
1026- let fP = ew(ex, fN, bb, Z, aa)
1027- if ((fP == fP))
1032+ let fQ = ew(ex, fO, bb, Z, aa)
1033+ if ((fQ == fQ))
10281034 then {
1029- let ez = fP._5
1030- let fv = fP._4
1031- let dQ = fP._3
1032- let cY = fP._2
1033- let fG = fP._1
1034- let dK = if (if ((fo > 0))
1035- then (fo > fG)
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)
10361042 else false)
1037- then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
1038- else fG
1039- let fH = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1040- if ((fH == fH))
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))
10411047 then {
1042- let fI = [ScriptTransfer(dC.caller, dK, ex)]
1043- let fz = if ((dQ > 0))
1048+ let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1049+ let fA = if ((dQ > 0))
10441050 then [ScriptTransfer(aM, dQ, ex)]
10451051 else nil
1046- let fQ = {
1047- let fK = if ((this == aM))
1052+ let fR = {
1053+ let fL = if ((this == aM))
10481054 then 0
10491055 else dQ
10501056 if (ez)
1051- then $Tuple2(-((dK + fK)), 0)
1052- else $Tuple2(0, -((dK + fK)))
1057+ then $Tuple2(-((dK + fL)), 0)
1058+ else $Tuple2(0, -((dK + fL)))
10531059 }
1054- let dm = fQ._1
1055- let dn = fQ._2
1056- let fR = dl(dm, dn, 0)
1057- let fk = fR._1
1058- let dc = fR._2
1059- let fl = dp(dk, dc)
1060- if ((fl == fl))
1061- then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
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)
10621068 else throw("Strict value is not equal to itself.")
10631069 }
10641070 else throw("Strict value is not equal to itself.")
10651071 }
10661072 else throw("Strict value is not equal to itself.")
10671073 }
10681074 else throw("Strict value is not equal to itself.")
10691075 }
10701076 else throw("Strict value is not equal to itself.")
10711077 }
10721078
10731079
10741080
10751081 @Callable(dC)
10761082 func get () = {
10771083 let cJ = dB(dC)
1078- let fS = cJ._1
1084+ let fT = cJ._1
10791085 let cq = cJ._2
10801086 let dE = cJ._3
10811087 let bY = cJ._4
10821088 let cr = cJ._5
10831089 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1084- let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1085- if ((fT == fT))
1090+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1091+ if ((fU == fU))
10861092 then {
1087- let fU = dl(-(fS), -(cq), 0)
1088- let fk = fU._1
1089- let dc = fU._2
1090- let fl = dp(dk, dc)
1091- if ((fl == fl))
1092- then (cr ++ fk)
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)
10931099 else throw("Strict value is not equal to itself.")
10941100 }
10951101 else throw("Strict value is not equal to itself.")
10961102 }
10971103
10981104
10991105
11001106 @Callable(dC)
1101-func getNoLess (fV,fW) = {
1107+func getNoLess (fW,fX) = {
11021108 let cJ = dB(dC)
11031109 let cp = cJ._1
11041110 let cq = cJ._2
11051111 let dE = cJ._3
11061112 let bY = cJ._4
11071113 let cr = cJ._5
1108- if ((fV > cp))
1109- then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fV)))
1110- else if ((fW > cq))
1111- then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fW)))
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)))
11121118 else {
11131119 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
1114- let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1115- if ((fT == fT))
1120+ let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
1121+ if ((fU == fU))
11161122 then {
1117- let fX = dl(-(cp), -(cq), 0)
1118- let fk = fX._1
1119- let dc = fX._2
1120- let fl = dp(dk, dc)
1121- if ((fl == fl))
1122- then (cr ++ fk)
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)
11231129 else throw("Strict value is not equal to itself.")
11241130 }
11251131 else throw("Strict value is not equal to itself.")
11261132 }
11271133 }
11281134
11291135
11301136
11311137 @Callable(dC)
11321138 func unstakeAndGet (dK) = {
1133- let fY = if ((size(dC.payments) != 0))
1139+ let fZ = if ((size(dC.payments) != 0))
11341140 then throw("No payments are expected")
11351141 else true
1136- if ((fY == fY))
1142+ if ((fZ == fZ))
11371143 then {
11381144 let bN = aP()
11391145 let ca = fromBase58String(bN[q])
11401146 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1141- let fO = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1142- if ((fO == fO))
1147+ let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
1148+ if ((fP == fP))
11431149 then {
11441150 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11451151 let cp = cJ._1
11461152 let cq = cJ._2
11471153 let cd = parseIntValue(cJ._9)
11481154 let cr = cJ._10
1149- let fZ = if (if (aN())
1155+ let ga = if (if (aN())
11501156 then true
11511157 else (cd == n))
11521158 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11531159 else true
1154- if ((fZ == fZ))
1160+ if ((ga == ga))
11551161 then {
1156- let fT = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1157- if ((fT == fT))
1162+ let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
1163+ if ((fU == fU))
11581164 then {
1159- let ga = dl(-(cp), -(cq), 0)
1160- let fk = ga._1
1161- let dc = ga._2
1162- let fl = dp(dk, dc)
1163- if ((fl == fl))
1164- then (cr ++ fk)
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)
11651171 else throw("Strict value is not equal to itself.")
11661172 }
11671173 else throw("Strict value is not equal to itself.")
11681174 }
11691175 else throw("Strict value is not equal to itself.")
11701176 }
11711177 else throw("Strict value is not equal to itself.")
11721178 }
11731179 else throw("Strict value is not equal to itself.")
11741180 }
11751181
11761182
11771183
11781184 @Callable(dC)
1179-func unstakeAndGetNoLess (fN,gb,fW) = {
1180- let fE = if (aN())
1185+func unstakeAndGetNoLess (fO,gc,fX) = {
1186+ let fF = if (aN())
11811187 then true
11821188 else (ba == n)
1183- let ey = [if (!(fE))
1189+ let ey = [if (!(fF))
11841190 then true
11851191 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
11861192 then true
11871193 else throw("no payments are expected")]
11881194 if ((ey == ey))
11891195 then {
11901196 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1191- let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
1192- if ((fO == fO))
1197+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1198+ if ((fP == fP))
11931199 then {
1194- let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fN, dC.caller)
1200+ let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
11951201 let cp = cJ._1
11961202 let cq = cJ._2
11971203 let cr = cJ._10
1198- let gc = [if ((cp >= gb))
1204+ let gd = [if ((cp >= gc))
11991205 then true
1200- else throw(makeString(["amount asset amount to receive is less than ", toString(gb)], "")), if ((cq >= fW))
1206+ else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
12011207 then true
1202- else throw(makeString(["price asset amount to receive is less than ", toString(fW)], ""))]
1203- if ((gc == gc))
1208+ else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
1209+ if ((gd == gd))
12041210 then {
1205- let fT = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
1206- if ((fT == fT))
1211+ let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1212+ if ((fU == fU))
12071213 then {
1208- let gd = dl(-(cp), -(cq), 0)
1209- let fk = gd._1
1210- let dc = gd._2
1211- let fl = dp(dk, dc)
1212- if ((fl == fl))
1213- then (cr ++ fk)
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)
12141220 else throw("Strict value is not equal to itself.")
12151221 }
12161222 else throw("Strict value is not equal to itself.")
12171223 }
12181224 else throw("Strict value is not equal to itself.")
12191225 }
12201226 else throw("Strict value is not equal to itself.")
12211227 }
12221228 else throw("Strict value is not equal to itself.")
12231229 }
12241230
12251231
12261232
12271233 @Callable(dC)
1228-func activate (ge,gf) = if ((toString(dC.caller) != toString(aL)))
1234+func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
12291235 then throw("permissions denied")
1230- else $Tuple2([StringEntry(ac(), ge), StringEntry(ad(), gf)], "success")
1236+ else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
12311237
12321238
12331239
12341240 @Callable(dC)
12351241 func refreshKLp () = {
1236- let gg = valueOrElse(getInteger(ai), 0)
1237- let gh = if (((height - gg) >= al))
1242+ let gh = valueOrElse(getInteger(ai), 0)
1243+ let gi = if (((height - gh) >= al))
12381244 then unit
12391245 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
1240- if ((gh == gh))
1246+ if ((gi == gi))
12411247 then {
12421248 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
1243- let gi = dl(0, 0, 0)
1244- let gj = gi._1
1245- let dc = gi._2
1249+ let gj = dl(0, 0, 0)
1250+ let gk = gj._1
1251+ let dc = gj._2
12461252 let do = if ((dw != dc))
1247- then gj
1253+ then gk
12481254 else aI("nothing to refresh")
12491255 $Tuple2(do, toString(dc))
12501256 }
12511257 else throw("Strict value is not equal to itself.")
12521258 }
12531259
12541260
12551261
12561262 @Callable(dC)
12571263 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12581264
12591265
12601266
12611267 @Callable(dC)
12621268 func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12631269
12641270
12651271
12661272 @Callable(dC)
12671273 func calcPricesWrapperREADONLY (bH,bI,bM) = {
12681274 let bV = bL(bH, bI, bM)
12691275 $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
12701276 }
12711277
12721278
12731279
12741280 @Callable(dC)
12751281 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
12761282
12771283
12781284
12791285 @Callable(dC)
12801286 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12811287
12821288
12831289
12841290 @Callable(dC)
12851291 func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
12861292
12871293
12881294
12891295 @Callable(dC)
12901296 func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
12911297
12921298
12931299
12941300 @Callable(dC)
12951301 func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
12961302 let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
12971303 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
12981304 }
12991305
13001306
13011307
13021308 @Callable(dC)
13031309 func statsREADONLY () = {
13041310 let bN = aP()
13051311 let ca = fromBase58String(bN[q])
1306- let gk = bN[r]
1307- let gl = bN[s]
1312+ let gl = bN[r]
1313+ let gm = bN[s]
13081314 let cC = bN[v]
13091315 let cD = bN[w]
13101316 let bO = parseIntValue(bN[t])
13111317 let bP = parseIntValue(bN[u])
1312- let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1313- let gn = by(gk)
1318+ let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13141319 let go = by(gl)
1315- let gp = if ((gm == 0))
1320+ let gp = by(gm)
1321+ let gq = if ((gn == 0))
13161322 then [e, e, e]
1317- else bL(gn, go, gm)
1323+ else bL(go, gp, gn)
13181324 let ck = 0
1319- let gq = G(gp[1], b)
1320- let gr = G(gp[2], b)
1321- let gs = value(getInteger(aL, aw(toString(this))))
1322- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gn), toString(go), toString(gm), toString(ck), toString(gq), toString(gr), toString(gs)], j))
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))
13231329 }
13241330
13251331
13261332
13271333 @Callable(dC)
13281334 func evaluatePutByAmountAssetREADONLY (cu) = {
13291335 let bN = aP()
13301336 let ca = fromBase58String(bN[q])
13311337 let cA = bN[r]
13321338 let cb = fromBase58String(cA)
13331339 let cB = bN[s]
13341340 let cc = fromBase58String(cB)
13351341 let bO = parseIntValue(bN[t])
13361342 let bP = parseIntValue(bN[u])
13371343 let cd = bN[p]
1338- let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1339- let gn = by(cA)
1340- let go = by(cB)
1341- let bJ = D(gn, bO)
1342- let bK = D(go, bP)
1343- let cj = if ((gm == 0))
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))
13441350 then e
13451351 else bA(bK, bJ)
13461352 let cG = D(cu, bO)
13471353 let cH = fraction(cG, cj, d)
13481354 let cw = G(cH, bP)
13491355 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13501356 let cR = dI._1
1351- let gt = dI._3
1357+ let gu = dI._3
13521358 let cf = dI._4
13531359 let ch = dI._5
13541360 let ce = dI._6
13551361 $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))
13561362 }
13571363
13581364
13591365
13601366 @Callable(dC)
13611367 func evaluatePutByPriceAssetREADONLY (cw) = {
13621368 let bN = aP()
13631369 let ca = fromBase58String(bN[q])
13641370 let cA = bN[r]
13651371 let cb = fromBase58String(cA)
13661372 let cB = bN[s]
13671373 let cc = fromBase58String(cB)
13681374 let bO = parseIntValue(bN[t])
13691375 let bP = parseIntValue(bN[u])
13701376 let cd = bN[p]
1371- let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
1372- let gu = by(cA)
1373- let gv = by(cB)
1374- let gw = D(gu, bO)
1375- let gx = D(gv, bP)
1376- let cj = if ((gm == 0))
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))
13771383 then e
1378- else bA(gx, gw)
1384+ else bA(gy, gx)
13791385 let cH = D(cw, bP)
13801386 let cG = fraction(cH, d, cj)
13811387 let cu = G(cG, bO)
13821388 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13831389 let cR = dI._1
1384- let gt = dI._3
1390+ let gu = dI._3
13851391 let cf = dI._4
13861392 let ch = dI._5
13871393 let ce = dI._6
13881394 $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))
13891395 }
13901396
13911397
13921398
13931399 @Callable(dC)
1394-func evaluateGetREADONLY (gy,gz) = {
1395- let cJ = bW("", gy, gz, this)
1400+func evaluateGetREADONLY (gz,gA) = {
1401+ let cJ = bW("", gz, gA, this)
13961402 let cp = cJ._1
13971403 let cq = cJ._2
13981404 let cf = cJ._5
13991405 let ch = cJ._6
14001406 let ce = cJ._7
14011407 let ck = cJ._8
14021408 let cd = parseIntValue(cJ._9)
14031409 $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))
14041410 }
14051411
14061412
1407-@Verifier(gA)
1408-func gB () = {
1409- let gC = {
1410- let dN = eP()
1413+@Verifier(gB)
1414+func gC () = {
1415+ let gD = {
1416+ let dN = eQ()
14111417 if ($isInstanceOf(dN, "ByteVector"))
14121418 then {
1413- let eT = dN
1414- eT
1419+ let eU = dN
1420+ eU
14151421 }
14161422 else if ($isInstanceOf(dN, "Unit"))
1417- then gA.senderPublicKey
1423+ then gB.senderPublicKey
14181424 else throw("Match error")
14191425 }
1420- let dN = gA
1426+ let dN = gB
14211427 if ($isInstanceOf(dN, "Order"))
14221428 then {
14231429 let ds = dN
1424- let gD = aO()
1430+ let gE = aO()
14251431 let aB = dr(ds)
14261432 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
1427- let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gD)
1433+ let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
14281434 if (if (if (aB)
14291435 then aC
14301436 else false)
14311437 then aD
14321438 else false)
14331439 then true
14341440 else aA(aB, aC, aD)
14351441 }
14361442 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14371443 then {
1438- let eQ = dN
1439- let gE = blake2b256(value(eQ.script))
1440- let gF = fromBase64String(value(getString(aL, ay())))
1441- let gG = scriptHash(this)
1442- if (if ((gF == gE))
1443- then (gG != gE)
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)
14441450 else false)
14451451 then true
1446- else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
1452+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14471453 }
1448- else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
1454+ else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14491455 }
14501456

github/deemru/w8io/026f985 
281.86 ms