tx · HR6oXbCioJHvV5jnWikPf4H7osH5K7zGfDgEAqrnk2VL

3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT:  -0.03600000 Waves

2022.12.07 15:58 [2349954] smart account 3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT > SELF 0.00000000 Waves

{ "type": 13, "id": "HR6oXbCioJHvV5jnWikPf4H7osH5K7zGfDgEAqrnk2VL", "fee": 3600000, "feeAssetId": null, "timestamp": 1670417915524, "version": 1, "sender": "3NAefciWv6f9fWvEXdGgpHfanJFG8HqfjuT", "senderPublicKey": "D1BL65meykxFZTCuq7jq9HSGLLnWvQamQPUNrguW5w39", "proofs": [ "SKHyopU1Ao7NTq8i2vPf8oxkvSfw13inavvrrebZhAPLGVN2sid9u1fybrT74xcB4MfqQouj2X5sWHJe9B4TX8s" ], "script": "base64:BgLNKAgCEgMKAQgSAwoBCBIAEgQKAgEEEgQKAgEEEgMKAQESABIECgIIARIAEgQKAggBEgQKAggBEgQKAgEBEgMKAQESBQoDAQEBEgUKAwEIARIECgIBCBIECgIBCBIECgIICBIECgIICBIECgIIARIAEgMKAQgSBQoDAQEBEgQKAggBEgQKAgEBEgQKAggIEgsKCQgBAQIBAggEBBIGCgQICAEIEgAiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgRiaWczIgRiaWc0IgpzbGlwcGFnZTREIgt3YXZlc1N0cmluZyIFQW11bHQiBURjb252IgNTRVAiBUVNUFRZIgpQb29sQWN0aXZlIgpQb29sUHV0RGlzIg5Qb29sTWF0Y2hlckRpcyIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyIJaWR4UG9vbFN0IglpZHhMUEFzSWQiCWlkeEFtQXNJZCIJaWR4UHJBc0lkIgtpZHhBbXRBc0RjbSINaWR4UHJpY2VBc0RjbSILaWR4SUFtdEFzSWQiDWlkeElQcmljZUFzSWQiD2lkeEZhY3RTdGFrQ250ciISaWR4RmFjdG9yeVJlc3RDbnRyIhBpZHhGYWN0U2xpcHBDbnRyIhFpZHhGYWN0R3d4UmV3Q250ciIKZmVlRGVmYXVsdCICdDEiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCICdHMiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCICZmMiA21wayIEcG1wayICcGwiAnBoIgFoIgF0IgNwYXUiAnVhIgR0eElkIgNnYXUiAmFhIgJwYSIDYW1wIgNhZGEiBmtleUZlZSIDZmVlIgZrZXlETHAiFWtleURMcFJlZnJlc2hlZEhlaWdodCISa2V5RExwUmVmcmVzaERlbGF5IhZkTHBSZWZyZXNoRGVsYXlEZWZhdWx0Ig9kTHBSZWZyZXNoRGVsYXkiBGZjZmciBG10cGsiAnBjIgZpQW10QXMiBWlQckFzIgNtYmEiBWJBU3RyIgNhcHMiHGtleUFsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiA3RvZSIDb3JWIgZzZW5kclYiBm1hdGNoViIDc3RyIgckbWF0Y2gwIgZ2YWxTdHIiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwNzI1NTc0NDEiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiA3ZhZCICQTEiAkEyIghzbGlwcGFnZSIEZGlmZiIEcGFzcyICdmQiAkQxIgJEMCIEc2xwZyIEZmFpbCIDcGNwIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiC2FtdEFzQW10WDE4IgpwckFzQW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIghhbXRBc0RjbSIHcHJBc0RjbSIIcHJpY2VYMTgiCGxwQW10WDE4Ig1scFBySW5BbUFzWDE4Ig1scFBySW5QckFzWDE4Ig9jYWxjdWxhdGVQcmljZXMiAXAiB3Rha2VGZWUiBmFtb3VudCIJZmVlQW1vdW50IgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciILc2xpcHBhZ2VYMTgiD3NsaXBwYWdlUmVhbFgxOCINbHBFbWlzc2lvblgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiINJHQwMTc4NzIxODIxNyIKd3JpdGVBbUFtdCIKd3JpdGVQckFtdCILY29tbW9uU3RhdGUiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMjAxMjgyMDE3NiICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgdnZXRET2xkIgFuIgphUHJlY2lzaW9uIhBhbm5fc19hUHJlY2lzaW9uIg5hbm5fYVByZWNpc2lvbiICbjEiA2N1ciINJHQwMjA4MDUyMDgyNSINJHQwMjEyNDYyMTI5MyIFZ2V0WUQiAUQiAXgiAWMiAWIiDSR0MDIxNzkzMjE4MTMiAXkiBXlOZXh0IgV5RGlmZiINJHQwMjIxMjAyMjE2NyIHY2FsY0RMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIgpscEVtaXNzaW9uIgp1cGRhdGVkRExwIg5jYWxjQ3VycmVudERMcCIQYW1vdW50QXNzZXREZWx0YSIPcHJpY2VBc3NldERlbHRhIhRscEFzc2V0RW1pc3Npb25EZWx0YSISYW1vdW50QXNzZXRCYWxhbmNlIhFwcmljZUFzc2V0QmFsYW5jZSIPbHBBc3NldEVtaXNzaW9uIgpjdXJyZW50RExwIhJyZWZyZXNoRExwSW50ZXJuYWwiF2Ftb3VudEFzc2V0QmFsYW5jZURlbHRhIhZwcmljZUFzc2V0QmFsYW5jZURlbHRhIgdhY3Rpb25zIhJ2YWxpZGF0ZVVwZGF0ZWRETHAiBm9sZERMcCIbdmFsaWRhdGVNYXRjaGVyT3JkZXJBbGxvd2VkIgVvcmRlciIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDI0MTA2MjQzMTgiA2RMcCINJHQwMjQ2NDgyNDc0OCINdW51c2VkQWN0aW9ucyIGZExwTmV3Igxpc09yZGVyVmFsaWQiAmNnIgNwbXQiAmNwIgZjYWxsZXIiB2FtQXNQbXQiB3ByQXNQbXQiDWNhbGNQdXRPbmVUa24iCXBtdEFtdFJhdyILd2l0aFRha2VGZWUiDWNoZWNoRW1pc3Npb24iDSR0MDI3MDY1Mjc1MjciDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIg0kdDAyNzUzMzI3NzA5IgthbUFtb3VudFJhdyILcHJBbW91bnRSYXciDSR0MDI3NzEzMjc5NTIiCGFtQW1vdW50IghwckFtb3VudCIMYW1CYWxhbmNlTmV3IgxwckJhbGFuY2VOZXciBmNoZWNrRCIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMwMDEwMzAxMjEiAUAiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzAzMTEzMDYxOCIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMTQwMzMxNzUzIhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMTc1NjMxODY0IhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgJjbSIDaHBtIgNjcG0iBHNsaXAiCWF1dG9TdGFrZSIHZmFjdENmZyILc3Rha2luZ0NudHIiCHNsaXBDbnRyIgphbUFzc2V0UG10IgpwckFzc2V0UG10IgFlIglscEFzc2V0SWQiAmVsIgZsZWdhY3kiAnNhIgJzcCIIbHBUcm5zZnIiAnNzIg0kdDAzNTcyMDM1Nzg1IiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIGY2hlY2tzIg0kdDAzNjkyMjM3MDgwIgdlc3RpbUxQIg0kdDAzNzg5NTM4MjQ0IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMzgyNDczODM1NSIHbWF4U2xwZyIGZXN0UHV0Ig0kdDAzOTMxNDM5Mzc5IglvdXRBbXRBbXQiDSR0MDQwMTY4NDAyNTAiDWlzR2V0RGlzYWJsZWQiDSR0MDQwODY4NDEwMjMiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDQxNTQ3NDE2MTEiEGRMcFVwZGF0ZUFjdGlvbnMiDWxwQXNzZXRBbW91bnQiBWluZGV4IgRuZXdZIgJkeSILdG90YWxHZXRSYXciDSR0MDQyNTExNDI1NjAiDSR0MDQyOTA1NDMwMjAiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNDQxODg0NDI2OSINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDQ1MzMyNDU0MTMiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDQ2NjYxNDY3NDIiDSR0MDQ3Njc2NDc4NjQiEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIg0kdDA0ODEyMzQ4MjI2Ig0kdDA0ODUwNTQ4NjA5IghhbXRBc1N0ciIHcHJBc1N0ciIBayICcHIiDHJlc1NjYWxlTXVsdCIHdXNyQWRkciIHcG10QXNJZCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIgpvcmRlclZhbGlkIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2h6AAFhAIDC1y8AAWIJALYCAQCAwtcvAAFjCQC2AgEAgICQu7rWrfANAAFkCQC2AgEAAAABZQkAtgIBAAAAAWYJALYCAQABAAFnCQC2AgEAAgABaAkAtgIBAAMAAWkJALYCAQAEAAFqCQC2AgEJAGUCBQFhCQBpAgkAaAIFAWEAAQUBYQABawIFV0FWRVMAAWwCAzEwMAABbQIBMQABbgICX18AAW8CAAABcAABAAFxAAIAAXIAAwABcwAEAAF0AAEAAXUAAgABdgADAAF3AAQAAXgABQABeQAGAAF6AAcAAUEACAABQgAJAAFDAAEAAUQABgABRQAHAAFGAAoAAUcJAGsDAAoFAWEAkE4BAUgCAUkBSgkAvAIDCQC2AgEFAUkFAWMJALYCAQUBSgEBSwIBTAFNCQCgAwEJALwCAwUBTAkAtgIBBQFNBQFjAQFOAwFPAVABUQkAawMFAU8FAVAFAVEBAVIBAUwDCQC/AgIFAWQFAUwJAL4CAQUBTAUBTAEBUwEBTAMJAL8CAgUBZAUBTAkAvgIBBQFMBQFMAQFUAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFWAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFXAAIRJXMlc19fcHJpY2VfX2xhc3QBAVgCAVkBWgkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVkJAMwIAgkApAMBBQFaBQNuaWwFAW4BAmFhAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19QX18FAmFiAgJfXwUCYWMBAmFkAgJhYgJhYwkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAmFiAgJfXwUCYWMBAmFlAAIPJXNfX2Ftb3VudEFzc2V0AQJhZgACDiVzX19wcmljZUFzc2V0AQJhZwACByVzX19hbXABAmFoAAINJXNfX2FkZG9uQWRkcgACYWkCByVzX19mZWUAAmFqCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFpBQFHAAJhawkAuQkCCQDMCAICAiVzCQDMCAICA2RMcAUDbmlsBQFuAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICEmRMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFuAAJhbQkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hETHBEZWxheQUDbmlsBQFuAAJhbgABAAJhbwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbQUCYW4BAmFwAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFxAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhcgICYXMCYXQJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFzAgJfXwUCYXQCCF9fY29uZmlnAQJhdQECYXYJAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYXYBAmF3AAIMJXNfX3NodXRkb3duAQJheAACHSVzX19hbGxvd2VkTHBTdGFibGVTY3JpcHRIYXNoAQJheQACFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhegMCYUECYUICYUMJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIRRmFpbGVkOiBvcmRWYWxpZD0JAKUDAQUCYUECCyBzbmRyVmFsaWQ9CQClAwEFAmFCAgwgbXRjaHJWYWxpZD0JAKUDAQUCYUMBAmFEAQFMBAJhRQUBTAMJAAECBQJhRQIGU3RyaW5nBAJhRgUCYUUFAmFGCQACAQITZmFpbCBjYXN0IHRvIFN0cmluZwECYUcCAmFIAmFJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYUgFAmFJCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFICQDMCAICAS4JAMwIAgUCYUkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUoCAmFIAmFJCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYUgFAmFJCQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmFICQDMCAICAS4JAMwIAgUCYUkJAMwIAgIMIG5vdCBkZWZpbmVkBQNuaWwCAAECYUsBAmFMCQACAQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhTAUDbmlsAgEgAQJhTQECYUwJALkJAgkAzAgCAg9scF9zdGFibGUucmlkZToJAMwIAgUCYUwFA25pbAIBIAACYU4JARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhRwIFBHRoaXMJAQFUAAACYU8JAQJhRwIFBHRoaXMJAQJhZwABAmFQAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhTgkBAmF3AAcBAmFRAAkA2QQBCQECYUcCBQJhTgkBAmFxAAACYVIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhRwIFAmFOCQECYXkAAQJhUwAEAmFUCQECYUcCBQR0aGlzCQECYWUABAJhVQkBAmFHAgUEdGhpcwkBAmFmAAQCYVYJAQJhSgIFAmFOCQECYXUBBQJhVQQCYXMJAQJhSgIFAmFOCQECYXUBBQJhVAkAtQkCCQECYUcCBQJhTgkBAmFyAgkApAMBBQJhcwkApAMBBQJhVgUBbgECYVcBAmFYAwkAAAIFAmFYBQFrBQR1bml0CQDZBAEFAmFYAQJhWQECYVgDCQAAAgUCYVgFBHVuaXQFAWsJANgEAQkBBXZhbHVlAQUCYVgBAmFaAQJiYQkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJhBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXUJANkEAQkAkQMCBQJiYQUBdgkBAmFXAQkAkQMCBQJiYQUBdwkBAmFXAQkAkQMCBQJiYQUBeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmEFAXoAAmJiCQECYVoBCQECYVMAAAJiYwUCYmIAAmJkCAUCYmMCXzEAAmJlCAUCYmMCXzIAAmJmCAUCYmMCXzMAAmJnCAUCYmMCXzQAAmJoCAUCYmMCXzUAAmJpCAUCYmMCXzYAAmJqCAUCYmMCXzcBAmJrAAkAtQkCCQECYUcCBQJhTgkBAmFwAAUBbgACYmwJAQJiawAAAmJtCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBQwIgSW52YWxpZCBzdGFraW5nIGNvbnRyYWN0IGFkZHJlc3MAAmJuCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRQIgSW52YWxpZCBzbGlwYWdlIGNvbnRyYWN0IGFkZHJlc3MAAmJvCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJibAUBRgIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwACYnAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmJsBQFEAhxJbnZhbGlkIGd3eCBjb250cmFjdCBhZGRyZXNzAQJicQoCYnICYnMCYnQCYnUCYnYCYncCYngCYnkCYnoCYkEJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJyCQDMCAIJAKQDAQUCYnMJAMwIAgkApAMBBQJidAkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYnYJAMwIAgkApAMBBQJidwkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBBQNuaWwFAW4BAmJCBgJiQwJiRAJiRQJidQJieAJieQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJ1CQDMCAIJAKQDAQUCYngJAMwIAgkApAMBBQJieQUDbmlsBQFuAQJiRgECYkcDCQAAAgUCYkcCBVdBVkVTCAkA7wcBBQR0aGlzCWF2YWlsYWJsZQkA8AcCBQR0aGlzCQDZBAEFAmJHAQJiSAICYkkCYkoJALwCAwUCYkkFAWMFAmJKAQJiSwMCYkwCYk0CYk4EAmJPCQC8AgMJALgCAgUCYkwFAmJNBQFiBQJiTQQCYlAJAL8CAgkAuAICBQJiTgkBAVIBBQJiTwUBZAMJAQEhAQUCYlAJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYk8JAJQKAgUCYlAJAJkDAQkAzAgCBQJiTAkAzAgCBQJiTQUDbmlsAQJiUQMCYlICYlMCYlQEAmJPCQC8AgMFAmJTBQFiBQJiUgQCYlUJAL8CAgUCYlQFAmJPAwMFAmJVBgkAvwICBQJiUwUCYlIJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmJTAgEgCQCmAwEFAmJSAgEgCQCmAwEFAmJPAgEgCQCmAwEFAmJUBQJiVQECYlYEAmJXAmJYAmJZAmJaBAJjYQkBAUgCBQJiWQUCYlcEAmNiCQEBSAIFAmJaBQJiWAkBAmJIAgUCY2IFAmNhAQJjYwMCYlkCYloCY2QEAmNlCQECYVMABAJjZgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF5BAJjZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNlBQF6BAJjaAkBAmJWBAUCY2YFAmNnBQJiWQUCYloEAmJKCQEBSAIFAmJZBQJjZgQCYkkJAQFIAgUCYloFAmNnBAJjaQkBAUgCBQJjZAUBYQQCY2oJAQJiSAIFAmJKBQJjaQQCY2sJAQJiSAIFAmJJBQJjaQkAzAgCBQJjaAkAzAgCBQJjagkAzAgCBQJjawUDbmlsAQJjbAMCYlkCYloCY2QEAmNtCQECY2MDBQJiWQUCYloFAmNkCQDMCAIJAQFLAgkAkQMCBQJjbQAABQFhCQDMCAIJAQFLAgkAkQMCBQJjbQABBQFhCQDMCAIJAQFLAgkAkQMCBQJjbQACBQFhBQNuaWwBAmNuAQJjbwQCY3AJAGsDBQJjbwUCYWoFAWEJAJQKAgkAZQIFAmNvBQJjcAUCY3ABAmNxBAJjcgJjcwJjdAJjdQQCY2UJAQJhUwAEAmN2CQCRAwIFAmNlBQF2BAJjdwkAkQMCBQJjZQUBdwQCY3gJAJEDAgUCY2UFAXgEAmN5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXkEAmN6CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXoEAmNBCQCRAwIFAmNlBQF1BAJjQggJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AgtXcm9uZyBMUCBpZAhxdWFudGl0eQMJAQIhPQIFAmN2BQJjcwkAAgECD1dyb25nIHBtdCBhc3NldAQCY0MJAQJiRgEFAmN3BAJjRAkBAUgCBQJjQwUCY3kEAmNFCQECYkYBBQJjeAQCY0YJAQFIAgUCY0UFAmN6BAJjRwkBAmJIAgUCY0YFAmNEBAJjSAkBAUsCBQJjRwUBYQQCY0kJAQFIAgUCY3QFAWEEAmNKCQEBSAIFAmNCBQFhBAJjSwkAvAIDBQJjRAUCY0kFAmNKBAJjTAkAvAIDBQJjRgUCY0kFAmNKBAJjTQkBAUsCBQJjSwUCY3kEAmNOCQEBSwIFAmNMBQJjegQCY08DCQAAAgUCY3ICAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJjTQMJAAACBQJjdwIFV0FWRVMFBHVuaXQJANkEAQUCY3cJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY3UFAmNOAwkAAAIFAmN4AgVXQVZFUwUEdW5pdAkA2QQBBQJjeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEFAmN1BQJjcgkBAmJCBgUCY00FAmNOBQJjdAUCY0gFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gFA25pbAkAnAoKBQJjTQUCY04FAmN3BQJjeAUCY0MFAmNFBQJjQgUCY0cFAmNBBQJjTwECY1ANAmNyAmJOAmNRAmNSAmNTAmNUAmN1AmNVAmNWAmNXAmNYAmNZAmNaBAJjZQkBAmFTAAQCY3YJANkEAQkAkQMCBQJjZQUBdgQCZGEJAJEDAgUCY2UFAXcEAmRiCQCRAwIFAmNlBQF4BAJkYwkAkQMCBQJjZQUBQQQCZGQJAJEDAgUCY2UFAUIEAmRlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXkEAmRmCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY2UFAXoEAmNBCQCRAwIFAmNlBQF1BAJkZwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjdgIIV3IgbHAgYXMIcXVhbnRpdHkEAmNDAwUCY1UJAQJiRgEFAmRhAwMFAmNXCQAAAgUCY1oFAmRhBwkAZQIJAQJiRgEFAmRhBQJjWQMFAmNXCQECYkYBBQJkYQkAZQIJAQJiRgEFAmRhBQJjUQQCY0UDBQJjVQkBAmJGAQUCZGIDAwUCY1cJAAACBQJjWgUCZGIHCQBlAgkBAmJGAQUCZGIFAmNZAwUCY1cJAQJiRgEFAmRiCQBlAgkBAmJGAQUCZGIFAmNTBAJkaAkBAUgCBQJjUQUCZGUEAmRpCQEBSAIFAmNTBQJkZgQCZGoJAQJiSAIFAmRpBQJkaAQCY0QJAQFIAgUCY0MFAmRlBAJjRgkBAUgCBQJjRQUCZGYEAmRrAwkAAAIFAmRnAAAEAmNHBQFkBAJkbAUBZAQCY2kJAHYGCQC5AgIFAmRoBQJkaQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUsCBQJjaQUBYQkBAUsCBQJkaAUCZGUJAQFLAgUCZGkFAmRmCQECYkgCCQC3AgIFAmNGBQJkaQkAtwICBQJjRAUCZGgFAmRsBAJjRwkBAmJIAgUCY0YFAmNEBAJkbQkAvAIDCQEBUgEJALgCAgUCY0cFAmRqBQFjBQJjRwQCZGwJAQFIAgUCYk4FAWEDAwMFAmNYCQECIT0CBQJjRwUBZAcJAL8CAgUCZG0FAmRsBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkbQIDID4gCQCmAwEFAmRsBAJkbgkBAUgCBQJkZwUBYQQCZG8JALwCAwUCZGgFAmNHBQFjBAJkcAkAvAIDBQJkaQUBYwUCY0cEAmRxAwkAvwICBQJkbwUCZGkJAJQKAgUCZHAFAmRpCQCUCgIFAmRoBQJkbwQCZHIIBQJkcQJfMQQCZHMIBQJkcQJfMgQCY2kJALwCAwUCZG4FAmRzBQJjRgkAlwoFCQEBSwIFAmNpBQFhCQEBSwIFAmRyBQJkZQkBAUsCBQJkcwUCZGYFAmNHBQJkbAQCZHQIBQJkawJfMQQCZHUIBQJkawJfMgQCZHYIBQJkawJfMwQCY0gJAQFLAggFAmRrAl80BQFhBAJkdwkBAUsCCAUCZGsCXzUFAWEDCQBnAgAABQJkdAkAAgECB0xQIDw9IDAEAmR4AwkBASEBBQJjVgAABQJkdAQCZHkJAGUCBQJjUQUCZHUEAmR6CQBlAgUCY1MFAmR2BAJkQQMDBQJjVwkAAAIFAmNaBQJkYQcJAJQKAgUCY1kAAAMDBQJjVwkAAAIFAmNaBQJkYgcJAJQKAgAABQJjWQkAlAoCBQJkdQUCZHYEAmRCCAUCZEECXzEEAmRDCAUCZEECXzIEAmRECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmNICQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNICQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmN1BQJjcgkBAmJxCgUCZEIFAmRDBQJkeAUCY0gFAmJOBQJkdwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHkFAmR6BQNuaWwJAJ8KDQUCZHQFAmR4BQJjSAUCY0MFAmNFBQJkZwUCY3YFAmNBBQJkRAUCZHkFAmR6BQJjUgUCY1QBAmRFAQJkRgQCZEcJAJEDAgUCZEYAAAQCZEgJAJEDAgUCZEYAAQQCZEkJALcCAgUCZEcFAmRIAwkAAAIFAmRJBQFlBQFlBAJkSgkBDXBhcnNlSW50VmFsdWUBBQJhTwQCZEsJAGgCBQJkSgACBAJjbQkAvAIDBQJkRwUCZEgFAWYEAmRMCQC8AgMFAmNtBQFpBQFmBAJkTQkAvAIDCQC2AgEFAmRLBQJkSQUBZgQCZE4JALYCAQkAZQIFAmRLAAEKAQJkTwECZFAEAmRRCQC8AgMFAmRQBQJkUAUBZgQCZFIJALwCAwUCZFEFAmRQBQFmBAJkUwkAvAIDBQJkUgUBZgUCZEwJALwCAwkAtwICBQJkTQkAvAIDBQJkUwUBZwUBZgUCZFAJALcCAgkAvAIDBQJkTgUCZFAFAWYJALwCAwUBaAUCZFMFAWYKAQJkVAICZFUCZFYDCAUCZFUCXzIFAmRVBAJkUAgFAmRVAl8xBAJkVwkBAmRPAQUCZFAEAmRYCQCgAwEJALgCAgUCZFcJAQV2YWx1ZQEFAmRQBAJkWQMJAGYCAAAFAmRYCQEBLQEFAmRYBQJkWAMJAGcCAAEFAmRZCQCUCgIFAmRXBgkAlAoCBQJkVwcEAmRaCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOBQNuaWwEAmVhCgACZWIFAmRaCgACZWMJAJADAQUCZWIKAAJlZAkAlAoCBQJkSQcKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZFAIBQJlYQJfMQQCZWkIBQJlYQJfMgMFAmVpBQJkUAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJkUAECZWoBAmRGBAJlawUBZwQCZEcJAJEDAgUCZEYAAAQCZEgJAJEDAgUCZEYAAQQCZWwJAKcDAQUBbAQCZEoJALkCAgkApwMBBQJhTwUCZWwEAmRJCQC3AgIFAmRHBQJkSAMJAAACBQJkSQUBZQUBZQQCZEsJALkCAgUCZEoFAmVrBAJkTAkAuQICCQC5AgIJALkCAgUCZEcFAmRIBQJlawUCZWsEAmVtCQC6AgIJALkCAgUCZEsFAmRJBQJlbAQCZW4JALgCAgUCZEsFAmVsBAJlbwkAtwICBQJlawUBZgoBAmRUAgJkVQJlcAQCZXEFAmRVBAJkUAgFAmVxAl8xBAJlaQgFAmVxAl8yAwkBAiE9AgUCZWkFBHVuaXQFAmRVBAJkUwkAugICCQC5AgIJALkCAgUCZFAFAmRQBQJkUAUCZEwEAmRXCQC6AgIJALkCAgkAtwICBQJlbQkAuQICBQJkUwUCZWsFAmRQCQC3AgIJALoCAgkAuQICBQJlbgUCZFAFAmVsCQC5AgIFAmVvBQJkUwQCZFkJAQFTAQkAuAICBQJkVwkBBXZhbHVlAQUCZFADCQDAAgIFAWYFAmRZCQCUCgIFAmRXBQJlcAkAlAoCBQJkVwUEdW5pdAQCZFoJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZXIKAAJlYgUCZFoKAAJlYwkAkAMBBQJlYgoAAmVkCQCUCgIFAmRJBQR1bml0CgECZWUCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAQJkVAIFAmVmCQCRAwIFAmViBQJlZwoBAmVoAgJlZgJlZwMJAGcCBQJlZwUCZWMFAmVmCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJlaAIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIJAQJlZQIFAmVkAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmRQCAUCZXICXzEEAmVpCAUCZXICXzIDCQECIT0CBQJlaQUEdW5pdAUCZFAJAAIBCQCsAgICGUQgY2FsY3VsYXRpb24gZXJyb3IsIEQgPSAJAKYDAQUCZFABAmVzAwJkRgJkVgJldAQCZWsFAWcEAmV1CQCRAwIFAmRGAwkAAAIFAmRWAAAAAQAABAJlbAkApwMBBQFsBAJkSgkAuQICCQCnAwEFAmFPBQJlbAQCZEkFAmV1BAJkSwkAuQICBQJkSgUCZWsEAmV2CQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXQFAmV0CQC5AgIFAmV1BQJlawUCZXQFAmVsCQC5AgIFAmRLBQJlawQCZXcJALgCAgkAtwICBQJkSQkAugICCQC5AgIFAmV0BQJlbAUCZEsFAmV0CgECZFQCAmRVAmVwBAJleAUCZFUEAmV5CAUCZXgCXzEEAmVpCAUCZXgCXzIDCQECIT0CBQJlaQUEdW5pdAUCZFUEAmV6CQC6AgIJALcCAgkAuQICBQJleQUCZXkFAmV2CQC3AgIJALkCAgUBZwUCZXkFAmV3BAJlQQkBAVMBCQC4AgIFAmV6CQEFdmFsdWUBBQJleQMJAMACAgUBZgUCZUEJAJQKAgUCZXoFAmVwCQCUCgIFAmV6BQR1bml0BAJkWgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlQgoAAmViBQJkWgoAAmVjCQCQAwEFAmViCgACZWQJAJQKAgUCZXQFBHVuaXQKAQJlZQICZWYCZWcDCQBnAgUCZWcFAmVjBQJlZgkBAmRUAgUCZWYJAJEDAgUCZWIFAmVnCgECZWgCAmVmAmVnAwkAZwIFAmVnBQJlYwUCZWYJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmVoAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgkBAmVlAgUCZWQAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZXkIBQJlQgJfMQQCZWkIBQJlQgJfMgMJAQIhPQIFAmVpBQR1bml0BQJleQkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJleQECZUMDAmVEAmVFAmVGBAJlRwkAvAIDCQECZEUBCQDMCAIFAmVECQDMCAIFAmVFBQNuaWwFAWMFAmVGAwkAAAIFAmVGBQFlBQFlBQJlRwECZUgDAmVJAmVKAmVLBAJlTAkAuAICCQC2AgEJAQJiRgEJAQJhWQEFAmJnBQJlSQQCZU0JALgCAgkAtgIBCQECYkYBCQECYVkBBQJiaAUCZUoEAmVOCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYmYIcXVhbnRpdHkFAmVLBAJlTwkBAmVDAwUCZUwFAmVNBQJlTgUCZU8BAmVQAwJlUQJlUgJlSwQCZUwJAGQCCQECYkYBCQECYVkBBQJiZwUCZVEEAmVNCQBkAgkBAmJGAQkBAmFZAQUCYmgFAmVSBAJlTgkAZAIICQEFdmFsdWUBCQDsBwEFAmJmCHF1YW50aXR5BQJlSwQCZUcJAQJlQwMJALYCAQUCZUwJALYCAQUCZU0JALYCAQUCZU4EAmVTCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhbAUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFrCQCmAwEFAmVHBQNuaWwJAJQKAgUCZVMFAmVHAQJlVAICZVUCZUcDCQDAAgIFAmVHBQJlVQYJAQJhSwECInVwZGF0ZWQgRExwIGxvd2VyIHRoYW4gY3VycmVudCBETHABAmVWAQJlVwQCZVgIBQJlVwZhbW91bnQEAmVZCQBuBAgFAmVXBmFtb3VudAgFAmVXBXByaWNlBQFhBQVGTE9PUgQCZVoDCQAAAggFAmVXCW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVYCQEBLQEFAmVZCQCUCgIJAQEtAQUCZVgFAmVZBAJlUQgFAmVaAl8xBAJlUggFAmVaAl8yAwMDCQECYVAABgkAAAIFAmJlBQFyBgkAAAIFAmJlBQFzCQACAQINQWRtaW4gYmxvY2tlZAMDCQECIT0CCAgFAmVXCWFzc2V0UGFpcgthbW91bnRBc3NldAUCYmcGCQECIT0CCAgFAmVXCWFzc2V0UGFpcgpwcmljZUFzc2V0BQJiaAkAAgECCVdyIGFzc2V0cwQCZmEJAKcDAQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwUCYWsEAmZiCQECZVADBQJlUQUCZVIAAAQCZmMIBQJmYgJfMQQCZmQIBQJmYgJfMgQCZmUJAMACAgUCZmQFAmZhBQJmZQECZmYBAmRWAwkBAiE9AgkAkAMBCAUCZFYIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZnCQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwAABAJjcwkBBXZhbHVlAQgFAmZnB2Fzc2V0SWQEAmNZCAUCZmcGYW1vdW50BAJkawkBAmNxBAkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkA2AQBBQJjcwUCY1kIBQJkVgZjYWxsZXIEAmNNCAUCZGsCXzEEAmNOCAUCZGsCXzIEAmNBCQENcGFyc2VJbnRWYWx1ZQEIBQJkawJfOQQCY08IBQJkawNfMTADAwkBAmFQAAYJAAACBQJjQQUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmNBCQCXCgUFAmNNBQJjTgUCY1kFAmNzBQJjTwECZmgKAmZpAmFjAmZqAmZrAmJOAmNWAmNXAmNYAmNZAmNaBAJkawkBAmNQDQUCYWMFAmJOCAkBBXZhbHVlAQUCZmoGYW1vdW50CAkBBXZhbHVlAQUCZmoHYXNzZXRJZAgJAQV2YWx1ZQEFAmZrBmFtb3VudAgJAQV2YWx1ZQEFAmZrB2Fzc2V0SWQFAmZpCQAAAgUCYWMCAAUCY1YFAmNXBQJjWAUCY1kFAmNaBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzgDAwMJAQJhUAAGCQAAAgUCY0EFAXEGCQAAAgUCY0EFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmNBBQJkawECZmwFAmZtAmNzAmN1AmFjAmZuBAJiYQkBAmFTAAQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJjdgkAkQMCBQJiYQUBdgQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZGYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCZU4JALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmN2AhBpbnZhbGlkIGxwIGFzc2V0CHF1YW50aXR5BAJmbwMJAL8CAgUCZU4FAWUGCQACAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmbwUCZm8EAmNDCQECYkYBBQJjdwQCY0UJAQJiRgEFAmN4BAJmcAMJAAACBQJhYwIACQCUCgIFAmNDBQJjRQMJAAACBQJjcwUCY3cDCQBmAgUCZm0FAmNDCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCCQBlAgUCY0MFAmZtBQJjRQMJAAACBQJjcwUCY3gDCQBmAgUCZm0FAmNFCQACAQIWaW52YWxpZCBwYXltZW50IGFtb3VudAkAlAoCBQJjQwkAZQIFAmNFBQJmbQkAAgECEHdyb25nIHBtdEFzc2V0SWQEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmZzAwkAAAIFAmNzBQJjdwkAlAoCBQJmbQAAAwkAAAIFAmNzBQJjeAkAlAoCAAAFAmZtCQACAQIPaW52YWxpZCBwYXltZW50BAJmdAgFAmZzAl8xBAJmdQgFAmZzAl8yBAJmdgMFAmZuCQCVCgMICQECY24BBQJmdAJfMQgJAQJjbgEFAmZ1Al8xCAkBAmNuAQUCZm0CXzIJAJUKAwUCZnQFAmZ1AAAEAmZ3CAUCZnYCXzEEAmZ4CAUCZnYCXzIEAmNwCAUCZnYCXzMEAmZ5CQBkAgUCZnEFAmZ3BAJmegkAZAIFAmZyBQJmeAQCYlMJAQJkRQEJAMwIAgkAtgIBBQJmcQkAzAgCCQC2AgEFAmZyBQNuaWwEAmJSCQECZEUBCQDMCAIJALYCAQUCZnkJAMwIAgkAtgIBBQJmegUDbmlsBAJmQQMJAL8CAgUCYlIFAmJTBgkBBXRocm93AAMJAAACBQJmQQUCZkEEAmZCCQC8AgMFAmVOCQC4AgIFAmJSBQJiUwUCYlMEAmNICQEBSwIJAQJiSAIJAQFIAgUCZnoFAmRmCQEBSAIFAmZ5BQJkZQUBYQQCZEQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCY0gJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCY0gJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUCY3UFAmFjCQECYnEKBQJmdAUCZnUJAKADAQUCZkIFAmNIAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZkMJAGsDBQJmcgUBYQUCZnEEAmZECQBrAwUCZm0FAWEJAGQCBQJmQwUBYQQCZkUJAGUCBQJmbQUCZkQEAmZGCQC8AgMFAmVOCQC2AgEFAmZFCQC2AgEFAmZyBAJmRwkAoAMBCQC8AgMJALgCAgUCZkIFAmZGBQFiBQJmRgkAlgoECQCgAwEFAmZCBQJkRAUCY3AFAmZHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmSAYCZkkCZkoCZksCZmkCZkwCZk0EAmJhCQECYVMABAJjdgkAkQMCBQJiYQUBdgQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJmTgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF5BAJmTwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJhBQF6BAJmUAkAkQMCBQJiYQUBdQQCY3UDCQAAAgUCZmkFAmJwBQJmTAUCZmkEAmZnCQEFdmFsdWUBCQCRAwIFAmZLAAAEAmNzCQEFdmFsdWUBCAUCZmcHYXNzZXRJZAQCY1kIBQJmZwZhbW91bnQEAmVPCQECZUgDBQFlBQFlBQFlAwkAAAIFAmVPBQJlTwQCY3IJANgEAQUCZk0DCQECIT0CBQJjdgkA2AQBBQJjcwkAAgECCFdyb25nIExQBAJjQwkBAmJGAQUCY3cEAmNFCQECYkYBBQJjeAQCZlEKAAJmUgkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZJCQDMCAIFAmNZBQNuaWwFA25pbAMJAAECBQJmUgIKKEludCwgSW50KQUCZlIJAAIBCQCsAgIJAAMBBQJmUgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQMJAAACBQJmUQUCZlEEAmNwCAUCZlECXzIEAmZTCAUCZlECXzEEAmZUAwMJAGYCBQJmSgAACQBmAgUCZkoFAmZTBwkBAmFLAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmSgUDbmlsAgAFAmZTBAJmVQMJAAACBQJmSQUCY3cJAJYKBAUCZlQAAAkAZQIJAGUCBQJjQwUCZlQFAmNwBQJjRQMJAAACBQJmSQUCY3gJAJYKBAAABQJmVAUCY0MJAGUCCQBlAgUCY0UFAmZUBQJjcAkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJmVggFAmZVAl8xBAJmVwgFAmZVAl8yBAJmeQgFAmZVAl8zBAJmeggFAmZVAl80BAJmWAkBAmJIAgkBAUgCBQJmegUCZk8JAQFIAgUCZnkFAmZOBAJmWQkBAUsCBQJmWAUBYQQCZloDCQAAAgUCZkkCBVdBVkVTBQR1bml0CQDZBAEFAmZJBAJnYQMJAGYCBQJjcAAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFSBQJjcAUCZloFA25pbAUDbmlsBAJjTwkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmN1BQJmVAUCZloJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJjdQUCY3IJAQJiQgYFAmZWBQJmVwUCY1kFAmZZBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZZCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZZBQNuaWwFAmdhAwkAAAIFAmNPBQJjTwQCZ2IJAPwHBAUCYU4CBGJ1cm4JAMwIAgUCY1kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3MFAmNZBQNuaWwDCQAAAgUCZ2IFAmdiBAJnYwQCZ2QDCQAAAgUEdGhpcwUCYVIAAAUCY3AEAmdlAwkAAAIJAQJhVwEFAmZJBQJiZwYHAwUCZ2UJAJQKAgkBAS0BCQBkAgUCZlMFAmdkAAAJAJQKAgAACQEBLQEJAGQCBQJmUwUCZ2QEAmVRCAUCZ2MCXzEEAmVSCAUCZ2MCXzIEAmdmCQECZVADBQJlUQUCZVIAAAQCZ2cIBQJnZgJfMQQCZUcIBQJnZgJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAJQKAgkAzggCBQJjTwUCZ2cFAmZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnaQAEAmFFCQCiCAEJAQFVAAMJAAECBQJhRQIGU3RyaW5nBAJkSQUCYUUJANkEAQUCZEkDCQABAgUCYUUCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2oABAJhRQkAoggBCQEBVgADCQABAgUCYUUCBlN0cmluZwQCZEkFAmFFCQDZBAEFAmRJAwkAAQIFAmFFAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAAmdrCQACAQIRUGVybWlzc2lvbiBkZW5pZWQBAmdsAQJkVgQCYUUJAQJnaQADCQABAgUCYUUCCkJ5dGVWZWN0b3IEAmdtBQJhRQkAAAIIBQJkVg9jYWxsZXJQdWJsaWNLZXkFAmdtAwkAAQIFAmFFAgRVbml0CQAAAggFAmRWBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJnbgECZFYEAmFFCQECZ2kAAwkAAQIFAmFFAgpCeXRlVmVjdG9yBAJnbQUCYUUDCQAAAggFAmRWD2NhbGxlclB1YmxpY0tleQUCZ20GBQJnawMJAAECBQJhRQIEVW5pdAMJAAACCAUCZFYGY2FsbGVyBQR0aGlzBgUCZ2sJAAIBAgtNYXRjaCBlcnJvch0CZFYBC2NvbnN0cnVjdG9yAQFUBAJldgkBAmduAQUCZFYDCQAAAgUCZXYFAmV2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAAUBVAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQpzZXRNYW5hZ2VyAQJnbwQCZXYJAQJnbgEFAmRWAwkAAAIFAmV2BQJldgQCZ3AJANkEAQUCZ28DCQAAAgUCZ3AFAmdwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZ28FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEOY29uZmlybU1hbmFnZXIABAJjbQkBAmdqAAQCZ3EDCQEJaXNEZWZpbmVkAQUCY20GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdxBQJncQQCZ3IDCQAAAggFAmRWD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCY20GCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdyBQJncgkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJANgEAQkBBXZhbHVlAQUCY20JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBA3B1dAICZ3MCZ3QEAmd1CQECYmsABAJndgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCZ3UFAUMCCldyIHN0IGFkZHIEAmd3CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJndQUBRQIKV3Igc2wgYWRkcgMJAGYCAAAFAmdzCQACAQIOV3Jvbmcgc2xpcHBhZ2UDCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJneAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAZhbW91bnQEAmd5CQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkVghwYXltZW50cwABBmFtb3VudAQCZU8JAQJlSAMFAmd4BQJneQkAtgIBAAADCQAAAgUCZU8FAmVPBAJnegkBAmZoCgkApQgBCAUCZFYGY2FsbGVyCQDYBAEIBQJkVg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJkVghwYXltZW50cwABBQJncwYHBgAAAgAEAmR4CAUCZ3oCXzIEAmdBCAUCZ3oCXzcEAmNPCAUCZ3oCXzkEAmR5CAUCZ3oDXzEwBAJkeggFAmd6A18xMQQCY3cIBQJnegNfMTIEAmN4CAUCZ3oDXzEzBAJkawkA/AcEBQJhTgIEZW1pdAkAzAgCBQJkeAUDbmlsBQNuaWwDCQAAAgUCZGsFAmRrBAJnQgQCYUUFAmRrAwkAAQIFAmFFAgdBZGRyZXNzBAJnQwUCYUUJAPwHBAUCZ0MCBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsBQR1bml0AwkAAAIFAmdCBQJnQgQCZ0QDCQBmAgUCZHkAAAkA/AcEBQJndwIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmN3BQJkeQUDbmlsBQNuaWwDCQAAAgUCZ0QFAmdEBAJnRQMJAGYCBQJkegAACQD8BwQFAmd3AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY3gFAmR6BQNuaWwFA25pbAMJAAACBQJnRQUCZ0UEAmdGAwUCZ3QEAmdHCQD8BwQFAmd2AgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQQUCZHgFA25pbAMJAAACBQJnRwUCZ0cFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFYGY2FsbGVyBQJkeAUCZ0EFA25pbAQCZ0gJAQJlUAMAAAAAAAAEAmdnCAUCZ0gCXzEEAmVHCAUCZ0gCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIJAM4IAgUCY08FAmdGBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgELcHV0T25lVGtuVjICAmZKAmd0BAJnSQoAAmZSCQD8BwQFAmFOAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlICB0Jvb2xlYW4FAmZSCQACAQkArAICCQADAQUCZlICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdKAwMDCQECYVAABgkAAAIFAmJlBQFxBgkAAAIFAmJlBQFzBgUCZ0kEAmdLCQDMCAIDAwkBASEBBQJnSgYJAQJnbAEFAmRWBgkBAmFLAQIhcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZFYIcGF5bWVudHMAAQYJAQJhSwECHmV4YWN0bHkgMSBwYXltZW50IGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdLBQJnSwQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJANkEAQkAkQMCBQJiYQUBdgQCZk4JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBeQQCZk8JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiYQUBegQCY3UDCQAAAggFAmRWBmNhbGxlcgUEdGhpcwgFAmRWDG9yaWdpbkNhbGxlcggFAmRWBmNhbGxlcgQCZmcJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAEAmNzCQDYBAEJAQV2YWx1ZQEIBQJmZwdhc3NldElkBAJjWQgFAmZnBmFtb3VudAQCZ0wJAQJmbAUFAmNZBQJjcwkApQgBBQJjdQkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAYDCQAAAgUCZ0wFAmdMBAJjcAgFAmdMAl8zBAJjTwgFAmdMAl8yBAJnTQgFAmdMAl8xBAJkeAMDCQBmAgUCZkoAAAkAZgIFAmZKBQJnTQcJAQJhSwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZkoFA25pbAIABQJnTQQCZ3oJAPwHBAUCYU4CBGVtaXQJAMwIAgUCZHgFA25pbAUDbmlsAwkAAAIFAmd6BQJnegQCZ0IEAmFFBQJnegMJAAECBQJhRQIHQWRkcmVzcwQCZ0MFAmFFCQD8BwQFAmdDAgRlbWl0CQDMCAIFAmR4BQNuaWwFA25pbAUEdW5pdAMJAAACBQJnQgUCZ0IEAmdGAwUCZ3QEAmdHCQD8BwQFAmJtAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdgUCZHgFA25pbAMJAAACBQJnRwUCZ0cFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZFYGY2FsbGVyBQJkeAUCY3YFA25pbAQCZ2EDCQBmAgUCY3AAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhUgUCY3AJANkEAQUCY3MFA25pbAUDbmlsBAJnTgMJAAACBQR0aGlzBQJhUgkAlAoCAAAAAAQCZ08DCQAAAggFAmZnB2Fzc2V0SWQFAmJnBgcDBQJnTwkAlAoCCQEBLQEFAmNwAAAJAJQKAgAACQEBLQEFAmNwBAJlUQgFAmdOAl8xBAJlUggFAmdOAl8yBAJnUAkBAmVQAwUCZVEFAmVSAAAEAmdnCAUCZ1ACXzEEAmVHCAUCZ1ACXzIJAJQKAgkAzggCCQDOCAIJAM4IAgUCY08FAmdGBQJnYQUCZ2cFAmR4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQpwdXRGb3JGcmVlAQJnUQMJAGYCAAAFAmdRCQACAQIKV3Jvbmcgc2xwZwMJAQIhPQIJAJADAQgFAmRWCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdSCQECZmgKCQClCAEIBQJkVgZjYWxsZXIJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmRWCHBheW1lbnRzAAEFAmdRBwcGAAACAAQCY08IBQJnUgJfOQQCZ3gJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRWCHBheW1lbnRzAAAGYW1vdW50BAJneQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZFYIcGF5bWVudHMAAQZhbW91bnQEAmVPCQECZUgDBQJneAUCZ3kJALYCAQAAAwkAAAIFAmVPBQJlTwQCZ1MJAQJlUAMAAAAAAAAEAmdnCAUCZ1MCXzEEAmVHCAUCZ1MCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEDZ2V0AAQCZGsJAQJmZgEFAmRWBAJnVAgFAmRrAl8xBAJjTggFAmRrAl8yBAJjWQgFAmRrAl8zBAJjcwgFAmRrAl80BAJjTwgFAmRrAl81BAJldwkA/AcEBQJhTgIEYnVybgkAzAgCBQJjWQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjcwUCY1kFA25pbAMJAAACBQJldwUCZXcEAmVPCQECZUgDCQC2AgEAAAkAtgIBAAAJALYCAQUCY1kEAmdVCQECZVADCQEBLQEFAmdUCQEBLQEFAmNOAAAEAmdnCAUCZ1UCXzEEAmVHCAUCZ1UCXzIEAmdoCQECZVQCBQJlTwUCZUcDCQAAAgUCZ2gFAmdoCQDOCAIFAmNPBQJnZwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgELZ2V0T25lVGtuVjICAmZJAmZKBAJnSQoAAmZSCQD8BwQFAmFOAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlICB0Jvb2xlYW4FAmZSCQACAQkArAICCQADAQUCZlICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdWAwMJAQJhUAAGCQAAAgUCYmUFAXMGBQJnSQQCZ0sJAMwIAgMDCQEBIQEFAmdWBgkBAmdsAQUCZFYGCQECYUsBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwABBgkBAmFLAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0sFAmdLBAJnVwkBAmZIBgUCZkkFAmZKCAUCZFYIcGF5bWVudHMIBQJkVgZjYWxsZXIIBQJkVgxvcmlnaW5DYWxsZXIIBQJkVg10cmFuc2FjdGlvbklkBAJjTwgFAmdXAl8xBAJmVAgFAmdXAl8yCQCUCgIFAmNPBQJmVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkVgEKcmVmcmVzaERMcAAEAmdYCQELdmFsdWVPckVsc2UCCQCfCAEFAmFsAAAEAmdZAwkAZwIJAGUCBQZoZWlnaHQFAmdYBQJhbwUEdW5pdAkBAmFLAQkAuQkCCQDMCAIJAKQDAQUCYW8JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmdZBQJnWQQCZmEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFrAgEwCQECYU0BAgtpbnZhbGlkIGRMcAQCZ1oJAQJlUAMAAAAAAAAEAmhhCAUCZ1oCXzEEAmVHCAUCZ1oCXzIEAmVTAwkBAiE9AgUCZmEFAmVHBQJoYQkBAmFLAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVTCQCmAwEFAmVHCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARNnZXRPbmVUa25WMlJFQURPTkxZAgJmSQJoYgQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmRGCQDMCAIJALYCAQkBAmJGAQUCY3cJAMwIAgkAtgIBCQECYkYBBQJjeAUDbmlsBAJlRgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCY3YCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmJTCQECZEUBBQJkRgQCYlIJALgCAgUCYlMJALwCAwkAtgIBBQJoYgUCYlMFAmVGBAJoYwMJAAACBQJmSQUCY3cAAAMJAAACBQJmSQUCY3gAAQkAAgECFGludmFsaWQgb3V0IGFzc2V0IGlkBAJoZAkBAmVzAwUCZEYFAmhjBQJiUgQCaGUJALgCAgkAkQMCBQJkRgUCaGMFAmhkBAJoZgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALgCAgUCaGUFAWYFA25pbAQCaGcJAQJjbgEFAmhmBAJmUwgFAmhnAl8xBAJjcAgFAmhnAl8yCQCUCgIFA25pbAkAlAoCBQJmUwUCY3ACZFYBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZJAmhiBAJiYQkBAmFTAAQCY3cJAJEDAgUCYmEFAXcEAmN4CQCRAwIFAmJhBQF4BAJjdgkAkQMCBQJiYQUBdgQCY0MJAQJiRgEFAmN3BAJjRQkBAmJGAQUCY3gEAmhoCgACZlIJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmSQkAzAgCBQJoYgUDbmlsBQNuaWwDCQABAgUCZlICCihJbnQsIEludCkFAmZSCQACAQkArAICCQADAQUCZlICHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkEAmZTCAUCaGgCXzEEAmNwCAUCaGgCXzIEAmRrCQECY3EEAgAFAmN2BQJoYgUEdGhpcwQCY00IBQJkawJfMQQCY04IBQJkawJfMgQCaGkJAGQCBQJjTQUCY04EAmZHAwkAAAIFAmhpAAADCQAAAgUCZlMAAAAACQACAQIXYm9udXMgY2FsY3VsYXRpb24gZXJyb3IJAGsDCQBlAgUCZlMFAmhpBQFhBQJoaQkAlAoCBQNuaWwJAJUKAwUCZlMFAmNwBQJmRwJkVgEJZ2V0Tm9MZXNzAgJoagJoawQCZGsJAQJmZgEFAmRWBAJjTQgFAmRrAl8xBAJjTggFAmRrAl8yBAJjWQgFAmRrAl8zBAJjcwgFAmRrAl80BAJjTwgFAmRrAl81AwkAZgIFAmhqBQJjTQkAAgEJAKwCAgkArAICCQCsAgICCUZhaWxlZDogIAkApAMBBQJjTQIDIDwgCQCkAwEFAmhqAwkAZgIFAmhrBQJjTgkAAgEJAKwCAgkArAICCQCsAgICCEZhaWxlZDogCQCkAwEFAmNOAgMgPCAJAKQDAQUCaGsEAmVPCQECZUgDCQC2AgEAAAkAtgIBAAAJALYCAQUCY1kEAmhsCQD8BwQFAmFOAgRidXJuCQDMCAIFAmNZBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNzBQJjWQUDbmlsAwkAAAIFAmhsBQJobAQCaG0JAQJlUAMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2cIBQJobQJfMQQCZUcIBQJobQJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWAQ11bnN0YWtlQW5kR2V0AQJjbwQCaG4DCQECIT0CCQCQAwEIBQJkVghwYXltZW50cwAACQACAQINTm8gcG1udHMgZXhwZAYDCQAAAgUCaG4FAmhuBAJjZQkBAmFTAAQCaG8JAQJiawAEAmdBCQDZBAEJAJEDAgUCY2UFAXYEAmhwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJobwUBQwIKV3Igc3QgYWRkcgQCZU8JAQJlSAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmhxCQD8BwQFAmhwAgd1bnN0YWtlCQDMCAIJANgEAQUCZ0EJAMwIAgUCY28FA25pbAUDbmlsAwkAAAIFAmhxBQJocQQCZGsJAQJjcQQJANgEAQgFAmRWDXRyYW5zYWN0aW9uSWQJANgEAQUCZ0EFAmNvCAUCZFYGY2FsbGVyBAJjTQgFAmRrAl8xBAJjTggFAmRrAl8yBAJjQQkBDXBhcnNlSW50VmFsdWUBCAUCZGsCXzkEAmNPCAUCZGsDXzEwBAJocgMDCQECYVAABgkAAAIFAmNBBQFzCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCY0EGAwkAAAIFAmhyBQJocgQCaHMJAPwHBAUCYU4CBGJ1cm4JAMwIAgUCY28FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ0EFAmNvBQNuaWwDCQAAAgUCaHMFAmhzBAJodAkBAmVQAwkBAS0BBQJjTQkBAS0BBQJjTgAABAJnZwgFAmh0Al8xBAJlRwgFAmh0Al8yBAJnaAkBAmVUAgUCZU8FAmVHAwkAAAIFAmdoBQJnaAkAzggCBQJjTwUCZ2cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZFYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh1Amh2AmhrBAJnVgMJAQJhUAAGCQAAAgUCYmUFAXMEAmdLCQDMCAIDCQEBIQEFAmdWBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRWCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0sFAmdLBAJlTwkBAmVIAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCaHEJAPwHBAUCYm0CB3Vuc3Rha2UJAMwIAgkA2AQBBQJiZgkAzAgCBQJodQUDbmlsBQNuaWwDCQAAAgUCaHEFAmhxBAJodwkBAmNxBAkA2AQBCAUCZFYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiZgUCaHUIBQJkVgZjYWxsZXIEAmNNCAUCaHcCXzEEAmNOCAUCaHcCXzIEAmNPCAUCaHcDXzEwBAJoeAkAzAgCAwkAZwIFAmNNBQJodgYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJodgUDbmlsAgAJAMwIAgMJAGcCBQJjTgUCaGsGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoawUDbmlsAgAFA25pbAMJAAACBQJoeAUCaHgEAmhsCQD8BwQFAmFOAgRidXJuCQDMCAIFAmh1BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJmBQJodQUDbmlsAwkAAAIFAmhsBQJobAQCaHkJAQJlUAMJAQEtAQUCY00JAQEtAQUCY04AAAQCZ2cIBQJoeQJfMQQCZUcIBQJoeQJfMgQCZ2gJAQJlVAIFAmVPBQJlRwMJAAACBQJnaAUCZ2gJAM4IAgUCY08FAmdnCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARV1bnN0YWtlQW5kR2V0T25lVGtuVjIDAmh1AmZJAmZKBAJnSQoAAmZSCQD8BwQFAmFOAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCZlICB0Jvb2xlYW4FAmZSCQACAQkArAICCQADAQUCZlICHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmdWAwMJAQJhUAAGCQAAAgUCYmUFAXMGBQJnSQQCZ0sJAMwIAgMDCQEBIQEFAmdWBgkBAmdsAQUCZFYGCQECYUsBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkVghwYXltZW50cwAABgkBAmFLAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0sFAmdLBAJjZQkBAmFTAAQCaG8JAQJiawAEAmdBCQDZBAEJAJEDAgUCY2UFAXYEAmhwCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJobwUBQwIKV3Igc3QgYWRkcgQCaHEJAPwHBAUCaHACB3Vuc3Rha2UJAMwIAgkA2AQBBQJnQQkAzAgCBQJodQUDbmlsBQNuaWwDCQAAAgUCaHEFAmhxBAJoegkBAmZIBgUCZkkFAmZKCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnQQUCaHUFA25pbAgFAmRWBmNhbGxlcggFAmRWDG9yaWdpbkNhbGxlcggFAmRWDXRyYW5zYWN0aW9uSWQEAmNPCAUCaHoCXzEEAmZUCAUCaHoCXzIJAJQKAgUCY08FAmZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRWARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJoQQJoQgQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmhDCQECZmwFBQJoQQUCaEICAAIABgQCZkIIBQJoQwJfMQQCY08IBQJoQwJfMgQCY3AIBQJoQwJfMwQCZkcIBQJoQwJfNAkAlAoCBQNuaWwJAJUKAwUCZkIFAmNwBQJmRwJkVgEhcHV0T25lVGtuVjJXaXRob3V0VGFrZUZlZVJFQURPTkxZAgJoQQJoQgQCYmEJAQJhUwAEAmN3CQCRAwIFAmJhBQF3BAJjeAkAkQMCBQJiYQUBeAQCY3YJAJEDAgUCYmEFAXYEAmhECQECZmwFBQJoQQUCaEICAAIABwQCZkIIBQJoRAJfMQQCY08IBQJoRAJfMgQCY3AIBQJoRAJfMwQCZkcIBQJoRAJfNAkAlAoCBQNuaWwJAJUKAwUCZkIFAmNwBQJmRwJkVgEIYWN0aXZhdGUCAmhFAmhGAwkBAiE9AgkApQgBCAUCZFYGY2FsbGVyCQClCAEFAmFOCQACAQIGZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCaEUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCaEYFA25pbAIHc3VjY2VzcwJkVgEEc2V0UwICaEcCaHIDCQECIT0CCQClCAEIBQJkVgZjYWxsZXIJAQJhRwIFBHRoaXMJAQJhaAAFAmdrCQDMCAIJAQtTdHJpbmdFbnRyeQIFAmhHBQJocgUDbmlsAmRWAQRzZXRJAgJoRwJocgMJAQIhPQIJAKUIAQgFAmRWBmNhbGxlcgkBAmFHAgUEdGhpcwkBAmFoAAUCZ2sJAMwIAgkBDEludGVnZXJFbnRyeQIFAmhHBQJocgUDbmlsAmRWARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJhUwACZFYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmJHCQCUCgIFA25pbAkBAmJGAQUCYkcCZFYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmJZAmJaAmNkBAJoSAkBAmNjAwUCYlkFAmJaBQJjZAkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmhIAAAJAMwIAgkApgMBCQCRAwIFAmhIAAEJAMwIAgkApgMBCQCRAwIFAmhIAAIFA25pbAJkVgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBTAJoSQkAlAoCBQNuaWwJAQFLAgkApwMBBQFMBQJoSQJkVgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAKYDAQkBAUgCBQFJBQFKAmRWAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJJAmJKCQCUCgIFA25pbAkApgMBCQECYkgCCQCnAwEFAmJJCQCnAwEFAmJKAmRWASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCY3ICYk4CY1ECY1ICY1MCY1QCaEoCY1UCY1YJAJQKAgUDbmlsCQECY1ANBQJjcgUCYk4FAmNRBQJjUgUCY1MFAmNUBQJoSgUCY1UFAmNWBgcAAAIAAmRWASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCY3ICaEsCY3QCaEoEAmRrCQECY3EEBQJjcgUCaEsFAmN0CQERQGV4dHJOYXRpdmUoMTA2MikBBQJoSgkAlAoCBQNuaWwJAJwKCggFAmRrAl8xCAUCZGsCXzIIBQJkawJfMwgFAmRrAl80CAUCZGsCXzUIBQJkawJfNggFAmRrAl83CQCmAwEIBQJkawJfOAgFAmRrAl85CAUCZGsDXzEwAmRWAQ5nZXRGZWVSRUFET05MWQAJAJQKAgUDbmlsBQJhagECaEwBAmhNAAQCaE4EAmFFCQECZ2kAAwkAAQIFAmFFAgpCeXRlVmVjdG9yBAJnbQUCYUUFAmdtAwkAAQIFAmFFAgRVbml0CAUCaEwPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmFFBQJoTAMJAAECBQJhRQIFT3JkZXIEAmVXBQJhRQQCaE8JAQJhUQAEAmhQCQECZVYBBQJlVwQCaFEJAPQDAwgFAmVXCWJvZHlCeXRlcwkAkQMCCAUCZVcGcHJvb2ZzAAAIBQJlVw9zZW5kZXJQdWJsaWNLZXkEAmhSCQD0AwMIBQJlVwlib2R5Qnl0ZXMJAJEDAggFAmVXBnByb29mcwABBQJoTwMDAwUCaFAFAmhRBwUCaFIHBgkBAmF6AwUCaFAFAmhRBQJoUgMJAAECBQJhRQIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmRJBQJhRQQCaFMJAPYDAQkBBXZhbHVlAQgFAmRJBnNjcmlwdAQCaFQJANsEAQkBBXZhbHVlAQkAnQgCBQJhTgkBAmF4AAQCaFUJAPEHAQUEdGhpcwMDCQAAAgUCaFQFAmhTCQECIT0CBQJoVQUCaFMHBgkA9AMDCAUCaEwJYm9keUJ5dGVzCQCRAwIIBQJoTAZwcm9vZnMAAAUCaE4JAPQDAwgFAmhMCWJvZHlCeXRlcwkAkQMCCAUCaEwGcHJvb2ZzAAAFAmhOkemtLA==", "chainId": 84, "height": 2349954, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 2298qTJyRiuEaCgi2LcZH5g4TgvX65H1H3eP2cjm4QeM Next: 8XY2ED8nhenPGS2ywpsoY5S9ncXhf8era6TthXFigtdC Diff:
OldNewDifferences
605605
606606
607607 func eC (eD,eE,eF) = {
608- let eG = toBigInt(1000000000000)
609- let eH = fraction(dE([eD, eE]), eG, eF)
608+ let eG = fraction(dE([eD, eE]), c, eF)
610609 if ((eF == e))
611610 then e
612- else eH
611+ else eG
613612 }
614613
615614
616-func eI (eJ,eK,eL) = {
617- let eM = (toBigInt(bF(aY(bg))) - eJ)
618- let eN = (toBigInt(bF(aY(bh))) - eK)
619- let eO = (toBigInt(value(assetInfo(bf)).quantity) - eL)
620- let eP = eC(eM, eN, eO)
621- eP
615+func eH (eI,eJ,eK) = {
616+ let eL = (toBigInt(bF(aY(bg))) - eI)
617+ let eM = (toBigInt(bF(aY(bh))) - eJ)
618+ let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619+ let eO = eC(eL, eM, eN)
620+ eO
622621 }
623622
624623
625-func eQ (eR,eS,eL) = {
626- let eM = (bF(aY(bg)) + eR)
627- let eN = (bF(aY(bh)) + eS)
628- let eO = (value(assetInfo(bf)).quantity + eL)
629- let eH = eC(toBigInt(eM), toBigInt(eN), toBigInt(eO))
630- let eT = [IntegerEntry(al, height), StringEntry(ak, toString(eH))]
631- $Tuple2(eT, eH)
624+func eP (eQ,eR,eK) = {
625+ let eL = (bF(aY(bg)) + eQ)
626+ let eM = (bF(aY(bh)) + eR)
627+ let eN = (value(assetInfo(bf)).quantity + eK)
628+ let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629+ let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630+ $Tuple2(eS, eG)
632631 }
633632
634633
635-func eU (eV,eH) = if ((eH >= eV))
634+func eT (eU,eG) = if ((eG >= eU))
636635 then true
637636 else aK("updated DLp lower than current DLp")
638637
639638
640-func eW (eX) = {
641- let eY = eX.amount
642- let eZ = fraction(eX.amount, eX.price, a, FLOOR)
643- let fa = if ((eX.orderType == Buy))
644- then $Tuple2(eY, -(eZ))
645- else $Tuple2(-(eY), eZ)
646- let eR = fa._1
647- let eS = fa._2
639+func eV (eW) = {
640+ let eX = eW.amount
641+ let eY = fraction(eW.amount, eW.price, a, FLOOR)
642+ let eZ = if ((eW.orderType == Buy))
643+ then $Tuple2(eX, -(eY))
644+ else $Tuple2(-(eX), eY)
645+ let eQ = eZ._1
646+ let eR = eZ._2
648647 if (if (if (aP())
649648 then true
650649 else (be == r))
651650 then true
652651 else (be == s))
653652 then throw("Admin blocked")
654- else if (if ((eX.assetPair.amountAsset != bg))
653+ else if (if ((eW.assetPair.amountAsset != bg))
655654 then true
656- else (eX.assetPair.priceAsset != bh))
655+ else (eW.assetPair.priceAsset != bh))
657656 then throw("Wr assets")
658657 else {
659- let fb = parseBigIntValue(getStringValue(this, ak))
660- let fc = eQ(eR, eS, 0)
661- let fd = fc._1
662- let fe = fc._2
663- let ff = (fe >= fb)
664- ff
658+ let fa = parseBigIntValue(getStringValue(this, ak))
659+ let fb = eP(eQ, eR, 0)
660+ let fc = fb._1
661+ let fd = fb._2
662+ let fe = (fd >= fa)
663+ fe
665664 }
666665 }
667666
668667
669-func fg (dV) = if ((size(dV.payments) != 1))
668+func ff (dV) = if ((size(dV.payments) != 1))
670669 then throw("1 pmnt exp")
671670 else {
672- let fh = value(dV.payments[0])
673- let cs = value(fh.assetId)
674- let cY = fh.amount
671+ let fg = value(dV.payments[0])
672+ let cs = value(fg.assetId)
673+ let cY = fg.amount
675674 let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
676675 let cM = dk._1
677676 let cN = dk._2
685684 }
686685
687686
688-func fi (fj,ac,fk,fl,bN,cV,cW,cX,cY,cZ) = {
689- let dk = cP(ac, bN, value(fk).amount, value(fk).assetId, value(fl).amount, value(fl).assetId, fj, (ac == ""), cV, cW, cX, cY, cZ)
687+func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688+ let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
690689 let cA = parseIntValue(dk._8)
691690 if (if (if (aP())
692691 then true
698697 }
699698
700699
701-func fm (fn,cs,cu,ac,fo) = {
700+func fl (fm,cs,cu,ac,fn) = {
702701 let ba = aS()
703702 let cw = ba[w]
704703 let cx = ba[x]
705704 let cv = ba[v]
706705 let de = parseIntValue(ba[y])
707706 let df = parseIntValue(ba[z])
708- let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
709- let fp = if ((eO > e))
707+ let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708+ let fo = if ((eN > e))
710709 then true
711710 else throw("initial deposit requires all coins")
712- if ((fp == fp))
711+ if ((fo == fo))
713712 then {
714713 let cC = bF(cw)
715714 let cE = bF(cx)
716- let fq = if ((ac == ""))
715+ let fp = if ((ac == ""))
717716 then $Tuple2(cC, cE)
718717 else if ((cs == cw))
719- then if ((fn > cC))
718+ then if ((fm > cC))
720719 then throw("invalid payment amount")
721- else $Tuple2((cC - fn), cE)
720+ else $Tuple2((cC - fm), cE)
722721 else if ((cs == cx))
723- then if ((fn > cE))
722+ then if ((fm > cE))
724723 then throw("invalid payment amount")
725- else $Tuple2(cC, (cE - fn))
724+ else $Tuple2(cC, (cE - fm))
726725 else throw("wrong pmtAssetId")
727- let fr = fq._1
728- let fs = fq._2
729- let ft = if ((cs == cw))
730- then $Tuple2(fn, 0)
726+ let fq = fp._1
727+ let fr = fp._2
728+ let fs = if ((cs == cw))
729+ then $Tuple2(fm, 0)
731730 else if ((cs == cx))
732- then $Tuple2(0, fn)
731+ then $Tuple2(0, fm)
733732 else throw("invalid payment")
734- let fu = ft._1
735- let fv = ft._2
736- let fw = if (fo)
737- then $Tuple3(cn(fu)._1, cn(fv)._1, cn(fn)._2)
738- else $Tuple3(fu, fv, 0)
739- let fx = fw._1
740- let fy = fw._2
741- let cp = fw._3
733+ let ft = fs._1
734+ let fu = fs._2
735+ let fv = if (fn)
736+ then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737+ else $Tuple3(ft, fu, 0)
738+ let fw = fv._1
739+ let fx = fv._2
740+ let cp = fv._3
741+ let fy = (fq + fw)
742742 let fz = (fr + fx)
743- let fA = (fs + fy)
744- let bS = dE([toBigInt(fr), toBigInt(fs)])
745- let bR = dE([toBigInt(fz), toBigInt(fA)])
746- let fB = if ((bR > bS))
743+ let bS = dE([toBigInt(fq), toBigInt(fr)])
744+ let bR = dE([toBigInt(fy), toBigInt(fz)])
745+ let fA = if ((bR > bS))
747746 then true
748747 else throw()
749- if ((fB == fB))
748+ if ((fA == fA))
750749 then {
751- let fC = fraction(eO, (bR - bS), bS)
752- let cH = K(bH(H(fA, df), H(fz, de)), a)
753- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(fu, fv, toInt(fC), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
754- let fD = fraction(fs, a, fr)
755- let fE = fraction(fn, a, (fD + a))
756- let fF = (fn - fE)
757- let fG = fraction(eO, toBigInt(fF), toBigInt(fs))
758- let fH = toInt(fraction((fC - fG), b, fG))
759- $Tuple4(toInt(fC), dD, cp, fH)
750+ let fB = fraction(eN, (bR - bS), bS)
751+ let cH = K(bH(H(fz, df), H(fy, de)), a)
752+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753+ let fC = fraction(fr, a, fq)
754+ let fD = fraction(fm, a, (fC + a))
755+ let fE = (fm - fD)
756+ let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757+ let fG = toInt(fraction((fB - fF), b, fF))
758+ $Tuple4(toInt(fB), dD, cp, fG)
760759 }
761760 else throw("Strict value is not equal to itself.")
762761 }
764763 }
765764
766765
767-func fI (fJ,fK,fL,fj,fM,fN) = {
766+func fH (fI,fJ,fK,fi,fL,fM) = {
768767 let ba = aS()
769768 let cv = ba[v]
770769 let cw = ba[w]
771770 let cx = ba[x]
772- let fO = parseIntValue(ba[y])
773- let fP = parseIntValue(ba[z])
774- let fQ = ba[u]
775- let cu = if ((fj == bp))
776- then fM
777- else fj
778- let fh = value(fL[0])
779- let cs = value(fh.assetId)
780- let cY = fh.amount
781- let eP = eI(e, e, e)
782- if ((eP == eP))
771+ let fN = parseIntValue(ba[y])
772+ let fO = parseIntValue(ba[z])
773+ let fP = ba[u]
774+ let cu = if ((fi == bp))
775+ then fL
776+ else fi
777+ let fg = value(fK[0])
778+ let cs = value(fg.assetId)
779+ let cY = fg.amount
780+ let eO = eH(e, e, e)
781+ if ((eO == eO))
783782 then {
784- let cr = toBase58String(fN)
783+ let cr = toBase58String(fM)
785784 if ((cv != toBase58String(cs)))
786785 then throw("Wrong LP")
787786 else {
788787 let cC = bF(cw)
789788 let cE = bF(cx)
790- let fR = {
791- let fS = invoke(this, "getOneTknV2READONLY", [fJ, cY], nil)
792- if ($isInstanceOf(fS, "(Int, Int)"))
793- then fS
794- else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
789+ let fQ = {
790+ let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791+ if ($isInstanceOf(fR, "(Int, Int)"))
792+ then fR
793+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
795794 }
796- if ((fR == fR))
795+ if ((fQ == fQ))
797796 then {
798- let cp = fR._2
799- let fT = fR._1
800- let fU = if (if ((fK > 0))
801- then (fK > fT)
797+ let cp = fQ._2
798+ let fS = fQ._1
799+ let fT = if (if ((fJ > 0))
800+ then (fJ > fS)
802801 else false)
803- then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
804- else fT
805- let fV = if ((fJ == cw))
806- then $Tuple4(fU, 0, ((cC - fU) - cp), cE)
807- else if ((fJ == cx))
808- then $Tuple4(0, fU, cC, ((cE - fU) - cp))
802+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803+ else fS
804+ let fU = if ((fI == cw))
805+ then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806+ else if ((fI == cx))
807+ then $Tuple4(0, fT, cC, ((cE - fT) - cp))
809808 else throw("invalid out asset id")
810- let fW = fV._1
811- let fX = fV._2
812- let fz = fV._3
813- let fA = fV._4
814- let fY = bH(H(fA, fP), H(fz, fO))
815- let fZ = K(fY, a)
816- let ga = if ((fJ == "WAVES"))
809+ let fV = fU._1
810+ let fW = fU._2
811+ let fy = fU._3
812+ let fz = fU._4
813+ let fX = bH(H(fz, fO), H(fy, fN))
814+ let fY = K(fX, a)
815+ let fZ = if ((fI == "WAVES"))
817816 then unit
818- else fromBase58String(fJ)
819- let gb = if ((cp > 0))
820- then [ScriptTransfer(aR, cp, ga)]
817+ else fromBase58String(fI)
818+ let ga = if ((cp > 0))
819+ then [ScriptTransfer(aR, cp, fZ)]
821820 else nil
822- let cO = ([ScriptTransfer(cu, fU, ga), StringEntry(ad(toString(cu), cr), bB(fW, fX, cY, fZ, height, lastBlock.timestamp)), IntegerEntry(W(), fZ), IntegerEntry(X(height, lastBlock.timestamp), fZ)] ++ gb)
821+ let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
823822 if ((cO == cO))
824823 then {
825- let gc = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
826- if ((gc == gc))
824+ let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825+ if ((gb == gb))
827826 then {
828- let gd = {
829- let ge = if ((this == aR))
827+ let gc = {
828+ let gd = if ((this == aR))
830829 then 0
831830 else cp
832- let gf = if ((aW(fJ) == bg))
831+ let ge = if ((aW(fI) == bg))
833832 then true
834833 else false
835- if (gf)
836- then $Tuple2(-((fT + ge)), 0)
837- else $Tuple2(0, -((fT + ge)))
834+ if (ge)
835+ then $Tuple2(-((fS + gd)), 0)
836+ else $Tuple2(0, -((fS + gd)))
838837 }
839- let eR = gd._1
840- let eS = gd._2
841- let gg = eQ(eR, eS, 0)
842- let gh = gg._1
843- let eH = gg._2
844- let gi = eU(eP, eH)
845- if ((gi == gi))
846- then $Tuple2((cO ++ gh), fU)
838+ let eQ = gc._1
839+ let eR = gc._2
840+ let gf = eP(eQ, eR, 0)
841+ let gg = gf._1
842+ let eG = gf._2
843+ let gh = eT(eO, eG)
844+ if ((gh == gh))
845+ then $Tuple2((cO ++ gg), fT)
847846 else throw("Strict value is not equal to itself.")
848847 }
849848 else throw("Strict value is not equal to itself.")
857856 }
858857
859858
860-func gj () = {
859+func gi () = {
861860 let aE = getString(U())
862861 if ($isInstanceOf(aE, "String"))
863862 then {
870869 }
871870
872871
873-func gk () = {
872+func gj () = {
874873 let aE = getString(V())
875874 if ($isInstanceOf(aE, "String"))
876875 then {
883882 }
884883
885884
886-let gl = throw("Permission denied")
885+let gk = throw("Permission denied")
887886
888-func gm (dV) = {
889- let aE = gj()
887+func gl (dV) = {
888+ let aE = gi()
890889 if ($isInstanceOf(aE, "ByteVector"))
891890 then {
892- let gn = aE
893- (dV.callerPublicKey == gn)
891+ let gm = aE
892+ (dV.callerPublicKey == gm)
894893 }
895894 else if ($isInstanceOf(aE, "Unit"))
896895 then (dV.caller == this)
898897 }
899898
900899
901-func go (dV) = {
902- let aE = gj()
900+func gn (dV) = {
901+ let aE = gi()
903902 if ($isInstanceOf(aE, "ByteVector"))
904903 then {
905- let gn = aE
906- if ((dV.callerPublicKey == gn))
904+ let gm = aE
905+ if ((dV.callerPublicKey == gm))
907906 then true
908- else gl
907+ else gk
909908 }
910909 else if ($isInstanceOf(aE, "Unit"))
911910 then if ((dV.caller == this))
912911 then true
913- else gl
912+ else gk
914913 else throw("Match error")
915914 }
916915
917916
918917 @Callable(dV)
919918 func constructor (T) = {
920- let ev = go(dV)
919+ let ev = gn(dV)
921920 if ((ev == ev))
922921 then [StringEntry(T(), T)]
923922 else throw("Strict value is not equal to itself.")
926925
927926
928927 @Callable(dV)
929-func setManager (gp) = {
930- let ev = go(dV)
928+func setManager (go) = {
929+ let ev = gn(dV)
931930 if ((ev == ev))
932931 then {
933- let gq = fromBase58String(gp)
934- if ((gq == gq))
935- then [StringEntry(V(), gp)]
932+ let gp = fromBase58String(go)
933+ if ((gp == gp))
934+ then [StringEntry(V(), go)]
936935 else throw("Strict value is not equal to itself.")
937936 }
938937 else throw("Strict value is not equal to itself.")
942941
943942 @Callable(dV)
944943 func confirmManager () = {
945- let cm = gk()
946- let gr = if (isDefined(cm))
944+ let cm = gj()
945+ let gq = if (isDefined(cm))
947946 then true
948947 else throw("No pending manager")
949- if ((gr == gr))
948+ if ((gq == gq))
950949 then {
951- let gs = if ((dV.callerPublicKey == value(cm)))
950+ let gr = if ((dV.callerPublicKey == value(cm)))
952951 then true
953952 else throw("You are not pending manager")
954- if ((gs == gs))
953+ if ((gr == gr))
955954 then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
956955 else throw("Strict value is not equal to itself.")
957956 }
961960
962961
963962 @Callable(dV)
964-func put (gt,gu) = {
965- let gv = bk()
966- let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
967- let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
968- if ((0 > gt))
963+func put (gs,gt) = {
964+ let gu = bk()
965+ let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966+ let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967+ if ((0 > gs))
969968 then throw("Wrong slippage")
970969 else if ((size(dV.payments) != 2))
971970 then throw("2 pmnts expd")
972971 else {
973- let gy = toBigInt(value(dV.payments[0]).amount)
974- let gz = toBigInt(value(dV.payments[1]).amount)
975- let eP = eI(gy, gz, toBigInt(0))
976- if ((eP == eP))
972+ let gx = toBigInt(value(dV.payments[0]).amount)
973+ let gy = toBigInt(value(dV.payments[1]).amount)
974+ let eO = eH(gx, gy, toBigInt(0))
975+ if ((eO == eO))
977976 then {
978- let gA = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gt, true, false, true, 0, "")
979- let dx = gA._2
980- let gB = gA._7
981- let cO = gA._9
982- let dy = gA._10
983- let dz = gA._11
984- let cw = gA._12
985- let cx = gA._13
977+ let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978+ let dx = gz._2
979+ let gA = gz._7
980+ let cO = gz._9
981+ let dy = gz._10
982+ let dz = gz._11
983+ let cw = gz._12
984+ let cx = gz._13
986985 let dk = invoke(aN, "emit", [dx], nil)
987986 if ((dk == dk))
988987 then {
989- let gC = {
988+ let gB = {
990989 let aE = dk
991990 if ($isInstanceOf(aE, "Address"))
992991 then {
993- let gD = aE
994- invoke(gD, "emit", [dx], nil)
992+ let gC = aE
993+ invoke(gC, "emit", [dx], nil)
995994 }
996995 else unit
997996 }
998- if ((gC == gC))
997+ if ((gB == gB))
999998 then {
1000- let gE = if ((dy > 0))
1001- then invoke(gx, "put", nil, [AttachedPayment(cw, dy)])
999+ let gD = if ((dy > 0))
1000+ then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
10021001 else nil
1003- if ((gE == gE))
1002+ if ((gD == gD))
10041003 then {
1005- let gF = if ((dz > 0))
1006- then invoke(gx, "put", nil, [AttachedPayment(cx, dz)])
1004+ let gE = if ((dz > 0))
1005+ then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
10071006 else nil
1008- if ((gF == gF))
1007+ if ((gE == gE))
10091008 then {
1010- let gG = if (gu)
1009+ let gF = if (gt)
10111010 then {
1012- let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, dx)])
1013- if ((gH == gH))
1011+ let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012+ if ((gG == gG))
10141013 then nil
10151014 else throw("Strict value is not equal to itself.")
10161015 }
1017- else [ScriptTransfer(dV.caller, dx, gB)]
1018- let gI = eQ(0, 0, 0)
1019- let gh = gI._1
1020- let eH = gI._2
1021- let gi = eU(eP, eH)
1022- if ((gi == gi))
1023- then ((cO ++ gG) ++ gh)
1016+ else [ScriptTransfer(dV.caller, dx, gA)]
1017+ let gH = eP(0, 0, 0)
1018+ let gg = gH._1
1019+ let eG = gH._2
1020+ let gh = eT(eO, eG)
1021+ if ((gh == gh))
1022+ then ((cO ++ gF) ++ gg)
10241023 else throw("Strict value is not equal to itself.")
10251024 }
10261025 else throw("Strict value is not equal to itself.")
10381037
10391038
10401039 @Callable(dV)
1041-func putOneTknV2 (fK,gu) = {
1042- let gJ = {
1043- let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1044- if ($isInstanceOf(fS, "Boolean"))
1045- then fS
1046- else throw(($getType(fS) + " couldn't be cast to Boolean"))
1040+func putOneTknV2 (fJ,gt) = {
1041+ let gI = {
1042+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043+ if ($isInstanceOf(fR, "Boolean"))
1044+ then fR
1045+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
10471046 }
1048- let gK = if (if (if (aP())
1047+ let gJ = if (if (if (aP())
10491048 then true
10501049 else (be == q))
10511050 then true
10521051 else (be == s))
10531052 then true
1054- else gJ
1055- let gL = [if (if (!(gK))
1053+ else gI
1054+ let gK = [if (if (!(gJ))
10561055 then true
1057- else gm(dV))
1056+ else gl(dV))
10581057 then true
10591058 else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10601059 then true
10611060 else aK("exactly 1 payment are expected")]
1062- if ((gL == gL))
1061+ if ((gK == gK))
10631062 then {
10641063 let ba = aS()
10651064 let cw = ba[w]
10661065 let cx = ba[x]
10671066 let cv = fromBase58String(ba[v])
1068- let fO = parseIntValue(ba[y])
1069- let fP = parseIntValue(ba[z])
1067+ let fN = parseIntValue(ba[y])
1068+ let fO = parseIntValue(ba[z])
10701069 let cu = if ((dV.caller == this))
10711070 then dV.originCaller
10721071 else dV.caller
1073- let fh = value(dV.payments[0])
1074- let cs = toBase58String(value(fh.assetId))
1075- let cY = fh.amount
1076- let gM = fm(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1077- if ((gM == gM))
1072+ let fg = value(dV.payments[0])
1073+ let cs = toBase58String(value(fg.assetId))
1074+ let cY = fg.amount
1075+ let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076+ if ((gL == gL))
10781077 then {
1079- let cp = gM._3
1080- let cO = gM._2
1081- let gN = gM._1
1082- let dx = if (if ((fK > 0))
1083- then (fK > gN)
1078+ let cp = gL._3
1079+ let cO = gL._2
1080+ let gM = gL._1
1081+ let dx = if (if ((fJ > 0))
1082+ then (fJ > gM)
10841083 else false)
1085- then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
1086- else gN
1087- let gA = invoke(aN, "emit", [dx], nil)
1088- if ((gA == gA))
1084+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085+ else gM
1086+ let gz = invoke(aN, "emit", [dx], nil)
1087+ if ((gz == gz))
10891088 then {
1090- let gC = {
1091- let aE = gA
1089+ let gB = {
1090+ let aE = gz
10921091 if ($isInstanceOf(aE, "Address"))
10931092 then {
1094- let gD = aE
1095- invoke(gD, "emit", [dx], nil)
1093+ let gC = aE
1094+ invoke(gC, "emit", [dx], nil)
10961095 }
10971096 else unit
10981097 }
1099- if ((gC == gC))
1098+ if ((gB == gB))
11001099 then {
1101- let gG = if (gu)
1100+ let gF = if (gt)
11021101 then {
1103- let gH = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1104- if ((gH == gH))
1102+ let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103+ if ((gG == gG))
11051104 then nil
11061105 else throw("Strict value is not equal to itself.")
11071106 }
11081107 else [ScriptTransfer(dV.caller, dx, cv)]
1109- let gb = if ((cp > 0))
1108+ let ga = if ((cp > 0))
11101109 then [ScriptTransfer(aR, cp, fromBase58String(cs))]
11111110 else nil
1112- let gO = if ((this == aR))
1111+ let gN = if ((this == aR))
11131112 then $Tuple2(0, 0)
11141113 else {
1115- let gP = if ((fh.assetId == bg))
1114+ let gO = if ((fg.assetId == bg))
11161115 then true
11171116 else false
1118- if (gP)
1117+ if (gO)
11191118 then $Tuple2(-(cp), 0)
11201119 else $Tuple2(0, -(cp))
11211120 }
1122- let eR = gO._1
1123- let eS = gO._2
1124- let gQ = eQ(eR, eS, 0)
1125- let gh = gQ._1
1126- let eH = gQ._2
1127- $Tuple2((((cO ++ gG) ++ gb) ++ gh), dx)
1121+ let eQ = gN._1
1122+ let eR = gN._2
1123+ let gP = eP(eQ, eR, 0)
1124+ let gg = gP._1
1125+ let eG = gP._2
1126+ $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
11281127 }
11291128 else throw("Strict value is not equal to itself.")
11301129 }
11381137
11391138
11401139 @Callable(dV)
1141-func putForFree (gR) = if ((0 > gR))
1140+func putForFree (gQ) = if ((0 > gQ))
11421141 then throw("Wrong slpg")
11431142 else if ((size(dV.payments) != 2))
11441143 then throw("2 pmnts expd")
11451144 else {
1146- let gS = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gR, false, false, true, 0, "")
1147- let cO = gS._9
1148- let gy = toBigInt(value(dV.payments[0]).amount)
1149- let gz = toBigInt(value(dV.payments[1]).amount)
1150- let eP = eI(gy, gz, toBigInt(0))
1151- if ((eP == eP))
1145+ let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146+ let cO = gR._9
1147+ let gx = toBigInt(value(dV.payments[0]).amount)
1148+ let gy = toBigInt(value(dV.payments[1]).amount)
1149+ let eO = eH(gx, gy, toBigInt(0))
1150+ if ((eO == eO))
11521151 then {
1153- let gT = eQ(0, 0, 0)
1154- let gh = gT._1
1155- let eH = gT._2
1156- let gi = eU(eP, eH)
1157- if ((gi == gi))
1158- then (cO ++ gh)
1152+ let gS = eP(0, 0, 0)
1153+ let gg = gS._1
1154+ let eG = gS._2
1155+ let gh = eT(eO, eG)
1156+ if ((gh == gh))
1157+ then (cO ++ gg)
11591158 else throw("Strict value is not equal to itself.")
11601159 }
11611160 else throw("Strict value is not equal to itself.")
11651164
11661165 @Callable(dV)
11671166 func get () = {
1168- let dk = fg(dV)
1169- let gU = dk._1
1167+ let dk = ff(dV)
1168+ let gT = dk._1
11701169 let cN = dk._2
11711170 let cY = dk._3
11721171 let cs = dk._4
11741173 let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
11751174 if ((ew == ew))
11761175 then {
1177- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1178- let gV = eQ(-(gU), -(cN), 0)
1179- let gh = gV._1
1180- let eH = gV._2
1181- let gi = eU(eP, eH)
1182- if ((gi == gi))
1183- then (cO ++ gh)
1176+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177+ let gU = eP(-(gT), -(cN), 0)
1178+ let gg = gU._1
1179+ let eG = gU._2
1180+ let gh = eT(eO, eG)
1181+ if ((gh == gh))
1182+ then (cO ++ gg)
11841183 else throw("Strict value is not equal to itself.")
11851184 }
11861185 else throw("Strict value is not equal to itself.")
11891188
11901189
11911190 @Callable(dV)
1192-func getOneTknV2 (fJ,fK) = {
1193- let gJ = {
1194- let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1195- if ($isInstanceOf(fS, "Boolean"))
1196- then fS
1197- else throw(($getType(fS) + " couldn't be cast to Boolean"))
1191+func getOneTknV2 (fI,fJ) = {
1192+ let gI = {
1193+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194+ if ($isInstanceOf(fR, "Boolean"))
1195+ then fR
1196+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
11981197 }
1199- let gW = if (if (aP())
1198+ let gV = if (if (aP())
12001199 then true
12011200 else (be == s))
12021201 then true
1203- else gJ
1204- let gL = [if (if (!(gW))
1202+ else gI
1203+ let gK = [if (if (!(gV))
12051204 then true
1206- else gm(dV))
1205+ else gl(dV))
12071206 then true
12081207 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12091208 then true
12101209 else aK("exactly 1 payment are expected")]
1211- if ((gL == gL))
1210+ if ((gK == gK))
12121211 then {
1213- let gX = fI(fJ, fK, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1214- let cO = gX._1
1215- let fU = gX._2
1216- $Tuple2(cO, fU)
1212+ let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213+ let cO = gW._1
1214+ let fT = gW._2
1215+ $Tuple2(cO, fT)
12171216 }
12181217 else throw("Strict value is not equal to itself.")
12191218 }
12221221
12231222 @Callable(dV)
12241223 func refreshDLp () = {
1225- let gY = valueOrElse(getInteger(al), 0)
1226- let gZ = if (((height - gY) >= ao))
1224+ let gX = valueOrElse(getInteger(al), 0)
1225+ let gY = if (((height - gX) >= ao))
12271226 then unit
12281227 else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1229- if ((gZ == gZ))
1228+ if ((gY == gY))
12301229 then {
1231- let fb = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1232- let ha = eQ(0, 0, 0)
1233- let hb = ha._1
1234- let eH = ha._2
1235- let eT = if ((fb != eH))
1236- then hb
1230+ let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231+ let gZ = eP(0, 0, 0)
1232+ let ha = gZ._1
1233+ let eG = gZ._2
1234+ let eS = if ((fa != eG))
1235+ then ha
12371236 else aK("nothing to refresh")
1238- $Tuple2(eT, toString(eH))
1237+ $Tuple2(eS, toString(eG))
12391238 }
12401239 else throw("Strict value is not equal to itself.")
12411240 }
12431242
12441243
12451244 @Callable(dV)
1246-func getOneTknV2READONLY (fJ,hc) = {
1245+func getOneTknV2READONLY (fI,hb) = {
12471246 let ba = aS()
12481247 let cw = ba[w]
12491248 let cx = ba[x]
12511250 let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
12521251 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12531252 let bS = dE(dF)
1254- let bR = (bS - fraction(toBigInt(hc), bS, eF))
1255- let hd = if ((fJ == cw))
1253+ let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254+ let hc = if ((fI == cw))
12561255 then 0
1257- else if ((fJ == cx))
1256+ else if ((fI == cx))
12581257 then 1
12591258 else throw("invalid out asset id")
1260- let he = es(dF, hd, bR)
1261- let hf = (dF[hd] - he)
1262- let hg = max([0, toInt((hf - f))])
1263- let hh = cn(hg)
1264- let fT = hh._1
1265- let cp = hh._2
1266- $Tuple2(nil, $Tuple2(fT, cp))
1259+ let hd = es(dF, hc, bR)
1260+ let he = (dF[hc] - hd)
1261+ let hf = max([0, toInt((he - f))])
1262+ let hg = cn(hf)
1263+ let fS = hg._1
1264+ let cp = hg._2
1265+ $Tuple2(nil, $Tuple2(fS, cp))
12671266 }
12681267
12691268
12701269
12711270 @Callable(dV)
1272-func getOneTknV2WithBonusREADONLY (fJ,hc) = {
1271+func getOneTknV2WithBonusREADONLY (fI,hb) = {
12731272 let ba = aS()
12741273 let cw = ba[w]
12751274 let cx = ba[x]
12761275 let cv = ba[v]
12771276 let cC = bF(cw)
12781277 let cE = bF(cx)
1279- let hi = {
1280- let fS = invoke(this, "getOneTknV2READONLY", [fJ, hc], nil)
1281- if ($isInstanceOf(fS, "(Int, Int)"))
1282- then fS
1283- else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
1278+ let hh = {
1279+ let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280+ if ($isInstanceOf(fR, "(Int, Int)"))
1281+ then fR
1282+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
12841283 }
1285- let fT = hi._1
1286- let cp = hi._2
1287- let dk = cq("", cv, hc, this)
1284+ let fS = hh._1
1285+ let cp = hh._2
1286+ let dk = cq("", cv, hb, this)
12881287 let cM = dk._1
12891288 let cN = dk._2
1290- let hj = (cM + cN)
1291- let fH = if ((hj == 0))
1292- then if ((fT == 0))
1289+ let hi = (cM + cN)
1290+ let fG = if ((hi == 0))
1291+ then if ((fS == 0))
12931292 then 0
12941293 else throw("bonus calculation error")
1295- else fraction((fT - hj), a, hj)
1296- $Tuple2(nil, $Tuple3(fT, cp, fH))
1294+ else fraction((fS - hi), a, hi)
1295+ $Tuple2(nil, $Tuple3(fS, cp, fG))
12971296 }
12981297
12991298
13001299
13011300 @Callable(dV)
1302-func getNoLess (hk,hl) = {
1303- let dk = fg(dV)
1301+func getNoLess (hj,hk) = {
1302+ let dk = ff(dV)
13041303 let cM = dk._1
13051304 let cN = dk._2
13061305 let cY = dk._3
13071306 let cs = dk._4
13081307 let cO = dk._5
1309- if ((hk > cM))
1310- then throw(((("Failed: " + toString(cM)) + " < ") + toString(hk)))
1311- else if ((hl > cN))
1312- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hl)))
1308+ if ((hj > cM))
1309+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310+ else if ((hk > cN))
1311+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
13131312 else {
1314- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1315- let hm = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1316- if ((hm == hm))
1313+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314+ let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315+ if ((hl == hl))
13171316 then {
1318- let hn = eQ(-(cM), -(cN), 0)
1319- let gh = hn._1
1320- let eH = hn._2
1321- let gi = eU(eP, eH)
1322- if ((gi == gi))
1323- then (cO ++ gh)
1317+ let hm = eP(-(cM), -(cN), 0)
1318+ let gg = hm._1
1319+ let eG = hm._2
1320+ let gh = eT(eO, eG)
1321+ if ((gh == gh))
1322+ then (cO ++ gg)
13241323 else throw("Strict value is not equal to itself.")
13251324 }
13261325 else throw("Strict value is not equal to itself.")
13311330
13321331 @Callable(dV)
13331332 func unstakeAndGet (co) = {
1334- let ho = if ((size(dV.payments) != 0))
1333+ let hn = if ((size(dV.payments) != 0))
13351334 then throw("No pmnts expd")
13361335 else true
1337- if ((ho == ho))
1336+ if ((hn == hn))
13381337 then {
13391338 let ce = aS()
1340- let hp = bk()
1341- let gB = fromBase58String(ce[v])
1342- let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1343- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1344- let hr = invoke(hq, "unstake", [toBase58String(gB), co], nil)
1345- if ((hr == hr))
1339+ let ho = bk()
1340+ let gA = fromBase58String(ce[v])
1341+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343+ let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344+ if ((hq == hq))
13461345 then {
1347- let dk = cq(toBase58String(dV.transactionId), toBase58String(gB), co, dV.caller)
1346+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
13481347 let cM = dk._1
13491348 let cN = dk._2
13501349 let cA = parseIntValue(dk._9)
13511350 let cO = dk._10
1352- let hs = if (if (aP())
1351+ let hr = if (if (aP())
13531352 then true
13541353 else (cA == s))
13551354 then throw(("Blocked: " + toString(cA)))
13561355 else true
1357- if ((hs == hs))
1356+ if ((hr == hr))
13581357 then {
1359- let ht = invoke(aN, "burn", [co], [AttachedPayment(gB, co)])
1360- if ((ht == ht))
1358+ let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359+ if ((hs == hs))
13611360 then {
1362- let hu = eQ(-(cM), -(cN), 0)
1363- let gh = hu._1
1364- let eH = hu._2
1365- let gi = eU(eP, eH)
1366- if ((gi == gi))
1367- then (cO ++ gh)
1361+ let ht = eP(-(cM), -(cN), 0)
1362+ let gg = ht._1
1363+ let eG = ht._2
1364+ let gh = eT(eO, eG)
1365+ if ((gh == gh))
1366+ then (cO ++ gg)
13681367 else throw("Strict value is not equal to itself.")
13691368 }
13701369 else throw("Strict value is not equal to itself.")
13791378
13801379
13811380 @Callable(dV)
1382-func unstakeAndGetNoLess (hv,hw,hl) = {
1383- let gW = if (aP())
1381+func unstakeAndGetNoLess (hu,hv,hk) = {
1382+ let gV = if (aP())
13841383 then true
13851384 else (be == s)
1386- let gL = [if (!(gW))
1385+ let gK = [if (!(gV))
13871386 then true
13881387 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13891388 then true
13901389 else throw("no payments are expected")]
1391- if ((gL == gL))
1390+ if ((gK == gK))
13921391 then {
1393- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1394- let hr = invoke(bm, "unstake", [toBase58String(bf), hv], nil)
1395- if ((hr == hr))
1392+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393+ let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394+ if ((hq == hq))
13961395 then {
1397- let hx = cq(toBase58String(dV.transactionId), toBase58String(bf), hv, dV.caller)
1398- let cM = hx._1
1399- let cN = hx._2
1400- let cO = hx._10
1401- let hy = [if ((cM >= hw))
1396+ let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397+ let cM = hw._1
1398+ let cN = hw._2
1399+ let cO = hw._10
1400+ let hx = [if ((cM >= hv))
14021401 then true
1403- else throw(makeString(["amount asset amount to receive is less than ", toString(hw)], "")), if ((cN >= hl))
1402+ else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
14041403 then true
1405- else throw(makeString(["price asset amount to receive is less than ", toString(hl)], ""))]
1406- if ((hy == hy))
1404+ else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405+ if ((hx == hx))
14071406 then {
1408- let hm = invoke(aN, "burn", [hv], [AttachedPayment(bf, hv)])
1409- if ((hm == hm))
1407+ let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408+ if ((hl == hl))
14101409 then {
1411- let hz = eQ(-(cM), -(cN), 0)
1412- let gh = hz._1
1413- let eH = hz._2
1414- let gi = eU(eP, eH)
1415- if ((gi == gi))
1416- then (cO ++ gh)
1410+ let hy = eP(-(cM), -(cN), 0)
1411+ let gg = hy._1
1412+ let eG = hy._2
1413+ let gh = eT(eO, eG)
1414+ if ((gh == gh))
1415+ then (cO ++ gg)
14171416 else throw("Strict value is not equal to itself.")
14181417 }
14191418 else throw("Strict value is not equal to itself.")
14281427
14291428
14301429 @Callable(dV)
1431-func unstakeAndGetOneTknV2 (hv,fJ,fK) = {
1432- let gJ = {
1433- let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1434- if ($isInstanceOf(fS, "Boolean"))
1435- then fS
1436- else throw(($getType(fS) + " couldn't be cast to Boolean"))
1430+func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431+ let gI = {
1432+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433+ if ($isInstanceOf(fR, "Boolean"))
1434+ then fR
1435+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
14371436 }
1438- let gW = if (if (aP())
1437+ let gV = if (if (aP())
14391438 then true
14401439 else (be == s))
14411440 then true
1442- else gJ
1443- let gL = [if (if (!(gW))
1441+ else gI
1442+ let gK = [if (if (!(gV))
14441443 then true
1445- else gm(dV))
1444+ else gl(dV))
14461445 then true
14471446 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14481447 then true
14491448 else aK("no payments are expected")]
1450- if ((gL == gL))
1449+ if ((gK == gK))
14511450 then {
14521451 let ce = aS()
1453- let hp = bk()
1454- let gB = fromBase58String(ce[v])
1455- let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1456- let hr = invoke(hq, "unstake", [toBase58String(gB), hv], nil)
1457- if ((hr == hr))
1452+ let ho = bk()
1453+ let gA = fromBase58String(ce[v])
1454+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455+ let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456+ if ((hq == hq))
14581457 then {
1459- let hA = fI(fJ, fK, [AttachedPayment(gB, hv)], dV.caller, dV.originCaller, dV.transactionId)
1460- let cO = hA._1
1461- let fU = hA._2
1462- $Tuple2(cO, fU)
1458+ let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459+ let cO = hz._1
1460+ let fT = hz._2
1461+ $Tuple2(cO, fT)
14631462 }
14641463 else throw("Strict value is not equal to itself.")
14651464 }
14691468
14701469
14711470 @Callable(dV)
1472-func putOneTknV2WithBonusREADONLY (hB,hC) = {
1471+func putOneTknV2WithBonusREADONLY (hA,hB) = {
14731472 let ba = aS()
14741473 let cw = ba[w]
14751474 let cx = ba[x]
14761475 let cv = ba[v]
1477- let hD = fm(hB, hC, "", "", true)
1478- let fC = hD._1
1479- let cO = hD._2
1480- let cp = hD._3
1481- let fH = hD._4
1482- $Tuple2(nil, $Tuple3(fC, cp, fH))
1476+ let hC = fl(hA, hB, "", "", true)
1477+ let fB = hC._1
1478+ let cO = hC._2
1479+ let cp = hC._3
1480+ let fG = hC._4
1481+ $Tuple2(nil, $Tuple3(fB, cp, fG))
14831482 }
14841483
14851484
14861485
14871486 @Callable(dV)
1488-func putOneTknV2WithoutTakeFeeREADONLY (hB,hC) = {
1487+func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
14891488 let ba = aS()
14901489 let cw = ba[w]
14911490 let cx = ba[x]
14921491 let cv = ba[v]
1493- let hE = fm(hB, hC, "", "", false)
1494- let fC = hE._1
1495- let cO = hE._2
1496- let cp = hE._3
1497- let fH = hE._4
1498- $Tuple2(nil, $Tuple3(fC, cp, fH))
1492+ let hD = fl(hA, hB, "", "", false)
1493+ let fB = hD._1
1494+ let cO = hD._2
1495+ let cp = hD._3
1496+ let fG = hD._4
1497+ $Tuple2(nil, $Tuple3(fB, cp, fG))
14991498 }
15001499
15011500
15021501
15031502 @Callable(dV)
1504-func activate (hF,hG) = if ((toString(dV.caller) != toString(aN)))
1503+func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
15051504 then throw("denied")
1506- else $Tuple2([StringEntry(ae(), hF), StringEntry(af(), hG)], "success")
1505+ else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
15071506
15081507
15091508
15101509 @Callable(dV)
1511-func setS (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1512- then gl
1513- else [StringEntry(hH, hs)]
1510+func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511+ then gk
1512+ else [StringEntry(hG, hr)]
15141513
15151514
15161515
15171516 @Callable(dV)
1518-func setI (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1519- then gl
1520- else [IntegerEntry(hH, hs)]
1517+func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518+ then gk
1519+ else [IntegerEntry(hG, hr)]
15211520
15221521
15231522
15331532
15341533 @Callable(dV)
15351534 func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1536- let hI = cc(bY, bZ, cd)
1537- $Tuple2(nil, [toString(hI[0]), toString(hI[1]), toString(hI[2])])
1535+ let hH = cc(bY, bZ, cd)
1536+ $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
15381537 }
15391538
15401539
15411540
15421541 @Callable(dV)
1543-func fromX18WrapperREADONLY (L,hJ) = $Tuple2(nil, K(parseBigIntValue(L), hJ))
1542+func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
15441543
15451544
15461545
15551554
15561555
15571556 @Callable(dV)
1558-func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hK,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hK, cU, cV, true, false, 0, ""))
1557+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
15591558
15601559
15611560
15621561 @Callable(dV)
1563-func estimateGetOperationWrapperREADONLY (cr,hL,ct,hK) = {
1564- let dk = cq(cr, hL, ct, addressFromStringValue(hK))
1562+func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563+ let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
15651564 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15661565 }
15671566
15711570 func getFeeREADONLY () = $Tuple2(nil, aj)
15721571
15731572
1574-@Verifier(hM)
1575-func hN () = {
1576- let hO = {
1577- let aE = gj()
1573+@Verifier(hL)
1574+func hM () = {
1575+ let hN = {
1576+ let aE = gi()
15781577 if ($isInstanceOf(aE, "ByteVector"))
15791578 then {
1580- let gn = aE
1581- gn
1579+ let gm = aE
1580+ gm
15821581 }
15831582 else if ($isInstanceOf(aE, "Unit"))
1584- then hM.senderPublicKey
1583+ then hL.senderPublicKey
15851584 else throw("Match error")
15861585 }
1587- let aE = hM
1586+ let aE = hL
15881587 if ($isInstanceOf(aE, "Order"))
15891588 then {
1590- let eX = aE
1591- let hP = aQ()
1592- let hQ = eW(eX)
1593- let hR = sigVerify(eX.bodyBytes, eX.proofs[0], eX.senderPublicKey)
1594- let hS = sigVerify(eX.bodyBytes, eX.proofs[1], hP)
1595- if (if (if (hQ)
1589+ let eW = aE
1590+ let hO = aQ()
1591+ let hP = eV(eW)
1592+ let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593+ let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594+ if (if (if (hP)
1595+ then hQ
1596+ else false)
15961597 then hR
15971598 else false)
1598- then hS
1599- else false)
16001599 then true
1601- else az(hQ, hR, hS)
1600+ else az(hP, hQ, hR)
16021601 }
16031602 else if ($isInstanceOf(aE, "SetScriptTransaction"))
16041603 then {
16051604 let dI = aE
1606- let hT = blake2b256(value(dI.script))
1607- let hU = fromBase64String(value(getString(aN, ax())))
1608- let hV = scriptHash(this)
1609- if (if ((hU == hT))
1610- then (hV != hT)
1605+ let hS = blake2b256(value(dI.script))
1606+ let hT = fromBase64String(value(getString(aN, ax())))
1607+ let hU = scriptHash(this)
1608+ if (if ((hT == hS))
1609+ then (hU != hS)
16111610 else false)
16121611 then true
1613- else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
1612+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16141613 }
1615- else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
1614+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16161615 }
16171616
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
1818 let h = toBigInt(3)
1919
2020 let i = toBigInt(4)
2121
2222 let j = toBigInt((a - ((a * 1) / a)))
2323
2424 let k = "WAVES"
2525
2626 let l = "100"
2727
2828 let m = "1"
2929
3030 let n = "__"
3131
3232 let o = ""
3333
3434 let p = 1
3535
3636 let q = 2
3737
3838 let r = 3
3939
4040 let s = 4
4141
4242 let t = 1
4343
4444 let u = 2
4545
4646 let v = 3
4747
4848 let w = 4
4949
5050 let x = 5
5151
5252 let y = 6
5353
5454 let z = 7
5555
5656 let A = 8
5757
5858 let B = 9
5959
6060 let C = 1
6161
6262 let D = 6
6363
6464 let E = 7
6565
6666 let F = 10
6767
6868 let G = fraction(10, a, 10000)
6969
7070 func H (I,J) = fraction(toBigInt(I), c, toBigInt(J))
7171
7272
7373 func K (L,M) = toInt(fraction(L, toBigInt(M), c))
7474
7575
7676 func N (O,P,Q) = fraction(O, P, Q)
7777
7878
7979 func R (L) = if ((d > L))
8080 then -(L)
8181 else L
8282
8383
8484 func S (L) = if ((d > L))
8585 then -(L)
8686 else L
8787
8888
8989 func T () = "%s__factoryContract"
9090
9191
9292 func U () = "%s__managerPublicKey"
9393
9494
9595 func V () = "%s__pendingManagerPublicKey"
9696
9797
9898 func W () = "%s%s__price__last"
9999
100100
101101 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], n)
102102
103103
104104 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
105105
106106
107107 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
108108
109109
110110 func ae () = "%s__amountAsset"
111111
112112
113113 func af () = "%s__priceAsset"
114114
115115
116116 func ag () = "%s__amp"
117117
118118
119119 func ah () = "%s__addonAddr"
120120
121121
122122 let ai = "%s__fee"
123123
124124 let aj = valueOrElse(getInteger(this, ai), G)
125125
126126 let ak = makeString(["%s", "dLp"], n)
127127
128128 let al = makeString(["%s", "dLpRefreshedHeight"], n)
129129
130130 let am = makeString(["%s", "refreshDLpDelay"], n)
131131
132132 let an = 1
133133
134134 let ao = valueOrElse(getInteger(this, am), an)
135135
136136 func ap () = "%s__factoryConfig"
137137
138138
139139 func aq () = "%s%s__matcher__publicKey"
140140
141141
142142 func ar (as,at) = (((("%d%d%s__" + as) + "__") + at) + "__config")
143143
144144
145145 func au (av) = ("%s%s%s__mappings__baseAsset2internalId__" + av)
146146
147147
148148 func aw () = "%s__shutdown"
149149
150150
151151 func ax () = "%s__allowedLpStableScriptHash"
152152
153153
154154 func ay () = "%s__feeCollectorAddress"
155155
156156
157157 func az (aA,aB,aC) = throw(((((("Failed: ordValid=" + toString(aA)) + " sndrValid=") + toString(aB)) + " mtchrValid=") + toString(aC)))
158158
159159
160160 func aD (L) = {
161161 let aE = L
162162 if ($isInstanceOf(aE, "String"))
163163 then {
164164 let aF = aE
165165 aF
166166 }
167167 else throw("fail cast to String")
168168 }
169169
170170
171171 func aG (aH,aI) = valueOrErrorMessage(getString(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
172172
173173
174174 func aJ (aH,aI) = valueOrErrorMessage(getInteger(aH, aI), makeString(["mandatory ", toString(aH), ".", aI, " not defined"], ""))
175175
176176
177177 func aK (aL) = throw(makeString(["lp_stable.ride:", aL], " "))
178178
179179
180180 func aM (aL) = makeString(["lp_stable.ride:", aL], " ")
181181
182182
183183 let aN = addressFromStringValue(aG(this, T()))
184184
185185 let aO = aG(this, ag())
186186
187187 func aP () = valueOrElse(getBoolean(aN, aw()), false)
188188
189189
190190 func aQ () = fromBase58String(aG(aN, aq()))
191191
192192
193193 let aR = addressFromStringValue(aG(aN, ay()))
194194
195195 func aS () = {
196196 let aT = aG(this, ae())
197197 let aU = aG(this, af())
198198 let aV = aJ(aN, au(aU))
199199 let as = aJ(aN, au(aT))
200200 split(aG(aN, ar(toString(as), toString(aV))), n)
201201 }
202202
203203
204204 func aW (aX) = if ((aX == k))
205205 then unit
206206 else fromBase58String(aX)
207207
208208
209209 func aY (aX) = if ((aX == unit))
210210 then k
211211 else toBase58String(value(aX))
212212
213213
214214 func aZ (ba) = $Tuple7(addressFromStringValue(ba[t]), parseIntValue(ba[u]), fromBase58String(ba[v]), aW(ba[w]), aW(ba[x]), parseIntValue(ba[y]), parseIntValue(ba[z]))
215215
216216
217217 let bb = aZ(aS())
218218
219219 let bc = bb
220220
221221 let bd = bc._1
222222
223223 let be = bc._2
224224
225225 let bf = bc._3
226226
227227 let bg = bc._4
228228
229229 let bh = bc._5
230230
231231 let bi = bc._6
232232
233233 let bj = bc._7
234234
235235 func bk () = split(aG(aN, ap()), n)
236236
237237
238238 let bl = bk()
239239
240240 let bm = valueOrErrorMessage(addressFromString(bl[C]), "Invalid staking contract address")
241241
242242 let bn = valueOrErrorMessage(addressFromString(bl[E]), "Invalid slipage contract address")
243243
244244 let bo = valueOrErrorMessage(addressFromString(bl[F]), "Invalid gwx contract address")
245245
246246 let bp = valueOrErrorMessage(addressFromString(bl[D]), "Invalid gwx contract address")
247247
248248 func bq (br,bs,bt,bu,bv,bw,bx,by,bz,bA) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA)], n)
249249
250250
251251 func bB (bC,bD,bE,bu,bx,by) = makeString(["%d%d%d%d%d%d", toString(bC), toString(bD), toString(bE), toString(bu), toString(bx), toString(by)], n)
252252
253253
254254 func bF (bG) = if ((bG == "WAVES"))
255255 then wavesBalance(this).available
256256 else assetBalance(this, fromBase58String(bG))
257257
258258
259259 func bH (bI,bJ) = fraction(bI, c, bJ)
260260
261261
262262 func bK (bL,bM,bN) = {
263263 let bO = fraction((bL - bM), b, bM)
264264 let bP = ((bN - R(bO)) > d)
265265 if (!(bP))
266266 then throw(("Big slpg: " + toString(bO)))
267267 else $Tuple2(bP, min([bL, bM]))
268268 }
269269
270270
271271 func bQ (bR,bS,bT) = {
272272 let bO = fraction(bS, b, bR)
273273 let bU = (bT > bO)
274274 if (if (bU)
275275 then true
276276 else (bS > bR))
277277 then throw(((((((toString(bS) + " ") + toString(bR)) + " ") + toString(bO)) + " ") + toString(bT)))
278278 else bU
279279 }
280280
281281
282282 func bV (bW,bX,bY,bZ) = {
283283 let ca = H(bY, bW)
284284 let cb = H(bZ, bX)
285285 bH(cb, ca)
286286 }
287287
288288
289289 func cc (bY,bZ,cd) = {
290290 let ce = aS()
291291 let cf = parseIntValue(ce[y])
292292 let cg = parseIntValue(ce[z])
293293 let ch = bV(cf, cg, bY, bZ)
294294 let bJ = H(bY, cf)
295295 let bI = H(bZ, cg)
296296 let ci = H(cd, a)
297297 let cj = bH(bJ, ci)
298298 let ck = bH(bI, ci)
299299 [ch, cj, ck]
300300 }
301301
302302
303303 func cl (bY,bZ,cd) = {
304304 let cm = cc(bY, bZ, cd)
305305 [K(cm[0], a), K(cm[1], a), K(cm[2], a)]
306306 }
307307
308308
309309 func cn (co) = {
310310 let cp = fraction(co, aj, a)
311311 $Tuple2((co - cp), cp)
312312 }
313313
314314
315315 func cq (cr,cs,ct,cu) = {
316316 let ce = aS()
317317 let cv = ce[v]
318318 let cw = ce[w]
319319 let cx = ce[x]
320320 let cy = parseIntValue(ce[y])
321321 let cz = parseIntValue(ce[z])
322322 let cA = ce[u]
323323 let cB = valueOrErrorMessage(assetInfo(fromBase58String(cv)), "Wrong LP id").quantity
324324 if ((cv != cs))
325325 then throw("Wrong pmt asset")
326326 else {
327327 let cC = bF(cw)
328328 let cD = H(cC, cy)
329329 let cE = bF(cx)
330330 let cF = H(cE, cz)
331331 let cG = bH(cF, cD)
332332 let cH = K(cG, a)
333333 let cI = H(ct, a)
334334 let cJ = H(cB, a)
335335 let cK = fraction(cD, cI, cJ)
336336 let cL = fraction(cF, cI, cJ)
337337 let cM = K(cK, cy)
338338 let cN = K(cL, cz)
339339 let cO = if ((cr == ""))
340340 then nil
341341 else [ScriptTransfer(cu, cM, if ((cw == "WAVES"))
342342 then unit
343343 else fromBase58String(cw)), ScriptTransfer(cu, cN, if ((cx == "WAVES"))
344344 then unit
345345 else fromBase58String(cx)), StringEntry(ad(toString(cu), cr), bB(cM, cN, ct, cH, height, lastBlock.timestamp)), IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH)]
346346 $Tuple10(cM, cN, cw, cx, cC, cE, cB, cG, cA, cO)
347347 }
348348 }
349349
350350
351351 func cP (cr,bN,cQ,cR,cS,cT,cu,cU,cV,cW,cX,cY,cZ) = {
352352 let ce = aS()
353353 let cv = fromBase58String(ce[v])
354354 let da = ce[w]
355355 let db = ce[x]
356356 let dc = ce[A]
357357 let dd = ce[B]
358358 let de = parseIntValue(ce[y])
359359 let df = parseIntValue(ce[z])
360360 let cA = ce[u]
361361 let dg = valueOrErrorMessage(assetInfo(cv), "Wr lp as").quantity
362362 let cC = if (cU)
363363 then bF(da)
364364 else if (if (cW)
365365 then (cZ == da)
366366 else false)
367367 then (bF(da) - cY)
368368 else if (cW)
369369 then bF(da)
370370 else (bF(da) - cQ)
371371 let cE = if (cU)
372372 then bF(db)
373373 else if (if (cW)
374374 then (cZ == db)
375375 else false)
376376 then (bF(db) - cY)
377377 else if (cW)
378378 then bF(db)
379379 else (bF(db) - cS)
380380 let dh = H(cQ, de)
381381 let di = H(cS, df)
382382 let dj = bH(di, dh)
383383 let cD = H(cC, de)
384384 let cF = H(cE, df)
385385 let dk = if ((dg == 0))
386386 then {
387387 let cG = d
388388 let dl = d
389389 let ci = pow((dh * di), 0, toBigInt(5), 1, 0, DOWN)
390390 $Tuple5(K(ci, a), K(dh, de), K(di, df), bH((cF + di), (cD + dh)), dl)
391391 }
392392 else {
393393 let cG = bH(cF, cD)
394394 let dm = fraction(R((cG - dj)), c, cG)
395395 let dl = H(bN, a)
396396 if (if (if (cX)
397397 then (cG != d)
398398 else false)
399399 then (dm > dl)
400400 else false)
401401 then throw(((("Price slippage " + toString(dm)) + " > ") + toString(dl)))
402402 else {
403403 let dn = H(dg, a)
404404 let do = fraction(dh, cG, c)
405405 let dp = fraction(di, c, cG)
406406 let dq = if ((do > di))
407407 then $Tuple2(dp, di)
408408 else $Tuple2(dh, do)
409409 let dr = dq._1
410410 let ds = dq._2
411411 let ci = fraction(dn, ds, cF)
412412 $Tuple5(K(ci, a), K(dr, de), K(ds, df), cG, dl)
413413 }
414414 }
415415 let dt = dk._1
416416 let du = dk._2
417417 let dv = dk._3
418418 let cH = K(dk._4, a)
419419 let dw = K(dk._5, a)
420420 if ((0 >= dt))
421421 then throw("LP <= 0")
422422 else {
423423 let dx = if (!(cV))
424424 then 0
425425 else dt
426426 let dy = (cQ - du)
427427 let dz = (cS - dv)
428428 let dA = if (if (cW)
429429 then (cZ == da)
430430 else false)
431431 then $Tuple2(cY, 0)
432432 else if (if (cW)
433433 then (cZ == db)
434434 else false)
435435 then $Tuple2(0, cY)
436436 else $Tuple2(du, dv)
437437 let dB = dA._1
438438 let dC = dA._2
439439 let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, cr), bq(dB, dC, dx, cH, bN, dw, height, lastBlock.timestamp, dy, dz))]
440440 $Tuple13(dt, dx, cH, cC, cE, dg, cv, cA, dD, dy, dz, cR, cT)
441441 }
442442 }
443443
444444
445445 func dE (dF) = {
446446 let dG = dF[0]
447447 let dH = dF[1]
448448 let dI = (dG + dH)
449449 if ((dI == e))
450450 then e
451451 else {
452452 let dJ = parseIntValue(aO)
453453 let dK = (dJ * 2)
454454 let cm = fraction(dG, dH, f)
455455 let dL = fraction(cm, i, f)
456456 let dM = fraction(toBigInt(dK), dI, f)
457457 let dN = toBigInt((dK - 1))
458458 func dO (dP) = {
459459 let dQ = fraction(dP, dP, f)
460460 let dR = fraction(dQ, dP, f)
461461 let dS = fraction(dR, f, dL)
462462 fraction((dM + fraction(dS, g, f)), dP, (fraction(dN, dP, f) + fraction(h, dS, f)))
463463 }
464464
465465 func dT (dU,dV) = if (dU._2)
466466 then dU
467467 else {
468468 let dP = dU._1
469469 let dW = dO(dP)
470470 let dX = toInt((dW - value(dP)))
471471 let dY = if ((0 > dX))
472472 then -(dX)
473473 else dX
474474 if ((1 >= dY))
475475 then $Tuple2(dW, true)
476476 else $Tuple2(dW, false)
477477 }
478478
479479 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
480480 let ea = {
481481 let eb = dZ
482482 let ec = size(eb)
483483 let ed = $Tuple2(dI, false)
484484 func ee (ef,eg) = if ((eg >= ec))
485485 then ef
486486 else dT(ef, eb[eg])
487487
488488 func eh (ef,eg) = if ((eg >= ec))
489489 then ef
490490 else throw("List size exceeds 15")
491491
492492 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
493493 }
494494 let dP = ea._1
495495 let ei = ea._2
496496 if (ei)
497497 then dP
498498 else throw(("D calculation error, D = " + toString(dP)))
499499 }
500500 }
501501
502502
503503 func ej (dF) = {
504504 let ek = g
505505 let dG = dF[0]
506506 let dH = dF[1]
507507 let el = parseBigIntValue(l)
508508 let dJ = (parseBigIntValue(aO) * el)
509509 let dI = (dG + dH)
510510 if ((dI == e))
511511 then e
512512 else {
513513 let dK = (dJ * ek)
514514 let dL = (((dG * dH) * ek) * ek)
515515 let em = ((dK * dI) / el)
516516 let en = (dK - el)
517517 let eo = (ek + f)
518518 func dT (dU,ep) = {
519519 let eq = dU
520520 let dP = eq._1
521521 let ei = eq._2
522522 if ((ei != unit))
523523 then dU
524524 else {
525525 let dS = (((dP * dP) * dP) / dL)
526526 let dW = (((em + (dS * ek)) * dP) / (((en * dP) / el) + (eo * dS)))
527527 let dY = S((dW - value(dP)))
528528 if ((f >= dY))
529529 then $Tuple2(dW, ep)
530530 else $Tuple2(dW, unit)
531531 }
532532 }
533533
534534 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
535535 let er = {
536536 let eb = dZ
537537 let ec = size(eb)
538538 let ed = $Tuple2(dI, unit)
539539 func ee (ef,eg) = if ((eg >= ec))
540540 then ef
541541 else dT(ef, eb[eg])
542542
543543 func eh (ef,eg) = if ((eg >= ec))
544544 then ef
545545 else throw("List size exceeds 15")
546546
547547 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
548548 }
549549 let dP = er._1
550550 let ei = er._2
551551 if ((ei != unit))
552552 then dP
553553 else throw(("D calculation error, D = " + toString(dP)))
554554 }
555555 }
556556
557557
558558 func es (dF,dV,et) = {
559559 let ek = g
560560 let eu = dF[if ((dV == 0))
561561 then 1
562562 else 0]
563563 let el = parseBigIntValue(l)
564564 let dJ = (parseBigIntValue(aO) * el)
565565 let dI = eu
566566 let dK = (dJ * ek)
567567 let ev = (((((et * et) / (eu * ek)) * et) * el) / (dK * ek))
568568 let ew = ((dI + ((et * el) / dK)) - et)
569569 func dT (dU,ep) = {
570570 let ex = dU
571571 let ey = ex._1
572572 let ei = ex._2
573573 if ((ei != unit))
574574 then dU
575575 else {
576576 let ez = (((ey * ey) + ev) / ((g * ey) + ew))
577577 let eA = S((ez - value(ey)))
578578 if ((f >= eA))
579579 then $Tuple2(ez, ep)
580580 else $Tuple2(ez, unit)
581581 }
582582 }
583583
584584 let dZ = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
585585 let eB = {
586586 let eb = dZ
587587 let ec = size(eb)
588588 let ed = $Tuple2(et, unit)
589589 func ee (ef,eg) = if ((eg >= ec))
590590 then ef
591591 else dT(ef, eb[eg])
592592
593593 func eh (ef,eg) = if ((eg >= ec))
594594 then ef
595595 else throw("List size exceeds 15")
596596
597597 eh(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ee(ed, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
598598 }
599599 let ey = eB._1
600600 let ei = eB._2
601601 if ((ei != unit))
602602 then ey
603603 else throw(("Y calculation error, Y = " + toString(ey)))
604604 }
605605
606606
607607 func eC (eD,eE,eF) = {
608- let eG = toBigInt(1000000000000)
609- let eH = fraction(dE([eD, eE]), eG, eF)
608+ let eG = fraction(dE([eD, eE]), c, eF)
610609 if ((eF == e))
611610 then e
612- else eH
611+ else eG
613612 }
614613
615614
616-func eI (eJ,eK,eL) = {
617- let eM = (toBigInt(bF(aY(bg))) - eJ)
618- let eN = (toBigInt(bF(aY(bh))) - eK)
619- let eO = (toBigInt(value(assetInfo(bf)).quantity) - eL)
620- let eP = eC(eM, eN, eO)
621- eP
615+func eH (eI,eJ,eK) = {
616+ let eL = (toBigInt(bF(aY(bg))) - eI)
617+ let eM = (toBigInt(bF(aY(bh))) - eJ)
618+ let eN = (toBigInt(value(assetInfo(bf)).quantity) - eK)
619+ let eO = eC(eL, eM, eN)
620+ eO
622621 }
623622
624623
625-func eQ (eR,eS,eL) = {
626- let eM = (bF(aY(bg)) + eR)
627- let eN = (bF(aY(bh)) + eS)
628- let eO = (value(assetInfo(bf)).quantity + eL)
629- let eH = eC(toBigInt(eM), toBigInt(eN), toBigInt(eO))
630- let eT = [IntegerEntry(al, height), StringEntry(ak, toString(eH))]
631- $Tuple2(eT, eH)
624+func eP (eQ,eR,eK) = {
625+ let eL = (bF(aY(bg)) + eQ)
626+ let eM = (bF(aY(bh)) + eR)
627+ let eN = (value(assetInfo(bf)).quantity + eK)
628+ let eG = eC(toBigInt(eL), toBigInt(eM), toBigInt(eN))
629+ let eS = [IntegerEntry(al, height), StringEntry(ak, toString(eG))]
630+ $Tuple2(eS, eG)
632631 }
633632
634633
635-func eU (eV,eH) = if ((eH >= eV))
634+func eT (eU,eG) = if ((eG >= eU))
636635 then true
637636 else aK("updated DLp lower than current DLp")
638637
639638
640-func eW (eX) = {
641- let eY = eX.amount
642- let eZ = fraction(eX.amount, eX.price, a, FLOOR)
643- let fa = if ((eX.orderType == Buy))
644- then $Tuple2(eY, -(eZ))
645- else $Tuple2(-(eY), eZ)
646- let eR = fa._1
647- let eS = fa._2
639+func eV (eW) = {
640+ let eX = eW.amount
641+ let eY = fraction(eW.amount, eW.price, a, FLOOR)
642+ let eZ = if ((eW.orderType == Buy))
643+ then $Tuple2(eX, -(eY))
644+ else $Tuple2(-(eX), eY)
645+ let eQ = eZ._1
646+ let eR = eZ._2
648647 if (if (if (aP())
649648 then true
650649 else (be == r))
651650 then true
652651 else (be == s))
653652 then throw("Admin blocked")
654- else if (if ((eX.assetPair.amountAsset != bg))
653+ else if (if ((eW.assetPair.amountAsset != bg))
655654 then true
656- else (eX.assetPair.priceAsset != bh))
655+ else (eW.assetPair.priceAsset != bh))
657656 then throw("Wr assets")
658657 else {
659- let fb = parseBigIntValue(getStringValue(this, ak))
660- let fc = eQ(eR, eS, 0)
661- let fd = fc._1
662- let fe = fc._2
663- let ff = (fe >= fb)
664- ff
658+ let fa = parseBigIntValue(getStringValue(this, ak))
659+ let fb = eP(eQ, eR, 0)
660+ let fc = fb._1
661+ let fd = fb._2
662+ let fe = (fd >= fa)
663+ fe
665664 }
666665 }
667666
668667
669-func fg (dV) = if ((size(dV.payments) != 1))
668+func ff (dV) = if ((size(dV.payments) != 1))
670669 then throw("1 pmnt exp")
671670 else {
672- let fh = value(dV.payments[0])
673- let cs = value(fh.assetId)
674- let cY = fh.amount
671+ let fg = value(dV.payments[0])
672+ let cs = value(fg.assetId)
673+ let cY = fg.amount
675674 let dk = cq(toBase58String(dV.transactionId), toBase58String(cs), cY, dV.caller)
676675 let cM = dk._1
677676 let cN = dk._2
678677 let cA = parseIntValue(dk._9)
679678 let cO = dk._10
680679 if (if (aP())
681680 then true
682681 else (cA == s))
683682 then throw(("Admin blocked: " + toString(cA)))
684683 else $Tuple5(cM, cN, cY, cs, cO)
685684 }
686685
687686
688-func fi (fj,ac,fk,fl,bN,cV,cW,cX,cY,cZ) = {
689- let dk = cP(ac, bN, value(fk).amount, value(fk).assetId, value(fl).amount, value(fl).assetId, fj, (ac == ""), cV, cW, cX, cY, cZ)
687+func fh (fi,ac,fj,fk,bN,cV,cW,cX,cY,cZ) = {
688+ let dk = cP(ac, bN, value(fj).amount, value(fj).assetId, value(fk).amount, value(fk).assetId, fi, (ac == ""), cV, cW, cX, cY, cZ)
690689 let cA = parseIntValue(dk._8)
691690 if (if (if (aP())
692691 then true
693692 else (cA == q))
694693 then true
695694 else (cA == s))
696695 then throw(("Blocked:" + toString(cA)))
697696 else dk
698697 }
699698
700699
701-func fm (fn,cs,cu,ac,fo) = {
700+func fl (fm,cs,cu,ac,fn) = {
702701 let ba = aS()
703702 let cw = ba[w]
704703 let cx = ba[x]
705704 let cv = ba[v]
706705 let de = parseIntValue(ba[y])
707706 let df = parseIntValue(ba[z])
708- let eO = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
709- let fp = if ((eO > e))
707+ let eN = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
708+ let fo = if ((eN > e))
710709 then true
711710 else throw("initial deposit requires all coins")
712- if ((fp == fp))
711+ if ((fo == fo))
713712 then {
714713 let cC = bF(cw)
715714 let cE = bF(cx)
716- let fq = if ((ac == ""))
715+ let fp = if ((ac == ""))
717716 then $Tuple2(cC, cE)
718717 else if ((cs == cw))
719- then if ((fn > cC))
718+ then if ((fm > cC))
720719 then throw("invalid payment amount")
721- else $Tuple2((cC - fn), cE)
720+ else $Tuple2((cC - fm), cE)
722721 else if ((cs == cx))
723- then if ((fn > cE))
722+ then if ((fm > cE))
724723 then throw("invalid payment amount")
725- else $Tuple2(cC, (cE - fn))
724+ else $Tuple2(cC, (cE - fm))
726725 else throw("wrong pmtAssetId")
727- let fr = fq._1
728- let fs = fq._2
729- let ft = if ((cs == cw))
730- then $Tuple2(fn, 0)
726+ let fq = fp._1
727+ let fr = fp._2
728+ let fs = if ((cs == cw))
729+ then $Tuple2(fm, 0)
731730 else if ((cs == cx))
732- then $Tuple2(0, fn)
731+ then $Tuple2(0, fm)
733732 else throw("invalid payment")
734- let fu = ft._1
735- let fv = ft._2
736- let fw = if (fo)
737- then $Tuple3(cn(fu)._1, cn(fv)._1, cn(fn)._2)
738- else $Tuple3(fu, fv, 0)
739- let fx = fw._1
740- let fy = fw._2
741- let cp = fw._3
733+ let ft = fs._1
734+ let fu = fs._2
735+ let fv = if (fn)
736+ then $Tuple3(cn(ft)._1, cn(fu)._1, cn(fm)._2)
737+ else $Tuple3(ft, fu, 0)
738+ let fw = fv._1
739+ let fx = fv._2
740+ let cp = fv._3
741+ let fy = (fq + fw)
742742 let fz = (fr + fx)
743- let fA = (fs + fy)
744- let bS = dE([toBigInt(fr), toBigInt(fs)])
745- let bR = dE([toBigInt(fz), toBigInt(fA)])
746- let fB = if ((bR > bS))
743+ let bS = dE([toBigInt(fq), toBigInt(fr)])
744+ let bR = dE([toBigInt(fy), toBigInt(fz)])
745+ let fA = if ((bR > bS))
747746 then true
748747 else throw()
749- if ((fB == fB))
748+ if ((fA == fA))
750749 then {
751- let fC = fraction(eO, (bR - bS), bS)
752- let cH = K(bH(H(fA, df), H(fz, de)), a)
753- let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(fu, fv, toInt(fC), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
754- let fD = fraction(fs, a, fr)
755- let fE = fraction(fn, a, (fD + a))
756- let fF = (fn - fE)
757- let fG = fraction(eO, toBigInt(fF), toBigInt(fs))
758- let fH = toInt(fraction((fC - fG), b, fG))
759- $Tuple4(toInt(fC), dD, cp, fH)
750+ let fB = fraction(eN, (bR - bS), bS)
751+ let cH = K(bH(H(fz, df), H(fy, de)), a)
752+ let dD = [IntegerEntry(W(), cH), IntegerEntry(X(height, lastBlock.timestamp), cH), StringEntry(aa(cu, ac), bq(ft, fu, toInt(fB), cH, 0, 0, height, lastBlock.timestamp, 0, 0))]
753+ let fC = fraction(fr, a, fq)
754+ let fD = fraction(fm, a, (fC + a))
755+ let fE = (fm - fD)
756+ let fF = fraction(eN, toBigInt(fE), toBigInt(fr))
757+ let fG = toInt(fraction((fB - fF), b, fF))
758+ $Tuple4(toInt(fB), dD, cp, fG)
760759 }
761760 else throw("Strict value is not equal to itself.")
762761 }
763762 else throw("Strict value is not equal to itself.")
764763 }
765764
766765
767-func fI (fJ,fK,fL,fj,fM,fN) = {
766+func fH (fI,fJ,fK,fi,fL,fM) = {
768767 let ba = aS()
769768 let cv = ba[v]
770769 let cw = ba[w]
771770 let cx = ba[x]
772- let fO = parseIntValue(ba[y])
773- let fP = parseIntValue(ba[z])
774- let fQ = ba[u]
775- let cu = if ((fj == bp))
776- then fM
777- else fj
778- let fh = value(fL[0])
779- let cs = value(fh.assetId)
780- let cY = fh.amount
781- let eP = eI(e, e, e)
782- if ((eP == eP))
771+ let fN = parseIntValue(ba[y])
772+ let fO = parseIntValue(ba[z])
773+ let fP = ba[u]
774+ let cu = if ((fi == bp))
775+ then fL
776+ else fi
777+ let fg = value(fK[0])
778+ let cs = value(fg.assetId)
779+ let cY = fg.amount
780+ let eO = eH(e, e, e)
781+ if ((eO == eO))
783782 then {
784- let cr = toBase58String(fN)
783+ let cr = toBase58String(fM)
785784 if ((cv != toBase58String(cs)))
786785 then throw("Wrong LP")
787786 else {
788787 let cC = bF(cw)
789788 let cE = bF(cx)
790- let fR = {
791- let fS = invoke(this, "getOneTknV2READONLY", [fJ, cY], nil)
792- if ($isInstanceOf(fS, "(Int, Int)"))
793- then fS
794- else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
789+ let fQ = {
790+ let fR = invoke(this, "getOneTknV2READONLY", [fI, cY], nil)
791+ if ($isInstanceOf(fR, "(Int, Int)"))
792+ then fR
793+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
795794 }
796- if ((fR == fR))
795+ if ((fQ == fQ))
797796 then {
798- let cp = fR._2
799- let fT = fR._1
800- let fU = if (if ((fK > 0))
801- then (fK > fT)
797+ let cp = fQ._2
798+ let fS = fQ._1
799+ let fT = if (if ((fJ > 0))
800+ then (fJ > fS)
802801 else false)
803- then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
804- else fT
805- let fV = if ((fJ == cw))
806- then $Tuple4(fU, 0, ((cC - fU) - cp), cE)
807- else if ((fJ == cx))
808- then $Tuple4(0, fU, cC, ((cE - fU) - cp))
802+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
803+ else fS
804+ let fU = if ((fI == cw))
805+ then $Tuple4(fT, 0, ((cC - fT) - cp), cE)
806+ else if ((fI == cx))
807+ then $Tuple4(0, fT, cC, ((cE - fT) - cp))
809808 else throw("invalid out asset id")
810- let fW = fV._1
811- let fX = fV._2
812- let fz = fV._3
813- let fA = fV._4
814- let fY = bH(H(fA, fP), H(fz, fO))
815- let fZ = K(fY, a)
816- let ga = if ((fJ == "WAVES"))
809+ let fV = fU._1
810+ let fW = fU._2
811+ let fy = fU._3
812+ let fz = fU._4
813+ let fX = bH(H(fz, fO), H(fy, fN))
814+ let fY = K(fX, a)
815+ let fZ = if ((fI == "WAVES"))
817816 then unit
818- else fromBase58String(fJ)
819- let gb = if ((cp > 0))
820- then [ScriptTransfer(aR, cp, ga)]
817+ else fromBase58String(fI)
818+ let ga = if ((cp > 0))
819+ then [ScriptTransfer(aR, cp, fZ)]
821820 else nil
822- let cO = ([ScriptTransfer(cu, fU, ga), StringEntry(ad(toString(cu), cr), bB(fW, fX, cY, fZ, height, lastBlock.timestamp)), IntegerEntry(W(), fZ), IntegerEntry(X(height, lastBlock.timestamp), fZ)] ++ gb)
821+ let cO = ([ScriptTransfer(cu, fT, fZ), StringEntry(ad(toString(cu), cr), bB(fV, fW, cY, fY, height, lastBlock.timestamp)), IntegerEntry(W(), fY), IntegerEntry(X(height, lastBlock.timestamp), fY)] ++ ga)
823822 if ((cO == cO))
824823 then {
825- let gc = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
826- if ((gc == gc))
824+ let gb = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
825+ if ((gb == gb))
827826 then {
828- let gd = {
829- let ge = if ((this == aR))
827+ let gc = {
828+ let gd = if ((this == aR))
830829 then 0
831830 else cp
832- let gf = if ((aW(fJ) == bg))
831+ let ge = if ((aW(fI) == bg))
833832 then true
834833 else false
835- if (gf)
836- then $Tuple2(-((fT + ge)), 0)
837- else $Tuple2(0, -((fT + ge)))
834+ if (ge)
835+ then $Tuple2(-((fS + gd)), 0)
836+ else $Tuple2(0, -((fS + gd)))
838837 }
839- let eR = gd._1
840- let eS = gd._2
841- let gg = eQ(eR, eS, 0)
842- let gh = gg._1
843- let eH = gg._2
844- let gi = eU(eP, eH)
845- if ((gi == gi))
846- then $Tuple2((cO ++ gh), fU)
838+ let eQ = gc._1
839+ let eR = gc._2
840+ let gf = eP(eQ, eR, 0)
841+ let gg = gf._1
842+ let eG = gf._2
843+ let gh = eT(eO, eG)
844+ if ((gh == gh))
845+ then $Tuple2((cO ++ gg), fT)
847846 else throw("Strict value is not equal to itself.")
848847 }
849848 else throw("Strict value is not equal to itself.")
850849 }
851850 else throw("Strict value is not equal to itself.")
852851 }
853852 else throw("Strict value is not equal to itself.")
854853 }
855854 }
856855 else throw("Strict value is not equal to itself.")
857856 }
858857
859858
860-func gj () = {
859+func gi () = {
861860 let aE = getString(U())
862861 if ($isInstanceOf(aE, "String"))
863862 then {
864863 let dI = aE
865864 fromBase58String(dI)
866865 }
867866 else if ($isInstanceOf(aE, "Unit"))
868867 then unit
869868 else throw("Match error")
870869 }
871870
872871
873-func gk () = {
872+func gj () = {
874873 let aE = getString(V())
875874 if ($isInstanceOf(aE, "String"))
876875 then {
877876 let dI = aE
878877 fromBase58String(dI)
879878 }
880879 else if ($isInstanceOf(aE, "Unit"))
881880 then unit
882881 else throw("Match error")
883882 }
884883
885884
886-let gl = throw("Permission denied")
885+let gk = throw("Permission denied")
887886
888-func gm (dV) = {
889- let aE = gj()
887+func gl (dV) = {
888+ let aE = gi()
890889 if ($isInstanceOf(aE, "ByteVector"))
891890 then {
892- let gn = aE
893- (dV.callerPublicKey == gn)
891+ let gm = aE
892+ (dV.callerPublicKey == gm)
894893 }
895894 else if ($isInstanceOf(aE, "Unit"))
896895 then (dV.caller == this)
897896 else throw("Match error")
898897 }
899898
900899
901-func go (dV) = {
902- let aE = gj()
900+func gn (dV) = {
901+ let aE = gi()
903902 if ($isInstanceOf(aE, "ByteVector"))
904903 then {
905- let gn = aE
906- if ((dV.callerPublicKey == gn))
904+ let gm = aE
905+ if ((dV.callerPublicKey == gm))
907906 then true
908- else gl
907+ else gk
909908 }
910909 else if ($isInstanceOf(aE, "Unit"))
911910 then if ((dV.caller == this))
912911 then true
913- else gl
912+ else gk
914913 else throw("Match error")
915914 }
916915
917916
918917 @Callable(dV)
919918 func constructor (T) = {
920- let ev = go(dV)
919+ let ev = gn(dV)
921920 if ((ev == ev))
922921 then [StringEntry(T(), T)]
923922 else throw("Strict value is not equal to itself.")
924923 }
925924
926925
927926
928927 @Callable(dV)
929-func setManager (gp) = {
930- let ev = go(dV)
928+func setManager (go) = {
929+ let ev = gn(dV)
931930 if ((ev == ev))
932931 then {
933- let gq = fromBase58String(gp)
934- if ((gq == gq))
935- then [StringEntry(V(), gp)]
932+ let gp = fromBase58String(go)
933+ if ((gp == gp))
934+ then [StringEntry(V(), go)]
936935 else throw("Strict value is not equal to itself.")
937936 }
938937 else throw("Strict value is not equal to itself.")
939938 }
940939
941940
942941
943942 @Callable(dV)
944943 func confirmManager () = {
945- let cm = gk()
946- let gr = if (isDefined(cm))
944+ let cm = gj()
945+ let gq = if (isDefined(cm))
947946 then true
948947 else throw("No pending manager")
949- if ((gr == gr))
948+ if ((gq == gq))
950949 then {
951- let gs = if ((dV.callerPublicKey == value(cm)))
950+ let gr = if ((dV.callerPublicKey == value(cm)))
952951 then true
953952 else throw("You are not pending manager")
954- if ((gs == gs))
953+ if ((gr == gr))
955954 then [StringEntry(U(), toBase58String(value(cm))), DeleteEntry(V())]
956955 else throw("Strict value is not equal to itself.")
957956 }
958957 else throw("Strict value is not equal to itself.")
959958 }
960959
961960
962961
963962 @Callable(dV)
964-func put (gt,gu) = {
965- let gv = bk()
966- let gw = valueOrErrorMessage(addressFromString(gv[C]), "Wr st addr")
967- let gx = valueOrErrorMessage(addressFromString(gv[E]), "Wr sl addr")
968- if ((0 > gt))
963+func put (gs,gt) = {
964+ let gu = bk()
965+ let gv = valueOrErrorMessage(addressFromString(gu[C]), "Wr st addr")
966+ let gw = valueOrErrorMessage(addressFromString(gu[E]), "Wr sl addr")
967+ if ((0 > gs))
969968 then throw("Wrong slippage")
970969 else if ((size(dV.payments) != 2))
971970 then throw("2 pmnts expd")
972971 else {
973- let gy = toBigInt(value(dV.payments[0]).amount)
974- let gz = toBigInt(value(dV.payments[1]).amount)
975- let eP = eI(gy, gz, toBigInt(0))
976- if ((eP == eP))
972+ let gx = toBigInt(value(dV.payments[0]).amount)
973+ let gy = toBigInt(value(dV.payments[1]).amount)
974+ let eO = eH(gx, gy, toBigInt(0))
975+ if ((eO == eO))
977976 then {
978- let gA = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gt, true, false, true, 0, "")
979- let dx = gA._2
980- let gB = gA._7
981- let cO = gA._9
982- let dy = gA._10
983- let dz = gA._11
984- let cw = gA._12
985- let cx = gA._13
977+ let gz = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gs, true, false, true, 0, "")
978+ let dx = gz._2
979+ let gA = gz._7
980+ let cO = gz._9
981+ let dy = gz._10
982+ let dz = gz._11
983+ let cw = gz._12
984+ let cx = gz._13
986985 let dk = invoke(aN, "emit", [dx], nil)
987986 if ((dk == dk))
988987 then {
989- let gC = {
988+ let gB = {
990989 let aE = dk
991990 if ($isInstanceOf(aE, "Address"))
992991 then {
993- let gD = aE
994- invoke(gD, "emit", [dx], nil)
992+ let gC = aE
993+ invoke(gC, "emit", [dx], nil)
995994 }
996995 else unit
997996 }
998- if ((gC == gC))
997+ if ((gB == gB))
999998 then {
1000- let gE = if ((dy > 0))
1001- then invoke(gx, "put", nil, [AttachedPayment(cw, dy)])
999+ let gD = if ((dy > 0))
1000+ then invoke(gw, "put", nil, [AttachedPayment(cw, dy)])
10021001 else nil
1003- if ((gE == gE))
1002+ if ((gD == gD))
10041003 then {
1005- let gF = if ((dz > 0))
1006- then invoke(gx, "put", nil, [AttachedPayment(cx, dz)])
1004+ let gE = if ((dz > 0))
1005+ then invoke(gw, "put", nil, [AttachedPayment(cx, dz)])
10071006 else nil
1008- if ((gF == gF))
1007+ if ((gE == gE))
10091008 then {
1010- let gG = if (gu)
1009+ let gF = if (gt)
10111010 then {
1012- let gH = invoke(gw, "stake", nil, [AttachedPayment(gB, dx)])
1013- if ((gH == gH))
1011+ let gG = invoke(gv, "stake", nil, [AttachedPayment(gA, dx)])
1012+ if ((gG == gG))
10141013 then nil
10151014 else throw("Strict value is not equal to itself.")
10161015 }
1017- else [ScriptTransfer(dV.caller, dx, gB)]
1018- let gI = eQ(0, 0, 0)
1019- let gh = gI._1
1020- let eH = gI._2
1021- let gi = eU(eP, eH)
1022- if ((gi == gi))
1023- then ((cO ++ gG) ++ gh)
1016+ else [ScriptTransfer(dV.caller, dx, gA)]
1017+ let gH = eP(0, 0, 0)
1018+ let gg = gH._1
1019+ let eG = gH._2
1020+ let gh = eT(eO, eG)
1021+ if ((gh == gh))
1022+ then ((cO ++ gF) ++ gg)
10241023 else throw("Strict value is not equal to itself.")
10251024 }
10261025 else throw("Strict value is not equal to itself.")
10271026 }
10281027 else throw("Strict value is not equal to itself.")
10291028 }
10301029 else throw("Strict value is not equal to itself.")
10311030 }
10321031 else throw("Strict value is not equal to itself.")
10331032 }
10341033 else throw("Strict value is not equal to itself.")
10351034 }
10361035 }
10371036
10381037
10391038
10401039 @Callable(dV)
1041-func putOneTknV2 (fK,gu) = {
1042- let gJ = {
1043- let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1044- if ($isInstanceOf(fS, "Boolean"))
1045- then fS
1046- else throw(($getType(fS) + " couldn't be cast to Boolean"))
1040+func putOneTknV2 (fJ,gt) = {
1041+ let gI = {
1042+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1043+ if ($isInstanceOf(fR, "Boolean"))
1044+ then fR
1045+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
10471046 }
1048- let gK = if (if (if (aP())
1047+ let gJ = if (if (if (aP())
10491048 then true
10501049 else (be == q))
10511050 then true
10521051 else (be == s))
10531052 then true
1054- else gJ
1055- let gL = [if (if (!(gK))
1053+ else gI
1054+ let gK = [if (if (!(gJ))
10561055 then true
1057- else gm(dV))
1056+ else gl(dV))
10581057 then true
10591058 else aK("put operation is blocked by admin"), if ((size(dV.payments) == 1))
10601059 then true
10611060 else aK("exactly 1 payment are expected")]
1062- if ((gL == gL))
1061+ if ((gK == gK))
10631062 then {
10641063 let ba = aS()
10651064 let cw = ba[w]
10661065 let cx = ba[x]
10671066 let cv = fromBase58String(ba[v])
1068- let fO = parseIntValue(ba[y])
1069- let fP = parseIntValue(ba[z])
1067+ let fN = parseIntValue(ba[y])
1068+ let fO = parseIntValue(ba[z])
10701069 let cu = if ((dV.caller == this))
10711070 then dV.originCaller
10721071 else dV.caller
1073- let fh = value(dV.payments[0])
1074- let cs = toBase58String(value(fh.assetId))
1075- let cY = fh.amount
1076- let gM = fm(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1077- if ((gM == gM))
1072+ let fg = value(dV.payments[0])
1073+ let cs = toBase58String(value(fg.assetId))
1074+ let cY = fg.amount
1075+ let gL = fl(cY, cs, toString(cu), toBase58String(dV.transactionId), true)
1076+ if ((gL == gL))
10781077 then {
1079- let cp = gM._3
1080- let cO = gM._2
1081- let gN = gM._1
1082- let dx = if (if ((fK > 0))
1083- then (fK > gN)
1078+ let cp = gL._3
1079+ let cO = gL._2
1080+ let gM = gL._1
1081+ let dx = if (if ((fJ > 0))
1082+ then (fJ > gM)
10841083 else false)
1085- then aK(makeString(["amount to receive is less than ", toString(fK)], ""))
1086- else gN
1087- let gA = invoke(aN, "emit", [dx], nil)
1088- if ((gA == gA))
1084+ then aK(makeString(["amount to receive is less than ", toString(fJ)], ""))
1085+ else gM
1086+ let gz = invoke(aN, "emit", [dx], nil)
1087+ if ((gz == gz))
10891088 then {
1090- let gC = {
1091- let aE = gA
1089+ let gB = {
1090+ let aE = gz
10921091 if ($isInstanceOf(aE, "Address"))
10931092 then {
1094- let gD = aE
1095- invoke(gD, "emit", [dx], nil)
1093+ let gC = aE
1094+ invoke(gC, "emit", [dx], nil)
10961095 }
10971096 else unit
10981097 }
1099- if ((gC == gC))
1098+ if ((gB == gB))
11001099 then {
1101- let gG = if (gu)
1100+ let gF = if (gt)
11021101 then {
1103- let gH = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1104- if ((gH == gH))
1102+ let gG = invoke(bm, "stake", nil, [AttachedPayment(cv, dx)])
1103+ if ((gG == gG))
11051104 then nil
11061105 else throw("Strict value is not equal to itself.")
11071106 }
11081107 else [ScriptTransfer(dV.caller, dx, cv)]
1109- let gb = if ((cp > 0))
1108+ let ga = if ((cp > 0))
11101109 then [ScriptTransfer(aR, cp, fromBase58String(cs))]
11111110 else nil
1112- let gO = if ((this == aR))
1111+ let gN = if ((this == aR))
11131112 then $Tuple2(0, 0)
11141113 else {
1115- let gP = if ((fh.assetId == bg))
1114+ let gO = if ((fg.assetId == bg))
11161115 then true
11171116 else false
1118- if (gP)
1117+ if (gO)
11191118 then $Tuple2(-(cp), 0)
11201119 else $Tuple2(0, -(cp))
11211120 }
1122- let eR = gO._1
1123- let eS = gO._2
1124- let gQ = eQ(eR, eS, 0)
1125- let gh = gQ._1
1126- let eH = gQ._2
1127- $Tuple2((((cO ++ gG) ++ gb) ++ gh), dx)
1121+ let eQ = gN._1
1122+ let eR = gN._2
1123+ let gP = eP(eQ, eR, 0)
1124+ let gg = gP._1
1125+ let eG = gP._2
1126+ $Tuple2((((cO ++ gF) ++ ga) ++ gg), dx)
11281127 }
11291128 else throw("Strict value is not equal to itself.")
11301129 }
11311130 else throw("Strict value is not equal to itself.")
11321131 }
11331132 else throw("Strict value is not equal to itself.")
11341133 }
11351134 else throw("Strict value is not equal to itself.")
11361135 }
11371136
11381137
11391138
11401139 @Callable(dV)
1141-func putForFree (gR) = if ((0 > gR))
1140+func putForFree (gQ) = if ((0 > gQ))
11421141 then throw("Wrong slpg")
11431142 else if ((size(dV.payments) != 2))
11441143 then throw("2 pmnts expd")
11451144 else {
1146- let gS = fi(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gR, false, false, true, 0, "")
1147- let cO = gS._9
1148- let gy = toBigInt(value(dV.payments[0]).amount)
1149- let gz = toBigInt(value(dV.payments[1]).amount)
1150- let eP = eI(gy, gz, toBigInt(0))
1151- if ((eP == eP))
1145+ let gR = fh(toString(dV.caller), toBase58String(dV.transactionId), AttachedPayment(value(dV.payments[0]).assetId, value(dV.payments[0]).amount), dV.payments[1], gQ, false, false, true, 0, "")
1146+ let cO = gR._9
1147+ let gx = toBigInt(value(dV.payments[0]).amount)
1148+ let gy = toBigInt(value(dV.payments[1]).amount)
1149+ let eO = eH(gx, gy, toBigInt(0))
1150+ if ((eO == eO))
11521151 then {
1153- let gT = eQ(0, 0, 0)
1154- let gh = gT._1
1155- let eH = gT._2
1156- let gi = eU(eP, eH)
1157- if ((gi == gi))
1158- then (cO ++ gh)
1152+ let gS = eP(0, 0, 0)
1153+ let gg = gS._1
1154+ let eG = gS._2
1155+ let gh = eT(eO, eG)
1156+ if ((gh == gh))
1157+ then (cO ++ gg)
11591158 else throw("Strict value is not equal to itself.")
11601159 }
11611160 else throw("Strict value is not equal to itself.")
11621161 }
11631162
11641163
11651164
11661165 @Callable(dV)
11671166 func get () = {
1168- let dk = fg(dV)
1169- let gU = dk._1
1167+ let dk = ff(dV)
1168+ let gT = dk._1
11701169 let cN = dk._2
11711170 let cY = dk._3
11721171 let cs = dk._4
11731172 let cO = dk._5
11741173 let ew = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
11751174 if ((ew == ew))
11761175 then {
1177- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1178- let gV = eQ(-(gU), -(cN), 0)
1179- let gh = gV._1
1180- let eH = gV._2
1181- let gi = eU(eP, eH)
1182- if ((gi == gi))
1183- then (cO ++ gh)
1176+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1177+ let gU = eP(-(gT), -(cN), 0)
1178+ let gg = gU._1
1179+ let eG = gU._2
1180+ let gh = eT(eO, eG)
1181+ if ((gh == gh))
1182+ then (cO ++ gg)
11841183 else throw("Strict value is not equal to itself.")
11851184 }
11861185 else throw("Strict value is not equal to itself.")
11871186 }
11881187
11891188
11901189
11911190 @Callable(dV)
1192-func getOneTknV2 (fJ,fK) = {
1193- let gJ = {
1194- let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1195- if ($isInstanceOf(fS, "Boolean"))
1196- then fS
1197- else throw(($getType(fS) + " couldn't be cast to Boolean"))
1191+func getOneTknV2 (fI,fJ) = {
1192+ let gI = {
1193+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1194+ if ($isInstanceOf(fR, "Boolean"))
1195+ then fR
1196+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
11981197 }
1199- let gW = if (if (aP())
1198+ let gV = if (if (aP())
12001199 then true
12011200 else (be == s))
12021201 then true
1203- else gJ
1204- let gL = [if (if (!(gW))
1202+ else gI
1203+ let gK = [if (if (!(gV))
12051204 then true
1206- else gm(dV))
1205+ else gl(dV))
12071206 then true
12081207 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 1))
12091208 then true
12101209 else aK("exactly 1 payment are expected")]
1211- if ((gL == gL))
1210+ if ((gK == gK))
12121211 then {
1213- let gX = fI(fJ, fK, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1214- let cO = gX._1
1215- let fU = gX._2
1216- $Tuple2(cO, fU)
1212+ let gW = fH(fI, fJ, dV.payments, dV.caller, dV.originCaller, dV.transactionId)
1213+ let cO = gW._1
1214+ let fT = gW._2
1215+ $Tuple2(cO, fT)
12171216 }
12181217 else throw("Strict value is not equal to itself.")
12191218 }
12201219
12211220
12221221
12231222 @Callable(dV)
12241223 func refreshDLp () = {
1225- let gY = valueOrElse(getInteger(al), 0)
1226- let gZ = if (((height - gY) >= ao))
1224+ let gX = valueOrElse(getInteger(al), 0)
1225+ let gY = if (((height - gX) >= ao))
12271226 then unit
12281227 else aK(makeString([toString(ao), " blocks have not passed since the previous call"], ""))
1229- if ((gZ == gZ))
1228+ if ((gY == gY))
12301229 then {
1231- let fb = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1232- let ha = eQ(0, 0, 0)
1233- let hb = ha._1
1234- let eH = ha._2
1235- let eT = if ((fb != eH))
1236- then hb
1230+ let fa = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ak), "0")), aM("invalid dLp"))
1231+ let gZ = eP(0, 0, 0)
1232+ let ha = gZ._1
1233+ let eG = gZ._2
1234+ let eS = if ((fa != eG))
1235+ then ha
12371236 else aK("nothing to refresh")
1238- $Tuple2(eT, toString(eH))
1237+ $Tuple2(eS, toString(eG))
12391238 }
12401239 else throw("Strict value is not equal to itself.")
12411240 }
12421241
12431242
12441243
12451244 @Callable(dV)
1246-func getOneTknV2READONLY (fJ,hc) = {
1245+func getOneTknV2READONLY (fI,hb) = {
12471246 let ba = aS()
12481247 let cw = ba[w]
12491248 let cx = ba[x]
12501249 let cv = ba[v]
12511250 let dF = [toBigInt(bF(cw)), toBigInt(bF(cx))]
12521251 let eF = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(cv)), "invalid lp asset").quantity)
12531252 let bS = dE(dF)
1254- let bR = (bS - fraction(toBigInt(hc), bS, eF))
1255- let hd = if ((fJ == cw))
1253+ let bR = (bS - fraction(toBigInt(hb), bS, eF))
1254+ let hc = if ((fI == cw))
12561255 then 0
1257- else if ((fJ == cx))
1256+ else if ((fI == cx))
12581257 then 1
12591258 else throw("invalid out asset id")
1260- let he = es(dF, hd, bR)
1261- let hf = (dF[hd] - he)
1262- let hg = max([0, toInt((hf - f))])
1263- let hh = cn(hg)
1264- let fT = hh._1
1265- let cp = hh._2
1266- $Tuple2(nil, $Tuple2(fT, cp))
1259+ let hd = es(dF, hc, bR)
1260+ let he = (dF[hc] - hd)
1261+ let hf = max([0, toInt((he - f))])
1262+ let hg = cn(hf)
1263+ let fS = hg._1
1264+ let cp = hg._2
1265+ $Tuple2(nil, $Tuple2(fS, cp))
12671266 }
12681267
12691268
12701269
12711270 @Callable(dV)
1272-func getOneTknV2WithBonusREADONLY (fJ,hc) = {
1271+func getOneTknV2WithBonusREADONLY (fI,hb) = {
12731272 let ba = aS()
12741273 let cw = ba[w]
12751274 let cx = ba[x]
12761275 let cv = ba[v]
12771276 let cC = bF(cw)
12781277 let cE = bF(cx)
1279- let hi = {
1280- let fS = invoke(this, "getOneTknV2READONLY", [fJ, hc], nil)
1281- if ($isInstanceOf(fS, "(Int, Int)"))
1282- then fS
1283- else throw(($getType(fS) + " couldn't be cast to (Int, Int)"))
1278+ let hh = {
1279+ let fR = invoke(this, "getOneTknV2READONLY", [fI, hb], nil)
1280+ if ($isInstanceOf(fR, "(Int, Int)"))
1281+ then fR
1282+ else throw(($getType(fR) + " couldn't be cast to (Int, Int)"))
12841283 }
1285- let fT = hi._1
1286- let cp = hi._2
1287- let dk = cq("", cv, hc, this)
1284+ let fS = hh._1
1285+ let cp = hh._2
1286+ let dk = cq("", cv, hb, this)
12881287 let cM = dk._1
12891288 let cN = dk._2
1290- let hj = (cM + cN)
1291- let fH = if ((hj == 0))
1292- then if ((fT == 0))
1289+ let hi = (cM + cN)
1290+ let fG = if ((hi == 0))
1291+ then if ((fS == 0))
12931292 then 0
12941293 else throw("bonus calculation error")
1295- else fraction((fT - hj), a, hj)
1296- $Tuple2(nil, $Tuple3(fT, cp, fH))
1294+ else fraction((fS - hi), a, hi)
1295+ $Tuple2(nil, $Tuple3(fS, cp, fG))
12971296 }
12981297
12991298
13001299
13011300 @Callable(dV)
1302-func getNoLess (hk,hl) = {
1303- let dk = fg(dV)
1301+func getNoLess (hj,hk) = {
1302+ let dk = ff(dV)
13041303 let cM = dk._1
13051304 let cN = dk._2
13061305 let cY = dk._3
13071306 let cs = dk._4
13081307 let cO = dk._5
1309- if ((hk > cM))
1310- then throw(((("Failed: " + toString(cM)) + " < ") + toString(hk)))
1311- else if ((hl > cN))
1312- then throw(((("Failed: " + toString(cN)) + " < ") + toString(hl)))
1308+ if ((hj > cM))
1309+ then throw(((("Failed: " + toString(cM)) + " < ") + toString(hj)))
1310+ else if ((hk > cN))
1311+ then throw(((("Failed: " + toString(cN)) + " < ") + toString(hk)))
13131312 else {
1314- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(cY))
1315- let hm = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1316- if ((hm == hm))
1313+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(cY))
1314+ let hl = invoke(aN, "burn", [cY], [AttachedPayment(cs, cY)])
1315+ if ((hl == hl))
13171316 then {
1318- let hn = eQ(-(cM), -(cN), 0)
1319- let gh = hn._1
1320- let eH = hn._2
1321- let gi = eU(eP, eH)
1322- if ((gi == gi))
1323- then (cO ++ gh)
1317+ let hm = eP(-(cM), -(cN), 0)
1318+ let gg = hm._1
1319+ let eG = hm._2
1320+ let gh = eT(eO, eG)
1321+ if ((gh == gh))
1322+ then (cO ++ gg)
13241323 else throw("Strict value is not equal to itself.")
13251324 }
13261325 else throw("Strict value is not equal to itself.")
13271326 }
13281327 }
13291328
13301329
13311330
13321331 @Callable(dV)
13331332 func unstakeAndGet (co) = {
1334- let ho = if ((size(dV.payments) != 0))
1333+ let hn = if ((size(dV.payments) != 0))
13351334 then throw("No pmnts expd")
13361335 else true
1337- if ((ho == ho))
1336+ if ((hn == hn))
13381337 then {
13391338 let ce = aS()
1340- let hp = bk()
1341- let gB = fromBase58String(ce[v])
1342- let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1343- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1344- let hr = invoke(hq, "unstake", [toBase58String(gB), co], nil)
1345- if ((hr == hr))
1339+ let ho = bk()
1340+ let gA = fromBase58String(ce[v])
1341+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1342+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1343+ let hq = invoke(hp, "unstake", [toBase58String(gA), co], nil)
1344+ if ((hq == hq))
13461345 then {
1347- let dk = cq(toBase58String(dV.transactionId), toBase58String(gB), co, dV.caller)
1346+ let dk = cq(toBase58String(dV.transactionId), toBase58String(gA), co, dV.caller)
13481347 let cM = dk._1
13491348 let cN = dk._2
13501349 let cA = parseIntValue(dk._9)
13511350 let cO = dk._10
1352- let hs = if (if (aP())
1351+ let hr = if (if (aP())
13531352 then true
13541353 else (cA == s))
13551354 then throw(("Blocked: " + toString(cA)))
13561355 else true
1357- if ((hs == hs))
1356+ if ((hr == hr))
13581357 then {
1359- let ht = invoke(aN, "burn", [co], [AttachedPayment(gB, co)])
1360- if ((ht == ht))
1358+ let hs = invoke(aN, "burn", [co], [AttachedPayment(gA, co)])
1359+ if ((hs == hs))
13611360 then {
1362- let hu = eQ(-(cM), -(cN), 0)
1363- let gh = hu._1
1364- let eH = hu._2
1365- let gi = eU(eP, eH)
1366- if ((gi == gi))
1367- then (cO ++ gh)
1361+ let ht = eP(-(cM), -(cN), 0)
1362+ let gg = ht._1
1363+ let eG = ht._2
1364+ let gh = eT(eO, eG)
1365+ if ((gh == gh))
1366+ then (cO ++ gg)
13681367 else throw("Strict value is not equal to itself.")
13691368 }
13701369 else throw("Strict value is not equal to itself.")
13711370 }
13721371 else throw("Strict value is not equal to itself.")
13731372 }
13741373 else throw("Strict value is not equal to itself.")
13751374 }
13761375 else throw("Strict value is not equal to itself.")
13771376 }
13781377
13791378
13801379
13811380 @Callable(dV)
1382-func unstakeAndGetNoLess (hv,hw,hl) = {
1383- let gW = if (aP())
1381+func unstakeAndGetNoLess (hu,hv,hk) = {
1382+ let gV = if (aP())
13841383 then true
13851384 else (be == s)
1386- let gL = [if (!(gW))
1385+ let gK = [if (!(gV))
13871386 then true
13881387 else throw("get operation is blocked by admin"), if ((size(dV.payments) == 0))
13891388 then true
13901389 else throw("no payments are expected")]
1391- if ((gL == gL))
1390+ if ((gK == gK))
13921391 then {
1393- let eP = eI(toBigInt(0), toBigInt(0), toBigInt(0))
1394- let hr = invoke(bm, "unstake", [toBase58String(bf), hv], nil)
1395- if ((hr == hr))
1392+ let eO = eH(toBigInt(0), toBigInt(0), toBigInt(0))
1393+ let hq = invoke(bm, "unstake", [toBase58String(bf), hu], nil)
1394+ if ((hq == hq))
13961395 then {
1397- let hx = cq(toBase58String(dV.transactionId), toBase58String(bf), hv, dV.caller)
1398- let cM = hx._1
1399- let cN = hx._2
1400- let cO = hx._10
1401- let hy = [if ((cM >= hw))
1396+ let hw = cq(toBase58String(dV.transactionId), toBase58String(bf), hu, dV.caller)
1397+ let cM = hw._1
1398+ let cN = hw._2
1399+ let cO = hw._10
1400+ let hx = [if ((cM >= hv))
14021401 then true
1403- else throw(makeString(["amount asset amount to receive is less than ", toString(hw)], "")), if ((cN >= hl))
1402+ else throw(makeString(["amount asset amount to receive is less than ", toString(hv)], "")), if ((cN >= hk))
14041403 then true
1405- else throw(makeString(["price asset amount to receive is less than ", toString(hl)], ""))]
1406- if ((hy == hy))
1404+ else throw(makeString(["price asset amount to receive is less than ", toString(hk)], ""))]
1405+ if ((hx == hx))
14071406 then {
1408- let hm = invoke(aN, "burn", [hv], [AttachedPayment(bf, hv)])
1409- if ((hm == hm))
1407+ let hl = invoke(aN, "burn", [hu], [AttachedPayment(bf, hu)])
1408+ if ((hl == hl))
14101409 then {
1411- let hz = eQ(-(cM), -(cN), 0)
1412- let gh = hz._1
1413- let eH = hz._2
1414- let gi = eU(eP, eH)
1415- if ((gi == gi))
1416- then (cO ++ gh)
1410+ let hy = eP(-(cM), -(cN), 0)
1411+ let gg = hy._1
1412+ let eG = hy._2
1413+ let gh = eT(eO, eG)
1414+ if ((gh == gh))
1415+ then (cO ++ gg)
14171416 else throw("Strict value is not equal to itself.")
14181417 }
14191418 else throw("Strict value is not equal to itself.")
14201419 }
14211420 else throw("Strict value is not equal to itself.")
14221421 }
14231422 else throw("Strict value is not equal to itself.")
14241423 }
14251424 else throw("Strict value is not equal to itself.")
14261425 }
14271426
14281427
14291428
14301429 @Callable(dV)
1431-func unstakeAndGetOneTknV2 (hv,fJ,fK) = {
1432- let gJ = {
1433- let fS = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1434- if ($isInstanceOf(fS, "Boolean"))
1435- then fS
1436- else throw(($getType(fS) + " couldn't be cast to Boolean"))
1430+func unstakeAndGetOneTknV2 (hu,fI,fJ) = {
1431+ let gI = {
1432+ let fR = invoke(aN, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1433+ if ($isInstanceOf(fR, "Boolean"))
1434+ then fR
1435+ else throw(($getType(fR) + " couldn't be cast to Boolean"))
14371436 }
1438- let gW = if (if (aP())
1437+ let gV = if (if (aP())
14391438 then true
14401439 else (be == s))
14411440 then true
1442- else gJ
1443- let gL = [if (if (!(gW))
1441+ else gI
1442+ let gK = [if (if (!(gV))
14441443 then true
1445- else gm(dV))
1444+ else gl(dV))
14461445 then true
14471446 else aK("get operation is blocked by admin"), if ((size(dV.payments) == 0))
14481447 then true
14491448 else aK("no payments are expected")]
1450- if ((gL == gL))
1449+ if ((gK == gK))
14511450 then {
14521451 let ce = aS()
1453- let hp = bk()
1454- let gB = fromBase58String(ce[v])
1455- let hq = valueOrErrorMessage(addressFromString(hp[C]), "Wr st addr")
1456- let hr = invoke(hq, "unstake", [toBase58String(gB), hv], nil)
1457- if ((hr == hr))
1452+ let ho = bk()
1453+ let gA = fromBase58String(ce[v])
1454+ let hp = valueOrErrorMessage(addressFromString(ho[C]), "Wr st addr")
1455+ let hq = invoke(hp, "unstake", [toBase58String(gA), hu], nil)
1456+ if ((hq == hq))
14581457 then {
1459- let hA = fI(fJ, fK, [AttachedPayment(gB, hv)], dV.caller, dV.originCaller, dV.transactionId)
1460- let cO = hA._1
1461- let fU = hA._2
1462- $Tuple2(cO, fU)
1458+ let hz = fH(fI, fJ, [AttachedPayment(gA, hu)], dV.caller, dV.originCaller, dV.transactionId)
1459+ let cO = hz._1
1460+ let fT = hz._2
1461+ $Tuple2(cO, fT)
14631462 }
14641463 else throw("Strict value is not equal to itself.")
14651464 }
14661465 else throw("Strict value is not equal to itself.")
14671466 }
14681467
14691468
14701469
14711470 @Callable(dV)
1472-func putOneTknV2WithBonusREADONLY (hB,hC) = {
1471+func putOneTknV2WithBonusREADONLY (hA,hB) = {
14731472 let ba = aS()
14741473 let cw = ba[w]
14751474 let cx = ba[x]
14761475 let cv = ba[v]
1477- let hD = fm(hB, hC, "", "", true)
1478- let fC = hD._1
1479- let cO = hD._2
1480- let cp = hD._3
1481- let fH = hD._4
1482- $Tuple2(nil, $Tuple3(fC, cp, fH))
1476+ let hC = fl(hA, hB, "", "", true)
1477+ let fB = hC._1
1478+ let cO = hC._2
1479+ let cp = hC._3
1480+ let fG = hC._4
1481+ $Tuple2(nil, $Tuple3(fB, cp, fG))
14831482 }
14841483
14851484
14861485
14871486 @Callable(dV)
1488-func putOneTknV2WithoutTakeFeeREADONLY (hB,hC) = {
1487+func putOneTknV2WithoutTakeFeeREADONLY (hA,hB) = {
14891488 let ba = aS()
14901489 let cw = ba[w]
14911490 let cx = ba[x]
14921491 let cv = ba[v]
1493- let hE = fm(hB, hC, "", "", false)
1494- let fC = hE._1
1495- let cO = hE._2
1496- let cp = hE._3
1497- let fH = hE._4
1498- $Tuple2(nil, $Tuple3(fC, cp, fH))
1492+ let hD = fl(hA, hB, "", "", false)
1493+ let fB = hD._1
1494+ let cO = hD._2
1495+ let cp = hD._3
1496+ let fG = hD._4
1497+ $Tuple2(nil, $Tuple3(fB, cp, fG))
14991498 }
15001499
15011500
15021501
15031502 @Callable(dV)
1504-func activate (hF,hG) = if ((toString(dV.caller) != toString(aN)))
1503+func activate (hE,hF) = if ((toString(dV.caller) != toString(aN)))
15051504 then throw("denied")
1506- else $Tuple2([StringEntry(ae(), hF), StringEntry(af(), hG)], "success")
1505+ else $Tuple2([StringEntry(ae(), hE), StringEntry(af(), hF)], "success")
15071506
15081507
15091508
15101509 @Callable(dV)
1511-func setS (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1512- then gl
1513- else [StringEntry(hH, hs)]
1510+func setS (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1511+ then gk
1512+ else [StringEntry(hG, hr)]
15141513
15151514
15161515
15171516 @Callable(dV)
1518-func setI (hH,hs) = if ((toString(dV.caller) != aG(this, ah())))
1519- then gl
1520- else [IntegerEntry(hH, hs)]
1517+func setI (hG,hr) = if ((toString(dV.caller) != aG(this, ah())))
1518+ then gk
1519+ else [IntegerEntry(hG, hr)]
15211520
15221521
15231522
15241523 @Callable(dV)
15251524 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aS())
15261525
15271526
15281527
15291528 @Callable(dV)
15301529 func getAccBalanceWrapperREADONLY (bG) = $Tuple2(nil, bF(bG))
15311530
15321531
15331532
15341533 @Callable(dV)
15351534 func calcPricesWrapperREADONLY (bY,bZ,cd) = {
1536- let hI = cc(bY, bZ, cd)
1537- $Tuple2(nil, [toString(hI[0]), toString(hI[1]), toString(hI[2])])
1535+ let hH = cc(bY, bZ, cd)
1536+ $Tuple2(nil, [toString(hH[0]), toString(hH[1]), toString(hH[2])])
15381537 }
15391538
15401539
15411540
15421541 @Callable(dV)
1543-func fromX18WrapperREADONLY (L,hJ) = $Tuple2(nil, K(parseBigIntValue(L), hJ))
1542+func fromX18WrapperREADONLY (L,hI) = $Tuple2(nil, K(parseBigIntValue(L), hI))
15441543
15451544
15461545
15471546 @Callable(dV)
15481547 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
15491548
15501549
15511550
15521551 @Callable(dV)
15531552 func calcPriceBigIntWrapperREADONLY (bI,bJ) = $Tuple2(nil, toString(bH(parseBigIntValue(bI), parseBigIntValue(bJ))))
15541553
15551554
15561555
15571556 @Callable(dV)
1558-func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hK,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hK, cU, cV, true, false, 0, ""))
1557+func estimatePutOperationWrapperREADONLY (cr,bN,cQ,cR,cS,cT,hJ,cU,cV) = $Tuple2(nil, cP(cr, bN, cQ, cR, cS, cT, hJ, cU, cV, true, false, 0, ""))
15591558
15601559
15611560
15621561 @Callable(dV)
1563-func estimateGetOperationWrapperREADONLY (cr,hL,ct,hK) = {
1564- let dk = cq(cr, hL, ct, addressFromStringValue(hK))
1562+func estimateGetOperationWrapperREADONLY (cr,hK,ct,hJ) = {
1563+ let dk = cq(cr, hK, ct, addressFromStringValue(hJ))
15651564 $Tuple2(nil, $Tuple10(dk._1, dk._2, dk._3, dk._4, dk._5, dk._6, dk._7, toString(dk._8), dk._9, dk._10))
15661565 }
15671566
15681567
15691568
15701569 @Callable(dV)
15711570 func getFeeREADONLY () = $Tuple2(nil, aj)
15721571
15731572
1574-@Verifier(hM)
1575-func hN () = {
1576- let hO = {
1577- let aE = gj()
1573+@Verifier(hL)
1574+func hM () = {
1575+ let hN = {
1576+ let aE = gi()
15781577 if ($isInstanceOf(aE, "ByteVector"))
15791578 then {
1580- let gn = aE
1581- gn
1579+ let gm = aE
1580+ gm
15821581 }
15831582 else if ($isInstanceOf(aE, "Unit"))
1584- then hM.senderPublicKey
1583+ then hL.senderPublicKey
15851584 else throw("Match error")
15861585 }
1587- let aE = hM
1586+ let aE = hL
15881587 if ($isInstanceOf(aE, "Order"))
15891588 then {
1590- let eX = aE
1591- let hP = aQ()
1592- let hQ = eW(eX)
1593- let hR = sigVerify(eX.bodyBytes, eX.proofs[0], eX.senderPublicKey)
1594- let hS = sigVerify(eX.bodyBytes, eX.proofs[1], hP)
1595- if (if (if (hQ)
1589+ let eW = aE
1590+ let hO = aQ()
1591+ let hP = eV(eW)
1592+ let hQ = sigVerify(eW.bodyBytes, eW.proofs[0], eW.senderPublicKey)
1593+ let hR = sigVerify(eW.bodyBytes, eW.proofs[1], hO)
1594+ if (if (if (hP)
1595+ then hQ
1596+ else false)
15961597 then hR
15971598 else false)
1598- then hS
1599- else false)
16001599 then true
1601- else az(hQ, hR, hS)
1600+ else az(hP, hQ, hR)
16021601 }
16031602 else if ($isInstanceOf(aE, "SetScriptTransaction"))
16041603 then {
16051604 let dI = aE
1606- let hT = blake2b256(value(dI.script))
1607- let hU = fromBase64String(value(getString(aN, ax())))
1608- let hV = scriptHash(this)
1609- if (if ((hU == hT))
1610- then (hV != hT)
1605+ let hS = blake2b256(value(dI.script))
1606+ let hT = fromBase64String(value(getString(aN, ax())))
1607+ let hU = scriptHash(this)
1608+ if (if ((hT == hS))
1609+ then (hU != hS)
16111610 else false)
16121611 then true
1613- else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
1612+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16141613 }
1615- else sigVerify(hM.bodyBytes, hM.proofs[0], hO)
1614+ else sigVerify(hL.bodyBytes, hL.proofs[0], hN)
16161615 }
16171616

github/deemru/w8io/169f3d6 
380.64 ms