tx · 8pUe4G6CMft4BcS29qBkRwiyCnpsmixyf6P1cZGAWEJD

3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni:  -0.03200000 Waves

2023.01.10 13:41 [2398740] smart account 3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni > SELF 0.00000000 Waves

{ "type": 13, "id": "8pUe4G6CMft4BcS29qBkRwiyCnpsmixyf6P1cZGAWEJD", "fee": 3200000, "feeAssetId": null, "timestamp": 1673347328860, "version": 1, "sender": "3MtP3m8hWMxYcyDxXB6n299KrsLLyT8ehni", "senderPublicKey": "BRyVaCURUMe7ssUbXucteig1g44bGwWirJQzugKahUQ1", "proofs": [ "LgzsexWiSRgwnUaNjFgFamdeDqZ2utXHKHJeKw5dM1n5sBm5sVcp8jUtM8g7uvtMR5RVgFG2gp2Uj6gN7cFTTeq" ], "script": "base64:BgKmIggCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCCIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiCnNsaXBwYWdlNEQiC3dhdmVzU3RyaW5nIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhJpZHhGYWN0b3J5UmVzdENudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCICZjEiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0IgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIDdG9lIgNvclYiBnNlbmRyViIGbWF0Y2hWIgNzdHIiByRtYXRjaDAiBnZhbFN0ciIEc3RyZiIEYWRkciIDa2V5IgRpbnRmIgh0aHJvd0VyciIDbXNnIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNjkwOTcwOTUiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIDZmVlIglmZWVBbW91bnQiA2VnbyIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCILdXNlckFkZHJlc3MiBGxwSWQiBGFtSWQiBHBySWQiBWFtRGNtIgVwckRjbSIDc3RzIgdscEVtaXNzIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiCmxwRW1pc3NYMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIDZXBvIgdpbkFtQW10IgZpbkFtSWQiB2luUHJBbXQiBmluUHJJZCIGaXNFdmFsIgZlbWl0THAiCmlzT25lQXNzZXQiEHZhbGlkYXRlU2xpcHBhZ2UiBnBtdEFtdCIFcG10SWQiB2FtSWRTdHIiB3BySWRTdHIiCWluQW1JZFN0ciIJaW5QcklkU3RyIgZhbXREY20iCHByaWNlRGNtIgRscEVtIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgFyIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAxNzU2MjE3OTA3Igp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIDbW9hIgVvcmRlciIHYW10QXNJZCIGcHJBc0lkIg9hY2NBbXRBc0JhbGFuY2UiDmFjY1ByQXNCYWxhbmNlIgpvckFtdEFzc2V0IgpvckFtdEFzU3RyIglvclByQXNzZXQiCW9yUHJBc1N0ciIKb3JkZXJQcmljZSIOY2FzdE9yZGVyUHJpY2UiEWlzT3JkZXJQcmljZVZhbGlkIgJjZyIBaSIDcG10IgJjcCIGY2FsbGVyIgdhbUFzUG10IgdwckFzUG10IgRnZXREIgJ4cCIBbiIDeHAwIgN4cDEiCmFQcmVjaXNpb24iAWEiAXMiA2FubiILeHAwX3hwMV9uX24iEGFubl9zX2FQcmVjaXNpb24iDmFubl9hUHJlY2lzaW9uIgJuMSIEY2FsYyIDYWNjIgNjdXIiDSR0MDIyNDU5MjI0NzkiAWQiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIgNhcnIiDSR0MDIyOTAwMjI5NDciAiRsIgIkcyIFJGFjYzAiBSRmMF8xIgIkYSICJGkiBSRmMF8yIgVnZXRZRCIBRCIBeCIBYyIBYiINJHQwMjM0NDcyMzQ2NyIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMzc3NDIzODIxIg1jYWxjUHV0T25lVGtuIglwbXRBbXRSYXciC3dpdGhUYWtlRmVlIg9scEFzc2V0RW1pc3Npb24iDWNoZWNoRW1pc3Npb24iDSR0MDI0NjA0MjUwNjYiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNTA3MjI1MjQ4IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI1MjUyMjU1MDYiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDI3NTA4Mjc2MTkiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMjc4MDkyODExNiIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIgFtIgJwbSICcGQiCWlzTWFuYWdlciICcGsiAm1tIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSICY20iA2hwbSIDY3BtIgRzbGlwIglhdXRvU3Rha2UiB2ZhY3RDZmciC3N0YWtpbmdDbnRyIghzbGlwQ250ciIBZSIJbHBBc3NldElkIgJlbCIGbGVnYWN5IgJzYSICc3AiCGxwVHJuc2ZyIgJzcyIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiBmNoZWNrcyINJHQwMzM0NzgzMzYzNiIHZXN0aW1MUCIHbWF4U2xwZyIGZXN0UHV0IglvdXRBbXRBbXQiDWlzR2V0RGlzYWJsZWQiDSR0MDM2MjU4MzY0MTMiDWxwQXNzZXRBbW91bnQiCmxwRW1pc3Npb24iBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDM3MjAzMzcyNTgiDSR0MDM3NjAzMzc3MTgiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQxNTU2NDE3NDQiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0MjAwMzQyMTA2Ig0kdDA0MjM4NTQyNDg5IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2htAAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBCQBlAgUBYQkAaQIJAGgCBQFhAAEFAWEAAWkCBVdBVkVTAAFqAgMxMDAAAWsCATEAAWwCAl9fAAFtAgAAAW4AAQABbwACAAFwAAMAAXEABAABcgABAAFzAAIAAXQAAwABdQAEAAF2AAUAAXcABgABeAAHAAF5AAgAAXoACQABQQABAAFCAAYAAUMABwABRAAKAAFFCQBrAwAKBQFhAJBOAQFGAgFHAUgJALwCAwkAtgIBBQFHBQFjCQC2AgEFAUgBAUkCAUoBSwkAoAMBCQC8AgMFAUoJALYCAQUBSwUBYwEBTAMBTQFOAU8JAGsDBQFNBQFOBQFPAQFQAQFKAwkAvwICBQFkBQFKCQC+AgEFAUoFAUoBAVEBAUoDCQC/AgIFAWQFAUoJAL4CAQUBSgUBSgEBUgACEyVzX19mYWN0b3J5Q29udHJhY3QBAVMAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVQACESVzJXNfX3ByaWNlX19sYXN0AQFWAgFXAVgJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFXCQDMCAIJAKQDAQUBWAUDbmlsBQFsAQFZAgFaAmFhCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWgICX18FAmFhAQJhYgIBWgJhYQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVoCAl9fBQJhYQECYWMAAg8lc19fYW1vdW50QXNzZXQBAmFkAAIOJXNfX3ByaWNlQXNzZXQBAmFlAAIHJXNfX2FtcAECYWYAAg0lc19fYWRkb25BZGRyAQJhZwACESVzX19mYWN0b3J5Q29uZmlnAQJhaAACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYWkCAmFqAmFrCQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJhagICX18FAmFrAghfX2NvbmZpZwECYWwBAmFtCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFtAQJhbgACDCVzX19zaHV0ZG93bgECYW8AAh0lc19fYWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaAECYXAAAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYXEDAmFyAmFzAmF0CQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgICEUZhaWxlZDogb3JkVmFsaWQ9CQClAwEFAmFyAgsgc25kclZhbGlkPQkApQMBBQJhcwIMIG10Y2hyVmFsaWQ9CQClAwEFAmF0AQJhdQEBSgQCYXYFAUoDCQABAgUCYXYCBlN0cmluZwQCYXcFAmF2BQJhdwkAAgECE2ZhaWwgY2FzdCB0byBTdHJpbmcBAmF4AgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFBAgJheQJhegkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmF5BQJhegkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJheQkAzAgCAgEuCQDMCAIFAmF6CQDMCAICDCBub3QgZGVmaW5lZAUDbmlsAgABAmFCAQJhQwkAAgEJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUMFA25pbAIBIAACYUQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJheAIFBHRoaXMJAQFSAAACYUUKAAJhRgkA/AcEBQJhRAIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFGAgNJbnQFAmFGCQACAQkArAICCQADAQUCYUYCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYUcKAAJhRgkA/AcEBQJhRAIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRgIDSW50BQJhRgkAAgEJAKwCAgkAAwEFAmFGAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQAAmFICQECYXgCBQR0aGlzCQECYWUAAQJhSQAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYUQJAQJhbgAHAQJhSgAJANkEAQkBAmF4AgUCYUQJAQJhaAAAAmFLCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQJhRAkBAmFwAAECYUwABAJhTQkBAmF4AgUEdGhpcwkBAmFjAAQCYU4JAQJheAIFBHRoaXMJAQJhZAAEAmFPCQECYUECBQJhRAkBAmFsAQUCYU4EAmFqCQECYUECBQJhRAkBAmFsAQUCYU0JALUJAgkBAmF4AgUCYUQJAQJhaQIJAKQDAQUCYWoJAKQDAQUCYU8FAWwBAmFQAQJhUQMJAAACBQJhUQUBaQUEdW5pdAkA2QQBBQJhUQECYVIBAmFRAwkAAAIFAmFRBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFRAQJhUwECYVQJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhVAUBcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQFzCQDZBAEJAJEDAgUCYVQFAXQJAQJhUAEJAJEDAgUCYVQFAXUJAQJhUAEJAJEDAgUCYVQFAXYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBdwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF4AAJhVQkBAmFTAQkBAmFMAAACYVYFAmFVAAJhVwgFAmFWAl8xAAJhWAgFAmFWAl8yAAJhWQgFAmFWAl8zAAJhWggFAmFWAl80AAJiYQgFAmFWAl81AAJiYggFAmFWAl82AAJiYwgFAmFWAl83AQJiZAAJALUJAgkBAmF4AgUCYUQJAQJhZwAFAWwAAmJlCQECYmQAAAJiZgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmUFAUECIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJiZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmUFAUMCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJiaAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYmUFAUQCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJpCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJiZQUBQgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYmoKAmJrAmJsAmJtAmJuAmJvAmJwAmJxAmJyAmJzAmJ0CQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiawkAzAgCCQCkAwEFAmJsCQDMCAIJAKQDAQUCYm0JAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJicQkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAUDbmlsBQFsAQJidQYCYnYCYncCYngCYm4CYnECYnIJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJidgkAzAgCCQCkAwEFAmJ3CQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJxCQDMCAIJAKQDAQUCYnIFA25pbAUBbAECYnkBAmJ6AwkAAAIFAmJ6AgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiegECYkECAmJCAmJDCQC8AgMFAmJCBQFjBQJiQwECYkQDAmJFAmJGAmJHBAJiSAkAvAIDCQC4AgIFAmJFBQJiRgUBYgUCYkYEAmJJCQC/AgIJALgCAgUCYkcJAQFQAQUCYkgFAWQDCQEBIQEFAmJJCQACAQkArAICAgpCaWcgc2xwZzogCQCmAwEFAmJICQCUCgIFAmJJCQCZAwEJAMwIAgUCYkUJAMwIAgUCYkYFA25pbAECYkoDAmJLAmJMAmJNBAJiSAkAvAIDBQJiTAUBYgUCYksEAmJOCQC/AgIFAmJNBQJiSAMDBQJiTgYJAL8CAgUCYkwFAmJLCQACAQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApgMBBQJiTAIBIAkApgMBBQJiSwIBIAkApgMBBQJiSAIBIAkApgMBBQJiTQUCYk4BAmJPBAJiUAJiUQJiUgJiUwQCYlQJAQFGAgUCYlIFAmJQBAJiVQkBAUYCBQJiUwUCYlEJAQJiQQIFAmJVBQJiVAECYlYDAmJSAmJTAmJXBAJiWAkBAmFMAAQCYlkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBdwQCYloJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBeAQCY2EJAQJiTwQFAmJZBQJiWgUCYlIFAmJTBAJiQwkBAUYCBQJiUgUCYlkEAmJCCQEBRgIFAmJTBQJiWgQCY2IJAQFGAgUCYlcFAWEEAmNjCQECYkECBQJiQwUCY2IEAmNkCQECYkECBQJiQgUCY2IJAMwIAgUCY2EJAMwIAgUCY2MJAMwIAgUCY2QFA25pbAECY2UDAmJSAmJTAmJXBAJjZgkBAmJWAwUCYlIFAmJTBQJiVwkAzAgCCQEBSQIJAJEDAgUCY2YAAAUBYQkAzAgCCQEBSQIJAJEDAgUCY2YAAQUBYQkAzAgCCQEBSQIJAJEDAgUCY2YAAgUBYQUDbmlsAQJjZwICY2gCY2kEAmNqAwkAAAIFAmNpAAAAAAkAawMFAmNoBQJjaQUBYQkAlAoCCQBlAgUCY2gFAmNqBQJjagECY2sEAmNsAmNtAmNuAmNvBAJiWAkBAmFMAAQCY3AJAJEDAgUCYlgFAXQEAmNxCQCRAwIFAmJYBQF1BAJjcgkAkQMCBQJiWAUBdgQCY3MJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBdwQCY3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBeAQCY3UJAJEDAgUCYlgFAXMEAmN2CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3ACC1dyb25nIExQIGlkCHF1YW50aXR5AwkBAiE9AgUCY3AFAmNtCQACAQIPV3JvbmcgcG10IGFzc2V0BAJjdwkBAmJ5AQUCY3EEAmN4CQEBRgIFAmN3BQJjcwQCY3kJAQJieQEFAmNyBAJjegkBAUYCBQJjeQUCY3QEAmNBCQECYkECBQJjegUCY3gEAmNCCQEBSQIFAmNBBQFhBAJjQwkBAUYCBQJjbgUBYQQCY0QJAQFGAgUCY3YFAWEEAmNFCQC8AgMFAmN4BQJjQwUCY0QEAmNGCQC8AgMFAmN6BQJjQwUCY0QEAmNHCQEBSQIFAmNFBQJjcwQCY0gJAQFJAgUCY0YFAmN0BAJjSQMJAAACBQJjbAIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY28FAmNHAwkAAAIFAmNxAgVXQVZFUwUEdW5pdAkA2QQBBQJjcQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjbwUCY0gDCQAAAgUCY3ICBVdBVkVTBQR1bml0CQDZBAEFAmNyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUCY28FAmNsCQECYnUGBQJjRwUCY0gFAmNuBQJjQgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjQgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjQgUDbmlsCQCcCgoFAmNHBQJjSAUCY3EFAmNyBQJjdwUCY3kFAmN2BQJjQQUCY3UFAmNJAQJjSg0CY2wCYkcCY0sCY0wCY00CY04CY28CY08CY1ACY1ECY1ICY1MCY1QEAmJYCQECYUwABAJjcAkA2QQBCQCRAwIFAmJYBQF0BAJjVQkAkQMCBQJiWAUBdQQCY1YJAJEDAgUCYlgFAXYEAmNXCQCRAwIFAmJYBQF5BAJjWAkAkQMCBQJiWAUBegQCY1kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBdwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiWAUBeAQCY3UJAJEDAgUCYlgFAXMEAmRhCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmNwAghXciBscCBhcwhxdWFudGl0eQQCY3cDBQJjTwkBAmJ5AQUCY1UDAwUCY1EJAAACBQJjVAUCY1UHCQBlAgkBAmJ5AQUCY1UFAmNTAwUCY1EJAQJieQEFAmNVCQBlAgkBAmJ5AQUCY1UFAmNLBAJjeQMFAmNPCQECYnkBBQJjVgMDBQJjUQkAAAIFAmNUBQJjVgcJAGUCCQECYnkBBQJjVgUCY1MDBQJjUQkBAmJ5AQUCY1YJAGUCCQECYnkBBQJjVgUCY00EAmRiCQEBRgIFAmNLBQJjWQQCZGMJAQFGAgUCY00FAmNaBAJkZAkBAmJBAgUCZGMFAmRiBAJjeAkBAUYCBQJjdwUCY1kEAmN6CQEBRgIFAmN5BQJjWgQCZGUDCQAAAgUCZGEAAAQCY0EFAWQEAmRmBQFkBAJjYgkAdgYJALkCAgUCZGIFAmRjAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBSQIFAmNiBQFhCQEBSQIFAmRiBQJjWQkBAUkCBQJkYwUCY1oJAQJiQQIJALcCAgUCY3oFAmRjCQC3AgIFAmN4BQJkYgUCZGYEAmNBCQECYkECBQJjegUCY3gEAmRnCQC8AgMJAQFQAQkAuAICBQJjQQUCZGQFAWMFAmNBBAJkZgkBAUYCBQJiRwUBYQMDAwUCY1IJAQIhPQIFAmNBBQFkBwkAvwICBQJkZwUCZGYHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmRnAgMgPiAJAKYDAQUCZGYEAmRoCQEBRgIFAmRhBQFhBAJkaQkAvAIDBQJkYgUCY0EFAWMEAmRqCQC8AgMFAmRjBQFjBQJjQQQCZGsDCQC/AgIFAmRpBQJkYwkAlAoCBQJkagUCZGMJAJQKAgUCZGIFAmRpBAJkbAgFAmRrAl8xBAJkbQgFAmRrAl8yBAJjYgkAvAIDBQJkaAUCZG0FAmN6CQCXCgUJAQFJAgUCY2IFAWEJAQFJAgUCZGwFAmNZCQEBSQIFAmRtBQJjWgUCY0EFAmRmBAJkbggFAmRlAl8xBAJkbwgFAmRlAl8yBAJkcAgFAmRlAl8zBAJjQgkBAUkCCAUCZGUCXzQFAWEEAmRxCQEBSQIIBQJkZQJfNQUBYQMJAGcCAAAFAmRuCQACAQIHTFAgPD0gMAQCZHIDCQEBIQEFAmNQAAAFAmRuBAJkcwkAZQIFAmNLBQJkbwQCZHQJAGUCBQJjTQUCZHAEAmR1AwMFAmNRCQAAAgUCY1QFAmNVBwkAlAoCBQJjUwAAAwMFAmNRCQAAAgUCY1QFAmNWBwkAlAoCAAAFAmNTCQCUCgIFAmRvBQJkcAQCZHYIBQJkdQJfMQQCZHcIBQJkdQJfMgQCZHgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjbwUCY2wJAQJiagoFAmR2BQJkdwUCZHIFAmNCBQJiRwUCZHEFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRzBQJkdAUDbmlsCQCfCg0FAmRuBQJkcgUCY0IFAmN3BQJjeQUCZGEFAmNwBQJjdQUCZHgFAmRzBQJkdAUCY0wFAmNOAQJkeQECZHoEAmJYCQECYUwABAJkQQkAkQMCBQJiWAUBdQQCZEIJAJEDAgUCYlgFAXYEAmN1CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXMEAmJZCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXcEAmJaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYlgFAXgEAmRDCQECYnkBBQJkQQQCZEQJAQJieQEFAmRCBAJjQQMJAAACCAUCZHoJb3JkZXJUeXBlBQNCdXkJAQJiTwQFAmJZBQJiWgkAZAIFAmRDCAUCZHoGYW1vdW50BQJkRAkBAmJPBAUCYlkFAmJaCQBlAgUCZEMIBQJkegZhbW91bnQFAmREBAJjQgkBAUkCBQJjQQUBYQMDAwkBAmFJAAYJAAACBQJjdQUBcAYJAAACBQJjdQUBcQkAAgECDUFkbWluIGJsb2NrZWQEAmRFCAgFAmR6CWFzc2V0UGFpcgthbW91bnRBc3NldAQCZEYDCQAAAgUCZEUFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRFBAJkRwgIBQJkeglhc3NldFBhaXIKcHJpY2VBc3NldAQCZEgDCQAAAgUCZEcFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmRHAwMJAQIhPQIFAmRGBQJkQQYJAQIhPQIFAmRIBQJkQgkAAgECCVdyIGFzc2V0cwQCZEkIBQJkegVwcmljZQQCY1oJAGsDBQFhBQJiWgUCYlkEAmRKCQEBTAMFAmRJBQFhBQJjWgQCZEsDCQAAAggFAmR6CW9yZGVyVHlwZQUDQnV5CQBnAgUCY0IFAmRKCQBnAgUCZEoFAmNCBgECZEwBAmRNAwkBAiE9AgkAkAMBCAUCZE0IcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmROCQEFdmFsdWUBCQCRAwIIBQJkTQhwYXltZW50cwAABAJjbQkBBXZhbHVlAQgFAmROB2Fzc2V0SWQEAmNTCAUCZE4GYW1vdW50BAJkZQkBAmNrBAkA2AQBCAUCZE0NdHJhbnNhY3Rpb25JZAkA2AQBBQJjbQUCY1MIBQJkTQZjYWxsZXIEAmNHCAUCZGUCXzEEAmNICAUCZGUCXzIEAmN1CQENcGFyc2VJbnRWYWx1ZQEIBQJkZQJfOQQCY0kIBQJkZQNfMTADAwkBAmFJAAYJAAACBQJjdQUBcQkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmN1CQCXCgUFAmNHBQJjSAUCY1MFAmNtBQJjSQECZE8KAmRQAmFhAmRRAmRSAmJHAmNQAmNRAmNSAmNTAmNUBAJkZQkBAmNKDQUCYWEFAmJHCAkBBXZhbHVlAQUCZFEGYW1vdW50CAkBBXZhbHVlAQUCZFEHYXNzZXRJZAgJAQV2YWx1ZQEFAmRSBmFtb3VudAgJAQV2YWx1ZQEFAmRSB2Fzc2V0SWQFAmRQCQAAAgUCYWECAAUCY1AFAmNRBQJjUgUCY1MFAmNUBAJjdQkBDXBhcnNlSW50VmFsdWUBCAUCZGUCXzgDAwMJAQJhSQAGCQAAAgUCY3UFAW8GCQAAAgUCY3UFAXEJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmN1BQJkZQECZFMBAmRUBAJkVQUBZwQCZFYJAJEDAgUCZFQAAAQCZFcJAJEDAgUCZFQAAQQCZFgJAKcDAQUBagQCZFkJALkCAgkApwMBBQJhSAUCZFgEAmRaCQC3AgIFAmRWBQJkVwMJAAACBQJkWgUBZQUBZQQCZWEJALkCAgUCZFkFAmRVBAJlYgkAuQICCQC5AgIJALkCAgUCZFYFAmRXBQJkVQUCZFUEAmVjCQC6AgIJALkCAgUCZWEFAmRaBQJkWAQCZWQJALgCAgUCZWEFAmRYBAJlZQkAtwICBQJkVQUBZgoBAmVmAgJlZwJlaAQCZWkFAmVnBAJlaggFAmVpAl8xBAJlawgFAmVpAl8yAwkBAiE9AgUCZWsFBHVuaXQFAmVnBAJlbAkAugICCQC5AgIJALkCAgUCZWoFAmVqBQJlagUCZWIEAmVtCQC6AgIJALkCAgkAtwICBQJlYwkAuQICBQJlbAUCZFUFAmVqCQC3AgIJALoCAgkAuQICBQJlZAUCZWoFAmRYCQC5AgIFAmVlBQJlbAQCZW4JAQFRAQkAuAICBQJlbQkBBXZhbHVlAQUCZWoDCQDAAgIFAWYFAmVuCQCUCgIFAmVtBQJlaAkAlAoCBQJlbQUEdW5pdAQCZW8JAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZXAKAAJlcQUCZW8KAAJlcgkAkAMBBQJlcQoAAmVzCQCUCgIFAmRaBQR1bml0CgECZXQCAmV1AmV2AwkAZwIFAmV2BQJlcgUCZXUJAQJlZgIFAmV1CQCRAwIFAmVxBQJldgoBAmV3AgJldQJldgMJAGcCBQJldgUCZXIFAmV1CQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJldwIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIJAQJldAIFAmVzAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVqCAUCZXACXzEEAmVrCAUCZXACXzIDCQECIT0CBQJlawUEdW5pdAUCZWoJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZWoBAmV4AwJkVAJkTQJleQQCZFUFAWcEAmV6CQCRAwIFAmRUAwkAAAIFAmRNAAAAAQAABAJkWAkApwMBBQFqBAJkWQkAuQICCQCnAwEFAmFIBQJkWAQCZFoFAmV6BAJlYQkAuQICBQJkWQUCZFUEAmVBCQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXkFAmV5CQC5AgIFAmV6BQJkVQUCZXkFAmRYCQC5AgIFAmVhBQJkVQQCZUIJALgCAgkAtwICBQJkWgkAugICCQC5AgIFAmV5BQJkWAUCZWEFAmV5CgECZWYCAmVnAmVoBAJlQwUCZWcEAmVECAUCZUMCXzEEAmVrCAUCZUMCXzIDCQECIT0CBQJlawUEdW5pdAUCZWcEAmVFCQC6AgIJALcCAgkAuQICBQJlRAUCZUQFAmVBCQC3AgIJALkCAgUBZwUCZUQFAmVCBAJlRgkBAVEBCQC4AgIFAmVFCQEFdmFsdWUBBQJlRAMJAMACAgUBZgUCZUYJAJQKAgUCZUUFAmVoCQCUCgIFAmVFBQR1bml0BAJlbwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlRwoAAmVxBQJlbwoAAmVyCQCQAwEFAmVxCgACZXMJAJQKAgUCZXkFBHVuaXQKAQJldAICZXUCZXYDCQBnAgUCZXYFAmVyBQJldQkBAmVmAgUCZXUJAJEDAgUCZXEFAmV2CgECZXcCAmV1AmV2AwkAZwIFAmV2BQJlcgUCZXUJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmV3AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgkBAmV0AgUCZXMAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUQIBQJlRwJfMQQCZWsIBQJlRwJfMgMJAQIhPQIFAmVrBQR1bml0BQJlRAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRAECZUgFAmVJAmNtAmNvAmFhAmVKBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkAkQMCBQJhVAUBdAQCY1kJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBdwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhVAUBeAQCZUsJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNwAhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJlTAMJAL8CAgUCZUsFAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlTAUCZUwEAmN3CQECYnkBBQJjcQQCY3kJAQJieQEFAmNyBAJlTQMJAAACBQJhYQIACQCUCgIFAmN3BQJjeQMJAAACBQJjbQUCY3EDCQBmAgUCZUkFAmN3CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY3cFAmVJBQJjeQMJAAACBQJjbQUCY3IDCQBmAgUCZUkFAmN5CQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjdwkAZQIFAmN5BQJlSQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmVOCAUCZU0CXzEEAmVPCAUCZU0CXzIEAmVQAwkAAAIFAmNtBQJjcQkAlAoCBQJlSQAAAwkAAAIFAmNtBQJjcgkAlAoCAAAFAmVJCQACAQIPaW52YWxpZCBwYXltZW50BAJlUQgFAmVQAl8xBAJlUggFAmVQAl8yBAJlUwMFAmVKCQCVCgMICQECY2cCBQJlUQUCYUUCXzEICQECY2cCBQJlUgUCYUUCXzEICQECY2cCBQJlSQUCYUUCXzIJAJUKAwUCZVEFAmVSAAAEAmVUCAUCZVMCXzEEAmVVCAUCZVMCXzIEAmNqCAUCZVMCXzMEAmVWCQBkAgUCZU4FAmVUBAJlVwkAZAIFAmVPBQJlVQQCYkwJAQJkUwEJAMwIAgkAtgIBBQJlTgkAzAgCCQC2AgEFAmVPBQNuaWwEAmJLCQECZFMBCQDMCAIJALYCAQUCZVYJAMwIAgkAtgIBBQJlVwUDbmlsBAJlWAMJAL8CAgUCYksFAmJMBgkBBXRocm93AAMJAAACBQJlWAUCZVgEAmVZCQC8AgMFAmVLCQC4AgIFAmJLBQJiTAUCYkwEAmNCCQEBSQIJAQJiQQIJAQFGAgUCZVcFAmNaCQEBRgIFAmVWBQJjWQUBYQQCZHgJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCY0IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVkCBQJjbwUCYWEJAQJiagoFAmVRBQJlUgkAoAMBBQJlWQUCY0IAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJlWgkAawMFAmVPBQFhBQJlTgQCZmEJAGsDBQJlSQUBYQkAZAIFAmVaBQFhBAJmYgkAZQIFAmVJBQJmYQQCZmMJALwCAwUCZUsJALYCAQUCZmIJALYCAQUCZU8EAmZkCQCgAwEJALwCAwkAuAICBQJlWQUCZmMFAWIFAmZjCQCWCgQJAKADAQUCZVkFAmR4BQJjagUCZmQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZlBgJmZgJmZwJmaAJkUAJmaQJmagQCYVQJAQJhTAAEAmNwCQCRAwIFAmFUBQF0BAJjcQkAkQMCBQJhVAUBdQQCY3IJAJEDAgUCYVQFAXYEAmZrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVQFAXcEAmZsCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYVQFAXgEAmZtCQCRAwIFAmFUBQFzBAJjbwMJAAACBQJkUAUCYmkFAmZpBQJkUAQCZE4JAQV2YWx1ZQEJAJEDAgUCZmgAAAQCY20JAQV2YWx1ZQEIBQJkTgdhc3NldElkBAJjUwgFAmROBmFtb3VudAQCY2wJANgEAQUCZmoDCQECIT0CBQJjcAkA2AQBBQJjbQkAAgECCFdyb25nIExQBAJjdwkBAmJ5AQUCY3EEAmN5CQECYnkBBQJjcgQCZm4KAAJhRgkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZmCQDMCAIFAmNTBQNuaWwFA25pbAMJAAECBQJhRgIKKEludCwgSW50KQUCYUYJAAIBCQCsAgIJAAMBBQJhRgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmbgUCZm4EAmNqCAUCZm4CXzIEAmZvCAUCZm4CXzEEAmZwAwMJAGYCBQJmZwAACQBmAgUCZmcFAmZvBwkBAmFCAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmZwUDbmlsAgAFAmZvBAJmcQMJAAACBQJmZgUCY3EJAJYKBAUCZnAAAAkAZQIJAGUCBQJjdwUCZnAFAmNqBQJjeQMJAAACBQJmZgUCY3IJAJYKBAAABQJmcAUCY3cJAGUCCQBlAgUCY3kFAmZwBQJjagkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmcggFAmZxAl8xBAJmcwgFAmZxAl8yBAJlVggFAmZxAl8zBAJlVwgFAmZxAl80BAJmdAkBAmJBAgkBAUYCBQJlVwUCZmwJAQFGAgUCZVYFAmZrBAJmdQkBAUkCBQJmdAUBYQQCZnYDCQAAAgUCZmYCBVdBVkVTBQR1bml0CQDZBAEFAmZmBAJmdwMJAGYCBQJjagAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJjagUCZnYFA25pbAUDbmlsBAJjSQkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNvBQJmcAUCZnYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAgkApQgBBQJjbwUCY2wJAQJidQYFAmZyBQJmcwUCY1MFAmZ1BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmZ1CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZ1BQNuaWwFAmZ3AwkAAAIFAmNJBQJjSQQCZngJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCY1MFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY20FAmNTBQNuaWwDCQAAAgUCZngFAmZ4CQCUCgIFAmNJBQJmcAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZnkABAJhdgkAoggBCQEBUwADCQABAgUCYXYCBlN0cmluZwQCZFoFAmF2CQDZBAEFAmRaAwkAAQIFAmF2AgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmZ6AAQCYXYJAKIIAQkBAVQAAwkAAQIFAmF2AgZTdHJpbmcEAmRaBQJhdgkA2QQBBQJkWgMJAAECBQJhdgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJmQQkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJmQgECZE0EAmF2CQECZnkAAwkAAQIFAmF2AgpCeXRlVmVjdG9yBAJmQwUCYXYJAAACCAUCZE0PY2FsbGVyUHVibGljS2V5BQJmQwMJAAECBQJhdgIEVW5pdAkAAAIIBQJkTQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZkQBAmRNBAJhdgkBAmZ5AAMJAAECBQJhdgIKQnl0ZVZlY3RvcgQCZkMFAmF2AwkAAAIIBQJkTQ9jYWxsZXJQdWJsaWNLZXkFAmZDBgUCZkEDCQABAgUCYXYCBFVuaXQDCQAAAggFAmRNBmNhbGxlcgUEdGhpcwYFAmZBCQACAQILTWF0Y2ggZXJyb3IbAmRNAQtjb25zdHJ1Y3RvcgEBUgQCZUEJAQJmRAEFAmRNAwkAAAIFAmVBBQJlQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUgAFAVIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEKc2V0TWFuYWdlcgECZkUEAmVBCQECZkQBBQJkTQMJAAACBQJlQQUCZUEEAmZGCQDZBAEFAmZFAwkAAAIFAmZGBQJmRgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmZFBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BDmNvbmZpcm1NYW5hZ2VyAAQCY2YJAQJmegAEAmZHAwkBCWlzRGVmaW5lZAEFAmNmBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmRwUCZkcEAmZIAwkAAAIIBQJkTQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmNmBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmSAUCZkgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmNmCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQNwdXQCAmZJAmZKBAJmSwkBAmJkAAQCZkwJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmZLBQFBAgpXciBzdCBhZGRyBAJmTQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZksFAUMCCldyIHNsIGFkZHIDCQBmAgAABQJmSQkAAgECDldyb25nIHNsaXBwYWdlAwkBAiE9AgkAkAMBCAUCZE0IcGF5bWVudHMAAgkAAgECDDIgcG1udHMgZXhwZAQCZk4JAQJkTwoJAKUIAQgFAmRNBmNhbGxlcgkA2AQBCAUCZE0NdHJhbnNhY3Rpb25JZAkBD0F0dGFjaGVkUGF5bWVudAIICQEFdmFsdWUBCQCRAwIIBQJkTQhwYXltZW50cwAAB2Fzc2V0SWQICQEFdmFsdWUBCQCRAwIIBQJkTQhwYXltZW50cwAABmFtb3VudAkAkQMCCAUCZE0IcGF5bWVudHMAAQUCZkkGBwYAAAIABAJkcggFAmZOAl8yBAJmTwgFAmZOAl83BAJjSQgFAmZOAl85BAJkcwgFAmZOA18xMAQCZHQIBQJmTgNfMTEEAmNxCAUCZk4DXzEyBAJjcggFAmZOA18xMwQCZGUJAPwHBAUCYUQCBGVtaXQJAMwIAgUCZHIFA25pbAUDbmlsAwkAAAIFAmRlBQJkZQQCZlAEAmF2BQJkZQMJAAECBQJhdgIHQWRkcmVzcwQCZlEFAmF2CQD8BwQFAmZRAgRlbWl0CQDMCAIFAmRyBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmUAUCZlAEAmZSAwkAZgIFAmRzAAAJAPwHBAUCZk0CA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcQUCZHMFA25pbAUDbmlsAwkAAAIFAmZSBQJmUgQCZlMDCQBmAgUCZHQAAAkA/AcEBQJmTQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNyBQJkdAUDbmlsBQNuaWwDCQAAAgUCZlMFAmZTBAJmVAMFAmZKBAJmVQkA/AcEBQJmTAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZk8FAmRyBQNuaWwDCQAAAgUCZlUFAmZVBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRNBmNhbGxlcgUCZHIFAmZPBQNuaWwJAM4IAgUCY0kFAmZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQtwdXRPbmVUa25WMgICZmcCZkoEAmZWCgACYUYJAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhRgIHQm9vbGVhbgUCYUYJAAIBCQCsAgIJAAMBBQJhRgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZlcDAwMJAQJhSQAGCQAAAgUCYVgFAW8GCQAAAgUCYVgFAXEGBQJmVgQCZlgJAMwIAgMDCQEBIQEFAmZXBgkBAmZCAQUCZE0GCQECYUIBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkTQhwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlgFAmZYBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkA2QQBCQCRAwIFAmFUBQF0BAJmawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF3BAJmbAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFUBQF4BAJjbwMJAAACCAUCZE0GY2FsbGVyBQR0aGlzCAUCZE0Mb3JpZ2luQ2FsbGVyCAUCZE0GY2FsbGVyBAJkTgkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAQCY20JANgEAQkBBXZhbHVlAQgFAmROB2Fzc2V0SWQEAmNTCAUCZE4GYW1vdW50BAJmWQkBAmVIBQUCY1MFAmNtCQClCAEFAmNvCQDYBAEIBQJkTQ10cmFuc2FjdGlvbklkBgMJAAACBQJmWQUCZlkEAmNqCAUCZlkCXzMEAmNJCAUCZlkCXzIEAmZaCAUCZlkCXzEEAmRyAwMJAGYCBQJmZwAACQBmAgUCZmcFAmZaBwkBAmFCAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmZwUDbmlsAgAFAmZaBAJmTgkA/AcEBQJhRAIEZW1pdAkAzAgCBQJkcgUDbmlsBQNuaWwDCQAAAgUCZk4FAmZOBAJmUAQCYXYFAmZOAwkAAQIFAmF2AgdBZGRyZXNzBAJmUQUCYXYJAPwHBAUCZlECBGVtaXQJAMwIAgUCZHIFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZQBQJmUAQCZlQDBQJmSgQCZlUJAPwHBAUCYmYCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNwBQJkcgUDbmlsAwkAAAIFAmZVBQJmVQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJkTQZjYWxsZXIFAmRyBQJjcAUDbmlsBAJmdwMJAGYCBQJjagAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFLBQJjagkA2QQBBQJjbQUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNJBQJmVAUCZncFAmRyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRNAQpwdXRGb3JGcmVlAQJnYQMJAGYCAAAFAmdhCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRNCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdiCQECZE8KCQClCAEIBQJkTQZjYWxsZXIJANgEAQgFAmRNDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZE0IcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRNCHBheW1lbnRzAAEFAmdhBwcGAAACAAgFAmdiAl85AmRNAQNnZXQABAJkZQkBAmRMAQUCZE0EAmdjCAUCZGUCXzEEAmNICAUCZGUCXzIEAmNTCAUCZGUCXzMEAmNtCAUCZGUCXzQEAmNJCAUCZGUCXzUEAmVCCQD8BwQFAmFEAgRidXJuCQDMCAIFAmNTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNtBQJjUwUDbmlsAwkAAAIFAmVCBQJlQgUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BC2dldE9uZVRrblYyAgJmZgJmZwQCZlYKAAJhRgkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFGAgdCb29sZWFuBQJhRgkAAgEJAKwCAgkAAwEFAmFGAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnZAMDCQECYUkABgkAAAIFAmFYBQFxBgUCZlYEAmZYCQDMCAIDAwkBASEBBQJnZAYJAQJmQgEFAmRNBgkBAmFCAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE0IcGF5bWVudHMAAQYJAQJhQgECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZYBQJmWAQCZ2UJAQJmZQYFAmZmBQJmZwgFAmRNCHBheW1lbnRzCAUCZE0GY2FsbGVyCAUCZE0Mb3JpZ2luQ2FsbGVyCAUCZE0NdHJhbnNhY3Rpb25JZAQCY0kIBQJnZQJfMQQCZnAIBQJnZQJfMgkAlAoCBQJjSQUCZnAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BE2dldE9uZVRrblYyUkVBRE9OTFkCAmZmAmdmBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkAkQMCBQJhVAUBdAQCZFQJAMwIAgkAtgIBCQECYnkBBQJjcQkAzAgCCQC2AgEJAQJieQEFAmNyBQNuaWwEAmdnCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJjcAIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCYkwJAQJkUwEFAmRUBAJiSwkAuAICBQJiTAkAvAIDCQC2AgEFAmdmBQJiTAUCZ2cEAmdoAwkAAAIFAmZmBQJjcQAAAwkAAAIFAmZmBQJjcgABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmdpCQECZXgDBQJkVAUCZ2gFAmJLBAJnagkAuAICCQCRAwIFAmRUBQJnaAUCZ2kEAmdrCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJnagUBZgUDbmlsBAJnbAkBAmNnAgUCZ2sFAmFHBAJmbwgFAmdsAl8xBAJjaggFAmdsAl8yCQCUCgIFA25pbAkAlAoCBQJmbwUCY2oCZE0BHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZmAmdmBAJhVAkBAmFMAAQCY3EJAJEDAgUCYVQFAXUEAmNyCQCRAwIFAmFUBQF2BAJjcAkAkQMCBQJhVAUBdAQCY3cJAQJieQEFAmNxBAJjeQkBAmJ5AQUCY3IEAmdtCgACYUYJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmZgkAzAgCBQJnZgUDbmlsBQNuaWwDCQABAgUCYUYCCihJbnQsIEludCkFAmFGCQACAQkArAICCQADAQUCYUYCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZvCAUCZ20CXzEEAmNqCAUCZ20CXzIEAmRlCQECY2sEAgAFAmNwBQJnZgUEdGhpcwQCY0cIBQJkZQJfMQQCY0gIBQJkZQJfMgQCZ24JAGQCBQJjRwUCY0gEAmZkAwkAAAIFAmduAAADCQAAAgUCZm8AAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUCZm8FAmduBQFhBQJnbgkAlAoCBQNuaWwJAJUKAwUCZm8FAmNqBQJmZAJkTQEJZ2V0Tm9MZXNzAgJnbwJncAQCZGUJAQJkTAEFAmRNBAJjRwgFAmRlAl8xBAJjSAgFAmRlAl8yBAJjUwgFAmRlAl8zBAJjbQgFAmRlAl80BAJjSQgFAmRlAl81AwkAZgIFAmdvBQJjRwkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjRwIDIDwgCQCkAwEFAmdvAwkAZgIFAmdwBQJjSAkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNIAgMgPCAJAKQDAQUCZ3AEAmdxCQD8BwQFAmFEAgRidXJuCQDMCAIFAmNTBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNtBQJjUwUDbmlsAwkAAAIFAmdxBQJncQUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BDXVuc3Rha2VBbmRHZXQBAmNoBAJncgMJAQIhPQIJAJADAQgFAmRNCHBheW1lbnRzAAAJAAIBAg1ObyBwbW50cyBleHBkBgMJAAACBQJncgUCZ3IEAmJYCQECYUwABAJncwkBAmJkAAQCZk8JANkEAQkAkQMCBQJiWAUBdAQCZ3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdzBQFBAgpXciBzdCBhZGRyBAJndQkA/AcEBQJndAIHdW5zdGFrZQkAzAgCCQDYBAEFAmZPCQDMCAIFAmNoBQNuaWwFA25pbAMJAAACBQJndQUCZ3UEAmRlCQECY2sECQDYBAEIBQJkTQ10cmFuc2FjdGlvbklkCQDYBAEFAmZPBQJjaAgFAmRNBmNhbGxlcgQCY3UJAQ1wYXJzZUludFZhbHVlAQgFAmRlAl85BAJjSQgFAmRlA18xMAQCZ3YDAwkBAmFJAAYJAAACBQJjdQUBcQkAAgEJAKwCAgIJQmxvY2tlZDogCQCkAwEFAmN1BgMJAAACBQJndgUCZ3YEAmd3CQD8BwQFAmFEAgRidXJuCQDMCAIFAmNoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZPBQJjaAUDbmlsAwkAAAIFAmd3BQJndwUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZE0BE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmd4Amd5AmdwBAJnZAMJAQJhSQAGCQAAAgUCYVgFAXEEAmZYCQDMCAIDCQEBIQEFAmdkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRNCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlgFAmZYBAJndQkA/AcEBQJiZgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFZCQDMCAIFAmd4BQNuaWwFA25pbAMJAAACBQJndQUCZ3UEAmd6CQECY2sECQDYBAEIBQJkTQ10cmFuc2FjdGlvbklkCQDYBAEFAmFZBQJneAgFAmRNBmNhbGxlcgQCY0cIBQJnegJfMQQCY0gIBQJnegJfMgQCY0kIBQJnegNfMTAEAmdBCQDMCAIDCQBnAgUCY0cFAmd5BgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmd5BQNuaWwCAAkAzAgCAwkAZwIFAmNIBQJncAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdwBQNuaWwCAAUDbmlsAwkAAAIFAmdBBQJnQQQCZ3EJAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZ3gFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVkFAmd4BQNuaWwDCQAAAgUCZ3EFAmdxBQJjSQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJneAJmZgJmZwQCZlYKAAJhRgkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFGAgdCb29sZWFuBQJhRgkAAgEJAKwCAgkAAwEFAmFGAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnZAMDCQECYUkABgkAAAIFAmFYBQFxBgUCZlYEAmZYCQDMCAIDAwkBASEBBQJnZAYJAQJmQgEFAmRNBgkBAmFCAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZE0IcGF5bWVudHMAAAYJAQJhQgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZYBQJmWAQCYlgJAQJhTAAEAmdzCQECYmQABAJmTwkA2QQBCQCRAwIFAmJYBQF0BAJndAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3MFAUECCldyIHN0IGFkZHIEAmd1CQD8BwQFAmd0Agd1bnN0YWtlCQDMCAIJANgEAQUCZk8JAMwIAgUCZ3gFA25pbAUDbmlsAwkAAAIFAmd1BQJndQQCZ0IJAQJmZQYFAmZmBQJmZwkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZk8FAmd4BQNuaWwIBQJkTQZjYWxsZXIIBQJkTQxvcmlnaW5DYWxsZXIIBQJkTQ10cmFuc2FjdGlvbklkBAJjSQgFAmdCAl8xBAJmcAgFAmdCAl8yCQCUCgIFAmNJBQJmcAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkTQEccHV0T25lVGtuVjJXaXRoQm9udXNSRUFET05MWQICZ0MCZ0QEAmFUCQECYUwABAJjcQkAkQMCBQJhVAUBdQQCY3IJAJEDAgUCYVQFAXYEAmNwCQCRAwIFAmFUBQF0BAJnRQkBAmVIBQUCZ0MFAmdEAgACAAYEAmVZCAUCZ0UCXzEEAmNJCAUCZ0UCXzIEAmNqCAUCZ0UCXzMEAmZkCAUCZ0UCXzQJAJQKAgUDbmlsCQCVCgMFAmVZBQJjagUCZmQCZE0BIXB1dE9uZVRrblYyV2l0aG91dFRha2VGZWVSRUFET05MWQICZ0MCZ0QEAmFUCQECYUwABAJjcQkAkQMCBQJhVAUBdQQCY3IJAJEDAgUCYVQFAXYEAmNwCQCRAwIFAmFUBQF0BAJnRgkBAmVIBQUCZ0MFAmdEAgACAAcEAmVZCAUCZ0YCXzEEAmNJCAUCZ0YCXzIEAmNqCAUCZ0YCXzMEAmZkCAUCZ0YCXzQJAJQKAgUDbmlsCQCVCgMFAmVZBQJjagUCZmQCZE0BCGFjdGl2YXRlAgJnRwJnSAMJAQIhPQIJAKUIAQgFAmRNBmNhbGxlcgkApQgBBQJhRAkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwAFAmdHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAAFAmdIBQNuaWwCB3N1Y2Nlc3MCZE0BBHNldFMCAmdJAmd2AwkBAiE9AgkApQgBCAUCZE0GY2FsbGVyCQECYXgCBQR0aGlzCQECYWYABQJmQQkAzAgCCQELU3RyaW5nRW50cnkCBQJnSQUCZ3YFA25pbAJkTQEEc2V0SQICZ0kCZ3YDCQECIT0CCQClCAEIBQJkTQZjYWxsZXIJAQJheAIFBHRoaXMJAQJhZgAFAmZBCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJnSQUCZ3YFA25pbAJkTQEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUwAAmRNARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiegkAlAoCBQNuaWwJAQJieQEFAmJ6AmRNARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJiUgJiUwJiVwQCZ0oJAQJiVgMFAmJSBQJiUwUCYlcJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJnSgAACQDMCAIJAKYDAQkAkQMCBQJnSgABCQDMCAIJAKYDAQkAkQMCBQJnSgACBQNuaWwCZE0BFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUoCZ0sJAJQKAgUDbmlsCQEBSQIJAKcDAQUBSgUCZ0sCZE0BFHRvWDE4V3JhcHBlclJFQURPTkxZAgFHAUgJAJQKAgUDbmlsCQCmAwEJAQFGAgUBRwUBSAJkTQEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiQgJiQwkAlAoCBQNuaWwJAKYDAQkBAmJBAgkApwMBBQJiQgkApwMBBQJiQwJkTQEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmNsAmJHAmNLAmNMAmNNAmNOAmdMAmNPAmNQCQCUCgIFA25pbAkBAmNKDQUCY2wFAmJHBQJjSwUCY0wFAmNNBQJjTgUCZ0wFAmNPBQJjUAYHAAACAAJkTQEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmNsAmdNAmNuAmdMBAJkZQkBAmNrBAUCY2wFAmdNBQJjbgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0wJAJQKAgUDbmlsCQCcCgoIBQJkZQJfMQgFAmRlAl8yCAUCZGUCXzMIBQJkZQJfNAgFAmRlAl81CAUCZGUCXzYIBQJkZQJfNwkApgMBCAUCZGUCXzgIBQJkZQJfOQgFAmRlA18xMAECZ04BAmdPAAQCZ1AEAmF2CQECZnkAAwkAAQIFAmF2AgpCeXRlVmVjdG9yBAJmQwUCYXYFAmZDAwkAAQIFAmF2AgRVbml0CAUCZ04Pc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmF2BQJnTgMJAAECBQJhdgIFT3JkZXIEAmR6BQJhdgQCZ1EJAQJhSgAEAmdSCQECZHkBBQJkegQCZ1MJAPQDAwgFAmR6CWJvZHlCeXRlcwkAkQMCCAUCZHoGcHJvb2ZzAAAIBQJkeg9zZW5kZXJQdWJsaWNLZXkEAmdUCQD0AwMIBQJkeglib2R5Qnl0ZXMJAJEDAggFAmR6BnByb29mcwABBQJnUQMDAwUCZ1IFAmdTBwUCZ1QHBgkBAmFxAwUCZ1IFAmdTBQJnVAMJAAECBQJhdgIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRaBQJhdgQCZ1UJAPYDAQkBBXZhbHVlAQgFAmRaBnNjcmlwdAQCZ1YJANsEAQkBBXZhbHVlAQkAnQgCBQJhRAkBAmFvAAQCZ1cJAPEHAQUEdGhpcwMDCQAAAgUCZ1YFAmdVCQECIT0CBQJnVwUCZ1UHBgkA9AMDCAUCZ04JYm9keUJ5dGVzCQCRAwIIBQJnTgZwcm9vZnMAAAUCZ1AJAPQDAwgFAmdOCWJvZHlCeXRlcwkAkQMCCAUCZ04GcHJvb2ZzAAAFAmdQf6Cfrw==", "chainId": 84, "height": 2398740, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5h79haBY3wNJ973QYPMQwMwxpW97sPrBLXD1oYZcUaUv Next: 6JfXGKFmXEw4AVzHKcGZS2eJ1bzj5Cqt5gD3ahmxoCvh Diff:
OldNewDifferences
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt(3)
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = toBigInt(4)
20+let i = "WAVES"
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = "100"
2323
24-let k = "WAVES"
24+let k = "1"
2525
26-let l = "100"
26+let l = "__"
2727
28-let m = "1"
28+let m = ""
2929
30-let n = "__"
30+let n = 1
3131
32-let o = ""
32+let o = 2
3333
34-let p = 1
34+let p = 3
3535
36-let q = 2
36+let q = 4
3737
38-let r = 3
38+let r = 1
3939
40-let s = 4
40+let s = 2
4141
42-let t = 1
42+let t = 3
4343
44-let u = 2
44+let u = 4
4545
46-let v = 3
46+let v = 5
4747
48-let w = 4
48+let w = 6
4949
50-let x = 5
50+let x = 7
5151
52-let y = 6
52+let y = 8
5353
54-let z = 7
54+let z = 9
5555
56-let A = 8
56+let A = 1
5757
58-let B = 9
58+let B = 6
5959
60-let C = 1
60+let C = 7
6161
62-let D = 6
62+let D = 10
6363
64-let E = 7
64+let E = fraction(10, a, 10000)
6565
66-let F = 10
67-
68-let G = fraction(10, a, 10000)
69-
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
7167
7268
73-func K (L,M) = toInt(fraction(L, toBigInt(M), c))
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7470
7571
76-func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
72+func L (M,N,O) = fraction(M, N, O)
7773
7874
79-func P (Q,R,S) = fraction(Q, R, S)
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
8078
8179
82-func T (L) = if ((d > L))
83- then -(L)
84- else L
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8583
8684
87-func U (L) = if ((d > L))
88- then -(L)
89- else L
85+func R () = "%s__factoryContract"
9086
9187
92-func V () = "%s__factoryContract"
88+func S () = "%s__managerPublicKey"
9389
9490
95-func W () = "%s__managerPublicKey"
91+func T () = "%s__pendingManagerPublicKey"
9692
9793
98-func X () = "%s__pendingManagerPublicKey"
94+func U () = "%s%s__price__last"
9995
10096
101-func Y () = "%s%s__price__last"
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
10298
10399
104-func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
105101
106102
107-func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
108104
109105
110-func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
106+func ac () = "%s__amountAsset"
111107
112108
113-func ag () = "%s__amountAsset"
109+func ad () = "%s__priceAsset"
114110
115111
116-func ah () = "%s__priceAsset"
112+func ae () = "%s__amp"
117113
118114
119-func ai () = "%s__amp"
115+func af () = "%s__addonAddr"
120116
121117
122-func aj () = "%s__addonAddr"
118+func ag () = "%s__factoryConfig"
123119
124120
125-let ak = "%s__fee"
126-
127-let al = valueOrElse(getInteger(this, ak), G)
128-
129-let am = makeString(["%s", "dLp"], n)
130-
131-let an = makeString(["%s", "dLpRefreshedHeight"], n)
132-
133-let ao = makeString(["%s", "refreshDLpDelay"], n)
134-
135-let ap = 1
136-
137-let aq = valueOrElse(getInteger(this, ao), ap)
138-
139-func ar () = "%s__factoryConfig"
121+func ah () = "%s%s__matcher__publicKey"
140122
141123
142-func as () = "%s%s__matcher__publicKey"
124+func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
143125
144126
145-func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
127+func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
146128
147129
148-func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
130+func an () = "%s__shutdown"
149131
150132
151-func ay () = "%s__shutdown"
133+func ao () = "%s__allowedLpStableScriptHash"
152134
153135
154-func az () = "%s__allowedLpStableScriptHash"
136+func ap () = "%s__feeCollectorAddress"
155137
156138
157-func aA () = "%s__feeCollectorAddress"
139+func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
158140
159141
160-func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161-
162-
163-func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
164-
165-
166-func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
167-
168-
169-func aJ (aK) = throw(makeString(["lp_stable.ride:", aK], " "))
170-
171-
172-func aL (aK) = makeString(["lp_stable.ride:", aK], " ")
173-
174-
175-let aM = addressFromStringValue(aF(this, V()))
176-
177-let aN = {
178- let aO = invoke(aM, "getInFeeREADONLY", [toString(this)], nil)
179- if ($isInstanceOf(aO, "Int"))
180- then aO
181- else throw(($getType(aO) + " couldn't be cast to Int"))
182- }
183-
184-let aP = {
185- let aO = invoke(aM, "getOutFeeREADONLY", [toString(this)], nil)
186- if ($isInstanceOf(aO, "Int"))
187- then aO
188- else throw(($getType(aO) + " couldn't be cast to Int"))
189- }
190-
191-let aQ = aF(this, ai())
192-
193-func aR () = valueOrElse(getBoolean(aM, ay()), false)
194-
195-
196-func aS () = fromBase58String(aF(aM, as()))
197-
198-
199-let aT = addressFromStringValue(aF(aM, aA()))
200-
201-func aU () = {
202- let aV = aF(this, ag())
203- let aW = aF(this, ah())
204- let aX = aI(aM, aw(aW))
205- let au = aI(aM, aw(aV))
206- split(aF(aM, at(toString(au), toString(aX))), n)
142+func au (J) = {
143+ let av = J
144+ if ($isInstanceOf(av, "String"))
145+ then {
146+ let aw = av
147+ aw
148+ }
149+ else throw("fail cast to String")
207150 }
208151
209152
210-func aY (aZ) = if ((aZ == k))
211- then unit
212- else fromBase58String(aZ)
153+func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
213154
214155
215-func ba (aZ) = if ((aZ == unit))
216- then k
217- else toBase58String(value(aZ))
156+func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
218157
219158
220-func bb (bc) = $Tuple9(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]), fromBase58String(bc[A]), fromBase58String(bc[B]))
159+func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
221160
222161
223-let bd = bb(aU())
162+let aD = addressFromStringValue(ax(this, R()))
224163
225-let be = bd
164+let aE = {
165+ let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166+ if ($isInstanceOf(aF, "Int"))
167+ then aF
168+ else throw(($getType(aF) + " couldn't be cast to Int"))
169+ }
226170
227-let bf = be._1
171+let aG = {
172+ let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173+ if ($isInstanceOf(aF, "Int"))
174+ then aF
175+ else throw(($getType(aF) + " couldn't be cast to Int"))
176+ }
228177
229-let bg = be._2
178+let aH = ax(this, ae())
230179
231-let bh = be._3
232-
233-let bi = be._4
234-
235-let bj = be._5
236-
237-let bk = be._6
238-
239-let bl = be._7
240-
241-let bm = be._8
242-
243-let bn = be._9
244-
245-func bo () = split(aF(aM, ar()), n)
180+func aI () = valueOrElse(getBoolean(aD, an()), false)
246181
247182
248-let bp = bo()
249-
250-let bq = valueOrErrorMessage(addressFromString(bp[C]), "Invalid staking contract address")
251-
252-let br = valueOrErrorMessage(addressFromString(bp[E]), "Invalid slipage contract address")
253-
254-let bs = valueOrErrorMessage(addressFromString(bp[F]), "Invalid gwx contract address")
255-
256-let bt = valueOrErrorMessage(addressFromString(bp[D]), "Invalid gwx contract address")
257-
258-func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], n)
183+func aJ () = fromBase58String(ax(aD, ah()))
259184
260185
261-func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], n)
186+let aK = addressFromStringValue(ax(aD, ap()))
262187
263-
264-func bJ (bK) = if ((bK == "WAVES"))
265- then wavesBalance(this).available
266- else assetBalance(this, fromBase58String(bK))
267-
268-
269-func bL (bM,bN) = fraction(bM, c, bN)
270-
271-
272-func bO (bM,bN,O) = fraction(bM, c, bN, O)
273-
274-
275-func bP (bQ,bR,bS) = {
276- let bT = fraction((bQ - bR), b, bR)
277- let bU = ((bS - T(bT)) > d)
278- if (!(bU))
279- then throw(("Big slpg: " + toString(bT)))
280- else $Tuple2(bU, min([bQ, bR]))
188+func aL () = {
189+ let aM = ax(this, ac())
190+ let aN = ax(this, ad())
191+ let aO = aA(aD, al(aN))
192+ let aj = aA(aD, al(aM))
193+ split(ax(aD, ai(toString(aj), toString(aO))), l)
281194 }
282195
283196
284-func bV (bW,bX,bY) = {
285- let bT = fraction(bX, b, bW)
286- let bZ = (bY > bT)
287- if (if (bZ)
288- then true
289- else (bX > bW))
290- then throw(((((((toString(bX) + " ") + toString(bW)) + " ") + toString(bT)) + " ") + toString(bY)))
291- else bZ
197+func aP (aQ) = if ((aQ == i))
198+ then unit
199+ else fromBase58String(aQ)
200+
201+
202+func aR (aQ) = if ((aQ == unit))
203+ then i
204+ else toBase58String(value(aQ))
205+
206+
207+func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
208+
209+
210+let aU = aS(aL())
211+
212+let aV = aU
213+
214+let aW = aV._1
215+
216+let aX = aV._2
217+
218+let aY = aV._3
219+
220+let aZ = aV._4
221+
222+let ba = aV._5
223+
224+let bb = aV._6
225+
226+let bc = aV._7
227+
228+func bd () = split(ax(aD, ag()), l)
229+
230+
231+let be = bd()
232+
233+let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
234+
235+let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
236+
237+let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
238+
239+let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
240+
241+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)], l)
242+
243+
244+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)], l)
245+
246+
247+func by (bz) = if ((bz == "WAVES"))
248+ then wavesBalance(this).available
249+ else assetBalance(this, fromBase58String(bz))
250+
251+
252+func bA (bB,bC) = fraction(bB, c, bC)
253+
254+
255+func bD (bE,bF,bG) = {
256+ let bH = fraction((bE - bF), b, bF)
257+ let bI = ((bG - P(bH)) > d)
258+ if (!(bI))
259+ then throw(("Big slpg: " + toString(bH)))
260+ else $Tuple2(bI, min([bE, bF]))
292261 }
293262
294263
295-func ca (cb,cc,cd,ce) = {
296- let cf = H(cd, cb)
297- let cg = H(ce, cc)
298- bL(cg, cf)
264+func bJ (bK,bL,bM) = {
265+ let bH = fraction(bL, b, bK)
266+ let bN = (bM > bH)
267+ if (if (bN)
268+ then true
269+ else (bL > bK))
270+ then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271+ else bN
299272 }
300273
301274
302-func ch (cd,ce,ci) = {
303- let cj = bk
304- let ck = bl
305- let cl = ca(cj, ck, cd, ce)
306- let bN = H(cd, cj)
307- let bM = H(ce, ck)
308- let cm = H(ci, a)
309- let cn = bL(bN, cm)
310- let co = bL(bM, cm)
311-[cl, cn, co]
275+func bO (bP,bQ,bR,bS) = {
276+ let bT = F(bR, bP)
277+ let bU = F(bS, bQ)
278+ bA(bU, bT)
312279 }
313280
314281
315-func cp (cd,ce,ci) = {
316- let cq = ch(cd, ce, ci)
317-[K(cq[0], a), K(cq[1], a), K(cq[2], a)]
282+func bV (bR,bS,bW) = {
283+ let bX = aL()
284+ let bY = parseIntValue(bX[w])
285+ let bZ = parseIntValue(bX[x])
286+ let ca = bO(bY, bZ, bR, bS)
287+ let bC = F(bR, bY)
288+ let bB = F(bS, bZ)
289+ let cb = F(bW, a)
290+ let cc = bA(bC, cb)
291+ let cd = bA(bB, cb)
292+[ca, cc, cd]
318293 }
319294
320295
321-func cr (cs,al) = {
322- let ct = if ((al == 0))
323- then 0
324- else fraction(cs, al, a)
325- $Tuple2((cs - ct), ct)
296+func ce (bR,bS,bW) = {
297+ let cf = bV(bR, bS, bW)
298+[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
326299 }
327300
328301
329-func cu (cv,cw,cx,cy) = {
330- let cz = bh
331- let cA = toBase58String(value(bi))
332- let cB = toBase58String(value(bj))
333- let cC = bk
334- let cD = bl
335- let cE = toString(bg)
336- let cF = valueOrErrorMessage(assetInfo(cz), "Wrong LP id").quantity
337- if ((toBase58String(cz) != cw))
302+func cg (ch,ci) = {
303+ let cj = if ((ci == 0))
304+ then 0
305+ else fraction(ch, ci, a)
306+ $Tuple2((ch - cj), cj)
307+ }
308+
309+
310+func ck (cl,cm,cn,co) = {
311+ let bX = aL()
312+ let cp = bX[t]
313+ let cq = bX[u]
314+ let cr = bX[v]
315+ let cs = parseIntValue(bX[w])
316+ let ct = parseIntValue(bX[x])
317+ let cu = bX[s]
318+ let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319+ if ((cp != cm))
338320 then throw("Wrong pmt asset")
339321 else {
340- let cG = bJ(cA)
341- let cH = H(cG, cC)
342- let cI = bJ(cB)
343- let cJ = H(cI, cD)
344- let cK = bL(cJ, cH)
345- let cL = K(cK, a)
346- let cM = H(cx, a)
347- let cN = H(cF, a)
348- let cO = fraction(cH, cM, cN)
349- let cP = fraction(cJ, cM, cN)
350- let cQ = N(cO, cC, FLOOR)
351- let cR = N(cP, cD, FLOOR)
352- let cS = if ((cv == ""))
322+ let cw = by(cq)
323+ let cx = F(cw, cs)
324+ let cy = by(cr)
325+ let cz = F(cy, ct)
326+ let cA = bA(cz, cx)
327+ let cB = I(cA, a)
328+ let cC = F(cn, a)
329+ let cD = F(cv, a)
330+ let cE = fraction(cx, cC, cD)
331+ let cF = fraction(cz, cC, cD)
332+ let cG = I(cE, cs)
333+ let cH = I(cF, ct)
334+ let cI = if ((cl == ""))
353335 then nil
354- else [ScriptTransfer(cy, cQ, if ((cA == "WAVES"))
336+ else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
355337 then unit
356- else fromBase58String(cA)), ScriptTransfer(cy, cR, if ((cB == "WAVES"))
338+ else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
357339 then unit
358- else fromBase58String(cB)), StringEntry(af(toString(cy), cv), bF(cQ, cR, cx, cL, height, lastBlock.timestamp)), IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL)]
359- $Tuple10(cQ, cR, cA, cB, cG, cI, cF, cK, cE, cS)
340+ else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341+ $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
360342 }
361343 }
362344
363345
364-func cT (cv,bS,cU,cV,cW,cX,cy,cY,cZ,da,db,dc,dd) = {
365- let cz = bh
366- let de = toBase58String(value(bi))
367- let df = toBase58String(value(bj))
368- let dg = bm
369- let dh = bn
370- let di = bk
371- let dj = bl
372- let cE = toString(bg)
373- let dk = valueOrErrorMessage(assetInfo(cz), "Wr lp as").quantity
374- let cG = if (cY)
375- then bJ(de)
376- else if (if (da)
377- then (dd == de)
346+func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347+ let bX = aL()
348+ let cp = fromBase58String(bX[t])
349+ let cU = bX[u]
350+ let cV = bX[v]
351+ let cW = bX[y]
352+ let cX = bX[z]
353+ let cY = parseIntValue(bX[w])
354+ let cZ = parseIntValue(bX[x])
355+ let cu = bX[s]
356+ let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357+ let cw = if (cO)
358+ then by(cU)
359+ else if (if (cQ)
360+ then (cT == cU)
378361 else false)
379- then (bJ(de) - dc)
380- else if (da)
381- then bJ(de)
382- else (bJ(de) - cU)
383- let cI = if (cY)
384- then bJ(df)
385- else if (if (da)
386- then (dd == df)
362+ then (by(cU) - cS)
363+ else if (cQ)
364+ then by(cU)
365+ else (by(cU) - cK)
366+ let cy = if (cO)
367+ then by(cV)
368+ else if (if (cQ)
369+ then (cT == cV)
387370 else false)
388- then (bJ(df) - dc)
389- else if (da)
390- then bJ(df)
391- else (bJ(df) - cW)
392- let dl = H(cU, di)
393- let dm = H(cW, dj)
394- let dn = bL(dm, dl)
395- let cH = H(cG, di)
396- let cJ = H(cI, dj)
397- let do = if ((dk == 0))
371+ then (by(cV) - cS)
372+ else if (cQ)
373+ then by(cV)
374+ else (by(cV) - cM)
375+ let db = F(cK, cY)
376+ let dc = F(cM, cZ)
377+ let dd = bA(dc, db)
378+ let cx = F(cw, cY)
379+ let cz = F(cy, cZ)
380+ let de = if ((da == 0))
398381 then {
399- let cK = d
400- let dp = d
401- let cm = pow((dl * dm), 0, toBigInt(5), 1, 0, DOWN)
402- $Tuple5(K(cm, a), K(dl, di), K(dm, dj), bL((cJ + dm), (cH + dl)), dp)
382+ let cA = d
383+ let df = d
384+ let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385+ $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
403386 }
404387 else {
405- let cK = bL(cJ, cH)
406- let dq = fraction(T((cK - dn)), c, cK)
407- let dp = H(bS, a)
408- if (if (if (db)
409- then (cK != d)
388+ let cA = bA(cz, cx)
389+ let dg = fraction(P((cA - dd)), c, cA)
390+ let df = F(bG, a)
391+ if (if (if (cR)
392+ then (cA != d)
410393 else false)
411- then (dq > dp)
394+ then (dg > df)
412395 else false)
413- then throw(((("Price slippage " + toString(dq)) + " > ") + toString(dp)))
396+ then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
414397 else {
415- let dr = H(dk, a)
416- let ds = fraction(dl, bO(cJ, cH, FLOOR), c, FLOOR)
417- let dt = fraction(dm, c, bO(cJ, cH, FLOOR), FLOOR)
418- let du = if ((ds > dm))
419- then $Tuple2(dt, dm)
420- else $Tuple2(dl, ds)
421- let dv = du._1
422- let dw = du._2
423- let cm = fraction(dr, dw, cJ, FLOOR)
424- $Tuple5(N(cm, a, FLOOR), N(dv, di, CEILING), N(dw, dj, CEILING), cK, dp)
398+ let dh = F(da, a)
399+ let di = fraction(db, cA, c)
400+ let dj = fraction(dc, c, cA)
401+ let dk = if ((di > dc))
402+ then $Tuple2(dj, dc)
403+ else $Tuple2(db, di)
404+ let dl = dk._1
405+ let dm = dk._2
406+ let cb = fraction(dh, dm, cz)
407+ $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
425408 }
426409 }
427- let dx = do._1
428- let dy = do._2
429- let dz = do._3
430- let cL = K(do._4, a)
431- let dA = K(do._5, a)
432- if ((0 >= dx))
410+ let dn = de._1
411+ let do = de._2
412+ let dp = de._3
413+ let cB = I(de._4, a)
414+ let dq = I(de._5, a)
415+ if ((0 >= dn))
433416 then throw("LP <= 0")
434417 else {
435- let dB = if (!(cZ))
418+ let dr = if (!(cP))
436419 then 0
437- else dx
438- let dC = (cU - dy)
439- let dD = (cW - dz)
440- let dE = if (if (da)
441- then (dd == de)
420+ else dn
421+ let ds = (cK - do)
422+ let dt = (cM - dp)
423+ let du = if (if (cQ)
424+ then (cT == cU)
442425 else false)
443- then $Tuple2(dc, 0)
444- else if (if (da)
445- then (dd == df)
426+ then $Tuple2(cS, 0)
427+ else if (if (cQ)
428+ then (cT == cV)
446429 else false)
447- then $Tuple2(0, dc)
448- else $Tuple2(dy, dz)
449- let dF = dE._1
450- let dG = dE._2
451- let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, cv), bu(dF, dG, dB, cL, bS, dA, height, lastBlock.timestamp, dC, dD))]
452- $Tuple13(dx, dB, cL, cG, cI, dk, cz, cE, dH, dC, dD, cV, cX)
430+ then $Tuple2(0, cS)
431+ else $Tuple2(do, dp)
432+ let dv = du._1
433+ let dw = du._2
434+ let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435+ $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
453436 }
454437 }
455438
456439
457-func dI (dJ) = {
458- let dK = dJ[0]
459- let dL = dJ[1]
460- let dM = (dK + dL)
461- if ((dM == e))
462- then e
440+func dy (dz) = {
441+ let bX = aL()
442+ let dA = bX[u]
443+ let dB = bX[v]
444+ let cu = parseIntValue(bX[s])
445+ let bY = parseIntValue(bX[w])
446+ let bZ = parseIntValue(bX[x])
447+ let dC = by(dA)
448+ let dD = by(dB)
449+ let cA = if ((dz.orderType == Buy))
450+ then bO(bY, bZ, (dC + dz.amount), dD)
451+ else bO(bY, bZ, (dC - dz.amount), dD)
452+ let cB = I(cA, a)
453+ if (if (if (aI())
454+ then true
455+ else (cu == p))
456+ then true
457+ else (cu == q))
458+ then throw("Admin blocked")
463459 else {
464- let dN = parseIntValue(aQ)
465- let dO = (dN * 2)
466- let cq = fraction(dK, dL, f)
467- let dP = fraction(cq, i, f)
468- let dQ = fraction(toBigInt(dO), dM, f)
469- let dR = toBigInt((dO - 1))
470- func dS (dT) = {
471- let dU = fraction(dT, dT, f)
472- let dV = fraction(dU, dT, f)
473- let dW = fraction(dV, f, dP)
474- fraction((dQ + fraction(dW, g, f)), dT, (fraction(dR, dT, f) + fraction(h, dW, f)), CEILING)
475- }
476-
477- func dX (dY,dZ) = if (dY._2)
478- then dY
460+ let dE = dz.assetPair.amountAsset
461+ let dF = if ((dE == unit))
462+ then "WAVES"
463+ else toBase58String(value(dE))
464+ let dG = dz.assetPair.priceAsset
465+ let dH = if ((dG == unit))
466+ then "WAVES"
467+ else toBase58String(value(dG))
468+ if (if ((dF != dA))
469+ then true
470+ else (dH != dB))
471+ then throw("Wr assets")
479472 else {
480- let dT = dY._1
481- let ea = dS(dT)
482- let eb = toInt((ea - value(dT)))
483- let ec = if ((0 > eb))
484- then -(eb)
485- else eb
486- if ((1 >= ec))
487- then $Tuple2(ea, true)
488- else $Tuple2(ea, false)
473+ let dI = dz.price
474+ let cZ = fraction(a, bZ, bY)
475+ let dJ = L(dI, a, cZ)
476+ let dK = if ((dz.orderType == Buy))
477+ then (cB >= dJ)
478+ else (dJ >= cB)
479+ true
489480 }
490-
491- let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
492- let ee = {
493- let ef = ed
494- let eg = size(ef)
495- let eh = $Tuple2(dM, false)
496- func ei (ej,ek) = if ((ek >= eg))
497- then ej
498- else dX(ej, ef[ek])
499-
500- func el (ej,ek) = if ((ek >= eg))
501- then ej
502- else throw("List size exceeds 15")
503-
504- el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
505- }
506- let dT = ee._1
507- let em = ee._2
508- if (em)
509- then dT
510- else throw(("D calculation error, D = " + toString(dT)))
511481 }
512482 }
513483
514484
515-func en (dJ) = {
516- let eo = g
517- let dK = dJ[0]
518- let dL = dJ[1]
519- let ep = parseBigIntValue(l)
520- let dN = (parseBigIntValue(aQ) * ep)
521- let dM = (dK + dL)
522- if ((dM == e))
485+func dL (dM) = if ((size(dM.payments) != 1))
486+ then throw("1 pmnt exp")
487+ else {
488+ let dN = value(dM.payments[0])
489+ let cm = value(dN.assetId)
490+ let cS = dN.amount
491+ let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492+ let cG = de._1
493+ let cH = de._2
494+ let cu = parseIntValue(de._9)
495+ let cI = de._10
496+ if (if (aI())
497+ then true
498+ else (cu == q))
499+ then throw(("Admin blocked: " + toString(cu)))
500+ else $Tuple5(cG, cH, cS, cm, cI)
501+ }
502+
503+
504+func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505+ let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506+ let cu = parseIntValue(de._8)
507+ if (if (if (aI())
508+ then true
509+ else (cu == o))
510+ then true
511+ else (cu == q))
512+ then throw(("Blocked:" + toString(cu)))
513+ else de
514+ }
515+
516+
517+func dS (dT) = {
518+ let dU = g
519+ let dV = dT[0]
520+ let dW = dT[1]
521+ let dX = parseBigIntValue(j)
522+ let dY = (parseBigIntValue(aH) * dX)
523+ let dZ = (dV + dW)
524+ if ((dZ == e))
523525 then e
524526 else {
525- let dO = (dN * eo)
526- let dP = (((dK * dL) * eo) * eo)
527- let eq = ((dO * dM) / ep)
528- let er = (dO - ep)
529- let es = (eo + f)
530- func dX (dY,et) = {
531- let eu = dY
532- let dT = eu._1
533- let em = eu._2
534- if ((em != unit))
535- then dY
527+ let ea = (dY * dU)
528+ let eb = (((dV * dW) * dU) * dU)
529+ let ec = ((ea * dZ) / dX)
530+ let ed = (ea - dX)
531+ let ee = (dU + f)
532+ func ef (eg,eh) = {
533+ let ei = eg
534+ let ej = ei._1
535+ let ek = ei._2
536+ if ((ek != unit))
537+ then eg
536538 else {
537- let dW = (((dT * dT) * dT) / dP)
538- let ea = (((eq + (dW * eo)) * dT) / (((er * dT) / ep) + (es * dW)))
539- let ec = U((ea - value(dT)))
540- if ((f >= ec))
541- then $Tuple2(ea, et)
542- else $Tuple2(ea, unit)
539+ let el = (((ej * ej) * ej) / eb)
540+ let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541+ let en = Q((em - value(ej)))
542+ if ((f >= en))
543+ then $Tuple2(em, eh)
544+ else $Tuple2(em, unit)
543545 }
544546 }
545547
546- let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
547- let ev = {
548- let ef = ed
549- let eg = size(ef)
550- let eh = $Tuple2(dM, unit)
551- func ei (ej,ek) = if ((ek >= eg))
552- then ej
553- else dX(ej, ef[ek])
548+ let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549+ let ep = {
550+ let eq = eo
551+ let er = size(eq)
552+ let es = $Tuple2(dZ, unit)
553+ func et (eu,ev) = if ((ev >= er))
554+ then eu
555+ else ef(eu, eq[ev])
554556
555- func el (ej,ek) = if ((ek >= eg))
556- then ej
557+ func ew (eu,ev) = if ((ev >= er))
558+ then eu
557559 else throw("List size exceeds 15")
558560
559- el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
561+ ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
560562 }
561- let dT = ev._1
562- let em = ev._2
563- if ((em != unit))
564- then dT
565- else throw(("D calculation error, D = " + toString(dT)))
563+ let ej = ep._1
564+ let ek = ep._2
565+ if ((ek != unit))
566+ then ej
567+ else throw(("D calculation error, D = " + toString(ej)))
566568 }
567569 }
568570
569571
570-func ew (dJ,dZ,ex) = {
571- let eo = g
572- let ey = dJ[if ((dZ == 0))
572+func ex (dT,dM,ey) = {
573+ let dU = g
574+ let ez = dT[if ((dM == 0))
573575 then 1
574576 else 0]
575- let ep = parseBigIntValue(l)
576- let dN = (parseBigIntValue(aQ) * ep)
577- let dM = ey
578- let dO = (dN * eo)
579- let ez = (((((ex * ex) / (ey * eo)) * ex) * ep) / (dO * eo))
580- let eA = ((dM + ((ex * ep) / dO)) - ex)
581- func dX (dY,et) = {
582- let eB = dY
583- let eC = eB._1
584- let em = eB._2
585- if ((em != unit))
586- then dY
577+ let dX = parseBigIntValue(j)
578+ let dY = (parseBigIntValue(aH) * dX)
579+ let dZ = ez
580+ let ea = (dY * dU)
581+ let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582+ let eB = ((dZ + ((ey * dX) / ea)) - ey)
583+ func ef (eg,eh) = {
584+ let eC = eg
585+ let eD = eC._1
586+ let ek = eC._2
587+ if ((ek != unit))
588+ then eg
587589 else {
588- let eD = (((eC * eC) + ez) / ((g * eC) + eA))
589- let eE = U((eD - value(eC)))
590- if ((f >= eE))
591- then $Tuple2(eD, et)
592- else $Tuple2(eD, unit)
590+ let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591+ let eF = Q((eE - value(eD)))
592+ if ((f >= eF))
593+ then $Tuple2(eE, eh)
594+ else $Tuple2(eE, unit)
593595 }
594596 }
595597
596- let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
597- let eF = {
598- let ef = ed
599- let eg = size(ef)
600- let eh = $Tuple2(ex, unit)
601- func ei (ej,ek) = if ((ek >= eg))
602- then ej
603- else dX(ej, ef[ek])
598+ let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599+ let eG = {
600+ let eq = eo
601+ let er = size(eq)
602+ let es = $Tuple2(ey, unit)
603+ func et (eu,ev) = if ((ev >= er))
604+ then eu
605+ else ef(eu, eq[ev])
604606
605- func el (ej,ek) = if ((ek >= eg))
606- then ej
607+ func ew (eu,ev) = if ((ev >= er))
608+ then eu
607609 else throw("List size exceeds 15")
608610
609- el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
611+ ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
610612 }
611- let eC = eF._1
612- let em = eF._2
613- if ((em != unit))
614- then eC
615- else throw(("Y calculation error, Y = " + toString(eC)))
613+ let eD = eG._1
614+ let ek = eG._2
615+ if ((ek != unit))
616+ then eD
617+ else throw(("Y calculation error, Y = " + toString(eD)))
616618 }
617619
618620
619-func eG (eH,eI,eJ) = {
620- let eK = fraction(dI([eH, eI]), c, eJ)
621- if ((eJ == e))
622- then e
623- else eK
624- }
625-
626-
627-func eL (eM,eN,eO) = {
628- let eP = (toBigInt(bJ(ba(bi))) - eM)
629- let eQ = (toBigInt(bJ(ba(bj))) - eN)
630- let eR = (toBigInt(value(assetInfo(bh)).quantity) - eO)
631- let eS = eG(eP, eQ, eR)
632- eS
633- }
634-
635-
636-func eT (eU,eV,eO) = {
637- let eP = (bJ(ba(bi)) + eU)
638- let eQ = (bJ(ba(bj)) + eV)
639- let eR = (value(assetInfo(bh)).quantity + eO)
640- let eK = eG(toBigInt(eP), toBigInt(eQ), toBigInt(eR))
641- let eW = [IntegerEntry(an, height), StringEntry(am, toString(eK))]
642- $Tuple2(eW, eK)
643- }
644-
645-
646-func eX (eY,eK) = if ((eK >= eY))
647- then true
648- else aJ("updated DLp lower than current DLp")
649-
650-
651-func eZ (fa) = {
652- let fb = fa.amount
653- let fc = fraction(fa.amount, fa.price, a, FLOOR)
654- let fd = if ((fa.orderType == Buy))
655- then $Tuple2(fb, -(fc))
656- else $Tuple2(-(fb), fc)
657- let eU = fd._1
658- let eV = fd._2
659- if (if (if (aR())
660- then true
661- else (bg == r))
662- then true
663- else (bg == s))
664- then throw("Admin blocked")
665- else if (if ((fa.assetPair.amountAsset != bi))
666- then true
667- else (fa.assetPair.priceAsset != bj))
668- then throw("Wr assets")
669- else {
670- let fe = parseBigIntValue(getStringValue(this, am))
671- let ff = eT(eU, eV, 0)
672- let fg = ff._1
673- let fh = ff._2
674- let fi = (fh >= fe)
675- fi
676- }
677- }
678-
679-
680-func fj (dZ) = if ((size(dZ.payments) != 1))
681- then throw("1 pmnt exp")
682- else {
683- let fk = value(dZ.payments[0])
684- let cw = value(fk.assetId)
685- let dc = fk.amount
686- let do = cu(toBase58String(dZ.transactionId), toBase58String(cw), dc, dZ.caller)
687- let cQ = do._1
688- let cR = do._2
689- let cE = parseIntValue(do._9)
690- let cS = do._10
691- if (if (aR())
692- then true
693- else (cE == s))
694- then throw(("Admin blocked: " + toString(cE)))
695- else $Tuple5(cQ, cR, dc, cw, cS)
696- }
697-
698-
699-func fl (fm,ae,fn,fo,bS,cZ,da,db,dc,dd) = {
700- let do = cT(ae, bS, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ae == ""), cZ, da, db, dc, dd)
701- let cE = parseIntValue(do._8)
702- if (if (if (aR())
703- then true
704- else (cE == q))
705- then true
706- else (cE == s))
707- then throw(("Blocked:" + toString(cE)))
708- else do
709- }
710-
711-
712-func fp (fq,cw,cy,ae,fr) = {
713- let cA = toBase58String(value(bi))
714- let cB = toBase58String(value(bj))
715- let cz = bh
716- let di = bk
717- let dj = bl
718- let eR = toBigInt(valueOrErrorMessage(assetInfo(cz), "invalid lp asset").quantity)
719- let fs = if ((eR > e))
621+func eH (eI,cm,co,aa,eJ) = {
622+ let aT = aL()
623+ let cq = aT[u]
624+ let cr = aT[v]
625+ let cp = aT[t]
626+ let cY = parseIntValue(aT[w])
627+ let cZ = parseIntValue(aT[x])
628+ let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629+ let eL = if ((eK > e))
720630 then true
721631 else throw("initial deposit requires all coins")
722- if ((fs == fs))
632+ if ((eL == eL))
723633 then {
724- let cG = bJ(cA)
725- let cI = bJ(cB)
726- let ft = if ((ae == ""))
727- then $Tuple2(cG, cI)
728- else if ((cw == cA))
729- then if ((fq > cG))
634+ let cw = by(cq)
635+ let cy = by(cr)
636+ let eM = if ((aa == ""))
637+ then $Tuple2(cw, cy)
638+ else if ((cm == cq))
639+ then if ((eI > cw))
730640 then throw("invalid payment amount")
731- else $Tuple2((cG - fq), cI)
732- else if ((cw == cB))
733- then if ((fq > cI))
641+ else $Tuple2((cw - eI), cy)
642+ else if ((cm == cr))
643+ then if ((eI > cy))
734644 then throw("invalid payment amount")
735- else $Tuple2(cG, (cI - fq))
645+ else $Tuple2(cw, (cy - eI))
736646 else throw("wrong pmtAssetId")
737- let fu = ft._1
738- let fv = ft._2
739- let fw = if ((cw == cA))
740- then $Tuple2(fq, 0)
741- else if ((cw == cB))
742- then $Tuple2(0, fq)
647+ let eN = eM._1
648+ let eO = eM._2
649+ let eP = if ((cm == cq))
650+ then $Tuple2(eI, 0)
651+ else if ((cm == cr))
652+ then $Tuple2(0, eI)
743653 else throw("invalid payment")
744- let fx = fw._1
745- let fy = fw._2
746- let fz = if (fr)
747- then $Tuple3(cr(fx, aN)._1, cr(fy, aN)._1, cr(fq, aN)._2)
748- else $Tuple3(fx, fy, 0)
749- let fA = fz._1
750- let fB = fz._2
751- let ct = fz._3
752- let fC = (fu + fA)
753- let fD = (fv + fB)
754- let bX = dI([toBigInt(fu), toBigInt(fv)])
755- let bW = dI([toBigInt(fC), toBigInt(fD)])
756- let fE = if ((bW > bX))
654+ let eQ = eP._1
655+ let eR = eP._2
656+ let eS = if (eJ)
657+ then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658+ else $Tuple3(eQ, eR, 0)
659+ let eT = eS._1
660+ let eU = eS._2
661+ let cj = eS._3
662+ let eV = (eN + eT)
663+ let eW = (eO + eU)
664+ let bL = dS([toBigInt(eN), toBigInt(eO)])
665+ let bK = dS([toBigInt(eV), toBigInt(eW)])
666+ let eX = if ((bK > bL))
757667 then true
758668 else throw()
759- if ((fE == fE))
669+ if ((eX == eX))
760670 then {
761- let fF = fraction(eR, (bW - bX), bX, FLOOR)
762- let cL = K(bL(H(fD, dj), H(fC, di)), a)
763- let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, ae), bu(fx, fy, toInt(fF), cL, 0, 0, height, lastBlock.timestamp, 0, 0))]
764- let fG = fraction(fv, a, fu)
765- let fH = fraction(fq, a, (fG + a))
766- let fI = (fq - fH)
767- let fJ = fraction(eR, toBigInt(fI), toBigInt(fv))
768- let fK = toInt(fraction((fF - fJ), b, fJ))
769- $Tuple4(toInt(fF), dH, ct, fK)
671+ let eY = fraction(eK, (bK - bL), bL)
672+ let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673+ let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674+ let eZ = fraction(eO, a, eN)
675+ let fa = fraction(eI, a, (eZ + a))
676+ let fb = (eI - fa)
677+ let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678+ let fd = toInt(fraction((eY - fc), b, fc))
679+ $Tuple4(toInt(eY), dx, cj, fd)
770680 }
771681 else throw("Strict value is not equal to itself.")
772682 }
774684 }
775685
776686
777-func fL (fM,fN,fO,fm,fP,fQ) = {
778- let cz = toBase58String(value(bh))
779- let cA = toBase58String(value(bi))
780- let cB = toBase58String(value(bj))
781- let fR = bk
782- let fS = bl
783- let fT = bg
784- let cy = if ((fm == bt))
785- then fP
786- else fm
787- let fk = value(fO[0])
788- let cw = value(fk.assetId)
789- let dc = fk.amount
790- let eS = eL(e, e, e)
791- if ((eS == eS))
792- then {
793- let cv = toBase58String(fQ)
794- if ((cz != toBase58String(cw)))
795- then throw("Wrong LP")
796- else {
797- let cG = bJ(cA)
798- let cI = bJ(cB)
799- let fU = {
800- let aO = invoke(this, "getOneTknV2READONLY", [fM, dc], nil)
801- if ($isInstanceOf(aO, "(Int, Int)"))
802- then aO
803- else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
804- }
805- if ((fU == fU))
687+func fe (ff,fg,fh,dP,fi,fj) = {
688+ let aT = aL()
689+ let cp = aT[t]
690+ let cq = aT[u]
691+ let cr = aT[v]
692+ let fk = parseIntValue(aT[w])
693+ let fl = parseIntValue(aT[x])
694+ let fm = aT[s]
695+ let co = if ((dP == bi))
696+ then fi
697+ else dP
698+ let dN = value(fh[0])
699+ let cm = value(dN.assetId)
700+ let cS = dN.amount
701+ let cl = toBase58String(fj)
702+ if ((cp != toBase58String(cm)))
703+ then throw("Wrong LP")
704+ else {
705+ let cw = by(cq)
706+ let cy = by(cr)
707+ let fn = {
708+ let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709+ if ($isInstanceOf(aF, "(Int, Int)"))
710+ then aF
711+ else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
712+ }
713+ if ((fn == fn))
714+ then {
715+ let cj = fn._2
716+ let fo = fn._1
717+ let fp = if (if ((fg > 0))
718+ then (fg > fo)
719+ else false)
720+ then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721+ else fo
722+ let fq = if ((ff == cq))
723+ then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724+ else if ((ff == cr))
725+ then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726+ else throw("invalid out asset id")
727+ let fr = fq._1
728+ let fs = fq._2
729+ let eV = fq._3
730+ let eW = fq._4
731+ let ft = bA(F(eW, fl), F(eV, fk))
732+ let fu = I(ft, a)
733+ let fv = if ((ff == "WAVES"))
734+ then unit
735+ else fromBase58String(ff)
736+ let fw = if ((cj > 0))
737+ then [ScriptTransfer(aK, cj, fv)]
738+ else nil
739+ let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740+ if ((cI == cI))
806741 then {
807- let ct = fU._2
808- let fV = fU._1
809- let fW = if (if ((fN > 0))
810- then (fN > fV)
811- else false)
812- then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
813- else fV
814- let fX = if ((fM == cA))
815- then $Tuple4(fW, 0, ((cG - fW) - ct), cI)
816- else if ((fM == cB))
817- then $Tuple4(0, fW, cG, ((cI - fW) - ct))
818- else throw("invalid out asset id")
819- let fY = fX._1
820- let fZ = fX._2
821- let fC = fX._3
822- let fD = fX._4
823- let ga = bL(H(fD, fS), H(fC, fR))
824- let gb = K(ga, a)
825- let gc = if ((fM == "WAVES"))
826- then unit
827- else fromBase58String(fM)
828- let gd = if ((ct > 0))
829- then [ScriptTransfer(aT, ct, gc)]
830- else nil
831- let cS = ([ScriptTransfer(cy, fW, gc), StringEntry(af(toString(cy), cv), bF(fY, fZ, dc, gb, height, lastBlock.timestamp)), IntegerEntry(Y(), gb), IntegerEntry(Z(height, lastBlock.timestamp), gb)] ++ gd)
832- if ((cS == cS))
833- then {
834- let ge = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
835- if ((ge == ge))
836- then {
837- let gf = {
838- let gg = if ((this == aT))
839- then 0
840- else ct
841- let gh = if ((aY(fM) == bi))
842- then true
843- else false
844- if (gh)
845- then $Tuple2(-((fV + gg)), 0)
846- else $Tuple2(0, -((fV + gg)))
847- }
848- let eU = gf._1
849- let eV = gf._2
850- let gi = eT(eU, eV, 0)
851- let gj = gi._1
852- let eK = gi._2
853- let gk = eX(eS, eK)
854- if ((gk == gk))
855- then $Tuple2((cS ++ gj), fW)
856- else throw("Strict value is not equal to itself.")
857- }
858- else throw("Strict value is not equal to itself.")
859- }
742+ let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743+ if ((fx == fx))
744+ then $Tuple2(cI, fp)
860745 else throw("Strict value is not equal to itself.")
861746 }
862747 else throw("Strict value is not equal to itself.")
863748 }
749+ else throw("Strict value is not equal to itself.")
864750 }
865- else throw("Strict value is not equal to itself.")
866751 }
867752
868753
869-func gl () = {
870- let gm = getString(W())
871- if ($isInstanceOf(gm, "String"))
754+func fy () = {
755+ let av = getString(S())
756+ if ($isInstanceOf(av, "String"))
872757 then {
873- let dM = gm
874- fromBase58String(dM)
758+ let dZ = av
759+ fromBase58String(dZ)
875760 }
876- else if ($isInstanceOf(gm, "Unit"))
761+ else if ($isInstanceOf(av, "Unit"))
877762 then unit
878763 else throw("Match error")
879764 }
880765
881766
882-func gn () = {
883- let gm = getString(X())
884- if ($isInstanceOf(gm, "String"))
767+func fz () = {
768+ let av = getString(T())
769+ if ($isInstanceOf(av, "String"))
885770 then {
886- let dM = gm
887- fromBase58String(dM)
771+ let dZ = av
772+ fromBase58String(dZ)
888773 }
889- else if ($isInstanceOf(gm, "Unit"))
774+ else if ($isInstanceOf(av, "Unit"))
890775 then unit
891776 else throw("Match error")
892777 }
893778
894779
895-let go = throw("Permission denied")
780+let fA = throw("Permission denied")
896781
897-func gp (dZ) = {
898- let gm = gl()
899- if ($isInstanceOf(gm, "ByteVector"))
782+func fB (dM) = {
783+ let av = fy()
784+ if ($isInstanceOf(av, "ByteVector"))
900785 then {
901- let gq = gm
902- (dZ.callerPublicKey == gq)
786+ let fC = av
787+ (dM.callerPublicKey == fC)
903788 }
904- else if ($isInstanceOf(gm, "Unit"))
905- then (dZ.caller == this)
789+ else if ($isInstanceOf(av, "Unit"))
790+ then (dM.caller == this)
906791 else throw("Match error")
907792 }
908793
909794
910-func gr (dZ) = {
911- let gm = gl()
912- if ($isInstanceOf(gm, "ByteVector"))
795+func fD (dM) = {
796+ let av = fy()
797+ if ($isInstanceOf(av, "ByteVector"))
913798 then {
914- let gq = gm
915- if ((dZ.callerPublicKey == gq))
799+ let fC = av
800+ if ((dM.callerPublicKey == fC))
916801 then true
917- else go
802+ else fA
918803 }
919- else if ($isInstanceOf(gm, "Unit"))
920- then if ((dZ.caller == this))
804+ else if ($isInstanceOf(av, "Unit"))
805+ then if ((dM.caller == this))
921806 then true
922- else go
807+ else fA
923808 else throw("Match error")
924809 }
925810
926811
927-@Callable(dZ)
928-func constructor (V) = {
929- let ez = gr(dZ)
930- if ((ez == ez))
931- then [StringEntry(V(), V)]
812+@Callable(dM)
813+func constructor (R) = {
814+ let eA = fD(dM)
815+ if ((eA == eA))
816+ then [StringEntry(R(), R)]
932817 else throw("Strict value is not equal to itself.")
933818 }
934819
935820
936821
937-@Callable(dZ)
938-func setManager (gs) = {
939- let ez = gr(dZ)
940- if ((ez == ez))
822+@Callable(dM)
823+func setManager (fE) = {
824+ let eA = fD(dM)
825+ if ((eA == eA))
941826 then {
942- let gt = fromBase58String(gs)
943- if ((gt == gt))
944- then [StringEntry(X(), gs)]
827+ let fF = fromBase58String(fE)
828+ if ((fF == fF))
829+ then [StringEntry(T(), fE)]
945830 else throw("Strict value is not equal to itself.")
946831 }
947832 else throw("Strict value is not equal to itself.")
949834
950835
951836
952-@Callable(dZ)
837+@Callable(dM)
953838 func confirmManager () = {
954- let cq = gn()
955- let gu = if (isDefined(cq))
839+ let cf = fz()
840+ let fG = if (isDefined(cf))
956841 then true
957842 else throw("No pending manager")
958- if ((gu == gu))
843+ if ((fG == fG))
959844 then {
960- let gv = if ((dZ.callerPublicKey == value(cq)))
845+ let fH = if ((dM.callerPublicKey == value(cf)))
961846 then true
962847 else throw("You are not pending manager")
963- if ((gv == gv))
964- then [StringEntry(W(), toBase58String(value(cq))), DeleteEntry(X())]
848+ if ((fH == fH))
849+ then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
965850 else throw("Strict value is not equal to itself.")
966851 }
967852 else throw("Strict value is not equal to itself.")
969854
970855
971856
972-@Callable(dZ)
973-func put (gw,gx) = {
974- let gy = bo()
975- let gz = valueOrErrorMessage(addressFromString(gy[C]), "Wr st addr")
976- let gA = valueOrErrorMessage(addressFromString(gy[E]), "Wr sl addr")
977- if ((0 > gw))
857+@Callable(dM)
858+func put (fI,fJ) = {
859+ let fK = bd()
860+ let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861+ let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862+ if ((0 > fI))
978863 then throw("Wrong slippage")
979- else if ((size(dZ.payments) != 2))
864+ else if ((size(dM.payments) != 2))
980865 then throw("2 pmnts expd")
981866 else {
982- let gB = toBigInt(value(dZ.payments[0]).amount)
983- let gC = toBigInt(value(dZ.payments[1]).amount)
984- let eP = (toBigInt(bJ(ba(bi))) - gB)
985- if ((eP == eP))
867+ let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868+ let dr = fN._2
869+ let fO = fN._7
870+ let cI = fN._9
871+ let ds = fN._10
872+ let dt = fN._11
873+ let cq = fN._12
874+ let cr = fN._13
875+ let de = invoke(aD, "emit", [dr], nil)
876+ if ((de == de))
986877 then {
987- let eQ = (toBigInt(bJ(ba(bj))) - gC)
988- if ((eQ == eQ))
878+ let fP = {
879+ let av = de
880+ if ($isInstanceOf(av, "Address"))
881+ then {
882+ let fQ = av
883+ invoke(fQ, "emit", [dr], nil)
884+ }
885+ else unit
886+ }
887+ if ((fP == fP))
989888 then {
990- let eR = toBigInt(value(assetInfo(bh)).quantity)
991- if ((eR == eR))
889+ let fR = if ((ds > 0))
890+ then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891+ else nil
892+ if ((fR == fR))
992893 then {
993- let eS = eL(gB, gC, toBigInt(0))
994- if ((eS == eS))
894+ let fS = if ((dt > 0))
895+ then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
896+ else nil
897+ if ((fS == fS))
995898 then {
996- let gD = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gw, true, false, true, 0, "")
997- let dB = gD._2
998- let gE = gD._7
999- let cS = gD._9
1000- let dC = gD._10
1001- let dD = gD._11
1002- let cA = gD._12
1003- let cB = gD._13
1004- let do = invoke(aM, "emit", [dB], nil)
1005- if ((do == do))
899+ let fT = if (fJ)
1006900 then {
1007- let gF = {
1008- let gm = do
1009- if ($isInstanceOf(gm, "Address"))
1010- then {
1011- let gG = gm
1012- invoke(gG, "emit", [dB], nil)
1013- }
1014- else unit
1015- }
1016- if ((gF == gF))
1017- then {
1018- let gH = if ((dC > 0))
1019- then invoke(gA, "put", nil, [AttachedPayment(cA, dC)])
1020- else nil
1021- if ((gH == gH))
1022- then {
1023- let gI = if ((dD > 0))
1024- then invoke(gA, "put", nil, [AttachedPayment(cB, dD)])
1025- else nil
1026- if ((gI == gI))
1027- then {
1028- let gJ = if (gx)
1029- then {
1030- let gK = invoke(gz, "stake", nil, [AttachedPayment(gE, dB)])
1031- if ((gK == gK))
1032- then nil
1033- else throw("Strict value is not equal to itself.")
1034- }
1035- else [ScriptTransfer(dZ.caller, dB, gE)]
1036- let gL = eT(0, 0, 0)
1037- let gj = gL._1
1038- let eK = gL._2
1039- let gM = if ((eK >= eS))
1040- then true
1041- else aJ(makeString(["updated DLp lower than current DLp", toString(eP), toString(eQ), toString(eR), toString(eS), toString(eK), toString(dC), toString(dD)], " "))
1042- if ((gM == gM))
1043- then {
1044- let gN = value(assetInfo(bh)).quantity
1045- if ((gN == gN))
1046- then ((cS ++ gJ) ++ gj)
1047- else throw("Strict value is not equal to itself.")
1048- }
1049- else throw("Strict value is not equal to itself.")
1050- }
1051- else throw("Strict value is not equal to itself.")
1052- }
1053- else throw("Strict value is not equal to itself.")
1054- }
901+ let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902+ if ((fU == fU))
903+ then nil
1055904 else throw("Strict value is not equal to itself.")
1056905 }
1057- else throw("Strict value is not equal to itself.")
906+ else [ScriptTransfer(dM.caller, dr, fO)]
907+ (cI ++ fT)
1058908 }
1059909 else throw("Strict value is not equal to itself.")
1060910 }
1068918
1069919
1070920
1071-@Callable(dZ)
1072-func putOneTknV2 (fN,gx) = {
1073- let gO = {
1074- let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1075- if ($isInstanceOf(aO, "Boolean"))
1076- then aO
1077- else throw(($getType(aO) + " couldn't be cast to Boolean"))
921+@Callable(dM)
922+func putOneTknV2 (fg,fJ) = {
923+ let fV = {
924+ let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925+ if ($isInstanceOf(aF, "Boolean"))
926+ then aF
927+ else throw(($getType(aF) + " couldn't be cast to Boolean"))
1078928 }
1079- let gP = if (if (if (aR())
929+ let fW = if (if (if (aI())
1080930 then true
1081- else (bg == q))
931+ else (aX == o))
1082932 then true
1083- else (bg == s))
933+ else (aX == q))
1084934 then true
1085- else gO
1086- let gQ = [if (if (!(gP))
935+ else fV
936+ let fX = [if (if (!(fW))
1087937 then true
1088- else gp(dZ))
938+ else fB(dM))
1089939 then true
1090- else aJ("put operation is blocked by admin"), if ((size(dZ.payments) == 1))
940+ else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1091941 then true
1092- else aJ("exactly 1 payment are expected")]
1093- if ((gQ == gQ))
942+ else aB("exactly 1 payment are expected")]
943+ if ((fX == fX))
1094944 then {
1095- let cA = toBase58String(value(bi))
1096- let cB = toBase58String(value(bj))
1097- let cz = bh
1098- let fR = bk
1099- let fS = bl
1100- let cy = if ((dZ.caller == this))
1101- then dZ.originCaller
1102- else dZ.caller
1103- let fk = value(dZ.payments[0])
1104- let cw = toBase58String(value(fk.assetId))
1105- let dc = fk.amount
1106- let eS = if ((fk.assetId == bi))
1107- then eL(toBigInt(dc), toBigInt(0), toBigInt(0))
1108- else eL(toBigInt(0), toBigInt(dc), toBigInt(0))
1109- if ((eS == eS))
945+ let aT = aL()
946+ let cq = aT[u]
947+ let cr = aT[v]
948+ let cp = fromBase58String(aT[t])
949+ let fk = parseIntValue(aT[w])
950+ let fl = parseIntValue(aT[x])
951+ let co = if ((dM.caller == this))
952+ then dM.originCaller
953+ else dM.caller
954+ let dN = value(dM.payments[0])
955+ let cm = toBase58String(value(dN.assetId))
956+ let cS = dN.amount
957+ let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958+ if ((fY == fY))
1110959 then {
1111- let gR = fp(dc, cw, toString(cy), toBase58String(dZ.transactionId), true)
1112- if ((gR == gR))
960+ let cj = fY._3
961+ let cI = fY._2
962+ let fZ = fY._1
963+ let dr = if (if ((fg > 0))
964+ then (fg > fZ)
965+ else false)
966+ then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967+ else fZ
968+ let fN = invoke(aD, "emit", [dr], nil)
969+ if ((fN == fN))
1113970 then {
1114- let ct = gR._3
1115- let cS = gR._2
1116- let gS = gR._1
1117- let dB = if (if ((fN > 0))
1118- then (fN > gS)
1119- else false)
1120- then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
1121- else gS
1122- let gD = invoke(aM, "emit", [dB], nil)
1123- if ((gD == gD))
971+ let fP = {
972+ let av = fN
973+ if ($isInstanceOf(av, "Address"))
974+ then {
975+ let fQ = av
976+ invoke(fQ, "emit", [dr], nil)
977+ }
978+ else unit
979+ }
980+ if ((fP == fP))
1124981 then {
1125- let gF = {
1126- let gm = gD
1127- if ($isInstanceOf(gm, "Address"))
1128- then {
1129- let gG = gm
1130- invoke(gG, "emit", [dB], nil)
1131- }
1132- else unit
1133- }
1134- if ((gF == gF))
982+ let fT = if (fJ)
1135983 then {
1136- let gJ = if (gx)
1137- then {
1138- let gK = invoke(bq, "stake", nil, [AttachedPayment(cz, dB)])
1139- if ((gK == gK))
1140- then nil
1141- else throw("Strict value is not equal to itself.")
1142- }
1143- else [ScriptTransfer(dZ.caller, dB, cz)]
1144- let gd = if ((ct > 0))
1145- then [ScriptTransfer(aT, ct, fromBase58String(cw))]
1146- else nil
1147- let gT = if ((this == aT))
1148- then $Tuple2(0, 0)
1149- else {
1150- let gU = if ((fk.assetId == bi))
1151- then true
1152- else false
1153- if (gU)
1154- then $Tuple2(-(ct), 0)
1155- else $Tuple2(0, -(ct))
1156- }
1157- let eU = gT._1
1158- let eV = gT._2
1159- let gV = eT(eU, eV, 0)
1160- let gj = gV._1
1161- let eK = gV._2
1162- let gk = eX(eS, eK)
1163- if ((gk == gk))
1164- then $Tuple2((((cS ++ gJ) ++ gd) ++ gj), dB)
984+ let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985+ if ((fU == fU))
986+ then nil
1165987 else throw("Strict value is not equal to itself.")
1166988 }
1167- else throw("Strict value is not equal to itself.")
989+ else [ScriptTransfer(dM.caller, dr, cp)]
990+ let fw = if ((cj > 0))
991+ then [ScriptTransfer(aK, cj, fromBase58String(cm))]
992+ else nil
993+ $Tuple2(((cI ++ fT) ++ fw), dr)
1168994 }
1169995 else throw("Strict value is not equal to itself.")
1170996 }
11771003
11781004
11791005
1180-@Callable(dZ)
1181-func putForFree (gW) = if ((0 > gW))
1006+@Callable(dM)
1007+func putForFree (ga) = if ((0 > ga))
11821008 then throw("Wrong slpg")
1183- else if ((size(dZ.payments) != 2))
1009+ else if ((size(dM.payments) != 2))
11841010 then throw("2 pmnts expd")
11851011 else {
1186- let gX = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gW, false, false, true, 0, "")
1187- let cS = gX._9
1188- let gB = toBigInt(value(dZ.payments[0]).amount)
1189- let gC = toBigInt(value(dZ.payments[1]).amount)
1190- let eS = eL(gB, gC, toBigInt(0))
1191- if ((eS == eS))
1192- then {
1193- let gY = eT(0, 0, 0)
1194- let gj = gY._1
1195- let eK = gY._2
1196- let gk = eX(eS, eK)
1197- if ((gk == gk))
1198- then (cS ++ gj)
1199- else throw("Strict value is not equal to itself.")
1200- }
1201- else throw("Strict value is not equal to itself.")
1012+ let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013+ gb._9
12021014 }
12031015
12041016
12051017
1206-@Callable(dZ)
1018+@Callable(dM)
12071019 func get () = {
1208- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1209- if ((eS == eS))
1020+ let de = dL(dM)
1021+ let gc = de._1
1022+ let cH = de._2
1023+ let cS = de._3
1024+ let cm = de._4
1025+ let cI = de._5
1026+ let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027+ if ((eB == eB))
1028+ then cI
1029+ else throw("Strict value is not equal to itself.")
1030+ }
1031+
1032+
1033+
1034+@Callable(dM)
1035+func getOneTknV2 (ff,fg) = {
1036+ let fV = {
1037+ let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038+ if ($isInstanceOf(aF, "Boolean"))
1039+ then aF
1040+ else throw(($getType(aF) + " couldn't be cast to Boolean"))
1041+ }
1042+ let gd = if (if (aI())
1043+ then true
1044+ else (aX == q))
1045+ then true
1046+ else fV
1047+ let fX = [if (if (!(gd))
1048+ then true
1049+ else fB(dM))
1050+ then true
1051+ else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1052+ then true
1053+ else aB("exactly 1 payment are expected")]
1054+ if ((fX == fX))
12101055 then {
1211- let do = fj(dZ)
1212- let gZ = do._1
1213- let cR = do._2
1214- let dc = do._3
1215- let cw = do._4
1216- let cS = do._5
1217- let eA = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1218- if ((eA == eA))
1219- then {
1220- let ha = eT(-(gZ), -(cR), 0)
1221- let gj = ha._1
1222- let eK = ha._2
1223- let gk = eX(eS, eK)
1224- if ((gk == gk))
1225- then (cS ++ gj)
1226- else throw("Strict value is not equal to itself.")
1227- }
1228- else throw("Strict value is not equal to itself.")
1056+ let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057+ let cI = ge._1
1058+ let fp = ge._2
1059+ $Tuple2(cI, fp)
12291060 }
12301061 else throw("Strict value is not equal to itself.")
12311062 }
12321063
12331064
12341065
1235-@Callable(dZ)
1236-func getOneTknV2 (fM,fN) = {
1237- let gO = {
1238- let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1239- if ($isInstanceOf(aO, "Boolean"))
1240- then aO
1241- else throw(($getType(aO) + " couldn't be cast to Boolean"))
1242- }
1243- let hb = if (if (aR())
1244- then true
1245- else (bg == s))
1246- then true
1247- else gO
1248- let gQ = [if (if (!(hb))
1249- then true
1250- else gp(dZ))
1251- then true
1252- else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 1))
1253- then true
1254- else aJ("exactly 1 payment are expected")]
1255- if ((gQ == gQ))
1256- then {
1257- let hc = fL(fM, fN, dZ.payments, dZ.caller, dZ.originCaller, dZ.transactionId)
1258- let cS = hc._1
1259- let fW = hc._2
1260- $Tuple2(cS, fW)
1261- }
1262- else throw("Strict value is not equal to itself.")
1066+@Callable(dM)
1067+func getOneTknV2READONLY (ff,gf) = {
1068+ let aT = aL()
1069+ let cq = aT[u]
1070+ let cr = aT[v]
1071+ let cp = aT[t]
1072+ let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073+ let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074+ let bL = dS(dT)
1075+ let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076+ let gh = if ((ff == cq))
1077+ then 0
1078+ else if ((ff == cr))
1079+ then 1
1080+ else throw("invalid out asset id")
1081+ let gi = ex(dT, gh, bK)
1082+ let gj = (dT[gh] - gi)
1083+ let gk = max([0, toInt((gj - f))])
1084+ let gl = cg(gk, aG)
1085+ let fo = gl._1
1086+ let cj = gl._2
1087+ $Tuple2(nil, $Tuple2(fo, cj))
12631088 }
12641089
12651090
12661091
1267-@Callable(dZ)
1268-func refreshDLp () = {
1269- let hd = valueOrElse(getInteger(an), 0)
1270- let he = if (((height - hd) >= aq))
1271- then unit
1272- else aJ(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1273- if ((he == he))
1274- then {
1275- let fe = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aL("invalid dLp"))
1276- let hf = eT(0, 0, 0)
1277- let hg = hf._1
1278- let eK = hf._2
1279- let eW = if ((fe != eK))
1280- then hg
1281- else aJ("nothing to refresh")
1282- $Tuple2(eW, toString(eK))
1283- }
1284- else throw("Strict value is not equal to itself.")
1092+@Callable(dM)
1093+func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094+ let aT = aL()
1095+ let cq = aT[u]
1096+ let cr = aT[v]
1097+ let cp = aT[t]
1098+ let cw = by(cq)
1099+ let cy = by(cr)
1100+ let gm = {
1101+ let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102+ if ($isInstanceOf(aF, "(Int, Int)"))
1103+ then aF
1104+ else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1105+ }
1106+ let fo = gm._1
1107+ let cj = gm._2
1108+ let de = ck("", cp, gf, this)
1109+ let cG = de._1
1110+ let cH = de._2
1111+ let gn = (cG + cH)
1112+ let fd = if ((gn == 0))
1113+ then if ((fo == 0))
1114+ then 0
1115+ else throw("bonus calculation error")
1116+ else fraction((fo - gn), a, gn)
1117+ $Tuple2(nil, $Tuple3(fo, cj, fd))
12851118 }
12861119
12871120
12881121
1289-@Callable(dZ)
1290-func getOneTknV2READONLY (fM,hh) = {
1291- let cA = toBase58String(value(bi))
1292- let cB = toBase58String(value(bj))
1293- let cz = toBase58String(value(bh))
1294- let dJ = [toBigInt(bJ(cA)), toBigInt(bJ(cB))]
1295- let eJ = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cz)), "invalid lp asset").quantity)
1296- let bX = dI(dJ)
1297- let bW = (bX - fraction(toBigInt(hh), bX, eJ))
1298- let hi = if ((fM == cA))
1299- then 0
1300- else if ((fM == cB))
1301- then 1
1302- else throw("invalid out asset id")
1303- let hj = ew(dJ, hi, bW)
1304- let hk = (dJ[hi] - hj)
1305- let hl = max([0, toInt((hk - f))])
1306- let hm = cr(hl, aP)
1307- let fV = hm._1
1308- let ct = hm._2
1309- $Tuple2(nil, $Tuple2(fV, ct))
1310- }
1311-
1312-
1313-
1314-@Callable(dZ)
1315-func getOneTknV2WithBonusREADONLY (fM,hh) = {
1316- let cA = toBase58String(value(bi))
1317- let cB = toBase58String(value(bj))
1318- let cz = toBase58String(value(bh))
1319- let cG = bJ(cA)
1320- let cI = bJ(cB)
1321- let hn = {
1322- let aO = invoke(this, "getOneTknV2READONLY", [fM, hh], nil)
1323- if ($isInstanceOf(aO, "(Int, Int)"))
1324- then aO
1325- else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
1326- }
1327- let fV = hn._1
1328- let ct = hn._2
1329- let do = cu("", cz, hh, this)
1330- let cQ = do._1
1331- let cR = do._2
1332- let ho = (cQ + cR)
1333- let fK = if ((ho == 0))
1334- then if ((fV == 0))
1335- then 0
1336- else throw("bonus calculation error")
1337- else fraction((fV - ho), a, ho)
1338- $Tuple2(nil, $Tuple3(fV, ct, fK))
1339- }
1340-
1341-
1342-
1343-@Callable(dZ)
1344-func getNoLess (hp,hq) = {
1345- let do = fj(dZ)
1346- let cQ = do._1
1347- let cR = do._2
1348- let dc = do._3
1349- let cw = do._4
1350- let cS = do._5
1351- if ((hp > cQ))
1352- then throw(((("Failed: " + toString(cQ)) + " < ") + toString(hp)))
1353- else if ((hq > cR))
1354- then throw(((("Failed: " + toString(cR)) + " < ") + toString(hq)))
1122+@Callable(dM)
1123+func getNoLess (go,gp) = {
1124+ let de = dL(dM)
1125+ let cG = de._1
1126+ let cH = de._2
1127+ let cS = de._3
1128+ let cm = de._4
1129+ let cI = de._5
1130+ if ((go > cG))
1131+ then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132+ else if ((gp > cH))
1133+ then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
13551134 else {
1356- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1357- if ((eS == eS))
1358- then {
1359- let hr = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1360- if ((hr == hr))
1361- then {
1362- let hs = eT(-(cQ), -(cR), 0)
1363- let gj = hs._1
1364- let eK = hs._2
1365- let gk = eX(eS, eK)
1366- if ((gk == gk))
1367- then (cS ++ gj)
1368- else throw("Strict value is not equal to itself.")
1369- }
1370- else throw("Strict value is not equal to itself.")
1371- }
1135+ let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136+ if ((gq == gq))
1137+ then cI
13721138 else throw("Strict value is not equal to itself.")
13731139 }
13741140 }
13751141
13761142
13771143
1378-@Callable(dZ)
1379-func unstakeAndGet (cs) = {
1380- let ht = if ((size(dZ.payments) != 0))
1144+@Callable(dM)
1145+func unstakeAndGet (ch) = {
1146+ let gr = if ((size(dM.payments) != 0))
13811147 then throw("No pmnts expd")
13821148 else true
1383- if ((ht == ht))
1149+ if ((gr == gr))
13841150 then {
1385- let hu = bo()
1386- let gE = bh
1387- let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1388- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1389- let hw = invoke(hv, "unstake", [toBase58String(gE), cs], nil)
1390- if ((hw == hw))
1151+ let bX = aL()
1152+ let gs = bd()
1153+ let fO = fromBase58String(bX[t])
1154+ let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155+ let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156+ if ((gu == gu))
13911157 then {
1392- let do = cu(toBase58String(dZ.transactionId), toBase58String(gE), cs, dZ.caller)
1393- let cQ = do._1
1394- let cR = do._2
1395- let cE = parseIntValue(do._9)
1396- let cS = do._10
1397- let hx = if (if (aR())
1158+ let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159+ let cu = parseIntValue(de._9)
1160+ let cI = de._10
1161+ let gv = if (if (aI())
13981162 then true
1399- else (cE == s))
1400- then throw(("Blocked: " + toString(cE)))
1163+ else (cu == q))
1164+ then throw(("Blocked: " + toString(cu)))
14011165 else true
1402- if ((hx == hx))
1166+ if ((gv == gv))
14031167 then {
1404- let hy = invoke(aM, "burn", [cs], [AttachedPayment(gE, cs)])
1405- if ((hy == hy))
1406- then {
1407- let hz = eT(-(cQ), -(cR), 0)
1408- let gj = hz._1
1409- let eK = hz._2
1410- let gk = eX(eS, eK)
1411- if ((gk == gk))
1412- then (cS ++ gj)
1413- else throw("Strict value is not equal to itself.")
1414- }
1168+ let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169+ if ((gw == gw))
1170+ then cI
14151171 else throw("Strict value is not equal to itself.")
14161172 }
14171173 else throw("Strict value is not equal to itself.")
14231179
14241180
14251181
1426-@Callable(dZ)
1427-func unstakeAndGetNoLess (hA,hB,hq) = {
1428- let hb = if (aR())
1182+@Callable(dM)
1183+func unstakeAndGetNoLess (gx,gy,gp) = {
1184+ let gd = if (aI())
14291185 then true
1430- else (bg == s)
1431- let gQ = [if (!(hb))
1186+ else (aX == q)
1187+ let fX = [if (!(gd))
14321188 then true
1433- else throw("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
1189+ else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
14341190 then true
14351191 else throw("no payments are expected")]
1436- if ((gQ == gQ))
1192+ if ((fX == fX))
14371193 then {
1438- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1439- let hw = invoke(bq, "unstake", [toBase58String(bh), hA], nil)
1440- if ((hw == hw))
1194+ let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195+ if ((gu == gu))
14411196 then {
1442- let hC = cu(toBase58String(dZ.transactionId), toBase58String(bh), hA, dZ.caller)
1443- let cQ = hC._1
1444- let cR = hC._2
1445- let cS = hC._10
1446- let hD = [if ((cQ >= hB))
1197+ let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198+ let cG = gz._1
1199+ let cH = gz._2
1200+ let cI = gz._10
1201+ let gA = [if ((cG >= gy))
14471202 then true
1448- else throw(makeString(["amount asset amount to receive is less than ", toString(hB)], "")), if ((cR >= hq))
1203+ else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
14491204 then true
1450- else throw(makeString(["price asset amount to receive is less than ", toString(hq)], ""))]
1451- if ((hD == hD))
1205+ else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206+ if ((gA == gA))
14521207 then {
1453- let hr = invoke(aM, "burn", [hA], [AttachedPayment(bh, hA)])
1454- if ((hr == hr))
1455- then {
1456- let hE = eT(-(cQ), -(cR), 0)
1457- let gj = hE._1
1458- let eK = hE._2
1459- let gk = eX(eS, eK)
1460- if ((gk == gk))
1461- then (cS ++ gj)
1462- else throw("Strict value is not equal to itself.")
1463- }
1208+ let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209+ if ((gq == gq))
1210+ then cI
14641211 else throw("Strict value is not equal to itself.")
14651212 }
14661213 else throw("Strict value is not equal to itself.")
14721219
14731220
14741221
1475-@Callable(dZ)
1476-func unstakeAndGetOneTknV2 (hA,fM,fN) = {
1477- let gO = {
1478- let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1479- if ($isInstanceOf(aO, "Boolean"))
1480- then aO
1481- else throw(($getType(aO) + " couldn't be cast to Boolean"))
1222+@Callable(dM)
1223+func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224+ let fV = {
1225+ let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226+ if ($isInstanceOf(aF, "Boolean"))
1227+ then aF
1228+ else throw(($getType(aF) + " couldn't be cast to Boolean"))
14821229 }
1483- let hb = if (if (aR())
1230+ let gd = if (if (aI())
14841231 then true
1485- else (bg == s))
1232+ else (aX == q))
14861233 then true
1487- else gO
1488- let gQ = [if (if (!(hb))
1234+ else fV
1235+ let fX = [if (if (!(gd))
14891236 then true
1490- else gp(dZ))
1237+ else fB(dM))
14911238 then true
1492- else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
1239+ else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
14931240 then true
1494- else aJ("no payments are expected")]
1495- if ((gQ == gQ))
1241+ else aB("no payments are expected")]
1242+ if ((fX == fX))
14961243 then {
1497- let hu = bo()
1498- let gE = bh
1499- let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1500- let hw = invoke(hv, "unstake", [toBase58String(gE), hA], nil)
1501- if ((hw == hw))
1244+ let bX = aL()
1245+ let gs = bd()
1246+ let fO = fromBase58String(bX[t])
1247+ let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248+ let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1249+ if ((gu == gu))
15021250 then {
1503- let hF = fL(fM, fN, [AttachedPayment(gE, hA)], dZ.caller, dZ.originCaller, dZ.transactionId)
1504- let cS = hF._1
1505- let fW = hF._2
1506- $Tuple2(cS, fW)
1251+ let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252+ let cI = gB._1
1253+ let fp = gB._2
1254+ $Tuple2(cI, fp)
15071255 }
15081256 else throw("Strict value is not equal to itself.")
15091257 }
15121260
15131261
15141262
1515-@Callable(dZ)
1516-func putOneTknV2WithBonusREADONLY (hG,hH) = {
1517- let hI = fp(hG, hH, "", "", true)
1518- let fF = hI._1
1519- let cS = hI._2
1520- let ct = hI._3
1521- let fK = hI._4
1522- $Tuple2(nil, $Tuple3(fF, ct, fK))
1263+@Callable(dM)
1264+func putOneTknV2WithBonusREADONLY (gC,gD) = {
1265+ let aT = aL()
1266+ let cq = aT[u]
1267+ let cr = aT[v]
1268+ let cp = aT[t]
1269+ let gE = eH(gC, gD, "", "", true)
1270+ let eY = gE._1
1271+ let cI = gE._2
1272+ let cj = gE._3
1273+ let fd = gE._4
1274+ $Tuple2(nil, $Tuple3(eY, cj, fd))
15231275 }
15241276
15251277
15261278
1527-@Callable(dZ)
1528-func putOneTknV2WithoutTakeFeeREADONLY (hG,hH) = {
1529- let hJ = fp(hG, hH, "", "", false)
1530- let fF = hJ._1
1531- let cS = hJ._2
1532- let ct = hJ._3
1533- let fK = hJ._4
1534- $Tuple2(nil, $Tuple3(fF, ct, fK))
1279+@Callable(dM)
1280+func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281+ let aT = aL()
1282+ let cq = aT[u]
1283+ let cr = aT[v]
1284+ let cp = aT[t]
1285+ let gF = eH(gC, gD, "", "", false)
1286+ let eY = gF._1
1287+ let cI = gF._2
1288+ let cj = gF._3
1289+ let fd = gF._4
1290+ $Tuple2(nil, $Tuple3(eY, cj, fd))
15351291 }
15361292
15371293
15381294
1539-@Callable(dZ)
1540-func activate (hK,hL) = if ((toString(dZ.caller) != toString(aM)))
1295+@Callable(dM)
1296+func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
15411297 then throw("denied")
1542- else $Tuple2([StringEntry(ag(), hK), StringEntry(ah(), hL)], "success")
1298+ else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
15431299
15441300
15451301
1546-@Callable(dZ)
1547-func setS (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1548- then go
1549- else [StringEntry(hM, hx)]
1302+@Callable(dM)
1303+func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304+ then fA
1305+ else [StringEntry(gI, gv)]
15501306
15511307
15521308
1553-@Callable(dZ)
1554-func setI (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1555- then go
1556- else [IntegerEntry(hM, hx)]
1309+@Callable(dM)
1310+func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311+ then fA
1312+ else [IntegerEntry(gI, gv)]
15571313
15581314
15591315
1560-@Callable(dZ)
1561-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1316+@Callable(dM)
1317+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
15621318
15631319
15641320
1565-@Callable(dZ)
1566-func getAccBalanceWrapperREADONLY (bK) = $Tuple2(nil, bJ(bK))
1321+@Callable(dM)
1322+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
15671323
15681324
15691325
1570-@Callable(dZ)
1571-func calcPricesWrapperREADONLY (cd,ce,ci) = {
1572- let hN = ch(cd, ce, ci)
1573- $Tuple2(nil, [toString(hN[0]), toString(hN[1]), toString(hN[2])])
1326+@Callable(dM)
1327+func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328+ let gJ = bV(bR, bS, bW)
1329+ $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
15741330 }
15751331
15761332
15771333
1578-@Callable(dZ)
1579-func fromX18WrapperREADONLY (L,hO) = $Tuple2(nil, K(parseBigIntValue(L), hO))
1334+@Callable(dM)
1335+func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
15801336
15811337
15821338
1583-@Callable(dZ)
1584-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1339+@Callable(dM)
1340+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
15851341
15861342
15871343
1588-@Callable(dZ)
1589-func calcPriceBigIntWrapperREADONLY (bM,bN) = $Tuple2(nil, toString(bL(parseBigIntValue(bM), parseBigIntValue(bN))))
1344+@Callable(dM)
1345+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
15901346
15911347
15921348
1593-@Callable(dZ)
1594-func estimatePutOperationWrapperREADONLY (cv,bS,cU,cV,cW,cX,hP,cY,cZ) = $Tuple2(nil, cT(cv, bS, cU, cV, cW, cX, hP, cY, cZ, true, false, 0, ""))
1349+@Callable(dM)
1350+func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
15951351
15961352
15971353
1598-@Callable(dZ)
1599-func estimateGetOperationWrapperREADONLY (cv,hQ,cx,hP) = {
1600- let do = cu(cv, hQ, cx, addressFromStringValue(hP))
1601- $Tuple2(nil, $Tuple10(do._1, do._2, do._3, do._4, do._5, do._6, do._7, toString(do._8), do._9, do._10))
1354+@Callable(dM)
1355+func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356+ let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357+ $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
16021358 }
16031359
16041360
1605-@Verifier(hR)
1606-func hS () = {
1607- let hT = {
1608- let gm = gl()
1609- if ($isInstanceOf(gm, "ByteVector"))
1361+@Verifier(gN)
1362+func gO () = {
1363+ let gP = {
1364+ let av = fy()
1365+ if ($isInstanceOf(av, "ByteVector"))
16101366 then {
1611- let gq = gm
1612- gq
1367+ let fC = av
1368+ fC
16131369 }
1614- else if ($isInstanceOf(gm, "Unit"))
1615- then hR.senderPublicKey
1370+ else if ($isInstanceOf(av, "Unit"))
1371+ then gN.senderPublicKey
16161372 else throw("Match error")
16171373 }
1618- let gm = hR
1619- if ($isInstanceOf(gm, "Order"))
1374+ let av = gN
1375+ if ($isInstanceOf(av, "Order"))
16201376 then {
1621- let fa = gm
1622- let hU = aS()
1623- let hV = eZ(fa)
1624- let hW = sigVerify(fa.bodyBytes, fa.proofs[0], fa.senderPublicKey)
1625- let hX = sigVerify(fa.bodyBytes, fa.proofs[1], hU)
1626- if (if (if (hV)
1627- then hW
1377+ let dz = av
1378+ let gQ = aJ()
1379+ let gR = dy(dz)
1380+ let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381+ let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382+ if (if (if (gR)
1383+ then gS
16281384 else false)
1629- then hX
1385+ then gT
16301386 else false)
16311387 then true
1632- else aB(hV, hW, hX)
1388+ else aq(gR, gS, gT)
16331389 }
1634- else if ($isInstanceOf(gm, "SetScriptTransaction"))
1390+ else if ($isInstanceOf(av, "SetScriptTransaction"))
16351391 then {
1636- let dM = gm
1637- let hY = blake2b256(value(dM.script))
1638- let hZ = fromBase64String(value(getString(aM, az())))
1639- let ia = scriptHash(this)
1640- if (if ((hZ == hY))
1641- then (ia != hY)
1392+ let dZ = av
1393+ let gU = blake2b256(value(dZ.script))
1394+ let gV = fromBase64String(value(getString(aD, ao())))
1395+ let gW = scriptHash(this)
1396+ if (if ((gV == gU))
1397+ then (gW != gU)
16421398 else false)
16431399 then true
1644- else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
1400+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16451401 }
1646- else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
1402+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16471403 }
16481404
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 100000000
55
66 let b = toBigInt(100000000)
77
88 let c = toBigInt(1000000000000000000)
99
1010 let d = toBigInt(0)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(1)
1515
1616 let g = toBigInt(2)
1717
18-let h = toBigInt(3)
18+let h = toBigInt((a - ((a * 1) / a)))
1919
20-let i = toBigInt(4)
20+let i = "WAVES"
2121
22-let j = toBigInt((a - ((a * 1) / a)))
22+let j = "100"
2323
24-let k = "WAVES"
24+let k = "1"
2525
26-let l = "100"
26+let l = "__"
2727
28-let m = "1"
28+let m = ""
2929
30-let n = "__"
30+let n = 1
3131
32-let o = ""
32+let o = 2
3333
34-let p = 1
34+let p = 3
3535
36-let q = 2
36+let q = 4
3737
38-let r = 3
38+let r = 1
3939
40-let s = 4
40+let s = 2
4141
42-let t = 1
42+let t = 3
4343
44-let u = 2
44+let u = 4
4545
46-let v = 3
46+let v = 5
4747
48-let w = 4
48+let w = 6
4949
50-let x = 5
50+let x = 7
5151
52-let y = 6
52+let y = 8
5353
54-let z = 7
54+let z = 9
5555
56-let A = 8
56+let A = 1
5757
58-let B = 9
58+let B = 6
5959
60-let C = 1
60+let C = 7
6161
62-let D = 6
62+let D = 10
6363
64-let E = 7
64+let E = fraction(10, a, 10000)
6565
66-let F = 10
67-
68-let G = fraction(10, a, 10000)
69-
70-func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
66+func F (G,H) = fraction(toBigInt(G), c, toBigInt(H))
7167
7268
73-func K (L,M) = toInt(fraction(L, toBigInt(M), c))
69+func I (J,K) = toInt(fraction(J, toBigInt(K), c))
7470
7571
76-func N (L,M,O) = toInt(fraction(L, toBigInt(M), c, O))
72+func L (M,N,O) = fraction(M, N, O)
7773
7874
79-func P (Q,R,S) = fraction(Q, R, S)
75+func P (J) = if ((d > J))
76+ then -(J)
77+ else J
8078
8179
82-func T (L) = if ((d > L))
83- then -(L)
84- else L
80+func Q (J) = if ((d > J))
81+ then -(J)
82+ else J
8583
8684
87-func U (L) = if ((d > L))
88- then -(L)
89- else L
85+func R () = "%s__factoryContract"
9086
9187
92-func V () = "%s__factoryContract"
88+func S () = "%s__managerPublicKey"
9389
9490
95-func W () = "%s__managerPublicKey"
91+func T () = "%s__pendingManagerPublicKey"
9692
9793
98-func X () = "%s__pendingManagerPublicKey"
94+func U () = "%s%s__price__last"
9995
10096
101-func Y () = "%s%s__price__last"
97+func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], l)
10298
10399
104-func Z (aa,ab) = makeString(["%s%s%d%d__price__history", toString(aa), toString(ab)], n)
100+func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
105101
106102
107-func ac (ad,ae) = ((("%s%s%s__P__" + ad) + "__") + ae)
103+func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
108104
109105
110-func af (ad,ae) = ((("%s%s%s__G__" + ad) + "__") + ae)
106+func ac () = "%s__amountAsset"
111107
112108
113-func ag () = "%s__amountAsset"
109+func ad () = "%s__priceAsset"
114110
115111
116-func ah () = "%s__priceAsset"
112+func ae () = "%s__amp"
117113
118114
119-func ai () = "%s__amp"
115+func af () = "%s__addonAddr"
120116
121117
122-func aj () = "%s__addonAddr"
118+func ag () = "%s__factoryConfig"
123119
124120
125-let ak = "%s__fee"
126-
127-let al = valueOrElse(getInteger(this, ak), G)
128-
129-let am = makeString(["%s", "dLp"], n)
130-
131-let an = makeString(["%s", "dLpRefreshedHeight"], n)
132-
133-let ao = makeString(["%s", "refreshDLpDelay"], n)
134-
135-let ap = 1
136-
137-let aq = valueOrElse(getInteger(this, ao), ap)
138-
139-func ar () = "%s__factoryConfig"
121+func ah () = "%s%s__matcher__publicKey"
140122
141123
142-func as () = "%s%s__matcher__publicKey"
124+func ai (aj,ak) = (((("%d%d%s__" + aj) + "__") + ak) + "__config")
143125
144126
145-func at (au,av) = (((("%d%d%s__" + au) + "__") + av) + "__config")
127+func al (am) = ("%s%s%s__mappings__baseAsset2internalId__" + am)
146128
147129
148-func aw (ax) = ("%s%s%s__mappings__baseAsset2internalId__" + ax)
130+func an () = "%s__shutdown"
149131
150132
151-func ay () = "%s__shutdown"
133+func ao () = "%s__allowedLpStableScriptHash"
152134
153135
154-func az () = "%s__allowedLpStableScriptHash"
136+func ap () = "%s__feeCollectorAddress"
155137
156138
157-func aA () = "%s__feeCollectorAddress"
139+func aq (ar,as,at) = throw(((((("Failed: ordValid=" + toString(ar)) + " sndrValid=") + toString(as)) + " mtchrValid=") + toString(at)))
158140
159141
160-func aB (aC,aD,aE) = throw(((((("Failed: ordValid=" + toString(aC)) + " sndrValid=") + toString(aD)) + " mtchrValid=") + toString(aE)))
161-
162-
163-func aF (aG,aH) = valueOrErrorMessage(getString(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
164-
165-
166-func aI (aG,aH) = valueOrErrorMessage(getInteger(aG, aH), makeString(["mandatory ", toString(aG), ".", aH, " not defined"], ""))
167-
168-
169-func aJ (aK) = throw(makeString(["lp_stable.ride:", aK], " "))
170-
171-
172-func aL (aK) = makeString(["lp_stable.ride:", aK], " ")
173-
174-
175-let aM = addressFromStringValue(aF(this, V()))
176-
177-let aN = {
178- let aO = invoke(aM, "getInFeeREADONLY", [toString(this)], nil)
179- if ($isInstanceOf(aO, "Int"))
180- then aO
181- else throw(($getType(aO) + " couldn't be cast to Int"))
182- }
183-
184-let aP = {
185- let aO = invoke(aM, "getOutFeeREADONLY", [toString(this)], nil)
186- if ($isInstanceOf(aO, "Int"))
187- then aO
188- else throw(($getType(aO) + " couldn't be cast to Int"))
189- }
190-
191-let aQ = aF(this, ai())
192-
193-func aR () = valueOrElse(getBoolean(aM, ay()), false)
194-
195-
196-func aS () = fromBase58String(aF(aM, as()))
197-
198-
199-let aT = addressFromStringValue(aF(aM, aA()))
200-
201-func aU () = {
202- let aV = aF(this, ag())
203- let aW = aF(this, ah())
204- let aX = aI(aM, aw(aW))
205- let au = aI(aM, aw(aV))
206- split(aF(aM, at(toString(au), toString(aX))), n)
142+func au (J) = {
143+ let av = J
144+ if ($isInstanceOf(av, "String"))
145+ then {
146+ let aw = av
147+ aw
148+ }
149+ else throw("fail cast to String")
207150 }
208151
209152
210-func aY (aZ) = if ((aZ == k))
211- then unit
212- else fromBase58String(aZ)
153+func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
213154
214155
215-func ba (aZ) = if ((aZ == unit))
216- then k
217- else toBase58String(value(aZ))
156+func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " not defined"], ""))
218157
219158
220-func bb (bc) = $Tuple9(addressFromStringValue(bc[t]), parseIntValue(bc[u]), fromBase58String(bc[v]), aY(bc[w]), aY(bc[x]), parseIntValue(bc[y]), parseIntValue(bc[z]), fromBase58String(bc[A]), fromBase58String(bc[B]))
159+func aB (aC) = throw(makeString(["lp_stable.ride:", aC], " "))
221160
222161
223-let bd = bb(aU())
162+let aD = addressFromStringValue(ax(this, R()))
224163
225-let be = bd
164+let aE = {
165+ let aF = invoke(aD, "getInFeeREADONLY", [toString(this)], nil)
166+ if ($isInstanceOf(aF, "Int"))
167+ then aF
168+ else throw(($getType(aF) + " couldn't be cast to Int"))
169+ }
226170
227-let bf = be._1
171+let aG = {
172+ let aF = invoke(aD, "getOutFeeREADONLY", [toString(this)], nil)
173+ if ($isInstanceOf(aF, "Int"))
174+ then aF
175+ else throw(($getType(aF) + " couldn't be cast to Int"))
176+ }
228177
229-let bg = be._2
178+let aH = ax(this, ae())
230179
231-let bh = be._3
232-
233-let bi = be._4
234-
235-let bj = be._5
236-
237-let bk = be._6
238-
239-let bl = be._7
240-
241-let bm = be._8
242-
243-let bn = be._9
244-
245-func bo () = split(aF(aM, ar()), n)
180+func aI () = valueOrElse(getBoolean(aD, an()), false)
246181
247182
248-let bp = bo()
249-
250-let bq = valueOrErrorMessage(addressFromString(bp[C]), "Invalid staking contract address")
251-
252-let br = valueOrErrorMessage(addressFromString(bp[E]), "Invalid slipage contract address")
253-
254-let bs = valueOrErrorMessage(addressFromString(bp[F]), "Invalid gwx contract address")
255-
256-let bt = valueOrErrorMessage(addressFromString(bp[D]), "Invalid gwx contract address")
257-
258-func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], n)
183+func aJ () = fromBase58String(ax(aD, ah()))
259184
260185
261-func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], n)
186+let aK = addressFromStringValue(ax(aD, ap()))
262187
263-
264-func bJ (bK) = if ((bK == "WAVES"))
265- then wavesBalance(this).available
266- else assetBalance(this, fromBase58String(bK))
267-
268-
269-func bL (bM,bN) = fraction(bM, c, bN)
270-
271-
272-func bO (bM,bN,O) = fraction(bM, c, bN, O)
273-
274-
275-func bP (bQ,bR,bS) = {
276- let bT = fraction((bQ - bR), b, bR)
277- let bU = ((bS - T(bT)) > d)
278- if (!(bU))
279- then throw(("Big slpg: " + toString(bT)))
280- else $Tuple2(bU, min([bQ, bR]))
188+func aL () = {
189+ let aM = ax(this, ac())
190+ let aN = ax(this, ad())
191+ let aO = aA(aD, al(aN))
192+ let aj = aA(aD, al(aM))
193+ split(ax(aD, ai(toString(aj), toString(aO))), l)
281194 }
282195
283196
284-func bV (bW,bX,bY) = {
285- let bT = fraction(bX, b, bW)
286- let bZ = (bY > bT)
287- if (if (bZ)
288- then true
289- else (bX > bW))
290- then throw(((((((toString(bX) + " ") + toString(bW)) + " ") + toString(bT)) + " ") + toString(bY)))
291- else bZ
197+func aP (aQ) = if ((aQ == i))
198+ then unit
199+ else fromBase58String(aQ)
200+
201+
202+func aR (aQ) = if ((aQ == unit))
203+ then i
204+ else toBase58String(value(aQ))
205+
206+
207+func aS (aT) = $Tuple7(addressFromStringValue(aT[r]), parseIntValue(aT[s]), fromBase58String(aT[t]), aP(aT[u]), aP(aT[v]), parseIntValue(aT[w]), parseIntValue(aT[x]))
208+
209+
210+let aU = aS(aL())
211+
212+let aV = aU
213+
214+let aW = aV._1
215+
216+let aX = aV._2
217+
218+let aY = aV._3
219+
220+let aZ = aV._4
221+
222+let ba = aV._5
223+
224+let bb = aV._6
225+
226+let bc = aV._7
227+
228+func bd () = split(ax(aD, ag()), l)
229+
230+
231+let be = bd()
232+
233+let bf = valueOrErrorMessage(addressFromString(be[A]), "Invalid staking contract address")
234+
235+let bg = valueOrErrorMessage(addressFromString(be[C]), "Invalid slipage contract address")
236+
237+let bh = valueOrErrorMessage(addressFromString(be[D]), "Invalid gwx contract address")
238+
239+let bi = valueOrErrorMessage(addressFromString(be[B]), "Invalid gwx contract address")
240+
241+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)], l)
242+
243+
244+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)], l)
245+
246+
247+func by (bz) = if ((bz == "WAVES"))
248+ then wavesBalance(this).available
249+ else assetBalance(this, fromBase58String(bz))
250+
251+
252+func bA (bB,bC) = fraction(bB, c, bC)
253+
254+
255+func bD (bE,bF,bG) = {
256+ let bH = fraction((bE - bF), b, bF)
257+ let bI = ((bG - P(bH)) > d)
258+ if (!(bI))
259+ then throw(("Big slpg: " + toString(bH)))
260+ else $Tuple2(bI, min([bE, bF]))
292261 }
293262
294263
295-func ca (cb,cc,cd,ce) = {
296- let cf = H(cd, cb)
297- let cg = H(ce, cc)
298- bL(cg, cf)
264+func bJ (bK,bL,bM) = {
265+ let bH = fraction(bL, b, bK)
266+ let bN = (bM > bH)
267+ if (if (bN)
268+ then true
269+ else (bL > bK))
270+ then throw(((((((toString(bL) + " ") + toString(bK)) + " ") + toString(bH)) + " ") + toString(bM)))
271+ else bN
299272 }
300273
301274
302-func ch (cd,ce,ci) = {
303- let cj = bk
304- let ck = bl
305- let cl = ca(cj, ck, cd, ce)
306- let bN = H(cd, cj)
307- let bM = H(ce, ck)
308- let cm = H(ci, a)
309- let cn = bL(bN, cm)
310- let co = bL(bM, cm)
311-[cl, cn, co]
275+func bO (bP,bQ,bR,bS) = {
276+ let bT = F(bR, bP)
277+ let bU = F(bS, bQ)
278+ bA(bU, bT)
312279 }
313280
314281
315-func cp (cd,ce,ci) = {
316- let cq = ch(cd, ce, ci)
317-[K(cq[0], a), K(cq[1], a), K(cq[2], a)]
282+func bV (bR,bS,bW) = {
283+ let bX = aL()
284+ let bY = parseIntValue(bX[w])
285+ let bZ = parseIntValue(bX[x])
286+ let ca = bO(bY, bZ, bR, bS)
287+ let bC = F(bR, bY)
288+ let bB = F(bS, bZ)
289+ let cb = F(bW, a)
290+ let cc = bA(bC, cb)
291+ let cd = bA(bB, cb)
292+[ca, cc, cd]
318293 }
319294
320295
321-func cr (cs,al) = {
322- let ct = if ((al == 0))
323- then 0
324- else fraction(cs, al, a)
325- $Tuple2((cs - ct), ct)
296+func ce (bR,bS,bW) = {
297+ let cf = bV(bR, bS, bW)
298+[I(cf[0], a), I(cf[1], a), I(cf[2], a)]
326299 }
327300
328301
329-func cu (cv,cw,cx,cy) = {
330- let cz = bh
331- let cA = toBase58String(value(bi))
332- let cB = toBase58String(value(bj))
333- let cC = bk
334- let cD = bl
335- let cE = toString(bg)
336- let cF = valueOrErrorMessage(assetInfo(cz), "Wrong LP id").quantity
337- if ((toBase58String(cz) != cw))
302+func cg (ch,ci) = {
303+ let cj = if ((ci == 0))
304+ then 0
305+ else fraction(ch, ci, a)
306+ $Tuple2((ch - cj), cj)
307+ }
308+
309+
310+func ck (cl,cm,cn,co) = {
311+ let bX = aL()
312+ let cp = bX[t]
313+ let cq = bX[u]
314+ let cr = bX[v]
315+ let cs = parseIntValue(bX[w])
316+ let ct = parseIntValue(bX[x])
317+ let cu = bX[s]
318+ let cv = valueOrErrorMessage(assetInfo(fromBase58String(cp)), "Wrong LP id").quantity
319+ if ((cp != cm))
338320 then throw("Wrong pmt asset")
339321 else {
340- let cG = bJ(cA)
341- let cH = H(cG, cC)
342- let cI = bJ(cB)
343- let cJ = H(cI, cD)
344- let cK = bL(cJ, cH)
345- let cL = K(cK, a)
346- let cM = H(cx, a)
347- let cN = H(cF, a)
348- let cO = fraction(cH, cM, cN)
349- let cP = fraction(cJ, cM, cN)
350- let cQ = N(cO, cC, FLOOR)
351- let cR = N(cP, cD, FLOOR)
352- let cS = if ((cv == ""))
322+ let cw = by(cq)
323+ let cx = F(cw, cs)
324+ let cy = by(cr)
325+ let cz = F(cy, ct)
326+ let cA = bA(cz, cx)
327+ let cB = I(cA, a)
328+ let cC = F(cn, a)
329+ let cD = F(cv, a)
330+ let cE = fraction(cx, cC, cD)
331+ let cF = fraction(cz, cC, cD)
332+ let cG = I(cE, cs)
333+ let cH = I(cF, ct)
334+ let cI = if ((cl == ""))
353335 then nil
354- else [ScriptTransfer(cy, cQ, if ((cA == "WAVES"))
336+ else [ScriptTransfer(co, cG, if ((cq == "WAVES"))
355337 then unit
356- else fromBase58String(cA)), ScriptTransfer(cy, cR, if ((cB == "WAVES"))
338+ else fromBase58String(cq)), ScriptTransfer(co, cH, if ((cr == "WAVES"))
357339 then unit
358- else fromBase58String(cB)), StringEntry(af(toString(cy), cv), bF(cQ, cR, cx, cL, height, lastBlock.timestamp)), IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL)]
359- $Tuple10(cQ, cR, cA, cB, cG, cI, cF, cK, cE, cS)
340+ else fromBase58String(cr)), StringEntry(ab(toString(co), cl), bu(cG, cH, cn, cB, height, lastBlock.timestamp)), IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB)]
341+ $Tuple10(cG, cH, cq, cr, cw, cy, cv, cA, cu, cI)
360342 }
361343 }
362344
363345
364-func cT (cv,bS,cU,cV,cW,cX,cy,cY,cZ,da,db,dc,dd) = {
365- let cz = bh
366- let de = toBase58String(value(bi))
367- let df = toBase58String(value(bj))
368- let dg = bm
369- let dh = bn
370- let di = bk
371- let dj = bl
372- let cE = toString(bg)
373- let dk = valueOrErrorMessage(assetInfo(cz), "Wr lp as").quantity
374- let cG = if (cY)
375- then bJ(de)
376- else if (if (da)
377- then (dd == de)
346+func cJ (cl,bG,cK,cL,cM,cN,co,cO,cP,cQ,cR,cS,cT) = {
347+ let bX = aL()
348+ let cp = fromBase58String(bX[t])
349+ let cU = bX[u]
350+ let cV = bX[v]
351+ let cW = bX[y]
352+ let cX = bX[z]
353+ let cY = parseIntValue(bX[w])
354+ let cZ = parseIntValue(bX[x])
355+ let cu = bX[s]
356+ let da = valueOrErrorMessage(assetInfo(cp), "Wr lp as").quantity
357+ let cw = if (cO)
358+ then by(cU)
359+ else if (if (cQ)
360+ then (cT == cU)
378361 else false)
379- then (bJ(de) - dc)
380- else if (da)
381- then bJ(de)
382- else (bJ(de) - cU)
383- let cI = if (cY)
384- then bJ(df)
385- else if (if (da)
386- then (dd == df)
362+ then (by(cU) - cS)
363+ else if (cQ)
364+ then by(cU)
365+ else (by(cU) - cK)
366+ let cy = if (cO)
367+ then by(cV)
368+ else if (if (cQ)
369+ then (cT == cV)
387370 else false)
388- then (bJ(df) - dc)
389- else if (da)
390- then bJ(df)
391- else (bJ(df) - cW)
392- let dl = H(cU, di)
393- let dm = H(cW, dj)
394- let dn = bL(dm, dl)
395- let cH = H(cG, di)
396- let cJ = H(cI, dj)
397- let do = if ((dk == 0))
371+ then (by(cV) - cS)
372+ else if (cQ)
373+ then by(cV)
374+ else (by(cV) - cM)
375+ let db = F(cK, cY)
376+ let dc = F(cM, cZ)
377+ let dd = bA(dc, db)
378+ let cx = F(cw, cY)
379+ let cz = F(cy, cZ)
380+ let de = if ((da == 0))
398381 then {
399- let cK = d
400- let dp = d
401- let cm = pow((dl * dm), 0, toBigInt(5), 1, 0, DOWN)
402- $Tuple5(K(cm, a), K(dl, di), K(dm, dj), bL((cJ + dm), (cH + dl)), dp)
382+ let cA = d
383+ let df = d
384+ let cb = pow((db * dc), 0, toBigInt(5), 1, 0, DOWN)
385+ $Tuple5(I(cb, a), I(db, cY), I(dc, cZ), bA((cz + dc), (cx + db)), df)
403386 }
404387 else {
405- let cK = bL(cJ, cH)
406- let dq = fraction(T((cK - dn)), c, cK)
407- let dp = H(bS, a)
408- if (if (if (db)
409- then (cK != d)
388+ let cA = bA(cz, cx)
389+ let dg = fraction(P((cA - dd)), c, cA)
390+ let df = F(bG, a)
391+ if (if (if (cR)
392+ then (cA != d)
410393 else false)
411- then (dq > dp)
394+ then (dg > df)
412395 else false)
413- then throw(((("Price slippage " + toString(dq)) + " > ") + toString(dp)))
396+ then throw(((("Price slippage " + toString(dg)) + " > ") + toString(df)))
414397 else {
415- let dr = H(dk, a)
416- let ds = fraction(dl, bO(cJ, cH, FLOOR), c, FLOOR)
417- let dt = fraction(dm, c, bO(cJ, cH, FLOOR), FLOOR)
418- let du = if ((ds > dm))
419- then $Tuple2(dt, dm)
420- else $Tuple2(dl, ds)
421- let dv = du._1
422- let dw = du._2
423- let cm = fraction(dr, dw, cJ, FLOOR)
424- $Tuple5(N(cm, a, FLOOR), N(dv, di, CEILING), N(dw, dj, CEILING), cK, dp)
398+ let dh = F(da, a)
399+ let di = fraction(db, cA, c)
400+ let dj = fraction(dc, c, cA)
401+ let dk = if ((di > dc))
402+ then $Tuple2(dj, dc)
403+ else $Tuple2(db, di)
404+ let dl = dk._1
405+ let dm = dk._2
406+ let cb = fraction(dh, dm, cz)
407+ $Tuple5(I(cb, a), I(dl, cY), I(dm, cZ), cA, df)
425408 }
426409 }
427- let dx = do._1
428- let dy = do._2
429- let dz = do._3
430- let cL = K(do._4, a)
431- let dA = K(do._5, a)
432- if ((0 >= dx))
410+ let dn = de._1
411+ let do = de._2
412+ let dp = de._3
413+ let cB = I(de._4, a)
414+ let dq = I(de._5, a)
415+ if ((0 >= dn))
433416 then throw("LP <= 0")
434417 else {
435- let dB = if (!(cZ))
418+ let dr = if (!(cP))
436419 then 0
437- else dx
438- let dC = (cU - dy)
439- let dD = (cW - dz)
440- let dE = if (if (da)
441- then (dd == de)
420+ else dn
421+ let ds = (cK - do)
422+ let dt = (cM - dp)
423+ let du = if (if (cQ)
424+ then (cT == cU)
442425 else false)
443- then $Tuple2(dc, 0)
444- else if (if (da)
445- then (dd == df)
426+ then $Tuple2(cS, 0)
427+ else if (if (cQ)
428+ then (cT == cV)
446429 else false)
447- then $Tuple2(0, dc)
448- else $Tuple2(dy, dz)
449- let dF = dE._1
450- let dG = dE._2
451- let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, cv), bu(dF, dG, dB, cL, bS, dA, height, lastBlock.timestamp, dC, dD))]
452- $Tuple13(dx, dB, cL, cG, cI, dk, cz, cE, dH, dC, dD, cV, cX)
430+ then $Tuple2(0, cS)
431+ else $Tuple2(do, dp)
432+ let dv = du._1
433+ let dw = du._2
434+ let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, cl), bj(dv, dw, dr, cB, bG, dq, height, lastBlock.timestamp, ds, dt))]
435+ $Tuple13(dn, dr, cB, cw, cy, da, cp, cu, dx, ds, dt, cL, cN)
453436 }
454437 }
455438
456439
457-func dI (dJ) = {
458- let dK = dJ[0]
459- let dL = dJ[1]
460- let dM = (dK + dL)
461- if ((dM == e))
462- then e
440+func dy (dz) = {
441+ let bX = aL()
442+ let dA = bX[u]
443+ let dB = bX[v]
444+ let cu = parseIntValue(bX[s])
445+ let bY = parseIntValue(bX[w])
446+ let bZ = parseIntValue(bX[x])
447+ let dC = by(dA)
448+ let dD = by(dB)
449+ let cA = if ((dz.orderType == Buy))
450+ then bO(bY, bZ, (dC + dz.amount), dD)
451+ else bO(bY, bZ, (dC - dz.amount), dD)
452+ let cB = I(cA, a)
453+ if (if (if (aI())
454+ then true
455+ else (cu == p))
456+ then true
457+ else (cu == q))
458+ then throw("Admin blocked")
463459 else {
464- let dN = parseIntValue(aQ)
465- let dO = (dN * 2)
466- let cq = fraction(dK, dL, f)
467- let dP = fraction(cq, i, f)
468- let dQ = fraction(toBigInt(dO), dM, f)
469- let dR = toBigInt((dO - 1))
470- func dS (dT) = {
471- let dU = fraction(dT, dT, f)
472- let dV = fraction(dU, dT, f)
473- let dW = fraction(dV, f, dP)
474- fraction((dQ + fraction(dW, g, f)), dT, (fraction(dR, dT, f) + fraction(h, dW, f)), CEILING)
475- }
476-
477- func dX (dY,dZ) = if (dY._2)
478- then dY
460+ let dE = dz.assetPair.amountAsset
461+ let dF = if ((dE == unit))
462+ then "WAVES"
463+ else toBase58String(value(dE))
464+ let dG = dz.assetPair.priceAsset
465+ let dH = if ((dG == unit))
466+ then "WAVES"
467+ else toBase58String(value(dG))
468+ if (if ((dF != dA))
469+ then true
470+ else (dH != dB))
471+ then throw("Wr assets")
479472 else {
480- let dT = dY._1
481- let ea = dS(dT)
482- let eb = toInt((ea - value(dT)))
483- let ec = if ((0 > eb))
484- then -(eb)
485- else eb
486- if ((1 >= ec))
487- then $Tuple2(ea, true)
488- else $Tuple2(ea, false)
473+ let dI = dz.price
474+ let cZ = fraction(a, bZ, bY)
475+ let dJ = L(dI, a, cZ)
476+ let dK = if ((dz.orderType == Buy))
477+ then (cB >= dJ)
478+ else (dJ >= cB)
479+ true
489480 }
490-
491- let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
492- let ee = {
493- let ef = ed
494- let eg = size(ef)
495- let eh = $Tuple2(dM, false)
496- func ei (ej,ek) = if ((ek >= eg))
497- then ej
498- else dX(ej, ef[ek])
499-
500- func el (ej,ek) = if ((ek >= eg))
501- then ej
502- else throw("List size exceeds 15")
503-
504- el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
505- }
506- let dT = ee._1
507- let em = ee._2
508- if (em)
509- then dT
510- else throw(("D calculation error, D = " + toString(dT)))
511481 }
512482 }
513483
514484
515-func en (dJ) = {
516- let eo = g
517- let dK = dJ[0]
518- let dL = dJ[1]
519- let ep = parseBigIntValue(l)
520- let dN = (parseBigIntValue(aQ) * ep)
521- let dM = (dK + dL)
522- if ((dM == e))
485+func dL (dM) = if ((size(dM.payments) != 1))
486+ then throw("1 pmnt exp")
487+ else {
488+ let dN = value(dM.payments[0])
489+ let cm = value(dN.assetId)
490+ let cS = dN.amount
491+ let de = ck(toBase58String(dM.transactionId), toBase58String(cm), cS, dM.caller)
492+ let cG = de._1
493+ let cH = de._2
494+ let cu = parseIntValue(de._9)
495+ let cI = de._10
496+ if (if (aI())
497+ then true
498+ else (cu == q))
499+ then throw(("Admin blocked: " + toString(cu)))
500+ else $Tuple5(cG, cH, cS, cm, cI)
501+ }
502+
503+
504+func dO (dP,aa,dQ,dR,bG,cP,cQ,cR,cS,cT) = {
505+ let de = cJ(aa, bG, value(dQ).amount, value(dQ).assetId, value(dR).amount, value(dR).assetId, dP, (aa == ""), cP, cQ, cR, cS, cT)
506+ let cu = parseIntValue(de._8)
507+ if (if (if (aI())
508+ then true
509+ else (cu == o))
510+ then true
511+ else (cu == q))
512+ then throw(("Blocked:" + toString(cu)))
513+ else de
514+ }
515+
516+
517+func dS (dT) = {
518+ let dU = g
519+ let dV = dT[0]
520+ let dW = dT[1]
521+ let dX = parseBigIntValue(j)
522+ let dY = (parseBigIntValue(aH) * dX)
523+ let dZ = (dV + dW)
524+ if ((dZ == e))
523525 then e
524526 else {
525- let dO = (dN * eo)
526- let dP = (((dK * dL) * eo) * eo)
527- let eq = ((dO * dM) / ep)
528- let er = (dO - ep)
529- let es = (eo + f)
530- func dX (dY,et) = {
531- let eu = dY
532- let dT = eu._1
533- let em = eu._2
534- if ((em != unit))
535- then dY
527+ let ea = (dY * dU)
528+ let eb = (((dV * dW) * dU) * dU)
529+ let ec = ((ea * dZ) / dX)
530+ let ed = (ea - dX)
531+ let ee = (dU + f)
532+ func ef (eg,eh) = {
533+ let ei = eg
534+ let ej = ei._1
535+ let ek = ei._2
536+ if ((ek != unit))
537+ then eg
536538 else {
537- let dW = (((dT * dT) * dT) / dP)
538- let ea = (((eq + (dW * eo)) * dT) / (((er * dT) / ep) + (es * dW)))
539- let ec = U((ea - value(dT)))
540- if ((f >= ec))
541- then $Tuple2(ea, et)
542- else $Tuple2(ea, unit)
539+ let el = (((ej * ej) * ej) / eb)
540+ let em = (((ec + (el * dU)) * ej) / (((ed * ej) / dX) + (ee * el)))
541+ let en = Q((em - value(ej)))
542+ if ((f >= en))
543+ then $Tuple2(em, eh)
544+ else $Tuple2(em, unit)
543545 }
544546 }
545547
546- let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
547- let ev = {
548- let ef = ed
549- let eg = size(ef)
550- let eh = $Tuple2(dM, unit)
551- func ei (ej,ek) = if ((ek >= eg))
552- then ej
553- else dX(ej, ef[ek])
548+ let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
549+ let ep = {
550+ let eq = eo
551+ let er = size(eq)
552+ let es = $Tuple2(dZ, unit)
553+ func et (eu,ev) = if ((ev >= er))
554+ then eu
555+ else ef(eu, eq[ev])
554556
555- func el (ej,ek) = if ((ek >= eg))
556- then ej
557+ func ew (eu,ev) = if ((ev >= er))
558+ then eu
557559 else throw("List size exceeds 15")
558560
559- el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
561+ ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
560562 }
561- let dT = ev._1
562- let em = ev._2
563- if ((em != unit))
564- then dT
565- else throw(("D calculation error, D = " + toString(dT)))
563+ let ej = ep._1
564+ let ek = ep._2
565+ if ((ek != unit))
566+ then ej
567+ else throw(("D calculation error, D = " + toString(ej)))
566568 }
567569 }
568570
569571
570-func ew (dJ,dZ,ex) = {
571- let eo = g
572- let ey = dJ[if ((dZ == 0))
572+func ex (dT,dM,ey) = {
573+ let dU = g
574+ let ez = dT[if ((dM == 0))
573575 then 1
574576 else 0]
575- let ep = parseBigIntValue(l)
576- let dN = (parseBigIntValue(aQ) * ep)
577- let dM = ey
578- let dO = (dN * eo)
579- let ez = (((((ex * ex) / (ey * eo)) * ex) * ep) / (dO * eo))
580- let eA = ((dM + ((ex * ep) / dO)) - ex)
581- func dX (dY,et) = {
582- let eB = dY
583- let eC = eB._1
584- let em = eB._2
585- if ((em != unit))
586- then dY
577+ let dX = parseBigIntValue(j)
578+ let dY = (parseBigIntValue(aH) * dX)
579+ let dZ = ez
580+ let ea = (dY * dU)
581+ let eA = (((((ey * ey) / (ez * dU)) * ey) * dX) / (ea * dU))
582+ let eB = ((dZ + ((ey * dX) / ea)) - ey)
583+ func ef (eg,eh) = {
584+ let eC = eg
585+ let eD = eC._1
586+ let ek = eC._2
587+ if ((ek != unit))
588+ then eg
587589 else {
588- let eD = (((eC * eC) + ez) / ((g * eC) + eA))
589- let eE = U((eD - value(eC)))
590- if ((f >= eE))
591- then $Tuple2(eD, et)
592- else $Tuple2(eD, unit)
590+ let eE = (((eD * eD) + eA) / ((g * eD) + eB))
591+ let eF = Q((eE - value(eD)))
592+ if ((f >= eF))
593+ then $Tuple2(eE, eh)
594+ else $Tuple2(eE, unit)
593595 }
594596 }
595597
596- let ed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
597- let eF = {
598- let ef = ed
599- let eg = size(ef)
600- let eh = $Tuple2(ex, unit)
601- func ei (ej,ek) = if ((ek >= eg))
602- then ej
603- else dX(ej, ef[ek])
598+ let eo = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
599+ let eG = {
600+ let eq = eo
601+ let er = size(eq)
602+ let es = $Tuple2(ey, unit)
603+ func et (eu,ev) = if ((ev >= er))
604+ then eu
605+ else ef(eu, eq[ev])
604606
605- func el (ej,ek) = if ((ek >= eg))
606- then ej
607+ func ew (eu,ev) = if ((ev >= er))
608+ then eu
607609 else throw("List size exceeds 15")
608610
609- el(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(ei(eh, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
611+ ew(et(et(et(et(et(et(et(et(et(et(et(et(et(et(et(es, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
610612 }
611- let eC = eF._1
612- let em = eF._2
613- if ((em != unit))
614- then eC
615- else throw(("Y calculation error, Y = " + toString(eC)))
613+ let eD = eG._1
614+ let ek = eG._2
615+ if ((ek != unit))
616+ then eD
617+ else throw(("Y calculation error, Y = " + toString(eD)))
616618 }
617619
618620
619-func eG (eH,eI,eJ) = {
620- let eK = fraction(dI([eH, eI]), c, eJ)
621- if ((eJ == e))
622- then e
623- else eK
624- }
625-
626-
627-func eL (eM,eN,eO) = {
628- let eP = (toBigInt(bJ(ba(bi))) - eM)
629- let eQ = (toBigInt(bJ(ba(bj))) - eN)
630- let eR = (toBigInt(value(assetInfo(bh)).quantity) - eO)
631- let eS = eG(eP, eQ, eR)
632- eS
633- }
634-
635-
636-func eT (eU,eV,eO) = {
637- let eP = (bJ(ba(bi)) + eU)
638- let eQ = (bJ(ba(bj)) + eV)
639- let eR = (value(assetInfo(bh)).quantity + eO)
640- let eK = eG(toBigInt(eP), toBigInt(eQ), toBigInt(eR))
641- let eW = [IntegerEntry(an, height), StringEntry(am, toString(eK))]
642- $Tuple2(eW, eK)
643- }
644-
645-
646-func eX (eY,eK) = if ((eK >= eY))
647- then true
648- else aJ("updated DLp lower than current DLp")
649-
650-
651-func eZ (fa) = {
652- let fb = fa.amount
653- let fc = fraction(fa.amount, fa.price, a, FLOOR)
654- let fd = if ((fa.orderType == Buy))
655- then $Tuple2(fb, -(fc))
656- else $Tuple2(-(fb), fc)
657- let eU = fd._1
658- let eV = fd._2
659- if (if (if (aR())
660- then true
661- else (bg == r))
662- then true
663- else (bg == s))
664- then throw("Admin blocked")
665- else if (if ((fa.assetPair.amountAsset != bi))
666- then true
667- else (fa.assetPair.priceAsset != bj))
668- then throw("Wr assets")
669- else {
670- let fe = parseBigIntValue(getStringValue(this, am))
671- let ff = eT(eU, eV, 0)
672- let fg = ff._1
673- let fh = ff._2
674- let fi = (fh >= fe)
675- fi
676- }
677- }
678-
679-
680-func fj (dZ) = if ((size(dZ.payments) != 1))
681- then throw("1 pmnt exp")
682- else {
683- let fk = value(dZ.payments[0])
684- let cw = value(fk.assetId)
685- let dc = fk.amount
686- let do = cu(toBase58String(dZ.transactionId), toBase58String(cw), dc, dZ.caller)
687- let cQ = do._1
688- let cR = do._2
689- let cE = parseIntValue(do._9)
690- let cS = do._10
691- if (if (aR())
692- then true
693- else (cE == s))
694- then throw(("Admin blocked: " + toString(cE)))
695- else $Tuple5(cQ, cR, dc, cw, cS)
696- }
697-
698-
699-func fl (fm,ae,fn,fo,bS,cZ,da,db,dc,dd) = {
700- let do = cT(ae, bS, value(fn).amount, value(fn).assetId, value(fo).amount, value(fo).assetId, fm, (ae == ""), cZ, da, db, dc, dd)
701- let cE = parseIntValue(do._8)
702- if (if (if (aR())
703- then true
704- else (cE == q))
705- then true
706- else (cE == s))
707- then throw(("Blocked:" + toString(cE)))
708- else do
709- }
710-
711-
712-func fp (fq,cw,cy,ae,fr) = {
713- let cA = toBase58String(value(bi))
714- let cB = toBase58String(value(bj))
715- let cz = bh
716- let di = bk
717- let dj = bl
718- let eR = toBigInt(valueOrErrorMessage(assetInfo(cz), "invalid lp asset").quantity)
719- let fs = if ((eR > e))
621+func eH (eI,cm,co,aa,eJ) = {
622+ let aT = aL()
623+ let cq = aT[u]
624+ let cr = aT[v]
625+ let cp = aT[t]
626+ let cY = parseIntValue(aT[w])
627+ let cZ = parseIntValue(aT[x])
628+ let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
629+ let eL = if ((eK > e))
720630 then true
721631 else throw("initial deposit requires all coins")
722- if ((fs == fs))
632+ if ((eL == eL))
723633 then {
724- let cG = bJ(cA)
725- let cI = bJ(cB)
726- let ft = if ((ae == ""))
727- then $Tuple2(cG, cI)
728- else if ((cw == cA))
729- then if ((fq > cG))
634+ let cw = by(cq)
635+ let cy = by(cr)
636+ let eM = if ((aa == ""))
637+ then $Tuple2(cw, cy)
638+ else if ((cm == cq))
639+ then if ((eI > cw))
730640 then throw("invalid payment amount")
731- else $Tuple2((cG - fq), cI)
732- else if ((cw == cB))
733- then if ((fq > cI))
641+ else $Tuple2((cw - eI), cy)
642+ else if ((cm == cr))
643+ then if ((eI > cy))
734644 then throw("invalid payment amount")
735- else $Tuple2(cG, (cI - fq))
645+ else $Tuple2(cw, (cy - eI))
736646 else throw("wrong pmtAssetId")
737- let fu = ft._1
738- let fv = ft._2
739- let fw = if ((cw == cA))
740- then $Tuple2(fq, 0)
741- else if ((cw == cB))
742- then $Tuple2(0, fq)
647+ let eN = eM._1
648+ let eO = eM._2
649+ let eP = if ((cm == cq))
650+ then $Tuple2(eI, 0)
651+ else if ((cm == cr))
652+ then $Tuple2(0, eI)
743653 else throw("invalid payment")
744- let fx = fw._1
745- let fy = fw._2
746- let fz = if (fr)
747- then $Tuple3(cr(fx, aN)._1, cr(fy, aN)._1, cr(fq, aN)._2)
748- else $Tuple3(fx, fy, 0)
749- let fA = fz._1
750- let fB = fz._2
751- let ct = fz._3
752- let fC = (fu + fA)
753- let fD = (fv + fB)
754- let bX = dI([toBigInt(fu), toBigInt(fv)])
755- let bW = dI([toBigInt(fC), toBigInt(fD)])
756- let fE = if ((bW > bX))
654+ let eQ = eP._1
655+ let eR = eP._2
656+ let eS = if (eJ)
657+ then $Tuple3(cg(eQ, aE)._1, cg(eR, aE)._1, cg(eI, aE)._2)
658+ else $Tuple3(eQ, eR, 0)
659+ let eT = eS._1
660+ let eU = eS._2
661+ let cj = eS._3
662+ let eV = (eN + eT)
663+ let eW = (eO + eU)
664+ let bL = dS([toBigInt(eN), toBigInt(eO)])
665+ let bK = dS([toBigInt(eV), toBigInt(eW)])
666+ let eX = if ((bK > bL))
757667 then true
758668 else throw()
759- if ((fE == fE))
669+ if ((eX == eX))
760670 then {
761- let fF = fraction(eR, (bW - bX), bX, FLOOR)
762- let cL = K(bL(H(fD, dj), H(fC, di)), a)
763- let dH = [IntegerEntry(Y(), cL), IntegerEntry(Z(height, lastBlock.timestamp), cL), StringEntry(ac(cy, ae), bu(fx, fy, toInt(fF), cL, 0, 0, height, lastBlock.timestamp, 0, 0))]
764- let fG = fraction(fv, a, fu)
765- let fH = fraction(fq, a, (fG + a))
766- let fI = (fq - fH)
767- let fJ = fraction(eR, toBigInt(fI), toBigInt(fv))
768- let fK = toInt(fraction((fF - fJ), b, fJ))
769- $Tuple4(toInt(fF), dH, ct, fK)
671+ let eY = fraction(eK, (bK - bL), bL)
672+ let cB = I(bA(F(eW, cZ), F(eV, cY)), a)
673+ let dx = [IntegerEntry(U(), cB), IntegerEntry(V(height, lastBlock.timestamp), cB), StringEntry(Y(co, aa), bj(eQ, eR, toInt(eY), cB, 0, 0, height, lastBlock.timestamp, 0, 0))]
674+ let eZ = fraction(eO, a, eN)
675+ let fa = fraction(eI, a, (eZ + a))
676+ let fb = (eI - fa)
677+ let fc = fraction(eK, toBigInt(fb), toBigInt(eO))
678+ let fd = toInt(fraction((eY - fc), b, fc))
679+ $Tuple4(toInt(eY), dx, cj, fd)
770680 }
771681 else throw("Strict value is not equal to itself.")
772682 }
773683 else throw("Strict value is not equal to itself.")
774684 }
775685
776686
777-func fL (fM,fN,fO,fm,fP,fQ) = {
778- let cz = toBase58String(value(bh))
779- let cA = toBase58String(value(bi))
780- let cB = toBase58String(value(bj))
781- let fR = bk
782- let fS = bl
783- let fT = bg
784- let cy = if ((fm == bt))
785- then fP
786- else fm
787- let fk = value(fO[0])
788- let cw = value(fk.assetId)
789- let dc = fk.amount
790- let eS = eL(e, e, e)
791- if ((eS == eS))
792- then {
793- let cv = toBase58String(fQ)
794- if ((cz != toBase58String(cw)))
795- then throw("Wrong LP")
796- else {
797- let cG = bJ(cA)
798- let cI = bJ(cB)
799- let fU = {
800- let aO = invoke(this, "getOneTknV2READONLY", [fM, dc], nil)
801- if ($isInstanceOf(aO, "(Int, Int)"))
802- then aO
803- else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
804- }
805- if ((fU == fU))
687+func fe (ff,fg,fh,dP,fi,fj) = {
688+ let aT = aL()
689+ let cp = aT[t]
690+ let cq = aT[u]
691+ let cr = aT[v]
692+ let fk = parseIntValue(aT[w])
693+ let fl = parseIntValue(aT[x])
694+ let fm = aT[s]
695+ let co = if ((dP == bi))
696+ then fi
697+ else dP
698+ let dN = value(fh[0])
699+ let cm = value(dN.assetId)
700+ let cS = dN.amount
701+ let cl = toBase58String(fj)
702+ if ((cp != toBase58String(cm)))
703+ then throw("Wrong LP")
704+ else {
705+ let cw = by(cq)
706+ let cy = by(cr)
707+ let fn = {
708+ let aF = invoke(this, "getOneTknV2READONLY", [ff, cS], nil)
709+ if ($isInstanceOf(aF, "(Int, Int)"))
710+ then aF
711+ else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
712+ }
713+ if ((fn == fn))
714+ then {
715+ let cj = fn._2
716+ let fo = fn._1
717+ let fp = if (if ((fg > 0))
718+ then (fg > fo)
719+ else false)
720+ then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
721+ else fo
722+ let fq = if ((ff == cq))
723+ then $Tuple4(fp, 0, ((cw - fp) - cj), cy)
724+ else if ((ff == cr))
725+ then $Tuple4(0, fp, cw, ((cy - fp) - cj))
726+ else throw("invalid out asset id")
727+ let fr = fq._1
728+ let fs = fq._2
729+ let eV = fq._3
730+ let eW = fq._4
731+ let ft = bA(F(eW, fl), F(eV, fk))
732+ let fu = I(ft, a)
733+ let fv = if ((ff == "WAVES"))
734+ then unit
735+ else fromBase58String(ff)
736+ let fw = if ((cj > 0))
737+ then [ScriptTransfer(aK, cj, fv)]
738+ else nil
739+ let cI = ([ScriptTransfer(co, fp, fv), StringEntry(ab(toString(co), cl), bu(fr, fs, cS, fu, height, lastBlock.timestamp)), IntegerEntry(U(), fu), IntegerEntry(V(height, lastBlock.timestamp), fu)] ++ fw)
740+ if ((cI == cI))
806741 then {
807- let ct = fU._2
808- let fV = fU._1
809- let fW = if (if ((fN > 0))
810- then (fN > fV)
811- else false)
812- then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
813- else fV
814- let fX = if ((fM == cA))
815- then $Tuple4(fW, 0, ((cG - fW) - ct), cI)
816- else if ((fM == cB))
817- then $Tuple4(0, fW, cG, ((cI - fW) - ct))
818- else throw("invalid out asset id")
819- let fY = fX._1
820- let fZ = fX._2
821- let fC = fX._3
822- let fD = fX._4
823- let ga = bL(H(fD, fS), H(fC, fR))
824- let gb = K(ga, a)
825- let gc = if ((fM == "WAVES"))
826- then unit
827- else fromBase58String(fM)
828- let gd = if ((ct > 0))
829- then [ScriptTransfer(aT, ct, gc)]
830- else nil
831- let cS = ([ScriptTransfer(cy, fW, gc), StringEntry(af(toString(cy), cv), bF(fY, fZ, dc, gb, height, lastBlock.timestamp)), IntegerEntry(Y(), gb), IntegerEntry(Z(height, lastBlock.timestamp), gb)] ++ gd)
832- if ((cS == cS))
833- then {
834- let ge = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
835- if ((ge == ge))
836- then {
837- let gf = {
838- let gg = if ((this == aT))
839- then 0
840- else ct
841- let gh = if ((aY(fM) == bi))
842- then true
843- else false
844- if (gh)
845- then $Tuple2(-((fV + gg)), 0)
846- else $Tuple2(0, -((fV + gg)))
847- }
848- let eU = gf._1
849- let eV = gf._2
850- let gi = eT(eU, eV, 0)
851- let gj = gi._1
852- let eK = gi._2
853- let gk = eX(eS, eK)
854- if ((gk == gk))
855- then $Tuple2((cS ++ gj), fW)
856- else throw("Strict value is not equal to itself.")
857- }
858- else throw("Strict value is not equal to itself.")
859- }
742+ let fx = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
743+ if ((fx == fx))
744+ then $Tuple2(cI, fp)
860745 else throw("Strict value is not equal to itself.")
861746 }
862747 else throw("Strict value is not equal to itself.")
863748 }
749+ else throw("Strict value is not equal to itself.")
864750 }
865- else throw("Strict value is not equal to itself.")
866751 }
867752
868753
869-func gl () = {
870- let gm = getString(W())
871- if ($isInstanceOf(gm, "String"))
754+func fy () = {
755+ let av = getString(S())
756+ if ($isInstanceOf(av, "String"))
872757 then {
873- let dM = gm
874- fromBase58String(dM)
758+ let dZ = av
759+ fromBase58String(dZ)
875760 }
876- else if ($isInstanceOf(gm, "Unit"))
761+ else if ($isInstanceOf(av, "Unit"))
877762 then unit
878763 else throw("Match error")
879764 }
880765
881766
882-func gn () = {
883- let gm = getString(X())
884- if ($isInstanceOf(gm, "String"))
767+func fz () = {
768+ let av = getString(T())
769+ if ($isInstanceOf(av, "String"))
885770 then {
886- let dM = gm
887- fromBase58String(dM)
771+ let dZ = av
772+ fromBase58String(dZ)
888773 }
889- else if ($isInstanceOf(gm, "Unit"))
774+ else if ($isInstanceOf(av, "Unit"))
890775 then unit
891776 else throw("Match error")
892777 }
893778
894779
895-let go = throw("Permission denied")
780+let fA = throw("Permission denied")
896781
897-func gp (dZ) = {
898- let gm = gl()
899- if ($isInstanceOf(gm, "ByteVector"))
782+func fB (dM) = {
783+ let av = fy()
784+ if ($isInstanceOf(av, "ByteVector"))
900785 then {
901- let gq = gm
902- (dZ.callerPublicKey == gq)
786+ let fC = av
787+ (dM.callerPublicKey == fC)
903788 }
904- else if ($isInstanceOf(gm, "Unit"))
905- then (dZ.caller == this)
789+ else if ($isInstanceOf(av, "Unit"))
790+ then (dM.caller == this)
906791 else throw("Match error")
907792 }
908793
909794
910-func gr (dZ) = {
911- let gm = gl()
912- if ($isInstanceOf(gm, "ByteVector"))
795+func fD (dM) = {
796+ let av = fy()
797+ if ($isInstanceOf(av, "ByteVector"))
913798 then {
914- let gq = gm
915- if ((dZ.callerPublicKey == gq))
799+ let fC = av
800+ if ((dM.callerPublicKey == fC))
916801 then true
917- else go
802+ else fA
918803 }
919- else if ($isInstanceOf(gm, "Unit"))
920- then if ((dZ.caller == this))
804+ else if ($isInstanceOf(av, "Unit"))
805+ then if ((dM.caller == this))
921806 then true
922- else go
807+ else fA
923808 else throw("Match error")
924809 }
925810
926811
927-@Callable(dZ)
928-func constructor (V) = {
929- let ez = gr(dZ)
930- if ((ez == ez))
931- then [StringEntry(V(), V)]
812+@Callable(dM)
813+func constructor (R) = {
814+ let eA = fD(dM)
815+ if ((eA == eA))
816+ then [StringEntry(R(), R)]
932817 else throw("Strict value is not equal to itself.")
933818 }
934819
935820
936821
937-@Callable(dZ)
938-func setManager (gs) = {
939- let ez = gr(dZ)
940- if ((ez == ez))
822+@Callable(dM)
823+func setManager (fE) = {
824+ let eA = fD(dM)
825+ if ((eA == eA))
941826 then {
942- let gt = fromBase58String(gs)
943- if ((gt == gt))
944- then [StringEntry(X(), gs)]
827+ let fF = fromBase58String(fE)
828+ if ((fF == fF))
829+ then [StringEntry(T(), fE)]
945830 else throw("Strict value is not equal to itself.")
946831 }
947832 else throw("Strict value is not equal to itself.")
948833 }
949834
950835
951836
952-@Callable(dZ)
837+@Callable(dM)
953838 func confirmManager () = {
954- let cq = gn()
955- let gu = if (isDefined(cq))
839+ let cf = fz()
840+ let fG = if (isDefined(cf))
956841 then true
957842 else throw("No pending manager")
958- if ((gu == gu))
843+ if ((fG == fG))
959844 then {
960- let gv = if ((dZ.callerPublicKey == value(cq)))
845+ let fH = if ((dM.callerPublicKey == value(cf)))
961846 then true
962847 else throw("You are not pending manager")
963- if ((gv == gv))
964- then [StringEntry(W(), toBase58String(value(cq))), DeleteEntry(X())]
848+ if ((fH == fH))
849+ then [StringEntry(S(), toBase58String(value(cf))), DeleteEntry(T())]
965850 else throw("Strict value is not equal to itself.")
966851 }
967852 else throw("Strict value is not equal to itself.")
968853 }
969854
970855
971856
972-@Callable(dZ)
973-func put (gw,gx) = {
974- let gy = bo()
975- let gz = valueOrErrorMessage(addressFromString(gy[C]), "Wr st addr")
976- let gA = valueOrErrorMessage(addressFromString(gy[E]), "Wr sl addr")
977- if ((0 > gw))
857+@Callable(dM)
858+func put (fI,fJ) = {
859+ let fK = bd()
860+ let fL = valueOrErrorMessage(addressFromString(fK[A]), "Wr st addr")
861+ let fM = valueOrErrorMessage(addressFromString(fK[C]), "Wr sl addr")
862+ if ((0 > fI))
978863 then throw("Wrong slippage")
979- else if ((size(dZ.payments) != 2))
864+ else if ((size(dM.payments) != 2))
980865 then throw("2 pmnts expd")
981866 else {
982- let gB = toBigInt(value(dZ.payments[0]).amount)
983- let gC = toBigInt(value(dZ.payments[1]).amount)
984- let eP = (toBigInt(bJ(ba(bi))) - gB)
985- if ((eP == eP))
867+ let fN = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], fI, true, false, true, 0, "")
868+ let dr = fN._2
869+ let fO = fN._7
870+ let cI = fN._9
871+ let ds = fN._10
872+ let dt = fN._11
873+ let cq = fN._12
874+ let cr = fN._13
875+ let de = invoke(aD, "emit", [dr], nil)
876+ if ((de == de))
986877 then {
987- let eQ = (toBigInt(bJ(ba(bj))) - gC)
988- if ((eQ == eQ))
878+ let fP = {
879+ let av = de
880+ if ($isInstanceOf(av, "Address"))
881+ then {
882+ let fQ = av
883+ invoke(fQ, "emit", [dr], nil)
884+ }
885+ else unit
886+ }
887+ if ((fP == fP))
989888 then {
990- let eR = toBigInt(value(assetInfo(bh)).quantity)
991- if ((eR == eR))
889+ let fR = if ((ds > 0))
890+ then invoke(fM, "put", nil, [AttachedPayment(cq, ds)])
891+ else nil
892+ if ((fR == fR))
992893 then {
993- let eS = eL(gB, gC, toBigInt(0))
994- if ((eS == eS))
894+ let fS = if ((dt > 0))
895+ then invoke(fM, "put", nil, [AttachedPayment(cr, dt)])
896+ else nil
897+ if ((fS == fS))
995898 then {
996- let gD = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gw, true, false, true, 0, "")
997- let dB = gD._2
998- let gE = gD._7
999- let cS = gD._9
1000- let dC = gD._10
1001- let dD = gD._11
1002- let cA = gD._12
1003- let cB = gD._13
1004- let do = invoke(aM, "emit", [dB], nil)
1005- if ((do == do))
899+ let fT = if (fJ)
1006900 then {
1007- let gF = {
1008- let gm = do
1009- if ($isInstanceOf(gm, "Address"))
1010- then {
1011- let gG = gm
1012- invoke(gG, "emit", [dB], nil)
1013- }
1014- else unit
1015- }
1016- if ((gF == gF))
1017- then {
1018- let gH = if ((dC > 0))
1019- then invoke(gA, "put", nil, [AttachedPayment(cA, dC)])
1020- else nil
1021- if ((gH == gH))
1022- then {
1023- let gI = if ((dD > 0))
1024- then invoke(gA, "put", nil, [AttachedPayment(cB, dD)])
1025- else nil
1026- if ((gI == gI))
1027- then {
1028- let gJ = if (gx)
1029- then {
1030- let gK = invoke(gz, "stake", nil, [AttachedPayment(gE, dB)])
1031- if ((gK == gK))
1032- then nil
1033- else throw("Strict value is not equal to itself.")
1034- }
1035- else [ScriptTransfer(dZ.caller, dB, gE)]
1036- let gL = eT(0, 0, 0)
1037- let gj = gL._1
1038- let eK = gL._2
1039- let gM = if ((eK >= eS))
1040- then true
1041- else aJ(makeString(["updated DLp lower than current DLp", toString(eP), toString(eQ), toString(eR), toString(eS), toString(eK), toString(dC), toString(dD)], " "))
1042- if ((gM == gM))
1043- then {
1044- let gN = value(assetInfo(bh)).quantity
1045- if ((gN == gN))
1046- then ((cS ++ gJ) ++ gj)
1047- else throw("Strict value is not equal to itself.")
1048- }
1049- else throw("Strict value is not equal to itself.")
1050- }
1051- else throw("Strict value is not equal to itself.")
1052- }
1053- else throw("Strict value is not equal to itself.")
1054- }
901+ let fU = invoke(fL, "stake", nil, [AttachedPayment(fO, dr)])
902+ if ((fU == fU))
903+ then nil
1055904 else throw("Strict value is not equal to itself.")
1056905 }
1057- else throw("Strict value is not equal to itself.")
906+ else [ScriptTransfer(dM.caller, dr, fO)]
907+ (cI ++ fT)
1058908 }
1059909 else throw("Strict value is not equal to itself.")
1060910 }
1061911 else throw("Strict value is not equal to itself.")
1062912 }
1063913 else throw("Strict value is not equal to itself.")
1064914 }
1065915 else throw("Strict value is not equal to itself.")
1066916 }
1067917 }
1068918
1069919
1070920
1071-@Callable(dZ)
1072-func putOneTknV2 (fN,gx) = {
1073- let gO = {
1074- let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1075- if ($isInstanceOf(aO, "Boolean"))
1076- then aO
1077- else throw(($getType(aO) + " couldn't be cast to Boolean"))
921+@Callable(dM)
922+func putOneTknV2 (fg,fJ) = {
923+ let fV = {
924+ let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
925+ if ($isInstanceOf(aF, "Boolean"))
926+ then aF
927+ else throw(($getType(aF) + " couldn't be cast to Boolean"))
1078928 }
1079- let gP = if (if (if (aR())
929+ let fW = if (if (if (aI())
1080930 then true
1081- else (bg == q))
931+ else (aX == o))
1082932 then true
1083- else (bg == s))
933+ else (aX == q))
1084934 then true
1085- else gO
1086- let gQ = [if (if (!(gP))
935+ else fV
936+ let fX = [if (if (!(fW))
1087937 then true
1088- else gp(dZ))
938+ else fB(dM))
1089939 then true
1090- else aJ("put operation is blocked by admin"), if ((size(dZ.payments) == 1))
940+ else aB("put operation is blocked by admin"), if ((size(dM.payments) == 1))
1091941 then true
1092- else aJ("exactly 1 payment are expected")]
1093- if ((gQ == gQ))
942+ else aB("exactly 1 payment are expected")]
943+ if ((fX == fX))
1094944 then {
1095- let cA = toBase58String(value(bi))
1096- let cB = toBase58String(value(bj))
1097- let cz = bh
1098- let fR = bk
1099- let fS = bl
1100- let cy = if ((dZ.caller == this))
1101- then dZ.originCaller
1102- else dZ.caller
1103- let fk = value(dZ.payments[0])
1104- let cw = toBase58String(value(fk.assetId))
1105- let dc = fk.amount
1106- let eS = if ((fk.assetId == bi))
1107- then eL(toBigInt(dc), toBigInt(0), toBigInt(0))
1108- else eL(toBigInt(0), toBigInt(dc), toBigInt(0))
1109- if ((eS == eS))
945+ let aT = aL()
946+ let cq = aT[u]
947+ let cr = aT[v]
948+ let cp = fromBase58String(aT[t])
949+ let fk = parseIntValue(aT[w])
950+ let fl = parseIntValue(aT[x])
951+ let co = if ((dM.caller == this))
952+ then dM.originCaller
953+ else dM.caller
954+ let dN = value(dM.payments[0])
955+ let cm = toBase58String(value(dN.assetId))
956+ let cS = dN.amount
957+ let fY = eH(cS, cm, toString(co), toBase58String(dM.transactionId), true)
958+ if ((fY == fY))
1110959 then {
1111- let gR = fp(dc, cw, toString(cy), toBase58String(dZ.transactionId), true)
1112- if ((gR == gR))
960+ let cj = fY._3
961+ let cI = fY._2
962+ let fZ = fY._1
963+ let dr = if (if ((fg > 0))
964+ then (fg > fZ)
965+ else false)
966+ then aB(makeString(["amount to receive is less than ", toString(fg)], ""))
967+ else fZ
968+ let fN = invoke(aD, "emit", [dr], nil)
969+ if ((fN == fN))
1113970 then {
1114- let ct = gR._3
1115- let cS = gR._2
1116- let gS = gR._1
1117- let dB = if (if ((fN > 0))
1118- then (fN > gS)
1119- else false)
1120- then aJ(makeString(["amount to receive is less than ", toString(fN)], ""))
1121- else gS
1122- let gD = invoke(aM, "emit", [dB], nil)
1123- if ((gD == gD))
971+ let fP = {
972+ let av = fN
973+ if ($isInstanceOf(av, "Address"))
974+ then {
975+ let fQ = av
976+ invoke(fQ, "emit", [dr], nil)
977+ }
978+ else unit
979+ }
980+ if ((fP == fP))
1124981 then {
1125- let gF = {
1126- let gm = gD
1127- if ($isInstanceOf(gm, "Address"))
1128- then {
1129- let gG = gm
1130- invoke(gG, "emit", [dB], nil)
1131- }
1132- else unit
1133- }
1134- if ((gF == gF))
982+ let fT = if (fJ)
1135983 then {
1136- let gJ = if (gx)
1137- then {
1138- let gK = invoke(bq, "stake", nil, [AttachedPayment(cz, dB)])
1139- if ((gK == gK))
1140- then nil
1141- else throw("Strict value is not equal to itself.")
1142- }
1143- else [ScriptTransfer(dZ.caller, dB, cz)]
1144- let gd = if ((ct > 0))
1145- then [ScriptTransfer(aT, ct, fromBase58String(cw))]
1146- else nil
1147- let gT = if ((this == aT))
1148- then $Tuple2(0, 0)
1149- else {
1150- let gU = if ((fk.assetId == bi))
1151- then true
1152- else false
1153- if (gU)
1154- then $Tuple2(-(ct), 0)
1155- else $Tuple2(0, -(ct))
1156- }
1157- let eU = gT._1
1158- let eV = gT._2
1159- let gV = eT(eU, eV, 0)
1160- let gj = gV._1
1161- let eK = gV._2
1162- let gk = eX(eS, eK)
1163- if ((gk == gk))
1164- then $Tuple2((((cS ++ gJ) ++ gd) ++ gj), dB)
984+ let fU = invoke(bf, "stake", nil, [AttachedPayment(cp, dr)])
985+ if ((fU == fU))
986+ then nil
1165987 else throw("Strict value is not equal to itself.")
1166988 }
1167- else throw("Strict value is not equal to itself.")
989+ else [ScriptTransfer(dM.caller, dr, cp)]
990+ let fw = if ((cj > 0))
991+ then [ScriptTransfer(aK, cj, fromBase58String(cm))]
992+ else nil
993+ $Tuple2(((cI ++ fT) ++ fw), dr)
1168994 }
1169995 else throw("Strict value is not equal to itself.")
1170996 }
1171997 else throw("Strict value is not equal to itself.")
1172998 }
1173999 else throw("Strict value is not equal to itself.")
11741000 }
11751001 else throw("Strict value is not equal to itself.")
11761002 }
11771003
11781004
11791005
1180-@Callable(dZ)
1181-func putForFree (gW) = if ((0 > gW))
1006+@Callable(dM)
1007+func putForFree (ga) = if ((0 > ga))
11821008 then throw("Wrong slpg")
1183- else if ((size(dZ.payments) != 2))
1009+ else if ((size(dM.payments) != 2))
11841010 then throw("2 pmnts expd")
11851011 else {
1186- let gX = fl(toString(dZ.caller), toBase58String(dZ.transactionId), AttachedPayment(value(dZ.payments[0]).assetId, value(dZ.payments[0]).amount), dZ.payments[1], gW, false, false, true, 0, "")
1187- let cS = gX._9
1188- let gB = toBigInt(value(dZ.payments[0]).amount)
1189- let gC = toBigInt(value(dZ.payments[1]).amount)
1190- let eS = eL(gB, gC, toBigInt(0))
1191- if ((eS == eS))
1192- then {
1193- let gY = eT(0, 0, 0)
1194- let gj = gY._1
1195- let eK = gY._2
1196- let gk = eX(eS, eK)
1197- if ((gk == gk))
1198- then (cS ++ gj)
1199- else throw("Strict value is not equal to itself.")
1200- }
1201- else throw("Strict value is not equal to itself.")
1012+ let gb = dO(toString(dM.caller), toBase58String(dM.transactionId), AttachedPayment(value(dM.payments[0]).assetId, value(dM.payments[0]).amount), dM.payments[1], ga, false, false, true, 0, "")
1013+ gb._9
12021014 }
12031015
12041016
12051017
1206-@Callable(dZ)
1018+@Callable(dM)
12071019 func get () = {
1208- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1209- if ((eS == eS))
1020+ let de = dL(dM)
1021+ let gc = de._1
1022+ let cH = de._2
1023+ let cS = de._3
1024+ let cm = de._4
1025+ let cI = de._5
1026+ let eB = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1027+ if ((eB == eB))
1028+ then cI
1029+ else throw("Strict value is not equal to itself.")
1030+ }
1031+
1032+
1033+
1034+@Callable(dM)
1035+func getOneTknV2 (ff,fg) = {
1036+ let fV = {
1037+ let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1038+ if ($isInstanceOf(aF, "Boolean"))
1039+ then aF
1040+ else throw(($getType(aF) + " couldn't be cast to Boolean"))
1041+ }
1042+ let gd = if (if (aI())
1043+ then true
1044+ else (aX == q))
1045+ then true
1046+ else fV
1047+ let fX = [if (if (!(gd))
1048+ then true
1049+ else fB(dM))
1050+ then true
1051+ else aB("get operation is blocked by admin"), if ((size(dM.payments) == 1))
1052+ then true
1053+ else aB("exactly 1 payment are expected")]
1054+ if ((fX == fX))
12101055 then {
1211- let do = fj(dZ)
1212- let gZ = do._1
1213- let cR = do._2
1214- let dc = do._3
1215- let cw = do._4
1216- let cS = do._5
1217- let eA = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1218- if ((eA == eA))
1219- then {
1220- let ha = eT(-(gZ), -(cR), 0)
1221- let gj = ha._1
1222- let eK = ha._2
1223- let gk = eX(eS, eK)
1224- if ((gk == gk))
1225- then (cS ++ gj)
1226- else throw("Strict value is not equal to itself.")
1227- }
1228- else throw("Strict value is not equal to itself.")
1056+ let ge = fe(ff, fg, dM.payments, dM.caller, dM.originCaller, dM.transactionId)
1057+ let cI = ge._1
1058+ let fp = ge._2
1059+ $Tuple2(cI, fp)
12291060 }
12301061 else throw("Strict value is not equal to itself.")
12311062 }
12321063
12331064
12341065
1235-@Callable(dZ)
1236-func getOneTknV2 (fM,fN) = {
1237- let gO = {
1238- let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1239- if ($isInstanceOf(aO, "Boolean"))
1240- then aO
1241- else throw(($getType(aO) + " couldn't be cast to Boolean"))
1242- }
1243- let hb = if (if (aR())
1244- then true
1245- else (bg == s))
1246- then true
1247- else gO
1248- let gQ = [if (if (!(hb))
1249- then true
1250- else gp(dZ))
1251- then true
1252- else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 1))
1253- then true
1254- else aJ("exactly 1 payment are expected")]
1255- if ((gQ == gQ))
1256- then {
1257- let hc = fL(fM, fN, dZ.payments, dZ.caller, dZ.originCaller, dZ.transactionId)
1258- let cS = hc._1
1259- let fW = hc._2
1260- $Tuple2(cS, fW)
1261- }
1262- else throw("Strict value is not equal to itself.")
1066+@Callable(dM)
1067+func getOneTknV2READONLY (ff,gf) = {
1068+ let aT = aL()
1069+ let cq = aT[u]
1070+ let cr = aT[v]
1071+ let cp = aT[t]
1072+ let dT = [toBigInt(by(cq)), toBigInt(by(cr))]
1073+ let gg = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cp)), "invalid lp asset").quantity)
1074+ let bL = dS(dT)
1075+ let bK = (bL - fraction(toBigInt(gf), bL, gg))
1076+ let gh = if ((ff == cq))
1077+ then 0
1078+ else if ((ff == cr))
1079+ then 1
1080+ else throw("invalid out asset id")
1081+ let gi = ex(dT, gh, bK)
1082+ let gj = (dT[gh] - gi)
1083+ let gk = max([0, toInt((gj - f))])
1084+ let gl = cg(gk, aG)
1085+ let fo = gl._1
1086+ let cj = gl._2
1087+ $Tuple2(nil, $Tuple2(fo, cj))
12631088 }
12641089
12651090
12661091
1267-@Callable(dZ)
1268-func refreshDLp () = {
1269- let hd = valueOrElse(getInteger(an), 0)
1270- let he = if (((height - hd) >= aq))
1271- then unit
1272- else aJ(makeString([toString(aq), " blocks have not passed since the previous call"], ""))
1273- if ((he == he))
1274- then {
1275- let fe = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, am), "0")), aL("invalid dLp"))
1276- let hf = eT(0, 0, 0)
1277- let hg = hf._1
1278- let eK = hf._2
1279- let eW = if ((fe != eK))
1280- then hg
1281- else aJ("nothing to refresh")
1282- $Tuple2(eW, toString(eK))
1283- }
1284- else throw("Strict value is not equal to itself.")
1092+@Callable(dM)
1093+func getOneTknV2WithBonusREADONLY (ff,gf) = {
1094+ let aT = aL()
1095+ let cq = aT[u]
1096+ let cr = aT[v]
1097+ let cp = aT[t]
1098+ let cw = by(cq)
1099+ let cy = by(cr)
1100+ let gm = {
1101+ let aF = invoke(this, "getOneTknV2READONLY", [ff, gf], nil)
1102+ if ($isInstanceOf(aF, "(Int, Int)"))
1103+ then aF
1104+ else throw(($getType(aF) + " couldn't be cast to (Int, Int)"))
1105+ }
1106+ let fo = gm._1
1107+ let cj = gm._2
1108+ let de = ck("", cp, gf, this)
1109+ let cG = de._1
1110+ let cH = de._2
1111+ let gn = (cG + cH)
1112+ let fd = if ((gn == 0))
1113+ then if ((fo == 0))
1114+ then 0
1115+ else throw("bonus calculation error")
1116+ else fraction((fo - gn), a, gn)
1117+ $Tuple2(nil, $Tuple3(fo, cj, fd))
12851118 }
12861119
12871120
12881121
1289-@Callable(dZ)
1290-func getOneTknV2READONLY (fM,hh) = {
1291- let cA = toBase58String(value(bi))
1292- let cB = toBase58String(value(bj))
1293- let cz = toBase58String(value(bh))
1294- let dJ = [toBigInt(bJ(cA)), toBigInt(bJ(cB))]
1295- let eJ = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cz)), "invalid lp asset").quantity)
1296- let bX = dI(dJ)
1297- let bW = (bX - fraction(toBigInt(hh), bX, eJ))
1298- let hi = if ((fM == cA))
1299- then 0
1300- else if ((fM == cB))
1301- then 1
1302- else throw("invalid out asset id")
1303- let hj = ew(dJ, hi, bW)
1304- let hk = (dJ[hi] - hj)
1305- let hl = max([0, toInt((hk - f))])
1306- let hm = cr(hl, aP)
1307- let fV = hm._1
1308- let ct = hm._2
1309- $Tuple2(nil, $Tuple2(fV, ct))
1310- }
1311-
1312-
1313-
1314-@Callable(dZ)
1315-func getOneTknV2WithBonusREADONLY (fM,hh) = {
1316- let cA = toBase58String(value(bi))
1317- let cB = toBase58String(value(bj))
1318- let cz = toBase58String(value(bh))
1319- let cG = bJ(cA)
1320- let cI = bJ(cB)
1321- let hn = {
1322- let aO = invoke(this, "getOneTknV2READONLY", [fM, hh], nil)
1323- if ($isInstanceOf(aO, "(Int, Int)"))
1324- then aO
1325- else throw(($getType(aO) + " couldn't be cast to (Int, Int)"))
1326- }
1327- let fV = hn._1
1328- let ct = hn._2
1329- let do = cu("", cz, hh, this)
1330- let cQ = do._1
1331- let cR = do._2
1332- let ho = (cQ + cR)
1333- let fK = if ((ho == 0))
1334- then if ((fV == 0))
1335- then 0
1336- else throw("bonus calculation error")
1337- else fraction((fV - ho), a, ho)
1338- $Tuple2(nil, $Tuple3(fV, ct, fK))
1339- }
1340-
1341-
1342-
1343-@Callable(dZ)
1344-func getNoLess (hp,hq) = {
1345- let do = fj(dZ)
1346- let cQ = do._1
1347- let cR = do._2
1348- let dc = do._3
1349- let cw = do._4
1350- let cS = do._5
1351- if ((hp > cQ))
1352- then throw(((("Failed: " + toString(cQ)) + " < ") + toString(hp)))
1353- else if ((hq > cR))
1354- then throw(((("Failed: " + toString(cR)) + " < ") + toString(hq)))
1122+@Callable(dM)
1123+func getNoLess (go,gp) = {
1124+ let de = dL(dM)
1125+ let cG = de._1
1126+ let cH = de._2
1127+ let cS = de._3
1128+ let cm = de._4
1129+ let cI = de._5
1130+ if ((go > cG))
1131+ then throw(((("Failed: " + toString(cG)) + " < ") + toString(go)))
1132+ else if ((gp > cH))
1133+ then throw(((("Failed: " + toString(cH)) + " < ") + toString(gp)))
13551134 else {
1356- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1357- if ((eS == eS))
1358- then {
1359- let hr = invoke(aM, "burn", [dc], [AttachedPayment(cw, dc)])
1360- if ((hr == hr))
1361- then {
1362- let hs = eT(-(cQ), -(cR), 0)
1363- let gj = hs._1
1364- let eK = hs._2
1365- let gk = eX(eS, eK)
1366- if ((gk == gk))
1367- then (cS ++ gj)
1368- else throw("Strict value is not equal to itself.")
1369- }
1370- else throw("Strict value is not equal to itself.")
1371- }
1135+ let gq = invoke(aD, "burn", [cS], [AttachedPayment(cm, cS)])
1136+ if ((gq == gq))
1137+ then cI
13721138 else throw("Strict value is not equal to itself.")
13731139 }
13741140 }
13751141
13761142
13771143
1378-@Callable(dZ)
1379-func unstakeAndGet (cs) = {
1380- let ht = if ((size(dZ.payments) != 0))
1144+@Callable(dM)
1145+func unstakeAndGet (ch) = {
1146+ let gr = if ((size(dM.payments) != 0))
13811147 then throw("No pmnts expd")
13821148 else true
1383- if ((ht == ht))
1149+ if ((gr == gr))
13841150 then {
1385- let hu = bo()
1386- let gE = bh
1387- let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1388- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1389- let hw = invoke(hv, "unstake", [toBase58String(gE), cs], nil)
1390- if ((hw == hw))
1151+ let bX = aL()
1152+ let gs = bd()
1153+ let fO = fromBase58String(bX[t])
1154+ let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1155+ let gu = invoke(gt, "unstake", [toBase58String(fO), ch], nil)
1156+ if ((gu == gu))
13911157 then {
1392- let do = cu(toBase58String(dZ.transactionId), toBase58String(gE), cs, dZ.caller)
1393- let cQ = do._1
1394- let cR = do._2
1395- let cE = parseIntValue(do._9)
1396- let cS = do._10
1397- let hx = if (if (aR())
1158+ let de = ck(toBase58String(dM.transactionId), toBase58String(fO), ch, dM.caller)
1159+ let cu = parseIntValue(de._9)
1160+ let cI = de._10
1161+ let gv = if (if (aI())
13981162 then true
1399- else (cE == s))
1400- then throw(("Blocked: " + toString(cE)))
1163+ else (cu == q))
1164+ then throw(("Blocked: " + toString(cu)))
14011165 else true
1402- if ((hx == hx))
1166+ if ((gv == gv))
14031167 then {
1404- let hy = invoke(aM, "burn", [cs], [AttachedPayment(gE, cs)])
1405- if ((hy == hy))
1406- then {
1407- let hz = eT(-(cQ), -(cR), 0)
1408- let gj = hz._1
1409- let eK = hz._2
1410- let gk = eX(eS, eK)
1411- if ((gk == gk))
1412- then (cS ++ gj)
1413- else throw("Strict value is not equal to itself.")
1414- }
1168+ let gw = invoke(aD, "burn", [ch], [AttachedPayment(fO, ch)])
1169+ if ((gw == gw))
1170+ then cI
14151171 else throw("Strict value is not equal to itself.")
14161172 }
14171173 else throw("Strict value is not equal to itself.")
14181174 }
14191175 else throw("Strict value is not equal to itself.")
14201176 }
14211177 else throw("Strict value is not equal to itself.")
14221178 }
14231179
14241180
14251181
1426-@Callable(dZ)
1427-func unstakeAndGetNoLess (hA,hB,hq) = {
1428- let hb = if (aR())
1182+@Callable(dM)
1183+func unstakeAndGetNoLess (gx,gy,gp) = {
1184+ let gd = if (aI())
14291185 then true
1430- else (bg == s)
1431- let gQ = [if (!(hb))
1186+ else (aX == q)
1187+ let fX = [if (!(gd))
14321188 then true
1433- else throw("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
1189+ else throw("get operation is blocked by admin"), if ((size(dM.payments) == 0))
14341190 then true
14351191 else throw("no payments are expected")]
1436- if ((gQ == gQ))
1192+ if ((fX == fX))
14371193 then {
1438- let eS = eL(toBigInt(0), toBigInt(0), toBigInt(0))
1439- let hw = invoke(bq, "unstake", [toBase58String(bh), hA], nil)
1440- if ((hw == hw))
1194+ let gu = invoke(bf, "unstake", [toBase58String(aY), gx], nil)
1195+ if ((gu == gu))
14411196 then {
1442- let hC = cu(toBase58String(dZ.transactionId), toBase58String(bh), hA, dZ.caller)
1443- let cQ = hC._1
1444- let cR = hC._2
1445- let cS = hC._10
1446- let hD = [if ((cQ >= hB))
1197+ let gz = ck(toBase58String(dM.transactionId), toBase58String(aY), gx, dM.caller)
1198+ let cG = gz._1
1199+ let cH = gz._2
1200+ let cI = gz._10
1201+ let gA = [if ((cG >= gy))
14471202 then true
1448- else throw(makeString(["amount asset amount to receive is less than ", toString(hB)], "")), if ((cR >= hq))
1203+ else throw(makeString(["amount asset amount to receive is less than ", toString(gy)], "")), if ((cH >= gp))
14491204 then true
1450- else throw(makeString(["price asset amount to receive is less than ", toString(hq)], ""))]
1451- if ((hD == hD))
1205+ else throw(makeString(["price asset amount to receive is less than ", toString(gp)], ""))]
1206+ if ((gA == gA))
14521207 then {
1453- let hr = invoke(aM, "burn", [hA], [AttachedPayment(bh, hA)])
1454- if ((hr == hr))
1455- then {
1456- let hE = eT(-(cQ), -(cR), 0)
1457- let gj = hE._1
1458- let eK = hE._2
1459- let gk = eX(eS, eK)
1460- if ((gk == gk))
1461- then (cS ++ gj)
1462- else throw("Strict value is not equal to itself.")
1463- }
1208+ let gq = invoke(aD, "burn", [gx], [AttachedPayment(aY, gx)])
1209+ if ((gq == gq))
1210+ then cI
14641211 else throw("Strict value is not equal to itself.")
14651212 }
14661213 else throw("Strict value is not equal to itself.")
14671214 }
14681215 else throw("Strict value is not equal to itself.")
14691216 }
14701217 else throw("Strict value is not equal to itself.")
14711218 }
14721219
14731220
14741221
1475-@Callable(dZ)
1476-func unstakeAndGetOneTknV2 (hA,fM,fN) = {
1477- let gO = {
1478- let aO = invoke(aM, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1479- if ($isInstanceOf(aO, "Boolean"))
1480- then aO
1481- else throw(($getType(aO) + " couldn't be cast to Boolean"))
1222+@Callable(dM)
1223+func unstakeAndGetOneTknV2 (gx,ff,fg) = {
1224+ let fV = {
1225+ let aF = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1226+ if ($isInstanceOf(aF, "Boolean"))
1227+ then aF
1228+ else throw(($getType(aF) + " couldn't be cast to Boolean"))
14821229 }
1483- let hb = if (if (aR())
1230+ let gd = if (if (aI())
14841231 then true
1485- else (bg == s))
1232+ else (aX == q))
14861233 then true
1487- else gO
1488- let gQ = [if (if (!(hb))
1234+ else fV
1235+ let fX = [if (if (!(gd))
14891236 then true
1490- else gp(dZ))
1237+ else fB(dM))
14911238 then true
1492- else aJ("get operation is blocked by admin"), if ((size(dZ.payments) == 0))
1239+ else aB("get operation is blocked by admin"), if ((size(dM.payments) == 0))
14931240 then true
1494- else aJ("no payments are expected")]
1495- if ((gQ == gQ))
1241+ else aB("no payments are expected")]
1242+ if ((fX == fX))
14961243 then {
1497- let hu = bo()
1498- let gE = bh
1499- let hv = valueOrErrorMessage(addressFromString(hu[C]), "Wr st addr")
1500- let hw = invoke(hv, "unstake", [toBase58String(gE), hA], nil)
1501- if ((hw == hw))
1244+ let bX = aL()
1245+ let gs = bd()
1246+ let fO = fromBase58String(bX[t])
1247+ let gt = valueOrErrorMessage(addressFromString(gs[A]), "Wr st addr")
1248+ let gu = invoke(gt, "unstake", [toBase58String(fO), gx], nil)
1249+ if ((gu == gu))
15021250 then {
1503- let hF = fL(fM, fN, [AttachedPayment(gE, hA)], dZ.caller, dZ.originCaller, dZ.transactionId)
1504- let cS = hF._1
1505- let fW = hF._2
1506- $Tuple2(cS, fW)
1251+ let gB = fe(ff, fg, [AttachedPayment(fO, gx)], dM.caller, dM.originCaller, dM.transactionId)
1252+ let cI = gB._1
1253+ let fp = gB._2
1254+ $Tuple2(cI, fp)
15071255 }
15081256 else throw("Strict value is not equal to itself.")
15091257 }
15101258 else throw("Strict value is not equal to itself.")
15111259 }
15121260
15131261
15141262
1515-@Callable(dZ)
1516-func putOneTknV2WithBonusREADONLY (hG,hH) = {
1517- let hI = fp(hG, hH, "", "", true)
1518- let fF = hI._1
1519- let cS = hI._2
1520- let ct = hI._3
1521- let fK = hI._4
1522- $Tuple2(nil, $Tuple3(fF, ct, fK))
1263+@Callable(dM)
1264+func putOneTknV2WithBonusREADONLY (gC,gD) = {
1265+ let aT = aL()
1266+ let cq = aT[u]
1267+ let cr = aT[v]
1268+ let cp = aT[t]
1269+ let gE = eH(gC, gD, "", "", true)
1270+ let eY = gE._1
1271+ let cI = gE._2
1272+ let cj = gE._3
1273+ let fd = gE._4
1274+ $Tuple2(nil, $Tuple3(eY, cj, fd))
15231275 }
15241276
15251277
15261278
1527-@Callable(dZ)
1528-func putOneTknV2WithoutTakeFeeREADONLY (hG,hH) = {
1529- let hJ = fp(hG, hH, "", "", false)
1530- let fF = hJ._1
1531- let cS = hJ._2
1532- let ct = hJ._3
1533- let fK = hJ._4
1534- $Tuple2(nil, $Tuple3(fF, ct, fK))
1279+@Callable(dM)
1280+func putOneTknV2WithoutTakeFeeREADONLY (gC,gD) = {
1281+ let aT = aL()
1282+ let cq = aT[u]
1283+ let cr = aT[v]
1284+ let cp = aT[t]
1285+ let gF = eH(gC, gD, "", "", false)
1286+ let eY = gF._1
1287+ let cI = gF._2
1288+ let cj = gF._3
1289+ let fd = gF._4
1290+ $Tuple2(nil, $Tuple3(eY, cj, fd))
15351291 }
15361292
15371293
15381294
1539-@Callable(dZ)
1540-func activate (hK,hL) = if ((toString(dZ.caller) != toString(aM)))
1295+@Callable(dM)
1296+func activate (gG,gH) = if ((toString(dM.caller) != toString(aD)))
15411297 then throw("denied")
1542- else $Tuple2([StringEntry(ag(), hK), StringEntry(ah(), hL)], "success")
1298+ else $Tuple2([StringEntry(ac(), gG), StringEntry(ad(), gH)], "success")
15431299
15441300
15451301
1546-@Callable(dZ)
1547-func setS (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1548- then go
1549- else [StringEntry(hM, hx)]
1302+@Callable(dM)
1303+func setS (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1304+ then fA
1305+ else [StringEntry(gI, gv)]
15501306
15511307
15521308
1553-@Callable(dZ)
1554-func setI (hM,hx) = if ((toString(dZ.caller) != aF(this, aj())))
1555- then go
1556- else [IntegerEntry(hM, hx)]
1309+@Callable(dM)
1310+func setI (gI,gv) = if ((toString(dM.caller) != ax(this, af())))
1311+ then fA
1312+ else [IntegerEntry(gI, gv)]
15571313
15581314
15591315
1560-@Callable(dZ)
1561-func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aU())
1316+@Callable(dM)
1317+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aL())
15621318
15631319
15641320
1565-@Callable(dZ)
1566-func getAccBalanceWrapperREADONLY (bK) = $Tuple2(nil, bJ(bK))
1321+@Callable(dM)
1322+func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
15671323
15681324
15691325
1570-@Callable(dZ)
1571-func calcPricesWrapperREADONLY (cd,ce,ci) = {
1572- let hN = ch(cd, ce, ci)
1573- $Tuple2(nil, [toString(hN[0]), toString(hN[1]), toString(hN[2])])
1326+@Callable(dM)
1327+func calcPricesWrapperREADONLY (bR,bS,bW) = {
1328+ let gJ = bV(bR, bS, bW)
1329+ $Tuple2(nil, [toString(gJ[0]), toString(gJ[1]), toString(gJ[2])])
15741330 }
15751331
15761332
15771333
1578-@Callable(dZ)
1579-func fromX18WrapperREADONLY (L,hO) = $Tuple2(nil, K(parseBigIntValue(L), hO))
1334+@Callable(dM)
1335+func fromX18WrapperREADONLY (J,gK) = $Tuple2(nil, I(parseBigIntValue(J), gK))
15801336
15811337
15821338
1583-@Callable(dZ)
1584-func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
1339+@Callable(dM)
1340+func toX18WrapperREADONLY (G,H) = $Tuple2(nil, toString(F(G, H)))
15851341
15861342
15871343
1588-@Callable(dZ)
1589-func calcPriceBigIntWrapperREADONLY (bM,bN) = $Tuple2(nil, toString(bL(parseBigIntValue(bM), parseBigIntValue(bN))))
1344+@Callable(dM)
1345+func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
15901346
15911347
15921348
1593-@Callable(dZ)
1594-func estimatePutOperationWrapperREADONLY (cv,bS,cU,cV,cW,cX,hP,cY,cZ) = $Tuple2(nil, cT(cv, bS, cU, cV, cW, cX, hP, cY, cZ, true, false, 0, ""))
1349+@Callable(dM)
1350+func estimatePutOperationWrapperREADONLY (cl,bG,cK,cL,cM,cN,gL,cO,cP) = $Tuple2(nil, cJ(cl, bG, cK, cL, cM, cN, gL, cO, cP, true, false, 0, ""))
15951351
15961352
15971353
1598-@Callable(dZ)
1599-func estimateGetOperationWrapperREADONLY (cv,hQ,cx,hP) = {
1600- let do = cu(cv, hQ, cx, addressFromStringValue(hP))
1601- $Tuple2(nil, $Tuple10(do._1, do._2, do._3, do._4, do._5, do._6, do._7, toString(do._8), do._9, do._10))
1354+@Callable(dM)
1355+func estimateGetOperationWrapperREADONLY (cl,gM,cn,gL) = {
1356+ let de = ck(cl, gM, cn, addressFromStringValue(gL))
1357+ $Tuple2(nil, $Tuple10(de._1, de._2, de._3, de._4, de._5, de._6, de._7, toString(de._8), de._9, de._10))
16021358 }
16031359
16041360
1605-@Verifier(hR)
1606-func hS () = {
1607- let hT = {
1608- let gm = gl()
1609- if ($isInstanceOf(gm, "ByteVector"))
1361+@Verifier(gN)
1362+func gO () = {
1363+ let gP = {
1364+ let av = fy()
1365+ if ($isInstanceOf(av, "ByteVector"))
16101366 then {
1611- let gq = gm
1612- gq
1367+ let fC = av
1368+ fC
16131369 }
1614- else if ($isInstanceOf(gm, "Unit"))
1615- then hR.senderPublicKey
1370+ else if ($isInstanceOf(av, "Unit"))
1371+ then gN.senderPublicKey
16161372 else throw("Match error")
16171373 }
1618- let gm = hR
1619- if ($isInstanceOf(gm, "Order"))
1374+ let av = gN
1375+ if ($isInstanceOf(av, "Order"))
16201376 then {
1621- let fa = gm
1622- let hU = aS()
1623- let hV = eZ(fa)
1624- let hW = sigVerify(fa.bodyBytes, fa.proofs[0], fa.senderPublicKey)
1625- let hX = sigVerify(fa.bodyBytes, fa.proofs[1], hU)
1626- if (if (if (hV)
1627- then hW
1377+ let dz = av
1378+ let gQ = aJ()
1379+ let gR = dy(dz)
1380+ let gS = sigVerify(dz.bodyBytes, dz.proofs[0], dz.senderPublicKey)
1381+ let gT = sigVerify(dz.bodyBytes, dz.proofs[1], gQ)
1382+ if (if (if (gR)
1383+ then gS
16281384 else false)
1629- then hX
1385+ then gT
16301386 else false)
16311387 then true
1632- else aB(hV, hW, hX)
1388+ else aq(gR, gS, gT)
16331389 }
1634- else if ($isInstanceOf(gm, "SetScriptTransaction"))
1390+ else if ($isInstanceOf(av, "SetScriptTransaction"))
16351391 then {
1636- let dM = gm
1637- let hY = blake2b256(value(dM.script))
1638- let hZ = fromBase64String(value(getString(aM, az())))
1639- let ia = scriptHash(this)
1640- if (if ((hZ == hY))
1641- then (ia != hY)
1392+ let dZ = av
1393+ let gU = blake2b256(value(dZ.script))
1394+ let gV = fromBase64String(value(getString(aD, ao())))
1395+ let gW = scriptHash(this)
1396+ if (if ((gV == gU))
1397+ then (gW != gU)
16421398 else false)
16431399 then true
1644- else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
1400+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16451401 }
1646- else sigVerify(hR.bodyBytes, hR.proofs[0], hT)
1402+ else sigVerify(gN.bodyBytes, gN.proofs[0], gP)
16471403 }
16481404

github/deemru/w8io/c3f4982 
378.93 ms