tx · 31P5YtQukrJKwuLQCzAFYFQAQ11Ra44ZcWzgy926mKte

3N1UzzyDKhjKyRH3eZ8ZNf1j9Uo4gJjFxor:  -0.03300000 Waves

2022.11.28 15:29 [2336958] smart account 3N1UzzyDKhjKyRH3eZ8ZNf1j9Uo4gJjFxor > SELF 0.00000000 Waves

{ "type": 13, "id": "31P5YtQukrJKwuLQCzAFYFQAQ11Ra44ZcWzgy926mKte", "fee": 3300000, "feeAssetId": null, "timestamp": 1669638527522, "version": 1, "sender": "3N1UzzyDKhjKyRH3eZ8ZNf1j9Uo4gJjFxor", "senderPublicKey": "CVCizwVtaT9i3E82rNofS5vLyaXDwddyUhjsNF3EoCeV", "proofs": [ "2Te4Hi2rfJXdSHz5gRQ3WNYQwVCkzds1SgiA7WcfcqMxEUaz2pYNiqV5v4JW5WPBEABxrQvAxjNQHuGWrR8QrsY7" ], "script": "base64:BgKsLAgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5MTU4MDgxIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIDa0xwIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjMwOTkyMzM5MiIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMzM5NjIzNTQ1IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzNjY3MjM3MjYiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI1MjAzMjUzNzAiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjk3MjI3MDIyIgt0b3RhbEFtb3VudCINJHQwMjcwMjYyNzI1MiILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iB2FjdGlvbnMiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzMjE1MzMyMjE4IhFyZWZyZXNoS0xwQWN0aW9ucyILbWF4U2xpcHBhZ2UiDSR0MDMyNTA0MzI1NjkiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzMzNDUzMzQ5NCITZW1pdEFtb3VudEVzdGltYXRlZCIFYm9udXMiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNDA4MDM0Mjc3Ig0kdDAzNDI4MDM0Mzg4Ig0kdDAzNDU4MTM0NzM4Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzNTU0MzM1NjkzIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM2MTkzMzY0NDAiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM2NDQzMzY1NTEiDSR0MDM2NzM1MzY4OTEiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM3NzE2Mzc4NjQiDSR0MDM4MzU5Mzg2MDYiDSR0MDM4NjA5Mzg3MTciCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDM5NTA5Mzk1OTEiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQwMzg3NDA0NjgiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDE0NDE0MTUyMiIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQyNjYyNDI3NDMiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0MzczMTQzNzg2Ig1wb29sTFBCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaGsAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSwFMAU0JAGsDBQFLBQFMBQFNAQFOAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFPAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBagEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAACYWMCByVzX19mZWUAAmFkCQBrAwAKBQFiAJBOAAJhZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhYwUCYWQAAmFmCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFnCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFoCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFpAB4AAmFqCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFoBQJhaQECYWsAAhElc19fZmFjdG9yeUNvbmZpZwECYWwAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFtAQJhbgkArAICCQCsAgICCCVzJXMlc19fBQJhbgIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFvAgJhcAJhcQkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXACAl9fBQJhcQIIX19jb25maWcBAmFyAQJhcwkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhcwECYXQAAgwlc19fc2h1dGRvd24BAmF1AQJhdgkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmF2AQJhdwACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJheAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmF5AwJhegJhQQJhQgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYXoCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUECDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFCAQJhQwICYUQCYUUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhRAUCYUUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUQJAMwIAgIBLgkAzAgCBQJhRQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhRgICYUQCYUUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhRAUCYUUJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYUQJAMwIAgIBLgkAzAgCBQJhRQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhRwECYUgJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUgFA25pbAIBIAECYUkBAmFICQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYUgFA25pbAIBIAACYUoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhQwIFBHRoaXMJAQFQAAACYUsJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhQwIFAmFKBQJheAECYUwACQELdmFsdWVPckVsc2UCCQCbCAIFAmFKCQECYXQABwECYU0ACQDZBAEJAQJhQwIFAmFKCQECYWwAAQJhTgAEAmFPCQECYUMCBQR0aGlzCQECYWEABAJhUAkBAmFDAgUEdGhpcwkBAmFiAAQCYXEJAQJhRgIFAmFKCQECYXIBBQJhUAQCYXAJAQJhRgIFAmFKCQECYXIBBQJhTwkAtQkCCQECYUMCBQJhSgkBAmFvAgkApAMBBQJhcAkApAMBBQJhcQUBagECYVEBAmFSAwkAAAIFAmFSBQFpBQR1bml0CQDZBAEFAmFSAQJhUwECYVIDCQAAAgUCYVIFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYVIBAmFUAQJhVQkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmFVBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXAJANkEAQkAkQMCBQJhVQUBcQkBAmFRAQkAkQMCBQJhVQUBcgkBAmFRAQkAkQMCBQJhVQUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVUFAXUAAmFWCQECYVQBCQECYU4AAAJhVwUCYVYAAmFYCAUCYVcCXzEAAmFZCAUCYVcCXzIAAmFaCAUCYVcCXzMAAmJhCAUCYVcCXzQAAmJiCAUCYVcCXzUAAmJjCAUCYVcCXzYAAmJkCAUCYVcCXzcBAmJlAAkAtQkCCQECYUMCBQJhSgkBAmFrAAUBagACYmYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJiZQAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJnCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmUABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJiaAoCYmkCYmoCYmsCYmwCYm0CYm4CYm8CYnACYnECYnIJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoJAMwIAgkApAMBBQJiawkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyBQNuaWwFAWoBAmJzBgJidAJidQJidgJibAJibwJicAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ0CQDMCAIJAKQDAQUCYnUJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm8JAMwIAgkApAMBBQJicAUDbmlsBQFqAQJidwECYngDCQAAAgUCYngCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJ4AQJieQICYnoCYkEJALwCAwUCYnoFAWQFAmJBAQJiQgQCYkMCYkQCYkUCYkYEAmJHCQEBRAIFAmJFBQJiQwQCYkgJAQFEAgUCYkYFAmJECQECYnkCBQJiSAUCYkcBAmJJAwJiRQJiRgJiSgQCYksJAQJhTgAEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmJOCQECYkIEBQJiTAUCYk0FAmJFBQJiRgQCYkEJAQFEAgUCYkUFAmJMBAJiegkBAUQCBQJiRgUCYk0EAmJPCQEBRAIFAmJKBQFiBAJiUAkBAmJ5AgUCYkEFAmJPBAJiUQkBAmJ5AgUCYnoFAmJPCQDMCAIFAmJOCQDMCAIFAmJQCQDMCAIFAmJRBQNuaWwBAmJSAwJiRQJiRgJiSgQCYlMJAQJiSQMFAmJFBQJiRgUCYkoJAMwIAgkBAUcCCQCRAwIFAmJTAAAFAWIJAMwIAgkBAUcCCQCRAwIFAmJTAAEFAWIJAMwIAgkBAUcCCQCRAwIFAmJTAAIFAWIFA25pbAECYlQEAmJVAmJWAmJXAVgEAmJLCQECYU4ABAJiWAkAkQMCBQJiSwUBcQQCYlkJAJEDAgUCYksFAXIEAmJaCQCRAwIFAmJLBQFzBAJiQwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiRAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCY2IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJiWAkArAICCQCsAgICBkFzc2V0IAUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUCYlgFAmJWCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAJjYwkBAmJ3AQUCYlkEAmNkCQEBRAIFAmNjBQJiQwQCY2UJAQJidwEFAmJaBAJjZgkBAUQCBQJjZQUCYkQEAmNnCQECYnkCBQJjZgUCY2QEAmNoCQEBRwIFAmNnBQFiBAJjaQkBAUQCBQJiVwUBYgQCY2oJAQFEAgUCY2IFAWIEAmNrCQC8AgMFAmNkBQJjaQUCY2oEAmNsCQC8AgMFAmNmBQJjaQUCY2oEAmNtCQEBRwIFAmNrBQJiQwQCY24JAQFHAgUCY2wFAmJEBAJjbwMJAAACBQJiVQIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCY20DCQAAAgUCYlkCBVdBVkVTBQR1bml0CQDZBAEFAmJZCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNuAwkAAAIFAmJaAgVXQVZFUwUEdW5pdAkA2QQBBQJiWgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQUBWAUCYlUJAQJicwYFAmNtBQJjbgUCYlcFAmNoBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNoBQNuaWwJAJwKCgUCY20FAmNuBQJiWQUCYloFAmNjBQJjZQUCY2IFAmNnBQJjYQUCY28BAmNwCQJiVQJjcQJjcgJjcwJjdAJjdQFYAmN2AmN3BAJiSwkBAmFOAAQCYlgJANkEAQkAkQMCBQJiSwUBcQQCY3gJAJEDAgUCYksFAXIEAmN5CQCRAwIFAmJLBQFzBAJjegkAkQMCBQJiSwUBdgQCY0EJAJEDAgUCYksFAXcEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmNhCQCRAwIFAmJLBQFwBAJjYggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiWAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJiWAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNCCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmNzCQDZBAECBVdBVkVTBAJjQwkA2AQBCQELdmFsdWVPckVsc2UCBQJjdQkA2QQBAgVXQVZFUwMDCQECIT0CBQJjeAUCY0IGCQECIT0CBQJjeQUCY0MJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjYwMFAmN2CQECYncBBQJjeAkAZQIJAQJidwEFAmN4BQJjcgQCY2UDBQJjdgkBAmJ3AQUCY3kJAGUCCQECYncBBQJjeQUCY3QEAmNECQEBRAIFAmNyBQJiTAQCY0UJAQFEAgUCY3QFAmJNBAJjRgkBAmJ5AgUCY0UFAmNEBAJjZAkBAUQCBQJjYwUCYkwEAmNmCQEBRAIFAmNlBQJiTQQCY0cDCQAAAgUCY2IAAAQCY2cFAWUEAmNIBQFlBAJiTwkAdgYJALkCAgUCY0QFAmNFAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRwIFAmJPBQFiCQEBRwIFAmNEBQJiTAkBAUcCBQJjRQUCYk0JAQJieQIJALcCAgUCY2YFAmNFCQC3AgIFAmNkBQJjRAUCY0gEAmNnCQECYnkCBQJjZgUCY2QEAmNICQC8AgMJAQFPAQkAuAICBQJjZwUCY0YFAWQFAmNnBAJjSQkBAUQCBQJjcQUBYgMDCQECIT0CBQJjZwUBZQkAvwICBQJjSAUCY0kHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNIAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY0kEAmNqCQEBRAIFAmNiBQFiBAJjSgkAvAIDBQJjRAUCY2cFAWQEAmNLCQC8AgMFAmNFBQFkBQJjZwQCY0wDCQC/AgIFAmNKBQJjRQkAlAoCBQJjSwUCY0UJAJQKAgUCY0QFAmNKBAJjTQgFAmNMAl8xBAJjTggFAmNMAl8yBAJiTwkAvAIDBQJjagUCY04FAmNmCQCXCgUJAQFHAgUCYk8FAWIJAQFHAgUCY00FAmJMCQEBRwIFAmNOBQJiTQUCY2cFAmNIBAJjTwgFAmNHAl8xBAJjUAgFAmNHAl8yBAJjUQgFAmNHAl8zBAJjaAkBAUcCCAUCY0cCXzQFAWIEAmNSCQEBRwIIBQJjRwJfNQUBYgMJAGcCAAAFAmNPCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjUwMJAQEhAQUCY3cAAAUCY08EAmNUCQBlAgUCY3IFAmNQBAJjVQkAZQIFAmN0BQJjUQQCY1YJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCY2gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCBQFYBQJiVQkBAmJoCgUCY1AFAmNRBQJjUwUCY2gFAmNxBQJjUgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1QFAmNVBQNuaWwJAJ8KDQUCY08FAmNTBQJjaAUCY2MFAmNlBQJjYgUCYlgFAmNhBQJjVgUCY1QFAmNVBQJjcwUCY3UBAmNXAQJjWAQCYksJAQJhTgAEAmNZCQCRAwIFAmJLBQFyBAJjWgkAkQMCBQJiSwUBcwQCY2EJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBcAQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCZGEJAQJidwEFAmNZBAJkYgkBAmJ3AQUCY1oEAmNnAwkAAAIIBQJjWAlvcmRlclR5cGUFA0J1eQkBAmJCBAUCYkwFAmJNCQBkAgUCZGEIBQJjWAZhbW91bnQFAmRiCQECYkIEBQJiTAUCYk0JAGUCBQJkYQgFAmNYBmFtb3VudAUCZGIEAmNoCQEBRwIFAmNnBQFiAwMDCQECYUwABgkAAAIFAmNhBQFtBgkAAAIFAmNhBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAQCZGMICAUCY1gJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BAJkZAMJAAACBQJkYwUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGMEAmRlCAgFAmNYCWFzc2V0UGFpcgpwcmljZUFzc2V0BAJkZgMJAAACBQJkZQUEdW5pdAIFV0FWRVMJANgEAQkBBXZhbHVlAQUCZGUDAwkBAiE9AgUCZGQFAmNZBgkBAiE9AgUCZGYFAmNaCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZGcIBQJjWAVwcmljZQQCZGgJAGsDBQFiBQJiTQUCYkwEAmRpCQEBSgMFAmRnBQFiBQJkaAQCZGoDCQAAAggFAmNYCW9yZGVyVHlwZQUDQnV5CQBnAgUCY2gFAmRpCQBnAgUCZGkFAmNoBAJkawkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAmFmCQECYUkBAg9rTHAgaXMgcmVxdWlyZWQEAmRsAAAEAmRtCQBmAgUCZGwFAmRrBQJkbQECZG4BAmRvAwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkcAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAAQCYlYJAQV2YWx1ZQEIBQJkcAdhc3NldElkBAJkcQgFAmRwBmFtb3VudAQCY0cJAQJiVAQJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJANgEAQUCYlYFAmRxCAUCZG8GY2FsbGVyBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkEAmNvCAUCY0cDXzEwAwMJAQJhTAAGCQAAAgUCY2EFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNhCQCXCgUFAmNtBQJjbgUCZHEFAmJWBQJjbwECZHIDAmRvAmNxAmN3AwkBAiE9AgkAkAMBCAUCZG8IcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRzCQEFdmFsdWUBCQCRAwIIBQJkbwhwYXltZW50cwAABAJkdAkBBXZhbHVlAQkAkQMCCAUCZG8IcGF5bWVudHMAAQQCZHUJAQJjcAkJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQFAmNxCAUCZHMGYW1vdW50CAUCZHMHYXNzZXRJZAgFAmR0BmFtb3VudAgFAmR0B2Fzc2V0SWQJAKUIAQgFAmRvBmNhbGxlcgcFAmN3BAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCZHUCXzgDAwMJAQJhTAAGCQAAAgUCY2EFAWwGCQAAAgUCY2EFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNhBQJkdQECZHYBAmR3BAJkeAkA/AcEBQJhSgIEZW1pdAkAzAgCBQJkdwUDbmlsBQNuaWwDCQAAAgUCZHgFAmR4BAJkeQQCZHoFAmR4AwkAAQIFAmR6AgdBZGRyZXNzBAJkQQUCZHoJAPwHBAUCZEECBGVtaXQJAMwIAgUCZHcFA25pbAUDbmlsBQR1bml0AwkAAAIFAmR5BQJkeQUCZHcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRCAQJkdwQCZEMJAGsDBQJkdwUCYWUFAWIJAJQKAgkAZQIFAmR3BQJkQwUCZEMBAmREBAJkRQJkRgFYAVkEAmRHCQAAAgUBWQUEdW5pdAQCZEgJAQJidwEJAQJhUwEFAmJhBAJkSQkBAmJ3AQkBAmFTAQUCYmIEAmRKAwkAAAIFAmRGBQJiYQYDCQAAAgUCZEYFAmJiBwkBAmFHAQINaW52YWxpZCBhc3NldAQCZEsDBQJkRwkAlAoCBQJkSAUCZEkDBQJkSgkAlAoCCQBlAgUCZEgFAmRFBQJkSQkAlAoCBQJkSAkAZQIFAmRJBQJkRQQCZEwIBQJkSwJfMQQCZE0IBQJkSwJfMgQCZE4DBQJkSgkAlAoCBQJkRQAACQCUCgIAAAUCZEUEAmRPCAUCZE4CXzEEAmRQCAUCZE4CXzIEAmRRCAkBAmRCAQUCZE8CXzEEAmRSCAkBAmRCAQUCZFACXzEEAmRTCQECZEIBBQJkRQQCZFQIBQJkUwJfMQQCZEMIBQJkUwJfMgQCZFUJAGQCBQJkTAUCZFEEAmRWCQBkAgUCZE0FAmRSBAJkVwkBAmJ5AgkBAUQCBQJkVgUCYmQJAQFEAgUCZFUFAmJjBAJkWAkBAUcCBQJkVwUBYgQCZFkDBQJkSgUCZEwFAmRNBAJkWgkAtgIBBQJkWQQCZWEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhWgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhWgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmViAwkAvwICBQJlYQUBZgYJAQJhRwECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZWIFAmViBAJlYwkAtgIBBQJkVAQCZWQJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZWEJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJlYwUBZAUCZFoAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNWAwUCZEcFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkWAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkWAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYmgKBQJkTwUCZFAFAmVkBQJkWAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVlCQECYnkCCQEBRAIFAmRNBQJiZAkBAUQCBQJkTAUCYmMEAmVmCQEBRwIFAmVlBQFiBAJlZwQCZWgDBQJkSgkAlAoCBQJkTwUCZEwJAJQKAgUCZFAFAmRNBAJkdwgFAmVoAl8xBAJlaQgFAmVoAl8yBAJlagkAoAMBCQC8AgMFAmVhCQC2AgEJAGkCBQJkdwACCQC2AgEFAmVpCQBrAwkAZQIFAmVkBQJlagUBYgUCZWoJAJcKBQUCZWQFAmNWBQJkQwUCZWcFAmRKCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlawUCZWwCZFQCZEYBWAFZBAJkRwkAAAIFAVkFBHVuaXQEAmVtCQDMCAIDCQAAAgUCZEYFAmFaBgkBAmFHAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVtBQJlbQQCZW4DCQAAAgUCZWwFAmJhBgMJAAACBQJlbAUCYmIHCQECYUcBAg1pbnZhbGlkIGFzc2V0BAJlbwMFAmVuCQC2AgEJAQJidwEJAQJhUwEFAmJhCQC2AgEJAQJidwEJAQJhUwEFAmJiBAJlcAkBAmJ3AQkBAmFTAQUCYmEEAmVxCQECYncBCQECYVMBBQJiYgQCZXIDBQJlbgUCZXAFAmVxBAJlcwkAtgIBBQJlcgQCZWEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhWgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhWgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmV0CQC2AgEFAmRUBAJldQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlbwkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZXQFAWQFAmVhABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmV2CQECZEIBBQJldQQCZXcIBQJldgJfMQQCZEMIBQJldgJfMgQCZXgDBQJlbgkAlgoEBQJldwAACQBlAgUCZXAFAmV1BQJlcQkAlgoEAAAFAmV3BQJlcAkAZQIFAmVxBQJldQQCZXkIBQJleAJfMQQCZXoIBQJleAJfMgQCZUEIBQJleAJfMwQCZUIIBQJleAJfNAQCZFcJAQJieQIJAQFEAgUCZUIFAmJkCQEBRAIFAmVBBQJiYwQCZFgJAQFHAgUCZFcFAWIEAmNWAwUCZEcFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYnMGBQJleQUCZXoFAmRUBQJkWAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkWAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkWAUDbmlsBAJlZQkBAmJ5AgkBAUQCBQJlcQUCYmQJAQFEAgUCZXAFAmJjBAJlZgkBAUcCBQJlZQUBYgQCZWcEAmVDCQBoAgkAoAMBCQC8AgMFAmVvBQJldAUCZWEAAgkAawMJAGUCBQJldwUCZUMFAWIFAmVDCQCXCgUFAmV3BQJjVgUCZEMFAmVnBQJlbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZUQDAmVFAmVGAmNiBAJlRwkAvAIDCQB2BgkAuQICBQJlRQUCZUYAAAkAtgIBAAUAAQAABQRET1dOBQFkBQJjYgUCZUcBAmVIAwJlSQJlSgJlSwQCZUwJAGQCCQECYncBCQECYVMBBQJiYQUCZUkEAmVNCQBkAgkBAmJ3AQkBAmFTAQUCYmIFAmVKBAJlTgkAZAIICQEFdmFsdWUBCQDsBwEFAmFaCHF1YW50aXR5BQJlSwQCZUcJAQJlRAMJALYCAQUCZUwJALYCAQUCZU0JALYCAQUCZU4EAmVPCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhZwUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFmCQCmAwEFAmVHBQNuaWwJAJQKAgUCZU8FAmVHAQJlUAAEAmR6CQCiCAEJAQFRAAMJAAECBQJkegIGU3RyaW5nBAJlUQUCZHoJANkEAQUCZVEDCQABAgUCZHoCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVIABAJkegkAoggBCQEBUgADCQABAgUCZHoCBlN0cmluZwQCZVEFAmR6CQDZBAEFAmVRAwkAAQIFAmR6AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVTAQJkbwQCZHoJAQJlUAADCQABAgUCZHoCCkJ5dGVWZWN0b3IEAmVUBQJkegkAAAIIBQJkbw9jYWxsZXJQdWJsaWNLZXkFAmVUAwkAAQIFAmR6AgRVbml0CQAAAggFAmRvBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlVQECZG8EAmVWCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmR6CQECZVAAAwkAAQIFAmR6AgpCeXRlVmVjdG9yBAJlVAUCZHoDCQAAAggFAmRvD2NhbGxlclB1YmxpY0tleQUCZVQGBQJlVgMJAAECBQJkegIEVW5pdAMJAAACCAUCZG8GY2FsbGVyBQR0aGlzBgUCZVYJAAIBAgtNYXRjaCBlcnJvchsCZG8BCnNldE1hbmFnZXIBAmVXBAJlWAkBAmVVAQUCZG8DCQAAAgUCZVgFAmVYBAJlWQkA2QQBBQJlVwMJAAACBQJlWQUCZVkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlVwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQ5jb25maXJtTWFuYWdlcgAEAmVaCQECZVIABAJmYQMJAQlpc0RlZmluZWQBBQJlWgYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmEFAmZhBAJmYgMJAAACCAUCZG8PY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlWgYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmIFAmZiCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlWgkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEDcHV0AgJjcQJmYwMJAGYCAAAFAmNxCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmR1CQECZHIDBQJkbwUCY3EGBAJjUwgFAmR1Al8yBAJiWAgFAmR1Al83BAJjbwgFAmR1Al85BAJjVAgFAmR1A18xMAQCY1UIBQJkdQNfMTEEAmZkCAUCZHUDXzEyBAJmZQgFAmR1A18xMwQCZHgJAPwHBAUCYUoCBGVtaXQJAMwIAgUCY1MFA25pbAUDbmlsAwkAAAIFAmR4BQJkeAQCZHkEAmR6BQJkeAMJAAECBQJkegIHQWRkcmVzcwQCZEEFAmR6CQD8BwQFAmRBAgRlbWl0CQDMCAIFAmNTBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkeQUCZHkEAmZmAwkAZgIFAmNUAAAJAPwHBAUCYmcCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmZAUCY1QFA25pbAUDbmlsAwkAAAIFAmZmBQJmZgQCZmcDCQBmAgUCY1UAAAkA/AcEBQJiZwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZlBQJjVQUDbmlsBQNuaWwDCQAAAgUCZmcFAmZnBAJmaAMFAmZjBAJmaQkA/AcEBQJiZgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmNTBQNuaWwDCQAAAgUCZmkFAmZpBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRvBmNhbGxlcgUCY1MFAmJYBQNuaWwEAmZqCQECZUgDAAAAAAAABAJmawgFAmZqAl8xBAJlRwgFAmZqAl8yCQDOCAIJAM4IAgUCY28FAmZoBQJmawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEKcHV0Rm9yRnJlZQECZmwDCQBmAgAABQJmbAkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJkdQkBAmRyAwUCZG8FAmZsBwQCY28IBQJkdQJfOQQCZm0JAQJlSAMAAAAAAAAEAmZrCAUCZm0CXzEEAmVHCAUCZm0CXzIJAM4IAgUCY28FAmZrAmRvAQlwdXRPbmVUa24CAmZuAmZvBAJmcAoAAmZxCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnECB0Jvb2xlYW4FAmZxCQACAQkArAICCQADAQUCZnECHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZyAwMDCQECYUwABgkAAAIFAmFZBQFsBgkAAAIFAmFZBQFuBgUCZnAEAmVtCQDMCAIDAwkBASEBBQJmcgYJAQJlUwEFAmRvBgkBAmFHAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZG8IcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVtBQJlbQQCZnMJAJEDAggFAmRvCHBheW1lbnRzAAAEAmRGCAUCZnMHYXNzZXRJZAQCZEUIBQJmcwZhbW91bnQEAVgIBQJkbwZjYWxsZXIEAVkIBQJkbw10cmFuc2FjdGlvbklkBAJmdAkBAmREBAUCZEUFAmRGBQFYBQFZBAJmdQgFAmZ0Al8xBAJjVggFAmZ0Al8yBAJkQwgFAmZ0Al8zBAJmdggFAmZ0Al80BAJkSggFAmZ0Al81BAJmdwMDCQBmAgUCZm4AAAkAZgIFAmZuBQJmdQcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZm4FA25pbAIABQJmdQQCZHgJAQJkdgEFAmZ3AwkAAAIFAmR4BQJkeAQCZmgDBQJmbwQCZngJAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFaBQJmdwUDbmlsAwkAAAIFAmZ4BQJmeAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkbwZjYWxsZXIFAmZ3BQJhWgUDbmlsBAJmeQMJAGYCBQJkQwAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJkQwUCZEYFA25pbAUDbmlsBAJmegMJAAACBQR0aGlzBQJhSwkAlAoCAAAAAAMFAmRKCQCUCgIJAQEtAQUCZEMAAAkAlAoCAAAJAQEtAQUCZEMEAmVJCAUCZnoCXzEEAmVKCAUCZnoCXzIEAmZBCQECZUgDBQJlSQUCZUoAAAQCZmsIBQJmQQJfMQQCZUcIBQJmQQJfMgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZmgFAmZ5BQJmawUCZncJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BEXB1dE9uZVRrblJFQURPTkxZAgJkRgJkRQQCZkIJAQJkRAQFAmRFCQECYVEBBQJkRgUEdW5pdAUEdW5pdAQCZnUIBQJmQgJfMQQCY1YIBQJmQgJfMgQCZEMIBQJmQgJfMwQCZnYIBQJmQgJfNAQCZEoIBQJmQgJfNQkAlAoCBQNuaWwJAJUKAwUCZnUFAmRDBQJmdgJkbwEJZ2V0T25lVGtuAgJmQwJmbgQCZnAKAAJmcQkA/AcEBQJhSgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZxAgdCb29sZWFuBQJmcQkAAgEJAKwCAgkAAwEFAmZxAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmRAMDCQECYUwABgkAAAIFAmFZBQFuBgUCZnAEAmVtCQDMCAIDAwkBASEBBQJmRAYJAQJlUwEFAmRvBgkBAmFHAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZG8IcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVtBQJlbQQCZWwJAQJhUQEFAmZDBAJmcwkAkQMCCAUCZG8IcGF5bWVudHMAAAQCZEYIBQJmcwdhc3NldElkBAJkVAgFAmZzBmFtb3VudAQBWAgFAmRvBmNhbGxlcgQBWQgFAmRvDXRyYW5zYWN0aW9uSWQEAmZFCQECZWsFBQJlbAUCZFQFAmRGBQFYBQFZBAJmRggFAmZFAl8xBAJjVggFAmZFAl8yBAJkQwgFAmZFAl8zBAJmdggFAmZFAl80BAJlbggFAmZFAl81BAJkdwMDCQBmAgUCZm4AAAkAZgIFAmZuBQJmRgcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZm4FA25pbAIABQJmRgQCZkcJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZFQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZEYFAmRUBQNuaWwDCQAAAgUCZkcFAmZHBAJmSAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkdwUCZWwFA25pbAQCZnkDCQBmAgUCZEMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZEMFAmVsBQNuaWwFA25pbAQCZkkEAmZKAwkAAAIFBHRoaXMFAmFLAAAFAmRDAwUCZW4JAJQKAgkBAS0BCQBkAgUCZHcFAmZKAAAJAJQKAgAACQEBLQEJAGQCBQJkdwUCZkoEAmVJCAUCZkkCXzEEAmVKCAUCZkkCXzIEAmZLCQECZUgDBQJlSQUCZUoAAAQCZmsIBQJmSwJfMQQCZUcIBQJmSwJfMgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZkgFAmZ5BQJmawUCZHcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BEWdldE9uZVRrblJFQURPTkxZAgJlbAJkVAQCZkwJAQJlawUJAQJhUQEFAmVsBQJkVAUCYVoFBHVuaXQFBHVuaXQEAmZGCAUCZkwCXzEEAmNWCAUCZkwCXzIEAmRDCAUCZkwCXzMEAmZ2CAUCZkwCXzQEAmVuCAUCZkwCXzUJAJQKAgUDbmlsCQCVCgMFAmZGBQJkQwUCZnYCZG8BE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZNAmZDAmZuBAJmcAoAAmZxCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnECB0Jvb2xlYW4FAmZxCQACAQkArAICCQADAQUCZnECHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZEAwMJAQJhTAAGCQAAAgUCYVkFAW4GBQJmcAQCZW0JAMwIAgMDCQEBIQEFAmZEBgkBAmVTAQUCZG8GCQECYUcBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkbwhwYXltZW50cwAABgkBAmFHAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZW0FAmVtBAJlbAkBAmFRAQUCZkMEAVgIBQJkbwZjYWxsZXIEAVkIBQJkbw10cmFuc2FjdGlvbklkBAJmTgkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFaCQDMCAIFAmZNBQNuaWwFA25pbAMJAAACBQJmTgUCZk4EAmZPCQECZWsFBQJlbAUCZk0FAmFaBQFYBQFZBAJmRggFAmZPAl8xBAJjVggFAmZPAl8yBAJkQwgFAmZPAl8zBAJmdggFAmZPAl80BAJlbggFAmZPAl81BAJkdwMDCQBmAgUCZm4AAAkAZgIFAmZuBQJmRgcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZm4FA25pbAIABQJmRgQCZkcJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZk0FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVoFAmZNBQNuaWwDCQAAAgUCZkcFAmZHBAJmSAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZG8GY2FsbGVyBQJkdwUCZWwFA25pbAQCZnkDCQBmAgUCZEMAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZEMFAmVsBQNuaWwFA25pbAQCZlAEAmZKAwkAAAIFBHRoaXMFAmFLAAAFAmRDAwUCZW4JAJQKAgkBAS0BCQBkAgUCZHcFAmZKAAAJAJQKAgAACQEBLQEJAGQCBQJkdwUCZkoEAmVJCAUCZlACXzEEAmVKCAUCZlACXzIEAmZRCQECZUgDBQJlSQUCZUoAAAQCZmsIBQJmUQJfMQQCZUcIBQJmUQJfMgkAlAoCCQDOCAIJAM4IAgkAzggCBQJjVgUCZkgFAmZ5BQJmawUCZHcJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZG8BA2dldAAEAmNHCQECZG4BBQJkbwQCZlIIBQJjRwJfMQQCY24IBQJjRwJfMgQCZHEIBQJjRwJfMwQCYlYIBQJjRwJfNAQCY28IBQJjRwJfNQQCZlMJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZHEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlYFAmRxBQNuaWwDCQAAAgUCZlMFAmZTBAJmVAkBAmVIAwkBAS0BBQJmUgkBAS0BBQJjbgAABAJmawgFAmZUAl8xBAJlRwgFAmZUAl8yCQDOCAIFAmNvBQJmawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEJZ2V0Tm9MZXNzAgJmVQJmVgQCY0cJAQJkbgEFAmRvBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJkcQgFAmNHAl8zBAJiVggFAmNHAl80BAJjbwgFAmNHAl81AwkAZgIFAmZVBQJjbQkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY20CAyA8IAkApAMBBQJmVQMJAGYCBQJmVgUCY24JAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjbgIDIDwgCQCkAwEFAmZWBAJmUwkA/AcEBQJhSgIEYnVybgkAzAgCBQJkcQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiVgUCZHEFA25pbAMJAAACBQJmUwUCZlMEAmZXCQECZUgDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZrCAUCZlcCXzEEAmVHCAUCZlcCXzIJAM4IAgUCY28FAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQ11bnN0YWtlQW5kR2V0AQJkdwQCZlgDCQECIT0CCQCQAwEIBQJkbwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmWAUCZlgEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJmTgkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmJYCQDMCAIFAmR3BQNuaWwFA25pbAMJAAACBQJmTgUCZk4EAmNHCQECYlQECQDYBAEIBQJkbw10cmFuc2FjdGlvbklkCQDYBAEFAmJYBQJkdwgFAmRvBmNhbGxlcgQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85BAJjbwgFAmNHA18xMAQCZlkDAwkBAmFMAAYJAAACBQJjYQUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCY2EGAwkAAAIFAmZZBQJmWQQCZlMJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZHcFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlgFAmR3BQNuaWwDCQAAAgUCZlMFAmZTBAJmWgkBAmVIAwkBAS0BBQJjbQkBAS0BBQJjbgAABAJmawgFAmZaAl8xBAJlRwgFAmZaAl8yCQDOCAIFAmNvBQJmawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwETdW5zdGFrZUFuZEdldE5vTGVzcwMCZk0CZ2ECZlYEAmZEAwkBAmFMAAYJAAACBQJhWQUBbgQCZW0JAMwIAgMJAQEhAQUCZkQGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZG8IcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlbQUCZW0EAmZOCQD8BwQFAmJmAgd1bnN0YWtlCQDMCAIJANgEAQUCYVoJAMwIAgUCZk0FA25pbAUDbmlsAwkAAAIFAmZOBQJmTgQCY0cJAQJiVAQJANgEAQgFAmRvDXRyYW5zYWN0aW9uSWQJANgEAQUCYVoFAmZNCAUCZG8GY2FsbGVyBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjbwgFAmNHA18xMAQCZ2IJAMwIAgMJAGcCBQJjbQUCZ2EGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ2EFA25pbAIACQDMCAIDCQBnAgUCY24FAmZWBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlYFA25pbAIABQNuaWwDCQAAAgUCZ2IFAmdiBAJmUwkA/AcEBQJhSgIEYnVybgkAzAgCBQJmTQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZk0FA25pbAMJAAACBQJmUwUCZlMEAmdjCQECZUgDCQEBLQEFAmNtCQEBLQEFAmNuAAAEAmZrCAUCZ2MCXzEEAmVHCAUCZ2MCXzIJAM4IAgUCY28FAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRvAQhhY3RpdmF0ZQICZ2QCZ2UDCQECIT0CCQClCAEIBQJkbwZjYWxsZXIJAKUIAQUCYUoJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWEABQJnZAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWIABQJnZQUDbmlsAgdzdWNjZXNzAmRvAQpyZWZyZXNoS0xwAAQCZ2YJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWcAAAQCZ2cDCQBnAgkAZQIFBmhlaWdodAUCZ2YFAmFqBQR1bml0CQECYUcBCQC5CQIJAMwIAgkApAMBBQJhagkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2cFAmdnBAJnaAkBAmVIAwAAAAAAAAQCZU8IBQJnaAJfMQQCZUcIBQJnaAJfMgkAlAoCBQJlTwkApgMBBQJlRwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkbwEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYU4AAmRvARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJieAkAlAoCBQNuaWwJAQJidwEFAmJ4AmRvARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiRQJiRgJiSgQCYlMJAQJiSQMFAmJFBQJiRgUCYkoJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiUwAACQDMCAIJAKYDAQkAkQMCBQJiUwABCQDMCAIJAKYDAQkAkQMCBQJiUwACBQNuaWwCZG8BFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkbwEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZG8BHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnoCYkEJAJQKAgUDbmlsCQCmAwEJAQJieQIJAKcDAQUCYnoJAKcDAQUCYkECZG8BI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiVQJjcQJjcgJjcwJjdAJjdQFYAmN2AmN3CQCUCgIFA25pbAkBAmNwCQUCYlUFAmNxBQJjcgUCY3MFAmN0BQJjdQUBWAUCY3YFAmN3AmRvASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYlUCYlYCYlcBWAQCY0cJAQJiVAQFAmJVBQJiVgUCYlcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjRwJfMQgFAmNHAl8yCAUCY0cCXzMIBQJjRwJfNAgFAmNHAl81CAUCY0cCXzYIBQJjRwJfNwkApgMBCAUCY0cCXzgIBQJjRwJfOQgFAmNHA18xMAJkbwENc3RhdHNSRUFET05MWQAEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjWQkAkQMCBQJiSwUBcgQCY1oJAJEDAgUCYksFAXMEAmN6CQCRAwIFAmJLBQF2BAJjQQkAkQMCBQJiSwUBdwQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCZ2kICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkYQkBAmJ3AQUCY1kEAmRiCQECYncBBQJjWgQCZ2oDCQAAAgUCZ2kAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkkDBQJkYQUCZGIFAmdpBAJjaAAABAJnawkBAUcCCQCRAwIFAmdqAAEFAWIEAmdsCQEBRwIJAJEDAgUCZ2oAAgUBYgQCZ20JAQV2YWx1ZQEJAJoIAgUCYUoJAQJhdQEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGIJAMwIAgkApAMBBQJnaQkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCZ2sJAMwIAgkApAMBBQJnbAkAzAgCCQCkAwEFAmdtBQNuaWwFAWoCZG8BIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjcgQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZ2kICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkYQkBAmJ3AQUCY3gEAmRiCQECYncBBQJjeQQCYkcJAQFEAgUCZGEFAmJMBAJiSAkBAUQCBQJkYgUCYk0EAmNnAwkAAAIFAmdpAAAFAWUJAQJieQIFAmJIBQJiRwQCY0QJAQFEAgUCY3IFAmJMBAJjRQkAvAIDBQJjRAUCY2cFAWQEAmN0CQEBRwIFAmNFBQJiTQQCZHUJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkdQJfMQQCZ24IBQJkdQJfMwQCY2MIBQJkdQJfNAQCY2UIBQJkdQJfNQQCY2IIBQJkdQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmRvAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjdAQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJiWQkA2QQBBQJjeAQCY3kJAJEDAgUCYksFAXMEAmJaCQDZBAEFAmN5BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCZ2kICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJnbwkBAmJ3AQUCY3gEAmdwCQECYncBBQJjeQQCZ3EJAQFEAgUCZ28FAmJMBAJncgkBAUQCBQJncAUCYk0EAmNnAwkAAAIFAmdpAAAFAWUJAQJieQIFAmdyBQJncQQCY0UJAQFEAgUCY3QFAmJNBAJjRAkAvAIDBQJjRQUBZAUCY2cEAmNyCQEBRwIFAmNEBQJiTAQCZHUJAQJjcAkCAACgwh4FAmNyBQJiWQUCY3QFAmJaAgAGBwQCY08IBQJkdQJfMQQCZ24IBQJkdQJfMwQCY2MIBQJkdQJfNAQCY2UIBQJkdQJfNQQCY2IIBQJkdQJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY08JAMwIAgkApAMBCQEBRwIFAmNnBQFiCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIFAmNhCQDMCAIJAKQDAQUCY3IJAMwIAgkApAMBBQJjdAUDbmlsBQFqAmRvARNldmFsdWF0ZUdldFJFQURPTkxZAgJncwJndAQCY0cJAQJiVAQCAAUCZ3MFAmd0BQR0aGlzBAJjbQgFAmNHAl8xBAJjbggFAmNHAl8yBAJjYwgFAmNHAl81BAJjZQgFAmNHAl82BAJjYggFAmNHAl83BAJjaAgFAmNHAl84BAJjYQkBDXBhcnNlSW50VmFsdWUBCAUCY0cCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjbQkAzAgCCQCkAwEFAmNuCQDMCAIJAKQDAQUCY2MJAMwIAgkApAMBBQJjZQkAzAgCCQCkAwEFAmNiCQDMCAIJAKYDAQUCY2gJAMwIAgkApAMBBQJjYQUDbmlsBQFqAQJndQECZ3YABAJndwQCZHoJAQJlUAADCQABAgUCZHoCCkJ5dGVWZWN0b3IEAmVUBQJkegUCZVQDCQABAgUCZHoCBFVuaXQIBQJndQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHoFAmd1AwkAAQIFAmR6AgVPcmRlcgQCY1gFAmR6BAJneAkBAmFNAAQCYXoJAQJjVwEFAmNYBAJhQQkA9AMDCAUCY1gJYm9keUJ5dGVzCQCRAwIIBQJjWAZwcm9vZnMAAAgFAmNYD3NlbmRlclB1YmxpY0tleQQCYUIJAPQDAwgFAmNYCWJvZHlCeXRlcwkAkQMCCAUCY1gGcHJvb2ZzAAEFAmd4AwMDBQJhegUCYUEHBQJhQgcGCQECYXkDBQJhegUCYUEFAmFCAwkAAQIFAmR6AhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZVEFAmR6BAJneQkA9gMBCQEFdmFsdWUBCAUCZVEGc2NyaXB0BAJnegkA2wQBCQEFdmFsdWUBCQCdCAIFAmFKCQECYXcABAJnQQkA8QcBBQR0aGlzAwMJAAACBQJnegUCZ3kJAQIhPQIFAmdBBQJneQcGCQD0AwMIBQJndQlib2R5Qnl0ZXMJAJEDAggFAmd1BnByb29mcwAABQJndwkA9AMDCAUCZ3UJYm9keUJ5dGVzCQCRAwIIBQJndQZwcm9vZnMAAAUCZ3ew/TAY", "chainId": 84, "height": 2336958, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2ZeBtpMsUVJYWAaKpqeJWtyszdxb9Usv1nPKsTh9Ld2h Next: 3MaV78JAsXwZShWoJvGTTkPLtfVv2qCf3pHpMkZAVmom Diff:
OldNewDifferences
412412 let dj = if ((cX.orderType == Buy))
413413 then (ch >= di)
414414 else (di >= ch)
415- true
415+ let dk = valueOrErrorMessage(getInteger(this, af), aI("kLp is required"))
416+ let dl = 0
417+ let dm = (dl > dk)
418+ dm
416419 }
417420 }
418421 }
419422
420423
421-func dk (dl) = if ((size(dl.payments) != 1))
424+func dn (do) = if ((size(do.payments) != 1))
422425 then throw("exactly 1 payment is expected")
423426 else {
424- let dm = value(dl.payments[0])
425- let bV = value(dm.assetId)
426- let dn = dm.amount
427- let cG = bT(toBase58String(dl.transactionId), toBase58String(bV), dn, dl.caller)
427+ let dp = value(do.payments[0])
428+ let bV = value(dp.assetId)
429+ let dq = dp.amount
430+ let cG = bT(toBase58String(do.transactionId), toBase58String(bV), dq, do.caller)
428431 let cm = cG._1
429432 let cn = cG._2
430433 let ca = parseIntValue(cG._9)
433436 then true
434437 else (ca == n))
435438 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436- else $Tuple5(cm, cn, dn, bV, co)
439+ else $Tuple5(cm, cn, dq, bV, co)
437440 }
438441
439442
440-func do (dl,cq,cw) = if ((size(dl.payments) != 2))
443+func dr (do,cq,cw) = if ((size(do.payments) != 2))
441444 then throw("exactly 2 payments are expected")
442445 else {
443- let dp = value(dl.payments[0])
444- let dq = value(dl.payments[1])
445- let dr = cp(toBase58String(dl.transactionId), cq, dp.amount, dp.assetId, dq.amount, dq.assetId, toString(dl.caller), false, cw)
446- let ca = parseIntValue(dr._8)
446+ let ds = value(do.payments[0])
447+ let dt = value(do.payments[1])
448+ let du = cp(toBase58String(do.transactionId), cq, ds.amount, ds.assetId, dt.amount, dt.assetId, toString(do.caller), false, cw)
449+ let ca = parseIntValue(du._8)
447450 if (if (if (aL())
448451 then true
449452 else (ca == l))
450453 then true
451454 else (ca == n))
452455 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453- else dr
456+ else du
454457 }
455458
456459
457-func ds (dt) = {
458- let du = invoke(aJ, "emit", [dt], nil)
459- if ((du == du))
460+func dv (dw) = {
461+ let dx = invoke(aJ, "emit", [dw], nil)
462+ if ((dx == dx))
460463 then {
461- let dv = {
462- let dw = du
463- if ($isInstanceOf(dw, "Address"))
464+ let dy = {
465+ let dz = dx
466+ if ($isInstanceOf(dz, "Address"))
464467 then {
465- let dx = dw
466- invoke(dx, "emit", [dt], nil)
468+ let dA = dz
469+ invoke(dA, "emit", [dw], nil)
467470 }
468471 else unit
469472 }
470- if ((dv == dv))
471- then dt
473+ if ((dy == dy))
474+ then dw
472475 else throw("Strict value is not equal to itself.")
473476 }
474477 else throw("Strict value is not equal to itself.")
475478 }
476479
477480
478-func dy (dt) = {
479- let dz = fraction(dt, ae, b)
480- $Tuple2((dt - dz), dz)
481+func dB (dw) = {
482+ let dC = fraction(dw, ae, b)
483+ $Tuple2((dw - dC), dC)
481484 }
482485
483486
484-func dA (dB,dC,X,Y) = {
485- let dD = (Y == unit)
486- let dE = bw(aS(ba))
487- let dF = bw(aS(bb))
488- let dG = if ((dC == ba))
487+func dD (dE,dF,X,Y) = {
488+ let dG = (Y == unit)
489+ let dH = bw(aS(ba))
490+ let dI = bw(aS(bb))
491+ let dJ = if ((dF == ba))
489492 then true
490- else if ((dC == bb))
493+ else if ((dF == bb))
491494 then false
492495 else aG("invalid asset")
493- let dH = if (dD)
494- then $Tuple2(dE, dF)
495- else if (dG)
496- then $Tuple2((dE - dB), dF)
497- else $Tuple2(dE, (dF - dB))
498- let dI = dH._1
499- let dJ = dH._2
500496 let dK = if (dG)
501- then $Tuple2(dB, 0)
502- else $Tuple2(0, dB)
497+ then $Tuple2(dH, dI)
498+ else if (dJ)
499+ then $Tuple2((dH - dE), dI)
500+ else $Tuple2(dH, (dI - dE))
503501 let dL = dK._1
504502 let dM = dK._2
505- let dN = dy(dL)._1
506- let dO = dy(dM)._1
507- let dP = dy(dB)
508- let dQ = dP._1
509- let dz = dP._2
510- let dR = (dI + dN)
511- let dS = (dJ + dO)
512- let dT = by(D(dS, bd), D(dR, bc))
513- let dU = G(dT, b)
514- let dV = if (dG)
515- then dI
516- else dJ
517- let dW = toBigInt(dV)
518- let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519- let dY = if ((dX > f))
503+ let dN = if (dJ)
504+ then $Tuple2(dE, 0)
505+ else $Tuple2(0, dE)
506+ let dO = dN._1
507+ let dP = dN._2
508+ let dQ = dB(dO)._1
509+ let dR = dB(dP)._1
510+ let dS = dB(dE)
511+ let dT = dS._1
512+ let dC = dS._2
513+ let dU = (dL + dQ)
514+ let dV = (dM + dR)
515+ let dW = by(D(dV, bd), D(dU, bc))
516+ let dX = G(dW, b)
517+ let dY = if (dJ)
518+ then dL
519+ else dM
520+ let dZ = toBigInt(dY)
521+ let ea = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
522+ let eb = if ((ea > f))
520523 then true
521524 else aG("initial deposit requires all coins")
522- if ((dY == dY))
525+ if ((eb == eb))
523526 then {
524- let dZ = toBigInt(dQ)
525- let ea = max([0, toInt(((dX * (sqrtBigInt((d + ((dZ * d) / dW)), 18, 18, DOWN) - d)) / d))])
526- let cV = if (dD)
527+ let ec = toBigInt(dT)
528+ let ed = max([0, toInt(((ea * (sqrtBigInt((d + ((ec * d) / dZ)), 18, 18, DOWN) - d)) / d))])
529+ let cV = if (dG)
527530 then nil
528- else [IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dL, dM, ea, dU, 0, 0, height, lastBlock.timestamp, 0, 0))]
529- let eb = by(D(dJ, bd), D(dI, bc))
530- let ec = G(eb, b)
531- let ed = {
532- let ee = if (dG)
533- then $Tuple2(dL, dI)
534- else $Tuple2(dM, dJ)
535- let dt = ee._1
536- let ef = ee._2
537- let eg = toInt(fraction(dX, toBigInt((dt / 2)), toBigInt(ef)))
538- fraction((ea - eg), b, eg)
531+ else [IntegerEntry(S(), dX), IntegerEntry(T(height, lastBlock.timestamp), dX), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dO, dP, ed, dX, 0, 0, height, lastBlock.timestamp, 0, 0))]
532+ let ee = by(D(dM, bd), D(dL, bc))
533+ let ef = G(ee, b)
534+ let eg = {
535+ let eh = if (dJ)
536+ then $Tuple2(dO, dL)
537+ else $Tuple2(dP, dM)
538+ let dw = eh._1
539+ let ei = eh._2
540+ let ej = toInt(fraction(ea, toBigInt((dw / 2)), toBigInt(ei)))
541+ fraction((ed - ej), b, ej)
539542 }
540- $Tuple5(ea, cV, dz, ed, dG)
543+ $Tuple5(ed, cV, dC, eg, dJ)
541544 }
542545 else throw("Strict value is not equal to itself.")
543546 }
544547
545548
546-func eh (ei,dQ,dC,X,Y) = {
547- let dD = (Y == unit)
548- let ej = [if ((dC == aZ))
549+func ek (el,dT,dF,X,Y) = {
550+ let dG = (Y == unit)
551+ let em = [if ((dF == aZ))
549552 then true
550553 else aG("invalid lp asset")]
551- if ((ej == ej))
554+ if ((em == em))
552555 then {
553- let ek = if ((ei == ba))
556+ let en = if ((el == ba))
554557 then true
555- else if ((ei == bb))
558+ else if ((el == bb))
556559 then false
557560 else aG("invalid asset")
558- let el = if (ek)
561+ let eo = if (en)
559562 then toBigInt(bw(aS(ba)))
560563 else toBigInt(bw(aS(bb)))
561- let em = bw(aS(ba))
562- let en = bw(aS(bb))
563- let eo = if (ek)
564- then em
565- else en
566- let ep = toBigInt(eo)
567- let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568- let eq = toBigInt(dQ)
569- let er = max([0, toInt(((el * (d - pow((d - ((eq * d) / dX)), 18, h, 0, 18, DOWN))) / d))])
570- let es = dy(er)
571- let et = es._1
572- let dz = es._2
573- let eu = if (ek)
574- then $Tuple4(et, 0, (em - er), en)
575- else $Tuple4(0, et, em, (en - er))
576- let ev = eu._1
577- let ew = eu._2
578- let ex = eu._3
579- let ey = eu._4
580- let dT = by(D(ey, bd), D(ex, bc))
581- let dU = G(dT, b)
582- let cV = if (dD)
564+ let ep = bw(aS(ba))
565+ let eq = bw(aS(bb))
566+ let er = if (en)
567+ then ep
568+ else eq
569+ let es = toBigInt(er)
570+ let ea = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
571+ let et = toBigInt(dT)
572+ let eu = max([0, toInt(((eo * (d - pow((d - ((et * d) / ea)), 18, h, 0, 18, DOWN))) / d))])
573+ let ev = dB(eu)
574+ let ew = ev._1
575+ let dC = ev._2
576+ let ex = if (en)
577+ then $Tuple4(ew, 0, (ep - eu), eq)
578+ else $Tuple4(0, ew, ep, (eq - eu))
579+ let ey = ex._1
580+ let ez = ex._2
581+ let eA = ex._3
582+ let eB = ex._4
583+ let dW = by(D(eB, bd), D(eA, bc))
584+ let dX = G(dW, b)
585+ let cV = if (dG)
583586 then nil
584- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(ev, ew, dQ, dU, height, lastBlock.timestamp)), IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU)]
585- let eb = by(D(en, bd), D(em, bc))
586- let ec = G(eb, b)
587- let ed = {
588- let ez = (toInt(fraction(el, eq, dX)) * 2)
589- fraction((et - ez), b, ez)
587+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(ey, ez, dT, dX, height, lastBlock.timestamp)), IntegerEntry(S(), dX), IntegerEntry(T(height, lastBlock.timestamp), dX)]
588+ let ee = by(D(eq, bd), D(ep, bc))
589+ let ef = G(ee, b)
590+ let eg = {
591+ let eC = (toInt(fraction(eo, et, ea)) * 2)
592+ fraction((ew - eC), b, eC)
590593 }
591- $Tuple5(et, cV, dz, ed, ek)
594+ $Tuple5(ew, cV, dC, eg, en)
592595 }
593596 else throw("Strict value is not equal to itself.")
594597 }
595598
596599
597-func eA (eB,eC,cb) = {
598- let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599- eD
600+func eD (eE,eF,cb) = {
601+ let eG = fraction(pow((eE * eF), 0, toBigInt(5), 1, 0, DOWN), d, cb)
602+ eG
600603 }
601604
602605
603-func eE (eF,eG,eH) = {
604- let eI = (bw(aS(ba)) + eF)
605- let eJ = (bw(aS(bb)) + eG)
606- let eK = (value(assetInfo(aZ)).quantity + eH)
607- let eD = eA(toBigInt(eI), toBigInt(eJ), toBigInt(eK))
608- let eL = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609- $Tuple2(eL, eD)
606+func eH (eI,eJ,eK) = {
607+ let eL = (bw(aS(ba)) + eI)
608+ let eM = (bw(aS(bb)) + eJ)
609+ let eN = (value(assetInfo(aZ)).quantity + eK)
610+ let eG = eD(toBigInt(eL), toBigInt(eM), toBigInt(eN))
611+ let eO = [IntegerEntry(ag, height), StringEntry(af, toString(eG))]
612+ $Tuple2(eO, eG)
610613 }
611614
612615
613-func eM () = {
614- let dw = getString(Q())
615- if ($isInstanceOf(dw, "String"))
616+func eP () = {
617+ let dz = getString(Q())
618+ if ($isInstanceOf(dz, "String"))
616619 then {
617- let eN = dw
618- fromBase58String(eN)
620+ let eQ = dz
621+ fromBase58String(eQ)
619622 }
620- else if ($isInstanceOf(dw, "Unit"))
623+ else if ($isInstanceOf(dz, "Unit"))
621624 then unit
622625 else throw("Match error")
623626 }
624627
625628
626-func eO () = {
627- let dw = getString(R())
628- if ($isInstanceOf(dw, "String"))
629+func eR () = {
630+ let dz = getString(R())
631+ if ($isInstanceOf(dz, "String"))
629632 then {
630- let eN = dw
631- fromBase58String(eN)
633+ let eQ = dz
634+ fromBase58String(eQ)
632635 }
633- else if ($isInstanceOf(dw, "Unit"))
636+ else if ($isInstanceOf(dz, "Unit"))
634637 then unit
635638 else throw("Match error")
636639 }
637640
638641
639-func eP (dl) = {
640- let dw = eM()
641- if ($isInstanceOf(dw, "ByteVector"))
642+func eS (do) = {
643+ let dz = eP()
644+ if ($isInstanceOf(dz, "ByteVector"))
642645 then {
643- let eQ = dw
644- (dl.callerPublicKey == eQ)
646+ let eT = dz
647+ (do.callerPublicKey == eT)
645648 }
646- else if ($isInstanceOf(dw, "Unit"))
647- then (dl.caller == this)
649+ else if ($isInstanceOf(dz, "Unit"))
650+ then (do.caller == this)
648651 else throw("Match error")
649652 }
650653
651654
652-func eR (dl) = {
653- let eS = throw("Permission denied")
654- let dw = eM()
655- if ($isInstanceOf(dw, "ByteVector"))
655+func eU (do) = {
656+ let eV = throw("Permission denied")
657+ let dz = eP()
658+ if ($isInstanceOf(dz, "ByteVector"))
656659 then {
657- let eQ = dw
658- if ((dl.callerPublicKey == eQ))
660+ let eT = dz
661+ if ((do.callerPublicKey == eT))
659662 then true
660- else eS
663+ else eV
661664 }
662- else if ($isInstanceOf(dw, "Unit"))
663- then if ((dl.caller == this))
665+ else if ($isInstanceOf(dz, "Unit"))
666+ then if ((do.caller == this))
664667 then true
665- else eS
668+ else eV
666669 else throw("Match error")
667670 }
668671
669672
670-@Callable(dl)
671-func setManager (eT) = {
672- let eU = eR(dl)
673- if ((eU == eU))
673+@Callable(do)
674+func setManager (eW) = {
675+ let eX = eU(do)
676+ if ((eX == eX))
674677 then {
675- let eV = fromBase58String(eT)
676- if ((eV == eV))
677- then [StringEntry(R(), eT)]
678+ let eY = fromBase58String(eW)
679+ if ((eY == eY))
680+ then [StringEntry(R(), eW)]
678681 else throw("Strict value is not equal to itself.")
679682 }
680683 else throw("Strict value is not equal to itself.")
682685
683686
684687
685-@Callable(dl)
688+@Callable(do)
686689 func confirmManager () = {
687- let eW = eO()
688- let eX = if (isDefined(eW))
690+ let eZ = eR()
691+ let fa = if (isDefined(eZ))
689692 then true
690693 else throw("No pending manager")
691- if ((eX == eX))
694+ if ((fa == fa))
692695 then {
693- let eY = if ((dl.callerPublicKey == value(eW)))
696+ let fb = if ((do.callerPublicKey == value(eZ)))
694697 then true
695698 else throw("You are not pending manager")
696- if ((eY == eY))
697- then [StringEntry(Q(), toBase58String(value(eW))), DeleteEntry(R())]
699+ if ((fb == fb))
700+ then [StringEntry(Q(), toBase58String(value(eZ))), DeleteEntry(R())]
698701 else throw("Strict value is not equal to itself.")
699702 }
700703 else throw("Strict value is not equal to itself.")
702705
703706
704707
705-@Callable(dl)
706-func put (cq,eZ) = if ((0 > cq))
708+@Callable(do)
709+func put (cq,fc) = if ((0 > cq))
707710 then throw("Invalid slippageTolerance passed")
708711 else {
709- let dr = do(dl, cq, true)
710- let cS = dr._2
711- let bX = dr._7
712- let co = dr._9
713- let cT = dr._10
714- let cU = dr._11
715- let fa = dr._12
716- let fb = dr._13
717- let du = invoke(aJ, "emit", [cS], nil)
718- if ((du == du))
712+ let du = dr(do, cq, true)
713+ let cS = du._2
714+ let bX = du._7
715+ let co = du._9
716+ let cT = du._10
717+ let cU = du._11
718+ let fd = du._12
719+ let fe = du._13
720+ let dx = invoke(aJ, "emit", [cS], nil)
721+ if ((dx == dx))
719722 then {
720- let dv = {
721- let dw = du
722- if ($isInstanceOf(dw, "Address"))
723+ let dy = {
724+ let dz = dx
725+ if ($isInstanceOf(dz, "Address"))
723726 then {
724- let dx = dw
725- invoke(dx, "emit", [cS], nil)
727+ let dA = dz
728+ invoke(dA, "emit", [cS], nil)
726729 }
727730 else unit
728731 }
729- if ((dv == dv))
732+ if ((dy == dy))
730733 then {
731- let fc = if ((cT > 0))
732- then invoke(bg, "put", nil, [AttachedPayment(fa, cT)])
734+ let ff = if ((cT > 0))
735+ then invoke(bg, "put", nil, [AttachedPayment(fd, cT)])
733736 else nil
734- if ((fc == fc))
737+ if ((ff == ff))
735738 then {
736- let fd = if ((cU > 0))
737- then invoke(bg, "put", nil, [AttachedPayment(fb, cU)])
739+ let fg = if ((cU > 0))
740+ then invoke(bg, "put", nil, [AttachedPayment(fe, cU)])
738741 else nil
739- if ((fd == fd))
742+ if ((fg == fg))
740743 then {
741- let fe = if (eZ)
744+ let fh = if (fc)
742745 then {
743- let ff = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744- if ((ff == ff))
746+ let fi = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
747+ if ((fi == fi))
745748 then nil
746749 else throw("Strict value is not equal to itself.")
747750 }
748- else [ScriptTransfer(dl.caller, cS, bX)]
749- let fg = eE(0, 0, 0)
750- let fh = fg._1
751- let eD = fg._2
752- ((co ++ fe) ++ fh)
751+ else [ScriptTransfer(do.caller, cS, bX)]
752+ let fj = eH(0, 0, 0)
753+ let fk = fj._1
754+ let eG = fj._2
755+ ((co ++ fh) ++ fk)
753756 }
754757 else throw("Strict value is not equal to itself.")
755758 }
762765
763766
764767
765-@Callable(dl)
766-func putForFree (fi) = if ((0 > fi))
768+@Callable(do)
769+func putForFree (fl) = if ((0 > fl))
767770 then throw("Invalid value passed")
768771 else {
769- let dr = do(dl, fi, false)
770- let co = dr._9
771- let fj = eE(0, 0, 0)
772- let fh = fj._1
773- let eD = fj._2
774- (co ++ fh)
772+ let du = dr(do, fl, false)
773+ let co = du._9
774+ let fm = eH(0, 0, 0)
775+ let fk = fm._1
776+ let eG = fm._2
777+ (co ++ fk)
775778 }
776779
777780
778781
779-@Callable(dl)
780-func putOneTkn (fk,fl) = {
781- let fm = {
782- let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
783- if ($isInstanceOf(fn, "Boolean"))
784- then fn
785- else throw(($getType(fn) + " couldn't be cast to Boolean"))
782+@Callable(do)
783+func putOneTkn (fn,fo) = {
784+ let fp = {
785+ let fq = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
786+ if ($isInstanceOf(fq, "Boolean"))
787+ then fq
788+ else throw(($getType(fq) + " couldn't be cast to Boolean"))
786789 }
787- let fo = if (if (if (aL())
790+ let fr = if (if (if (aL())
788791 then true
789792 else (aY == l))
790793 then true
791794 else (aY == n))
792795 then true
793- else fm
794- let ej = [if (if (!(fo))
796+ else fp
797+ let em = [if (if (!(fr))
795798 then true
796- else eP(dl))
799+ else eS(do))
797800 then true
798- else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
801+ else aG("put operation is blocked by admin"), if ((size(do.payments) == 1))
799802 then true
800803 else aG("exactly 1 payment are expected")]
801- if ((ej == ej))
804+ if ((em == em))
802805 then {
803- let fp = dl.payments[0]
804- let dC = fp.assetId
805- let dB = fp.amount
806- let X = dl.caller
807- let Y = dl.transactionId
808- let fq = dA(dB, dC, X, Y)
809- let fr = fq._1
810- let cV = fq._2
811- let dz = fq._3
812- let fs = fq._4
813- let dG = fq._5
814- let ft = if (if ((fk > 0))
815- then (fk > fr)
806+ let fs = do.payments[0]
807+ let dF = fs.assetId
808+ let dE = fs.amount
809+ let X = do.caller
810+ let Y = do.transactionId
811+ let ft = dD(dE, dF, X, Y)
812+ let fu = ft._1
813+ let cV = ft._2
814+ let dC = ft._3
815+ let fv = ft._4
816+ let dJ = ft._5
817+ let fw = if (if ((fn > 0))
818+ then (fn > fu)
816819 else false)
817- then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
818- else fr
819- let du = ds(ft)
820- if ((du == du))
820+ then aG(makeString(["amount to receive is less than ", toString(fn)], ""))
821+ else fu
822+ let dx = dv(fw)
823+ if ((dx == dx))
821824 then {
822- let fe = if (fl)
825+ let fh = if (fo)
823826 then {
824- let fu = invoke(bf, "stake", nil, [AttachedPayment(aZ, ft)])
825- if ((fu == fu))
827+ let fx = invoke(bf, "stake", nil, [AttachedPayment(aZ, fw)])
828+ if ((fx == fx))
826829 then nil
827830 else throw("Strict value is not equal to itself.")
828831 }
829- else [ScriptTransfer(dl.caller, ft, aZ)]
830- let fv = if ((dz > 0))
831- then [ScriptTransfer(aK, dz, dC)]
832+ else [ScriptTransfer(do.caller, fw, aZ)]
833+ let fy = if ((dC > 0))
834+ then [ScriptTransfer(aK, dC, dF)]
832835 else nil
833- let fw = if ((this == aK))
836+ let fz = if ((this == aK))
834837 then $Tuple2(0, 0)
835- else if (dG)
836- then $Tuple2(-(dz), 0)
837- else $Tuple2(0, -(dz))
838- let eF = fw._1
839- let eG = fw._2
840- let fx = eE(eF, eG, 0)
841- let fh = fx._1
842- let eD = fx._2
843- $Tuple2((((cV ++ fe) ++ fv) ++ fh), ft)
838+ else if (dJ)
839+ then $Tuple2(-(dC), 0)
840+ else $Tuple2(0, -(dC))
841+ let eI = fz._1
842+ let eJ = fz._2
843+ let fA = eH(eI, eJ, 0)
844+ let fk = fA._1
845+ let eG = fA._2
846+ $Tuple2((((cV ++ fh) ++ fy) ++ fk), fw)
844847 }
845848 else throw("Strict value is not equal to itself.")
846849 }
849852
850853
851854
852-@Callable(dl)
853-func putOneTknREADONLY (dC,dB) = {
854- let fy = dA(dB, aQ(dC), unit, unit)
855- let fr = fy._1
856- let cV = fy._2
857- let dz = fy._3
858- let fs = fy._4
859- let dG = fy._5
860- $Tuple2(nil, $Tuple3(fr, dz, fs))
855+@Callable(do)
856+func putOneTknREADONLY (dF,dE) = {
857+ let fB = dD(dE, aQ(dF), unit, unit)
858+ let fu = fB._1
859+ let cV = fB._2
860+ let dC = fB._3
861+ let fv = fB._4
862+ let dJ = fB._5
863+ $Tuple2(nil, $Tuple3(fu, dC, fv))
861864 }
862865
863866
864867
865-@Callable(dl)
866-func getOneTkn (fz,fk) = {
867- let fm = {
868- let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
869- if ($isInstanceOf(fn, "Boolean"))
870- then fn
871- else throw(($getType(fn) + " couldn't be cast to Boolean"))
868+@Callable(do)
869+func getOneTkn (fC,fn) = {
870+ let fp = {
871+ let fq = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
872+ if ($isInstanceOf(fq, "Boolean"))
873+ then fq
874+ else throw(($getType(fq) + " couldn't be cast to Boolean"))
872875 }
873- let fA = if (if (aL())
876+ let fD = if (if (aL())
874877 then true
875878 else (aY == n))
876879 then true
877- else fm
878- let ej = [if (if (!(fA))
880+ else fp
881+ let em = [if (if (!(fD))
879882 then true
880- else eP(dl))
883+ else eS(do))
881884 then true
882- else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
885+ else aG("get operation is blocked by admin"), if ((size(do.payments) == 1))
883886 then true
884887 else aG("exactly 1 payment are expected")]
885- if ((ej == ej))
888+ if ((em == em))
886889 then {
887- let ei = aQ(fz)
888- let fp = dl.payments[0]
889- let dC = fp.assetId
890- let dQ = fp.amount
891- let X = dl.caller
892- let Y = dl.transactionId
893- let fB = eh(ei, dQ, dC, X, Y)
894- let fC = fB._1
895- let cV = fB._2
896- let dz = fB._3
897- let fs = fB._4
898- let ek = fB._5
899- let dt = if (if ((fk > 0))
900- then (fk > fC)
890+ let el = aQ(fC)
891+ let fs = do.payments[0]
892+ let dF = fs.assetId
893+ let dT = fs.amount
894+ let X = do.caller
895+ let Y = do.transactionId
896+ let fE = ek(el, dT, dF, X, Y)
897+ let fF = fE._1
898+ let cV = fE._2
899+ let dC = fE._3
900+ let fv = fE._4
901+ let en = fE._5
902+ let dw = if (if ((fn > 0))
903+ then (fn > fF)
901904 else false)
902- then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
903- else fC
904- let fD = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
905- if ((fD == fD))
905+ then aG(makeString(["amount to receive is less than ", toString(fn)], ""))
906+ else fF
907+ let fG = invoke(aJ, "burn", [dT], [AttachedPayment(dF, dT)])
908+ if ((fG == fG))
906909 then {
907- let fE = [ScriptTransfer(X, dt, ei)]
908- let fv = if ((dz > 0))
909- then [ScriptTransfer(aK, dz, ei)]
910+ let fH = [ScriptTransfer(X, dw, el)]
911+ let fy = if ((dC > 0))
912+ then [ScriptTransfer(aK, dC, el)]
910913 else nil
911- let fF = {
912- let fG = if ((this == aK))
914+ let fI = {
915+ let fJ = if ((this == aK))
913916 then 0
914- else dz
915- if (ek)
916- then $Tuple2(-((dt + fG)), 0)
917- else $Tuple2(0, -((dt + fG)))
917+ else dC
918+ if (en)
919+ then $Tuple2(-((dw + fJ)), 0)
920+ else $Tuple2(0, -((dw + fJ)))
918921 }
919- let eF = fF._1
920- let eG = fF._2
921- let fH = eE(eF, eG, 0)
922- let fh = fH._1
923- let eD = fH._2
924- $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
922+ let eI = fI._1
923+ let eJ = fI._2
924+ let fK = eH(eI, eJ, 0)
925+ let fk = fK._1
926+ let eG = fK._2
927+ $Tuple2((((cV ++ fH) ++ fy) ++ fk), dw)
925928 }
926929 else throw("Strict value is not equal to itself.")
927930 }
930933
931934
932935
933-@Callable(dl)
934-func getOneTknREADONLY (ei,dQ) = {
935- let fI = eh(aQ(ei), dQ, aZ, unit, unit)
936- let fC = fI._1
937- let cV = fI._2
938- let dz = fI._3
939- let fs = fI._4
940- let ek = fI._5
941- $Tuple2(nil, $Tuple3(fC, dz, fs))
936+@Callable(do)
937+func getOneTknREADONLY (el,dT) = {
938+ let fL = ek(aQ(el), dT, aZ, unit, unit)
939+ let fF = fL._1
940+ let cV = fL._2
941+ let dC = fL._3
942+ let fv = fL._4
943+ let en = fL._5
944+ $Tuple2(nil, $Tuple3(fF, dC, fv))
942945 }
943946
944947
945948
946-@Callable(dl)
947-func unstakeAndGetOneTkn (fJ,fz,fk) = {
948- let fm = {
949- let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
950- if ($isInstanceOf(fn, "Boolean"))
951- then fn
952- else throw(($getType(fn) + " couldn't be cast to Boolean"))
949+@Callable(do)
950+func unstakeAndGetOneTkn (fM,fC,fn) = {
951+ let fp = {
952+ let fq = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
953+ if ($isInstanceOf(fq, "Boolean"))
954+ then fq
955+ else throw(($getType(fq) + " couldn't be cast to Boolean"))
953956 }
954- let fA = if (if (aL())
957+ let fD = if (if (aL())
955958 then true
956959 else (aY == n))
957960 then true
958- else fm
959- let ej = [if (if (!(fA))
961+ else fp
962+ let em = [if (if (!(fD))
960963 then true
961- else eP(dl))
964+ else eS(do))
962965 then true
963- else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
966+ else aG("get operation is blocked by admin"), if ((size(do.payments) == 0))
964967 then true
965968 else aG("no payments are expected")]
966- if ((ej == ej))
969+ if ((em == em))
967970 then {
968- let ei = aQ(fz)
969- let X = dl.caller
970- let Y = dl.transactionId
971- let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
972- if ((fK == fK))
971+ let el = aQ(fC)
972+ let X = do.caller
973+ let Y = do.transactionId
974+ let fN = invoke(bf, "unstake", [toBase58String(aZ), fM], nil)
975+ if ((fN == fN))
973976 then {
974- let fL = eh(ei, fJ, aZ, X, Y)
975- let fC = fL._1
976- let cV = fL._2
977- let dz = fL._3
978- let fs = fL._4
979- let ek = fL._5
980- let dt = if (if ((fk > 0))
981- then (fk > fC)
977+ let fO = ek(el, fM, aZ, X, Y)
978+ let fF = fO._1
979+ let cV = fO._2
980+ let dC = fO._3
981+ let fv = fO._4
982+ let en = fO._5
983+ let dw = if (if ((fn > 0))
984+ then (fn > fF)
982985 else false)
983- then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
984- else fC
985- let fD = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
986- if ((fD == fD))
986+ then aG(makeString(["amount to receive is less than ", toString(fn)], ""))
987+ else fF
988+ let fG = invoke(aJ, "burn", [fM], [AttachedPayment(aZ, fM)])
989+ if ((fG == fG))
987990 then {
988- let fE = [ScriptTransfer(dl.caller, dt, ei)]
989- let fv = if ((dz > 0))
990- then [ScriptTransfer(aK, dz, ei)]
991+ let fH = [ScriptTransfer(do.caller, dw, el)]
992+ let fy = if ((dC > 0))
993+ then [ScriptTransfer(aK, dC, el)]
991994 else nil
992- let fM = {
993- let fG = if ((this == aK))
995+ let fP = {
996+ let fJ = if ((this == aK))
994997 then 0
995- else dz
996- if (ek)
997- then $Tuple2(-((dt + fG)), 0)
998- else $Tuple2(0, -((dt + fG)))
998+ else dC
999+ if (en)
1000+ then $Tuple2(-((dw + fJ)), 0)
1001+ else $Tuple2(0, -((dw + fJ)))
9991002 }
1000- let eF = fM._1
1001- let eG = fM._2
1002- let fN = eE(eF, eG, 0)
1003- let fh = fN._1
1004- let eD = fN._2
1005- $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
1003+ let eI = fP._1
1004+ let eJ = fP._2
1005+ let fQ = eH(eI, eJ, 0)
1006+ let fk = fQ._1
1007+ let eG = fQ._2
1008+ $Tuple2((((cV ++ fH) ++ fy) ++ fk), dw)
10061009 }
10071010 else throw("Strict value is not equal to itself.")
10081011 }
10131016
10141017
10151018
1016-@Callable(dl)
1019+@Callable(do)
10171020 func get () = {
1018- let cG = dk(dl)
1019- let fO = cG._1
1021+ let cG = dn(do)
1022+ let fR = cG._1
10201023 let cn = cG._2
1021- let dn = cG._3
1024+ let dq = cG._3
10221025 let bV = cG._4
10231026 let co = cG._5
1024- let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1025- if ((fP == fP))
1027+ let fS = invoke(aJ, "burn", [dq], [AttachedPayment(bV, dq)])
1028+ if ((fS == fS))
10261029 then {
1027- let fQ = eE(-(fO), -(cn), 0)
1028- let fh = fQ._1
1029- let eD = fQ._2
1030- (co ++ fh)
1030+ let fT = eH(-(fR), -(cn), 0)
1031+ let fk = fT._1
1032+ let eG = fT._2
1033+ (co ++ fk)
10311034 }
10321035 else throw("Strict value is not equal to itself.")
10331036 }
10341037
10351038
10361039
1037-@Callable(dl)
1038-func getNoLess (fR,fS) = {
1039- let cG = dk(dl)
1040+@Callable(do)
1041+func getNoLess (fU,fV) = {
1042+ let cG = dn(do)
10401043 let cm = cG._1
10411044 let cn = cG._2
1042- let dn = cG._3
1045+ let dq = cG._3
10431046 let bV = cG._4
10441047 let co = cG._5
1045- if ((fR > cm))
1046- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fR)))
1047- else if ((fS > cn))
1048- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fS)))
1048+ if ((fU > cm))
1049+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fU)))
1050+ else if ((fV > cn))
1051+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fV)))
10491052 else {
1050- let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1051- if ((fP == fP))
1053+ let fS = invoke(aJ, "burn", [dq], [AttachedPayment(bV, dq)])
1054+ if ((fS == fS))
10521055 then {
1053- let fT = eE(-(cm), -(cn), 0)
1054- let fh = fT._1
1055- let eD = fT._2
1056- (co ++ fh)
1056+ let fW = eH(-(cm), -(cn), 0)
1057+ let fk = fW._1
1058+ let eG = fW._2
1059+ (co ++ fk)
10571060 }
10581061 else throw("Strict value is not equal to itself.")
10591062 }
10611064
10621065
10631066
1064-@Callable(dl)
1065-func unstakeAndGet (dt) = {
1066- let fU = if ((size(dl.payments) != 0))
1067+@Callable(do)
1068+func unstakeAndGet (dw) = {
1069+ let fX = if ((size(do.payments) != 0))
10671070 then throw("No payments are expected")
10681071 else true
1069- if ((fU == fU))
1072+ if ((fX == fX))
10701073 then {
10711074 let bK = aN()
10721075 let bX = fromBase58String(bK[q])
1073- let fK = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1074- if ((fK == fK))
1076+ let fN = invoke(bf, "unstake", [toBase58String(bX), dw], nil)
1077+ if ((fN == fN))
10751078 then {
1076- let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
1079+ let cG = bT(toBase58String(do.transactionId), toBase58String(bX), dw, do.caller)
10771080 let cm = cG._1
10781081 let cn = cG._2
10791082 let ca = parseIntValue(cG._9)
10801083 let co = cG._10
1081- let fV = if (if (aL())
1084+ let fY = if (if (aL())
10821085 then true
10831086 else (ca == n))
10841087 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10851088 else true
1086- if ((fV == fV))
1089+ if ((fY == fY))
10871090 then {
1088- let fP = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1089- if ((fP == fP))
1091+ let fS = invoke(aJ, "burn", [dw], [AttachedPayment(bX, dw)])
1092+ if ((fS == fS))
10901093 then {
1091- let fW = eE(-(cm), -(cn), 0)
1092- let fh = fW._1
1093- let eD = fW._2
1094- (co ++ fh)
1094+ let fZ = eH(-(cm), -(cn), 0)
1095+ let fk = fZ._1
1096+ let eG = fZ._2
1097+ (co ++ fk)
10951098 }
10961099 else throw("Strict value is not equal to itself.")
10971100 }
11041107
11051108
11061109
1107-@Callable(dl)
1108-func unstakeAndGetNoLess (fJ,fX,fS) = {
1109- let fA = if (aL())
1110+@Callable(do)
1111+func unstakeAndGetNoLess (fM,ga,fV) = {
1112+ let fD = if (aL())
11101113 then true
11111114 else (aY == n)
1112- let ej = [if (!(fA))
1115+ let em = [if (!(fD))
11131116 then true
1114- else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
1117+ else throw("get operation is blocked by admin"), if ((size(do.payments) == 0))
11151118 then true
11161119 else throw("no payments are expected")]
1117- if ((ej == ej))
1120+ if ((em == em))
11181121 then {
1119- let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
1120- if ((fK == fK))
1122+ let fN = invoke(bf, "unstake", [toBase58String(aZ), fM], nil)
1123+ if ((fN == fN))
11211124 then {
1122- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fJ, dl.caller)
1125+ let cG = bT(toBase58String(do.transactionId), toBase58String(aZ), fM, do.caller)
11231126 let cm = cG._1
11241127 let cn = cG._2
11251128 let co = cG._10
1126- let fY = [if ((cm >= fX))
1129+ let gb = [if ((cm >= ga))
11271130 then true
1128- else throw(makeString(["amount asset amount to receive is less than ", toString(fX)], "")), if ((cn >= fS))
1131+ else throw(makeString(["amount asset amount to receive is less than ", toString(ga)], "")), if ((cn >= fV))
11291132 then true
1130- else throw(makeString(["price asset amount to receive is less than ", toString(fS)], ""))]
1131- if ((fY == fY))
1133+ else throw(makeString(["price asset amount to receive is less than ", toString(fV)], ""))]
1134+ if ((gb == gb))
11321135 then {
1133- let fP = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
1134- if ((fP == fP))
1136+ let fS = invoke(aJ, "burn", [fM], [AttachedPayment(aZ, fM)])
1137+ if ((fS == fS))
11351138 then {
1136- let fZ = eE(-(cm), -(cn), 0)
1137- let fh = fZ._1
1138- let eD = fZ._2
1139- (co ++ fh)
1139+ let gc = eH(-(cm), -(cn), 0)
1140+ let fk = gc._1
1141+ let eG = gc._2
1142+ (co ++ fk)
11401143 }
11411144 else throw("Strict value is not equal to itself.")
11421145 }
11491152
11501153
11511154
1152-@Callable(dl)
1153-func activate (ga,gb) = if ((toString(dl.caller) != toString(aJ)))
1155+@Callable(do)
1156+func activate (gd,ge) = if ((toString(do.caller) != toString(aJ)))
11541157 then throw("permissions denied")
1155- else $Tuple2([StringEntry(aa(), ga), StringEntry(ab(), gb)], "success")
1158+ else $Tuple2([StringEntry(aa(), gd), StringEntry(ab(), ge)], "success")
11561159
11571160
11581161
1159-@Callable(dl)
1162+@Callable(do)
11601163 func refreshKLp () = {
1161- let gc = valueOrElse(getInteger(ag), 0)
1162- let gd = if (((height - gc) >= aj))
1164+ let gf = valueOrElse(getInteger(ag), 0)
1165+ let gg = if (((height - gf) >= aj))
11631166 then unit
11641167 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1165- if ((gd == gd))
1168+ if ((gg == gg))
11661169 then {
1167- let ge = eE(0, 0, 0)
1168- let eL = ge._1
1169- let eD = ge._2
1170- $Tuple2(eL, toString(eD))
1170+ let gh = eH(0, 0, 0)
1171+ let eO = gh._1
1172+ let eG = gh._2
1173+ $Tuple2(eO, toString(eG))
11711174 }
11721175 else throw("Strict value is not equal to itself.")
11731176 }
11741177
11751178
11761179
1177-@Callable(dl)
1180+@Callable(do)
11781181 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11791182
11801183
11811184
1182-@Callable(dl)
1185+@Callable(do)
11831186 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11841187
11851188
11861189
1187-@Callable(dl)
1190+@Callable(do)
11881191 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11891192 let bS = bI(bE, bF, bJ)
11901193 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11921195
11931196
11941197
1195-@Callable(dl)
1198+@Callable(do)
11961199 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11971200
11981201
11991202
1200-@Callable(dl)
1203+@Callable(do)
12011204 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12021205
12031206
12041207
1205-@Callable(dl)
1208+@Callable(do)
12061209 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
12071210
12081211
12091212
1210-@Callable(dl)
1213+@Callable(do)
12111214 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
12121215
12131216
12141217
1215-@Callable(dl)
1218+@Callable(do)
12161219 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
12171220 let cG = bT(bU, bV, bW, addressFromStringValue(X))
12181221 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
12201223
12211224
12221225
1223-@Callable(dl)
1226+@Callable(do)
12241227 func statsREADONLY () = {
12251228 let bK = aN()
12261229 let bX = fromBase58String(bK[q])
12301233 let cA = bK[w]
12311234 let bL = parseIntValue(bK[t])
12321235 let bM = parseIntValue(bK[u])
1233- let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1236+ let gi = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12341237 let da = bw(cY)
12351238 let db = bw(cZ)
1236- let gg = if ((gf == 0))
1239+ let gj = if ((gi == 0))
12371240 then [e, e, e]
1238- else bI(da, db, gf)
1241+ else bI(da, db, gi)
12391242 let ch = 0
1240- let gh = G(gg[1], b)
1241- let gi = G(gg[2], b)
1242- let gj = value(getInteger(aJ, au(toString(this))))
1243- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(gf), toString(ch), toString(gh), toString(gi), toString(gj)], j))
1243+ let gk = G(gj[1], b)
1244+ let gl = G(gj[2], b)
1245+ let gm = value(getInteger(aJ, au(toString(this))))
1246+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(gi), toString(ch), toString(gk), toString(gl), toString(gm)], j))
12441247 }
12451248
12461249
12471250
1248-@Callable(dl)
1251+@Callable(do)
12491252 func evaluatePutByAmountAssetREADONLY (cr) = {
12501253 let bK = aN()
12511254 let bX = fromBase58String(bK[q])
12561259 let bL = parseIntValue(bK[t])
12571260 let bM = parseIntValue(bK[u])
12581261 let ca = bK[p]
1259- let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1262+ let gi = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12601263 let da = bw(cx)
12611264 let db = bw(cy)
12621265 let bG = D(da, bL)
12631266 let bH = D(db, bM)
1264- let cg = if ((gf == 0))
1267+ let cg = if ((gi == 0))
12651268 then e
12661269 else by(bH, bG)
12671270 let cD = D(cr, bL)
12681271 let cE = fraction(cD, cg, d)
12691272 let ct = G(cE, bM)
1270- let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1271- let cO = dr._1
1272- let gk = dr._3
1273- let cc = dr._4
1274- let ce = dr._5
1275- let cb = dr._6
1273+ let du = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1274+ let cO = du._1
1275+ let gn = du._3
1276+ let cc = du._4
1277+ let ce = du._5
1278+ let cb = du._6
12761279 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12771280 }
12781281
12791282
12801283
1281-@Callable(dl)
1284+@Callable(do)
12821285 func evaluatePutByPriceAssetREADONLY (ct) = {
12831286 let bK = aN()
12841287 let bX = fromBase58String(bK[q])
12891292 let bL = parseIntValue(bK[t])
12901293 let bM = parseIntValue(bK[u])
12911294 let ca = bK[p]
1292- let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1293- let gl = bw(cx)
1294- let gm = bw(cy)
1295- let gn = D(gl, bL)
1296- let go = D(gm, bM)
1297- let cg = if ((gf == 0))
1295+ let gi = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1296+ let go = bw(cx)
1297+ let gp = bw(cy)
1298+ let gq = D(go, bL)
1299+ let gr = D(gp, bM)
1300+ let cg = if ((gi == 0))
12981301 then e
1299- else by(go, gn)
1302+ else by(gr, gq)
13001303 let cE = D(ct, bM)
13011304 let cD = fraction(cE, d, cg)
13021305 let cr = G(cD, bL)
1303- let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1304- let cO = dr._1
1305- let gk = dr._3
1306- let cc = dr._4
1307- let ce = dr._5
1308- let cb = dr._6
1306+ let du = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1307+ let cO = du._1
1308+ let gn = du._3
1309+ let cc = du._4
1310+ let ce = du._5
1311+ let cb = du._6
13091312 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
13101313 }
13111314
13121315
13131316
1314-@Callable(dl)
1315-func evaluateGetREADONLY (gp,gq) = {
1316- let cG = bT("", gp, gq, this)
1317+@Callable(do)
1318+func evaluateGetREADONLY (gs,gt) = {
1319+ let cG = bT("", gs, gt, this)
13171320 let cm = cG._1
13181321 let cn = cG._2
13191322 let cc = cG._5
13251328 }
13261329
13271330
1328-@Verifier(gr)
1329-func gs () = {
1330- let gt = {
1331- let dw = eM()
1332- if ($isInstanceOf(dw, "ByteVector"))
1331+@Verifier(gu)
1332+func gv () = {
1333+ let gw = {
1334+ let dz = eP()
1335+ if ($isInstanceOf(dz, "ByteVector"))
13331336 then {
1334- let eQ = dw
1335- eQ
1337+ let eT = dz
1338+ eT
13361339 }
1337- else if ($isInstanceOf(dw, "Unit"))
1338- then gr.senderPublicKey
1340+ else if ($isInstanceOf(dz, "Unit"))
1341+ then gu.senderPublicKey
13391342 else throw("Match error")
13401343 }
1341- let dw = gr
1342- if ($isInstanceOf(dw, "Order"))
1344+ let dz = gu
1345+ if ($isInstanceOf(dz, "Order"))
13431346 then {
1344- let cX = dw
1345- let gu = aM()
1347+ let cX = dz
1348+ let gx = aM()
13461349 let az = cW(cX)
13471350 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1348- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gu)
1351+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gx)
13491352 if (if (if (az)
13501353 then aA
13511354 else false)
13541357 then true
13551358 else ay(az, aA, aB)
13561359 }
1357- else if ($isInstanceOf(dw, "SetScriptTransaction"))
1360+ else if ($isInstanceOf(dz, "SetScriptTransaction"))
13581361 then {
1359- let eN = dw
1360- let gv = blake2b256(value(eN.script))
1361- let gw = fromBase64String(value(getString(aJ, aw())))
1362- let gx = scriptHash(this)
1363- if (if ((gw == gv))
1364- then (gx != gv)
1362+ let eQ = dz
1363+ let gy = blake2b256(value(eQ.script))
1364+ let gz = fromBase64String(value(getString(aJ, aw())))
1365+ let gA = scriptHash(this)
1366+ if (if ((gz == gy))
1367+ then (gA != gy)
13651368 else false)
13661369 then true
1367- else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
1370+ else sigVerify(gu.bodyBytes, gu.proofs[0], gw)
13681371 }
1369- else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
1372+ else sigVerify(gu.bodyBytes, gu.proofs[0], gw)
13701373 }
13711374
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 (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 let af = makeString(["%s", "kLp"], j)
115115
116116 let ag = makeString(["%s", "kLpRefreshedHeight"], j)
117117
118118 let ah = makeString(["%s", "refreshKLpDelay"], j)
119119
120120 let ai = 30
121121
122122 let aj = valueOrElse(getInteger(this, ah), ai)
123123
124124 func ak () = "%s__factoryConfig"
125125
126126
127127 func al () = "%s%s__matcher__publicKey"
128128
129129
130130 func am (an) = (("%s%s%s__" + an) + "__mappings__poolContract2LpAsset")
131131
132132
133133 func ao (ap,aq) = (((("%d%d%s__" + ap) + "__") + aq) + "__config")
134134
135135
136136 func ar (as) = ("%s%s%s__mappings__baseAsset2internalId__" + as)
137137
138138
139139 func at () = "%s__shutdown"
140140
141141
142142 func au (av) = ("%s%s__poolWeight__" + av)
143143
144144
145145 func aw () = "%s__allowedLpScriptHash"
146146
147147
148148 let ax = "%s__feeCollectorAddress"
149149
150150 func ay (az,aA,aB) = throw(((((("order validation failed: orderValid=" + toString(az)) + " senderValid=") + toString(aA)) + " matcherValid=") + toString(aB)))
151151
152152
153153 func aC (aD,aE) = valueOrErrorMessage(getString(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
154154
155155
156156 func aF (aD,aE) = valueOrErrorMessage(getInteger(aD, aE), makeString(["mandatory ", toString(aD), ".", aE, " is not defined"], ""))
157157
158158
159159 func aG (aH) = throw(makeString(["lp.ride:", aH], " "))
160160
161161
162162 func aI (aH) = makeString(["lp.ride:", aH], " ")
163163
164164
165165 let aJ = addressFromStringValue(aC(this, P()))
166166
167167 let aK = addressFromStringValue(aC(aJ, ax))
168168
169169 func aL () = valueOrElse(getBoolean(aJ, at()), false)
170170
171171
172172 func aM () = fromBase58String(aC(aJ, al()))
173173
174174
175175 func aN () = {
176176 let aO = aC(this, aa())
177177 let aP = aC(this, ab())
178178 let aq = aF(aJ, ar(aP))
179179 let ap = aF(aJ, ar(aO))
180180 split(aC(aJ, ao(toString(ap), toString(aq))), j)
181181 }
182182
183183
184184 func aQ (aR) = if ((aR == i))
185185 then unit
186186 else fromBase58String(aR)
187187
188188
189189 func aS (aR) = if ((aR == unit))
190190 then i
191191 else toBase58String(value(aR))
192192
193193
194194 func aT (aU) = $Tuple7(addressFromStringValue(aU[o]), parseIntValue(aU[p]), fromBase58String(aU[q]), aQ(aU[r]), aQ(aU[s]), parseIntValue(aU[t]), parseIntValue(aU[u]))
195195
196196
197197 let aV = aT(aN())
198198
199199 let aW = aV
200200
201201 let aX = aW._1
202202
203203 let aY = aW._2
204204
205205 let aZ = aW._3
206206
207207 let ba = aW._4
208208
209209 let bb = aW._5
210210
211211 let bc = aW._6
212212
213213 let bd = aW._7
214214
215215 func be () = split(aC(aJ, ak()), j)
216216
217217
218218 let bf = valueOrErrorMessage(addressFromString(be()[B]), "incorrect staking address")
219219
220220 let bg = valueOrErrorMessage(addressFromString(be()[C]), "incorrect staking address")
221221
222222 func bh (bi,bj,bk,bl,bm,bn,bo,bp,bq,br) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bi), toString(bj), toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br)], j)
223223
224224
225225 func bs (bt,bu,bv,bl,bo,bp) = makeString(["%d%d%d%d%d%d", toString(bt), toString(bu), toString(bv), toString(bl), toString(bo), toString(bp)], j)
226226
227227
228228 func bw (bx) = if ((bx == "WAVES"))
229229 then wavesBalance(this).available
230230 else assetBalance(this, fromBase58String(bx))
231231
232232
233233 func by (bz,bA) = fraction(bz, d, bA)
234234
235235
236236 func bB (bC,bD,bE,bF) = {
237237 let bG = D(bE, bC)
238238 let bH = D(bF, bD)
239239 by(bH, bG)
240240 }
241241
242242
243243 func bI (bE,bF,bJ) = {
244244 let bK = aN()
245245 let bL = parseIntValue(bK[t])
246246 let bM = parseIntValue(bK[u])
247247 let bN = bB(bL, bM, bE, bF)
248248 let bA = D(bE, bL)
249249 let bz = D(bF, bM)
250250 let bO = D(bJ, b)
251251 let bP = by(bA, bO)
252252 let bQ = by(bz, bO)
253253 [bN, bP, bQ]
254254 }
255255
256256
257257 func bR (bE,bF,bJ) = {
258258 let bS = bI(bE, bF, bJ)
259259 [G(bS[0], b), G(bS[1], b), G(bS[2], b)]
260260 }
261261
262262
263263 func bT (bU,bV,bW,X) = {
264264 let bK = aN()
265265 let bX = bK[q]
266266 let bY = bK[r]
267267 let bZ = bK[s]
268268 let bC = parseIntValue(bK[t])
269269 let bD = parseIntValue(bK[u])
270270 let ca = bK[p]
271271 let cb = valueOrErrorMessage(assetInfo(fromBase58String(bX)), (("Asset " + bX) + " doesn't exist")).quantity
272272 if ((bX != bV))
273273 then throw("Invalid asset passed.")
274274 else {
275275 let cc = bw(bY)
276276 let cd = D(cc, bC)
277277 let ce = bw(bZ)
278278 let cf = D(ce, bD)
279279 let cg = by(cf, cd)
280280 let ch = G(cg, b)
281281 let ci = D(bW, b)
282282 let cj = D(cb, b)
283283 let ck = fraction(cd, ci, cj)
284284 let cl = fraction(cf, ci, cj)
285285 let cm = G(ck, bC)
286286 let cn = G(cl, bD)
287287 let co = if ((bU == ""))
288288 then nil
289289 else [ScriptTransfer(X, cm, if ((bY == "WAVES"))
290290 then unit
291291 else fromBase58String(bY)), ScriptTransfer(X, cn, if ((bZ == "WAVES"))
292292 then unit
293293 else fromBase58String(bZ)), StringEntry(Z(toString(X), bU), bs(cm, cn, bW, ch, height, lastBlock.timestamp)), IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch)]
294294 $Tuple10(cm, cn, bY, bZ, cc, ce, cb, cg, ca, co)
295295 }
296296 }
297297
298298
299299 func cp (bU,cq,cr,cs,ct,cu,X,cv,cw) = {
300300 let bK = aN()
301301 let bX = fromBase58String(bK[q])
302302 let cx = bK[r]
303303 let cy = bK[s]
304304 let cz = bK[v]
305305 let cA = bK[w]
306306 let bL = parseIntValue(bK[t])
307307 let bM = parseIntValue(bK[u])
308308 let ca = bK[p]
309309 let cb = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
310310 let cB = toBase58String(valueOrElse(cs, fromBase58String("WAVES")))
311311 let cC = toBase58String(valueOrElse(cu, fromBase58String("WAVES")))
312312 if (if ((cx != cB))
313313 then true
314314 else (cy != cC))
315315 then throw("Invalid amt or price asset passed.")
316316 else {
317317 let cc = if (cv)
318318 then bw(cx)
319319 else (bw(cx) - cr)
320320 let ce = if (cv)
321321 then bw(cy)
322322 else (bw(cy) - ct)
323323 let cD = D(cr, bL)
324324 let cE = D(ct, bM)
325325 let cF = by(cE, cD)
326326 let cd = D(cc, bL)
327327 let cf = D(ce, bM)
328328 let cG = if ((cb == 0))
329329 then {
330330 let cg = e
331331 let cH = e
332332 let bO = pow((cD * cE), 0, toBigInt(5), 1, 0, DOWN)
333333 $Tuple5(G(bO, b), G(cD, bL), G(cE, bM), by((cf + cE), (cd + cD)), cH)
334334 }
335335 else {
336336 let cg = by(cf, cd)
337337 let cH = fraction(O((cg - cF)), d, cg)
338338 let cI = D(cq, b)
339339 if (if ((cg != e))
340340 then (cH > cI)
341341 else false)
342342 then throw(((("Price slippage " + toString(cH)) + " exceeded the passed limit of ") + toString(cI)))
343343 else {
344344 let cj = D(cb, b)
345345 let cJ = fraction(cD, cg, d)
346346 let cK = fraction(cE, d, cg)
347347 let cL = if ((cJ > cE))
348348 then $Tuple2(cK, cE)
349349 else $Tuple2(cD, cJ)
350350 let cM = cL._1
351351 let cN = cL._2
352352 let bO = fraction(cj, cN, cf)
353353 $Tuple5(G(bO, b), G(cM, bL), G(cN, bM), cg, cH)
354354 }
355355 }
356356 let cO = cG._1
357357 let cP = cG._2
358358 let cQ = cG._3
359359 let ch = G(cG._4, b)
360360 let cR = G(cG._5, b)
361361 if ((0 >= cO))
362362 then throw("Invalid calculations. LP calculated is less than zero.")
363363 else {
364364 let cS = if (!(cw))
365365 then 0
366366 else cO
367367 let cT = (cr - cP)
368368 let cU = (ct - cQ)
369369 let cV = [IntegerEntry(S(), ch), IntegerEntry(T(height, lastBlock.timestamp), ch), StringEntry(W(X, bU), bh(cP, cQ, cS, ch, cq, cR, height, lastBlock.timestamp, cT, cU))]
370370 $Tuple13(cO, cS, ch, cc, ce, cb, bX, ca, cV, cT, cU, cs, cu)
371371 }
372372 }
373373 }
374374
375375
376376 func cW (cX) = {
377377 let bK = aN()
378378 let cY = bK[r]
379379 let cZ = bK[s]
380380 let ca = parseIntValue(bK[p])
381381 let bL = parseIntValue(bK[t])
382382 let bM = parseIntValue(bK[u])
383383 let da = bw(cY)
384384 let db = bw(cZ)
385385 let cg = if ((cX.orderType == Buy))
386386 then bB(bL, bM, (da + cX.amount), db)
387387 else bB(bL, bM, (da - cX.amount), db)
388388 let ch = G(cg, b)
389389 if (if (if (aL())
390390 then true
391391 else (ca == m))
392392 then true
393393 else (ca == n))
394394 then throw("Exchange operations disabled")
395395 else {
396396 let dc = cX.assetPair.amountAsset
397397 let dd = if ((dc == unit))
398398 then "WAVES"
399399 else toBase58String(value(dc))
400400 let de = cX.assetPair.priceAsset
401401 let df = if ((de == unit))
402402 then "WAVES"
403403 else toBase58String(value(de))
404404 if (if ((dd != cY))
405405 then true
406406 else (df != cZ))
407407 then throw("Wrong order assets.")
408408 else {
409409 let dg = cX.price
410410 let dh = fraction(b, bM, bL)
411411 let di = J(dg, b, dh)
412412 let dj = if ((cX.orderType == Buy))
413413 then (ch >= di)
414414 else (di >= ch)
415- true
415+ let dk = valueOrErrorMessage(getInteger(this, af), aI("kLp is required"))
416+ let dl = 0
417+ let dm = (dl > dk)
418+ dm
416419 }
417420 }
418421 }
419422
420423
421-func dk (dl) = if ((size(dl.payments) != 1))
424+func dn (do) = if ((size(do.payments) != 1))
422425 then throw("exactly 1 payment is expected")
423426 else {
424- let dm = value(dl.payments[0])
425- let bV = value(dm.assetId)
426- let dn = dm.amount
427- let cG = bT(toBase58String(dl.transactionId), toBase58String(bV), dn, dl.caller)
427+ let dp = value(do.payments[0])
428+ let bV = value(dp.assetId)
429+ let dq = dp.amount
430+ let cG = bT(toBase58String(do.transactionId), toBase58String(bV), dq, do.caller)
428431 let cm = cG._1
429432 let cn = cG._2
430433 let ca = parseIntValue(cG._9)
431434 let co = cG._10
432435 if (if (aL())
433436 then true
434437 else (ca == n))
435438 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436- else $Tuple5(cm, cn, dn, bV, co)
439+ else $Tuple5(cm, cn, dq, bV, co)
437440 }
438441
439442
440-func do (dl,cq,cw) = if ((size(dl.payments) != 2))
443+func dr (do,cq,cw) = if ((size(do.payments) != 2))
441444 then throw("exactly 2 payments are expected")
442445 else {
443- let dp = value(dl.payments[0])
444- let dq = value(dl.payments[1])
445- let dr = cp(toBase58String(dl.transactionId), cq, dp.amount, dp.assetId, dq.amount, dq.assetId, toString(dl.caller), false, cw)
446- let ca = parseIntValue(dr._8)
446+ let ds = value(do.payments[0])
447+ let dt = value(do.payments[1])
448+ let du = cp(toBase58String(do.transactionId), cq, ds.amount, ds.assetId, dt.amount, dt.assetId, toString(do.caller), false, cw)
449+ let ca = parseIntValue(du._8)
447450 if (if (if (aL())
448451 then true
449452 else (ca == l))
450453 then true
451454 else (ca == n))
452455 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453- else dr
456+ else du
454457 }
455458
456459
457-func ds (dt) = {
458- let du = invoke(aJ, "emit", [dt], nil)
459- if ((du == du))
460+func dv (dw) = {
461+ let dx = invoke(aJ, "emit", [dw], nil)
462+ if ((dx == dx))
460463 then {
461- let dv = {
462- let dw = du
463- if ($isInstanceOf(dw, "Address"))
464+ let dy = {
465+ let dz = dx
466+ if ($isInstanceOf(dz, "Address"))
464467 then {
465- let dx = dw
466- invoke(dx, "emit", [dt], nil)
468+ let dA = dz
469+ invoke(dA, "emit", [dw], nil)
467470 }
468471 else unit
469472 }
470- if ((dv == dv))
471- then dt
473+ if ((dy == dy))
474+ then dw
472475 else throw("Strict value is not equal to itself.")
473476 }
474477 else throw("Strict value is not equal to itself.")
475478 }
476479
477480
478-func dy (dt) = {
479- let dz = fraction(dt, ae, b)
480- $Tuple2((dt - dz), dz)
481+func dB (dw) = {
482+ let dC = fraction(dw, ae, b)
483+ $Tuple2((dw - dC), dC)
481484 }
482485
483486
484-func dA (dB,dC,X,Y) = {
485- let dD = (Y == unit)
486- let dE = bw(aS(ba))
487- let dF = bw(aS(bb))
488- let dG = if ((dC == ba))
487+func dD (dE,dF,X,Y) = {
488+ let dG = (Y == unit)
489+ let dH = bw(aS(ba))
490+ let dI = bw(aS(bb))
491+ let dJ = if ((dF == ba))
489492 then true
490- else if ((dC == bb))
493+ else if ((dF == bb))
491494 then false
492495 else aG("invalid asset")
493- let dH = if (dD)
494- then $Tuple2(dE, dF)
495- else if (dG)
496- then $Tuple2((dE - dB), dF)
497- else $Tuple2(dE, (dF - dB))
498- let dI = dH._1
499- let dJ = dH._2
500496 let dK = if (dG)
501- then $Tuple2(dB, 0)
502- else $Tuple2(0, dB)
497+ then $Tuple2(dH, dI)
498+ else if (dJ)
499+ then $Tuple2((dH - dE), dI)
500+ else $Tuple2(dH, (dI - dE))
503501 let dL = dK._1
504502 let dM = dK._2
505- let dN = dy(dL)._1
506- let dO = dy(dM)._1
507- let dP = dy(dB)
508- let dQ = dP._1
509- let dz = dP._2
510- let dR = (dI + dN)
511- let dS = (dJ + dO)
512- let dT = by(D(dS, bd), D(dR, bc))
513- let dU = G(dT, b)
514- let dV = if (dG)
515- then dI
516- else dJ
517- let dW = toBigInt(dV)
518- let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519- let dY = if ((dX > f))
503+ let dN = if (dJ)
504+ then $Tuple2(dE, 0)
505+ else $Tuple2(0, dE)
506+ let dO = dN._1
507+ let dP = dN._2
508+ let dQ = dB(dO)._1
509+ let dR = dB(dP)._1
510+ let dS = dB(dE)
511+ let dT = dS._1
512+ let dC = dS._2
513+ let dU = (dL + dQ)
514+ let dV = (dM + dR)
515+ let dW = by(D(dV, bd), D(dU, bc))
516+ let dX = G(dW, b)
517+ let dY = if (dJ)
518+ then dL
519+ else dM
520+ let dZ = toBigInt(dY)
521+ let ea = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
522+ let eb = if ((ea > f))
520523 then true
521524 else aG("initial deposit requires all coins")
522- if ((dY == dY))
525+ if ((eb == eb))
523526 then {
524- let dZ = toBigInt(dQ)
525- let ea = max([0, toInt(((dX * (sqrtBigInt((d + ((dZ * d) / dW)), 18, 18, DOWN) - d)) / d))])
526- let cV = if (dD)
527+ let ec = toBigInt(dT)
528+ let ed = max([0, toInt(((ea * (sqrtBigInt((d + ((ec * d) / dZ)), 18, 18, DOWN) - d)) / d))])
529+ let cV = if (dG)
527530 then nil
528- else [IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dL, dM, ea, dU, 0, 0, height, lastBlock.timestamp, 0, 0))]
529- let eb = by(D(dJ, bd), D(dI, bc))
530- let ec = G(eb, b)
531- let ed = {
532- let ee = if (dG)
533- then $Tuple2(dL, dI)
534- else $Tuple2(dM, dJ)
535- let dt = ee._1
536- let ef = ee._2
537- let eg = toInt(fraction(dX, toBigInt((dt / 2)), toBigInt(ef)))
538- fraction((ea - eg), b, eg)
531+ else [IntegerEntry(S(), dX), IntegerEntry(T(height, lastBlock.timestamp), dX), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bh(dO, dP, ed, dX, 0, 0, height, lastBlock.timestamp, 0, 0))]
532+ let ee = by(D(dM, bd), D(dL, bc))
533+ let ef = G(ee, b)
534+ let eg = {
535+ let eh = if (dJ)
536+ then $Tuple2(dO, dL)
537+ else $Tuple2(dP, dM)
538+ let dw = eh._1
539+ let ei = eh._2
540+ let ej = toInt(fraction(ea, toBigInt((dw / 2)), toBigInt(ei)))
541+ fraction((ed - ej), b, ej)
539542 }
540- $Tuple5(ea, cV, dz, ed, dG)
543+ $Tuple5(ed, cV, dC, eg, dJ)
541544 }
542545 else throw("Strict value is not equal to itself.")
543546 }
544547
545548
546-func eh (ei,dQ,dC,X,Y) = {
547- let dD = (Y == unit)
548- let ej = [if ((dC == aZ))
549+func ek (el,dT,dF,X,Y) = {
550+ let dG = (Y == unit)
551+ let em = [if ((dF == aZ))
549552 then true
550553 else aG("invalid lp asset")]
551- if ((ej == ej))
554+ if ((em == em))
552555 then {
553- let ek = if ((ei == ba))
556+ let en = if ((el == ba))
554557 then true
555- else if ((ei == bb))
558+ else if ((el == bb))
556559 then false
557560 else aG("invalid asset")
558- let el = if (ek)
561+ let eo = if (en)
559562 then toBigInt(bw(aS(ba)))
560563 else toBigInt(bw(aS(bb)))
561- let em = bw(aS(ba))
562- let en = bw(aS(bb))
563- let eo = if (ek)
564- then em
565- else en
566- let ep = toBigInt(eo)
567- let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568- let eq = toBigInt(dQ)
569- let er = max([0, toInt(((el * (d - pow((d - ((eq * d) / dX)), 18, h, 0, 18, DOWN))) / d))])
570- let es = dy(er)
571- let et = es._1
572- let dz = es._2
573- let eu = if (ek)
574- then $Tuple4(et, 0, (em - er), en)
575- else $Tuple4(0, et, em, (en - er))
576- let ev = eu._1
577- let ew = eu._2
578- let ex = eu._3
579- let ey = eu._4
580- let dT = by(D(ey, bd), D(ex, bc))
581- let dU = G(dT, b)
582- let cV = if (dD)
564+ let ep = bw(aS(ba))
565+ let eq = bw(aS(bb))
566+ let er = if (en)
567+ then ep
568+ else eq
569+ let es = toBigInt(er)
570+ let ea = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
571+ let et = toBigInt(dT)
572+ let eu = max([0, toInt(((eo * (d - pow((d - ((et * d) / ea)), 18, h, 0, 18, DOWN))) / d))])
573+ let ev = dB(eu)
574+ let ew = ev._1
575+ let dC = ev._2
576+ let ex = if (en)
577+ then $Tuple4(ew, 0, (ep - eu), eq)
578+ else $Tuple4(0, ew, ep, (eq - eu))
579+ let ey = ex._1
580+ let ez = ex._2
581+ let eA = ex._3
582+ let eB = ex._4
583+ let dW = by(D(eB, bd), D(eA, bc))
584+ let dX = G(dW, b)
585+ let cV = if (dG)
583586 then nil
584- else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(ev, ew, dQ, dU, height, lastBlock.timestamp)), IntegerEntry(S(), dU), IntegerEntry(T(height, lastBlock.timestamp), dU)]
585- let eb = by(D(en, bd), D(em, bc))
586- let ec = G(eb, b)
587- let ed = {
588- let ez = (toInt(fraction(el, eq, dX)) * 2)
589- fraction((et - ez), b, ez)
587+ else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bs(ey, ez, dT, dX, height, lastBlock.timestamp)), IntegerEntry(S(), dX), IntegerEntry(T(height, lastBlock.timestamp), dX)]
588+ let ee = by(D(eq, bd), D(ep, bc))
589+ let ef = G(ee, b)
590+ let eg = {
591+ let eC = (toInt(fraction(eo, et, ea)) * 2)
592+ fraction((ew - eC), b, eC)
590593 }
591- $Tuple5(et, cV, dz, ed, ek)
594+ $Tuple5(ew, cV, dC, eg, en)
592595 }
593596 else throw("Strict value is not equal to itself.")
594597 }
595598
596599
597-func eA (eB,eC,cb) = {
598- let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599- eD
600+func eD (eE,eF,cb) = {
601+ let eG = fraction(pow((eE * eF), 0, toBigInt(5), 1, 0, DOWN), d, cb)
602+ eG
600603 }
601604
602605
603-func eE (eF,eG,eH) = {
604- let eI = (bw(aS(ba)) + eF)
605- let eJ = (bw(aS(bb)) + eG)
606- let eK = (value(assetInfo(aZ)).quantity + eH)
607- let eD = eA(toBigInt(eI), toBigInt(eJ), toBigInt(eK))
608- let eL = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609- $Tuple2(eL, eD)
606+func eH (eI,eJ,eK) = {
607+ let eL = (bw(aS(ba)) + eI)
608+ let eM = (bw(aS(bb)) + eJ)
609+ let eN = (value(assetInfo(aZ)).quantity + eK)
610+ let eG = eD(toBigInt(eL), toBigInt(eM), toBigInt(eN))
611+ let eO = [IntegerEntry(ag, height), StringEntry(af, toString(eG))]
612+ $Tuple2(eO, eG)
610613 }
611614
612615
613-func eM () = {
614- let dw = getString(Q())
615- if ($isInstanceOf(dw, "String"))
616+func eP () = {
617+ let dz = getString(Q())
618+ if ($isInstanceOf(dz, "String"))
616619 then {
617- let eN = dw
618- fromBase58String(eN)
620+ let eQ = dz
621+ fromBase58String(eQ)
619622 }
620- else if ($isInstanceOf(dw, "Unit"))
623+ else if ($isInstanceOf(dz, "Unit"))
621624 then unit
622625 else throw("Match error")
623626 }
624627
625628
626-func eO () = {
627- let dw = getString(R())
628- if ($isInstanceOf(dw, "String"))
629+func eR () = {
630+ let dz = getString(R())
631+ if ($isInstanceOf(dz, "String"))
629632 then {
630- let eN = dw
631- fromBase58String(eN)
633+ let eQ = dz
634+ fromBase58String(eQ)
632635 }
633- else if ($isInstanceOf(dw, "Unit"))
636+ else if ($isInstanceOf(dz, "Unit"))
634637 then unit
635638 else throw("Match error")
636639 }
637640
638641
639-func eP (dl) = {
640- let dw = eM()
641- if ($isInstanceOf(dw, "ByteVector"))
642+func eS (do) = {
643+ let dz = eP()
644+ if ($isInstanceOf(dz, "ByteVector"))
642645 then {
643- let eQ = dw
644- (dl.callerPublicKey == eQ)
646+ let eT = dz
647+ (do.callerPublicKey == eT)
645648 }
646- else if ($isInstanceOf(dw, "Unit"))
647- then (dl.caller == this)
649+ else if ($isInstanceOf(dz, "Unit"))
650+ then (do.caller == this)
648651 else throw("Match error")
649652 }
650653
651654
652-func eR (dl) = {
653- let eS = throw("Permission denied")
654- let dw = eM()
655- if ($isInstanceOf(dw, "ByteVector"))
655+func eU (do) = {
656+ let eV = throw("Permission denied")
657+ let dz = eP()
658+ if ($isInstanceOf(dz, "ByteVector"))
656659 then {
657- let eQ = dw
658- if ((dl.callerPublicKey == eQ))
660+ let eT = dz
661+ if ((do.callerPublicKey == eT))
659662 then true
660- else eS
663+ else eV
661664 }
662- else if ($isInstanceOf(dw, "Unit"))
663- then if ((dl.caller == this))
665+ else if ($isInstanceOf(dz, "Unit"))
666+ then if ((do.caller == this))
664667 then true
665- else eS
668+ else eV
666669 else throw("Match error")
667670 }
668671
669672
670-@Callable(dl)
671-func setManager (eT) = {
672- let eU = eR(dl)
673- if ((eU == eU))
673+@Callable(do)
674+func setManager (eW) = {
675+ let eX = eU(do)
676+ if ((eX == eX))
674677 then {
675- let eV = fromBase58String(eT)
676- if ((eV == eV))
677- then [StringEntry(R(), eT)]
678+ let eY = fromBase58String(eW)
679+ if ((eY == eY))
680+ then [StringEntry(R(), eW)]
678681 else throw("Strict value is not equal to itself.")
679682 }
680683 else throw("Strict value is not equal to itself.")
681684 }
682685
683686
684687
685-@Callable(dl)
688+@Callable(do)
686689 func confirmManager () = {
687- let eW = eO()
688- let eX = if (isDefined(eW))
690+ let eZ = eR()
691+ let fa = if (isDefined(eZ))
689692 then true
690693 else throw("No pending manager")
691- if ((eX == eX))
694+ if ((fa == fa))
692695 then {
693- let eY = if ((dl.callerPublicKey == value(eW)))
696+ let fb = if ((do.callerPublicKey == value(eZ)))
694697 then true
695698 else throw("You are not pending manager")
696- if ((eY == eY))
697- then [StringEntry(Q(), toBase58String(value(eW))), DeleteEntry(R())]
699+ if ((fb == fb))
700+ then [StringEntry(Q(), toBase58String(value(eZ))), DeleteEntry(R())]
698701 else throw("Strict value is not equal to itself.")
699702 }
700703 else throw("Strict value is not equal to itself.")
701704 }
702705
703706
704707
705-@Callable(dl)
706-func put (cq,eZ) = if ((0 > cq))
708+@Callable(do)
709+func put (cq,fc) = if ((0 > cq))
707710 then throw("Invalid slippageTolerance passed")
708711 else {
709- let dr = do(dl, cq, true)
710- let cS = dr._2
711- let bX = dr._7
712- let co = dr._9
713- let cT = dr._10
714- let cU = dr._11
715- let fa = dr._12
716- let fb = dr._13
717- let du = invoke(aJ, "emit", [cS], nil)
718- if ((du == du))
712+ let du = dr(do, cq, true)
713+ let cS = du._2
714+ let bX = du._7
715+ let co = du._9
716+ let cT = du._10
717+ let cU = du._11
718+ let fd = du._12
719+ let fe = du._13
720+ let dx = invoke(aJ, "emit", [cS], nil)
721+ if ((dx == dx))
719722 then {
720- let dv = {
721- let dw = du
722- if ($isInstanceOf(dw, "Address"))
723+ let dy = {
724+ let dz = dx
725+ if ($isInstanceOf(dz, "Address"))
723726 then {
724- let dx = dw
725- invoke(dx, "emit", [cS], nil)
727+ let dA = dz
728+ invoke(dA, "emit", [cS], nil)
726729 }
727730 else unit
728731 }
729- if ((dv == dv))
732+ if ((dy == dy))
730733 then {
731- let fc = if ((cT > 0))
732- then invoke(bg, "put", nil, [AttachedPayment(fa, cT)])
734+ let ff = if ((cT > 0))
735+ then invoke(bg, "put", nil, [AttachedPayment(fd, cT)])
733736 else nil
734- if ((fc == fc))
737+ if ((ff == ff))
735738 then {
736- let fd = if ((cU > 0))
737- then invoke(bg, "put", nil, [AttachedPayment(fb, cU)])
739+ let fg = if ((cU > 0))
740+ then invoke(bg, "put", nil, [AttachedPayment(fe, cU)])
738741 else nil
739- if ((fd == fd))
742+ if ((fg == fg))
740743 then {
741- let fe = if (eZ)
744+ let fh = if (fc)
742745 then {
743- let ff = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744- if ((ff == ff))
746+ let fi = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
747+ if ((fi == fi))
745748 then nil
746749 else throw("Strict value is not equal to itself.")
747750 }
748- else [ScriptTransfer(dl.caller, cS, bX)]
749- let fg = eE(0, 0, 0)
750- let fh = fg._1
751- let eD = fg._2
752- ((co ++ fe) ++ fh)
751+ else [ScriptTransfer(do.caller, cS, bX)]
752+ let fj = eH(0, 0, 0)
753+ let fk = fj._1
754+ let eG = fj._2
755+ ((co ++ fh) ++ fk)
753756 }
754757 else throw("Strict value is not equal to itself.")
755758 }
756759 else throw("Strict value is not equal to itself.")
757760 }
758761 else throw("Strict value is not equal to itself.")
759762 }
760763 else throw("Strict value is not equal to itself.")
761764 }
762765
763766
764767
765-@Callable(dl)
766-func putForFree (fi) = if ((0 > fi))
768+@Callable(do)
769+func putForFree (fl) = if ((0 > fl))
767770 then throw("Invalid value passed")
768771 else {
769- let dr = do(dl, fi, false)
770- let co = dr._9
771- let fj = eE(0, 0, 0)
772- let fh = fj._1
773- let eD = fj._2
774- (co ++ fh)
772+ let du = dr(do, fl, false)
773+ let co = du._9
774+ let fm = eH(0, 0, 0)
775+ let fk = fm._1
776+ let eG = fm._2
777+ (co ++ fk)
775778 }
776779
777780
778781
779-@Callable(dl)
780-func putOneTkn (fk,fl) = {
781- let fm = {
782- let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
783- if ($isInstanceOf(fn, "Boolean"))
784- then fn
785- else throw(($getType(fn) + " couldn't be cast to Boolean"))
782+@Callable(do)
783+func putOneTkn (fn,fo) = {
784+ let fp = {
785+ let fq = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
786+ if ($isInstanceOf(fq, "Boolean"))
787+ then fq
788+ else throw(($getType(fq) + " couldn't be cast to Boolean"))
786789 }
787- let fo = if (if (if (aL())
790+ let fr = if (if (if (aL())
788791 then true
789792 else (aY == l))
790793 then true
791794 else (aY == n))
792795 then true
793- else fm
794- let ej = [if (if (!(fo))
796+ else fp
797+ let em = [if (if (!(fr))
795798 then true
796- else eP(dl))
799+ else eS(do))
797800 then true
798- else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
801+ else aG("put operation is blocked by admin"), if ((size(do.payments) == 1))
799802 then true
800803 else aG("exactly 1 payment are expected")]
801- if ((ej == ej))
804+ if ((em == em))
802805 then {
803- let fp = dl.payments[0]
804- let dC = fp.assetId
805- let dB = fp.amount
806- let X = dl.caller
807- let Y = dl.transactionId
808- let fq = dA(dB, dC, X, Y)
809- let fr = fq._1
810- let cV = fq._2
811- let dz = fq._3
812- let fs = fq._4
813- let dG = fq._5
814- let ft = if (if ((fk > 0))
815- then (fk > fr)
806+ let fs = do.payments[0]
807+ let dF = fs.assetId
808+ let dE = fs.amount
809+ let X = do.caller
810+ let Y = do.transactionId
811+ let ft = dD(dE, dF, X, Y)
812+ let fu = ft._1
813+ let cV = ft._2
814+ let dC = ft._3
815+ let fv = ft._4
816+ let dJ = ft._5
817+ let fw = if (if ((fn > 0))
818+ then (fn > fu)
816819 else false)
817- then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
818- else fr
819- let du = ds(ft)
820- if ((du == du))
820+ then aG(makeString(["amount to receive is less than ", toString(fn)], ""))
821+ else fu
822+ let dx = dv(fw)
823+ if ((dx == dx))
821824 then {
822- let fe = if (fl)
825+ let fh = if (fo)
823826 then {
824- let fu = invoke(bf, "stake", nil, [AttachedPayment(aZ, ft)])
825- if ((fu == fu))
827+ let fx = invoke(bf, "stake", nil, [AttachedPayment(aZ, fw)])
828+ if ((fx == fx))
826829 then nil
827830 else throw("Strict value is not equal to itself.")
828831 }
829- else [ScriptTransfer(dl.caller, ft, aZ)]
830- let fv = if ((dz > 0))
831- then [ScriptTransfer(aK, dz, dC)]
832+ else [ScriptTransfer(do.caller, fw, aZ)]
833+ let fy = if ((dC > 0))
834+ then [ScriptTransfer(aK, dC, dF)]
832835 else nil
833- let fw = if ((this == aK))
836+ let fz = if ((this == aK))
834837 then $Tuple2(0, 0)
835- else if (dG)
836- then $Tuple2(-(dz), 0)
837- else $Tuple2(0, -(dz))
838- let eF = fw._1
839- let eG = fw._2
840- let fx = eE(eF, eG, 0)
841- let fh = fx._1
842- let eD = fx._2
843- $Tuple2((((cV ++ fe) ++ fv) ++ fh), ft)
838+ else if (dJ)
839+ then $Tuple2(-(dC), 0)
840+ else $Tuple2(0, -(dC))
841+ let eI = fz._1
842+ let eJ = fz._2
843+ let fA = eH(eI, eJ, 0)
844+ let fk = fA._1
845+ let eG = fA._2
846+ $Tuple2((((cV ++ fh) ++ fy) ++ fk), fw)
844847 }
845848 else throw("Strict value is not equal to itself.")
846849 }
847850 else throw("Strict value is not equal to itself.")
848851 }
849852
850853
851854
852-@Callable(dl)
853-func putOneTknREADONLY (dC,dB) = {
854- let fy = dA(dB, aQ(dC), unit, unit)
855- let fr = fy._1
856- let cV = fy._2
857- let dz = fy._3
858- let fs = fy._4
859- let dG = fy._5
860- $Tuple2(nil, $Tuple3(fr, dz, fs))
855+@Callable(do)
856+func putOneTknREADONLY (dF,dE) = {
857+ let fB = dD(dE, aQ(dF), unit, unit)
858+ let fu = fB._1
859+ let cV = fB._2
860+ let dC = fB._3
861+ let fv = fB._4
862+ let dJ = fB._5
863+ $Tuple2(nil, $Tuple3(fu, dC, fv))
861864 }
862865
863866
864867
865-@Callable(dl)
866-func getOneTkn (fz,fk) = {
867- let fm = {
868- let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
869- if ($isInstanceOf(fn, "Boolean"))
870- then fn
871- else throw(($getType(fn) + " couldn't be cast to Boolean"))
868+@Callable(do)
869+func getOneTkn (fC,fn) = {
870+ let fp = {
871+ let fq = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
872+ if ($isInstanceOf(fq, "Boolean"))
873+ then fq
874+ else throw(($getType(fq) + " couldn't be cast to Boolean"))
872875 }
873- let fA = if (if (aL())
876+ let fD = if (if (aL())
874877 then true
875878 else (aY == n))
876879 then true
877- else fm
878- let ej = [if (if (!(fA))
880+ else fp
881+ let em = [if (if (!(fD))
879882 then true
880- else eP(dl))
883+ else eS(do))
881884 then true
882- else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
885+ else aG("get operation is blocked by admin"), if ((size(do.payments) == 1))
883886 then true
884887 else aG("exactly 1 payment are expected")]
885- if ((ej == ej))
888+ if ((em == em))
886889 then {
887- let ei = aQ(fz)
888- let fp = dl.payments[0]
889- let dC = fp.assetId
890- let dQ = fp.amount
891- let X = dl.caller
892- let Y = dl.transactionId
893- let fB = eh(ei, dQ, dC, X, Y)
894- let fC = fB._1
895- let cV = fB._2
896- let dz = fB._3
897- let fs = fB._4
898- let ek = fB._5
899- let dt = if (if ((fk > 0))
900- then (fk > fC)
890+ let el = aQ(fC)
891+ let fs = do.payments[0]
892+ let dF = fs.assetId
893+ let dT = fs.amount
894+ let X = do.caller
895+ let Y = do.transactionId
896+ let fE = ek(el, dT, dF, X, Y)
897+ let fF = fE._1
898+ let cV = fE._2
899+ let dC = fE._3
900+ let fv = fE._4
901+ let en = fE._5
902+ let dw = if (if ((fn > 0))
903+ then (fn > fF)
901904 else false)
902- then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
903- else fC
904- let fD = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
905- if ((fD == fD))
905+ then aG(makeString(["amount to receive is less than ", toString(fn)], ""))
906+ else fF
907+ let fG = invoke(aJ, "burn", [dT], [AttachedPayment(dF, dT)])
908+ if ((fG == fG))
906909 then {
907- let fE = [ScriptTransfer(X, dt, ei)]
908- let fv = if ((dz > 0))
909- then [ScriptTransfer(aK, dz, ei)]
910+ let fH = [ScriptTransfer(X, dw, el)]
911+ let fy = if ((dC > 0))
912+ then [ScriptTransfer(aK, dC, el)]
910913 else nil
911- let fF = {
912- let fG = if ((this == aK))
914+ let fI = {
915+ let fJ = if ((this == aK))
913916 then 0
914- else dz
915- if (ek)
916- then $Tuple2(-((dt + fG)), 0)
917- else $Tuple2(0, -((dt + fG)))
917+ else dC
918+ if (en)
919+ then $Tuple2(-((dw + fJ)), 0)
920+ else $Tuple2(0, -((dw + fJ)))
918921 }
919- let eF = fF._1
920- let eG = fF._2
921- let fH = eE(eF, eG, 0)
922- let fh = fH._1
923- let eD = fH._2
924- $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
922+ let eI = fI._1
923+ let eJ = fI._2
924+ let fK = eH(eI, eJ, 0)
925+ let fk = fK._1
926+ let eG = fK._2
927+ $Tuple2((((cV ++ fH) ++ fy) ++ fk), dw)
925928 }
926929 else throw("Strict value is not equal to itself.")
927930 }
928931 else throw("Strict value is not equal to itself.")
929932 }
930933
931934
932935
933-@Callable(dl)
934-func getOneTknREADONLY (ei,dQ) = {
935- let fI = eh(aQ(ei), dQ, aZ, unit, unit)
936- let fC = fI._1
937- let cV = fI._2
938- let dz = fI._3
939- let fs = fI._4
940- let ek = fI._5
941- $Tuple2(nil, $Tuple3(fC, dz, fs))
936+@Callable(do)
937+func getOneTknREADONLY (el,dT) = {
938+ let fL = ek(aQ(el), dT, aZ, unit, unit)
939+ let fF = fL._1
940+ let cV = fL._2
941+ let dC = fL._3
942+ let fv = fL._4
943+ let en = fL._5
944+ $Tuple2(nil, $Tuple3(fF, dC, fv))
942945 }
943946
944947
945948
946-@Callable(dl)
947-func unstakeAndGetOneTkn (fJ,fz,fk) = {
948- let fm = {
949- let fn = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
950- if ($isInstanceOf(fn, "Boolean"))
951- then fn
952- else throw(($getType(fn) + " couldn't be cast to Boolean"))
949+@Callable(do)
950+func unstakeAndGetOneTkn (fM,fC,fn) = {
951+ let fp = {
952+ let fq = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
953+ if ($isInstanceOf(fq, "Boolean"))
954+ then fq
955+ else throw(($getType(fq) + " couldn't be cast to Boolean"))
953956 }
954- let fA = if (if (aL())
957+ let fD = if (if (aL())
955958 then true
956959 else (aY == n))
957960 then true
958- else fm
959- let ej = [if (if (!(fA))
961+ else fp
962+ let em = [if (if (!(fD))
960963 then true
961- else eP(dl))
964+ else eS(do))
962965 then true
963- else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
966+ else aG("get operation is blocked by admin"), if ((size(do.payments) == 0))
964967 then true
965968 else aG("no payments are expected")]
966- if ((ej == ej))
969+ if ((em == em))
967970 then {
968- let ei = aQ(fz)
969- let X = dl.caller
970- let Y = dl.transactionId
971- let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
972- if ((fK == fK))
971+ let el = aQ(fC)
972+ let X = do.caller
973+ let Y = do.transactionId
974+ let fN = invoke(bf, "unstake", [toBase58String(aZ), fM], nil)
975+ if ((fN == fN))
973976 then {
974- let fL = eh(ei, fJ, aZ, X, Y)
975- let fC = fL._1
976- let cV = fL._2
977- let dz = fL._3
978- let fs = fL._4
979- let ek = fL._5
980- let dt = if (if ((fk > 0))
981- then (fk > fC)
977+ let fO = ek(el, fM, aZ, X, Y)
978+ let fF = fO._1
979+ let cV = fO._2
980+ let dC = fO._3
981+ let fv = fO._4
982+ let en = fO._5
983+ let dw = if (if ((fn > 0))
984+ then (fn > fF)
982985 else false)
983- then aG(makeString(["amount to receive is less than ", toString(fk)], ""))
984- else fC
985- let fD = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
986- if ((fD == fD))
986+ then aG(makeString(["amount to receive is less than ", toString(fn)], ""))
987+ else fF
988+ let fG = invoke(aJ, "burn", [fM], [AttachedPayment(aZ, fM)])
989+ if ((fG == fG))
987990 then {
988- let fE = [ScriptTransfer(dl.caller, dt, ei)]
989- let fv = if ((dz > 0))
990- then [ScriptTransfer(aK, dz, ei)]
991+ let fH = [ScriptTransfer(do.caller, dw, el)]
992+ let fy = if ((dC > 0))
993+ then [ScriptTransfer(aK, dC, el)]
991994 else nil
992- let fM = {
993- let fG = if ((this == aK))
995+ let fP = {
996+ let fJ = if ((this == aK))
994997 then 0
995- else dz
996- if (ek)
997- then $Tuple2(-((dt + fG)), 0)
998- else $Tuple2(0, -((dt + fG)))
998+ else dC
999+ if (en)
1000+ then $Tuple2(-((dw + fJ)), 0)
1001+ else $Tuple2(0, -((dw + fJ)))
9991002 }
1000- let eF = fM._1
1001- let eG = fM._2
1002- let fN = eE(eF, eG, 0)
1003- let fh = fN._1
1004- let eD = fN._2
1005- $Tuple2((((cV ++ fE) ++ fv) ++ fh), dt)
1003+ let eI = fP._1
1004+ let eJ = fP._2
1005+ let fQ = eH(eI, eJ, 0)
1006+ let fk = fQ._1
1007+ let eG = fQ._2
1008+ $Tuple2((((cV ++ fH) ++ fy) ++ fk), dw)
10061009 }
10071010 else throw("Strict value is not equal to itself.")
10081011 }
10091012 else throw("Strict value is not equal to itself.")
10101013 }
10111014 else throw("Strict value is not equal to itself.")
10121015 }
10131016
10141017
10151018
1016-@Callable(dl)
1019+@Callable(do)
10171020 func get () = {
1018- let cG = dk(dl)
1019- let fO = cG._1
1021+ let cG = dn(do)
1022+ let fR = cG._1
10201023 let cn = cG._2
1021- let dn = cG._3
1024+ let dq = cG._3
10221025 let bV = cG._4
10231026 let co = cG._5
1024- let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1025- if ((fP == fP))
1027+ let fS = invoke(aJ, "burn", [dq], [AttachedPayment(bV, dq)])
1028+ if ((fS == fS))
10261029 then {
1027- let fQ = eE(-(fO), -(cn), 0)
1028- let fh = fQ._1
1029- let eD = fQ._2
1030- (co ++ fh)
1030+ let fT = eH(-(fR), -(cn), 0)
1031+ let fk = fT._1
1032+ let eG = fT._2
1033+ (co ++ fk)
10311034 }
10321035 else throw("Strict value is not equal to itself.")
10331036 }
10341037
10351038
10361039
1037-@Callable(dl)
1038-func getNoLess (fR,fS) = {
1039- let cG = dk(dl)
1040+@Callable(do)
1041+func getNoLess (fU,fV) = {
1042+ let cG = dn(do)
10401043 let cm = cG._1
10411044 let cn = cG._2
1042- let dn = cG._3
1045+ let dq = cG._3
10431046 let bV = cG._4
10441047 let co = cG._5
1045- if ((fR > cm))
1046- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fR)))
1047- else if ((fS > cn))
1048- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fS)))
1048+ if ((fU > cm))
1049+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fU)))
1050+ else if ((fV > cn))
1051+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fV)))
10491052 else {
1050- let fP = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
1051- if ((fP == fP))
1053+ let fS = invoke(aJ, "burn", [dq], [AttachedPayment(bV, dq)])
1054+ if ((fS == fS))
10521055 then {
1053- let fT = eE(-(cm), -(cn), 0)
1054- let fh = fT._1
1055- let eD = fT._2
1056- (co ++ fh)
1056+ let fW = eH(-(cm), -(cn), 0)
1057+ let fk = fW._1
1058+ let eG = fW._2
1059+ (co ++ fk)
10571060 }
10581061 else throw("Strict value is not equal to itself.")
10591062 }
10601063 }
10611064
10621065
10631066
1064-@Callable(dl)
1065-func unstakeAndGet (dt) = {
1066- let fU = if ((size(dl.payments) != 0))
1067+@Callable(do)
1068+func unstakeAndGet (dw) = {
1069+ let fX = if ((size(do.payments) != 0))
10671070 then throw("No payments are expected")
10681071 else true
1069- if ((fU == fU))
1072+ if ((fX == fX))
10701073 then {
10711074 let bK = aN()
10721075 let bX = fromBase58String(bK[q])
1073- let fK = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1074- if ((fK == fK))
1076+ let fN = invoke(bf, "unstake", [toBase58String(bX), dw], nil)
1077+ if ((fN == fN))
10751078 then {
1076- let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
1079+ let cG = bT(toBase58String(do.transactionId), toBase58String(bX), dw, do.caller)
10771080 let cm = cG._1
10781081 let cn = cG._2
10791082 let ca = parseIntValue(cG._9)
10801083 let co = cG._10
1081- let fV = if (if (aL())
1084+ let fY = if (if (aL())
10821085 then true
10831086 else (ca == n))
10841087 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10851088 else true
1086- if ((fV == fV))
1089+ if ((fY == fY))
10871090 then {
1088- let fP = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1089- if ((fP == fP))
1091+ let fS = invoke(aJ, "burn", [dw], [AttachedPayment(bX, dw)])
1092+ if ((fS == fS))
10901093 then {
1091- let fW = eE(-(cm), -(cn), 0)
1092- let fh = fW._1
1093- let eD = fW._2
1094- (co ++ fh)
1094+ let fZ = eH(-(cm), -(cn), 0)
1095+ let fk = fZ._1
1096+ let eG = fZ._2
1097+ (co ++ fk)
10951098 }
10961099 else throw("Strict value is not equal to itself.")
10971100 }
10981101 else throw("Strict value is not equal to itself.")
10991102 }
11001103 else throw("Strict value is not equal to itself.")
11011104 }
11021105 else throw("Strict value is not equal to itself.")
11031106 }
11041107
11051108
11061109
1107-@Callable(dl)
1108-func unstakeAndGetNoLess (fJ,fX,fS) = {
1109- let fA = if (aL())
1110+@Callable(do)
1111+func unstakeAndGetNoLess (fM,ga,fV) = {
1112+ let fD = if (aL())
11101113 then true
11111114 else (aY == n)
1112- let ej = [if (!(fA))
1115+ let em = [if (!(fD))
11131116 then true
1114- else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
1117+ else throw("get operation is blocked by admin"), if ((size(do.payments) == 0))
11151118 then true
11161119 else throw("no payments are expected")]
1117- if ((ej == ej))
1120+ if ((em == em))
11181121 then {
1119- let fK = invoke(bf, "unstake", [toBase58String(aZ), fJ], nil)
1120- if ((fK == fK))
1122+ let fN = invoke(bf, "unstake", [toBase58String(aZ), fM], nil)
1123+ if ((fN == fN))
11211124 then {
1122- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fJ, dl.caller)
1125+ let cG = bT(toBase58String(do.transactionId), toBase58String(aZ), fM, do.caller)
11231126 let cm = cG._1
11241127 let cn = cG._2
11251128 let co = cG._10
1126- let fY = [if ((cm >= fX))
1129+ let gb = [if ((cm >= ga))
11271130 then true
1128- else throw(makeString(["amount asset amount to receive is less than ", toString(fX)], "")), if ((cn >= fS))
1131+ else throw(makeString(["amount asset amount to receive is less than ", toString(ga)], "")), if ((cn >= fV))
11291132 then true
1130- else throw(makeString(["price asset amount to receive is less than ", toString(fS)], ""))]
1131- if ((fY == fY))
1133+ else throw(makeString(["price asset amount to receive is less than ", toString(fV)], ""))]
1134+ if ((gb == gb))
11321135 then {
1133- let fP = invoke(aJ, "burn", [fJ], [AttachedPayment(aZ, fJ)])
1134- if ((fP == fP))
1136+ let fS = invoke(aJ, "burn", [fM], [AttachedPayment(aZ, fM)])
1137+ if ((fS == fS))
11351138 then {
1136- let fZ = eE(-(cm), -(cn), 0)
1137- let fh = fZ._1
1138- let eD = fZ._2
1139- (co ++ fh)
1139+ let gc = eH(-(cm), -(cn), 0)
1140+ let fk = gc._1
1141+ let eG = gc._2
1142+ (co ++ fk)
11401143 }
11411144 else throw("Strict value is not equal to itself.")
11421145 }
11431146 else throw("Strict value is not equal to itself.")
11441147 }
11451148 else throw("Strict value is not equal to itself.")
11461149 }
11471150 else throw("Strict value is not equal to itself.")
11481151 }
11491152
11501153
11511154
1152-@Callable(dl)
1153-func activate (ga,gb) = if ((toString(dl.caller) != toString(aJ)))
1155+@Callable(do)
1156+func activate (gd,ge) = if ((toString(do.caller) != toString(aJ)))
11541157 then throw("permissions denied")
1155- else $Tuple2([StringEntry(aa(), ga), StringEntry(ab(), gb)], "success")
1158+ else $Tuple2([StringEntry(aa(), gd), StringEntry(ab(), ge)], "success")
11561159
11571160
11581161
1159-@Callable(dl)
1162+@Callable(do)
11601163 func refreshKLp () = {
1161- let gc = valueOrElse(getInteger(ag), 0)
1162- let gd = if (((height - gc) >= aj))
1164+ let gf = valueOrElse(getInteger(ag), 0)
1165+ let gg = if (((height - gf) >= aj))
11631166 then unit
11641167 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1165- if ((gd == gd))
1168+ if ((gg == gg))
11661169 then {
1167- let ge = eE(0, 0, 0)
1168- let eL = ge._1
1169- let eD = ge._2
1170- $Tuple2(eL, toString(eD))
1170+ let gh = eH(0, 0, 0)
1171+ let eO = gh._1
1172+ let eG = gh._2
1173+ $Tuple2(eO, toString(eG))
11711174 }
11721175 else throw("Strict value is not equal to itself.")
11731176 }
11741177
11751178
11761179
1177-@Callable(dl)
1180+@Callable(do)
11781181 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11791182
11801183
11811184
1182-@Callable(dl)
1185+@Callable(do)
11831186 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11841187
11851188
11861189
1187-@Callable(dl)
1190+@Callable(do)
11881191 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11891192 let bS = bI(bE, bF, bJ)
11901193 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11911194 }
11921195
11931196
11941197
1195-@Callable(dl)
1198+@Callable(do)
11961199 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11971200
11981201
11991202
1200-@Callable(dl)
1203+@Callable(do)
12011204 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12021205
12031206
12041207
1205-@Callable(dl)
1208+@Callable(do)
12061209 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
12071210
12081211
12091212
1210-@Callable(dl)
1213+@Callable(do)
12111214 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
12121215
12131216
12141217
1215-@Callable(dl)
1218+@Callable(do)
12161219 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
12171220 let cG = bT(bU, bV, bW, addressFromStringValue(X))
12181221 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
12191222 }
12201223
12211224
12221225
1223-@Callable(dl)
1226+@Callable(do)
12241227 func statsREADONLY () = {
12251228 let bK = aN()
12261229 let bX = fromBase58String(bK[q])
12271230 let cY = bK[r]
12281231 let cZ = bK[s]
12291232 let cz = bK[v]
12301233 let cA = bK[w]
12311234 let bL = parseIntValue(bK[t])
12321235 let bM = parseIntValue(bK[u])
1233- let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1236+ let gi = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12341237 let da = bw(cY)
12351238 let db = bw(cZ)
1236- let gg = if ((gf == 0))
1239+ let gj = if ((gi == 0))
12371240 then [e, e, e]
1238- else bI(da, db, gf)
1241+ else bI(da, db, gi)
12391242 let ch = 0
1240- let gh = G(gg[1], b)
1241- let gi = G(gg[2], b)
1242- let gj = value(getInteger(aJ, au(toString(this))))
1243- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(gf), toString(ch), toString(gh), toString(gi), toString(gj)], j))
1243+ let gk = G(gj[1], b)
1244+ let gl = G(gj[2], b)
1245+ let gm = value(getInteger(aJ, au(toString(this))))
1246+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(gi), toString(ch), toString(gk), toString(gl), toString(gm)], j))
12441247 }
12451248
12461249
12471250
1248-@Callable(dl)
1251+@Callable(do)
12491252 func evaluatePutByAmountAssetREADONLY (cr) = {
12501253 let bK = aN()
12511254 let bX = fromBase58String(bK[q])
12521255 let cx = bK[r]
12531256 let bY = fromBase58String(cx)
12541257 let cy = bK[s]
12551258 let bZ = fromBase58String(cy)
12561259 let bL = parseIntValue(bK[t])
12571260 let bM = parseIntValue(bK[u])
12581261 let ca = bK[p]
1259- let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1262+ let gi = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
12601263 let da = bw(cx)
12611264 let db = bw(cy)
12621265 let bG = D(da, bL)
12631266 let bH = D(db, bM)
1264- let cg = if ((gf == 0))
1267+ let cg = if ((gi == 0))
12651268 then e
12661269 else by(bH, bG)
12671270 let cD = D(cr, bL)
12681271 let cE = fraction(cD, cg, d)
12691272 let ct = G(cE, bM)
1270- let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1271- let cO = dr._1
1272- let gk = dr._3
1273- let cc = dr._4
1274- let ce = dr._5
1275- let cb = dr._6
1273+ let du = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1274+ let cO = du._1
1275+ let gn = du._3
1276+ let cc = du._4
1277+ let ce = du._5
1278+ let cb = du._6
12761279 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
12771280 }
12781281
12791282
12801283
1281-@Callable(dl)
1284+@Callable(do)
12821285 func evaluatePutByPriceAssetREADONLY (ct) = {
12831286 let bK = aN()
12841287 let bX = fromBase58String(bK[q])
12851288 let cx = bK[r]
12861289 let bY = fromBase58String(cx)
12871290 let cy = bK[s]
12881291 let bZ = fromBase58String(cy)
12891292 let bL = parseIntValue(bK[t])
12901293 let bM = parseIntValue(bK[u])
12911294 let ca = bK[p]
1292- let gf = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1293- let gl = bw(cx)
1294- let gm = bw(cy)
1295- let gn = D(gl, bL)
1296- let go = D(gm, bM)
1297- let cg = if ((gf == 0))
1295+ let gi = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1296+ let go = bw(cx)
1297+ let gp = bw(cy)
1298+ let gq = D(go, bL)
1299+ let gr = D(gp, bM)
1300+ let cg = if ((gi == 0))
12981301 then e
1299- else by(go, gn)
1302+ else by(gr, gq)
13001303 let cE = D(ct, bM)
13011304 let cD = fraction(cE, d, cg)
13021305 let cr = G(cD, bL)
1303- let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1304- let cO = dr._1
1305- let gk = dr._3
1306- let cc = dr._4
1307- let ce = dr._5
1308- let cb = dr._6
1306+ let du = cp("", 500000, cr, bY, ct, bZ, "", true, false)
1307+ let cO = du._1
1308+ let gn = du._3
1309+ let cc = du._4
1310+ let ce = du._5
1311+ let cb = du._6
13091312 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cO), toString(G(cg, b)), toString(cc), toString(ce), toString(cb), ca, toString(cr), toString(ct)], j))
13101313 }
13111314
13121315
13131316
1314-@Callable(dl)
1315-func evaluateGetREADONLY (gp,gq) = {
1316- let cG = bT("", gp, gq, this)
1317+@Callable(do)
1318+func evaluateGetREADONLY (gs,gt) = {
1319+ let cG = bT("", gs, gt, this)
13171320 let cm = cG._1
13181321 let cn = cG._2
13191322 let cc = cG._5
13201323 let ce = cG._6
13211324 let cb = cG._7
13221325 let ch = cG._8
13231326 let ca = parseIntValue(cG._9)
13241327 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cm), toString(cn), toString(cc), toString(ce), toString(cb), toString(ch), toString(ca)], j))
13251328 }
13261329
13271330
1328-@Verifier(gr)
1329-func gs () = {
1330- let gt = {
1331- let dw = eM()
1332- if ($isInstanceOf(dw, "ByteVector"))
1331+@Verifier(gu)
1332+func gv () = {
1333+ let gw = {
1334+ let dz = eP()
1335+ if ($isInstanceOf(dz, "ByteVector"))
13331336 then {
1334- let eQ = dw
1335- eQ
1337+ let eT = dz
1338+ eT
13361339 }
1337- else if ($isInstanceOf(dw, "Unit"))
1338- then gr.senderPublicKey
1340+ else if ($isInstanceOf(dz, "Unit"))
1341+ then gu.senderPublicKey
13391342 else throw("Match error")
13401343 }
1341- let dw = gr
1342- if ($isInstanceOf(dw, "Order"))
1344+ let dz = gu
1345+ if ($isInstanceOf(dz, "Order"))
13431346 then {
1344- let cX = dw
1345- let gu = aM()
1347+ let cX = dz
1348+ let gx = aM()
13461349 let az = cW(cX)
13471350 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1348- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gu)
1351+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gx)
13491352 if (if (if (az)
13501353 then aA
13511354 else false)
13521355 then aB
13531356 else false)
13541357 then true
13551358 else ay(az, aA, aB)
13561359 }
1357- else if ($isInstanceOf(dw, "SetScriptTransaction"))
1360+ else if ($isInstanceOf(dz, "SetScriptTransaction"))
13581361 then {
1359- let eN = dw
1360- let gv = blake2b256(value(eN.script))
1361- let gw = fromBase64String(value(getString(aJ, aw())))
1362- let gx = scriptHash(this)
1363- if (if ((gw == gv))
1364- then (gx != gv)
1362+ let eQ = dz
1363+ let gy = blake2b256(value(eQ.script))
1364+ let gz = fromBase64String(value(getString(aJ, aw())))
1365+ let gA = scriptHash(this)
1366+ if (if ((gz == gy))
1367+ then (gA != gy)
13651368 else false)
13661369 then true
1367- else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
1370+ else sigVerify(gu.bodyBytes, gu.proofs[0], gw)
13681371 }
1369- else sigVerify(gr.bodyBytes, gr.proofs[0], gt)
1372+ else sigVerify(gu.bodyBytes, gu.proofs[0], gw)
13701373 }
13711374

github/deemru/w8io/026f985 
311.90 ms