tx · Adh7LzaatuXpfhaJDAMTUd5KWYanbSX1BHLMY1xuSiKj

3N3oJ29jrZz2cSdsiH3oJSrDm1QnAeKJPZe:  -0.03100000 Waves

2022.11.28 12:38 [2336783] smart account 3N3oJ29jrZz2cSdsiH3oJSrDm1QnAeKJPZe > SELF 0.00000000 Waves

{ "type": 13, "id": "Adh7LzaatuXpfhaJDAMTUd5KWYanbSX1BHLMY1xuSiKj", "fee": 3100000, "feeAssetId": null, "timestamp": 1669628309736, "version": 1, "sender": "3N3oJ29jrZz2cSdsiH3oJSrDm1QnAeKJPZe", "senderPublicKey": "49f2aBjLx6yH8T5J4Ejuk3yo7gz8E7A8zYqssmv8MbSN", "proofs": [ "JqjRgkrD7LhfJQ7W19Sk6srYFUyqq4zXZn6AmeEo8QqWNDvThZnj1HrTLLC5EM5VXwxQgWeeJeFroXhJDqmFksr" ], "script": "base64:BgLgKQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc5MTU4MDgxIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI5NDIyMzIzNSIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMzIzOTIzMzg4IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzNTEwMjM1NjkiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI1MDQ2MjUyMTMiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjc5MzI2ODQzIgt0b3RhbEFtb3VudCINJHQwMjY4NDcyNzA3MyILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIHYWN0aW9ucyIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiC21heFNsaXBwYWdlIgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiAUAiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDMyNzU0MzI4ODEiE2VtaXRBbW91bnRFc3RpbWF0ZWQiBWJvbnVzIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzM2MTAzMzc0NSINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzQ1NTAzNDY4MiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzNTMxNzM1NDU1Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzNjI4MDM2NDEwIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDEzOTM0MTQ0MSINcG9vbExQQmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2hrAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYC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bHNlAgkAmwgCBQJhSgkBAmF0AAcBAmFNAAkA2QQBCQECYUMCBQJhSgkBAmFsAAECYU4ABAJhTwkBAmFDAgUEdGhpcwkBAmFhAAQCYVAJAQJhQwIFBHRoaXMJAQJhYgAEAmFxCQECYUYCBQJhSgkBAmFyAQUCYVAEAmFwCQECYUYCBQJhSgkBAmFyAQUCYU8JALUJAgkBAmFDAgUCYUoJAQJhbwIJAKQDAQUCYXAJAKQDAQUCYXEFAWoBAmFRAQJhUgMJAAACBQJhUgUBaQUEdW5pdAkA2QQBBQJhUgECYVMBAmFSAwkAAAIFAmFSBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFSAQJhVAECYVUJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhVQUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQFwCQDZBAEJAJEDAgUCYVUFAXEJAQJhUQEJAJEDAgUCYVUFAXIJAQJhUQEJAJEDAgUCYVUFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVQUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFVBQF1AAJhVgkBAmFUAQkBAmFOAAACYVcFAmFWAAJhWAgFAmFXAl8xAAJhWQgFAmFXAl8yAAJhWggFAmFXAl8zAAJiYQgFAmFXAl80AAJiYggFAmFXAl81AAJiYwgFAmFXAl82AAJiZAgFAmFXAl83AQJiZQAJALUJAgkBAmFDAgUCYUoJAQJhawAFAWoAAmJmCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYmUABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJlAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYmgKAmJpAmJqAmJrAmJsAmJtAmJuAmJvAmJwAmJxAmJyCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJtCQDMCAIJAKQDAQUCYm4JAMwIAgkApAMBBQJibwkAzAgCCQCkAwEFAmJwCQDMCAIJAKQDAQUCYnEJAMwIAgkApAMBBQJicgUDbmlsBQFqAQJicwYCYnQCYnUCYnYCYmwCYm8CYnAJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJibAkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAFA25pbAUBagECYncBAmJ4AwkAAAIFAmJ4AgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJieAECYnkCAmJ6AmJBCQC8AgMFAmJ6BQFkBQJiQQECYkIEAmJDAmJEAmJFAmJGBAJiRwkBAUQCBQJiRQUCYkMEAmJICQEBRAIFAmJGBQJiRAkBAmJ5AgUCYkgFAmJHAQJiSQMCYkUCYkYCYkoEAmJLCQECYU4ABAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJiTgkBAmJCBAUCYkwFAmJNBQJiRQUCYkYEAmJBCQEBRAIFAmJFBQJiTAQCYnoJAQFEAgUCYkYFAmJNBAJiTwkBAUQCBQJiSgUBYgQCYlAJAQJieQIFAmJBBQJiTwQCYlEJAQJieQIFAmJ6BQJiTwkAzAgCBQJiTgkAzAgCBQJiUAkAzAgCBQJiUQUDbmlsAQJiUgMCYkUCYkYCYkoEAmJTCQECYkkDBQJiRQUCYkYFAmJKCQDMCAIJAQFHAgkAkQMCBQJiUwAABQFiCQDMCAIJAQFHAgkAkQMCBQJiUwABBQFiCQDMCAIJAQFHAgkAkQMCBQJiUwACBQFiBQNuaWwBAmJUBAJiVQJiVgJiVwFYBAJiSwkBAmFOAAQCYlgJAJEDAgUCYksFAXEEAmJZCQCRAwIFAmJLBQFyBAJiWgkAkQMCBQJiSwUBcwQCYkMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYkQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmNiCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlgJAKwCAgkArAICAgZBc3NldCAFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmJYBQJiVgkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2MJAQJidwEFAmJZBAJjZAkBAUQCBQJjYwUCYkMEAmNlCQECYncBBQJiWgQCY2YJAQFEAgUCY2UFAmJEBAJjZwkBAmJ5AgUCY2YFAmNkBAJjaAkBAUcCBQJjZwUBYgQCY2kJAQFEAgUCYlcFAWIEAmNqCQEBRAIFAmNiBQFiBAJjawkAvAIDBQJjZAUCY2kFAmNqBAJjbAkAvAIDBQJjZgUCY2kFAmNqBAJjbQkBAUcCBQJjawUCYkMEAmNuCQEBRwIFAmNsBQJiRAQCY28DCQAAAgUCYlUCAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNtAwkAAAIFAmJZAgVXQVZFUwUEdW5pdAkA2QQBBQJiWQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjbgMJAAACBQJiWgIFV0FWRVMFBHVuaXQJANkEAQUCYloJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAVgFAmJVCQECYnMGBQJjbQUCY24FAmJXBQJjaAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjaAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjaAUDbmlsCQCcCgoFAmNtBQJjbgUCYlkFAmJaBQJjYwUCY2UFAmNiBQJjZwUCY2EFAmNvAQJjcAkCYlUCY3ECY3ICY3MCY3QCY3UBWAJjdgJjdwQCYksJAQJhTgAEAmJYCQDZBAEJAJEDAgUCYksFAXEEAmN4CQCRAwIFAmJLBQFyBAJjeQkAkQMCBQJiSwUBcwQCY3oJAJEDAgUCYksFAXYEAmNBCQCRAwIFAmJLBQF3BAJiTAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF0BAJiTQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJLBQF1BAJjYQkAkQMCBQJiSwUBcAQCY2IICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlgJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlgCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjQgkA2AQBCQELdmFsdWVPckVsc2UCBQJjcwkA2QQBAgVXQVZFUwQCY0MJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3UJANkEAQIFV0FWRVMDAwkBAiE9AgUCY3gFAmNCBgkBAiE9AgUCY3kFAmNDCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCY2MDBQJjdgkBAmJ3AQUCY3gJAGUCCQECYncBBQJjeAUCY3IEAmNlAwUCY3YJAQJidwEFAmN5CQBlAgkBAmJ3AQUCY3kFAmN0BAJjRAkBAUQCBQJjcgUCYkwEAmNFCQEBRAIFAmN0BQJiTQQCY0YJAQJieQIFAmNFBQJjRAQCY2QJAQFEAgUCY2MFAmJMBAJjZgkBAUQCBQJjZQUCYk0EAmNHAwkAAAIFAmNiAAAEAmNnBQFlBAJjSAUBZQQCYk8JAHYGCQC5AgIFAmNEBQJjRQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiTwUBYgkBAUcCBQJjRAUCYkwJAQFHAgUCY0UFAmJNCQECYnkCCQC3AgIFAmNmBQJjRQkAtwICBQJjZAUCY0QFAmNIBAJjZwkBAmJ5AgUCY2YFAmNkBAJjSAkAvAIDCQEBTwEJALgCAgUCY2cFAmNGBQFkBQJjZwQCY0kJAQFEAgUCY3EFAWIDAwkBAiE9AgUCY2cFAWUJAL8CAgUCY0gFAmNJBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSAIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNJBAJjagkBAUQCBQJjYgUBYgQCY0oJALwCAwUCY0QFAmNnBQFkBAJjSwkAvAIDBQJjRQUBZAUCY2cEAmNMAwkAvwICBQJjSgUCY0UJAJQKAgUCY0sFAmNFCQCUCgIFAmNEBQJjSgQCY00IBQJjTAJfMQQCY04IBQJjTAJfMgQCYk8JALwCAwUCY2oFAmNOBQJjZgkAlwoFCQEBRwIFAmJPBQFiCQEBRwIFAmNNBQJiTAkBAUcCBQJjTgUCYk0FAmNnBQJjSAQCY08IBQJjRwJfMQQCY1AIBQJjRwJfMgQCY1EIBQJjRwJfMwQCY2gJAQFHAggFAmNHAl80BQFiBAJjUgkBAUcCCAUCY0cCXzUFAWIDCQBnAgAABQJjTwkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY1MDCQEBIQEFAmN3AAAFAmNPBAJjVAkAZQIFAmNyBQJjUAQCY1UJAGUCBQJjdAUCY1EEAmNWCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNoCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBWAUCYlUJAQJiaAoFAmNQBQJjUQUCY1MFAmNoBQJjcQUCY1IFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNUBQJjVQUDbmlsCQCfCg0FAmNPBQJjUwUCY2gFAmNjBQJjZQUCY2IFAmJYBQJjYQUCY1YFAmNUBQJjVQUCY3MFAmN1AQJjVwECY1gEAmJLCQECYU4ABAJjWQkAkQMCBQJiSwUBcgQCY1oJAJEDAgUCYksFAXMEAmNhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXAEAmJMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXQEAmJNCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYksFAXUEAmRhCQECYncBBQJjWQQCZGIJAQJidwEFAmNaBAJjZwMJAAACCAUCY1gJb3JkZXJUeXBlBQNCdXkJAQJiQgQFAmJMBQJiTQkAZAIFAmRhCAUCY1gGYW1vdW50BQJkYgkBAmJCBAUCYkwFAmJNCQBlAgUCZGEIBQJjWAZhbW91bnQFAmRiBAJjaAkBAUcCBQJjZwUBYgMDAwkBAmFMAAYJAAACBQJjYQUBbQYJAAACBQJjYQUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAmRjCAgFAmNYCWFzc2V0UGFpcgthbW91bnRBc3NldAQCZGQDCQAAAgUCZGMFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRjBAJkZQgIBQJjWAlhc3NldFBhaXIKcHJpY2VBc3NldAQCZGYDCQAAAgUCZGUFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRlAwMJAQIhPQIFAmRkBQJjWQYJAQIhPQIFAmRmBQJjWgkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRnCAUCY1gFcHJpY2UEAmRoCQBrAwUBYgUCYk0FAmJMBAJkaQkBAUoDBQJkZwUBYgUCZGgEAmRqAwkAAAIIBQJjWAlvcmRlclR5cGUFA0J1eQkAZwIFAmNoBQJkaQkAZwIFAmRpBQJjaAYBAmRrAQJkbAMJAQIhPQIJAJADAQgFAmRsCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZG0JAQV2YWx1ZQEJAJEDAggFAmRsCHBheW1lbnRzAAAEAmJWCQEFdmFsdWUBCAUCZG0HYXNzZXRJZAQCZG4IBQJkbQZhbW91bnQEAmNHCQECYlQECQDYBAEIBQJkbA10cmFuc2FjdGlvbklkCQDYBAEFAmJWBQJkbggFAmRsBmNhbGxlcgQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85BAJjbwgFAmNHA18xMAMDCQECYUwABgkAAAIFAmNhBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjYQkAlwoFBQJjbQUCY24FAmRuBQJiVgUCY28BAmRvAwJkbAJjcQJjdwMJAQIhPQIJAJADAQgFAmRsCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkcAkBBXZhbHVlAQkAkQMCCAUCZGwIcGF5bWVudHMAAAQCZHEJAQV2YWx1ZQEJAJEDAggFAmRsCHBheW1lbnRzAAEEAmRyCQECY3AJCQDYBAEIBQJkbA10cmFuc2FjdGlvbklkBQJjcQgFAmRwBmFtb3VudAgFAmRwB2Fzc2V0SWQIBQJkcQZhbW91bnQIBQJkcQdhc3NldElkCQClCAEIBQJkbAZjYWxsZXIHBQJjdwQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmRyAl84AwMDCQECYUwABgkAAAIFAmNhBQFsBgkAAAIFAmNhBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjYQUCZHIBAmRzAQJkdAQCZHUJAPwHBAUCYUoCBGVtaXQJAMwIAgUCZHQFA25pbAUDbmlsAwkAAAIFAmR1BQJkdQQCZHYEAmR3BQJkdQMJAAECBQJkdwIHQWRkcmVzcwQCZHgFAmR3CQD8BwQFAmR4AgRlbWl0CQDMCAIFAmR0BQNuaWwFA25pbAUEdW5pdAMJAAACBQJkdgUCZHYFAmR0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkeQECZHQEAmR6CQBrAwUCZHQFAmFlBQFiCQCUCgIJAGUCBQJkdAUCZHoFAmR6AQJkQQQCZEICZEMBWAFZBAJkRAkAAAIFAVkFBHVuaXQEAmRFCQECYncBCQECYVMBBQJiYQQCZEYJAQJidwEJAQJhUwEFAmJiBAJkRwMJAAACBQJkQwUCYmEGAwkAAAIFAmRDBQJiYgcJAQJhRwECDWludmFsaWQgYXNzZXQEAmRIAwUCZEQJAJQKAgUCZEUFAmRGAwUCZEcJAJQKAgkAZQIFAmRFBQJkQgUCZEYJAJQKAgUCZEUJAGUCBQJkRgUCZEIEAmRJCAUCZEgCXzEEAmRKCAUCZEgCXzIEAmRLAwUCZEcJAJQKAgUCZEIAAAkAlAoCAAAFAmRCBAJkTAgFAmRLAl8xBAJkTQgFAmRLAl8yBAJkTggJAQJkeQEFAmRMAl8xBAJkTwgJAQJkeQEFAmRNAl8xBAJkUAkBAmR5AQUCZEIEAmRRCAUCZFACXzEEAmR6CAUCZFACXzIEAmRSCQBkAgUCZEkFAmROBAJkUwkAZAIFAmRKBQJkTwQCZFQJAQJieQIJAQFEAgUCZFMFAmJkCQEBRAIFAmRSBQJiYwQCZFUJAQFHAgUCZFQFAWIEAmRWAwUCZEcFAmRJBQJkSgQCZFcJALYCAQUCZFYEAmRYCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYVoJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYVoCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkWQMJAL8CAgUCZFgFAWYGCQECYUcBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmRZBQJkWQQCZFoJALYCAQUCZFEEAmVhCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmRYCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZFoFAWQFAmRXABIAEgUERE9XTgUBZAUBZAUDbmlsBAJjVgMFAmREBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZFUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZFUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEJAQV2YWx1ZQEFAVgJANgEAQkBBXZhbHVlAQUBWQkBAmJoCgUCZEwFAmRNBQJlYQUCZFUAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlYgkBAmJ5AgkBAUQCBQJkSgUCYmQJAQFEAgUCZEkFAmJjBAJlYwkBAUcCBQJlYgUBYgQCZWQEAmVlAwUCZEcJAJQKAgUCZEwFAmRJCQCUCgIFAmRNBQJkSgQCZHQIBQJlZQJfMQQCZWYIBQJlZQJfMgQCZWcJAKADAQkAvAIDBQJkWAkAtgIBCQBpAgUCZHQAAgkAtgIBBQJlZgkAawMJAGUCBQJlYQUCZWcFAWIFAmVnCQCWCgQFAmVhBQJjVgUCZHoFAmVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlaAUCZWkCZFECZEMBWAFZBAJkRAkAAAIFAVkFBHVuaXQEAmVqCQDMCAIDCQAAAgUCZEMFAmFaBgkBAmFHAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVqBQJlagQCZWsDCQAAAgUCZWkFAmJhBgMJAAACBQJlaQUCYmIHCQECYUcBAg1pbnZhbGlkIGFzc2V0BAJlbAMFAmVrCQC2AgEJAQJidwEJAQJhUwEFAmJhCQC2AgEJAQJidwEJAQJhUwEFAmJiBAJlbQkBAmJ3AQkBAmFTAQUCYmEEAmVuCQECYncBCQECYVMBBQJiYgQCZW8DBQJlawUCZW0FAmVuBAJlcAkAtgIBBQJlbwQCZFgJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhWgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhWgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVxCQC2AgEFAmRRBAJlcgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlbAkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZXEFAWQFAmRYABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVzCQECZHkBBQJlcgQCZXQIBQJlcwJfMQQCZHoIBQJlcwJfMgQCZXUDBQJlawkAlgoEBQJldAAACQBlAgUCZW0FAmVyBQJlbgkAlgoEAAAFAmV0BQJlbQkAZQIFAmVuBQJlcgQCZXYIBQJldQJfMQQCZXcIBQJldQJfMgQCZXgIBQJldQJfMwQCZXkIBQJldQJfNAQCZFQJAQJieQIJAQFEAgUCZXkFAmJkCQEBRAIFAmV4BQJiYwQCZFUJAQFHAgUCZFQFAWIEAmNWAwUCZEQFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYnMGBQJldgUCZXcFAmRRBQJkVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkVQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkVQUDbmlsBAJlYgkBAmJ5AgkBAUQCBQJlbgUCYmQJAQFEAgUCZW0FAmJjBAJlYwkBAUcCBQJlYgUBYgQCZWQEAmV6CQBoAgkAoAMBCQC8AgMFAmVsBQJlcQUCZFgAAgkAawMJAGUCBQJldAUCZXoFAWIFAmV6CQCWCgQFAmV0BQJjVgUCZHoFAmVkCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlQQMCZUICZUMCY2IEAmVECQC8AgMJAHYGCQC5AgIFAmVCBQJlQwAACQC2AgEABQABAAAFBERPV04FAWQFAmNiBQJlRAECZUUABAJlRgkBAmJ3AQkBAmFTAQUCYmEEAmVHCQECYncBCQECYVMBBQJiYgQCY2IICQEFdmFsdWUBCQDsBwEFAmFaCHF1YW50aXR5BAJlRAkBAmVBAwkAtgIBBQJlRgkAtgIBBQJlRwkAtgIBBQJjYgQCZUgJAMwIAgkBDEludGVnZXJFbnRyeQIFAmFnBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWYJAKYDAQUCZUQFA25pbAkAlAoCBQJlSAUCZUQBAmVJAAQCZHcJAKIIAQkBAVEAAwkAAQIFAmR3AgZTdHJpbmcEAmVKBQJkdwkA2QQBBQJlSgMJAAECBQJkdwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlSwAEAmR3CQCiCAEJAQFSAAMJAAECBQJkdwIGU3RyaW5nBAJlSgUCZHcJANkEAQUCZUoDCQABAgUCZHcCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZUwBAmRsBAJkdwkBAmVJAAMJAAECBQJkdwIKQnl0ZVZlY3RvcgQCZU0FAmR3CQAAAggFAmRsD2NhbGxlclB1YmxpY0tleQUCZU0DCQABAgUCZHcCBFVuaXQJAAACCAUCZGwGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmVOAQJkbAQCZU8JAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZHcJAQJlSQADCQABAgUCZHcCCkJ5dGVWZWN0b3IEAmVNBQJkdwMJAAACCAUCZGwPY2FsbGVyUHVibGljS2V5BQJlTQYFAmVPAwkAAQIFAmR3AgRVbml0AwkAAAIIBQJkbAZjYWxsZXIFBHRoaXMGBQJlTwkAAgECC01hdGNoIGVycm9yGwJkbAEKc2V0TWFuYWdlcgECZVAEAmVRCQECZU4BBQJkbAMJAAACBQJlUQUCZVEEAmVSCQDZBAEFAmVQAwkAAAIFAmVSBQJlUgkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAmVQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBDmNvbmZpcm1NYW5hZ2VyAAQCZVMJAQJlSwAEAmVUAwkBCWlzRGVmaW5lZAEFAmVTBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJlVAUCZVQEAmVVAwkAAAIIBQJkbA9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmVTBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJlVQUCZVUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVEACQDYBAEJAQV2YWx1ZQEFAmVTCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFSAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRsAQNwdXQCAmNxAmVWAwkAZgIAAAUCY3EJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZHIJAQJkbwMFAmRsBQJjcQYEAmNTCAUCZHICXzIEAmJYCAUCZHICXzcEAmNvCAUCZHICXzkEAmNUCAUCZHIDXzEwBAJjVQgFAmRyA18xMQQCZVcIBQJkcgNfMTIEAmVYCAUCZHIDXzEzBAJkdQkA/AcEBQJhSgIEZW1pdAkAzAgCBQJjUwUDbmlsBQNuaWwDCQAAAgUCZHUFAmR1BAJkdgQCZHcFAmR1AwkAAQIFAmR3AgdBZGRyZXNzBAJkeAUCZHcJAPwHBAUCZHgCBGVtaXQJAMwIAgUCY1MFA25pbAUDbmlsBQR1bml0AwkAAAIFAmR2BQJkdgQCZVkDCQBmAgUCY1QAAAkA/AcEBQJiZwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVXBQJjVAUDbmlsBQNuaWwDCQAAAgUCZVkFAmVZBAJlWgMJAGYCBQJjVQAACQD8BwQFAmJnAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZVgFAmNVBQNuaWwFA25pbAMJAAACBQJlWgUCZVoEAmZhAwUCZVYEAmZiCQD8BwQFAmJmAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiWAUCY1MFA25pbAMJAAACBQJmYgUCZmIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGwGY2FsbGVyBQJjUwUCYlgFA25pbAkAzggCBQJjbwUCZmEJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBCnB1dEZvckZyZWUBAmZjAwkAZgIAAAUCZmMJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZHIJAQJkbwMFAmRsBQJmYwcIBQJkcgJfOQJkbAEJcHV0T25lVGtuAgJmZAJmZQQCZmYKAAJmZwkA/AcEBQJhSgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZnAgdCb29sZWFuBQJmZwkAAgEJAKwCAgkAAwEFAmZnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmaAMDAwkBAmFMAAYJAAACBQJhWQUBbAYJAAACBQJhWQUBbgYFAmZmBAJlagkAzAgCAwMJAQEhAQUCZmgGCQECZUwBBQJkbAYJAQJhRwECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRsCHBheW1lbnRzAAEGCQECYUcBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlagUCZWoEAmZpCQCRAwIIBQJkbAhwYXltZW50cwAABAJkQwgFAmZpB2Fzc2V0SWQEAmRCCAUCZmkGYW1vdW50BAFYCAUCZGwGY2FsbGVyBAFZCAUCZGwNdHJhbnNhY3Rpb25JZAQCZmoJAQJkQQQFAmRCBQJkQwUBWAUBWQQCZmsIBQJmagJfMQQCY1YIBQJmagJfMgQCZHoIBQJmagJfMwQCZmwIBQJmagJfNAQCZm0DAwkAZgIFAmZkAAAJAGYCBQJmZAUCZmsHCQECYUcBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZkBQNuaWwCAAUCZmsEAmR1CQECZHMBBQJmbQMJAAACBQJkdQUCZHUEAmZhAwUCZmUEAmZuCQD8BwQFAmJmAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJhWgUCZm0FA25pbAMJAAACBQJmbgUCZm4FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGwGY2FsbGVyBQJmbQUCYVoFA25pbAQCZm8DCQBmAgUCZHoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZHoFAmRDBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1YFAmZhBQJmbwUCZm0JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBEXB1dE9uZVRrblJFQURPTkxZAgJkQwJkQgQCZnAJAQJkQQQFAmRCCQECYVEBBQJkQwUEdW5pdAUEdW5pdAQCZmsIBQJmcAJfMQQCY1YIBQJmcAJfMgQCZHoIBQJmcAJfMwQCZmwIBQJmcAJfNAkAlAoCBQNuaWwJAJUKAwUCZmsFAmR6BQJmbAJkbAEJZ2V0T25lVGtuAgJmcQJmZAQCZmYKAAJmZwkA/AcEBQJhSgIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZnAgdCb29sZWFuBQJmZwkAAgEJAKwCAgkAAwEFAmZnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmcgMDCQECYUwABgkAAAIFAmFZBQFuBgUCZmYEAmVqCQDMCAIDAwkBASEBBQJmcgYJAQJlTAEFAmRsBgkBAmFHAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGwIcGF5bWVudHMAAQYJAQJhRwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVqBQJlagQCZWkJAQJhUQEFAmZxBAJmaQkAkQMCCAUCZGwIcGF5bWVudHMAAAQCZEMIBQJmaQdhc3NldElkBAJkUQgFAmZpBmFtb3VudAQBWAgFAmRsBmNhbGxlcgQBWQgFAmRsDXRyYW5zYWN0aW9uSWQEAmZzCQECZWgFBQJlaQUCZFEFAmRDBQFYBQFZBAJmdAgFAmZzAl8xBAJjVggFAmZzAl8yBAJkeggFAmZzAl8zBAJmbAgFAmZzAl80BAJkdAMDCQBmAgUCZmQAAAkAZgIFAmZkBQJmdAcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmQFA25pbAIABQJmdAQCZnUJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZFEFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZEMFAmRRBQNuaWwDCQAAAgUCZnUFAmZ1BAJmdgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJkdAUCZWkFA25pbAQCZm8DCQBmAgUCZHoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZHoFAmVpBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1YFAmZ2BQJmbwUCZHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGwBEWdldE9uZVRrblJFQURPTkxZAgJlaQJkUQQCZncJAQJlaAUJAQJhUQEFAmVpBQJkUQUCYVoFBHVuaXQFBHVuaXQEAmZ0CAUCZncCXzEEAmNWCAUCZncCXzIEAmR6CAUCZncCXzMEAmZsCAUCZncCXzQJAJQKAgUDbmlsCQCVCgMFAmZ0BQJkegUCZmwCZGwBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZ4AmZxAmZkBAJmZgoAAmZnCQD8BwQFAmFKAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZmcCB0Jvb2xlYW4FAmZnCQACAQkArAICCQADAQUCZmcCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZyAwMJAQJhTAAGCQAAAgUCYVkFAW4GBQJmZgQCZWoJAMwIAgMDCQEBIQEFAmZyBgkBAmVMAQUCZGwGCQECYUcBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkbAhwYXltZW50cwAABgkBAmFHAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWoFAmVqBAJlaQkBAmFRAQUCZnEEAVgIBQJkbAZjYWxsZXIEAVkIBQJkbA10cmFuc2FjdGlvbklkBAJmeQkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFaCQDMCAIFAmZ4BQNuaWwFA25pbAMJAAACBQJmeQUCZnkEAmZ6CQECZWgFBQJlaQUCZngFAmFaBQFYBQFZBAJmdAgFAmZ6Al8xBAJjVggFAmZ6Al8yBAJkeggFAmZ6Al8zBAJmbAgFAmZ6Al80BAJkdAMDCQBmAgUCZmQAAAkAZgIFAmZkBQJmdAcJAQJhRwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZmQFA25pbAIABQJmdAQCZnUJAPwHBAUCYUoCBGJ1cm4JAMwIAgUCZngFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVoFAmZ4BQNuaWwDCQAAAgUCZnUFAmZ1BAJmdgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZGwGY2FsbGVyBQJkdAUCZWkFA25pbAQCZm8DCQBmAgUCZHoAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhSwUCZHoFAmVpBQNuaWwFA25pbAkAlAoCCQDOCAIJAM4IAgUCY1YFAmZ2BQJmbwUCZHQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2Vs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ZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZGEJAQJidwEFAmNZBAJkYgkBAmJ3AQUCY1oEAmZPAwkAAAIFAmZOAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmJJAwUCZGEFAmRiBQJmTgQCY2gAAAQCZlAJAQFHAgkAkQMCBQJmTwABBQFiBAJmUQkBAUcCCQCRAwIFAmZPAAIFAWIEAmZSCQEFdmFsdWUBCQCaCAIFAmFKCQECYXUBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkYQkAzAgCCQCkAwEFAmRiCQDMCAIJAKQDAQUCZk4JAMwIAgkApAMBBQJjaAkAzAgCCQCkAwEFAmZQCQDMCAIJAKQDAQUCZlEJAMwIAgkApAMBBQJmUgUDbmlsBQFqAmRsASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECY3IEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjeAkAkQMCBQJiSwUBcgQCYlkJANkEAQUCY3gEAmN5CQCRAwIFAmJLBQFzBAJiWgkA2QQBBQJjeQQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmZOCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZGEJAQJidwEFAmN4BAJkYgkBAmJ3AQUCY3kEAmJHCQEBRAIFAmRhBQJiTAQCYkgJAQFEAgUCZGIFAmJNBAJjZwMJAAACBQJmTgAABQFlCQECYnkCBQJiSAUCYkcEAmNECQEBRAIFAmNyBQJiTAQCY0UJALwCAwUCY0QFAmNnBQFkBAJjdAkBAUcCBQJjRQUCYk0EAmRyCQECY3AJAgAAoMIeBQJjcgUCYlkFAmN0BQJiWgIABgcEAmNPCAUCZHICXzEEAmZTCAUCZHICXzMEAmNjCAUCZHICXzQEAmNlCAUCZHICXzUEAmNiCAUCZHICXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQkBAUcCBQJjZwUBYgkAzAgCCQCkAwEFAmNjCQDMCAIJAKQDAQUCY2UJAMwIAgkApAMBBQJjYgkAzAgCBQJjYQkAzAgCCQCkAwEFAmNyCQDMCAIJAKQDAQUCY3QFA25pbAUBagJkbAEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECY3QEAmJLCQECYU4ABAJiWAkA2QQBCQCRAwIFAmJLBQFxBAJjeAkAkQMCBQJiSwUBcgQCYlkJANkEAQUCY3gEAmN5CQCRAwIFAmJLBQFzBAJiWgkA2QQBBQJjeQQCYkwJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdAQCYk0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiSwUBdQQCY2EJAJEDAgUCYksFAXAEAmZOCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJYCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmJYAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZlQJAQJidwEFAmN4BAJmVQkBAmJ3AQUCY3kEAmZWCQEBRAIFAmZUBQJiTAQCZlcJAQFEAgUCZlUFAmJNBAJjZwMJAAACBQJmTgAABQFlCQECYnkCBQJmVwUCZlYEAmNFCQEBRAIFAmN0BQJiTQQCY0QJALwCAwUCY0UFAWQFAmNnBAJjcgkBAUcCBQJjRAUCYkwEAmRyCQECY3AJAgAAoMIeBQJjcgUCYlkFAmN0BQJiWgIABgcEAmNPCAUCZHICXzEEAmZTCAUCZHICXzMEAmNjCAUCZHICXzQEAmNlCAUCZHICXzUEAmNiCAUCZHICXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQkBAUcCBQJjZwUBYgkAzAgCCQCkAwEFAmNjCQDMCAIJAKQDAQUCY2UJAMwIAgkApAMBBQJjYgkAzAgCBQJjYQkAzAgCCQCkAwEFAmNyCQDMCAIJAKQDAQUCY3QFA25pbAUBagJkbAETZXZhbHVhdGVHZXRSRUFET05MWQICZlgCZlkEAmNHCQECYlQEAgAFAmZYBQJmWQUEdGhpcwQCY20IBQJjRwJfMQQCY24IBQJjRwJfMgQCY2MIBQJjRwJfNQQCY2UIBQJjRwJfNgQCY2IIBQJjRwJfNwQCY2gIBQJjRwJfOAQCY2EJAQ1wYXJzZUludFZhbHVlAQgFAmNHAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY20JAMwIAgkApAMBBQJjbgkAzAgCCQCkAwEFAmNjCQDMCAIJAKQDAQUCY2UJAMwIAgkApAMBBQJjYgkAzAgCCQCmAwEFAmNoCQDMCAIJAKQDAQUCY2EFA25pbAUBagECZloBAmdhAAQCZ2IEAmR3CQECZUkAAwkAAQIFAmR3AgpCeXRlVmVjdG9yBAJlTQUCZHcFAmVNAwkAAQIFAmR3AgRVbml0CAUCZloPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmR3BQJmWgMJAAECBQJkdwIFT3JkZXIEAmNYBQJkdwQCZ2MJAQJhTQAEAmF6CQECY1cBBQJjWAQCYUEJAPQDAwgFAmNYCWJvZHlCeXRlcwkAkQMCCAUCY1gGcHJvb2ZzAAAIBQJjWA9zZW5kZXJQdWJsaWNLZXkEAmFCCQD0AwMIBQJjWAlib2R5Qnl0ZXMJAJEDAggFAmNYBnByb29mcwABBQJnYwMDAwUCYXoFAmFBBwUCYUIHBgkBAmF5AwUCYXoFAmFBBQJhQgMJAAECBQJkdwIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmVKBQJkdwQCZ2QJAPYDAQkBBXZhbHVlAQgFAmVKBnNjcmlwdAQCZ2UJANsEAQkBBXZhbHVlAQkAnQgCBQJhSgkBAmF3AAQCZ2YJAPEHAQUEdGhpcwMDCQAAAgUCZ2UFAmdkCQECIT0CBQJnZgUCZ2QHBgkA9AMDCAUCZloJYm9keUJ5dGVzCQCRAwIIBQJmWgZwcm9vZnMAAAUCZ2IJAPQDAwgFAmZaCWJvZHlCeXRlcwkAkQMCCAUCZloGcHJvb2ZzAAAFAmdiEgvigg==", "chainId": 84, "height": 2336783, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 274jPhDCW3PFNrJ2XQTbwZFfsYgBWa1PYpT43e5HEQDP Next: 13wzJt4G76XXbYc57Z3qnMXtHp8epN84neD6rkzd5WEg Diff:
OldNewDifferences
594594 }
595595
596596
597-func eA (eB,eC,cb) = fraction(eB, eC, cb)
598-
599-
600-func eD () = {
601- let eE = bw(aS(ba))
602- let eF = bw(aS(bb))
603- let cb = value(assetInfo(aZ)).quantity
604- let eG = eA(eE, eF, cb)
605- eG
597+func eA (eB,eC,cb) = {
598+ let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599+ eD
606600 }
607601
608602
609-func eH () = {
603+func eE () = {
604+ let eF = bw(aS(ba))
605+ let eG = bw(aS(bb))
606+ let cb = value(assetInfo(aZ)).quantity
607+ let eD = eA(toBigInt(eF), toBigInt(eG), toBigInt(cb))
608+ let eH = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609+ $Tuple2(eH, eD)
610+ }
611+
612+
613+func eI () = {
610614 let dw = getString(Q())
611615 if ($isInstanceOf(dw, "String"))
612616 then {
613- let eI = dw
614- fromBase58String(eI)
617+ let eJ = dw
618+ fromBase58String(eJ)
615619 }
616620 else if ($isInstanceOf(dw, "Unit"))
617621 then unit
619623 }
620624
621625
622-func eJ () = {
626+func eK () = {
623627 let dw = getString(R())
624628 if ($isInstanceOf(dw, "String"))
625629 then {
626- let eI = dw
627- fromBase58String(eI)
630+ let eJ = dw
631+ fromBase58String(eJ)
628632 }
629633 else if ($isInstanceOf(dw, "Unit"))
630634 then unit
632636 }
633637
634638
635-func eK (dl) = {
636- let dw = eH()
639+func eL (dl) = {
640+ let dw = eI()
637641 if ($isInstanceOf(dw, "ByteVector"))
638642 then {
639- let eL = dw
640- (dl.callerPublicKey == eL)
643+ let eM = dw
644+ (dl.callerPublicKey == eM)
641645 }
642646 else if ($isInstanceOf(dw, "Unit"))
643647 then (dl.caller == this)
645649 }
646650
647651
648-func eM (dl) = {
649- let eN = throw("Permission denied")
650- let dw = eH()
652+func eN (dl) = {
653+ let eO = throw("Permission denied")
654+ let dw = eI()
651655 if ($isInstanceOf(dw, "ByteVector"))
652656 then {
653- let eL = dw
654- if ((dl.callerPublicKey == eL))
657+ let eM = dw
658+ if ((dl.callerPublicKey == eM))
655659 then true
656- else eN
660+ else eO
657661 }
658662 else if ($isInstanceOf(dw, "Unit"))
659663 then if ((dl.caller == this))
660664 then true
661- else eN
665+ else eO
662666 else throw("Match error")
663667 }
664668
665669
666670 @Callable(dl)
667-func setManager (eO) = {
668- let eP = eM(dl)
669- if ((eP == eP))
671+func setManager (eP) = {
672+ let eQ = eN(dl)
673+ if ((eQ == eQ))
670674 then {
671- let eQ = fromBase58String(eO)
672- if ((eQ == eQ))
673- then [StringEntry(R(), eO)]
675+ let eR = fromBase58String(eP)
676+ if ((eR == eR))
677+ then [StringEntry(R(), eP)]
674678 else throw("Strict value is not equal to itself.")
675679 }
676680 else throw("Strict value is not equal to itself.")
680684
681685 @Callable(dl)
682686 func confirmManager () = {
683- let eR = eJ()
684- let eS = if (isDefined(eR))
687+ let eS = eK()
688+ let eT = if (isDefined(eS))
685689 then true
686690 else throw("No pending manager")
687- if ((eS == eS))
691+ if ((eT == eT))
688692 then {
689- let eT = if ((dl.callerPublicKey == value(eR)))
693+ let eU = if ((dl.callerPublicKey == value(eS)))
690694 then true
691695 else throw("You are not pending manager")
692- if ((eT == eT))
693- then [StringEntry(Q(), toBase58String(value(eR))), DeleteEntry(R())]
696+ if ((eU == eU))
697+ then [StringEntry(Q(), toBase58String(value(eS))), DeleteEntry(R())]
694698 else throw("Strict value is not equal to itself.")
695699 }
696700 else throw("Strict value is not equal to itself.")
699703
700704
701705 @Callable(dl)
702-func put (cq,eU) = if ((0 > cq))
706+func put (cq,eV) = if ((0 > cq))
703707 then throw("Invalid slippageTolerance passed")
704708 else {
705709 let dr = do(dl, cq, true)
708712 let co = dr._9
709713 let cT = dr._10
710714 let cU = dr._11
711- let eV = dr._12
712- let eW = dr._13
715+ let eW = dr._12
716+ let eX = dr._13
713717 let du = invoke(aJ, "emit", [cS], nil)
714718 if ((du == du))
715719 then {
724728 }
725729 if ((dv == dv))
726730 then {
727- let eX = if ((cT > 0))
728- then invoke(bg, "put", nil, [AttachedPayment(eV, cT)])
731+ let eY = if ((cT > 0))
732+ then invoke(bg, "put", nil, [AttachedPayment(eW, cT)])
729733 else nil
730- if ((eX == eX))
734+ if ((eY == eY))
731735 then {
732- let eY = if ((cU > 0))
733- then invoke(bg, "put", nil, [AttachedPayment(eW, cU)])
736+ let eZ = if ((cU > 0))
737+ then invoke(bg, "put", nil, [AttachedPayment(eX, cU)])
734738 else nil
735- if ((eY == eY))
739+ if ((eZ == eZ))
736740 then {
737- let eZ = if (eU)
741+ let fa = if (eV)
738742 then {
739- let fa = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
740- if ((fa == fa))
743+ let fb = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744+ if ((fb == fb))
741745 then nil
742746 else throw("Strict value is not equal to itself.")
743747 }
744748 else [ScriptTransfer(dl.caller, cS, bX)]
745- (co ++ eZ)
749+ (co ++ fa)
746750 }
747751 else throw("Strict value is not equal to itself.")
748752 }
756760
757761
758762 @Callable(dl)
759-func putForFree (fb) = if ((0 > fb))
763+func putForFree (fc) = if ((0 > fc))
760764 then throw("Invalid value passed")
761765 else {
762- let dr = do(dl, fb, false)
766+ let dr = do(dl, fc, false)
763767 dr._9
764768 }
765769
766770
767771
768772 @Callable(dl)
769-func putOneTkn (fc,fd) = {
770- let fe = {
771- let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
772- if ($isInstanceOf(ff, "Boolean"))
773- then ff
774- else throw(($getType(ff) + " couldn't be cast to Boolean"))
773+func putOneTkn (fd,fe) = {
774+ let ff = {
775+ let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
776+ if ($isInstanceOf(fg, "Boolean"))
777+ then fg
778+ else throw(($getType(fg) + " couldn't be cast to Boolean"))
775779 }
776- let fg = if (if (if (aL())
780+ let fh = if (if (if (aL())
777781 then true
778782 else (aY == l))
779783 then true
780784 else (aY == n))
781785 then true
782- else fe
783- let ej = [if (if (!(fg))
786+ else ff
787+ let ej = [if (if (!(fh))
784788 then true
785- else eK(dl))
789+ else eL(dl))
786790 then true
787791 else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
788792 then true
789793 else aG("exactly 1 payment are expected")]
790794 if ((ej == ej))
791795 then {
792- let fh = dl.payments[0]
793- let dC = fh.assetId
794- let dB = fh.amount
796+ let fi = dl.payments[0]
797+ let dC = fi.assetId
798+ let dB = fi.amount
795799 let X = dl.caller
796800 let Y = dl.transactionId
797- let fi = dA(dB, dC, X, Y)
798- let fj = fi._1
799- let cV = fi._2
800- let dz = fi._3
801- let fk = fi._4
802- let fl = if (if ((fc > 0))
803- then (fc > fj)
801+ let fj = dA(dB, dC, X, Y)
802+ let fk = fj._1
803+ let cV = fj._2
804+ let dz = fj._3
805+ let fl = fj._4
806+ let fm = if (if ((fd > 0))
807+ then (fd > fk)
804808 else false)
805- then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
806- else fj
807- let du = ds(fl)
809+ then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
810+ else fk
811+ let du = ds(fm)
808812 if ((du == du))
809813 then {
810- let eZ = if (fd)
814+ let fa = if (fe)
811815 then {
812- let fm = invoke(bf, "stake", nil, [AttachedPayment(aZ, fl)])
813- if ((fm == fm))
816+ let fn = invoke(bf, "stake", nil, [AttachedPayment(aZ, fm)])
817+ if ((fn == fn))
814818 then nil
815819 else throw("Strict value is not equal to itself.")
816820 }
817- else [ScriptTransfer(dl.caller, fl, aZ)]
818- let fn = if ((dz > 0))
821+ else [ScriptTransfer(dl.caller, fm, aZ)]
822+ let fo = if ((dz > 0))
819823 then [ScriptTransfer(aK, dz, dC)]
820824 else nil
821- $Tuple2(((cV ++ eZ) ++ fn), fl)
825+ $Tuple2(((cV ++ fa) ++ fo), fm)
822826 }
823827 else throw("Strict value is not equal to itself.")
824828 }
829833
830834 @Callable(dl)
831835 func putOneTknREADONLY (dC,dB) = {
832- let fo = dA(dB, aQ(dC), unit, unit)
833- let fj = fo._1
834- let cV = fo._2
835- let dz = fo._3
836- let fk = fo._4
837- $Tuple2(nil, $Tuple3(fj, dz, fk))
836+ let fp = dA(dB, aQ(dC), unit, unit)
837+ let fk = fp._1
838+ let cV = fp._2
839+ let dz = fp._3
840+ let fl = fp._4
841+ $Tuple2(nil, $Tuple3(fk, dz, fl))
838842 }
839843
840844
841845
842846 @Callable(dl)
843-func getOneTkn (fp,fc) = {
844- let fe = {
845- let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
846- if ($isInstanceOf(ff, "Boolean"))
847- then ff
848- else throw(($getType(ff) + " couldn't be cast to Boolean"))
847+func getOneTkn (fq,fd) = {
848+ let ff = {
849+ let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
850+ if ($isInstanceOf(fg, "Boolean"))
851+ then fg
852+ else throw(($getType(fg) + " couldn't be cast to Boolean"))
849853 }
850- let fq = if (if (aL())
854+ let fr = if (if (aL())
851855 then true
852856 else (aY == n))
853857 then true
854- else fe
855- let ej = [if (if (!(fq))
858+ else ff
859+ let ej = [if (if (!(fr))
856860 then true
857- else eK(dl))
861+ else eL(dl))
858862 then true
859863 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
860864 then true
861865 else aG("exactly 1 payment are expected")]
862866 if ((ej == ej))
863867 then {
864- let ei = aQ(fp)
865- let fh = dl.payments[0]
866- let dC = fh.assetId
867- let dQ = fh.amount
868+ let ei = aQ(fq)
869+ let fi = dl.payments[0]
870+ let dC = fi.assetId
871+ let dQ = fi.amount
868872 let X = dl.caller
869873 let Y = dl.transactionId
870- let fr = eh(ei, dQ, dC, X, Y)
871- let fs = fr._1
872- let cV = fr._2
873- let dz = fr._3
874- let fk = fr._4
875- let dt = if (if ((fc > 0))
876- then (fc > fs)
874+ let fs = eh(ei, dQ, dC, X, Y)
875+ let ft = fs._1
876+ let cV = fs._2
877+ let dz = fs._3
878+ let fl = fs._4
879+ let dt = if (if ((fd > 0))
880+ then (fd > ft)
877881 else false)
878- then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
879- else fs
880- let ft = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
881- if ((ft == ft))
882+ then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
883+ else ft
884+ let fu = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
885+ if ((fu == fu))
882886 then {
883- let fu = [ScriptTransfer(X, dt, ei)]
884- let fn = if ((dz > 0))
887+ let fv = [ScriptTransfer(X, dt, ei)]
888+ let fo = if ((dz > 0))
885889 then [ScriptTransfer(aK, dz, ei)]
886890 else nil
887- $Tuple2(((cV ++ fu) ++ fn), dt)
891+ $Tuple2(((cV ++ fv) ++ fo), dt)
888892 }
889893 else throw("Strict value is not equal to itself.")
890894 }
895899
896900 @Callable(dl)
897901 func getOneTknREADONLY (ei,dQ) = {
898- let fv = eh(aQ(ei), dQ, aZ, unit, unit)
899- let fs = fv._1
900- let cV = fv._2
901- let dz = fv._3
902- let fk = fv._4
903- $Tuple2(nil, $Tuple3(fs, dz, fk))
902+ let fw = eh(aQ(ei), dQ, aZ, unit, unit)
903+ let ft = fw._1
904+ let cV = fw._2
905+ let dz = fw._3
906+ let fl = fw._4
907+ $Tuple2(nil, $Tuple3(ft, dz, fl))
904908 }
905909
906910
907911
908912 @Callable(dl)
909-func unstakeAndGetOneTkn (fw,fp,fc) = {
910- let fe = {
911- let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912- if ($isInstanceOf(ff, "Boolean"))
913- then ff
914- else throw(($getType(ff) + " couldn't be cast to Boolean"))
913+func unstakeAndGetOneTkn (fx,fq,fd) = {
914+ let ff = {
915+ let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
916+ if ($isInstanceOf(fg, "Boolean"))
917+ then fg
918+ else throw(($getType(fg) + " couldn't be cast to Boolean"))
915919 }
916- let fq = if (if (aL())
920+ let fr = if (if (aL())
917921 then true
918922 else (aY == n))
919923 then true
920- else fe
921- let ej = [if (if (!(fq))
924+ else ff
925+ let ej = [if (if (!(fr))
922926 then true
923- else eK(dl))
927+ else eL(dl))
924928 then true
925929 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
926930 then true
927931 else aG("no payments are expected")]
928932 if ((ej == ej))
929933 then {
930- let ei = aQ(fp)
934+ let ei = aQ(fq)
931935 let X = dl.caller
932936 let Y = dl.transactionId
933- let fx = invoke(bf, "unstake", [toBase58String(aZ), fw], nil)
934- if ((fx == fx))
937+ let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
938+ if ((fy == fy))
935939 then {
936- let fy = eh(ei, fw, aZ, X, Y)
937- let fs = fy._1
938- let cV = fy._2
939- let dz = fy._3
940- let fk = fy._4
941- let dt = if (if ((fc > 0))
942- then (fc > fs)
940+ let fz = eh(ei, fx, aZ, X, Y)
941+ let ft = fz._1
942+ let cV = fz._2
943+ let dz = fz._3
944+ let fl = fz._4
945+ let dt = if (if ((fd > 0))
946+ then (fd > ft)
943947 else false)
944- then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
945- else fs
946- let ft = invoke(aJ, "burn", [fw], [AttachedPayment(aZ, fw)])
947- if ((ft == ft))
948+ then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
949+ else ft
950+ let fu = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
951+ if ((fu == fu))
948952 then {
949- let fu = [ScriptTransfer(dl.caller, dt, ei)]
950- let fn = if ((dz > 0))
953+ let fv = [ScriptTransfer(dl.caller, dt, ei)]
954+ let fo = if ((dz > 0))
951955 then [ScriptTransfer(aK, dz, ei)]
952956 else nil
953- $Tuple2(((cV ++ fu) ++ fn), dt)
957+ $Tuple2(((cV ++ fv) ++ fo), dt)
954958 }
955959 else throw("Strict value is not equal to itself.")
956960 }
964968 @Callable(dl)
965969 func get () = {
966970 let cG = dk(dl)
967- let fz = cG._1
971+ let fA = cG._1
968972 let cn = cG._2
969973 let dn = cG._3
970974 let bV = cG._4
971975 let co = cG._5
972- let fA = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
973- if ((fA == fA))
976+ let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
977+ if ((fB == fB))
974978 then co
975979 else throw("Strict value is not equal to itself.")
976980 }
978982
979983
980984 @Callable(dl)
981-func getNoLess (fB,fC) = {
985+func getNoLess (fC,fD) = {
982986 let cG = dk(dl)
983987 let cm = cG._1
984988 let cn = cG._2
985989 let dn = cG._3
986990 let bV = cG._4
987991 let co = cG._5
988- if ((fB > cm))
989- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fB)))
990- else if ((fC > cn))
991- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fC)))
992+ if ((fC > cm))
993+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fC)))
994+ else if ((fD > cn))
995+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fD)))
992996 else {
993- let fA = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
994- if ((fA == fA))
997+ let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
998+ if ((fB == fB))
995999 then co
9961000 else throw("Strict value is not equal to itself.")
9971001 }
10011005
10021006 @Callable(dl)
10031007 func unstakeAndGet (dt) = {
1004- let fD = if ((size(dl.payments) != 0))
1008+ let fE = if ((size(dl.payments) != 0))
10051009 then throw("No payments are expected")
10061010 else true
1007- if ((fD == fD))
1011+ if ((fE == fE))
10081012 then {
10091013 let bK = aN()
10101014 let bX = fromBase58String(bK[q])
1011- let fx = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1012- if ((fx == fx))
1015+ let fy = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1016+ if ((fy == fy))
10131017 then {
10141018 let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
10151019 let ca = parseIntValue(cG._9)
10161020 let co = cG._10
1017- let fE = if (if (aL())
1021+ let fF = if (if (aL())
10181022 then true
10191023 else (ca == n))
10201024 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10211025 else true
1022- if ((fE == fE))
1026+ if ((fF == fF))
10231027 then {
1024- let fA = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1025- if ((fA == fA))
1028+ let fB = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1029+ if ((fB == fB))
10261030 then co
10271031 else throw("Strict value is not equal to itself.")
10281032 }
10361040
10371041
10381042 @Callable(dl)
1039-func unstakeAndGetNoLess (fw,fF,fC) = {
1040- let fq = if (aL())
1043+func unstakeAndGetNoLess (fx,fG,fD) = {
1044+ let fr = if (aL())
10411045 then true
10421046 else (aY == n)
1043- let ej = [if (!(fq))
1047+ let ej = [if (!(fr))
10441048 then true
10451049 else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
10461050 then true
10471051 else throw("no payments are expected")]
10481052 if ((ej == ej))
10491053 then {
1050- let fx = invoke(bf, "unstake", [toBase58String(aZ), fw], nil)
1051- if ((fx == fx))
1054+ let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
1055+ if ((fy == fy))
10521056 then {
1053- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fw, dl.caller)
1057+ let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fx, dl.caller)
10541058 let cm = cG._1
10551059 let cn = cG._2
10561060 let co = cG._10
1057- let fG = [if ((cm >= fF))
1061+ let fH = [if ((cm >= fG))
10581062 then true
1059- else throw(makeString(["amount asset amount to receive is less than ", toString(fF)], "")), if ((cn >= fC))
1063+ else throw(makeString(["amount asset amount to receive is less than ", toString(fG)], "")), if ((cn >= fD))
10601064 then true
1061- else throw(makeString(["price asset amount to receive is less than ", toString(fC)], ""))]
1062- if ((fG == fG))
1065+ else throw(makeString(["price asset amount to receive is less than ", toString(fD)], ""))]
1066+ if ((fH == fH))
10631067 then {
1064- let fA = invoke(aJ, "burn", [fw], [AttachedPayment(aZ, fw)])
1065- if ((fA == fA))
1068+ let fB = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
1069+ if ((fB == fB))
10661070 then co
10671071 else throw("Strict value is not equal to itself.")
10681072 }
10761080
10771081
10781082 @Callable(dl)
1079-func activate (fH,fI) = if ((toString(dl.caller) != toString(aJ)))
1083+func activate (fI,fJ) = if ((toString(dl.caller) != toString(aJ)))
10801084 then throw("permissions denied")
1081- else $Tuple2([StringEntry(aa(), fH), StringEntry(ab(), fI)], "success")
1085+ else $Tuple2([StringEntry(aa(), fI), StringEntry(ab(), fJ)], "success")
10821086
10831087
10841088
10851089 @Callable(dl)
10861090 func refreshKLp () = {
1087- let fJ = valueOrElse(getInteger(ag), 0)
1088- let fK = if (((height - fJ) >= aj))
1091+ let fK = valueOrElse(getInteger(ag), 0)
1092+ let fL = if (((height - fK) >= aj))
10891093 then unit
10901094 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1091- if ((fK == fK))
1095+ if ((fL == fL))
10921096 then {
1093- let eG = eD()
1094-[IntegerEntry(ag, height), IntegerEntry(af, eG)]
1097+ let fM = eE()
1098+ let eH = fM._1
1099+ let eD = fM._2
1100+ $Tuple2(eH, eD)
10951101 }
10961102 else throw("Strict value is not equal to itself.")
10971103 }
11541160 let cA = bK[w]
11551161 let bL = parseIntValue(bK[t])
11561162 let bM = parseIntValue(bK[u])
1157- let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1163+ let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11581164 let da = bw(cY)
11591165 let db = bw(cZ)
1160- let fM = if ((fL == 0))
1166+ let fO = if ((fN == 0))
11611167 then [e, e, e]
1162- else bI(da, db, fL)
1168+ else bI(da, db, fN)
11631169 let ch = 0
1164- let fN = G(fM[1], b)
1165- let fO = G(fM[2], b)
1166- let fP = value(getInteger(aJ, au(toString(this))))
1167- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fL), toString(ch), toString(fN), toString(fO), toString(fP)], j))
1170+ let fP = G(fO[1], b)
1171+ let fQ = G(fO[2], b)
1172+ let fR = value(getInteger(aJ, au(toString(this))))
1173+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fN), toString(ch), toString(fP), toString(fQ), toString(fR)], j))
11681174 }
11691175
11701176
11801186 let bL = parseIntValue(bK[t])
11811187 let bM = parseIntValue(bK[u])
11821188 let ca = bK[p]
1183- let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1189+ let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11841190 let da = bw(cx)
11851191 let db = bw(cy)
11861192 let bG = D(da, bL)
11871193 let bH = D(db, bM)
1188- let cg = if ((fL == 0))
1194+ let cg = if ((fN == 0))
11891195 then e
11901196 else by(bH, bG)
11911197 let cD = D(cr, bL)
11931199 let ct = G(cE, bM)
11941200 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
11951201 let cO = dr._1
1196- let fQ = dr._3
1202+ let fS = dr._3
11971203 let cc = dr._4
11981204 let ce = dr._5
11991205 let cb = dr._6
12131219 let bL = parseIntValue(bK[t])
12141220 let bM = parseIntValue(bK[u])
12151221 let ca = bK[p]
1216- let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1217- let fR = bw(cx)
1218- let fS = bw(cy)
1219- let fT = D(fR, bL)
1220- let fU = D(fS, bM)
1221- let cg = if ((fL == 0))
1222+ let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1223+ let fT = bw(cx)
1224+ let fU = bw(cy)
1225+ let fV = D(fT, bL)
1226+ let fW = D(fU, bM)
1227+ let cg = if ((fN == 0))
12221228 then e
1223- else by(fU, fT)
1229+ else by(fW, fV)
12241230 let cE = D(ct, bM)
12251231 let cD = fraction(cE, d, cg)
12261232 let cr = G(cD, bL)
12271233 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12281234 let cO = dr._1
1229- let fQ = dr._3
1235+ let fS = dr._3
12301236 let cc = dr._4
12311237 let ce = dr._5
12321238 let cb = dr._6
12361242
12371243
12381244 @Callable(dl)
1239-func evaluateGetREADONLY (fV,fW) = {
1240- let cG = bT("", fV, fW, this)
1245+func evaluateGetREADONLY (fX,fY) = {
1246+ let cG = bT("", fX, fY, this)
12411247 let cm = cG._1
12421248 let cn = cG._2
12431249 let cc = cG._5
12491255 }
12501256
12511257
1252-@Verifier(fX)
1253-func fY () = {
1254- let fZ = {
1255- let dw = eH()
1258+@Verifier(fZ)
1259+func ga () = {
1260+ let gb = {
1261+ let dw = eI()
12561262 if ($isInstanceOf(dw, "ByteVector"))
12571263 then {
1258- let eL = dw
1259- eL
1264+ let eM = dw
1265+ eM
12601266 }
12611267 else if ($isInstanceOf(dw, "Unit"))
1262- then fX.senderPublicKey
1268+ then fZ.senderPublicKey
12631269 else throw("Match error")
12641270 }
1265- let dw = fX
1271+ let dw = fZ
12661272 if ($isInstanceOf(dw, "Order"))
12671273 then {
12681274 let cX = dw
1269- let ga = aM()
1275+ let gc = aM()
12701276 let az = cW(cX)
12711277 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1272- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], ga)
1278+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gc)
12731279 if (if (if (az)
12741280 then aA
12751281 else false)
12801286 }
12811287 else if ($isInstanceOf(dw, "SetScriptTransaction"))
12821288 then {
1283- let eI = dw
1284- let gb = blake2b256(value(eI.script))
1285- let gc = fromBase64String(value(getString(aJ, aw())))
1286- let gd = scriptHash(this)
1287- if (if ((gc == gb))
1288- then (gd != gb)
1289+ let eJ = dw
1290+ let gd = blake2b256(value(eJ.script))
1291+ let ge = fromBase64String(value(getString(aJ, aw())))
1292+ let gf = scriptHash(this)
1293+ if (if ((ge == gd))
1294+ then (gf != gd)
12891295 else false)
12901296 then true
1291- else sigVerify(fX.bodyBytes, fX.proofs[0], fZ)
1297+ else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
12921298 }
1293- else sigVerify(fX.bodyBytes, fX.proofs[0], fZ)
1299+ else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
12941300 }
12951301
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)
415415 true
416416 }
417417 }
418418 }
419419
420420
421421 func dk (dl) = if ((size(dl.payments) != 1))
422422 then throw("exactly 1 payment is expected")
423423 else {
424424 let dm = value(dl.payments[0])
425425 let bV = value(dm.assetId)
426426 let dn = dm.amount
427427 let cG = bT(toBase58String(dl.transactionId), toBase58String(bV), dn, dl.caller)
428428 let cm = cG._1
429429 let cn = cG._2
430430 let ca = parseIntValue(cG._9)
431431 let co = cG._10
432432 if (if (aL())
433433 then true
434434 else (ca == n))
435435 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
436436 else $Tuple5(cm, cn, dn, bV, co)
437437 }
438438
439439
440440 func do (dl,cq,cw) = if ((size(dl.payments) != 2))
441441 then throw("exactly 2 payments are expected")
442442 else {
443443 let dp = value(dl.payments[0])
444444 let dq = value(dl.payments[1])
445445 let dr = cp(toBase58String(dl.transactionId), cq, dp.amount, dp.assetId, dq.amount, dq.assetId, toString(dl.caller), false, cw)
446446 let ca = parseIntValue(dr._8)
447447 if (if (if (aL())
448448 then true
449449 else (ca == l))
450450 then true
451451 else (ca == n))
452452 then throw(("Put operation is blocked by admin. Status = " + toString(ca)))
453453 else dr
454454 }
455455
456456
457457 func ds (dt) = {
458458 let du = invoke(aJ, "emit", [dt], nil)
459459 if ((du == du))
460460 then {
461461 let dv = {
462462 let dw = du
463463 if ($isInstanceOf(dw, "Address"))
464464 then {
465465 let dx = dw
466466 invoke(dx, "emit", [dt], nil)
467467 }
468468 else unit
469469 }
470470 if ((dv == dv))
471471 then dt
472472 else throw("Strict value is not equal to itself.")
473473 }
474474 else throw("Strict value is not equal to itself.")
475475 }
476476
477477
478478 func dy (dt) = {
479479 let dz = fraction(dt, ae, b)
480480 $Tuple2((dt - dz), dz)
481481 }
482482
483483
484484 func dA (dB,dC,X,Y) = {
485485 let dD = (Y == unit)
486486 let dE = bw(aS(ba))
487487 let dF = bw(aS(bb))
488488 let dG = if ((dC == ba))
489489 then true
490490 else if ((dC == bb))
491491 then false
492492 else aG("invalid asset")
493493 let dH = if (dD)
494494 then $Tuple2(dE, dF)
495495 else if (dG)
496496 then $Tuple2((dE - dB), dF)
497497 else $Tuple2(dE, (dF - dB))
498498 let dI = dH._1
499499 let dJ = dH._2
500500 let dK = if (dG)
501501 then $Tuple2(dB, 0)
502502 else $Tuple2(0, dB)
503503 let dL = dK._1
504504 let dM = dK._2
505505 let dN = dy(dL)._1
506506 let dO = dy(dM)._1
507507 let dP = dy(dB)
508508 let dQ = dP._1
509509 let dz = dP._2
510510 let dR = (dI + dN)
511511 let dS = (dJ + dO)
512512 let dT = by(D(dS, bd), D(dR, bc))
513513 let dU = G(dT, b)
514514 let dV = if (dG)
515515 then dI
516516 else dJ
517517 let dW = toBigInt(dV)
518518 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
519519 let dY = if ((dX > f))
520520 then true
521521 else aG("initial deposit requires all coins")
522522 if ((dY == dY))
523523 then {
524524 let dZ = toBigInt(dQ)
525525 let ea = max([0, toInt(((dX * (sqrtBigInt((d + ((dZ * d) / dW)), 18, 18, DOWN) - d)) / d))])
526526 let cV = if (dD)
527527 then nil
528528 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))]
529529 let eb = by(D(dJ, bd), D(dI, bc))
530530 let ec = G(eb, b)
531531 let ed = {
532532 let ee = if (dG)
533533 then $Tuple2(dL, dI)
534534 else $Tuple2(dM, dJ)
535535 let dt = ee._1
536536 let ef = ee._2
537537 let eg = toInt(fraction(dX, toBigInt((dt / 2)), toBigInt(ef)))
538538 fraction((ea - eg), b, eg)
539539 }
540540 $Tuple4(ea, cV, dz, ed)
541541 }
542542 else throw("Strict value is not equal to itself.")
543543 }
544544
545545
546546 func eh (ei,dQ,dC,X,Y) = {
547547 let dD = (Y == unit)
548548 let ej = [if ((dC == aZ))
549549 then true
550550 else aG("invalid lp asset")]
551551 if ((ej == ej))
552552 then {
553553 let ek = if ((ei == ba))
554554 then true
555555 else if ((ei == bb))
556556 then false
557557 else aG("invalid asset")
558558 let el = if (ek)
559559 then toBigInt(bw(aS(ba)))
560560 else toBigInt(bw(aS(bb)))
561561 let em = bw(aS(ba))
562562 let en = bw(aS(bb))
563563 let eo = if (ek)
564564 then em
565565 else en
566566 let ep = toBigInt(eo)
567567 let dX = toBigInt(valueOrErrorMessage(assetInfo(aZ), (("asset " + toBase58String(aZ)) + " doesn't exist")).quantity)
568568 let eq = toBigInt(dQ)
569569 let er = max([0, toInt(((el * (d - pow((d - ((eq * d) / dX)), 18, h, 0, 18, DOWN))) / d))])
570570 let es = dy(er)
571571 let et = es._1
572572 let dz = es._2
573573 let eu = if (ek)
574574 then $Tuple4(et, 0, (em - er), en)
575575 else $Tuple4(0, et, em, (en - er))
576576 let ev = eu._1
577577 let ew = eu._2
578578 let ex = eu._3
579579 let ey = eu._4
580580 let dT = by(D(ey, bd), D(ex, bc))
581581 let dU = G(dT, b)
582582 let cV = if (dD)
583583 then nil
584584 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)]
585585 let eb = by(D(en, bd), D(em, bc))
586586 let ec = G(eb, b)
587587 let ed = {
588588 let ez = (toInt(fraction(el, eq, dX)) * 2)
589589 fraction((et - ez), b, ez)
590590 }
591591 $Tuple4(et, cV, dz, ed)
592592 }
593593 else throw("Strict value is not equal to itself.")
594594 }
595595
596596
597-func eA (eB,eC,cb) = fraction(eB, eC, cb)
598-
599-
600-func eD () = {
601- let eE = bw(aS(ba))
602- let eF = bw(aS(bb))
603- let cb = value(assetInfo(aZ)).quantity
604- let eG = eA(eE, eF, cb)
605- eG
597+func eA (eB,eC,cb) = {
598+ let eD = fraction(pow((eB * eC), 0, toBigInt(5), 1, 0, DOWN), d, cb)
599+ eD
606600 }
607601
608602
609-func eH () = {
603+func eE () = {
604+ let eF = bw(aS(ba))
605+ let eG = bw(aS(bb))
606+ let cb = value(assetInfo(aZ)).quantity
607+ let eD = eA(toBigInt(eF), toBigInt(eG), toBigInt(cb))
608+ let eH = [IntegerEntry(ag, height), StringEntry(af, toString(eD))]
609+ $Tuple2(eH, eD)
610+ }
611+
612+
613+func eI () = {
610614 let dw = getString(Q())
611615 if ($isInstanceOf(dw, "String"))
612616 then {
613- let eI = dw
614- fromBase58String(eI)
617+ let eJ = dw
618+ fromBase58String(eJ)
615619 }
616620 else if ($isInstanceOf(dw, "Unit"))
617621 then unit
618622 else throw("Match error")
619623 }
620624
621625
622-func eJ () = {
626+func eK () = {
623627 let dw = getString(R())
624628 if ($isInstanceOf(dw, "String"))
625629 then {
626- let eI = dw
627- fromBase58String(eI)
630+ let eJ = dw
631+ fromBase58String(eJ)
628632 }
629633 else if ($isInstanceOf(dw, "Unit"))
630634 then unit
631635 else throw("Match error")
632636 }
633637
634638
635-func eK (dl) = {
636- let dw = eH()
639+func eL (dl) = {
640+ let dw = eI()
637641 if ($isInstanceOf(dw, "ByteVector"))
638642 then {
639- let eL = dw
640- (dl.callerPublicKey == eL)
643+ let eM = dw
644+ (dl.callerPublicKey == eM)
641645 }
642646 else if ($isInstanceOf(dw, "Unit"))
643647 then (dl.caller == this)
644648 else throw("Match error")
645649 }
646650
647651
648-func eM (dl) = {
649- let eN = throw("Permission denied")
650- let dw = eH()
652+func eN (dl) = {
653+ let eO = throw("Permission denied")
654+ let dw = eI()
651655 if ($isInstanceOf(dw, "ByteVector"))
652656 then {
653- let eL = dw
654- if ((dl.callerPublicKey == eL))
657+ let eM = dw
658+ if ((dl.callerPublicKey == eM))
655659 then true
656- else eN
660+ else eO
657661 }
658662 else if ($isInstanceOf(dw, "Unit"))
659663 then if ((dl.caller == this))
660664 then true
661- else eN
665+ else eO
662666 else throw("Match error")
663667 }
664668
665669
666670 @Callable(dl)
667-func setManager (eO) = {
668- let eP = eM(dl)
669- if ((eP == eP))
671+func setManager (eP) = {
672+ let eQ = eN(dl)
673+ if ((eQ == eQ))
670674 then {
671- let eQ = fromBase58String(eO)
672- if ((eQ == eQ))
673- then [StringEntry(R(), eO)]
675+ let eR = fromBase58String(eP)
676+ if ((eR == eR))
677+ then [StringEntry(R(), eP)]
674678 else throw("Strict value is not equal to itself.")
675679 }
676680 else throw("Strict value is not equal to itself.")
677681 }
678682
679683
680684
681685 @Callable(dl)
682686 func confirmManager () = {
683- let eR = eJ()
684- let eS = if (isDefined(eR))
687+ let eS = eK()
688+ let eT = if (isDefined(eS))
685689 then true
686690 else throw("No pending manager")
687- if ((eS == eS))
691+ if ((eT == eT))
688692 then {
689- let eT = if ((dl.callerPublicKey == value(eR)))
693+ let eU = if ((dl.callerPublicKey == value(eS)))
690694 then true
691695 else throw("You are not pending manager")
692- if ((eT == eT))
693- then [StringEntry(Q(), toBase58String(value(eR))), DeleteEntry(R())]
696+ if ((eU == eU))
697+ then [StringEntry(Q(), toBase58String(value(eS))), DeleteEntry(R())]
694698 else throw("Strict value is not equal to itself.")
695699 }
696700 else throw("Strict value is not equal to itself.")
697701 }
698702
699703
700704
701705 @Callable(dl)
702-func put (cq,eU) = if ((0 > cq))
706+func put (cq,eV) = if ((0 > cq))
703707 then throw("Invalid slippageTolerance passed")
704708 else {
705709 let dr = do(dl, cq, true)
706710 let cS = dr._2
707711 let bX = dr._7
708712 let co = dr._9
709713 let cT = dr._10
710714 let cU = dr._11
711- let eV = dr._12
712- let eW = dr._13
715+ let eW = dr._12
716+ let eX = dr._13
713717 let du = invoke(aJ, "emit", [cS], nil)
714718 if ((du == du))
715719 then {
716720 let dv = {
717721 let dw = du
718722 if ($isInstanceOf(dw, "Address"))
719723 then {
720724 let dx = dw
721725 invoke(dx, "emit", [cS], nil)
722726 }
723727 else unit
724728 }
725729 if ((dv == dv))
726730 then {
727- let eX = if ((cT > 0))
728- then invoke(bg, "put", nil, [AttachedPayment(eV, cT)])
731+ let eY = if ((cT > 0))
732+ then invoke(bg, "put", nil, [AttachedPayment(eW, cT)])
729733 else nil
730- if ((eX == eX))
734+ if ((eY == eY))
731735 then {
732- let eY = if ((cU > 0))
733- then invoke(bg, "put", nil, [AttachedPayment(eW, cU)])
736+ let eZ = if ((cU > 0))
737+ then invoke(bg, "put", nil, [AttachedPayment(eX, cU)])
734738 else nil
735- if ((eY == eY))
739+ if ((eZ == eZ))
736740 then {
737- let eZ = if (eU)
741+ let fa = if (eV)
738742 then {
739- let fa = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
740- if ((fa == fa))
743+ let fb = invoke(bf, "stake", nil, [AttachedPayment(bX, cS)])
744+ if ((fb == fb))
741745 then nil
742746 else throw("Strict value is not equal to itself.")
743747 }
744748 else [ScriptTransfer(dl.caller, cS, bX)]
745- (co ++ eZ)
749+ (co ++ fa)
746750 }
747751 else throw("Strict value is not equal to itself.")
748752 }
749753 else throw("Strict value is not equal to itself.")
750754 }
751755 else throw("Strict value is not equal to itself.")
752756 }
753757 else throw("Strict value is not equal to itself.")
754758 }
755759
756760
757761
758762 @Callable(dl)
759-func putForFree (fb) = if ((0 > fb))
763+func putForFree (fc) = if ((0 > fc))
760764 then throw("Invalid value passed")
761765 else {
762- let dr = do(dl, fb, false)
766+ let dr = do(dl, fc, false)
763767 dr._9
764768 }
765769
766770
767771
768772 @Callable(dl)
769-func putOneTkn (fc,fd) = {
770- let fe = {
771- let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
772- if ($isInstanceOf(ff, "Boolean"))
773- then ff
774- else throw(($getType(ff) + " couldn't be cast to Boolean"))
773+func putOneTkn (fd,fe) = {
774+ let ff = {
775+ let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
776+ if ($isInstanceOf(fg, "Boolean"))
777+ then fg
778+ else throw(($getType(fg) + " couldn't be cast to Boolean"))
775779 }
776- let fg = if (if (if (aL())
780+ let fh = if (if (if (aL())
777781 then true
778782 else (aY == l))
779783 then true
780784 else (aY == n))
781785 then true
782- else fe
783- let ej = [if (if (!(fg))
786+ else ff
787+ let ej = [if (if (!(fh))
784788 then true
785- else eK(dl))
789+ else eL(dl))
786790 then true
787791 else aG("put operation is blocked by admin"), if ((size(dl.payments) == 1))
788792 then true
789793 else aG("exactly 1 payment are expected")]
790794 if ((ej == ej))
791795 then {
792- let fh = dl.payments[0]
793- let dC = fh.assetId
794- let dB = fh.amount
796+ let fi = dl.payments[0]
797+ let dC = fi.assetId
798+ let dB = fi.amount
795799 let X = dl.caller
796800 let Y = dl.transactionId
797- let fi = dA(dB, dC, X, Y)
798- let fj = fi._1
799- let cV = fi._2
800- let dz = fi._3
801- let fk = fi._4
802- let fl = if (if ((fc > 0))
803- then (fc > fj)
801+ let fj = dA(dB, dC, X, Y)
802+ let fk = fj._1
803+ let cV = fj._2
804+ let dz = fj._3
805+ let fl = fj._4
806+ let fm = if (if ((fd > 0))
807+ then (fd > fk)
804808 else false)
805- then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
806- else fj
807- let du = ds(fl)
809+ then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
810+ else fk
811+ let du = ds(fm)
808812 if ((du == du))
809813 then {
810- let eZ = if (fd)
814+ let fa = if (fe)
811815 then {
812- let fm = invoke(bf, "stake", nil, [AttachedPayment(aZ, fl)])
813- if ((fm == fm))
816+ let fn = invoke(bf, "stake", nil, [AttachedPayment(aZ, fm)])
817+ if ((fn == fn))
814818 then nil
815819 else throw("Strict value is not equal to itself.")
816820 }
817- else [ScriptTransfer(dl.caller, fl, aZ)]
818- let fn = if ((dz > 0))
821+ else [ScriptTransfer(dl.caller, fm, aZ)]
822+ let fo = if ((dz > 0))
819823 then [ScriptTransfer(aK, dz, dC)]
820824 else nil
821- $Tuple2(((cV ++ eZ) ++ fn), fl)
825+ $Tuple2(((cV ++ fa) ++ fo), fm)
822826 }
823827 else throw("Strict value is not equal to itself.")
824828 }
825829 else throw("Strict value is not equal to itself.")
826830 }
827831
828832
829833
830834 @Callable(dl)
831835 func putOneTknREADONLY (dC,dB) = {
832- let fo = dA(dB, aQ(dC), unit, unit)
833- let fj = fo._1
834- let cV = fo._2
835- let dz = fo._3
836- let fk = fo._4
837- $Tuple2(nil, $Tuple3(fj, dz, fk))
836+ let fp = dA(dB, aQ(dC), unit, unit)
837+ let fk = fp._1
838+ let cV = fp._2
839+ let dz = fp._3
840+ let fl = fp._4
841+ $Tuple2(nil, $Tuple3(fk, dz, fl))
838842 }
839843
840844
841845
842846 @Callable(dl)
843-func getOneTkn (fp,fc) = {
844- let fe = {
845- let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
846- if ($isInstanceOf(ff, "Boolean"))
847- then ff
848- else throw(($getType(ff) + " couldn't be cast to Boolean"))
847+func getOneTkn (fq,fd) = {
848+ let ff = {
849+ let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
850+ if ($isInstanceOf(fg, "Boolean"))
851+ then fg
852+ else throw(($getType(fg) + " couldn't be cast to Boolean"))
849853 }
850- let fq = if (if (aL())
854+ let fr = if (if (aL())
851855 then true
852856 else (aY == n))
853857 then true
854- else fe
855- let ej = [if (if (!(fq))
858+ else ff
859+ let ej = [if (if (!(fr))
856860 then true
857- else eK(dl))
861+ else eL(dl))
858862 then true
859863 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 1))
860864 then true
861865 else aG("exactly 1 payment are expected")]
862866 if ((ej == ej))
863867 then {
864- let ei = aQ(fp)
865- let fh = dl.payments[0]
866- let dC = fh.assetId
867- let dQ = fh.amount
868+ let ei = aQ(fq)
869+ let fi = dl.payments[0]
870+ let dC = fi.assetId
871+ let dQ = fi.amount
868872 let X = dl.caller
869873 let Y = dl.transactionId
870- let fr = eh(ei, dQ, dC, X, Y)
871- let fs = fr._1
872- let cV = fr._2
873- let dz = fr._3
874- let fk = fr._4
875- let dt = if (if ((fc > 0))
876- then (fc > fs)
874+ let fs = eh(ei, dQ, dC, X, Y)
875+ let ft = fs._1
876+ let cV = fs._2
877+ let dz = fs._3
878+ let fl = fs._4
879+ let dt = if (if ((fd > 0))
880+ then (fd > ft)
877881 else false)
878- then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
879- else fs
880- let ft = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
881- if ((ft == ft))
882+ then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
883+ else ft
884+ let fu = invoke(aJ, "burn", [dQ], [AttachedPayment(dC, dQ)])
885+ if ((fu == fu))
882886 then {
883- let fu = [ScriptTransfer(X, dt, ei)]
884- let fn = if ((dz > 0))
887+ let fv = [ScriptTransfer(X, dt, ei)]
888+ let fo = if ((dz > 0))
885889 then [ScriptTransfer(aK, dz, ei)]
886890 else nil
887- $Tuple2(((cV ++ fu) ++ fn), dt)
891+ $Tuple2(((cV ++ fv) ++ fo), dt)
888892 }
889893 else throw("Strict value is not equal to itself.")
890894 }
891895 else throw("Strict value is not equal to itself.")
892896 }
893897
894898
895899
896900 @Callable(dl)
897901 func getOneTknREADONLY (ei,dQ) = {
898- let fv = eh(aQ(ei), dQ, aZ, unit, unit)
899- let fs = fv._1
900- let cV = fv._2
901- let dz = fv._3
902- let fk = fv._4
903- $Tuple2(nil, $Tuple3(fs, dz, fk))
902+ let fw = eh(aQ(ei), dQ, aZ, unit, unit)
903+ let ft = fw._1
904+ let cV = fw._2
905+ let dz = fw._3
906+ let fl = fw._4
907+ $Tuple2(nil, $Tuple3(ft, dz, fl))
904908 }
905909
906910
907911
908912 @Callable(dl)
909-func unstakeAndGetOneTkn (fw,fp,fc) = {
910- let fe = {
911- let ff = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912- if ($isInstanceOf(ff, "Boolean"))
913- then ff
914- else throw(($getType(ff) + " couldn't be cast to Boolean"))
913+func unstakeAndGetOneTkn (fx,fq,fd) = {
914+ let ff = {
915+ let fg = invoke(aJ, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
916+ if ($isInstanceOf(fg, "Boolean"))
917+ then fg
918+ else throw(($getType(fg) + " couldn't be cast to Boolean"))
915919 }
916- let fq = if (if (aL())
920+ let fr = if (if (aL())
917921 then true
918922 else (aY == n))
919923 then true
920- else fe
921- let ej = [if (if (!(fq))
924+ else ff
925+ let ej = [if (if (!(fr))
922926 then true
923- else eK(dl))
927+ else eL(dl))
924928 then true
925929 else aG("get operation is blocked by admin"), if ((size(dl.payments) == 0))
926930 then true
927931 else aG("no payments are expected")]
928932 if ((ej == ej))
929933 then {
930- let ei = aQ(fp)
934+ let ei = aQ(fq)
931935 let X = dl.caller
932936 let Y = dl.transactionId
933- let fx = invoke(bf, "unstake", [toBase58String(aZ), fw], nil)
934- if ((fx == fx))
937+ let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
938+ if ((fy == fy))
935939 then {
936- let fy = eh(ei, fw, aZ, X, Y)
937- let fs = fy._1
938- let cV = fy._2
939- let dz = fy._3
940- let fk = fy._4
941- let dt = if (if ((fc > 0))
942- then (fc > fs)
940+ let fz = eh(ei, fx, aZ, X, Y)
941+ let ft = fz._1
942+ let cV = fz._2
943+ let dz = fz._3
944+ let fl = fz._4
945+ let dt = if (if ((fd > 0))
946+ then (fd > ft)
943947 else false)
944- then aG(makeString(["amount to receive is less than ", toString(fc)], ""))
945- else fs
946- let ft = invoke(aJ, "burn", [fw], [AttachedPayment(aZ, fw)])
947- if ((ft == ft))
948+ then aG(makeString(["amount to receive is less than ", toString(fd)], ""))
949+ else ft
950+ let fu = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
951+ if ((fu == fu))
948952 then {
949- let fu = [ScriptTransfer(dl.caller, dt, ei)]
950- let fn = if ((dz > 0))
953+ let fv = [ScriptTransfer(dl.caller, dt, ei)]
954+ let fo = if ((dz > 0))
951955 then [ScriptTransfer(aK, dz, ei)]
952956 else nil
953- $Tuple2(((cV ++ fu) ++ fn), dt)
957+ $Tuple2(((cV ++ fv) ++ fo), dt)
954958 }
955959 else throw("Strict value is not equal to itself.")
956960 }
957961 else throw("Strict value is not equal to itself.")
958962 }
959963 else throw("Strict value is not equal to itself.")
960964 }
961965
962966
963967
964968 @Callable(dl)
965969 func get () = {
966970 let cG = dk(dl)
967- let fz = cG._1
971+ let fA = cG._1
968972 let cn = cG._2
969973 let dn = cG._3
970974 let bV = cG._4
971975 let co = cG._5
972- let fA = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
973- if ((fA == fA))
976+ let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
977+ if ((fB == fB))
974978 then co
975979 else throw("Strict value is not equal to itself.")
976980 }
977981
978982
979983
980984 @Callable(dl)
981-func getNoLess (fB,fC) = {
985+func getNoLess (fC,fD) = {
982986 let cG = dk(dl)
983987 let cm = cG._1
984988 let cn = cG._2
985989 let dn = cG._3
986990 let bV = cG._4
987991 let co = cG._5
988- if ((fB > cm))
989- then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fB)))
990- else if ((fC > cn))
991- then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fC)))
992+ if ((fC > cm))
993+ then throw(((("noLessThenAmtAsset failed: " + toString(cm)) + " < ") + toString(fC)))
994+ else if ((fD > cn))
995+ then throw(((("noLessThenPriceAsset failed: " + toString(cn)) + " < ") + toString(fD)))
992996 else {
993- let fA = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
994- if ((fA == fA))
997+ let fB = invoke(aJ, "burn", [dn], [AttachedPayment(bV, dn)])
998+ if ((fB == fB))
995999 then co
9961000 else throw("Strict value is not equal to itself.")
9971001 }
9981002 }
9991003
10001004
10011005
10021006 @Callable(dl)
10031007 func unstakeAndGet (dt) = {
1004- let fD = if ((size(dl.payments) != 0))
1008+ let fE = if ((size(dl.payments) != 0))
10051009 then throw("No payments are expected")
10061010 else true
1007- if ((fD == fD))
1011+ if ((fE == fE))
10081012 then {
10091013 let bK = aN()
10101014 let bX = fromBase58String(bK[q])
1011- let fx = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1012- if ((fx == fx))
1015+ let fy = invoke(bf, "unstake", [toBase58String(bX), dt], nil)
1016+ if ((fy == fy))
10131017 then {
10141018 let cG = bT(toBase58String(dl.transactionId), toBase58String(bX), dt, dl.caller)
10151019 let ca = parseIntValue(cG._9)
10161020 let co = cG._10
1017- let fE = if (if (aL())
1021+ let fF = if (if (aL())
10181022 then true
10191023 else (ca == n))
10201024 then throw(("Get operation is blocked by admin. Status = " + toString(ca)))
10211025 else true
1022- if ((fE == fE))
1026+ if ((fF == fF))
10231027 then {
1024- let fA = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1025- if ((fA == fA))
1028+ let fB = invoke(aJ, "burn", [dt], [AttachedPayment(bX, dt)])
1029+ if ((fB == fB))
10261030 then co
10271031 else throw("Strict value is not equal to itself.")
10281032 }
10291033 else throw("Strict value is not equal to itself.")
10301034 }
10311035 else throw("Strict value is not equal to itself.")
10321036 }
10331037 else throw("Strict value is not equal to itself.")
10341038 }
10351039
10361040
10371041
10381042 @Callable(dl)
1039-func unstakeAndGetNoLess (fw,fF,fC) = {
1040- let fq = if (aL())
1043+func unstakeAndGetNoLess (fx,fG,fD) = {
1044+ let fr = if (aL())
10411045 then true
10421046 else (aY == n)
1043- let ej = [if (!(fq))
1047+ let ej = [if (!(fr))
10441048 then true
10451049 else throw("get operation is blocked by admin"), if ((size(dl.payments) == 0))
10461050 then true
10471051 else throw("no payments are expected")]
10481052 if ((ej == ej))
10491053 then {
1050- let fx = invoke(bf, "unstake", [toBase58String(aZ), fw], nil)
1051- if ((fx == fx))
1054+ let fy = invoke(bf, "unstake", [toBase58String(aZ), fx], nil)
1055+ if ((fy == fy))
10521056 then {
1053- let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fw, dl.caller)
1057+ let cG = bT(toBase58String(dl.transactionId), toBase58String(aZ), fx, dl.caller)
10541058 let cm = cG._1
10551059 let cn = cG._2
10561060 let co = cG._10
1057- let fG = [if ((cm >= fF))
1061+ let fH = [if ((cm >= fG))
10581062 then true
1059- else throw(makeString(["amount asset amount to receive is less than ", toString(fF)], "")), if ((cn >= fC))
1063+ else throw(makeString(["amount asset amount to receive is less than ", toString(fG)], "")), if ((cn >= fD))
10601064 then true
1061- else throw(makeString(["price asset amount to receive is less than ", toString(fC)], ""))]
1062- if ((fG == fG))
1065+ else throw(makeString(["price asset amount to receive is less than ", toString(fD)], ""))]
1066+ if ((fH == fH))
10631067 then {
1064- let fA = invoke(aJ, "burn", [fw], [AttachedPayment(aZ, fw)])
1065- if ((fA == fA))
1068+ let fB = invoke(aJ, "burn", [fx], [AttachedPayment(aZ, fx)])
1069+ if ((fB == fB))
10661070 then co
10671071 else throw("Strict value is not equal to itself.")
10681072 }
10691073 else throw("Strict value is not equal to itself.")
10701074 }
10711075 else throw("Strict value is not equal to itself.")
10721076 }
10731077 else throw("Strict value is not equal to itself.")
10741078 }
10751079
10761080
10771081
10781082 @Callable(dl)
1079-func activate (fH,fI) = if ((toString(dl.caller) != toString(aJ)))
1083+func activate (fI,fJ) = if ((toString(dl.caller) != toString(aJ)))
10801084 then throw("permissions denied")
1081- else $Tuple2([StringEntry(aa(), fH), StringEntry(ab(), fI)], "success")
1085+ else $Tuple2([StringEntry(aa(), fI), StringEntry(ab(), fJ)], "success")
10821086
10831087
10841088
10851089 @Callable(dl)
10861090 func refreshKLp () = {
1087- let fJ = valueOrElse(getInteger(ag), 0)
1088- let fK = if (((height - fJ) >= aj))
1091+ let fK = valueOrElse(getInteger(ag), 0)
1092+ let fL = if (((height - fK) >= aj))
10891093 then unit
10901094 else aG(makeString([toString(aj), " blocks have not passed since the previous call"], ""))
1091- if ((fK == fK))
1095+ if ((fL == fL))
10921096 then {
1093- let eG = eD()
1094-[IntegerEntry(ag, height), IntegerEntry(af, eG)]
1097+ let fM = eE()
1098+ let eH = fM._1
1099+ let eD = fM._2
1100+ $Tuple2(eH, eD)
10951101 }
10961102 else throw("Strict value is not equal to itself.")
10971103 }
10981104
10991105
11001106
11011107 @Callable(dl)
11021108 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aN())
11031109
11041110
11051111
11061112 @Callable(dl)
11071113 func getAccBalanceWrapperREADONLY (bx) = $Tuple2(nil, bw(bx))
11081114
11091115
11101116
11111117 @Callable(dl)
11121118 func calcPricesWrapperREADONLY (bE,bF,bJ) = {
11131119 let bS = bI(bE, bF, bJ)
11141120 $Tuple2(nil, [toString(bS[0]), toString(bS[1]), toString(bS[2])])
11151121 }
11161122
11171123
11181124
11191125 @Callable(dl)
11201126 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
11211127
11221128
11231129
11241130 @Callable(dl)
11251131 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
11261132
11271133
11281134
11291135 @Callable(dl)
11301136 func calcPriceBigIntWrapperREADONLY (bz,bA) = $Tuple2(nil, toString(by(parseBigIntValue(bz), parseBigIntValue(bA))))
11311137
11321138
11331139
11341140 @Callable(dl)
11351141 func estimatePutOperationWrapperREADONLY (bU,cq,cr,cs,ct,cu,X,cv,cw) = $Tuple2(nil, cp(bU, cq, cr, cs, ct, cu, X, cv, cw))
11361142
11371143
11381144
11391145 @Callable(dl)
11401146 func estimateGetOperationWrapperREADONLY (bU,bV,bW,X) = {
11411147 let cG = bT(bU, bV, bW, addressFromStringValue(X))
11421148 $Tuple2(nil, $Tuple10(cG._1, cG._2, cG._3, cG._4, cG._5, cG._6, cG._7, toString(cG._8), cG._9, cG._10))
11431149 }
11441150
11451151
11461152
11471153 @Callable(dl)
11481154 func statsREADONLY () = {
11491155 let bK = aN()
11501156 let bX = fromBase58String(bK[q])
11511157 let cY = bK[r]
11521158 let cZ = bK[s]
11531159 let cz = bK[v]
11541160 let cA = bK[w]
11551161 let bL = parseIntValue(bK[t])
11561162 let bM = parseIntValue(bK[u])
1157- let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1163+ let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11581164 let da = bw(cY)
11591165 let db = bw(cZ)
1160- let fM = if ((fL == 0))
1166+ let fO = if ((fN == 0))
11611167 then [e, e, e]
1162- else bI(da, db, fL)
1168+ else bI(da, db, fN)
11631169 let ch = 0
1164- let fN = G(fM[1], b)
1165- let fO = G(fM[2], b)
1166- let fP = value(getInteger(aJ, au(toString(this))))
1167- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fL), toString(ch), toString(fN), toString(fO), toString(fP)], j))
1170+ let fP = G(fO[1], b)
1171+ let fQ = G(fO[2], b)
1172+ let fR = value(getInteger(aJ, au(toString(this))))
1173+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(da), toString(db), toString(fN), toString(ch), toString(fP), toString(fQ), toString(fR)], j))
11681174 }
11691175
11701176
11711177
11721178 @Callable(dl)
11731179 func evaluatePutByAmountAssetREADONLY (cr) = {
11741180 let bK = aN()
11751181 let bX = fromBase58String(bK[q])
11761182 let cx = bK[r]
11771183 let bY = fromBase58String(cx)
11781184 let cy = bK[s]
11791185 let bZ = fromBase58String(cy)
11801186 let bL = parseIntValue(bK[t])
11811187 let bM = parseIntValue(bK[u])
11821188 let ca = bK[p]
1183- let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1189+ let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
11841190 let da = bw(cx)
11851191 let db = bw(cy)
11861192 let bG = D(da, bL)
11871193 let bH = D(db, bM)
1188- let cg = if ((fL == 0))
1194+ let cg = if ((fN == 0))
11891195 then e
11901196 else by(bH, bG)
11911197 let cD = D(cr, bL)
11921198 let cE = fraction(cD, cg, d)
11931199 let ct = G(cE, bM)
11941200 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
11951201 let cO = dr._1
1196- let fQ = dr._3
1202+ let fS = dr._3
11971203 let cc = dr._4
11981204 let ce = dr._5
11991205 let cb = dr._6
12001206 $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))
12011207 }
12021208
12031209
12041210
12051211 @Callable(dl)
12061212 func evaluatePutByPriceAssetREADONLY (ct) = {
12071213 let bK = aN()
12081214 let bX = fromBase58String(bK[q])
12091215 let cx = bK[r]
12101216 let bY = fromBase58String(cx)
12111217 let cy = bK[s]
12121218 let bZ = fromBase58String(cy)
12131219 let bL = parseIntValue(bK[t])
12141220 let bM = parseIntValue(bK[u])
12151221 let ca = bK[p]
1216- let fL = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1217- let fR = bw(cx)
1218- let fS = bw(cy)
1219- let fT = D(fR, bL)
1220- let fU = D(fS, bM)
1221- let cg = if ((fL == 0))
1222+ let fN = valueOrErrorMessage(assetInfo(bX), (("Asset " + toBase58String(bX)) + " doesn't exist")).quantity
1223+ let fT = bw(cx)
1224+ let fU = bw(cy)
1225+ let fV = D(fT, bL)
1226+ let fW = D(fU, bM)
1227+ let cg = if ((fN == 0))
12221228 then e
1223- else by(fU, fT)
1229+ else by(fW, fV)
12241230 let cE = D(ct, bM)
12251231 let cD = fraction(cE, d, cg)
12261232 let cr = G(cD, bL)
12271233 let dr = cp("", 500000, cr, bY, ct, bZ, "", true, false)
12281234 let cO = dr._1
1229- let fQ = dr._3
1235+ let fS = dr._3
12301236 let cc = dr._4
12311237 let ce = dr._5
12321238 let cb = dr._6
12331239 $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))
12341240 }
12351241
12361242
12371243
12381244 @Callable(dl)
1239-func evaluateGetREADONLY (fV,fW) = {
1240- let cG = bT("", fV, fW, this)
1245+func evaluateGetREADONLY (fX,fY) = {
1246+ let cG = bT("", fX, fY, this)
12411247 let cm = cG._1
12421248 let cn = cG._2
12431249 let cc = cG._5
12441250 let ce = cG._6
12451251 let cb = cG._7
12461252 let ch = cG._8
12471253 let ca = parseIntValue(cG._9)
12481254 $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))
12491255 }
12501256
12511257
1252-@Verifier(fX)
1253-func fY () = {
1254- let fZ = {
1255- let dw = eH()
1258+@Verifier(fZ)
1259+func ga () = {
1260+ let gb = {
1261+ let dw = eI()
12561262 if ($isInstanceOf(dw, "ByteVector"))
12571263 then {
1258- let eL = dw
1259- eL
1264+ let eM = dw
1265+ eM
12601266 }
12611267 else if ($isInstanceOf(dw, "Unit"))
1262- then fX.senderPublicKey
1268+ then fZ.senderPublicKey
12631269 else throw("Match error")
12641270 }
1265- let dw = fX
1271+ let dw = fZ
12661272 if ($isInstanceOf(dw, "Order"))
12671273 then {
12681274 let cX = dw
1269- let ga = aM()
1275+ let gc = aM()
12701276 let az = cW(cX)
12711277 let aA = sigVerify(cX.bodyBytes, cX.proofs[0], cX.senderPublicKey)
1272- let aB = sigVerify(cX.bodyBytes, cX.proofs[1], ga)
1278+ let aB = sigVerify(cX.bodyBytes, cX.proofs[1], gc)
12731279 if (if (if (az)
12741280 then aA
12751281 else false)
12761282 then aB
12771283 else false)
12781284 then true
12791285 else ay(az, aA, aB)
12801286 }
12811287 else if ($isInstanceOf(dw, "SetScriptTransaction"))
12821288 then {
1283- let eI = dw
1284- let gb = blake2b256(value(eI.script))
1285- let gc = fromBase64String(value(getString(aJ, aw())))
1286- let gd = scriptHash(this)
1287- if (if ((gc == gb))
1288- then (gd != gb)
1289+ let eJ = dw
1290+ let gd = blake2b256(value(eJ.script))
1291+ let ge = fromBase64String(value(getString(aJ, aw())))
1292+ let gf = scriptHash(this)
1293+ if (if ((ge == gd))
1294+ then (gf != gd)
12891295 else false)
12901296 then true
1291- else sigVerify(fX.bodyBytes, fX.proofs[0], fZ)
1297+ else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
12921298 }
1293- else sigVerify(fX.bodyBytes, fX.proofs[0], fZ)
1299+ else sigVerify(fZ.bodyBytes, fZ.proofs[0], gb)
12941300 }
12951301

github/deemru/w8io/873ac7e 
402.27 ms