tx · FWtuqECiXRoSmpunHwtFfB44WtshW1pHr72tCtnRv9qg

3N3Z7gchiV3BnVbnBxxbA8mzQtHVtAiJXoK:  -0.03500000 Waves

2022.12.22 18:25 [2371679] smart account 3N3Z7gchiV3BnVbnBxxbA8mzQtHVtAiJXoK > SELF 0.00000000 Waves

{ "type": 13, "id": "FWtuqECiXRoSmpunHwtFfB44WtshW1pHr72tCtnRv9qg", "fee": 3500000, "feeAssetId": null, "timestamp": 1671722768872, "version": 1, "sender": "3N3Z7gchiV3BnVbnBxxbA8mzQtHVtAiJXoK", "senderPublicKey": "eJ2g5D64ACno4HGhPaYy876FpMDrsDdePwmBzJUuYgk", "proofs": [ "3BPWERWjc5WYeW6Rc5rWF6syhNKKhk67cSfhwFJ6KGtXMvrctgJBwWrWndtYRQ363Q7L4Aw9xE72xs5dh4o6xAV9" ], "script": "base64:BgKdLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNTg4MjI0Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA4MDEyMTAxMyIDa0xwIg0kdDAyMTQ4NDIxNTg0Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNjkyNDU2MiIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU2NjI0NzE1IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MzcyNDg5NiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjY1NzcyNjc0NCIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIYb3V0SW5BbW91bnRBc3NldERlY2ltYWxzIgxhbUJhbGFuY2VPbGQiDHByQmFsYW5jZU9sZCIKb3V0QmFsYW5jZSIQb3V0QmFsYW5jZUJpZ0ludCIOcmVkZWVtZWRCaWdJbnQiCWFtb3VudFJhdyINJHQwMjg4MjMyODg3MyILdG90YWxBbW91bnQiDSR0MDI4ODc3MjkxMDMiC291dEFtQW1vdW50IgtvdXRQckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciGGFtb3VudEJvdGhJblBheW1lbnRBc3NldCIWbWFuYWdlclB1YmxpY0tleU9yVW5pdCIBcyIdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiC2NoZWNrQ2FsbGVyIhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSIPc2hvdWxkQXV0b1N0YWtlIgRhbUlkIgRwcklkIgxzbGlwcGFnZUFJbnYiDHNsaXBwYWdlUEludiIKbHBUcmFuc2ZlciILc2xwU3Rha2VJbnYiDSR0MDMzNjMxMzQwOTMiEXJlZnJlc2hLTHBBY3Rpb25zIhFpc1VwZGF0ZWRLTHBWYWxpZCILbWF4U2xpcHBhZ2UiDSR0MDM0NjU1MzQ3MjAiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzU5MDgzNjA2MCIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzNjY0NjM2ODQzIg0kdDAzNjg0NjM2OTU0Ig0kdDAzNzI2MDM3NDE3Ig1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzODMwMjM4NDU1Ig9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM4OTU1MzkyMDIiEGZlZUFtb3VudEZvckNhbGMiDSR0MDM5MjA1MzkzMTMiDSR0MDM5NTcwMzk3MjYiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDQwNjMxNDA3ODIiDSR0MDQxMjc3NDE1MjQiDSR0MDQxNTI3NDE2MzUiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiDSR0MDQyNTgxNDI2NjMiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDSR0MDQzNjEyNDM2OTMiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyINJHQwNDQ4MTk0NDkwMCIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiDSR0MDQ2MTk1NDYyNzYiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIhhsYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiHWNoZWNrTGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ig0kdDA0NzQ2MzQ3NTI3IhBrTHBVcGRhdGVBY3Rpb25zIgphbXRBc3NldElkIgxwcmljZUFzc2V0SWQiDXBvb2xMUEJhbGFuY2UiEmFjY0FtdEFzc2V0QmFsYW5jZSIUYWNjUHJpY2VBc3NldEJhbGFuY2UiCnByaWNlc0xpc3QiD2xwQW10QXNzZXRTaGFyZSIRbHBQcmljZUFzc2V0U2hhcmUiCnBvb2xXZWlnaHQiDGN1clByaWNlQ2FsYyIMYW1CYWxhbmNlUmF3IgxwckJhbGFuY2VSYXciD2FtQmFsYW5jZVJhd1gxOCIPcHJCYWxhbmNlUmF3WDE4IhBwYXltZW50THBBc3NldElkIgxwYXltZW50THBBbXQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNobwABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBSAFJCQCgAwEJALwCAwUBSAkAtgIBBQFJBQFkAQFKAwFIAUkBSwkAoAMBCQC9AgQFAUgJALYCAQUBSQUBZAUBSwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFRAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVIAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFTAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVQAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVUAAhElcyVzX19wcmljZV9fbGFzdAEBVgIBVwFYCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVwkAzAgCCQCkAwEFAVgFA25pbAUBagEBWQIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAVoCAl9fBQJhYQECYWICAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQFaAgJfXwUCYWEBAmFjAAIPJXNfX2Ftb3VudEFzc2V0AQJhZAACDiVzX19wcmljZUFzc2V0AAJhZQIHJXNfX2ZlZQACYWYJAGsDAAoFAWIAkE4AAmFnCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFlBQJhZgACYWgJALkJAgkAzAgCAgIlcwkAzAgCAgNrTHAFA25pbAUBagACYWkJALkJAgkAzAgCAgIlcwkAzAgCAhJrTHBSZWZyZXNoZWRIZWlnaHQFA25pbAUBagACYWoJALkJAgkAzAgCAgIlcwkAzAgCAg9yZWZyZXNoS0xwRGVsYXkFA25pbAUBagACYWsAHgACYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWoFAmFrAQJhbQACESVzX19mYWN0b3J5Q29uZmlnAQJhbgACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYW8BAmFwCQCsAgIJAKwCAgIIJXMlcyVzX18FAmFwAiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXECAmFyAmFzCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhcgICX18FAmFzAghfX2NvbmZpZwECYXQBAmF1CQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmF1AQJhdgACDCVzX19zaHV0ZG93bgECYXcBAmF4CQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYXgBAmF5AAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmF6Ahclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUEDAmFCAmFDAmFECQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICJG9yZGVyIHZhbGlkYXRpb24gZmFpbGVkOiBvcmRlclZhbGlkPQkApQMBBQJhQgINIHNlbmRlclZh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SW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJiUQkBAmJFBAUCYk8FAmJQBQJiSAUCYkkEAmJDCQEBRAIFAmJIBQJiTwQCYkIJAQFEAgUCYkkFAmJQBAJiUgkBAUQCBQJiTQUBYgQCYlMJAQJiQQIFAmJDBQJiUgQCYlQJAQJiQQIFAmJCBQJiUgkAzAgCBQJiUQkAzAgCBQJiUwkAzAgCBQJiVAUDbmlsAQJiVQMCYkgCYkkCYk0EAmJWCQECYkwDBQJiSAUCYkkFAmJNCQDMCAIJAQFHAgkAkQMCBQJiVgAABQFiCQDMCAIJAQFHAgkAkQMCBQJiVgABBQFiCQDMCAIJAQFHAgkAkQMCBQJiVgACBQFiBQNuaWwBAmJXBAJiWAJiWQJiWgFaBAJiTgkBAmFQAAQCY2EJAJEDAgUCYk4FAXEEAmNiCQCRAwIFAmJOBQFyBAJjYwkAkQMCBQJiTgUBcwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCY2QJAJEDAgUCYk4FAXAEAmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY2EJAKwCAgkArAICAgZBc3NldCAFAmNhAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmNhBQJiWQkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCY2YJAQJieQEFAmNiBAJjZwkBAUQCBQJjZgUCYkYEAmNoCQECYnkBBQJjYwQCY2kJAQFEAgUCY2gFAmJHBAJjagkBAmJBAgUCY2kFAmNnBAJjawkBAUcCBQJjagUBYgQCY2wJAQFEAgUCYloFAWIEAmNtCQEBRAIFAmNlBQFiBAJjbgkAvAIDBQJjZwUCY2wFAmNtBAJjbwkAvAIDBQJjaQUCY2wFAmNtBAJjcAkBAUoDBQJjbgUCYkYFBUZMT09SBAJjcQkBAUoDBQJjbwUCYkcFBUZMT09SBAJjcgMJAAACBQJiWAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCY3ADCQAAAgUCY2ICBVdBVkVTBQR1bml0CQDZBAEFAmNiCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmNxAwkAAAIFAmNjAgVXQVZFUwUEdW5pdAkA2QQBBQJjYwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEFAVoFAmJYCQECYnUGBQJjcAUCY3EFAmJaBQJjawUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjawUDbmlsCQCcCgoFAmNwBQJjcQUCY2IFAmNjBQJjZgUCY2gFAmNlBQJjagUCY2QFAmNyAQJjcwkCYlgCY3QCY3UCY3YCY3cCY3gBWgJjeQJjegQCYk4JAQJhUAAEAmNhCQDZBAEJAJEDAgUCYk4FAXEEAmNBCQCRAwIFAmJOBQFyBAJjQgkAkQMCBQJiTgUBcwQCY0MJAJEDAgUCYk4FAXYEAmNECQCRAwIFAmJOBQF3BAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJjZAkAkQMCBQJiTgUBcAQCY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCY2EJAKwCAgkArAICAgZBc3NldCAJANgEAQUCY2ECDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjRQkA2AQBCQELdmFsdWVPckVsc2UCBQJjdgkA2QQBAgVXQVZFUwQCY0YJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY3gJANkEAQIFV0FWRVMDAwkBAiE9AgUCY0EFAmNFBgkBAiE9AgUCY0IFAmNGCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCY2YDBQJjeQkBAmJ5AQUCY0EJAGUCCQECYnkBBQJjQQUCY3UEAmNoAwUCY3kJAQJieQEFAmNCCQBlAgkBAmJ5AQUCY0IFAmN3BAJjRwkBAUQCBQJjdQUCYk8EAmNICQEBRAIFAmN3BQJiUAQCY0kJAQJiQQIFAmNIBQJjRwQCY2cJAQFEAgUCY2YFAmJPBAJjaQkBAUQCBQJjaAUCYlAEAmNKAwkAAAIFAmNlAAAEAmNqBQFlBAJjSwUBZQQCYlIJAHYGCQC5AgIFAmNHBQJjSAAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiUgUBYgkBAUcCBQJjRwUCYk8JAQFHAgUCY0gFAmJQCQECYkECCQC3AgIFAmNpBQJjSAkAtwICBQJjZwUCY0cFAmNLBAJjagkBAmJBAgUCY2kFAmNnBAJjSwkAvAIDCQEBUQEJALgCAgUCY2oFAmNJBQFkBQJjagQCY0wJAQFEAgUCY3QFAWIDAwkBAiE9AgUCY2oFAWUJAL8CAgUCY0sFAmNMBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjSwIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNMBAJjbQkBAUQCBQJjZQUBYgQCY00JAL0CBAUCY0cJAQJiRAMFAmNpBQJjZwUHQ0VJTElORwUBZAUHQ0VJTElORwQCY04JAL0CBAUCY0gFAWQJAQJiRAMFAmNpBQJjZwUFRkxPT1IFB0NFSUxJTkcEAmNPAwkAvwICBQJjTQUCY0gJAJQKAgUCY04FAmNICQCUCgIFAmNHBQJjTQQCY1AIBQJjTwJfMQQCY1EIBQJjTwJfMgQCYlIJAL0CBAUCY20FAmNRBQJjaQUFRkxPT1IJAJcKBQkBAUoDBQJiUgUBYgUFRkxPT1IJAQFKAwUCY1AFAmJPBQdDRUlMSU5HCQEBSgMFAmNRBQJiUAUHQ0VJTElORwUCY2oFAmNLBAJjUggFAmNKAl8xBAJjUwgFAmNKAl8yBAJjVAgFAmNKAl8zBAJjawkBAUcCCAUCY0oCXzQFAWIEAmNVCQEBRwIIBQJjSgJfNQUBYgMJAGcCAAAFAmNSCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJjVgMJAQEhAQUCY3oAAAUCY1IEAmNXCQBlAgUCY3UFAmNTBAJjWAkAZQIFAmN3BQJjVAQCY1kJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY2sJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY2sJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQFaBQJiWAkBAmJqCgUCY1MFAmNUBQJjVgUCY2sFAmN0BQJjVQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY1cFAmNYBQNuaWwJAJ8KDQUCY1IFAmNWBQJjawUCY2YFAmNoBQJjZQUCY2EFAmNkBQJjWQUCY1cFAmNYBQJjdgUCY3gBAmNaAwJkYQJkYgJjZQQCZGMJALwCAwkAdgYJALkCAgUCZGEFAmRiAAAJALYCAQAFAAEAEgUERE9XTgUBZwUCY2UDCQAAAgUCY2UFAWYFAWYFAmRjAQJkZAMCZGUCZGYCZGcEAmRoCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmMFAmRlBAJkaQkAuAICCQC2AgEJAQJieQEJAQJhVQEFAmJkBQJkZgQCZGoJALgCAgkAtgIBCAkBBXZhbHVlAQkA7AcBBQJiYghxdWFudGl0eQUCZGcEAmRrCQECY1oDBQJkaAUCZGkFAmRqBQJkawECZGwDAmRtAmRuAmRnBAJkaAkAZAIJAQJieQEJAQJhVQEFAmJjBQJkbQQCZGkJAGQCCQECYnkBCQECYVUBBQJiZAUCZG4EAmRqCQBkAggJAQV2YWx1ZQEJAOwHAQUCYmIIcXVhbnRpdHkFAmRnBAJkYwkBAmNaAwkAtgIBBQJkaAkAtgIBBQJkaQkAtgIBBQJkagQCZG8JAMwIAgkBDEludGVnZXJFbnRyeQIFAmFpBQZoZWlnaHQJAMwIAgkBC1N0cmluZ0VudHJ5AgUCYWgJAKYDAQUCZGMFA25pbAkAlAoCBQJkbwUCZGMBAmRwAgJkcQJkYwMJAMACAgUCZGMFAmRxBgkBAmFJAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJkcQkAzAgCCQCmAwEFAmRjBQNuaWwCASABAmRyAQJkcwQCZHQIBQJkcwZhbW91bnQEAmR1CQBuBAgFAmRzBmFtb3VudAgFAmRzBXByaWNlBQFiBQVGTE9PUgQCZHYDCQAAAggFAmRzCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmR0CQEBLQEFAmR1CQCUCgIJAQEtAQUCZHQFAmR1BAJkbQgFAmR2Al8xBAJkbggFAmR2Al8yAwMDCQECYU4ABgkAAAIFAmJhBQFtBgkAAAIFAmJhBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmRzCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmMGCQECIT0CCAgFAmRzCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiZAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmR3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFBHRoaXMFAmFoCQECYUsBAg9rTHAgaXMgcmVxdWlyZWQJAQJhSwECC2ludmFsaWQga0xwBAJkeAkBAmRsAwUCZG0FAmRuAAAEAmR5CAUCZHgCXzEEAmR6CAUCZHgCXzIEAmRBCQDAAgIFAmR6BQJkdwUCZEEBAmRCAQJkQwMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZEQJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAAEAmJZCQEFdmFsdWUBCAUCZEQHYXNzZXRJZAQCZEUIBQJkRAZhbW91bnQEAmNKCQECYlcECQDYBAEIBQJkQw10cmFuc2FjdGlvbklkCQDYBAEFAmJZBQJkRQgFAmRDBmNhbGxlcgQCY3AIBQJjSgJfMQQCY3EIBQJjSgJfMgQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmNKAl85BAJjcggFAmNKA18xMAMDCQECYU4ABgkAAAIFAmNkBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAkAlwoFBQJjcAUCY3EFAmRFBQJiWQUCY3IBAmRGAwJkQwJjdAJjegMJAQIhPQIJAJADAQgFAmRDCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkRwkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZEgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEEAmRJCQECY3MJCQDYBAEIBQJkQw10cmFuc2FjdGlvbklkBQJjdAgFAmRHBmFtb3VudAgFAmRHB2Fzc2V0SWQIBQJkSAZhbW91bnQIBQJkSAdhc3NldElkCQClCAEIBQJkQwZjYWxsZXIHBQJjegQCY2QJAQ1wYXJzZUludFZhbHVlAQgFAmRJAl84AwMDCQECYU4ABgkAAAIFAmNkBQFsBgkAAAIFAmNkBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAUCZEkBAmRKAQJkSwQCZEwJAPwHBAUCYUwCBGVtaXQJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmRMBQJkTAQCZE0EAmROBQJkTAMJAAECBQJkTgIHQWRkcmVzcwQCZE8FAmROCQD8BwQFAmRPAgRlbWl0CQDMCAIFAmRLBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkTQUCZE0FAmRLCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkUAECZEsEAmRRCQBrAwUCZEsFAmFnBQFiCQCUCgIJAGUCBQJkSwUCZFEFAmRRAQJkUgQCZFMCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCZFYJAQJieQEJAQJhVQEFAmJjBAJkVwkBAmJ5AQkBAmFVAQUCYmQEAmRYAwkAAAIFAmRUBQJiYwYDCQAAAgUCZFQFAmJkBwkBAmFJAQINaW52YWxpZCBhc3NldAQCZFkDBQJkVQkAlAoCBQJkVgUCZFcDBQJkWAkAlAoCCQBlAgUCZFYFAmRTBQJkVwkAlAoCBQJkVgkAZQIFAmRXBQJkUwQCZFoIBQJkWQJfMQQCZWEIBQJkWQJfMgQCZWIDBQJkWAkAlAoCBQJkUwAACQCUCgIAAAUCZFMEAmVjCAUCZWICXzEEAmVkCAUCZWICXzIEAmR0CAkBAmRQAQUCZWMCXzEEAmR1CAkBAmRQAQUCZWQCXzEEAmVlCQECZFABBQJkUwQCZWYIBQJlZQJfMQQCZFEIBQJlZQJfMgQCZWcJAGQCBQJkWgUCZHQEAmVoCQBkAgUCZWEFAmR1BAJlaQkBAmJBAgkBAUQCBQJlaAUCYmYJAQFEAgUCZWcFAmJlBAJlagkBAUcCBQJlaQUBYgQCZWsDBQJkWAUCZFoFAmVhBAJlbAkAtgIBBQJlawQCZW0JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiYgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiYgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVuAwkAvwICBQJlbQUBZgYJAQJhSQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZW4FAmVuBAJlbwkAtgIBBQJlZgQCZXAJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZW0JALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJlbwUBZAUCZWwAEgASBQRET1dOBQFkBQFkBQNuaWwEAmNZAwUCZFUFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJlagkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlagkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIJAKUIAQkBBXZhbHVlAQUBWgkA2AQBCQEFdmFsdWUBBQJhYQkBAmJqCgUCZWMFAmVkBQJlcAUCZWoAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlcQkBAmJBAgkBAUQCBQJlYQUCYmYJAQFEAgUCZFoFAmJlBAJlcgkBAUcCBQJlcQUBYgQCZXMEAmV0AwUCZFgJAJQKAgUCZWMFAmRaCQCUCgIFAmVkBQJlYQQCZEsIBQJldAJfMQQCZXUIBQJldAJfMgQCZXYJAKADAQkAvAIDBQJlbQkAtgIBCQBpAgUCZEsAAgkAtgIBBQJldQkAawMJAGUCBQJlcAUCZXYFAWIFAmV2CQCXCgUFAmVwBQJjWQUCZFEFAmVzBQJkWAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZXcFAmV4AmVmAmRUAVoCYWEEAmRVCQAAAgUCYWEFBHVuaXQEAmJOCQECYVAABAJiTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF0BAJiUAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJOBQF1BAJleQkAzAgCAwkAAAIFAmRUBQJiYgYJAQJhSQECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJleQUCZXkEAmV6AwkAAAIFAmV4BQJiYwYDCQAAAgUCZXgFAmJkBwkBAmFJAQINaW52YWxpZCBhc3NldAQCZUEDBQJlegkAtgIBCQECYnkBCQECYVUBBQJiYwkAtgIBCQECYnkBCQECYVUBBQJiZAQCZUIDBQJlegUCYk8FAmJQBAJlQwkBAmJ5AQkBAmFVAQUCYmMEAmVECQECYnkBCQECYVUBBQJiZAQCZUUDBQJlegUCZUMFAmVEBAJlRgkAtgIBBQJlRQQCZW0JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJiYgkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJiYgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVHCQC2AgEFAmVmBAJlSAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlQQkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZUcFAWQFAmVtABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVJCQECZFABBQJlSAQCZUoIBQJlSQJfMQQCZFEIBQJlSQJfMgQCZUsDBQJlegkAlgoEBQJlSgAACQBlAgUCZUMFAmVIBQJlRAkAlgoEAAAFAmVKBQJlQwkAZQIFAmVEBQJlSAQCZUwIBQJlSwJfMQQCZU0IBQJlSwJfMgQCZU4IBQJlSwJfMwQCZU8IBQJlSwJfNAQCZWkJAQJiQQIJAQFEAgUCZU8FAmJmCQEBRAIFAmVOBQJiZQQCZWoJAQFHAgUCZWkFAWIEAmNZAwUCZFUFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICCQClCAEJAQV2YWx1ZQEFAVoJANgEAQkBBXZhbHVlAQUCYWEJAQJidQYFAmVMBQJlTQUCZWYFAmVqBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqBQNuaWwEAmVxCQECYkECCQEBRAIFAmVEBQJiZgkBAUQCBQJlQwUCYmUEAmVyCQEBRwIFAmVxBQFiBAJlcwQCZVAJAGgCCQCgAwEJALwCAwUCZUEFAmVHBQJlbQACCQBrAwkAZQIFAmVKBQJlUAUBYgUCZVAJAJcKBQUCZUoFAmNZBQJkUQUCZXMFAmV6CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlUQAEAmROCQCiCAEJAQFTAAMJAAECBQJkTgIGU3RyaW5nBAJlUgUCZE4JANkEAQUCZVIDCQABAgUCZE4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVMABAJkTgkAoggBCQEBVAADCQABAgUCZE4CBlN0cmluZwQCZVIFAmROCQDZBAEFAmVSAwkAAQIFAmROAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmVUAQJkQwQCZE4JAQJlUQADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVVBQJkTgkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkFAmVVAwkAAQIFAmROAgRVbml0CQAAAggFAmRDBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlVgECZEMEAmVXCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmROCQECZVEAAwkAAQIFAmROAgpCeXRlVmVjdG9yBAJlVQUCZE4DCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQUCZVUGBQJlVwMJAAECBQJkTgIEVW5pdAMJAAACCAUCZEMGY2FsbGVyBQR0aGlzBgUCZVcJAAIBAgtNYXRjaCBlcnJvchsCZEMBCnNldE1hbmFnZXIBAmVYBAJlWQkBAmVWAQUCZEMDCQAAAgUCZVkFAmVZBAJlWgkA2QQBBQJlWAMJAAACBQJlWgUCZVoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQABQJlWAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQ5jb25maXJtTWFuYWdlcgAEAmZhCQECZVMABAJmYgMJAQlpc0RlZmluZWQBBQJmYQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmIFAmZiBAJmYwMJAAACCAUCZEMPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJmYQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZmMFAmZjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAAkA2AQBCQEFdmFsdWUBBQJmYQkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEDcHV0AgJjdAJmZAMJAGYCAAAFAmN0CQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRJCQECZEYDBQJkQwUCY3QGBAJjVggFAmRJAl8yBAJjYQgFAmRJAl83BAJjcggFAmRJAl85BAJjVwgFAmRJA18xMAQCY1gIBQJkSQNfMTEEAmZlCAUCZEkDXzEyBAJmZggFAmRJA18xMwQCZEcJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAAGYW1vdW50BAJkSAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAQZhbW91bnQEAmRrCQECZGQDBQJkRwUCZEgJALYCAQAAAwkAAAIFAmRrBQJkawQCZEwJAPwHBAUCYUwCBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsAwkAAAIFAmRMBQJkTAQCZE0EAmROBQJkTAMJAAECBQJkTgIHQWRkcmVzcwQCZE8FAmROCQD8BwQFAmRPAgRlbWl0CQDMCAIFAmNWBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkTQUCZE0EAmZnAwkAZgIFAmNXAAAJAPwHBAUCYmkCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmZQUCY1cFA25pbAUDbmlsAwkAAAIFAmZnBQJmZwQCZmgDCQBmAgUCY1gAAAkA/AcEBQJiaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZmBQJjWAUDbmlsBQNuaWwDCQAAAgUCZmgFAmZoBAJmaQMFAmZkBAJmagkA/AcEBQJiaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2EFAmNWBQNuaWwDCQAAAgUCZmoFAmZqBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRDBmNhbGxlcgUCY1YFAmNhBQNuaWwEAmZrCQECZGwDAAAAAAAAAwkAAAIFAmZrBQJmawQCZGMIBQJmawJfMgQCZmwIBQJmawJfMQQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgkAzggCBQJjcgUCZmkFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQpwdXRGb3JGcmVlAQJmbgMJAGYCAAAFAmZuCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRJCQECZEYDBQJkQwUCZm4HBAJjcggFAmRJAl85BAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJmbwkBAmRsAwAAAAAAAAQCZmwIBQJmbwJfMQQCZGMIBQJmbwJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQlwdXRPbmVUa24CAmZwAmZxBAJmcgoAAmZzCQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnMCB0Jvb2xlYW4FAmZzCQACAQkArAICCQADAQUCZnMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZ0AwMDCQECYU4ABgkAAAIFAmJhBQFsBgkAAAIFAmJhBQFuBgUCZnIEAmV5CQDMCAIDAwkBASEBBQJmdAYJAQJlVAEFAmRDBgkBAmFJAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEMIcGF5bWVudHMAAQYJAQJhSQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZnUJAJEDAggFAmRDCHBheW1lbnRzAAAEAmRUCAUCZnUHYXNzZXRJZAQCZFMIBQJmdQZhbW91bnQEAmRrAwkAAAIFAmRUBQJiYwkBAmRkAwkAtgIBBQJkUwkAtgIBAAAJALYCAQAAAwkAAAIFAmRUBQJiZAkBAmRkAwkAtgIBAAAJALYCAQUCZFMJALYCAQAACQECYUkBAh5wYXltZW50IGFzc2V0IGlzIG5vdCBzdXBwb3J0ZWQDCQAAAgUCZGsFAmRrBAFaCAUCZEMGY2FsbGVyBAJhYQgFAmRDDXRyYW5zYWN0aW9uSWQEAmZ2CQECZFIEBQJkUwUCZFQFAVoFAmFhAwkAAAIFAmZ2BQJmdgQCZFgIBQJmdgJfNQQCZncIBQJmdgJfNAQCZFEIBQJmdgJfMwQCY1kIBQJmdgJfMgQCZngIBQJmdgJfMQQCZnkDAwkAZgIFAmZwAAAJAGYCBQJmcAUCZngHCQECYUkBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUCZngEAmRMCQECZEoBBQJmeQMJAAACBQJkTAUCZEwEAmZpAwUCZnEEAmZ6CQD8BwQFAmJoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZnkFA25pbAMJAAACBQJmegUCZnoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJmeQUCYmIFA25pbAQCZkEDCQBmAgUCZFEAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhTQUCZFEFAmRUBQNuaWwFA25pbAQCZkIDCQAAAgUEdGhpcwUCYU0JAJQKAgAAAAADBQJkWAkAlAoCCQEBLQEFAmRRAAAJAJQKAgAACQEBLQEFAmRRBAJkbQgFAmZCAl8xBAJkbggFAmZCAl8yBAJmQwkBAmRsAwUCZG0FAmRuAAAEAmZsCAUCZkMCXzEEAmRjCAUCZkMCXzIEAmR3CQEFdmFsdWUBCQCiCAEFAmFoBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAlAoCCQDOCAIJAM4IAgkAzggCBQJjWQUCZmkFAmZBBQJmbAUCZnkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBEXB1dE9uZVRrblJFQURPTkxZAgJkVAJkUwQCZkQJAQJkUgQFAmRTCQECYVMBBQJkVAUEdW5pdAUEdW5pdAQCZngIBQJmRAJfMQQCY1kIBQJmRAJfMgQCZFEIBQJmRAJfMwQCZncIBQJmRAJfNAQCZFgIBQJmRAJfNQkAlAoCBQNuaWwJAJUKAwUCZngFAmRRBQJmdwJkQwEJZ2V0T25lVGtuAgJmRQJmcAQCZnIKAAJmcwkA/AcEBQJhTAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmZzAgdCb29sZWFuBQJmcwkAAgEJAKwCAgkAAwEFAmZzAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmRgMDCQECYU4ABgkAAAIFAmJhBQFuBgUCZnIEAmV5CQDMCAIDAwkBASEBBQJmRgYJAQJlVAEFAmRDBgkBAmFJAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEMIcGF5bWVudHMAAQYJAQJhSQECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZXgJAQJhUwEFAmZFBAJmdQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZFQIBQJmdQdhc3NldElkBAJlZggFAmZ1BmFtb3VudAQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZGsFAmRrBAFaCAUCZEMGY2FsbGVyBAJhYQgFAmRDDXRyYW5zYWN0aW9uSWQEAmZHCQECZXcFBQJleAUCZWYFAmRUBQFaBQJhYQMJAAACBQJmRwUCZkcEAmV6CAUCZkcCXzUEAmZ3CAUCZkcCXzQEAmRRCAUCZkcCXzMEAmNZCAUCZkcCXzIEAmZICAUCZkcCXzEEAmRLAwMJAGYCBQJmcAAACQBmAgUCZnAFAmZIBwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcAUDbmlsAgAFAmZIBAJmSQkA/AcEBQJhTAIEYnVybgkAzAgCBQJlZgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkVAUCZWYFA25pbAMJAAACBQJmSQUCZkkEAmZKCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVoFAmRLBQJleAUDbmlsBAJmQQMJAGYCBQJkUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkUQUCZXgFA25pbAUDbmlsBAJmSwQCZkwDCQAAAgUEdGhpcwUCYU0AAAUCZFEDBQJlegkAlAoCCQEBLQEJAGQCBQJkSwUCZkwAAAkAlAoCAAAJAQEtAQkAZAIFAmRLBQJmTAQCZG0IBQJmSwJfMQQCZG4IBQJmSwJfMgQCZk0JAQJkbAMFAmRtBQJkbgAABAJmbAgFAmZNAl8xBAJkYwgFAmZNAl8yBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAlAoCCQDOCAIJAM4IAgkAzggCBQJjWQUCZkoFAmZBBQJmbAUCZEsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBEWdldE9uZVRrblJFQURPTkxZAgJleAJlZgQCZk4JAQJldwUJAQJhUwEFAmV4BQJlZgUCYmIFBHVuaXQFBHVuaXQEAmZICAUCZk4CXzEEAmNZCAUCZk4CXzIEAmRRCAUCZk4CXzMEAmZ3CAUCZk4CXzQEAmV6CAUCZk4CXzUJAJQKAgUDbmlsCQCVCgMFAmZIBQJkUQUCZncCZEMBE3Vuc3Rha2VBbmRHZXRPbmVUa24DAmZPAmZFAmZwBAJmcgoAAmZzCQD8BwQFAmFMAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZnMCB0Jvb2xlYW4FAmZzCQACAQkArAICCQADAQUCZnMCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmZGAwMJAQJhTgAGCQAAAgUCYmEFAW4GBQJmcgQCZXkJAMwIAgMDCQEBIQEFAmZGBgkBAmVUAQUCZEMGCQECYUkBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwAABgkBAmFJAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJleAkBAmFTAQUCZkUEAVoIBQJkQwZjYWxsZXIEAmFhCAUCZEMNdHJhbnNhY3Rpb25JZAQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZGsFAmRrBAJmUAkA/AcEBQJiaAIHdW5zdGFrZQkAzAgCCQDYBAEFAmJiCQDMCAIFAmZPBQNuaWwFA25pbAMJAAACBQJmUAUCZlAEAmZRCQECZXcFBQJleAUCZk8FAmJiBQFaBQJhYQMJAAACBQJmUQUCZlEEAmV6CAUCZlECXzUEAmZ3CAUCZlECXzQEAmRRCAUCZlECXzMEAmNZCAUCZlECXzIEAmZICAUCZlECXzEEAmRLAwMJAGYCBQJmcAAACQBmAgUCZnAFAmZIBwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmcAUDbmlsAgAFAmZIBAJmSQkA/AcEBQJhTAIEYnVybgkAzAgCBQJmTwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZk8FA25pbAMJAAACBQJmSQUCZkkEAmZKCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkQwZjYWxsZXIFAmRLBQJleAUDbmlsBAJmQQMJAGYCBQJkUQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFNBQJkUQUCZXgFA25pbAUDbmlsBAJmUgQCZkwDCQAAAgUEdGhpcwUCYU0AAAUCZFEDBQJlegkAlAoCCQEBLQEJAGQCBQJkSwUCZkwAAAkAlAoCAAAJAQEtAQkAZAIFAmRLBQJmTAQCZG0IBQJmUgJfMQQCZG4IBQJmUgJfMgQCZlMJAQJkbAMFAmRtBQJkbgAABAJmbAgFAmZTAl8xBAJkYwgFAmZTAl8yBAJmbQkBAmRwAgUCZGsFAmRjAwkAAAIFAmZtBQJmbQkAlAoCCQDOCAIJAM4IAgkAzggCBQJjWQUCZkoFAmZBBQJmbAUCZEsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBA2dldAAEAmNKCQECZEIBBQJkQwQCZlQIBQJjSgJfMQQCY3EIBQJjSgJfMgQCZEUIBQJjSgJfMwQCYlkIBQJjSgJfNAQCY3IIBQJjSgJfNQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZGsFAmRrBAJmVQkA/AcEBQJhTAIEYnVybgkAzAgCBQJkRQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiWQUCZEUFA25pbAMJAAACBQJmVQUCZlUEAmZWCQECZGwDCQEBLQEFAmZUCQEBLQEFAmNxAAAEAmZsCAUCZlYCXzEEAmRjCAUCZlYCXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEJZ2V0Tm9MZXNzAgJmVwJmWAQCY0oJAQJkQgEFAmRDBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJkRQgFAmNKAl8zBAJiWQgFAmNKAl80BAJjcggFAmNKAl81AwkAZgIFAmZXBQJjcAkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCY3ACAyA8IAkApAMBBQJmVwMJAGYCBQJmWAUCY3EJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJjcQIDIDwgCQCkAwEFAmZYBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkawUCZGsEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZVBQJmVQQCZlkJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmwIBQJmWQJfMQQCZGMIBQJmWQJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQ11bnN0YWtlQW5kR2V0AQJkSwQCZloDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmWgUCZloEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJkawUCZGsEAmZQCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCY2EJAMwIAgUCZEsFA25pbAUDbmlsAwkAAAIFAmZQBQJmUAQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCY2EFAmRLCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNyCAUCY0oDXzEwBAJnYQMDCQECYU4ABgkAAAIFAmNkBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJjZAYDCQAAAgUCZ2EFAmdhBAJmVQkA/AcEBQJhTAIEYnVybgkAzAgCBQJkSwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCZEsFA25pbAMJAAACBQJmVQUCZlUEAmdiCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZsCAUCZ2ICXzEEAmRjCAUCZ2ICXzIEAmZtCQECZHACBQJkawUCZGMDCQAAAgUCZm0FAmZtCQDOCAIFAmNyBQJmbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwETdW5zdGFrZUFuZEdldE5vTGVzcwMCZk8CZ2MCZlgEAmZGAwkBAmFOAAYJAAACBQJiYQUBbgQCZXkJAMwIAgMJAQEhAQUCZkYGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZEMIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJleQUCZXkEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmRrBQJkawQCZlAJAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiYgkAzAgCBQJmTwUDbmlsBQNuaWwDCQAAAgUCZlAFAmZQBAJjSgkBAmJXBAkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAkA2AQBBQJiYgUCZk8IBQJkQwZjYWxsZXIEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNyCAUCY0oDXzEwBAJnZAkAzAgCAwkAZwIFAmNwBQJnYwYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnYwUDbmlsAgAJAMwIAgMJAGcCBQJjcQUCZlgGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmWAUDbmlsAgAFA25pbAMJAAACBQJnZAUCZ2QEAmZVCQD8BwQFAmFMAgRidXJuCQDMCAIFAmZPBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJiBQJmTwUDbmlsAwkAAAIFAmZVBQJmVQQCZ2UJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmwIBQJnZQJfMQQCZGMIBQJnZQJfMgQCZm0JAQJkcAIFAmRrBQJkYwMJAAACBQJmbQUCZm0JAM4IAgUCY3IFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQhhY3RpdmF0ZQICZ2YCZ2cDCQECIT0CCQClCAEIBQJkQwZjYWxsZXIJAKUIAQUCYUwJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMABQJnZgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJnZwUDbmlsAgdzdWNjZXNzAmRDAQpyZWZyZXNoS0xwAAQCZ2gJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWkAAAQCZ2kDCQBnAgkAZQIFBmhlaWdodAUCZ2gFAmFsBQR1bml0CQECYUkBCQC5CQIJAMwIAgkApAMBBQJhbAkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCZ2kFAmdpBAJkdwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWgCATAJAQJhSwECC2ludmFsaWQga0xwBAJnagkBAmRsAwAAAAAAAAQCZ2sIBQJnagJfMQQCZGMIBQJnagJfMgQCZG8DCQECIT0CBQJkdwUCZGMFAmdrCQECYUkBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZG8JAKYDAQUCZGMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmFQAAJkQwEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYnoJAJQKAgUDbmlsCQECYnkBBQJiegJkQwEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCYkgCYkkCYk0EAmJWCQECYkwDBQJiSAUCYkkFAmJNCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCYlYAAAkAzAgCCQCmAwEJAJEDAgUCYlYAAQkAzAgCCQCmAwEJAJEDAgUCYlYAAgUDbmlsAmRDARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZEMBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUgBSQkAlAoCBQNuaWwJAQFHAgkApwMBBQFIBQFJAmRDAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJCAmJDCQCUCgIFA25pbAkApgMBCQECYkECCQCnAwEFAmJCCQCnAwEFAmJDAmRDASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCYlgCY3QCY3UCY3YCY3cCY3gBWgJjeQJjegkAlAoCBQNuaWwJAQJjcwkFAmJYBQJjdAUCY3UFAmN2BQJjdwUCY3gFAVoFAmN5BQJjegJkQwEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmJYAmJZAmJaAVoEAmNKCQECYlcEBQJiWAUCYlkFAmJaCQERQGV4dHJOYXRpdmUoMTA2MikBBQFaCQCUCgIFA25pbAkAnAoKCAUCY0oCXzEIBQJjSgJfMggFAmNKAl8zCAUCY0oCXzQIBQJjSgJfNQgFAmNKAl82CAUCY0oCXzcJAKYDAQgFAmNKAl84CAUCY0oCXzkIBQJjSgNfMTACZEMBDXN0YXRzUkVBRE9OTFkABAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCZ2wJAJEDAgUCYk4FAXIEAmdtCQCRAwIFAmJOBQFzBAJjQwkAkQMCBQJiTgUBdgQCY0QJAJEDAgUCYk4FAXcEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmduCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNhCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNhAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ28JAQJieQEFAmdsBAJncAkBAmJ5AQUCZ20EAmdxAwkAAAIFAmduAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmJMAwUCZ28FAmdwBQJnbgQCY2sAAAQCZ3IJAQFHAgkAkQMCBQJncQABBQFiBAJncwkBAUcCCQCRAwIFAmdxAAIFAWIEAmd0CQEFdmFsdWUBCQCaCAIFAmFMCQECYXcBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJnbwkAzAgCCQCkAwEFAmdwCQDMCAIJAKQDAQUCZ24JAMwIAgkApAMBBQJjawkAzAgCCQCkAwEFAmdyCQDMCAIJAKQDAQUCZ3MJAMwIAgkApAMBBQJndAUDbmlsBQFqAmRDASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECY3UEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJjQQkAkQMCBQJiTgUBcgQCY2IJANkEAQUCY0EEAmNCCQCRAwIFAmJOBQFzBAJjYwkA2QQBBQJjQgQCYk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdAQCYlAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCY2QJAJEDAgUCYk4FAXAEAmduCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNhCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmNhAg4g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", "chainId": 84, "height": 2371679, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 53UJxv7gz7fia3mZZLLdbx3mihKAdhkvDTkEkhGc7idx Next: Gr7tUMPNMQhzqJjcJFAPCCqVqEY5CbGgzL8u6bSYZPbw Diff:
OldNewDifferences
10341034 let Z = dC.caller
10351035 let aa = dC.transactionId
10361036 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1037- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1038- if ((fP == fP))
1037+ if ((dk == dk))
10391038 then {
1040- let fQ = ew(ex, fO, bb, Z, aa)
1041- if ((fQ == fQ))
1039+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1040+ if ((fP == fP))
10421041 then {
1043- let ez = fQ._5
1044- let fw = fQ._4
1045- let dQ = fQ._3
1046- let cY = fQ._2
1047- let fH = fQ._1
1048- let dK = if (if ((fp > 0))
1049- then (fp > fH)
1050- else false)
1051- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1052- else fH
1053- let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1054- if ((fI == fI))
1042+ let fQ = ew(ex, fO, bb, Z, aa)
1043+ if ((fQ == fQ))
10551044 then {
1056- let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1057- let fA = if ((dQ > 0))
1058- then [ScriptTransfer(aM, dQ, ex)]
1059- else nil
1060- let fR = {
1061- let fL = if ((this == aM))
1062- then 0
1063- else dQ
1064- if (ez)
1065- then $Tuple2(-((dK + fL)), 0)
1066- else $Tuple2(0, -((dK + fL)))
1067- }
1068- let dm = fR._1
1069- let dn = fR._2
1070- let fS = dl(dm, dn, 0)
1071- let fl = fS._1
1072- let dc = fS._2
1073- let fm = dp(dk, dc)
1074- if ((fm == fm))
1075- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1045+ let ez = fQ._5
1046+ let fw = fQ._4
1047+ let dQ = fQ._3
1048+ let cY = fQ._2
1049+ let fH = fQ._1
1050+ let dK = if (if ((fp > 0))
1051+ then (fp > fH)
1052+ else false)
1053+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1054+ else fH
1055+ let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1056+ if ((fI == fI))
1057+ then {
1058+ let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1059+ let fA = if ((dQ > 0))
1060+ then [ScriptTransfer(aM, dQ, ex)]
1061+ else nil
1062+ let fR = {
1063+ let fL = if ((this == aM))
1064+ then 0
1065+ else dQ
1066+ if (ez)
1067+ then $Tuple2(-((dK + fL)), 0)
1068+ else $Tuple2(0, -((dK + fL)))
1069+ }
1070+ let dm = fR._1
1071+ let dn = fR._2
1072+ let fS = dl(dm, dn, 0)
1073+ let fl = fS._1
1074+ let dc = fS._2
1075+ let fm = dp(dk, dc)
1076+ if ((fm == fm))
1077+ then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1078+ else throw("Strict value is not equal to itself.")
1079+ }
10761080 else throw("Strict value is not equal to itself.")
10771081 }
10781082 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
7171 func L (M,N,O) = fraction(M, N, O)
7272
7373
7474 func P (H) = if ((0 > H))
7575 then -(H)
7676 else H
7777
7878
7979 func Q (H) = if ((e > H))
8080 then -(H)
8181 else H
8282
8383
8484 func R () = "%s__factoryContract"
8585
8686
8787 func S () = "%s__managerPublicKey"
8888
8989
9090 func T () = "%s__pendingManagerPublicKey"
9191
9292
9393 func U () = "%s%s__price__last"
9494
9595
9696 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9797
9898
9999 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
100100
101101
102102 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
103103
104104
105105 func ac () = "%s__amountAsset"
106106
107107
108108 func ad () = "%s__priceAsset"
109109
110110
111111 let ae = "%s__fee"
112112
113113 let af = fraction(10, b, 10000)
114114
115115 let ag = valueOrElse(getInteger(this, ae), af)
116116
117117 let ah = makeString(["%s", "kLp"], j)
118118
119119 let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120120
121121 let aj = makeString(["%s", "refreshKLpDelay"], j)
122122
123123 let ak = 30
124124
125125 let al = valueOrElse(getInteger(this, aj), ak)
126126
127127 func am () = "%s__factoryConfig"
128128
129129
130130 func an () = "%s%s__matcher__publicKey"
131131
132132
133133 func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
134134
135135
136136 func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
137137
138138
139139 func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
140140
141141
142142 func av () = "%s__shutdown"
143143
144144
145145 func aw (ax) = ("%s%s__poolWeight__" + ax)
146146
147147
148148 func ay () = "%s__allowedLpScriptHash"
149149
150150
151151 let az = "%s__feeCollectorAddress"
152152
153153 func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
154154
155155
156156 func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157157
158158
159159 func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
160160
161161
162162 func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
163163
164164
165165 func aK (aJ) = makeString(["lp.ride:", aJ], " ")
166166
167167
168168 let aL = addressFromStringValue(aE(this, R()))
169169
170170 let aM = addressFromStringValue(aE(aL, az))
171171
172172 func aN () = valueOrElse(getBoolean(aL, av()), false)
173173
174174
175175 func aO () = fromBase58String(aE(aL, an()))
176176
177177
178178 func aP () = {
179179 let aQ = aE(this, ac())
180180 let aR = aE(this, ad())
181181 let as = aH(aL, at(aR))
182182 let ar = aH(aL, at(aQ))
183183 split(aE(aL, aq(toString(ar), toString(as))), j)
184184 }
185185
186186
187187 func aS (aT) = if ((aT == i))
188188 then unit
189189 else fromBase58String(aT)
190190
191191
192192 func aU (aT) = if ((aT == unit))
193193 then i
194194 else toBase58String(value(aT))
195195
196196
197197 func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
198198
199199
200200 let aX = aV(aP())
201201
202202 let aY = aX
203203
204204 let aZ = aY._1
205205
206206 let ba = aY._2
207207
208208 let bb = aY._3
209209
210210 let bc = aY._4
211211
212212 let bd = aY._5
213213
214214 let be = aY._6
215215
216216 let bf = aY._7
217217
218218 func bg () = split(aE(aL, am()), j)
219219
220220
221221 let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
222222
223223 let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
224224
225225 func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
226226
227227
228228 func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
229229
230230
231231 func by (bz) = if ((bz == "WAVES"))
232232 then wavesBalance(this).available
233233 else assetBalance(this, fromBase58String(bz))
234234
235235
236236 func bA (bB,bC) = fraction(bB, d, bC)
237237
238238
239239 func bD (bB,bC,K) = fraction(bB, d, bC, K)
240240
241241
242242 func bE (bF,bG,bH,bI) = {
243243 let bJ = D(bH, bF)
244244 let bK = D(bI, bG)
245245 bA(bK, bJ)
246246 }
247247
248248
249249 func bL (bH,bI,bM) = {
250250 let bN = aP()
251251 let bO = parseIntValue(bN[t])
252252 let bP = parseIntValue(bN[u])
253253 let bQ = bE(bO, bP, bH, bI)
254254 let bC = D(bH, bO)
255255 let bB = D(bI, bP)
256256 let bR = D(bM, b)
257257 let bS = bA(bC, bR)
258258 let bT = bA(bB, bR)
259259 [bQ, bS, bT]
260260 }
261261
262262
263263 func bU (bH,bI,bM) = {
264264 let bV = bL(bH, bI, bM)
265265 [G(bV[0], b), G(bV[1], b), G(bV[2], b)]
266266 }
267267
268268
269269 func bW (bX,bY,bZ,Z) = {
270270 let bN = aP()
271271 let ca = bN[q]
272272 let cb = bN[r]
273273 let cc = bN[s]
274274 let bF = parseIntValue(bN[t])
275275 let bG = parseIntValue(bN[u])
276276 let cd = bN[p]
277277 let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278278 if ((ca != bY))
279279 then throw("Invalid asset passed.")
280280 else {
281281 let cf = by(cb)
282282 let cg = D(cf, bF)
283283 let ch = by(cc)
284284 let ci = D(ch, bG)
285285 let cj = bA(ci, cg)
286286 let ck = G(cj, b)
287287 let cl = D(bZ, b)
288288 let cm = D(ce, b)
289289 let cn = fraction(cg, cl, cm)
290290 let co = fraction(ci, cl, cm)
291291 let cp = J(cn, bF, FLOOR)
292292 let cq = J(co, bG, FLOOR)
293293 let cr = if ((bX == ""))
294294 then nil
295295 else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
296296 then unit
297297 else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
298298 then unit
299299 else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300300 $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
301301 }
302302 }
303303
304304
305305 func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306306 let bN = aP()
307307 let ca = fromBase58String(bN[q])
308308 let cA = bN[r]
309309 let cB = bN[s]
310310 let cC = bN[v]
311311 let cD = bN[w]
312312 let bO = parseIntValue(bN[t])
313313 let bP = parseIntValue(bN[u])
314314 let cd = bN[p]
315315 let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316316 let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317317 let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318318 if (if ((cA != cE))
319319 then true
320320 else (cB != cF))
321321 then throw("Invalid amt or price asset passed.")
322322 else {
323323 let cf = if (cy)
324324 then by(cA)
325325 else (by(cA) - cu)
326326 let ch = if (cy)
327327 then by(cB)
328328 else (by(cB) - cw)
329329 let cG = D(cu, bO)
330330 let cH = D(cw, bP)
331331 let cI = bA(cH, cG)
332332 let cg = D(cf, bO)
333333 let ci = D(ch, bP)
334334 let cJ = if ((ce == 0))
335335 then {
336336 let cj = e
337337 let cK = e
338338 let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339339 $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
340340 }
341341 else {
342342 let cj = bA(ci, cg)
343343 let cK = fraction(Q((cj - cI)), d, cj)
344344 let cL = D(ct, b)
345345 if (if ((cj != e))
346346 then (cK > cL)
347347 else false)
348348 then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
349349 else {
350350 let cm = D(ce, b)
351351 let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352352 let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353353 let cO = if ((cM > cH))
354354 then $Tuple2(cN, cH)
355355 else $Tuple2(cG, cM)
356356 let cP = cO._1
357357 let cQ = cO._2
358358 let bR = fraction(cm, cQ, ci, FLOOR)
359359 $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
360360 }
361361 }
362362 let cR = cJ._1
363363 let cS = cJ._2
364364 let cT = cJ._3
365365 let ck = G(cJ._4, b)
366366 let cU = G(cJ._5, b)
367367 if ((0 >= cR))
368368 then throw("Invalid calculations. LP calculated is less than zero.")
369369 else {
370370 let cV = if (!(cz))
371371 then 0
372372 else cR
373373 let cW = (cu - cS)
374374 let cX = (cw - cT)
375375 let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376376 $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
377377 }
378378 }
379379 }
380380
381381
382382 func cZ (da,db,ce) = {
383383 let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384384 if ((ce == f))
385385 then f
386386 else dc
387387 }
388388
389389
390390 func dd (de,df,dg) = {
391391 let dh = (toBigInt(by(aU(bc))) - de)
392392 let di = (toBigInt(by(aU(bd))) - df)
393393 let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394394 let dk = cZ(dh, di, dj)
395395 dk
396396 }
397397
398398
399399 func dl (dm,dn,dg) = {
400400 let dh = (by(aU(bc)) + dm)
401401 let di = (by(aU(bd)) + dn)
402402 let dj = (value(assetInfo(bb)).quantity + dg)
403403 let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404404 let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405405 $Tuple2(do, dc)
406406 }
407407
408408
409409 func dp (dq,dc) = if ((dc >= dq))
410410 then true
411411 else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412412
413413
414414 func dr (ds) = {
415415 let dt = ds.amount
416416 let du = fraction(ds.amount, ds.price, b, FLOOR)
417417 let dv = if ((ds.orderType == Buy))
418418 then $Tuple2(dt, -(du))
419419 else $Tuple2(-(dt), du)
420420 let dm = dv._1
421421 let dn = dv._2
422422 if (if (if (aN())
423423 then true
424424 else (ba == m))
425425 then true
426426 else (ba == n))
427427 then throw("Exchange operations disabled")
428428 else if (if ((ds.assetPair.amountAsset != bc))
429429 then true
430430 else (ds.assetPair.priceAsset != bd))
431431 then throw("Wrong order assets.")
432432 else {
433433 let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434434 let dx = dl(dm, dn, 0)
435435 let dy = dx._1
436436 let dz = dx._2
437437 let dA = (dz >= dw)
438438 dA
439439 }
440440 }
441441
442442
443443 func dB (dC) = if ((size(dC.payments) != 1))
444444 then throw("exactly 1 payment is expected")
445445 else {
446446 let dD = value(dC.payments[0])
447447 let bY = value(dD.assetId)
448448 let dE = dD.amount
449449 let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450450 let cp = cJ._1
451451 let cq = cJ._2
452452 let cd = parseIntValue(cJ._9)
453453 let cr = cJ._10
454454 if (if (aN())
455455 then true
456456 else (cd == n))
457457 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458458 else $Tuple5(cp, cq, dE, bY, cr)
459459 }
460460
461461
462462 func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
463463 then throw("exactly 2 payments are expected")
464464 else {
465465 let dG = value(dC.payments[0])
466466 let dH = value(dC.payments[1])
467467 let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468468 let cd = parseIntValue(dI._8)
469469 if (if (if (aN())
470470 then true
471471 else (cd == l))
472472 then true
473473 else (cd == n))
474474 then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475475 else dI
476476 }
477477
478478
479479 func dJ (dK) = {
480480 let dL = invoke(aL, "emit", [dK], nil)
481481 if ((dL == dL))
482482 then {
483483 let dM = {
484484 let dN = dL
485485 if ($isInstanceOf(dN, "Address"))
486486 then {
487487 let dO = dN
488488 invoke(dO, "emit", [dK], nil)
489489 }
490490 else unit
491491 }
492492 if ((dM == dM))
493493 then dK
494494 else throw("Strict value is not equal to itself.")
495495 }
496496 else throw("Strict value is not equal to itself.")
497497 }
498498
499499
500500 func dP (dK) = {
501501 let dQ = fraction(dK, ag, b)
502502 $Tuple2((dK - dQ), dQ)
503503 }
504504
505505
506506 func dR (dS,dT,Z,aa) = {
507507 let dU = (aa == unit)
508508 let dV = by(aU(bc))
509509 let dW = by(aU(bd))
510510 let dX = if ((dT == bc))
511511 then true
512512 else if ((dT == bd))
513513 then false
514514 else aI("invalid asset")
515515 let dY = if (dU)
516516 then $Tuple2(dV, dW)
517517 else if (dX)
518518 then $Tuple2((dV - dS), dW)
519519 else $Tuple2(dV, (dW - dS))
520520 let dZ = dY._1
521521 let ea = dY._2
522522 let eb = if (dX)
523523 then $Tuple2(dS, 0)
524524 else $Tuple2(0, dS)
525525 let ec = eb._1
526526 let ed = eb._2
527527 let dt = dP(ec)._1
528528 let du = dP(ed)._1
529529 let ee = dP(dS)
530530 let ef = ee._1
531531 let dQ = ee._2
532532 let eg = (dZ + dt)
533533 let eh = (ea + du)
534534 let ei = bA(D(eh, bf), D(eg, be))
535535 let ej = G(ei, b)
536536 let ek = if (dX)
537537 then dZ
538538 else ea
539539 let el = toBigInt(ek)
540540 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541541 let en = if ((em > f))
542542 then true
543543 else aI("initial deposit requires all coins")
544544 if ((en == en))
545545 then {
546546 let eo = toBigInt(ef)
547547 let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
548548 let cY = if (dU)
549549 then nil
550550 else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551551 let eq = bA(D(ea, bf), D(dZ, be))
552552 let er = G(eq, b)
553553 let es = {
554554 let et = if (dX)
555555 then $Tuple2(ec, dZ)
556556 else $Tuple2(ed, ea)
557557 let dK = et._1
558558 let eu = et._2
559559 let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560560 fraction((ep - ev), b, ev)
561561 }
562562 $Tuple5(ep, cY, dQ, es, dX)
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568568 func ew (ex,ef,dT,Z,aa) = {
569569 let dU = (aa == unit)
570570 let bN = aP()
571571 let bO = parseIntValue(bN[t])
572572 let bP = parseIntValue(bN[u])
573573 let ey = [if ((dT == bb))
574574 then true
575575 else aI("invalid lp asset")]
576576 if ((ey == ey))
577577 then {
578578 let ez = if ((ex == bc))
579579 then true
580580 else if ((ex == bd))
581581 then false
582582 else aI("invalid asset")
583583 let eA = if (ez)
584584 then toBigInt(by(aU(bc)))
585585 else toBigInt(by(aU(bd)))
586586 let eB = if (ez)
587587 then bO
588588 else bP
589589 let eC = by(aU(bc))
590590 let eD = by(aU(bd))
591591 let eE = if (ez)
592592 then eC
593593 else eD
594594 let eF = toBigInt(eE)
595595 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
596596 let eG = toBigInt(ef)
597597 let eH = max([0, toInt(((eA * (d - pow((d - ((eG * d) / em)), 18, h, 0, 18, DOWN))) / d))])
598598 let eI = dP(eH)
599599 let eJ = eI._1
600600 let dQ = eI._2
601601 let eK = if (ez)
602602 then $Tuple4(eJ, 0, (eC - eH), eD)
603603 else $Tuple4(0, eJ, eC, (eD - eH))
604604 let eL = eK._1
605605 let eM = eK._2
606606 let eN = eK._3
607607 let eO = eK._4
608608 let ei = bA(D(eO, bf), D(eN, be))
609609 let ej = G(ei, b)
610610 let cY = if (dU)
611611 then nil
612612 else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eL, eM, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
613613 let eq = bA(D(eD, bf), D(eC, be))
614614 let er = G(eq, b)
615615 let es = {
616616 let eP = (toInt(fraction(eA, eG, em)) * 2)
617617 fraction((eJ - eP), b, eP)
618618 }
619619 $Tuple5(eJ, cY, dQ, es, ez)
620620 }
621621 else throw("Strict value is not equal to itself.")
622622 }
623623
624624
625625 func eQ () = {
626626 let dN = getString(S())
627627 if ($isInstanceOf(dN, "String"))
628628 then {
629629 let eR = dN
630630 fromBase58String(eR)
631631 }
632632 else if ($isInstanceOf(dN, "Unit"))
633633 then unit
634634 else throw("Match error")
635635 }
636636
637637
638638 func eS () = {
639639 let dN = getString(T())
640640 if ($isInstanceOf(dN, "String"))
641641 then {
642642 let eR = dN
643643 fromBase58String(eR)
644644 }
645645 else if ($isInstanceOf(dN, "Unit"))
646646 then unit
647647 else throw("Match error")
648648 }
649649
650650
651651 func eT (dC) = {
652652 let dN = eQ()
653653 if ($isInstanceOf(dN, "ByteVector"))
654654 then {
655655 let eU = dN
656656 (dC.callerPublicKey == eU)
657657 }
658658 else if ($isInstanceOf(dN, "Unit"))
659659 then (dC.caller == this)
660660 else throw("Match error")
661661 }
662662
663663
664664 func eV (dC) = {
665665 let eW = throw("Permission denied")
666666 let dN = eQ()
667667 if ($isInstanceOf(dN, "ByteVector"))
668668 then {
669669 let eU = dN
670670 if ((dC.callerPublicKey == eU))
671671 then true
672672 else eW
673673 }
674674 else if ($isInstanceOf(dN, "Unit"))
675675 then if ((dC.caller == this))
676676 then true
677677 else eW
678678 else throw("Match error")
679679 }
680680
681681
682682 @Callable(dC)
683683 func setManager (eX) = {
684684 let eY = eV(dC)
685685 if ((eY == eY))
686686 then {
687687 let eZ = fromBase58String(eX)
688688 if ((eZ == eZ))
689689 then [StringEntry(T(), eX)]
690690 else throw("Strict value is not equal to itself.")
691691 }
692692 else throw("Strict value is not equal to itself.")
693693 }
694694
695695
696696
697697 @Callable(dC)
698698 func confirmManager () = {
699699 let fa = eS()
700700 let fb = if (isDefined(fa))
701701 then true
702702 else throw("No pending manager")
703703 if ((fb == fb))
704704 then {
705705 let fc = if ((dC.callerPublicKey == value(fa)))
706706 then true
707707 else throw("You are not pending manager")
708708 if ((fc == fc))
709709 then [StringEntry(S(), toBase58String(value(fa))), DeleteEntry(T())]
710710 else throw("Strict value is not equal to itself.")
711711 }
712712 else throw("Strict value is not equal to itself.")
713713 }
714714
715715
716716
717717 @Callable(dC)
718718 func put (ct,fd) = if ((0 > ct))
719719 then throw("Invalid slippageTolerance passed")
720720 else {
721721 let dI = dF(dC, ct, true)
722722 let cV = dI._2
723723 let ca = dI._7
724724 let cr = dI._9
725725 let cW = dI._10
726726 let cX = dI._11
727727 let fe = dI._12
728728 let ff = dI._13
729729 let dG = toBigInt(value(dC.payments[0]).amount)
730730 let dH = toBigInt(value(dC.payments[1]).amount)
731731 let dk = dd(dG, dH, toBigInt(0))
732732 if ((dk == dk))
733733 then {
734734 let dL = invoke(aL, "emit", [cV], nil)
735735 if ((dL == dL))
736736 then {
737737 let dM = {
738738 let dN = dL
739739 if ($isInstanceOf(dN, "Address"))
740740 then {
741741 let dO = dN
742742 invoke(dO, "emit", [cV], nil)
743743 }
744744 else unit
745745 }
746746 if ((dM == dM))
747747 then {
748748 let fg = if ((cW > 0))
749749 then invoke(bi, "put", nil, [AttachedPayment(fe, cW)])
750750 else nil
751751 if ((fg == fg))
752752 then {
753753 let fh = if ((cX > 0))
754754 then invoke(bi, "put", nil, [AttachedPayment(ff, cX)])
755755 else nil
756756 if ((fh == fh))
757757 then {
758758 let fi = if (fd)
759759 then {
760760 let fj = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
761761 if ((fj == fj))
762762 then nil
763763 else throw("Strict value is not equal to itself.")
764764 }
765765 else [ScriptTransfer(dC.caller, cV, ca)]
766766 let fk = dl(0, 0, 0)
767767 if ((fk == fk))
768768 then {
769769 let dc = fk._2
770770 let fl = fk._1
771771 let fm = dp(dk, dc)
772772 if ((fm == fm))
773773 then ((cr ++ fi) ++ fl)
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782 else throw("Strict value is not equal to itself.")
783783 }
784784 else throw("Strict value is not equal to itself.")
785785 }
786786 else throw("Strict value is not equal to itself.")
787787 }
788788
789789
790790
791791 @Callable(dC)
792792 func putForFree (fn) = if ((0 > fn))
793793 then throw("Invalid value passed")
794794 else {
795795 let dI = dF(dC, fn, false)
796796 let cr = dI._9
797797 let dG = toBigInt(value(dC.payments[0]).amount)
798798 let dH = toBigInt(value(dC.payments[1]).amount)
799799 let dk = dd(dG, dH, toBigInt(0))
800800 if ((dk == dk))
801801 then {
802802 let fo = dl(0, 0, 0)
803803 let fl = fo._1
804804 let dc = fo._2
805805 let fm = dp(dk, dc)
806806 if ((fm == fm))
807807 then (cr ++ fl)
808808 else throw("Strict value is not equal to itself.")
809809 }
810810 else throw("Strict value is not equal to itself.")
811811 }
812812
813813
814814
815815 @Callable(dC)
816816 func putOneTkn (fp,fq) = {
817817 let fr = {
818818 let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
819819 if ($isInstanceOf(fs, "Boolean"))
820820 then fs
821821 else throw(($getType(fs) + " couldn't be cast to Boolean"))
822822 }
823823 let ft = if (if (if (aN())
824824 then true
825825 else (ba == l))
826826 then true
827827 else (ba == n))
828828 then true
829829 else fr
830830 let ey = [if (if (!(ft))
831831 then true
832832 else eT(dC))
833833 then true
834834 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
835835 then true
836836 else aI("exactly 1 payment are expected")]
837837 if ((ey == ey))
838838 then {
839839 let fu = dC.payments[0]
840840 let dT = fu.assetId
841841 let dS = fu.amount
842842 let dk = if ((dT == bc))
843843 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
844844 else if ((dT == bd))
845845 then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
846846 else aI("payment asset is not supported")
847847 if ((dk == dk))
848848 then {
849849 let Z = dC.caller
850850 let aa = dC.transactionId
851851 let fv = dR(dS, dT, Z, aa)
852852 if ((fv == fv))
853853 then {
854854 let dX = fv._5
855855 let fw = fv._4
856856 let dQ = fv._3
857857 let cY = fv._2
858858 let fx = fv._1
859859 let fy = if (if ((fp > 0))
860860 then (fp > fx)
861861 else false)
862862 then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
863863 else fx
864864 let dL = dJ(fy)
865865 if ((dL == dL))
866866 then {
867867 let fi = if (fq)
868868 then {
869869 let fz = invoke(bh, "stake", nil, [AttachedPayment(bb, fy)])
870870 if ((fz == fz))
871871 then nil
872872 else throw("Strict value is not equal to itself.")
873873 }
874874 else [ScriptTransfer(dC.caller, fy, bb)]
875875 let fA = if ((dQ > 0))
876876 then [ScriptTransfer(aM, dQ, dT)]
877877 else nil
878878 let fB = if ((this == aM))
879879 then $Tuple2(0, 0)
880880 else if (dX)
881881 then $Tuple2(-(dQ), 0)
882882 else $Tuple2(0, -(dQ))
883883 let dm = fB._1
884884 let dn = fB._2
885885 let fC = dl(dm, dn, 0)
886886 let fl = fC._1
887887 let dc = fC._2
888888 let dw = value(getString(ah))
889889 let fm = dp(dk, dc)
890890 if ((fm == fm))
891891 then $Tuple2((((cY ++ fi) ++ fA) ++ fl), fy)
892892 else throw("Strict value is not equal to itself.")
893893 }
894894 else throw("Strict value is not equal to itself.")
895895 }
896896 else throw("Strict value is not equal to itself.")
897897 }
898898 else throw("Strict value is not equal to itself.")
899899 }
900900 else throw("Strict value is not equal to itself.")
901901 }
902902
903903
904904
905905 @Callable(dC)
906906 func putOneTknREADONLY (dT,dS) = {
907907 let fD = dR(dS, aS(dT), unit, unit)
908908 let fx = fD._1
909909 let cY = fD._2
910910 let dQ = fD._3
911911 let fw = fD._4
912912 let dX = fD._5
913913 $Tuple2(nil, $Tuple3(fx, dQ, fw))
914914 }
915915
916916
917917
918918 @Callable(dC)
919919 func getOneTkn (fE,fp) = {
920920 let fr = {
921921 let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
922922 if ($isInstanceOf(fs, "Boolean"))
923923 then fs
924924 else throw(($getType(fs) + " couldn't be cast to Boolean"))
925925 }
926926 let fF = if (if (aN())
927927 then true
928928 else (ba == n))
929929 then true
930930 else fr
931931 let ey = [if (if (!(fF))
932932 then true
933933 else eT(dC))
934934 then true
935935 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
936936 then true
937937 else aI("exactly 1 payment are expected")]
938938 if ((ey == ey))
939939 then {
940940 let ex = aS(fE)
941941 let fu = dC.payments[0]
942942 let dT = fu.assetId
943943 let ef = fu.amount
944944 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
945945 if ((dk == dk))
946946 then {
947947 let Z = dC.caller
948948 let aa = dC.transactionId
949949 let fG = ew(ex, ef, dT, Z, aa)
950950 if ((fG == fG))
951951 then {
952952 let ez = fG._5
953953 let fw = fG._4
954954 let dQ = fG._3
955955 let cY = fG._2
956956 let fH = fG._1
957957 let dK = if (if ((fp > 0))
958958 then (fp > fH)
959959 else false)
960960 then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
961961 else fH
962962 let fI = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
963963 if ((fI == fI))
964964 then {
965965 let fJ = [ScriptTransfer(Z, dK, ex)]
966966 let fA = if ((dQ > 0))
967967 then [ScriptTransfer(aM, dQ, ex)]
968968 else nil
969969 let fK = {
970970 let fL = if ((this == aM))
971971 then 0
972972 else dQ
973973 if (ez)
974974 then $Tuple2(-((dK + fL)), 0)
975975 else $Tuple2(0, -((dK + fL)))
976976 }
977977 let dm = fK._1
978978 let dn = fK._2
979979 let fM = dl(dm, dn, 0)
980980 let fl = fM._1
981981 let dc = fM._2
982982 let fm = dp(dk, dc)
983983 if ((fm == fm))
984984 then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
985985 else throw("Strict value is not equal to itself.")
986986 }
987987 else throw("Strict value is not equal to itself.")
988988 }
989989 else throw("Strict value is not equal to itself.")
990990 }
991991 else throw("Strict value is not equal to itself.")
992992 }
993993 else throw("Strict value is not equal to itself.")
994994 }
995995
996996
997997
998998 @Callable(dC)
999999 func getOneTknREADONLY (ex,ef) = {
10001000 let fN = ew(aS(ex), ef, bb, unit, unit)
10011001 let fH = fN._1
10021002 let cY = fN._2
10031003 let dQ = fN._3
10041004 let fw = fN._4
10051005 let ez = fN._5
10061006 $Tuple2(nil, $Tuple3(fH, dQ, fw))
10071007 }
10081008
10091009
10101010
10111011 @Callable(dC)
10121012 func unstakeAndGetOneTkn (fO,fE,fp) = {
10131013 let fr = {
10141014 let fs = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10151015 if ($isInstanceOf(fs, "Boolean"))
10161016 then fs
10171017 else throw(($getType(fs) + " couldn't be cast to Boolean"))
10181018 }
10191019 let fF = if (if (aN())
10201020 then true
10211021 else (ba == n))
10221022 then true
10231023 else fr
10241024 let ey = [if (if (!(fF))
10251025 then true
10261026 else eT(dC))
10271027 then true
10281028 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10291029 then true
10301030 else aI("no payments are expected")]
10311031 if ((ey == ey))
10321032 then {
10331033 let ex = aS(fE)
10341034 let Z = dC.caller
10351035 let aa = dC.transactionId
10361036 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
1037- let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1038- if ((fP == fP))
1037+ if ((dk == dk))
10391038 then {
1040- let fQ = ew(ex, fO, bb, Z, aa)
1041- if ((fQ == fQ))
1039+ let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
1040+ if ((fP == fP))
10421041 then {
1043- let ez = fQ._5
1044- let fw = fQ._4
1045- let dQ = fQ._3
1046- let cY = fQ._2
1047- let fH = fQ._1
1048- let dK = if (if ((fp > 0))
1049- then (fp > fH)
1050- else false)
1051- then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1052- else fH
1053- let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1054- if ((fI == fI))
1042+ let fQ = ew(ex, fO, bb, Z, aa)
1043+ if ((fQ == fQ))
10551044 then {
1056- let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1057- let fA = if ((dQ > 0))
1058- then [ScriptTransfer(aM, dQ, ex)]
1059- else nil
1060- let fR = {
1061- let fL = if ((this == aM))
1062- then 0
1063- else dQ
1064- if (ez)
1065- then $Tuple2(-((dK + fL)), 0)
1066- else $Tuple2(0, -((dK + fL)))
1067- }
1068- let dm = fR._1
1069- let dn = fR._2
1070- let fS = dl(dm, dn, 0)
1071- let fl = fS._1
1072- let dc = fS._2
1073- let fm = dp(dk, dc)
1074- if ((fm == fm))
1075- then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1045+ let ez = fQ._5
1046+ let fw = fQ._4
1047+ let dQ = fQ._3
1048+ let cY = fQ._2
1049+ let fH = fQ._1
1050+ let dK = if (if ((fp > 0))
1051+ then (fp > fH)
1052+ else false)
1053+ then aI(makeString(["amount to receive is less than ", toString(fp)], ""))
1054+ else fH
1055+ let fI = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
1056+ if ((fI == fI))
1057+ then {
1058+ let fJ = [ScriptTransfer(dC.caller, dK, ex)]
1059+ let fA = if ((dQ > 0))
1060+ then [ScriptTransfer(aM, dQ, ex)]
1061+ else nil
1062+ let fR = {
1063+ let fL = if ((this == aM))
1064+ then 0
1065+ else dQ
1066+ if (ez)
1067+ then $Tuple2(-((dK + fL)), 0)
1068+ else $Tuple2(0, -((dK + fL)))
1069+ }
1070+ let dm = fR._1
1071+ let dn = fR._2
1072+ let fS = dl(dm, dn, 0)
1073+ let fl = fS._1
1074+ let dc = fS._2
1075+ let fm = dp(dk, dc)
1076+ if ((fm == fm))
1077+ then $Tuple2((((cY ++ fJ) ++ fA) ++ fl), dK)
1078+ else throw("Strict value is not equal to itself.")
1079+ }
10761080 else throw("Strict value is not equal to itself.")
10771081 }
10781082 else throw("Strict value is not equal to itself.")
10791083 }
10801084 else throw("Strict value is not equal to itself.")
10811085 }
10821086 else throw("Strict value is not equal to itself.")
10831087 }
10841088 else throw("Strict value is not equal to itself.")
10851089 }
10861090
10871091
10881092
10891093 @Callable(dC)
10901094 func get () = {
10911095 let cJ = dB(dC)
10921096 let fT = cJ._1
10931097 let cq = cJ._2
10941098 let dE = cJ._3
10951099 let bY = cJ._4
10961100 let cr = cJ._5
10971101 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
10981102 if ((dk == dk))
10991103 then {
11001104 let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
11011105 if ((fU == fU))
11021106 then {
11031107 let fV = dl(-(fT), -(cq), 0)
11041108 let fl = fV._1
11051109 let dc = fV._2
11061110 let fm = dp(dk, dc)
11071111 if ((fm == fm))
11081112 then (cr ++ fl)
11091113 else throw("Strict value is not equal to itself.")
11101114 }
11111115 else throw("Strict value is not equal to itself.")
11121116 }
11131117 else throw("Strict value is not equal to itself.")
11141118 }
11151119
11161120
11171121
11181122 @Callable(dC)
11191123 func getNoLess (fW,fX) = {
11201124 let cJ = dB(dC)
11211125 let cp = cJ._1
11221126 let cq = cJ._2
11231127 let dE = cJ._3
11241128 let bY = cJ._4
11251129 let cr = cJ._5
11261130 if ((fW > cp))
11271131 then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fW)))
11281132 else if ((fX > cq))
11291133 then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fX)))
11301134 else {
11311135 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
11321136 if ((dk == dk))
11331137 then {
11341138 let fU = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
11351139 if ((fU == fU))
11361140 then {
11371141 let fY = dl(-(cp), -(cq), 0)
11381142 let fl = fY._1
11391143 let dc = fY._2
11401144 let fm = dp(dk, dc)
11411145 if ((fm == fm))
11421146 then (cr ++ fl)
11431147 else throw("Strict value is not equal to itself.")
11441148 }
11451149 else throw("Strict value is not equal to itself.")
11461150 }
11471151 else throw("Strict value is not equal to itself.")
11481152 }
11491153 }
11501154
11511155
11521156
11531157 @Callable(dC)
11541158 func unstakeAndGet (dK) = {
11551159 let fZ = if ((size(dC.payments) != 0))
11561160 then throw("No payments are expected")
11571161 else true
11581162 if ((fZ == fZ))
11591163 then {
11601164 let bN = aP()
11611165 let ca = fromBase58String(bN[q])
11621166 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
11631167 if ((dk == dk))
11641168 then {
11651169 let fP = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
11661170 if ((fP == fP))
11671171 then {
11681172 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11691173 let cp = cJ._1
11701174 let cq = cJ._2
11711175 let cd = parseIntValue(cJ._9)
11721176 let cr = cJ._10
11731177 let ga = if (if (aN())
11741178 then true
11751179 else (cd == n))
11761180 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11771181 else true
11781182 if ((ga == ga))
11791183 then {
11801184 let fU = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
11811185 if ((fU == fU))
11821186 then {
11831187 let gb = dl(-(cp), -(cq), 0)
11841188 let fl = gb._1
11851189 let dc = gb._2
11861190 let fm = dp(dk, dc)
11871191 if ((fm == fm))
11881192 then (cr ++ fl)
11891193 else throw("Strict value is not equal to itself.")
11901194 }
11911195 else throw("Strict value is not equal to itself.")
11921196 }
11931197 else throw("Strict value is not equal to itself.")
11941198 }
11951199 else throw("Strict value is not equal to itself.")
11961200 }
11971201 else throw("Strict value is not equal to itself.")
11981202 }
11991203 else throw("Strict value is not equal to itself.")
12001204 }
12011205
12021206
12031207
12041208 @Callable(dC)
12051209 func unstakeAndGetNoLess (fO,gc,fX) = {
12061210 let fF = if (aN())
12071211 then true
12081212 else (ba == n)
12091213 let ey = [if (!(fF))
12101214 then true
12111215 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
12121216 then true
12131217 else throw("no payments are expected")]
12141218 if ((ey == ey))
12151219 then {
12161220 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
12171221 if ((dk == dk))
12181222 then {
12191223 let fP = invoke(bh, "unstake", [toBase58String(bb), fO], nil)
12201224 if ((fP == fP))
12211225 then {
12221226 let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fO, dC.caller)
12231227 let cp = cJ._1
12241228 let cq = cJ._2
12251229 let cr = cJ._10
12261230 let gd = [if ((cp >= gc))
12271231 then true
12281232 else throw(makeString(["amount asset amount to receive is less than ", toString(gc)], "")), if ((cq >= fX))
12291233 then true
12301234 else throw(makeString(["price asset amount to receive is less than ", toString(fX)], ""))]
12311235 if ((gd == gd))
12321236 then {
12331237 let fU = invoke(aL, "burn", [fO], [AttachedPayment(bb, fO)])
12341238 if ((fU == fU))
12351239 then {
12361240 let ge = dl(-(cp), -(cq), 0)
12371241 let fl = ge._1
12381242 let dc = ge._2
12391243 let fm = dp(dk, dc)
12401244 if ((fm == fm))
12411245 then (cr ++ fl)
12421246 else throw("Strict value is not equal to itself.")
12431247 }
12441248 else throw("Strict value is not equal to itself.")
12451249 }
12461250 else throw("Strict value is not equal to itself.")
12471251 }
12481252 else throw("Strict value is not equal to itself.")
12491253 }
12501254 else throw("Strict value is not equal to itself.")
12511255 }
12521256 else throw("Strict value is not equal to itself.")
12531257 }
12541258
12551259
12561260
12571261 @Callable(dC)
12581262 func activate (gf,gg) = if ((toString(dC.caller) != toString(aL)))
12591263 then throw("permissions denied")
12601264 else $Tuple2([StringEntry(ac(), gf), StringEntry(ad(), gg)], "success")
12611265
12621266
12631267
12641268 @Callable(dC)
12651269 func refreshKLp () = {
12661270 let gh = valueOrElse(getInteger(ai), 0)
12671271 let gi = if (((height - gh) >= al))
12681272 then unit
12691273 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
12701274 if ((gi == gi))
12711275 then {
12721276 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
12731277 let gj = dl(0, 0, 0)
12741278 let gk = gj._1
12751279 let dc = gj._2
12761280 let do = if ((dw != dc))
12771281 then gk
12781282 else aI("nothing to refresh")
12791283 $Tuple2(do, toString(dc))
12801284 }
12811285 else throw("Strict value is not equal to itself.")
12821286 }
12831287
12841288
12851289
12861290 @Callable(dC)
12871291 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12881292
12891293
12901294
12911295 @Callable(dC)
12921296 func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12931297
12941298
12951299
12961300 @Callable(dC)
12971301 func calcPricesWrapperREADONLY (bH,bI,bM) = {
12981302 let bV = bL(bH, bI, bM)
12991303 $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
13001304 }
13011305
13021306
13031307
13041308 @Callable(dC)
13051309 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
13061310
13071311
13081312
13091313 @Callable(dC)
13101314 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
13111315
13121316
13131317
13141318 @Callable(dC)
13151319 func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
13161320
13171321
13181322
13191323 @Callable(dC)
13201324 func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
13211325
13221326
13231327
13241328 @Callable(dC)
13251329 func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
13261330 let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
13271331 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
13281332 }
13291333
13301334
13311335
13321336 @Callable(dC)
13331337 func statsREADONLY () = {
13341338 let bN = aP()
13351339 let ca = fromBase58String(bN[q])
13361340 let gl = bN[r]
13371341 let gm = bN[s]
13381342 let cC = bN[v]
13391343 let cD = bN[w]
13401344 let bO = parseIntValue(bN[t])
13411345 let bP = parseIntValue(bN[u])
13421346 let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13431347 let go = by(gl)
13441348 let gp = by(gm)
13451349 let gq = if ((gn == 0))
13461350 then [e, e, e]
13471351 else bL(go, gp, gn)
13481352 let ck = 0
13491353 let gr = G(gq[1], b)
13501354 let gs = G(gq[2], b)
13511355 let gt = value(getInteger(aL, aw(toString(this))))
13521356 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(go), toString(gp), toString(gn), toString(ck), toString(gr), toString(gs), toString(gt)], j))
13531357 }
13541358
13551359
13561360
13571361 @Callable(dC)
13581362 func evaluatePutByAmountAssetREADONLY (cu) = {
13591363 let bN = aP()
13601364 let ca = fromBase58String(bN[q])
13611365 let cA = bN[r]
13621366 let cb = fromBase58String(cA)
13631367 let cB = bN[s]
13641368 let cc = fromBase58String(cB)
13651369 let bO = parseIntValue(bN[t])
13661370 let bP = parseIntValue(bN[u])
13671371 let cd = bN[p]
13681372 let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13691373 let go = by(cA)
13701374 let gp = by(cB)
13711375 let bJ = D(go, bO)
13721376 let bK = D(gp, bP)
13731377 let cj = if ((gn == 0))
13741378 then e
13751379 else bA(bK, bJ)
13761380 let cG = D(cu, bO)
13771381 let cH = fraction(cG, cj, d)
13781382 let cw = G(cH, bP)
13791383 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13801384 let cR = dI._1
13811385 let gu = dI._3
13821386 let cf = dI._4
13831387 let ch = dI._5
13841388 let ce = dI._6
13851389 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13861390 }
13871391
13881392
13891393
13901394 @Callable(dC)
13911395 func evaluatePutByPriceAssetREADONLY (cw) = {
13921396 let bN = aP()
13931397 let ca = fromBase58String(bN[q])
13941398 let cA = bN[r]
13951399 let cb = fromBase58String(cA)
13961400 let cB = bN[s]
13971401 let cc = fromBase58String(cB)
13981402 let bO = parseIntValue(bN[t])
13991403 let bP = parseIntValue(bN[u])
14001404 let cd = bN[p]
14011405 let gn = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
14021406 let gv = by(cA)
14031407 let gw = by(cB)
14041408 let gx = D(gv, bO)
14051409 let gy = D(gw, bP)
14061410 let cj = if ((gn == 0))
14071411 then e
14081412 else bA(gy, gx)
14091413 let cH = D(cw, bP)
14101414 let cG = fraction(cH, d, cj)
14111415 let cu = G(cG, bO)
14121416 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
14131417 let cR = dI._1
14141418 let gu = dI._3
14151419 let cf = dI._4
14161420 let ch = dI._5
14171421 let ce = dI._6
14181422 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
14191423 }
14201424
14211425
14221426
14231427 @Callable(dC)
14241428 func evaluateGetREADONLY (gz,gA) = {
14251429 let cJ = bW("", gz, gA, this)
14261430 let cp = cJ._1
14271431 let cq = cJ._2
14281432 let cf = cJ._5
14291433 let ch = cJ._6
14301434 let ce = cJ._7
14311435 let ck = cJ._8
14321436 let cd = parseIntValue(cJ._9)
14331437 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
14341438 }
14351439
14361440
14371441 @Verifier(gB)
14381442 func gC () = {
14391443 let gD = {
14401444 let dN = eQ()
14411445 if ($isInstanceOf(dN, "ByteVector"))
14421446 then {
14431447 let eU = dN
14441448 eU
14451449 }
14461450 else if ($isInstanceOf(dN, "Unit"))
14471451 then gB.senderPublicKey
14481452 else throw("Match error")
14491453 }
14501454 let dN = gB
14511455 if ($isInstanceOf(dN, "Order"))
14521456 then {
14531457 let ds = dN
14541458 let gE = aO()
14551459 let aB = dr(ds)
14561460 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
14571461 let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gE)
14581462 if (if (if (aB)
14591463 then aC
14601464 else false)
14611465 then aD
14621466 else false)
14631467 then true
14641468 else aA(aB, aC, aD)
14651469 }
14661470 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14671471 then {
14681472 let eR = dN
14691473 let gF = blake2b256(value(eR.script))
14701474 let gG = fromBase64String(value(getString(aL, ay())))
14711475 let gH = scriptHash(this)
14721476 if (if ((gG == gF))
14731477 then (gH != gF)
14741478 else false)
14751479 then true
14761480 else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14771481 }
14781482 else sigVerify(gB.bodyBytes, gB.proofs[0], gD)
14791483 }
14801484

github/deemru/w8io/026f985 
167.10 ms