tx · Du4HEPDtdWQYji91BZuDE3v5wNFgV7nSgh18KQa4P1Ui

3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz:  -0.04100000 Waves

2023.03.22 12:56 [3566658] smart account 3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz > SELF 0.00000000 Waves

{ "type": 13, "id": "Du4HEPDtdWQYji91BZuDE3v5wNFgV7nSgh18KQa4P1Ui", "fee": 4100000, "feeAssetId": null, "timestamp": 1679479010388, "version": 2, "chainId": 87, "sender": "3P8KMyAJCPWNcyedqrmymxaeWonvmkhGauz", "senderPublicKey": "DxhbzFs9BZTiN6kcnyybxmqPTV8xReD6Z5gWQ5AgRX8w", "proofs": [ "2ivFrmAVHnVueeLNTV3sN7rjfjBkyMGJxpzmMvq5p9gmhLe6oY9EJrsf1xGzer5kUPuk9zsc31Ffus8Hz6CBwVLK" ], "script": "base64:BgK8KwgCEgUKAwEEARIHCgUBBAEIARIDCgEIEgMKAQgSABIECgIBBBIECgIBBBIDCgEBEgASBAoCCAESABIECgIIARIECgIIARIECgIBARIDCgEBEgUKAwEBARIFCgMBCAESBAoCAQgSBAoCAQgSBAoCCAgSBAoCCAgSBAoCCAESABIDCgEIEgUKAwEBARIECgIIARIECgIBARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCCIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiBGJpZzMiBGJpZzQiCnNsaXBwYWdlNEQiC3dhdmVzU3RyaW5nIgVBbXVsdCIFRGNvbnYiA1NFUCIFRU1QVFkiClBvb2xBY3RpdmUiClBvb2xQdXREaXMiDlBvb2xNYXRjaGVyRGlzIgxQb29sU2h1dGRvd24iDmlkeFBvb2xBZGRyZXNzIglpZHhQb29sU3QiCWlkeExQQXNJZCIJaWR4QW1Bc0lkIglpZHhQckFzSWQiC2lkeEFtdEFzRGNtIg1pZHhQcmljZUFzRGNtIgtpZHhJQW10QXNJZCINaWR4SVByaWNlQXNJZCIPaWR4RmFjdFN0YWtDbnRyIhJpZHhGYWN0b3J5UmVzdENudHIiEGlkeEZhY3RTbGlwcENudHIiEWlkeEZhY3RHd3hSZXdDbnRyIgpmZWVEZWZhdWx0IgJ0MSIHb3JpZ1ZhbCINb3JpZ1NjYWxlTXVsdCIIdDFCaWdJbnQiAmYxIgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCICdDIiAmYyIgJ0cyIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiAXQiA3BhdSICdWEiBHR4SWQiA2dhdSICYWEiAnBhIgNhbXAiA2FkYSIGa2V5RmVlIgNmZWUiBmtleURMcCIVa2V5RExwUmVmcmVzaGVkSGVpZ2h0IhJrZXlETHBSZWZyZXNoRGVsYXkiFmRMcFJlZnJlc2hEZWxheURlZmF1bHQiD2RMcFJlZnJlc2hEZWxheSIEZmNmZyIEbXRwayICcGMiBmlBbXRBcyIFaVByQXMiA21iYSIFYkFTdHIiA2FwcyIca2V5QWxsb3dlZExwU3RhYmxlU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiBHN0cmYiBGFkZHIiA2tleSIEaW50ZiIIdGhyb3dFcnIiA21zZyIGZm10RXJyIgNmY2EiBWluRmVlIgFAIgZvdXRGZWUiAUEiA2lncyICbXAiE2ZlZUNvbGxlY3RvckFkZHJlc3MiA2dwYyIFYW10QXMiB3ByaWNlQXMiCGlQcmljZUFzIgxwYXJzZUFzc2V0SWQiBWlucHV0Ig9hc3NldElkVG9TdHJpbmciD3BhcnNlUG9vbENvbmZpZyIKcG9vbENvbmZpZyIQcG9vbENvbmZpZ1BhcnNlZCILJHQwODA2MDgyODkiDmNmZ1Bvb2xBZGRyZXNzIg1jZmdQb29sU3RhdHVzIgxjZmdMcEFzc2V0SWQiEGNmZ0Ftb3VudEFzc2V0SWQiD2NmZ1ByaWNlQXNzZXRJZCIWY2ZnQW1vdW50QXNzZXREZWNpbWFscyIVY2ZnUHJpY2VBc3NldERlY2ltYWxzIhJjZmdJbkFtb3VudEFzc2VkSWQiEWNmZ0luUHJpY2VBc3NldElkIgNnZmMiDWZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIPc2xpcGFnZUNvbnRyYWN0Igtnd3hDb250cmFjdCIMcmVzdENvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiCnNsaXBCeVVzZXIiDHNsaXBwYWdlUmVhbCIIdHhIZWlnaHQiC3R4VGltZXN0YW1wIgxzbGlwYWdlQW1BbXQiDHNsaXBhZ2VQckFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIgRjcGJpIghwckFtdFgxOCIIYW1BbXRYMTgiBWNwYmlyIgN2YWQiAkExIgJBMiIIc2xpcHBhZ2UiBGRpZmYiBHBhc3MiAnZkIgJEMSICRDAiBHNscGciBGZhaWwiA3BjcCIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10IgthbXRBc0FtdFgxOCIKcHJBc0FtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiCGFtdEFzRGNtIgdwckFzRGNtIghwcmljZVgxOCIIbHBBbXRYMTgiDWxwUHJJbkFtQXNYMTgiDWxwUHJJblByQXNYMTgiD2NhbGN1bGF0ZVByaWNlcyIBcCIHdGFrZUZlZSIGYW1vdW50IglmZWVBbW91bnQiBGdldEQiAnhwIgN4cDAiA3hwMSIBcyIBYSIDYW5uIgt4cDBfeHAxX25fbiIFYW5uX3MiBWFubl8xIgljYWxjRE5leHQiAWQiAmRkIgNkZGQiAmRwIgRjYWxjIgNhY2MiAWkiBWROZXh0IghkRGlmZlJhdyIFZERpZmYiA2FyciINJHQwMTI3OTQxMjg0MiICJGwiAiRzIgUkYWNjMCIFJGYwXzEiAiRhIgIkaSIFJGYwXzIiBWZvdW5kIgNlZ28iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiC3VzZXJBZGRyZXNzIgRscElkIgRhbUlkIgRwcklkIgVhbURjbSIFcHJEY20iA3N0cyIHbHBFbWlzcyIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4IgpscEVtaXNzWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiA2VwbyIHaW5BbUFtdCIGaW5BbUlkIgdpblByQW10IgZpblBySWQiBmlzRXZhbCIGZW1pdExwIgppc09uZUFzc2V0IhB2YWxpZGF0ZVNsaXBwYWdlIgZwbXRBbXQiBXBtdElkIgdhbUlkU3RyIgdwcklkU3RyIglpbkFtSWRTdHIiCWluUHJJZFN0ciIGYW10RGNtIghwcmljZURjbSIEbHBFbSIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIBciIGY2hlY2tEIgtzbGlwcGFnZVgxOCIPc2xpcHBhZ2VSZWFsWDE4Ig1scEVtaXNzaW9uWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIg0kdDAyMDY4MTIxMDI2Igp3cml0ZUFtQW10Igp3cml0ZVByQW10Igtjb21tb25TdGF0ZSIFZ2V0WUQiAUQiAW4iAXgiCmFQcmVjaXNpb24iAWMiAWIiA2N1ciINJHQwMjIyMjEyMjI0MSIBeSIFeU5leHQiBXlEaWZmIg0kdDAyMjU0ODIyNTk1IgdjYWxjRExwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCmxwRW1pc3Npb24iCnVwZGF0ZWRETHAiDmNhbGNDdXJyZW50RExwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRETHAiEnJlZnJlc2hETHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZERMcCIGb2xkRExwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjQ3OTMyNTAwNSIDZExwIg0kdDAyNTM0NzI1NDQ3Ig11bnVzZWRBY3Rpb25zIgZkTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyICY2ciA3BtdCICY3AiBmNhbGxlciIHYW1Bc1BtdCIHcHJBc1BtdCINY2FsY1B1dE9uZVRrbiIJcG10QW10UmF3Igt3aXRoVGFrZUZlZSINY2hlY2hFbWlzc2lvbiINJHQwMjgxMDMyODU2NSIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiDSR0MDI4NTcxMjg3NDciC2FtQW1vdW50UmF3IgtwckFtb3VudFJhdyINJHQwMjg3NTEyOTAwNSIIYW1BbW91bnQiCHByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIIbHBBbW91bnQiDnBvb2xQcm9wb3J0aW9uIg9hbW91bnRBc3NldFBhcnQiDnByaWNlQXNzZXRQYXJ0IglscEFtdEJvdGgiBWJvbnVzIhNnZXRPbmVUa25WMkludGVybmFsIgpvdXRBc3NldElkIgxtaW5PdXRBbW91bnQiCHBheW1lbnRzIgxvcmlnaW5DYWxsZXIiDXRyYW5zYWN0aW9uSWQiCmFtRGVjaW1hbHMiCnByRGVjaW1hbHMiCnBvb2xTdGF0dXMiDSR0MDMxMTE3MzEyMjgiCHRvdGFsR2V0Igt0b3RhbEFtb3VudCINJHQwMzE0MTgzMTcyNSIFb3V0QW0iBW91dFByIghjdXJQclgxOCIFY3VyUHIiEW91dEFzc2V0SWRPcldhdmVzIhBzZW5kRmVlVG9NYXRjaGVyIgRidXJuIg0kdDAzMjUxMDMyODYwIhBmZWVBbW91bnRGb3JDYWxjIhBvdXRJbkFtb3VudEFzc2V0Ig0kdDAzMjg2MzMyOTcxIhFyZWZyZXNoRExwQWN0aW9ucyIRaXNVcGRhdGVkRExwVmFsaWQiAW0iByRtYXRjaDAiAnBtIgJwZCIJaXNNYW5hZ2VyIgJwayICbW0iBGdldFkiCWlzUmV2ZXJzZSITcG9vbEFtb3VudEluQmFsYW5jZSINJHQwMzQ0MTgzNDQzOCINJHQwMzQ3NjkzNDgxNiITc2tpcE9yZGVyVmFsaWRhdGlvbiINY2xlYW5BbW91bnRJbiINZmVlUG9vbEFtb3VudCINJHQwMzUxNjgzNTU5MiIIYXNzZXRPdXQiAmR5Igt0b3RhbEdldFJhdyIFbmV3WHAiBG5ld0QiDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIGY2hlY2tzIgdhc3NldEluIg0kdDAzNzAyODM3NDIyIghjaGVja01pbiIXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiAmNtIgNocG0iA2NwbSIEc2xpcCIJYXV0b1N0YWtlIgdmYWN0Q2ZnIgtzdGFraW5nQ250ciIIc2xpcENudHIiCmFtQXNzZXRQbXQiCnByQXNzZXRQbXQiAWUiCWxwQXNzZXRJZCICZWwiBmxlZ2FjeSICc2EiAnNwIghscFRybnNmciICc3MiDSR0MDQyMDQxNDIxODMiBWNoZWNrIhRscEFzc2V0RW1pc3Npb25BZnRlciIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiDSR0MDQzODI0NDM5ODIiB2VzdGltTFAiDSR0MDQ0ODY3NDUyMTYiFHBheW1lbnRJbkFtb3VudEFzc2V0Ig0kdDA0NTIxOTQ1MzI3IgdtYXhTbHBnIgZlc3RQdXQiDSR0MDQ2MzU3NDY0MjIiCW91dEFtdEFtdCINJHQwNDc1OTU0NzY3NyINaXNHZXREaXNhYmxlZCINJHQwNDgyOTU0ODQ1MCIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDg5NzQ0OTAzOCIQZExwVXBkYXRlQWN0aW9ucyINbHBBc3NldEFtb3VudCIFaW5kZXgiBG5ld1kiDSR0MDUwMDQ4NTAxMDMiDSR0MDUwNDc4NTA1OTMiDnN1bU9mR2V0QXNzZXRzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTE3NTk1MTg0MCINY2hlY2tQYXltZW50cyIKZmFjdG9yeUNmZyIHc3Rha2luZyIKdW5zdGFrZUludiIBdiIFYnVybkEiDSR0MDUyODY3NTI5NDgiDXVuc3Rha2VBbW91bnQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIDcmVzIgxjaGVja0Ftb3VudHMiDSR0MDU0MTk5NTQyODAiF2xwQXNzZXRSZWNpcGllbnRBZGRyZXNzIg0kdDA1NTMwMjU1NDkwIhBwYXltZW50QW1vdW50UmF3Ig5wYXltZW50QXNzZXRJZCINJHQwNTU2MTg1NTcyMSINJHQwNTU4Njk1NTk3MyIIYW10QXNTdHIiB3ByQXNTdHIiAWsiAnByIgxyZXNTY2FsZU11bHQiB3VzckFkZHIiB3BtdEFzSWQiAnR4IgZ2ZXJpZnkiD3RhcmdldFB1YmxpY0tleSIKbWF0Y2hlclB1YiINJHQwNTg3NjU1ODg4MiIHbmV3SGFzaCILYWxsb3dlZEhhc2giC2N1cnJlbnRIYXNohAEAAWEAgMLXLwABYgkAtgIBAIDC1y8AAWMJALYCAQCAgJC7utat8A0AAWQJALYCAQAAAAFlCQC2AgEAAAABZgkAtgIBAAEAAWcJALYCAQACAAFoCQC2AgEAAwABaQkAtgIBAAQAAWoJALYCAQkAZQIFAWEJAGkCCQBoAgUBYQABBQFhAAFrAgVXQVZFUwABbAIDMTAwAAFtAgExAAFuAgJfXwABbwIAAAFwAAEAAXEAAgABcgADAAFzAAQAAXQAAQABdQACAAF2AAMAAXcABAABeAAFAAF5AAYAAXoABwABQQAIAAFCAAkAAUMAAQABRAAGAAFFAAcAAUYACgABRwkAawMACgUBYQCQTgEBSAIBSQFKCQC8AgMJALYCAQUBSQUBYwkAtgIBBQFKAQFLAgFJAUoJALwCAwUBSQUBYwUBSgEBTAIBTQFOCQCgAwEJALwCAwUBTQkAtgIBBQFOBQFjAQFPAwFNAU4BUAkAoAMBCQC9AgQFAU0JALYCAQUBTgUBYwUBUAEBUQIBSQFKCQC8AgMFAUkFAWMJALYCAQUBSgEBUgIBTQFOCQC8AgMFAU0JALYCAQUBTgUBYwEBUwMBVAFVAVYJAGsDBQFUBQFVBQFWAQFXAQFNAwkAvwICBQFkBQFNCQC+AgEFAU0FAU0BAVgBAU0DCQC/AgIFAWQFAU0JAL4CAQUBTQUBTQEBWQACEyVzX19mYWN0b3J5Q29udHJhY3QBAVoAAhQlc19fbWFuYWdlclB1YmxpY0tleQECYWEAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAmFiAAIRJXMlc19fcHJpY2VfX2xhc3QBAmFjAgJhZAJhZQkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAmFkCQDMCAIJAKQDAQUCYWUFA25pbAUBbgECYWYCAmFnAmFoCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWcCAl9fBQJhaAECYWkCAmFnAmFoCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWcCAl9fBQJhaAECYWoAAg8lc19fYW1vdW50QXNzZXQBAmFrAAIOJXNfX3ByaWNlQXNzZXQBAmFsAAIHJXNfX2FtcAECYW0AAg0lc19fYWRkb25BZGRyAAJhbgIHJXNfX2ZlZQACYW8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYW4FAUcAAmFwCQC5CQIJAMwIAgICJXMJAMwIAgIDZExwBQNuaWwFAW4AAmFxCQC5CQIJAMwIAgICJXMJAMwIAgISZExwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAW4AAmFyCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaERMcERlbGF5BQNuaWwFAW4AAmFzAB4AAmF0CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFyBQJhcwECYXUAAhElc19fZmFjdG9yeUNvbmZpZwECYXYAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF3AgJheAJheQkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXgCAl9fBQJheQIIX19jb25maWcBAmF6AQJhQQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhQQECYUIAAgwlc19fc2h1dGRvd24BAmFDAAIdJXNfX2FsbG93ZWRMcFN0YWJsZVNjcmlwdEhhc2gBAmFEAAIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFFAQJhRgkArAICAhslcyVzX19za2lwT3JkZXJWYWxpZGF0aW9uX18FAmFGAQJhRwQCYUgCYUkCYUoCYUsJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFIAgIgKAUCYUkCASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUoCDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFLAQJhTAICYU0CYU4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhTQUCYU4JALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYU0JAMwIAgIBLgkAzAgCBQJhTgkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhTwICYU0CYU4JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhTQUCYU4JALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYU0JAMwIAgIBLgkAzAgCBQJhTgkAzAgCAgwgbm90IGRlZmluZWQFA25pbAIAAQJhUAECYVEJAAIBCQC5CQIJAMwIAgIPbHBfc3RhYmxlLnJpZGU6CQDMCAIFAmFRBQNuaWwCASABAmFSAQJhUQkAuQkCCQDMCAICD2xwX3N0YWJsZS5yaWRlOgkAzAgCBQJhUQUDbmlsAgEgAAJhUwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFMAgUEdGhpcwkBAVkAAAJhVAoAAmFVCQD8BwQFAmFTAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVUCA0ludAUCYVUJAAIBCQCsAgIJAAMBBQJhVQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhVgoAAmFVCQD8BwQFAmFTAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFVAgNJbnQFAmFVCQACAQkArAICCQADAQUCYVUCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYVcJAQJhTAIFBHRoaXMJAQJhbAABAmFYAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhUwkBAmFCAAcBAmFZAAkA2QQBCQECYUwCBQJhUwkBAmF2AAACYVoJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhTAIFAmFTCQECYUQAAQJiYQAEAmJiCQECYUwCBQR0aGlzCQECYWoABAJiYwkBAmFMAgUEdGhpcwkBAmFrAAQCYmQJAQJhTwIFAmFTCQECYXoBBQJiYwQCYXgJAQJhTwIFAmFTCQECYXoBBQJiYgkAtQkCCQECYUwCBQJhUwkBAmF3AgkApAMBBQJheAkApAMBBQJiZAUBbgECYmUBAmJmAwkAAAIFAmJmBQFrBQR1bml0CQDZBAEFAmJmAQJiZwECYmYDCQAAAgUCYmYFBHVuaXQFAWsJANgEAQkBBXZhbHVlAQUCYmYBAmJoAQJiaQkAmwoJCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJpBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmkFAXUJANkEAQkAkQMCBQJiaQUBdgkBAmJlAQkAkQMCBQJiaQUBdwkBAmJlAQkAkQMCBQJiaQUBeAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJpBQF5CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmkFAXoJANkEAQkAkQMCBQJiaQUBQQkA2QQBCQCRAwIFAmJpBQFCAAJiagkBAmJoAQkBAmJhAAACYmsFAmJqAAJibAgFAmJrAl8xAAJibQgFAmJrAl8yAAJibggFAmJrAl8zAAJibwgFAmJrAl80AAJicAgFAmJrAl81AAJicQgFAmJrAl82AAJicggFAmJrAl83AAJicwgFAmJrAl84AAJidAgFAmJrAl85AQJidQAJALUJAgkBAmFMAgUCYVMJAQJhdQAFAW4AAmJ2CQECYnUAAAJidwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnYFAUMCIEludmFsaWQgc3Rha2luZyBjb250cmFjdCBhZGRyZXNzAAJieAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnYFAUUCIEludmFsaWQgc2xpcGFnZSBjb250cmFjdCBhZGRyZXNzAAJieQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUCYnYFAUYCHEludmFsaWQgZ3d4IGNvbnRyYWN0IGFkZHJlc3MAAmJ6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJidgUBRAIcSW52YWxpZCBnd3ggY29udHJhY3QgYWRkcmVzcwECYkEKAmJCAmJDAmJEAmJFAmJGAmJHAmJIAmJJAmJKAmJLCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiQgkAzAgCCQCkAwEFAmJDCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJGCQDMCAIJAKQDAQUCYkcJAMwIAgkApAMBBQJiSAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwUDbmlsBQFuAQJiTAYCYk0CYk4CYk8CYkUCYkgCYkkJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiTQkAzAgCCQCkAwEFAmJOCQDMCAIJAKQDAQUCYk8JAMwIAgkApAMBBQJiRQkAzAgCCQCkAwEFAmJICQDMCAIJAKQDAQUCYkkFA25pbAUBbgECYlABAmJRAwkAAAIFAmJRAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJiUQECYlICAmJTAmJUCQC8AgMFAmJTBQFjBQJiVAECYlUDAmJTAmJUAVAJAL0CBAUCYlMFAWMFAmJUBQFQAQJiVgMCYlcCYlgCYlkEAmJaCQC8AgMJALgCAgUCYlcFAmJYBQFiBQJiWAQCY2EJAL8CAgkAuAICBQJiWQkBAVcBBQJiWgUBZAMJAQEhAQUCY2EJAAIBCQCsAgICCkJpZyBzbHBnOiAJAKYDAQUCYloJAJQKAgUCY2EJAJkDAQkAzAgCBQJiVwkAzAgCBQJiWAUDbmlsAQJjYgMCY2MCY2QCY2UEAmJaCQC8AgMFAmNkBQFiBQJjYwQCY2YJAL8CAgUCY2UFAmJaAwMFAmNmBgkAvwICBQJjZAUCY2MJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCmAwEFAmNkAgEgCQCmAwEFAmNjAgEgCQCmAwEFAmJaAgEgCQCmAwEFAmNlBQJjZgECY2cEAmNoAmNpAmNqAmNrBAJjbAkBAUgCBQJjagUCY2gEAmNtCQEBSAIFAmNrBQJjaQkBAmJSAgUCY20FAmNsAQJjbgMCY2oCY2sCY28EAmNwBQJicQQCY3EFAmJyBAJjcgkBAmNnBAUCY3AFAmNxBQJjagUCY2sEAmJUCQEBSAIFAmNqBQJjcAQCYlMJAQFIAgUCY2sFAmNxBAJjcwkBAUgCBQJjbwUBYQQCY3QJAQJiUgIFAmJUBQJjcwQCY3UJAQJiUgIFAmJTBQJjcwkAzAgCBQJjcgkAzAgCBQJjdAkAzAgCBQJjdQUDbmlsAQJjdgMCY2oCY2sCY28EAmN3CQECY24DBQJjagUCY2sFAmNvCQDMCAIJAQFMAgkAkQMCBQJjdwAABQFhCQDMCAIJAQFMAgkAkQMCBQJjdwABBQFhCQDMCAIJAQFMAgkAkQMCBQJjdwACBQFhBQNuaWwBAmN4AgJjeQJhbwQCY3oDCQAAAgUCYW8AAAAACQBrAwUCY3kFAmFvBQFhCQCUCgIJAGUCBQJjeQUCY3oFAmN6AQJjQQECY0IEAmNDCQCRAwIFAmNCAAAEAmNECQCRAwIFAmNCAAEEAmNFCQC3AgIFAmNDBQJjRAMJAAACBQJjRQUBZQUBZQQCY0YJAQ1wYXJzZUludFZhbHVlAQUCYVcEAmNHCQBoAgUCY0YAAgQCY3cJALwCAwUCY0MFAmNEBQFmBAJjSAkAvAIDBQJjdwUBaQUBZgQCY0kJALwCAwkAtgIBBQJjRwUCY0UFAWYEAmNKCQC2AgEJAGUCBQJjRwABCgECY0sBAmNMBAJjTQkAvAIDBQJjTAUCY0wFAWYEAmNOCQC8AgMFAmNNBQJjTAUBZgQCY08JALwCAwUCY04FAWYFAmNICQC8AgMJALcCAgUCY0kJALwCAwUCY08FAWcFAWYFAmNMCQC3AgIJALwCAwUCY0oFAmNMBQFmCQC8AgMFAWgFAmNPBQFmCgECY1ACAmNRAmNSAwgFAmNRAl8yBQJjUQQCY0wIBQJjUQJfMQQCY1MJAQJjSwEFAmNMBAJjVAkAuAICBQJjUwkBBXZhbHVlAQUCY0wEAmNVAwkAvwICBQFlBQJjVAkAvgIBBQJjVAUCY1QDCQDAAgIFAWYFAmNVCQCUCgIFAmNTBgkAlAoCBQJjUwcEAmNWCQDMCAIAAAkAzAgCAAEJAMwIAgACCQDMCAIAAwkAzAgCAAQJAMwIAgAFCQDMCAIABgkAzAgCAAcJAMwIAgAICQDMCAIACQkAzAgCAAoJAMwIAgALCQDMCAIADAkAzAgCAA0JAMwIAgAOCQDMCAIADwkAzAgCABAFA25pbAQCY1cKAAJjWAUCY1YKAAJjWQkAkAMBBQJjWAoAAmNaCQCUCgIFAmNFBwoBAmRhAgJkYgJkYwMJAGcCBQJkYwUCY1kFAmRiCQECY1ACBQJkYgkAkQMCBQJjWAUCZGMKAQJkZAICZGICZGMDCQBnAgUCZGMFAmNZBQJkYgkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDE3CQECZGQCCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECCQECZGECBQJjWgAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQQCY0wIBQJjVwJfMQQCZGUIBQJjVwJfMgMFAmRlBQJjTAkAAgEJAKwCAgIZRCBjYWxjdWxhdGlvbiBlcnJvciwgRCA9IAkApgMBBQJjTAECZGYEAmRnAmRoAmRpAmRqBAJkawUCYm4EAmRsCQDYBAEJAQV2YWx1ZQEFAmJvBAJkbQkA2AQBCQEFdmFsdWUBBQJicAQCZG4FAmJxBAJkbwUCYnIEAmRwCQCkAwEFAmJtBAJkcQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkawILV3JvbmcgTFAgaWQIcXVhbnRpdHkDCQECIT0CCQDYBAEFAmRrBQJkaAkAAgECD1dyb25nIHBtdCBhc3NldAQCZHIJAQJiUAEFAmRsBAJkcwkBAUgCBQJkcgUCZG4EAmR0CQECYlABBQJkbQQCZHUJAQFIAgUCZHQFAmRvBAJkdgkBAmJSAgUCZHUFAmRzBAJkdwkBAUwCBQJkdgUBYQQCZHgJAQFIAgUCZGkFAWEEAmR5CQEBSAIFAmRxBQFhBAJkegkAvAIDBQJkcwUCZHgFAmR5BAJkQQkAvAIDBQJkdQUCZHgFAmR5BAJkQgkBAU8DBQJkegUCZG4FBUZMT09SBAJkQwkBAU8DBQJkQQUCZG8FBUZMT09SBAJkRAMJAAACBQJkZwIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCZGoFAmRCAwkAAAIFAmRsAgVXQVZFUwUEdW5pdAkA2QQBBQJkbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkagUCZEMDCQAAAgUCZG0CBVdBVkVTBQR1bml0CQDZBAEFAmRtCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZGoFAmRnCQECYkwGBQJkQgUCZEMFAmRpBQJkdwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR3BQNuaWwJAJwKCgUCZEIFAmRDBQJkbAUCZG0FAmRyBQJkdAUCZHEFAmR2BQJkcAUCZEQBAmRFDQJkZwJiWQJkRgJkRwJkSAJkSQJkagJkSgJkSwJkTAJkTQJkTgJkTwQCZGsFAmJuBAJkUAkA2AQBCQEFdmFsdWUBBQJibwQCZFEJANgEAQkBBXZhbHVlAQUCYnAEAmRSBQJicwQCZFMFAmJ0BAJkVAUCYnEEAmRVBQJicgQCZHAJAKQDAQUCYm0EAmRWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRrAghXciBscCBhcwhxdWFudGl0eQQCZHIDBQJkSgkBAmJQAQUCZFADAwUCZEwJAAACBQJkTwUCZFAHCQBlAgkBAmJQAQUCZFAFAmROAwUCZEwJAQJiUAEFAmRQCQBlAgkBAmJQAQUCZFAFAmRGBAJkdAMFAmRKCQECYlABBQJkUQMDBQJkTAkAAAIFAmRPBQJkUQcJAGUCCQECYlABBQJkUQUCZE4DBQJkTAkBAmJQAQUCZFEJAGUCCQECYlABBQJkUQUCZEgEAmRXCQEBSAIFAmRGBQJkVAQCZFgJAQFIAgUCZEgFAmRVBAJkWQkBAmJSAgUCZFgFAmRXBAJkcwkBAUgCBQJkcgUCZFQEAmR1CQEBSAIFAmR0BQJkVQQCY2QJAQJjQQEJAMwIAgUCZHMJAMwIAgUCZHUFA25pbAQCZFoDCQAAAgUCZFYAAAQCY2MJAQJjQQEJAMwIAgkAtwICBQJkcwUCZFcJAMwIAgkAtwICBQJkdQUCZFgFA25pbAQCZWEDCQC/AgIFAmNjBQJjZAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVhBQJlYQQCZHYFAWQEAmViBQFkBAJjcwUCY2MJAJcKBQkBAUwCBQJjcwUBYQkBAUwCBQJkVwUCZFQJAQFMAgUCZFgFAmRVCQECYlICCQC3AgIFAmR1BQJkWAkAtwICBQJkcwUCZFcFAmViCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBAJkdgkBAmJSAgUCZHUFAmRzBAJlYwkAvAIDCQEBVwEJALgCAgUCZHYFAmRZBQFjBQJkdgQCZWIJAQFIAgUCYlkFAWEDAwMFAmRNCQECIT0CBQJkdgUBZAcJAL8CAgUCZWMFAmViBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJlYwIDID4gCQCmAwEFAmViBAJlZAkBAUgCBQJkVgUBYQQCZWUJAL0CBAUCZFcJAQJiVQMFAmR1BQJkcwUHQ0VJTElORwUBYwUHQ0VJTElORwQCZWYJAL0CBAUCZFgFAWMJAQJiVQMFAmR1BQJkcwUFRkxPT1IFB0NFSUxJTkcEAmVnAwkAvwICBQJlZQUCZFgJAJQKAgUCZWYFAmRYCQCUCgIFAmRXBQJlZQQCZWgIBQJlZwJfMQQCZWkIBQJlZwJfMgQCY2MJAQJjQQEJAMwIAgkAtwICBQJkcwUCZWgJAMwIAgkAtwICBQJkdQUCZWkFA25pbAQCZWEDCQC/AgIFAmNjBQJjZAYJAAIBAhxEMSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIEQwAwkAAAIFAmVhBQJlYQQCY3MJALwCAwUCZWQJALgCAgUCY2MFAmNkBQJjZAkAlwoFCQEBTwMFAmNzBQFhBQVGTE9PUgkBAU8DBQJlaAUCZFQFB0NFSUxJTkcJAQFPAwUCZWkFAmRVBQdDRUlMSU5HBQJkdgUCZWIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4EAmVqCAUCZFoCXzEEAmVrCAUCZFoCXzIEAmVsCAUCZFoCXzMEAmR3CQEBTAIIBQJkWgJfNAUBYQQCZW0JAQFMAggFAmRaAl81BQFhAwkAZwIAAAUCZWoJAAIBAgdMUCA8PSAwBAJlbgMJAQEhAQUCZEsAAAUCZWoEAmVvCQBlAgUCZEYFAmVrBAJlcAkAZQIFAmRIBQJlbAQCZXEDAwUCZEwJAAACBQJkTwUCZFAHCQCUCgIFAmROAAADAwUCZEwJAAACBQJkTwUCZFEHCQCUCgIAAAUCZE4JAJQKAgUCZWsFAmVsBAJlcggFAmVxAl8xBAJlcwgFAmVxAl8yBAJldAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZHcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgIFAmRqBQJkZwkBAmJBCgUCZXIFAmVzBQJlbgUCZHcFAmJZBQJlbQUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZW8FAmVwBQNuaWwJAJ8KDQUCZWoFAmVuBQJkdwUCZHIFAmR0BQJkVgUCZGsFAmRwBQJldAUCZW8FAmVwBQJkRwUCZEkBAmV1AwJjQgJjUgJldgQCZXcFAWcEAmV4CQCRAwIFAmNCAwkAAAIFAmNSAAAAAQAABAJleQkApwMBBQFsBAJjRgkAuQICCQCnAwEFAmFXBQJleQQCY0UFAmV4BAJjRwkAuQICBQJjRgUCZXcEAmV6CQC6AgIJALkCAgkAuQICCQC6AgIJALkCAgUCZXYFAmV2CQC5AgIFAmV4BQJldwUCZXYFAmV5CQC5AgIFAmNHBQJldwQCZUEJALgCAgkAtwICBQJjRQkAugICCQC5AgIFAmV2BQJleQUCY0cFAmV2CgECY1ACAmNRAmVCBAJlQwUCY1EEAmVECAUCZUMCXzEEAmRlCAUCZUMCXzIDCQECIT0CBQJkZQUEdW5pdAUCY1EEAmVFCQC6AgIJALcCAgkAuQICBQJlRAUCZUQFAmV6CQC3AgIJALkCAgUBZwUCZUQFAmVBBAJlRgkBAVgBCQC4AgIFAmVFCQEFdmFsdWUBBQJlRAMJAMACAgUBZgUCZUYJAJQKAgUCZUUFAmVCCQCUCgIFAmVFBQR1bml0BAJjVgkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYJAMwIAgAHCQDMCAIACAkAzAgCAAkJAMwIAgAKCQDMCAIACwkAzAgCAAwJAMwIAgANCQDMCAIADgUDbmlsBAJlRwoAAmNYBQJjVgoAAmNZCQCQAwEFAmNYCgACY1oJAJQKAgUCZXYFBHVuaXQKAQJkYQICZGICZGMDCQBnAgUCZGMFAmNZBQJkYgkBAmNQAgUCZGIJAJEDAgUCY1gFAmRjCgECZGQCAmRiAmRjAwkAZwIFAmRjBQJjWQUCZGIJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxNQkBAmRkAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgkBAmRhAgUCY1oAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwQCZUQIBQJlRwJfMQQCZGUIBQJlRwJfMgMJAQIhPQIFAmRlBQR1bml0BQJlRAkAAgEJAKwCAgIZWSBjYWxjdWxhdGlvbiBlcnJvciwgWSA9IAkApgMBBQJlRAECZUgDAmVJAmVKAmVLBAJlTAkAvAIDCQECY0EBCQDMCAIJAQFLAgUCZUkJALYCAQUCYnEJAMwIAgkBAUsCBQJlSgkAtgIBBQJicgUDbmlsBQFjBQJlSwMJAAACBQJlSwUBZQUBZQUCZUwBAmVNAwJlTgJlTwJlUAQCZVEJALgCAgkAtgIBCQECYlABCQECYmcBBQJibwUCZU4EAmVSCQC4AgIJALYCAQkBAmJQAQkBAmJnAQUCYnAFAmVPBAJlUwkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJuCHF1YW50aXR5BQJlUAQCZVQJAQJlSAMFAmVRBQJlUgUCZVMFAmVUAQJlVQMCZVYCZVcCZVAEAmVRCQBkAgkBAmJQAQkBAmJnAQUCYm8FAmVWBAJlUgkAZAIJAQJiUAEJAQJiZwEFAmJwBQJlVwQCZVMJAGQCCAkBBXZhbHVlAQkA7AcBBQJibghxdWFudGl0eQUCZVAEAmVMCQECZUgDCQC2AgEFAmVRCQC2AgEFAmVSCQC2AgEFAmVTBAJlWAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYXEFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhcAkApgMBBQJlTAUDbmlsCQCUCgIFAmVYBQJlTAECZVkCAmVaAmVMAwkAwAICBQJlTAUCZVoGCQECYVABAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwAQJmYQECZmIEAmVRCQECYlABCQECYmcBBQJibwQCZVIJAQJiUAEJAQJiZwEFAmJwBAJmYwgFAmZiBmFtb3VudAQCZmQJAG4ECAUCZmIGYW1vdW50CAUCZmIFcHJpY2UFAWEFBUZMT09SBAJmZQMJAAACCAUCZmIJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZmMJAQEtAQUCZmQJAJQKAgkBAS0BBQJmYwUCZmQEAmVWCAUCZmUCXzEEAmVXCAUCZmUCXzIDAwMJAQJhWAAGCQAAAgUCYm0FAXIGCQAAAgUCYm0FAXMJAAIBAg1BZG1pbiBibG9ja2VkAwMJAQIhPQIICAUCZmIJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJibwYJAQIhPQIICAUCZmIJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJwCQACAQIJV3IgYXNzZXRzBAJmZgkApwMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFwAgEwBAJmZwkBAmVVAwUCZVYFAmVXAAAEAmZoCAUCZmcCXzEEAmZpCAUCZmcCXzIEAmZqCQDAAgIFAmZpBQJmZgQCZmsJALkJAgkAzAgCAgRkTHA9CQDMCAIJAKYDAQUCZmYJAMwIAgIIIGRMcE5ldz0JAMwIAgkApgMBBQJmaQkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmVRCQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlUgkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZVYJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZVcJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmZqBQJmawECZmwBAmNSAwkBAiE9AgkAkAMBCAUCY1IIcGF5bWVudHMAAQkAAgECCjEgcG1udCBleHAEAmZtCQEFdmFsdWUBCQCRAwIIBQJjUghwYXltZW50cwAABAJkaAkBBXZhbHVlAQgFAmZtB2Fzc2V0SWQEAmROCAUCZm0GYW1vdW50BAJkWgkBAmRmBAkA2AQBCAUCY1INdHJhbnNhY3Rpb25JZAkA2AQBBQJkaAUCZE4IBQJjUgZjYWxsZXIEAmRCCAUCZFoCXzEEAmRDCAUCZFoCXzIEAmRwCQENcGFyc2VJbnRWYWx1ZQEIBQJkWgJfOQQCZEQIBQJkWgNfMTADAwkBAmFYAAYJAAACBQJkcAUBcwkAAgEJAKwCAgIPQWRtaW4gYmxvY2tlZDogCQCkAwEFAmRwCQCXCgUFAmRCBQJkQwUCZE4FAmRoBQJkRAECZm4KAmZvAmFoAmZwAmZxAmJZAmRLAmRMAmRNAmROAmRPBAJkWgkBAmRFDQUCYWgFAmJZCAkBBXZhbHVlAQUCZnAGYW1vdW50CAkBBXZhbHVlAQUCZnAHYXNzZXRJZAgJAQV2YWx1ZQEFAmZxBmFtb3VudAgJAQV2YWx1ZQEFAmZxB2Fzc2V0SWQFAmZvCQAAAgUCYWgCAAUCZEsFAmRMBQJkTQUCZE4FAmRPBAJkcAkBDXBhcnNlSW50VmFsdWUBCAUCZFoCXzgDAwMJAQJhWAAGCQAAAgUCZHAFAXEGCQAAAgUCZHAFAXMJAAIBCQCsAgICCEJsb2NrZWQ6CQCkAwEFAmRwBQJkWgECZnIFAmZzAmRoAmRqAmFoAmZ0BAJkbAkA2AQBCQEFdmFsdWUBBQJibwQCZG0JANgEAQkBBXZhbHVlAQUCYnAEAmRrBQJibgQCZFQFAmJxBAJkVQUCYnIEAmVTCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZGsCEGludmFsaWQgbHAgYXNzZXQIcXVhbnRpdHkEAmZ1AwkAvwICBQJlUwUBZQYJAAIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZ1BQJmdQQCZHIJAQJiUAEFAmRsBAJkdAkBAmJQAQUCZG0EAmZ2AwkAAAIFAmFoAgAJAJQKAgUCZHIFAmR0AwkAAAIFAmRoBQJkbAMJAGYCBQJmcwUCZHIJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIJAGUCBQJkcgUCZnMFAmR0AwkAAAIFAmRoBQJkbQMJAGYCBQJmcwUCZHQJAAIBAhZpbnZhbGlkIHBheW1lbnQgYW1vdW50CQCUCgIFAmRyCQBlAgUCZHQFAmZzCQACAQIQd3JvbmcgcG10QXNzZXRJZAQCZncIBQJmdgJfMQQCZngIBQJmdgJfMgQCZnkDCQAAAgUCZGgFAmRsCQCUCgIFAmZzAAADCQAAAgUCZGgFAmRtCQCUCgIAAAUCZnMJAAIBAg9pbnZhbGlkIHBheW1lbnQEAmZ6CAUCZnkCXzEEAmZBCAUCZnkCXzIEAmZCAwUCZnQJAJUKAwgJAQJjeAIFAmZ6BQJhVAJfMQgJAQJjeAIFAmZBBQJhVAJfMQgJAQJjeAIFAmZzBQJhVAJfMgkAlQoDBQJmegUCZkEAAAQCZkMIBQJmQgJfMQQCZkQIBQJmQgJfMgQCY3oIBQJmQgJfMwQCZkUJAGQCBQJmdwUCZkMEAmZGCQBkAgUCZngFAmZEBAJjZAkBAmNBAQkAzAgCCQEBSAIFAmZ3BQJicQkAzAgCCQEBSAIFAmZ4BQJicgUDbmlsBAJjYwkBAmNBAQkAzAgCCQEBSAIFAmZFBQJicQkAzAgCCQEBSAIFAmZGBQJicgUDbmlsBAJlYQMJAL8CAgUCY2MFAmNkBgkBBXRocm93AAMJAAACBQJlYQUCZWEEAmZHCQC9AgQFAmVTCQC4AgIFAmNjBQJjZAUCY2QFBUZMT09SBAJkdwkBAUwCCQECYlICCQEBSAIFAmZGBQJkVQkBAUgCBQJmRQUCZFQFAWEEAmV0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWIABQJkdwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFjAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAgUCZGoFAmFoCQECYkEKBQJmegUCZkEJAKADAQUCZkcFAmR3AAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZkgJAGsDBQJmeAUBYQUCZncEAmZJCQBrAwUCZnMFAWEJAGQCBQJmSAUBYQQCZkoJAGUCBQJmcwUCZkkEAmZLCQC8AgMFAmVTCQC2AgEFAmZKCQC2AgEFAmZ4BAJmTAkAoAMBCQC8AgMJALgCAgUCZkcFAmZLBQFiBQJmSwkAlgoECQCgAwEFAmZHBQJldAUCY3oFAmZMCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmTQYCZk4CZk8CZlACZm8CZlECZlIEAmRrCQDYBAEJAQV2YWx1ZQEFAmJuBAJkbAkA2AQBCQEFdmFsdWUBBQJibwQCZG0JANgEAQkBBXZhbHVlAQUCYnAEAmZTBQJicQQCZlQFAmJyBAJmVQUCYm0EAmRqAwkAAAIFAmZvBQJiegUCZlEFAmZvBAJmbQkBBXZhbHVlAQkAkQMCBQJmUAAABAJkaAkBBXZhbHVlAQgFAmZtB2Fzc2V0SWQEAmROCAUCZm0GYW1vdW50BAJlVAkBAmVNAwUBZQUBZQUBZQMJAAACBQJlVAUCZVQEAmRnCQDYBAEFAmZSAwkBAiE9AgUCZGsJANgEAQUCZGgJAAIBAghXcm9uZyBMUAQCZHIJAQJiUAEFAmRsBAJkdAkBAmJQAQUCZG0EAmZWCgACYVUJAPwHBAUEdGhpcwITZ2V0T25lVGtuVjJSRUFET05MWQkAzAgCBQJmTgkAzAgCBQJkTgUDbmlsBQNuaWwDCQABAgUCYVUCCihJbnQsIEludCkFAmFVCQACAQkArAICCQADAQUCYVUCHyBjb3VsZG4ndCBiZSBjYXN0IHRvIChJbnQsIEludCkDCQAAAgUCZlYFAmZWBAJjeggFAmZWAl8yBAJmVwgFAmZWAl8xBAJmWAMDCQBmAgUCZk8AAAkAZgIFAmZPBQJmVwcJAQJhUAEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZk8FA25pbAIABQJmVwQCZlkDCQAAAgUCZk4FAmRsCQCWCgQFAmZYAAAJAGUCCQBlAgUCZHIFAmZYBQJjegUCZHQDCQAAAgUCZk4FAmRtCQCWCgQAAAUCZlgFAmRyCQBlAgkAZQIFAmR0BQJmWAUCY3oJAAIBAhRpbnZhbGlkIG91dCBhc3NldCBpZAQCZloIBQJmWQJfMQQCZ2EIBQJmWQJfMgQCZkUIBQJmWQJfMwQCZkYIBQJmWQJfNAQCZ2IJAQJiUgIJAQFIAgUCZkYFAmZUCQEBSAIFAmZFBQJmUwQCZ2MJAQFMAgUCZ2IFAWEEAmdkAwkAAAIFAmZOAgVXQVZFUwUEdW5pdAkA2QQBBQJmTgQCZ2UDCQBmAgUCY3oAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhWgUCY3oFAmdkBQNuaWwFA25pbAQCZEQJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJkagUCZlgFAmdkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIJAKUIAQUCZGoFAmRnCQECYkwGBQJmWgUCZ2EFAmROBQJnYwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFiAAUCZ2MJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhYwIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmdjBQNuaWwFAmdlAwkAAAIFAmREBQJkRAQCZ2YJAPwHBAUCYVMCBGJ1cm4JAMwIAgUCZE4FA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGgFAmROBQNuaWwDCQAAAgUCZ2YFAmdmBAJnZwQCZ2gDCQAAAgUEdGhpcwUCYVoAAAUCY3oEAmdpAwkAAAIJAQJiZQEFAmZOBQJibwYHAwUCZ2kJAJQKAgkBAS0BCQBkAgUCZlcFAmdoAAAJAJQKAgAACQEBLQEJAGQCBQJmVwUCZ2gEAmVWCAUCZ2cCXzEEAmVXCAUCZ2cCXzIEAmdqCQECZVUDBQJlVgUCZVcAAAQCZ2sIBQJnagJfMQQCZUwIBQJnagJfMgQCZ2wJAQJlWQIFAmVUBQJlTAMJAAACBQJnbAUCZ2wJAJQKAgkAzggCBQJkRAUCZ2sFAmZYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnbQAEAmduCQCiCAEJAQFaAAMJAAECBQJnbgIGU3RyaW5nBAJjRQUCZ24JANkEAQUCY0UDCQABAgUCZ24CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ28ABAJnbgkAoggBCQECYWEAAwkAAQIFAmduAgZTdHJpbmcEAmNFBQJnbgkA2QQBBQJjRQMJAAECBQJnbgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAAJncAkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQJncQECY1IEAmduCQECZ20AAwkAAQIFAmduAgpCeXRlVmVjdG9yBAJncgUCZ24JAAACCAUCY1IPY2FsbGVyUHVibGljS2V5BQJncgMJAAECBQJnbgIEVW5pdAkAAAIIBQJjUgZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgECZ3MBAmNSBAJnbgkBAmdtAAMJAAECBQJnbgIKQnl0ZVZlY3RvcgQCZ3IFAmduAwkAAAIIBQJjUg9jYWxsZXJQdWJsaWNLZXkFAmdyBgUCZ3ADCQABAgUCZ24CBFVuaXQDCQAAAggFAmNSBmNhbGxlcgUEdGhpcwYFAmdwCQACAQILTWF0Y2ggZXJyb3IBAmd0AwJndQJldgJndgQCYmkJAQJiYQAEAmRsCQCRAwIFAmJpBQF3BAJkbQkAkQMCBQJiaQUBeAQCZXcFAWcEAmV5CQCnAwEFAWwEAmNGCQC5AgIJAKcDAQUCYVcFAmV5BAJjQgMJAAACBQJndQcJAMwIAgkAtwICCQC2AgEJAQJiUAEFAmRsBQJndgkAzAgCCQC2AgEJAQJiUAEFAmRtBQNuaWwJAMwIAgkAtwICCQC2AgEJAQJiUAEFAmRtBQJndgkAzAgCCQC2AgEJAQJiUAEFAmRsBQNuaWwEAmV4CQCRAwIFAmNCAAAEAmNFBQJleAQCY0cJALkCAgUCY0YFAmV3BAJlegkAugICCQC5AgIJALkCAgkAugICCQC5AgIFAmV2BQJldgkAuQICBQJleAUCZXcFAmV2BQJleQkAuQICBQJjRwUCZXcEAmVBCQC4AgIJALcCAgUCY0UJALoCAgkAuQICBQJldgUCZXkFAmNHBQJldgoBAmNQAgJjUQJlQgQCZ3cFAmNRBAJlRAgFAmd3Al8xBAJkZQgFAmd3Al8yAwkBAiE9AgUCZGUFBHVuaXQFAmNRBAJlRQkAugICCQC3AgIJALkCAgUCZUQFAmVEBQJlegkAtwICCQC5AgIFAWcFAmVEBQJlQQQCZUYJAQFYAQkAuAICBQJlRQkBBXZhbHVlAQUCZUQDCQDAAgIFAWYFAmVGCQCUCgIFAmVFBQJlQgkAlAoCBQJlRQUEdW5pdAQCY1YJAMwIAgAACQDMCAIAAQkAzAgCAAIJAMwIAgADCQDMCAIABAkAzAgCAAUJAMwIAgAGCQDMCAIABwkAzAgCAAgJAMwIAgAJCQDMCAIACgkAzAgCAAsJAMwIAgAMCQDMCAIADQkAzAgCAA4FA25pbAQCZ3gKAAJjWAUCY1YKAAJjWQkAkAMBBQJjWAoAAmNaCQCUCgIFAmV2BQR1bml0CgECZGECAmRiAmRjAwkAZwIFAmRjBQJjWQUCZGIJAQJjUAIFAmRiCQCRAwIFAmNYBQJkYwoBAmRkAgJkYgJkYwMJAGcCBQJkYwUCY1kFAmRiCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTUJAQJkZAIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIJAQJkYQIFAmNaAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8EAmVECAUCZ3gCXzEEAmRlCAUCZ3gCXzIDCQECIT0CBQJkZQUEdW5pdAUCZUQJAAIBCQCsAgICGVkgY2FsY3VsYXRpb24gZXJyb3IsIFkgPSAJAKYDAQUCZUQBAmd5AAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhUwkBAmFFAQkApQgBBQR0aGlzBx4CY1IBIWNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBSRUFET05MWQMCZ3oCZ3UCZ0EEAmdCAwkAAAIFAmd1BwQCZ0MJAQJhTAIFBHRoaXMJAQJhawAEAmd2CQC3AgIJALYCAQkBAmJQAQkBAmFMAgUEdGhpcwkBAmFqAAkAtgIBBQJnegkAlAoCBQJnQwUCZ3YEAmdDCQECYUwCBQR0aGlzCQECYWoABAJndgkAtwICCQC2AgEJAQJiUAEJAQJhTAIFBHRoaXMJAQJhawAJALYCAQUCZ3oJAJQKAgUCZ0MFAmd2BAJnQwgFAmdCAl8xBAJndggFAmdCAl8yBAJiaQkBAmJhAAQCZGwJAJEDAgUCYmkFAXcEAmRtCQCRAwIFAmJpBQF4BAJjQgkAzAgCCQC2AgEJAQJiUAEFAmRsCQDMCAIJALYCAQkBAmJQAQUCZG0FA25pbAQCZXYJAQJjQQEFAmNCBAJlRAkBAmd0AwUCZ3UFAmV2CQC2AgEFAmd6BAJnRAkAuAICCQC4AgIJALYCAQkBAmJQAQUCZ0MFAmVECQC2AgEAAQQCZ0UJAJYDAQkAzAgCAAAJAMwIAgkAoAMBBQJnRAUDbmlsBAJnRgMJAAACBQJndQcJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJQAQUCZGwJALYCAQUCZ3oJALYCAQUCZ0EJAMwIAgkAuAICCQC2AgEJAQJiUAEFAmRtBQJnRAUDbmlsCQDMCAIJALgCAgkAtgIBCQECYlABBQJkbAUCZ0QJAMwIAgkAtwICCQC3AgIJALYCAQkBAmJQAQUCZG0JALYCAQUCZ3oJALYCAQUCZ0EFA25pbAQCZ0cJAQJjQQEFAmdGBAJlYQMJAMACAgUCZ0cFAmV2BgkAAgEJALkJAgkAzAgCAhRuZXcgRCBpcyBmZXdlciBlcnJvcgkAzAgCCQCmAwEFAmV2CQDMCAIJAKYDAQUCZ0cFA25pbAICX18DCQAAAgUCZWEFAmVhCQCUCgIFA25pbAUCZ0UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1IBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnegJndQJnSAJnSQJnQQQCZ0oKAAJhVQkA/AcEBQJhUwIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFVAgZTdHJpbmcFAmFVCQACAQkArAICCQADAQUCYVUCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZ0sJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCY1IIcGF5bWVudHMAAAZhbW91bnQFAmd6BgkBAmFQAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmNSBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0oGCQECYVABAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmdLBQJnSwQCZm0JAQV2YWx1ZQEJAJEDAggFAmNSCHBheW1lbnRzAAAEAmdMCQECYmcBCAUCZm0HYXNzZXRJZAQCZ00DCQAAAgUCZ3UHBAJnQwkBAmFMAgUEdGhpcwkBAmFrAAQCZ3YJAGUCCQECYlABBQJnTAgJAQV2YWx1ZQEJAJEDAggFAmNSCHBheW1lbnRzAAAGYW1vdW50CQCUCgIFAmdDBQJndgQCZ0MJAQJhTAIFBHRoaXMJAQJhagAEAmd2CQBlAgkBAmJQAQUCZ0wICQEFdmFsdWUBCQCRAwIIBQJjUghwYXltZW50cwAABmFtb3VudAkAlAoCBQJnQwUCZ3YEAmdDCAUCZ00CXzEEAmd2CAUCZ00CXzIEAmJpCQECYmEABAJkbAkAkQMCBQJiaQUBdwQCZG0JAJEDAgUCYmkFAXgEAmNCAwkAAAIFAmd1BwkAzAgCCQC4AgIJALYCAQkBAmJQAQUCZGwJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNSCHBheW1lbnRzAAAGYW1vdW50CQDMCAIJALYCAQkBAmJQAQUCZG0FA25pbAkAzAgCCQC2AgEJAQJiUAEFAmRsCQDMCAIJALgCAgkAtgIBCQECYlABBQJkbQkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCY1IIcGF5bWVudHMAAAZhbW91bnQFA25pbAQCZXYJAQJjQQEFAmNCBAJlRAkBAmd0AwUCZ3UFAmV2CQC2AgEAAAQCZ0QJALgCAgkAuAICCQC2AgEJAQJiUAEFAmdDBQJlRAkAtgIBAAEEAmdFCQCWAwEJAMwIAgAACQDMCAIJAKADAQUCZ0QFA25pbAQCZ04DCQBnAgUCZ0UFAmdIBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdOBQJnTgQCZ0YDCQAAAgUCZ3UHCQDMCAIJALcCAgkAtgIBCQECYlABBQJkbAkAtgIBBQJnQQkAzAgCCQC4AgIJALYCAQkBAmJQAQUCZG0FAmdEBQNuaWwJAMwIAgkAuAICCQC2AgEJAQJiUAEFAmRsBQJnRAkAzAgCCQC3AgIJALYCAQkBAmJQAQUCZG0JALYCAQUCZ0EFA25pbAQCZ0cJAQJjQQEFAmdGBAJlYQMJAMACAgUCZ0cFAmV2BgkAAgECFG5ldyBEIGlzIGZld2VyIGVycm9yAwkAAAIFAmVhBQJlYQkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmdJBQJnRQkBAmJlAQUCZ0MFA25pbAUCZ0UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1IBC2NvbnN0cnVjdG9yAQFZBAJlegkBAmdzAQUCY1IDCQAAAgUCZXoFAmV6CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAAUBWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNSAQpzZXRNYW5hZ2VyAQJnTwQCZXoJAQJncwEFAmNSAwkAAAIFAmV6BQJlegQCZ1AJANkEAQUCZ08DCQAAAgUCZ1AFAmdQCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQAFAmdPBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1IBDmNvbmZpcm1NYW5hZ2VyAAQCY3cJAQJnbwAEAmdRAwkBCWlzRGVmaW5lZAEFAmN3BgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnUQUCZ1EEAmdSAwkAAAIIBQJjUg9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmN3BgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJnUgUCZ1IJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoACQDYBAEJAQV2YWx1ZQEFAmN3CQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYQAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUgEDcHV0AgJnUwJnVAQCZ1UJAQJidQAEAmdWCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJnVQUBQwIKV3Igc3QgYWRkcgQCZ1cJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmdVBQFFAgpXciBzbCBhZGRyAwkAZgIAAAUCZ1MJAAIBAg5Xcm9uZyBzbGlwcGFnZQMJAQIhPQIJAJADAQgFAmNSCHBheW1lbnRzAAIJAAIBAgwyIHBtbnRzIGV4cGQEAmdYCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjUghwYXltZW50cwAABmFtb3VudAQCZ1kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNSCHBheW1lbnRzAAEGYW1vdW50BAJlUQkAuAICCQC2AgEJAQJiUAEJAQJiZwEFAmJvBQJnWAMJAAACBQJlUQUCZVEEAmVSCQC4AgIJALYCAQkBAmJQAQkBAmJnAQUCYnAFAmdZAwkAAAIFAmVSBQJlUgQCZVMJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYm4IcXVhbnRpdHkDCQAAAgUCZVMFAmVTBAJlVAkBAmVNAwUCZ1gFAmdZCQC2AgEAAAMJAAACBQJlVAUCZVQEAmdaCQECZm4KCQClCAEIBQJjUgZjYWxsZXIJANgEAQgFAmNSDXRyYW5zYWN0aW9uSWQJAQ9BdHRhY2hlZFBheW1lbnQCCAkBBXZhbHVlAQkAkQMCCAUCY1IIcGF5bWVudHMAAAdhc3NldElkCAkBBXZhbHVlAQkAkQMCCAUCY1IIcGF5bWVudHMAAAZhbW91bnQJAJEDAggFAmNSCHBheW1lbnRzAAEFAmdTBgcGAAACAAQCZW4IBQJnWgJfMgQCaGEIBQJnWgJfNwQCZEQIBQJnWgJfOQQCZW8IBQJnWgNfMTAEAmVwCAUCZ1oDXzExBAJkbAgFAmdaA18xMgQCZG0IBQJnWgNfMTMEAmRaCQD8BwQFAmFTAgRlbWl0CQDMCAIFAmVuBQNuaWwFA25pbAMJAAACBQJkWgUCZFoEAmhiBAJnbgUCZFoDCQABAgUCZ24CB0FkZHJlc3MEAmhjBQJnbgkA/AcEBQJoYwIEZW1pdAkAzAgCBQJlbgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCaGIFAmhiBAJoZAMJAGYCBQJlbwAACQD8BwQFAmdXAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGwFAmVvBQNuaWwFA25pbAMJAAACBQJoZAUCaGQEAmhlAwkAZgIFAmVwAAAJAPwHBAUCZ1cCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbQUCZXAFA25pbAUDbmlsAwkAAAIFAmhlBQJoZQQCaGYDBQJnVAQCaGcJAPwHBAUCZ1YCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmhhBQJlbgUDbmlsAwkAAAIFAmhnBQJoZwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJjUgZjYWxsZXIFAmVuBQJoYQUDbmlsBAJoaAkBAmVVAwAAAAAAAAQCZ2sIBQJoaAJfMQQCZUwIBQJoaAJfMgQCaGkDCQDAAgIFAmVMBQJlVAYJAQJhUAEJALkJAgkAzAgCAiJ1cGRhdGVkIERMcCBsb3dlciB0aGFuIGN1cnJlbnQgRExwCQDMCAIJAKYDAQUCZVEJAMwIAgkApgMBBQJlUgkAzAgCCQCmAwEFAmVTCQDMCAIJAKYDAQUCZVQJAMwIAgkApgMBBQJlTAkAzAgCCQCkAwEFAmVvCQDMCAIJAKQDAQUCZXAFA25pbAIBIAMJAAACBQJoaQUCaGkEAmhqCAkBBXZhbHVlAQkA7AcBBQJibghxdWFudGl0eQMJAAACBQJoagUCaGoJAM4IAgkAzggCBQJkRAUCaGYFAmdrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNSAQtwdXRPbmVUa25WMgICZk8CZ1QEAmhrCgACYVUJAPwHBAUCYVMCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVQIHQm9vbGVhbgUCYVUJAAIBCQCsAgIJAAMBBQJhVQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGwDAwMJAQJhWAAGCQAAAgUCYm0FAXEGCQAAAgUCYm0FAXMGBQJoawQCZ0sJAMwIAgMDCQEBIQEFAmhsBgkBAmdxAQUCY1IGCQECYVABAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjUghwYXltZW50cwABBgkBAmFQAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0sFAmdLBAJkbAkA2AQBCQEFdmFsdWUBBQJibwQCZG0JANgEAQkBBXZhbHVlAQUCYnAEAmRrBQJibgQCZlMFAmJxBAJmVAUCYnIEAmRqAwkAAAIIBQJjUgZjYWxsZXIFBHRoaXMIBQJjUgxvcmlnaW5DYWxsZXIIBQJjUgZjYWxsZXIEAmZtCQEFdmFsdWUBCQCRAwIIBQJjUghwYXltZW50cwAABAJkaAkA2AQBCQEFdmFsdWUBCAUCZm0HYXNzZXRJZAQCZE4IBQJmbQZhbW91bnQEAmVUAwkAAAIIBQJmbQdhc3NldElkBQJibwkBAmVNAwkAtgIBBQJkTgkAtgIBAAAJALYCAQAACQECZU0DCQC2AgEAAAkAtgIBBQJkTgkAtgIBAAADCQAAAgUCZVQFAmVUBAJobQkBAmZyBQUCZE4FAmRoCQClCAEFAmRqCQDYBAEIBQJjUg10cmFuc2FjdGlvbklkBgMJAAACBQJobQUCaG0EAmN6CAUCaG0CXzMEAmRECAUCaG0CXzIEAmhuCAUCaG0CXzEEAmVuAwMJAGYCBQJmTwAACQBmAgUCZk8FAmhuBwkBAmFQAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmTwUDbmlsAgAFAmhuBAJnWgkA/AcEBQJhUwIEZW1pdAkAzAgCBQJlbgUDbmlsBQNuaWwDCQAAAgUCZ1oFAmdaBAJoYgQCZ24FAmdaAwkAAQIFAmduAgdBZGRyZXNzBAJoYwUCZ24JAPwHBAUCaGMCBGVtaXQJAMwIAgUCZW4FA25pbAUDbmlsBQR1bml0AwkAAAIFAmhiBQJoYgQCaGYDBQJnVAQCaGcJAPwHBAUCYncCCHN0YWtlRm9yCQDMCAIJAKUIAQgFAmNSBmNhbGxlcgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkawUCZW4FA25pbAMJAAACBQJoZwUCaGcFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCY1IGY2FsbGVyBQJlbgUCZGsFA25pbAQCZ2UDCQBmAgUCY3oAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhWgUCY3oJANkEAQUCZGgFA25pbAUDbmlsBAJobwMJAAACBQR0aGlzBQJhWgkAlAoCAAAAAAQCaHADCQAAAggFAmZtB2Fzc2V0SWQFAmJvBgcDBQJocAkAlAoCCQEBLQEFAmN6AAAJAJQKAgAACQEBLQEFAmN6BAJlVggFAmhvAl8xBAJlVwgFAmhvAl8yBAJocQkBAmVVAwUCZVYFAmVXAAAEAmdrCAUCaHECXzEEAmVMCAUCaHECXzIEAmdsCQECZVkCBQJlVAUCZUwDCQAAAgUCZ2wFAmdsCQCUCgIJAM4IAgkAzggCCQDOCAIFAmREBQJoZgUCZ2UFAmdrBQJlbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUgEKcHV0Rm9yRnJlZQECaHIDCQBmAgAABQJocgkAAgECCldyb25nIHNscGcDCQECIT0CCQCQAwEIBQJjUghwYXltZW50cwACCQACAQIMMiBwbW50cyBleHBkBAJocwkBAmZuCgkApQgBCAUCY1IGY2FsbGVyCQDYBAEIBQJjUg10cmFuc2FjdGlvbklkCQEPQXR0YWNoZWRQYXltZW50AggJAQV2YWx1ZQEJAJEDAggFAmNSCHBheW1lbnRzAAAHYXNzZXRJZAgJAQV2YWx1ZQEJAJEDAggFAmNSCHBheW1lbnRzAAAGYW1vdW50CQCRAwIIBQJjUghwYXltZW50cwABBQJocgcHBgAAAgAEAmRECAUCaHMCXzkEAmdYCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJjUghwYXltZW50cwAABmFtb3VudAQCZ1kJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmNSCHBheW1lbnRzAAEGYW1vdW50BAJlVAkBAmVNAwUCZ1gFAmdZCQC2AgEAAAMJAAACBQJlVAUCZVQEAmh0CQECZVUDAAAAAAAABAJnawgFAmh0Al8xBAJlTAgFAmh0Al8yBAJnbAkBAmVZAgUCZVQFAmVMAwkAAAIFAmdsBQJnbAkAzggCBQJkRAUCZ2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1IBA2dldAAEAmVUCQECZU0DCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVUBQJlVAQCZFoJAQJmbAEFAmNSBAJodQgFAmRaAl8xBAJkQwgFAmRaAl8yBAJkTggFAmRaAl8zBAJkaAgFAmRaAl80BAJkRAgFAmRaAl81BAJlQQkA/AcEBQJhUwIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkaAUCZE4FA25pbAMJAAACBQJlQQUCZUEEAmh2CQECZVUDCQEBLQEFAmh1CQEBLQEFAmRDAAAEAmdrCAUCaHYCXzEEAmVMCAUCaHYCXzIEAmdsCQECZVkCBQJlVAUCZUwDCQAAAgUCZ2wFAmdsCQDOCAIFAmREBQJnawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUgELZ2V0T25lVGtuVjICAmZOAmZPBAJoawoAAmFVCQD8BwQFAmFTAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVUCB0Jvb2xlYW4FAmFVCQACAQkArAICCQADAQUCYVUCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmh3AwMJAQJhWAAGCQAAAgUCYm0FAXMGBQJoawQCZ0sJAMwIAgMDCQEBIQEFAmh3BgkBAmdxAQUCY1IGCQECYVABAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJjUghwYXltZW50cwABBgkBAmFQAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0sFAmdLBAJoeAkBAmZNBgUCZk4FAmZPCAUCY1IIcGF5bWVudHMIBQJjUgZjYWxsZXIIBQJjUgxvcmlnaW5DYWxsZXIIBQJjUg10cmFuc2FjdGlvbklkBAJkRAgFAmh4Al8xBAJmWAgFAmh4Al8yCQCUCgIFAmREBQJmWAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUgEKcmVmcmVzaERMcAAEAmh5CQELdmFsdWVPckVsc2UCCQCfCAEFAmFxAAAEAmh6AwkAZwIJAGUCBQZoZWlnaHQFAmh5BQJhdAUEdW5pdAkBAmFQAQkAuQkCCQDMCAIJAKQDAQUCYXQJAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmh6BQJoegQCZmYJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFwAgEwCQECYVIBAgtpbnZhbGlkIGRMcAQCaEEJAQJlVQMAAAAAAAAEAmhCCAUCaEECXzEEAmVMCAUCaEECXzIEAmVYAwkBAiE9AgUCZmYFAmVMBQJoQgkBAmFQAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVYCQCmAwEFAmVMCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNSARNnZXRPbmVUa25WMlJFQURPTkxZAgJmTgJoQwQCZGwJANgEAQkBBXZhbHVlAQUCYm8EAmRtCQDYBAEJAQV2YWx1ZQEFAmJwBAJkawkA2AQBCQEFdmFsdWUBBQJibgQCY0IJAMwIAgkAtgIBCQECYlABBQJkbAkAzAgCCQC2AgEJAQJiUAEFAmRtBQNuaWwEAmVLCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJkawIQaW52YWxpZCBscCBhc3NldAhxdWFudGl0eQQCY2QJAQJjQQEFAmNCBAJjYwkAuAICBQJjZAkAvAIDCQC2AgEFAmhDBQJjZAUCZUsEAmhEAwkAAAIFAmZOBQJkbAAAAwkAAAIFAmZOBQJkbQABCQACAQIUaW52YWxpZCBvdXQgYXNzZXQgaWQEAmhFCQECZXUDBQJjQgUCaEQFAmNjBAJnRAkAuAICCQCRAwIFAmNCBQJoRAUCaEUEAmdFCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAuAICBQJnRAUBZgUDbmlsBAJoRgkBAmN4AgUCZ0UFAmFWBAJmVwgFAmhGAl8xBAJjeggFAmhGAl8yCQCUCgIFA25pbAkAlAoCBQJmVwUCY3oCY1IBHGdldE9uZVRrblYyV2l0aEJvbnVzUkVBRE9OTFkCAmZOAmhDBAJkbAkA2AQBCQEFdmFsdWUBBQJibwQCZG0JANgEAQkBBXZhbHVlAQUCYnAEAmRrCQDYBAEJAQV2YWx1ZQEFAmJuBAJkcgkBAmJQAQUCZGwEAmR0CQECYlABBQJkbQQCaEcKAAJhVQkA/AcEBQR0aGlzAhNnZXRPbmVUa25WMlJFQURPTkxZCQDMCAIFAmZOCQDMCAIFAmhDBQNuaWwFA25pbAMJAAECBQJhVQIKKEludCwgSW50KQUCYVUJAAIBCQCsAgIJAAMBBQJhVQIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZlcIBQJoRwJfMQQCY3oIBQJoRwJfMgQCZFoJAQJkZgQCAAUCZGsFAmhDBQR0aGlzBAJkQggFAmRaAl8xBAJkQwgFAmRaAl8yBAJoSAkAZAIFAmRCBQJkQwQCZkwDCQAAAgUCaEgAAAMJAAACBQJmVwAAAAAJAAIBAhdib251cyBjYWxjdWxhdGlvbiBlcnJvcgkAawMJAGUCBQJmVwUCaEgFAWEFAmhICQCUCgIFA25pbAkAlQoDBQJmVwUCY3oFAmZMAmNSAQlnZXROb0xlc3MCAmhJAmhKBAJkWgkBAmZsAQUCY1IEAmRCCAUCZFoCXzEEAmRDCAUCZFoCXzIEAmROCAUCZFoCXzMEAmRoCAUCZFoCXzQEAmRECAUCZFoCXzUDCQBmAgUCaEkFAmRCCQACAQkArAICCQCsAgIJAKwCAgIJRmFpbGVkOiAgCQCkAwEFAmRCAgMgPCAJAKQDAQUCaEkDCQBmAgUCaEoFAmRDCQACAQkArAICCQCsAgIJAKwCAgIIRmFpbGVkOiAJAKQDAQUCZEMCAyA8IAkApAMBBQJoSgQCZVQJAQJlTQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZVQFAmVUBAJoSwkA/AcEBQJhUwIEYnVybgkAzAgCBQJkTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkaAUCZE4FA25pbAMJAAACBQJoSwUCaEsEAmhMCQECZVUDCQEBLQEFAmRCCQEBLQEFAmRDAAAEAmdrCAUCaEwCXzEEAmVMCAUCaEwCXzIEAmdsCQECZVkCBQJlVAUCZUwDCQAAAgUCZ2wFAmdsCQDOCAIFAmREBQJnawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUgENdW5zdGFrZUFuZEdldAECY3kEAmhNAwkBAiE9AgkAkAMBCAUCY1IIcGF5bWVudHMAAAkAAgECDU5vIHBtbnRzIGV4cGQGAwkAAAIFAmhNBQJoTQQCaE4JAQJidQAEAmhhBQJibgQCaE8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhOBQFDAgpXciBzdCBhZGRyBAJlVAkBAmVNAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlVAUCZVQEAmhQCQD8BwQFAmhPAgd1bnN0YWtlCQDMCAIJANgEAQUCaGEJAMwIAgUCY3kFA25pbAUDbmlsAwkAAAIFAmhQBQJoUAQCZFoJAQJkZgQJANgEAQgFAmNSDXRyYW5zYWN0aW9uSWQJANgEAQUCaGEFAmN5CAUCY1IGY2FsbGVyBAJkQggFAmRaAl8xBAJkQwgFAmRaAl8yBAJkcAkBDXBhcnNlSW50VmFsdWUBCAUCZFoCXzkEAmRECAUCZFoDXzEwBAJoUQMDCQECYVgABgkAAAIFAmRwBQFzCQACAQkArAICAglCbG9ja2VkOiAJAKQDAQUCZHAGAwkAAAIFAmhRBQJoUQQCaFIJAPwHBAUCYVMCBGJ1cm4JAMwIAgUCY3kFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCaGEFAmN5BQNuaWwDCQAAAgUCaFIFAmhSBAJoUwkBAmVVAwkBAS0BBQJkQgkBAS0BBQJkQwAABAJnawgFAmhTAl8xBAJlTAgFAmhTAl8yBAJnbAkBAmVZAgUCZVQFAmVMAwkAAAIFAmdsBQJnbAkAzggCBQJkRAUCZ2sJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CY1IBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmhUAmhVAmhKBAJodwMJAQJhWAAGCQAAAgUCYm0FAXMEAmdLCQDMCAIDCQEBIQEFAmh3BgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmNSCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZ0sFAmdLBAJlVAkBAmVNAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlVAUCZVQEAmhQCQD8BwQFAmJ3Agd1bnN0YWtlCQDMCAIJANgEAQUCYm4JAMwIAgUCaFQFA25pbAUDbmlsAwkAAAIFAmhQBQJoUAQCaFYJAQJkZgQJANgEAQgFAmNSDXRyYW5zYWN0aW9uSWQJANgEAQUCYm4FAmhUCAUCY1IGY2FsbGVyBAJkQggFAmhWAl8xBAJkQwgFAmhWAl8yBAJkRAgFAmhWA18xMAQCaFcJAMwIAgMJAGcCBQJkQgUCaFUGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaFUFA25pbAIACQDMCAIDCQBnAgUCZEMFAmhKBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEoFA25pbAIABQNuaWwDCQAAAgUCaFcFAmhXBAJoSwkA/AcEBQJhUwIEYnVybgkAzAgCBQJoVAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJibgUCaFQFA25pbAMJAAACBQJoSwUCaEsEAmhYCQECZVUDCQEBLQEFAmRCCQEBLQEFAmRDAAAEAmdrCAUCaFgCXzEEAmVMCAUCaFgCXzIEAmdsCQECZVkCBQJlVAUCZUwDCQAAAgUCZ2wFAmdsCQDOCAIFAmREBQJnawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJjUgEVdW5zdGFrZUFuZEdldE9uZVRrblYyAwJoVAJmTgJmTwQCaGsKAAJhVQkA/AcEBQJhUwIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFVAgdCb29sZWFuBQJhVQkAAgEJAKwCAgkAAwEFAmFVAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJodwMDCQECYVgABgkAAAIFAmJtBQFzBgUCaGsEAmdLCQDMCAIDAwkBASEBBQJodwYJAQJncQEFAmNSBgkBAmFQAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCY1IIcGF5bWVudHMAAAYJAQJhUAECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmdLBQJnSwQCaE4JAQJidQAEAmhhBQJibgQCaE8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIFAmhOBQFDAgpXciBzdCBhZGRyBAJkaggFAmNSBmNhbGxlcgQCaFkFBHRoaXMEAmhQCQD8BwQFAmhPAg91bnN0YWtlSU5URVJOQUwJAMwIAgUCaGEJAMwIAgUCaFQJAMwIAggFAmRqBWJ5dGVzCQDMCAIIBQJoWQVieXRlcwUDbmlsBQNuaWwDCQAAAgUCaFAFAmhQBAJoWgkBAmZNBgUCZk4FAmZPCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJoYQUCaFQFA25pbAgFAmNSBmNhbGxlcggFAmNSDG9yaWdpbkNhbGxlcggFAmNSDXRyYW5zYWN0aW9uSWQEAmRECAUCaFoCXzEEAmZYCAUCaFoCXzIJAJQKAgUCZEQFAmZYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmNSARxwdXRPbmVUa25WMldpdGhCb251c1JFQURPTkxZAgJpYQJpYgQCaWMJAQJmcgUFAmlhBQJpYgIAAgAGBAJmRwgFAmljAl8xBAJkRAgFAmljAl8yBAJjeggFAmljAl8zBAJmTAgFAmljAl80CQCUCgIFA25pbAkAlQoDBQJmRwUCY3oFAmZMAmNSASFwdXRPbmVUa25WMldpdGhvdXRUYWtlRmVlUkVBRE9OTFkCAmlhAmliBAJpZAkBAmZyBQUCaWEFAmliAgACAAcEAmZHCAUCaWQCXzEEAmRECAUCaWQCXzIEAmN6CAUCaWQCXzMEAmZMCAUCaWQCXzQJAJQKAgUDbmlsCQCVCgMFAmZHBQJjegUCZkwCY1IBCGFjdGl2YXRlAgJpZQJpZgMJAQIhPQIJAKUIAQgFAmNSBmNhbGxlcgkApQgBBQJhUwkAAgECBmRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagAFAmllCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhawAFAmlmBQNuaWwCB3N1Y2Nlc3MCY1IBBHNldFMCAmlnAmhRAwkBAiE9AgkApQgBCAUCY1IGY2FsbGVyCQECYUwCBQR0aGlzCQECYW0ABQJncAkAzAgCCQELU3RyaW5nRW50cnkCBQJpZwUCaFEFA25pbAJjUgEEc2V0SQICaWcCaFEDCQECIT0CCQClCAEIBQJjUgZjYWxsZXIJAQJhTAIFBHRoaXMJAQJhbQAFAmdwCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJpZwUCaFEFA25pbAJjUgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmEAAmNSARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJiUQkAlAoCBQNuaWwJAQJiUAEFAmJRAmNSARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjagJjawJjbwQCaWgJAQJjbgMFAmNqBQJjawUCY28JAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJpaAAACQDMCAIJAKYDAQkAkQMCBQJpaAABCQDMCAIJAKYDAQkAkQMCBQJpaAACBQNuaWwCY1IBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAU0CaWkJAJQKAgUDbmlsCQEBTAIJAKcDAQUBTQUCaWkCY1IBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQCmAwEJAQFIAgUBSQUBSgJjUgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiUwJiVAkAlAoCBQNuaWwJAKYDAQkBAmJSAgkApwMBBQJiUwkApwMBBQJiVAJjUgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRnAmJZAmRGAmRHAmRIAmRJAmlqAmRKAmRLCQCUCgIFA25pbAkBAmRFDQUCZGcFAmJZBQJkRgUCZEcFAmRIBQJkSQUCaWoFAmRKBQJkSwYHAAACAAJjUgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRnAmlrAmRpAmlqBAJkWgkBAmRmBAUCZGcFAmlrBQJkaQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCaWoJAJQKAgUDbmlsCQCcCgoIBQJkWgJfMQgFAmRaAl8yCAUCZFoCXzMIBQJkWgJfNAgFAmRaAl81CAUCZFoCXzYIBQJkWgJfNwkApgMBCAUCZFoCXzgIBQJkWgJfOQgFAmRaA18xMAECaWwBAmltAAQCaW4EAmduCQECZ20AAwkAAQIFAmduAgpCeXRlVmVjdG9yBAJncgUCZ24FAmdyAwkAAQIFAmduAgRVbml0CAUCaWwPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmduBQJpbAMJAAECBQJnbgIFT3JkZXIEAmZiBQJnbgQCaW8JAQJhWQAEAmlwAwkBAmd5AAkAlAoCBgIACQECZmEBBQJmYgQCYUgIBQJpcAJfMQQCYUkIBQJpcAJfMgQCYUoJAPQDAwgFAmZiCWJvZHlCeXRlcwkAkQMCCAUCZmIGcHJvb2ZzAAAIBQJmYg9zZW5kZXJQdWJsaWNLZXkEAmFLCQD0AwMIBQJmYglib2R5Qnl0ZXMJAJEDAggFAmZiBnByb29mcwABBQJpbwMDAwUCYUgFAmFKBwUCYUsHBgkBAmFHBAUCYUgFAmFJBQJhSgUCYUsDCQABAgUCZ24CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJjRQUCZ24DCQD0AwMIBQJpbAlib2R5Qnl0ZXMJAJEDAggFAmlsBnByb29mcwAABQJpbgYEAmlxCQD2AwEJAQV2YWx1ZQEIBQJjRQZzY3JpcHQEAmlyCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVMJAQJhQwAEAmlzCQDxBwEFBHRoaXMDCQAAAgUCaXIFAmlxCQECIT0CBQJpcwUCaXEHCQD0AwMIBQJpbAlib2R5Qnl0ZXMJAJEDAggFAmlsBnByb29mcwAABQJpbutAyXM=", "height": 3566658, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Bsr5dYLr9pAjDm9swZpMQebZQtH7STrUdzxQw2tLcnKk Next: DiVZQE6C8A8A4jZEXSyPiiv9PenDUf3MxWPN4xgfdcjb Diff:
OldNewDifferences
12681268 then {
12691269 let hf = if (gT)
12701270 then {
1271- let hg = invoke(bw, "stake", nil, [AttachedPayment(dk, en)])
1271+ let hg = invoke(bw, "stakeFor", [toString(cR.caller)], [AttachedPayment(dk, en)])
12721272 if ((hg == hg))
12731273 then nil
12741274 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 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 (I,J) = fraction(I, c, J)
7474
7575
7676 func L (M,N) = toInt(fraction(M, toBigInt(N), c))
7777
7878
7979 func O (M,N,P) = toInt(fraction(M, toBigInt(N), c, P))
8080
8181
8282 func Q (I,J) = fraction(I, c, toBigInt(J))
8383
8484
8585 func R (M,N) = fraction(M, toBigInt(N), c)
8686
8787
8888 func S (T,U,V) = fraction(T, U, V)
8989
9090
9191 func W (M) = if ((d > M))
9292 then -(M)
9393 else M
9494
9595
9696 func X (M) = if ((d > M))
9797 then -(M)
9898 else M
9999
100100
101101 func Y () = "%s__factoryContract"
102102
103103
104104 func Z () = "%s__managerPublicKey"
105105
106106
107107 func aa () = "%s__pendingManagerPublicKey"
108108
109109
110110 func ab () = "%s%s__price__last"
111111
112112
113113 func ac (ad,ae) = makeString(["%s%s%d%d__price__history", toString(ad), toString(ae)], n)
114114
115115
116116 func af (ag,ah) = ((("%s%s%s__P__" + ag) + "__") + ah)
117117
118118
119119 func ai (ag,ah) = ((("%s%s%s__G__" + ag) + "__") + ah)
120120
121121
122122 func aj () = "%s__amountAsset"
123123
124124
125125 func ak () = "%s__priceAsset"
126126
127127
128128 func al () = "%s__amp"
129129
130130
131131 func am () = "%s__addonAddr"
132132
133133
134134 let an = "%s__fee"
135135
136136 let ao = valueOrElse(getInteger(this, an), G)
137137
138138 let ap = makeString(["%s", "dLp"], n)
139139
140140 let aq = makeString(["%s", "dLpRefreshedHeight"], n)
141141
142142 let ar = makeString(["%s", "refreshDLpDelay"], n)
143143
144144 let as = 30
145145
146146 let at = valueOrElse(getInteger(this, ar), as)
147147
148148 func au () = "%s__factoryConfig"
149149
150150
151151 func av () = "%s%s__matcher__publicKey"
152152
153153
154154 func aw (ax,ay) = (((("%d%d%s__" + ax) + "__") + ay) + "__config")
155155
156156
157157 func az (aA) = ("%s%s%s__mappings__baseAsset2internalId__" + aA)
158158
159159
160160 func aB () = "%s__shutdown"
161161
162162
163163 func aC () = "%s__allowedLpStableScriptHash"
164164
165165
166166 func aD () = "%s__feeCollectorAddress"
167167
168168
169169 func aE (aF) = ("%s%s__skipOrderValidation__" + aF)
170170
171171
172172 func aG (aH,aI,aJ,aK) = throw((((((((("order validation failed: orderValid=" + toString(aH)) + " (") + aI) + ")") + " senderValid=") + toString(aJ)) + " matcherValid=") + toString(aK)))
173173
174174
175175 func aL (aM,aN) = valueOrErrorMessage(getString(aM, aN), makeString(["mandatory ", toString(aM), ".", aN, " not defined"], ""))
176176
177177
178178 func aO (aM,aN) = valueOrErrorMessage(getInteger(aM, aN), makeString(["mandatory ", toString(aM), ".", aN, " not defined"], ""))
179179
180180
181181 func aP (aQ) = throw(makeString(["lp_stable.ride:", aQ], " "))
182182
183183
184184 func aR (aQ) = makeString(["lp_stable.ride:", aQ], " ")
185185
186186
187187 let aS = addressFromStringValue(aL(this, Y()))
188188
189189 let aT = {
190190 let aU = invoke(aS, "getInFeeREADONLY", [toString(this)], nil)
191191 if ($isInstanceOf(aU, "Int"))
192192 then aU
193193 else throw(($getType(aU) + " couldn't be cast to Int"))
194194 }
195195
196196 let aV = {
197197 let aU = invoke(aS, "getOutFeeREADONLY", [toString(this)], nil)
198198 if ($isInstanceOf(aU, "Int"))
199199 then aU
200200 else throw(($getType(aU) + " couldn't be cast to Int"))
201201 }
202202
203203 let aW = aL(this, al())
204204
205205 func aX () = valueOrElse(getBoolean(aS, aB()), false)
206206
207207
208208 func aY () = fromBase58String(aL(aS, av()))
209209
210210
211211 let aZ = addressFromStringValue(aL(aS, aD()))
212212
213213 func ba () = {
214214 let bb = aL(this, aj())
215215 let bc = aL(this, ak())
216216 let bd = aO(aS, az(bc))
217217 let ax = aO(aS, az(bb))
218218 split(aL(aS, aw(toString(ax), toString(bd))), n)
219219 }
220220
221221
222222 func be (bf) = if ((bf == k))
223223 then unit
224224 else fromBase58String(bf)
225225
226226
227227 func bg (bf) = if ((bf == unit))
228228 then k
229229 else toBase58String(value(bf))
230230
231231
232232 func bh (bi) = $Tuple9(addressFromStringValue(bi[t]), parseIntValue(bi[u]), fromBase58String(bi[v]), be(bi[w]), be(bi[x]), parseIntValue(bi[y]), parseIntValue(bi[z]), fromBase58String(bi[A]), fromBase58String(bi[B]))
233233
234234
235235 let bj = bh(ba())
236236
237237 let bk = bj
238238
239239 let bl = bk._1
240240
241241 let bm = bk._2
242242
243243 let bn = bk._3
244244
245245 let bo = bk._4
246246
247247 let bp = bk._5
248248
249249 let bq = bk._6
250250
251251 let br = bk._7
252252
253253 let bs = bk._8
254254
255255 let bt = bk._9
256256
257257 func bu () = split(aL(aS, au()), n)
258258
259259
260260 let bv = bu()
261261
262262 let bw = valueOrErrorMessage(addressFromString(bv[C]), "Invalid staking contract address")
263263
264264 let bx = valueOrErrorMessage(addressFromString(bv[E]), "Invalid slipage contract address")
265265
266266 let by = valueOrErrorMessage(addressFromString(bv[F]), "Invalid gwx contract address")
267267
268268 let bz = valueOrErrorMessage(addressFromString(bv[D]), "Invalid gwx contract address")
269269
270270 func bA (bB,bC,bD,bE,bF,bG,bH,bI,bJ,bK) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK)], n)
271271
272272
273273 func bL (bM,bN,bO,bE,bH,bI) = makeString(["%d%d%d%d%d%d", toString(bM), toString(bN), toString(bO), toString(bE), toString(bH), toString(bI)], n)
274274
275275
276276 func bP (bQ) = if ((bQ == "WAVES"))
277277 then wavesBalance(this).available
278278 else assetBalance(this, fromBase58String(bQ))
279279
280280
281281 func bR (bS,bT) = fraction(bS, c, bT)
282282
283283
284284 func bU (bS,bT,P) = fraction(bS, c, bT, P)
285285
286286
287287 func bV (bW,bX,bY) = {
288288 let bZ = fraction((bW - bX), b, bX)
289289 let ca = ((bY - W(bZ)) > d)
290290 if (!(ca))
291291 then throw(("Big slpg: " + toString(bZ)))
292292 else $Tuple2(ca, min([bW, bX]))
293293 }
294294
295295
296296 func cb (cc,cd,ce) = {
297297 let bZ = fraction(cd, b, cc)
298298 let cf = (ce > bZ)
299299 if (if (cf)
300300 then true
301301 else (cd > cc))
302302 then throw(((((((toString(cd) + " ") + toString(cc)) + " ") + toString(bZ)) + " ") + toString(ce)))
303303 else cf
304304 }
305305
306306
307307 func cg (ch,ci,cj,ck) = {
308308 let cl = H(cj, ch)
309309 let cm = H(ck, ci)
310310 bR(cm, cl)
311311 }
312312
313313
314314 func cn (cj,ck,co) = {
315315 let cp = bq
316316 let cq = br
317317 let cr = cg(cp, cq, cj, ck)
318318 let bT = H(cj, cp)
319319 let bS = H(ck, cq)
320320 let cs = H(co, a)
321321 let ct = bR(bT, cs)
322322 let cu = bR(bS, cs)
323323 [cr, ct, cu]
324324 }
325325
326326
327327 func cv (cj,ck,co) = {
328328 let cw = cn(cj, ck, co)
329329 [L(cw[0], a), L(cw[1], a), L(cw[2], a)]
330330 }
331331
332332
333333 func cx (cy,ao) = {
334334 let cz = if ((ao == 0))
335335 then 0
336336 else fraction(cy, ao, a)
337337 $Tuple2((cy - cz), cz)
338338 }
339339
340340
341341 func cA (cB) = {
342342 let cC = cB[0]
343343 let cD = cB[1]
344344 let cE = (cC + cD)
345345 if ((cE == e))
346346 then e
347347 else {
348348 let cF = parseIntValue(aW)
349349 let cG = (cF * 2)
350350 let cw = fraction(cC, cD, f)
351351 let cH = fraction(cw, i, f)
352352 let cI = fraction(toBigInt(cG), cE, f)
353353 let cJ = toBigInt((cG - 1))
354354 func cK (cL) = {
355355 let cM = fraction(cL, cL, f)
356356 let cN = fraction(cM, cL, f)
357357 let cO = fraction(cN, f, cH)
358358 fraction((cI + fraction(cO, g, f)), cL, (fraction(cJ, cL, f) + fraction(h, cO, f)))
359359 }
360360
361361 func cP (cQ,cR) = if (cQ._2)
362362 then cQ
363363 else {
364364 let cL = cQ._1
365365 let cS = cK(cL)
366366 let cT = (cS - value(cL))
367367 let cU = if ((e > cT))
368368 then -(cT)
369369 else cT
370370 if ((f >= cU))
371371 then $Tuple2(cS, true)
372372 else $Tuple2(cS, false)
373373 }
374374
375375 let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
376376 let cW = {
377377 let cX = cV
378378 let cY = size(cX)
379379 let cZ = $Tuple2(cE, false)
380380 func da (db,dc) = if ((dc >= cY))
381381 then db
382382 else cP(db, cX[dc])
383383
384384 func dd (db,dc) = if ((dc >= cY))
385385 then db
386386 else throw("List size exceeds 17")
387387
388388 dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17)
389389 }
390390 let cL = cW._1
391391 let de = cW._2
392392 if (de)
393393 then cL
394394 else throw(("D calculation error, D = " + toString(cL)))
395395 }
396396 }
397397
398398
399399 func df (dg,dh,di,dj) = {
400400 let dk = bn
401401 let dl = toBase58String(value(bo))
402402 let dm = toBase58String(value(bp))
403403 let dn = bq
404404 let do = br
405405 let dp = toString(bm)
406406 let dq = valueOrErrorMessage(assetInfo(dk), "Wrong LP id").quantity
407407 if ((toBase58String(dk) != dh))
408408 then throw("Wrong pmt asset")
409409 else {
410410 let dr = bP(dl)
411411 let ds = H(dr, dn)
412412 let dt = bP(dm)
413413 let du = H(dt, do)
414414 let dv = bR(du, ds)
415415 let dw = L(dv, a)
416416 let dx = H(di, a)
417417 let dy = H(dq, a)
418418 let dz = fraction(ds, dx, dy)
419419 let dA = fraction(du, dx, dy)
420420 let dB = O(dz, dn, FLOOR)
421421 let dC = O(dA, do, FLOOR)
422422 let dD = if ((dg == ""))
423423 then nil
424424 else [ScriptTransfer(dj, dB, if ((dl == "WAVES"))
425425 then unit
426426 else fromBase58String(dl)), ScriptTransfer(dj, dC, if ((dm == "WAVES"))
427427 then unit
428428 else fromBase58String(dm)), StringEntry(ai(toString(dj), dg), bL(dB, dC, di, dw, height, lastBlock.timestamp)), IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw)]
429429 $Tuple10(dB, dC, dl, dm, dr, dt, dq, dv, dp, dD)
430430 }
431431 }
432432
433433
434434 func dE (dg,bY,dF,dG,dH,dI,dj,dJ,dK,dL,dM,dN,dO) = {
435435 let dk = bn
436436 let dP = toBase58String(value(bo))
437437 let dQ = toBase58String(value(bp))
438438 let dR = bs
439439 let dS = bt
440440 let dT = bq
441441 let dU = br
442442 let dp = toString(bm)
443443 let dV = valueOrErrorMessage(assetInfo(dk), "Wr lp as").quantity
444444 let dr = if (dJ)
445445 then bP(dP)
446446 else if (if (dL)
447447 then (dO == dP)
448448 else false)
449449 then (bP(dP) - dN)
450450 else if (dL)
451451 then bP(dP)
452452 else (bP(dP) - dF)
453453 let dt = if (dJ)
454454 then bP(dQ)
455455 else if (if (dL)
456456 then (dO == dQ)
457457 else false)
458458 then (bP(dQ) - dN)
459459 else if (dL)
460460 then bP(dQ)
461461 else (bP(dQ) - dH)
462462 let dW = H(dF, dT)
463463 let dX = H(dH, dU)
464464 let dY = bR(dX, dW)
465465 let ds = H(dr, dT)
466466 let du = H(dt, dU)
467467 let cd = cA([ds, du])
468468 let dZ = if ((dV == 0))
469469 then {
470470 let cc = cA([(ds + dW), (du + dX)])
471471 let ea = if ((cc > cd))
472472 then true
473473 else throw("D1 should be greater than D0")
474474 if ((ea == ea))
475475 then {
476476 let dv = d
477477 let eb = d
478478 let cs = cc
479479 $Tuple5(L(cs, a), L(dW, dT), L(dX, dU), bR((du + dX), (ds + dW)), eb)
480480 }
481481 else throw("Strict value is not equal to itself.")
482482 }
483483 else {
484484 let dv = bR(du, ds)
485485 let ec = fraction(W((dv - dY)), c, dv)
486486 let eb = H(bY, a)
487487 if (if (if (dM)
488488 then (dv != d)
489489 else false)
490490 then (ec > eb)
491491 else false)
492492 then throw(((("Price slippage " + toString(ec)) + " > ") + toString(eb)))
493493 else {
494494 let ed = H(dV, a)
495495 let ee = fraction(dW, bU(du, ds, CEILING), c, CEILING)
496496 let ef = fraction(dX, c, bU(du, ds, FLOOR), CEILING)
497497 let eg = if ((ee > dX))
498498 then $Tuple2(ef, dX)
499499 else $Tuple2(dW, ee)
500500 let eh = eg._1
501501 let ei = eg._2
502502 let cc = cA([(ds + eh), (du + ei)])
503503 let ea = if ((cc > cd))
504504 then true
505505 else throw("D1 should be greater than D0")
506506 if ((ea == ea))
507507 then {
508508 let cs = fraction(ed, (cc - cd), cd)
509509 $Tuple5(O(cs, a, FLOOR), O(eh, dT, CEILING), O(ei, dU, CEILING), dv, eb)
510510 }
511511 else throw("Strict value is not equal to itself.")
512512 }
513513 }
514514 let ej = dZ._1
515515 let ek = dZ._2
516516 let el = dZ._3
517517 let dw = L(dZ._4, a)
518518 let em = L(dZ._5, a)
519519 if ((0 >= ej))
520520 then throw("LP <= 0")
521521 else {
522522 let en = if (!(dK))
523523 then 0
524524 else ej
525525 let eo = (dF - ek)
526526 let ep = (dH - el)
527527 let eq = if (if (dL)
528528 then (dO == dP)
529529 else false)
530530 then $Tuple2(dN, 0)
531531 else if (if (dL)
532532 then (dO == dQ)
533533 else false)
534534 then $Tuple2(0, dN)
535535 else $Tuple2(ek, el)
536536 let er = eq._1
537537 let es = eq._2
538538 let et = [IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw), StringEntry(af(dj, dg), bA(er, es, en, dw, bY, em, height, lastBlock.timestamp, eo, ep))]
539539 $Tuple13(ej, en, dw, dr, dt, dV, dk, dp, et, eo, ep, dG, dI)
540540 }
541541 }
542542
543543
544544 func eu (cB,cR,ev) = {
545545 let ew = g
546546 let ex = cB[if ((cR == 0))
547547 then 1
548548 else 0]
549549 let ey = parseBigIntValue(l)
550550 let cF = (parseBigIntValue(aW) * ey)
551551 let cE = ex
552552 let cG = (cF * ew)
553553 let ez = (((((ev * ev) / (ex * ew)) * ev) * ey) / (cG * ew))
554554 let eA = ((cE + ((ev * ey) / cG)) - ev)
555555 func cP (cQ,eB) = {
556556 let eC = cQ
557557 let eD = eC._1
558558 let de = eC._2
559559 if ((de != unit))
560560 then cQ
561561 else {
562562 let eE = (((eD * eD) + ez) / ((g * eD) + eA))
563563 let eF = X((eE - value(eD)))
564564 if ((f >= eF))
565565 then $Tuple2(eE, eB)
566566 else $Tuple2(eE, unit)
567567 }
568568 }
569569
570570 let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
571571 let eG = {
572572 let cX = cV
573573 let cY = size(cX)
574574 let cZ = $Tuple2(ev, unit)
575575 func da (db,dc) = if ((dc >= cY))
576576 then db
577577 else cP(db, cX[dc])
578578
579579 func dd (db,dc) = if ((dc >= cY))
580580 then db
581581 else throw("List size exceeds 15")
582582
583583 dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
584584 }
585585 let eD = eG._1
586586 let de = eG._2
587587 if ((de != unit))
588588 then eD
589589 else throw(("Y calculation error, Y = " + toString(eD)))
590590 }
591591
592592
593593 func eH (eI,eJ,eK) = {
594594 let eL = fraction(cA([K(eI, toBigInt(bq)), K(eJ, toBigInt(br))]), c, eK)
595595 if ((eK == e))
596596 then e
597597 else eL
598598 }
599599
600600
601601 func eM (eN,eO,eP) = {
602602 let eQ = (toBigInt(bP(bg(bo))) - eN)
603603 let eR = (toBigInt(bP(bg(bp))) - eO)
604604 let eS = (toBigInt(value(assetInfo(bn)).quantity) - eP)
605605 let eT = eH(eQ, eR, eS)
606606 eT
607607 }
608608
609609
610610 func eU (eV,eW,eP) = {
611611 let eQ = (bP(bg(bo)) + eV)
612612 let eR = (bP(bg(bp)) + eW)
613613 let eS = (value(assetInfo(bn)).quantity + eP)
614614 let eL = eH(toBigInt(eQ), toBigInt(eR), toBigInt(eS))
615615 let eX = [IntegerEntry(aq, height), StringEntry(ap, toString(eL))]
616616 $Tuple2(eX, eL)
617617 }
618618
619619
620620 func eY (eZ,eL) = if ((eL >= eZ))
621621 then true
622622 else aP("updated DLp lower than current DLp")
623623
624624
625625 func fa (fb) = {
626626 let eQ = bP(bg(bo))
627627 let eR = bP(bg(bp))
628628 let fc = fb.amount
629629 let fd = fraction(fb.amount, fb.price, a, FLOOR)
630630 let fe = if ((fb.orderType == Buy))
631631 then $Tuple2(fc, -(fd))
632632 else $Tuple2(-(fc), fd)
633633 let eV = fe._1
634634 let eW = fe._2
635635 if (if (if (aX())
636636 then true
637637 else (bm == r))
638638 then true
639639 else (bm == s))
640640 then throw("Admin blocked")
641641 else if (if ((fb.assetPair.amountAsset != bo))
642642 then true
643643 else (fb.assetPair.priceAsset != bp))
644644 then throw("Wr assets")
645645 else {
646646 let ff = parseBigIntValue(valueOrElse(getString(this, ap), "0"))
647647 let fg = eU(eV, eW, 0)
648648 let fh = fg._1
649649 let fi = fg._2
650650 let fj = (fi >= ff)
651651 let fk = makeString(["dLp=", toString(ff), " dLpNew=", toString(fi), " amountAssetBalance=", toString(eQ), " priceAssetBalance=", toString(eR), " amountAssetBalanceDelta=", toString(eV), " priceAssetBalanceDelta=", toString(eW), " height=", toString(height)], "")
652652 $Tuple2(fj, fk)
653653 }
654654 }
655655
656656
657657 func fl (cR) = if ((size(cR.payments) != 1))
658658 then throw("1 pmnt exp")
659659 else {
660660 let fm = value(cR.payments[0])
661661 let dh = value(fm.assetId)
662662 let dN = fm.amount
663663 let dZ = df(toBase58String(cR.transactionId), toBase58String(dh), dN, cR.caller)
664664 let dB = dZ._1
665665 let dC = dZ._2
666666 let dp = parseIntValue(dZ._9)
667667 let dD = dZ._10
668668 if (if (aX())
669669 then true
670670 else (dp == s))
671671 then throw(("Admin blocked: " + toString(dp)))
672672 else $Tuple5(dB, dC, dN, dh, dD)
673673 }
674674
675675
676676 func fn (fo,ah,fp,fq,bY,dK,dL,dM,dN,dO) = {
677677 let dZ = dE(ah, bY, value(fp).amount, value(fp).assetId, value(fq).amount, value(fq).assetId, fo, (ah == ""), dK, dL, dM, dN, dO)
678678 let dp = parseIntValue(dZ._8)
679679 if (if (if (aX())
680680 then true
681681 else (dp == q))
682682 then true
683683 else (dp == s))
684684 then throw(("Blocked:" + toString(dp)))
685685 else dZ
686686 }
687687
688688
689689 func fr (fs,dh,dj,ah,ft) = {
690690 let dl = toBase58String(value(bo))
691691 let dm = toBase58String(value(bp))
692692 let dk = bn
693693 let dT = bq
694694 let dU = br
695695 let eS = toBigInt(valueOrErrorMessage(assetInfo(dk), "invalid lp asset").quantity)
696696 let fu = if ((eS > e))
697697 then true
698698 else throw("initial deposit requires all coins")
699699 if ((fu == fu))
700700 then {
701701 let dr = bP(dl)
702702 let dt = bP(dm)
703703 let fv = if ((ah == ""))
704704 then $Tuple2(dr, dt)
705705 else if ((dh == dl))
706706 then if ((fs > dr))
707707 then throw("invalid payment amount")
708708 else $Tuple2((dr - fs), dt)
709709 else if ((dh == dm))
710710 then if ((fs > dt))
711711 then throw("invalid payment amount")
712712 else $Tuple2(dr, (dt - fs))
713713 else throw("wrong pmtAssetId")
714714 let fw = fv._1
715715 let fx = fv._2
716716 let fy = if ((dh == dl))
717717 then $Tuple2(fs, 0)
718718 else if ((dh == dm))
719719 then $Tuple2(0, fs)
720720 else throw("invalid payment")
721721 let fz = fy._1
722722 let fA = fy._2
723723 let fB = if (ft)
724724 then $Tuple3(cx(fz, aT)._1, cx(fA, aT)._1, cx(fs, aT)._2)
725725 else $Tuple3(fz, fA, 0)
726726 let fC = fB._1
727727 let fD = fB._2
728728 let cz = fB._3
729729 let fE = (fw + fC)
730730 let fF = (fx + fD)
731731 let cd = cA([H(fw, bq), H(fx, br)])
732732 let cc = cA([H(fE, bq), H(fF, br)])
733733 let ea = if ((cc > cd))
734734 then true
735735 else throw()
736736 if ((ea == ea))
737737 then {
738738 let fG = fraction(eS, (cc - cd), cd, FLOOR)
739739 let dw = L(bR(H(fF, dU), H(fE, dT)), a)
740740 let et = [IntegerEntry(ab(), dw), IntegerEntry(ac(height, lastBlock.timestamp), dw), StringEntry(af(dj, ah), bA(fz, fA, toInt(fG), dw, 0, 0, height, lastBlock.timestamp, 0, 0))]
741741 let fH = fraction(fx, a, fw)
742742 let fI = fraction(fs, a, (fH + a))
743743 let fJ = (fs - fI)
744744 let fK = fraction(eS, toBigInt(fJ), toBigInt(fx))
745745 let fL = toInt(fraction((fG - fK), b, fK))
746746 $Tuple4(toInt(fG), et, cz, fL)
747747 }
748748 else throw("Strict value is not equal to itself.")
749749 }
750750 else throw("Strict value is not equal to itself.")
751751 }
752752
753753
754754 func fM (fN,fO,fP,fo,fQ,fR) = {
755755 let dk = toBase58String(value(bn))
756756 let dl = toBase58String(value(bo))
757757 let dm = toBase58String(value(bp))
758758 let fS = bq
759759 let fT = br
760760 let fU = bm
761761 let dj = if ((fo == bz))
762762 then fQ
763763 else fo
764764 let fm = value(fP[0])
765765 let dh = value(fm.assetId)
766766 let dN = fm.amount
767767 let eT = eM(e, e, e)
768768 if ((eT == eT))
769769 then {
770770 let dg = toBase58String(fR)
771771 if ((dk != toBase58String(dh)))
772772 then throw("Wrong LP")
773773 else {
774774 let dr = bP(dl)
775775 let dt = bP(dm)
776776 let fV = {
777777 let aU = invoke(this, "getOneTknV2READONLY", [fN, dN], nil)
778778 if ($isInstanceOf(aU, "(Int, Int)"))
779779 then aU
780780 else throw(($getType(aU) + " couldn't be cast to (Int, Int)"))
781781 }
782782 if ((fV == fV))
783783 then {
784784 let cz = fV._2
785785 let fW = fV._1
786786 let fX = if (if ((fO > 0))
787787 then (fO > fW)
788788 else false)
789789 then aP(makeString(["amount to receive is less than ", toString(fO)], ""))
790790 else fW
791791 let fY = if ((fN == dl))
792792 then $Tuple4(fX, 0, ((dr - fX) - cz), dt)
793793 else if ((fN == dm))
794794 then $Tuple4(0, fX, dr, ((dt - fX) - cz))
795795 else throw("invalid out asset id")
796796 let fZ = fY._1
797797 let ga = fY._2
798798 let fE = fY._3
799799 let fF = fY._4
800800 let gb = bR(H(fF, fT), H(fE, fS))
801801 let gc = L(gb, a)
802802 let gd = if ((fN == "WAVES"))
803803 then unit
804804 else fromBase58String(fN)
805805 let ge = if ((cz > 0))
806806 then [ScriptTransfer(aZ, cz, gd)]
807807 else nil
808808 let dD = ([ScriptTransfer(dj, fX, gd), StringEntry(ai(toString(dj), dg), bL(fZ, ga, dN, gc, height, lastBlock.timestamp)), IntegerEntry(ab(), gc), IntegerEntry(ac(height, lastBlock.timestamp), gc)] ++ ge)
809809 if ((dD == dD))
810810 then {
811811 let gf = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
812812 if ((gf == gf))
813813 then {
814814 let gg = {
815815 let gh = if ((this == aZ))
816816 then 0
817817 else cz
818818 let gi = if ((be(fN) == bo))
819819 then true
820820 else false
821821 if (gi)
822822 then $Tuple2(-((fW + gh)), 0)
823823 else $Tuple2(0, -((fW + gh)))
824824 }
825825 let eV = gg._1
826826 let eW = gg._2
827827 let gj = eU(eV, eW, 0)
828828 let gk = gj._1
829829 let eL = gj._2
830830 let gl = eY(eT, eL)
831831 if ((gl == gl))
832832 then $Tuple2((dD ++ gk), fX)
833833 else throw("Strict value is not equal to itself.")
834834 }
835835 else throw("Strict value is not equal to itself.")
836836 }
837837 else throw("Strict value is not equal to itself.")
838838 }
839839 else throw("Strict value is not equal to itself.")
840840 }
841841 }
842842 else throw("Strict value is not equal to itself.")
843843 }
844844
845845
846846 func gm () = {
847847 let gn = getString(Z())
848848 if ($isInstanceOf(gn, "String"))
849849 then {
850850 let cE = gn
851851 fromBase58String(cE)
852852 }
853853 else if ($isInstanceOf(gn, "Unit"))
854854 then unit
855855 else throw("Match error")
856856 }
857857
858858
859859 func go () = {
860860 let gn = getString(aa())
861861 if ($isInstanceOf(gn, "String"))
862862 then {
863863 let cE = gn
864864 fromBase58String(cE)
865865 }
866866 else if ($isInstanceOf(gn, "Unit"))
867867 then unit
868868 else throw("Match error")
869869 }
870870
871871
872872 let gp = throw("Permission denied")
873873
874874 func gq (cR) = {
875875 let gn = gm()
876876 if ($isInstanceOf(gn, "ByteVector"))
877877 then {
878878 let gr = gn
879879 (cR.callerPublicKey == gr)
880880 }
881881 else if ($isInstanceOf(gn, "Unit"))
882882 then (cR.caller == this)
883883 else throw("Match error")
884884 }
885885
886886
887887 func gs (cR) = {
888888 let gn = gm()
889889 if ($isInstanceOf(gn, "ByteVector"))
890890 then {
891891 let gr = gn
892892 if ((cR.callerPublicKey == gr))
893893 then true
894894 else gp
895895 }
896896 else if ($isInstanceOf(gn, "Unit"))
897897 then if ((cR.caller == this))
898898 then true
899899 else gp
900900 else throw("Match error")
901901 }
902902
903903
904904 func gt (gu,ev,gv) = {
905905 let bi = ba()
906906 let dl = bi[w]
907907 let dm = bi[x]
908908 let ew = g
909909 let ey = parseBigIntValue(l)
910910 let cF = (parseBigIntValue(aW) * ey)
911911 let cB = if ((gu == false))
912912 then [(toBigInt(bP(dl)) + gv), toBigInt(bP(dm))]
913913 else [(toBigInt(bP(dm)) + gv), toBigInt(bP(dl))]
914914 let ex = cB[0]
915915 let cE = ex
916916 let cG = (cF * ew)
917917 let ez = (((((ev * ev) / (ex * ew)) * ev) * ey) / (cG * ew))
918918 let eA = ((cE + ((ev * ey) / cG)) - ev)
919919 func cP (cQ,eB) = {
920920 let gw = cQ
921921 let eD = gw._1
922922 let de = gw._2
923923 if ((de != unit))
924924 then cQ
925925 else {
926926 let eE = (((eD * eD) + ez) / ((g * eD) + eA))
927927 let eF = X((eE - value(eD)))
928928 if ((f >= eF))
929929 then $Tuple2(eE, eB)
930930 else $Tuple2(eE, unit)
931931 }
932932 }
933933
934934 let cV = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
935935 let gx = {
936936 let cX = cV
937937 let cY = size(cX)
938938 let cZ = $Tuple2(ev, unit)
939939 func da (db,dc) = if ((dc >= cY))
940940 then db
941941 else cP(db, cX[dc])
942942
943943 func dd (db,dc) = if ((dc >= cY))
944944 then db
945945 else throw("List size exceeds 15")
946946
947947 dd(da(da(da(da(da(da(da(da(da(da(da(da(da(da(da(cZ, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15)
948948 }
949949 let eD = gx._1
950950 let de = gx._2
951951 if ((de != unit))
952952 then eD
953953 else throw(("Y calculation error, Y = " + toString(eD)))
954954 }
955955
956956
957957 func gy () = valueOrElse(getBoolean(aS, aE(toString(this))), false)
958958
959959
960960 @Callable(cR)
961961 func calculateAmountOutForSwapREADONLY (gz,gu,gA) = {
962962 let gB = if ((gu == false))
963963 then {
964964 let gC = aL(this, ak())
965965 let gv = (toBigInt(bP(aL(this, aj()))) + toBigInt(gz))
966966 $Tuple2(gC, gv)
967967 }
968968 else {
969969 let gC = aL(this, aj())
970970 let gv = (toBigInt(bP(aL(this, ak()))) + toBigInt(gz))
971971 $Tuple2(gC, gv)
972972 }
973973 let gC = gB._1
974974 let gv = gB._2
975975 let bi = ba()
976976 let dl = bi[w]
977977 let dm = bi[x]
978978 let cB = [toBigInt(bP(dl)), toBigInt(bP(dm))]
979979 let ev = cA(cB)
980980 let eD = gt(gu, ev, toBigInt(gz))
981981 let gD = ((toBigInt(bP(gC)) - eD) - toBigInt(1))
982982 let gE = max([0, toInt(gD)])
983983 let gF = if ((gu == false))
984984 then [((toBigInt(bP(dl)) + toBigInt(gz)) + toBigInt(gA)), (toBigInt(bP(dm)) - gD)]
985985 else [(toBigInt(bP(dl)) - gD), ((toBigInt(bP(dm)) + toBigInt(gz)) + toBigInt(gA))]
986986 let gG = cA(gF)
987987 let ea = if ((gG >= ev))
988988 then true
989989 else throw(makeString(["new D is fewer error", toString(ev), toString(gG)], "__"))
990990 if ((ea == ea))
991991 then $Tuple2(nil, gE)
992992 else throw("Strict value is not equal to itself.")
993993 }
994994
995995
996996
997997 @Callable(cR)
998998 func calculateAmountOutForSwapAndSendTokens (gz,gu,gH,gI,gA) = {
999999 let gJ = {
10001000 let aU = invoke(aS, "getSwapContractREADONLY", nil, nil)
10011001 if ($isInstanceOf(aU, "String"))
10021002 then aU
10031003 else throw(($getType(aU) + " couldn't be cast to String"))
10041004 }
10051005 let gK = [if ((value(cR.payments[0]).amount >= gz))
10061006 then true
10071007 else aP("Wrong amount"), if ((cR.caller == addressFromStringValue(gJ)))
10081008 then true
10091009 else aP("Permission denied")]
10101010 if ((gK == gK))
10111011 then {
10121012 let fm = value(cR.payments[0])
10131013 let gL = bg(fm.assetId)
10141014 let gM = if ((gu == false))
10151015 then {
10161016 let gC = aL(this, ak())
10171017 let gv = (bP(gL) - value(cR.payments[0]).amount)
10181018 $Tuple2(gC, gv)
10191019 }
10201020 else {
10211021 let gC = aL(this, aj())
10221022 let gv = (bP(gL) - value(cR.payments[0]).amount)
10231023 $Tuple2(gC, gv)
10241024 }
10251025 let gC = gM._1
10261026 let gv = gM._2
10271027 let bi = ba()
10281028 let dl = bi[w]
10291029 let dm = bi[x]
10301030 let cB = if ((gu == false))
10311031 then [(toBigInt(bP(dl)) - toBigInt(value(cR.payments[0]).amount)), toBigInt(bP(dm))]
10321032 else [toBigInt(bP(dl)), (toBigInt(bP(dm)) - toBigInt(value(cR.payments[0]).amount))]
10331033 let ev = cA(cB)
10341034 let eD = gt(gu, ev, toBigInt(0))
10351035 let gD = ((toBigInt(bP(gC)) - eD) - toBigInt(1))
10361036 let gE = max([0, toInt(gD)])
10371037 let gN = if ((gE >= gH))
10381038 then true
10391039 else throw("Exchange result is fewer coins than expected")
10401040 if ((gN == gN))
10411041 then {
10421042 let gF = if ((gu == false))
10431043 then [(toBigInt(bP(dl)) + toBigInt(gA)), (toBigInt(bP(dm)) - gD)]
10441044 else [(toBigInt(bP(dl)) - gD), (toBigInt(bP(dm)) + toBigInt(gA))]
10451045 let gG = cA(gF)
10461046 let ea = if ((gG >= ev))
10471047 then true
10481048 else throw("new D is fewer error")
10491049 if ((ea == ea))
10501050 then $Tuple2([ScriptTransfer(addressFromStringValue(gI), gE, be(gC))], gE)
10511051 else throw("Strict value is not equal to itself.")
10521052 }
10531053 else throw("Strict value is not equal to itself.")
10541054 }
10551055 else throw("Strict value is not equal to itself.")
10561056 }
10571057
10581058
10591059
10601060 @Callable(cR)
10611061 func constructor (Y) = {
10621062 let ez = gs(cR)
10631063 if ((ez == ez))
10641064 then [StringEntry(Y(), Y)]
10651065 else throw("Strict value is not equal to itself.")
10661066 }
10671067
10681068
10691069
10701070 @Callable(cR)
10711071 func setManager (gO) = {
10721072 let ez = gs(cR)
10731073 if ((ez == ez))
10741074 then {
10751075 let gP = fromBase58String(gO)
10761076 if ((gP == gP))
10771077 then [StringEntry(aa(), gO)]
10781078 else throw("Strict value is not equal to itself.")
10791079 }
10801080 else throw("Strict value is not equal to itself.")
10811081 }
10821082
10831083
10841084
10851085 @Callable(cR)
10861086 func confirmManager () = {
10871087 let cw = go()
10881088 let gQ = if (isDefined(cw))
10891089 then true
10901090 else throw("No pending manager")
10911091 if ((gQ == gQ))
10921092 then {
10931093 let gR = if ((cR.callerPublicKey == value(cw)))
10941094 then true
10951095 else throw("You are not pending manager")
10961096 if ((gR == gR))
10971097 then [StringEntry(Z(), toBase58String(value(cw))), DeleteEntry(aa())]
10981098 else throw("Strict value is not equal to itself.")
10991099 }
11001100 else throw("Strict value is not equal to itself.")
11011101 }
11021102
11031103
11041104
11051105 @Callable(cR)
11061106 func put (gS,gT) = {
11071107 let gU = bu()
11081108 let gV = valueOrErrorMessage(addressFromString(gU[C]), "Wr st addr")
11091109 let gW = valueOrErrorMessage(addressFromString(gU[E]), "Wr sl addr")
11101110 if ((0 > gS))
11111111 then throw("Wrong slippage")
11121112 else if ((size(cR.payments) != 2))
11131113 then throw("2 pmnts expd")
11141114 else {
11151115 let gX = toBigInt(value(cR.payments[0]).amount)
11161116 let gY = toBigInt(value(cR.payments[1]).amount)
11171117 let eQ = (toBigInt(bP(bg(bo))) - gX)
11181118 if ((eQ == eQ))
11191119 then {
11201120 let eR = (toBigInt(bP(bg(bp))) - gY)
11211121 if ((eR == eR))
11221122 then {
11231123 let eS = toBigInt(value(assetInfo(bn)).quantity)
11241124 if ((eS == eS))
11251125 then {
11261126 let eT = eM(gX, gY, toBigInt(0))
11271127 if ((eT == eT))
11281128 then {
11291129 let gZ = fn(toString(cR.caller), toBase58String(cR.transactionId), AttachedPayment(value(cR.payments[0]).assetId, value(cR.payments[0]).amount), cR.payments[1], gS, true, false, true, 0, "")
11301130 let en = gZ._2
11311131 let ha = gZ._7
11321132 let dD = gZ._9
11331133 let eo = gZ._10
11341134 let ep = gZ._11
11351135 let dl = gZ._12
11361136 let dm = gZ._13
11371137 let dZ = invoke(aS, "emit", [en], nil)
11381138 if ((dZ == dZ))
11391139 then {
11401140 let hb = {
11411141 let gn = dZ
11421142 if ($isInstanceOf(gn, "Address"))
11431143 then {
11441144 let hc = gn
11451145 invoke(hc, "emit", [en], nil)
11461146 }
11471147 else unit
11481148 }
11491149 if ((hb == hb))
11501150 then {
11511151 let hd = if ((eo > 0))
11521152 then invoke(gW, "put", nil, [AttachedPayment(dl, eo)])
11531153 else nil
11541154 if ((hd == hd))
11551155 then {
11561156 let he = if ((ep > 0))
11571157 then invoke(gW, "put", nil, [AttachedPayment(dm, ep)])
11581158 else nil
11591159 if ((he == he))
11601160 then {
11611161 let hf = if (gT)
11621162 then {
11631163 let hg = invoke(gV, "stake", nil, [AttachedPayment(ha, en)])
11641164 if ((hg == hg))
11651165 then nil
11661166 else throw("Strict value is not equal to itself.")
11671167 }
11681168 else [ScriptTransfer(cR.caller, en, ha)]
11691169 let hh = eU(0, 0, 0)
11701170 let gk = hh._1
11711171 let eL = hh._2
11721172 let hi = if ((eL >= eT))
11731173 then true
11741174 else aP(makeString(["updated DLp lower than current DLp", toString(eQ), toString(eR), toString(eS), toString(eT), toString(eL), toString(eo), toString(ep)], " "))
11751175 if ((hi == hi))
11761176 then {
11771177 let hj = value(assetInfo(bn)).quantity
11781178 if ((hj == hj))
11791179 then ((dD ++ hf) ++ gk)
11801180 else throw("Strict value is not equal to itself.")
11811181 }
11821182 else throw("Strict value is not equal to itself.")
11831183 }
11841184 else throw("Strict value is not equal to itself.")
11851185 }
11861186 else throw("Strict value is not equal to itself.")
11871187 }
11881188 else throw("Strict value is not equal to itself.")
11891189 }
11901190 else throw("Strict value is not equal to itself.")
11911191 }
11921192 else throw("Strict value is not equal to itself.")
11931193 }
11941194 else throw("Strict value is not equal to itself.")
11951195 }
11961196 else throw("Strict value is not equal to itself.")
11971197 }
11981198 else throw("Strict value is not equal to itself.")
11991199 }
12001200 }
12011201
12021202
12031203
12041204 @Callable(cR)
12051205 func putOneTknV2 (fO,gT) = {
12061206 let hk = {
12071207 let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12081208 if ($isInstanceOf(aU, "Boolean"))
12091209 then aU
12101210 else throw(($getType(aU) + " couldn't be cast to Boolean"))
12111211 }
12121212 let hl = if (if (if (aX())
12131213 then true
12141214 else (bm == q))
12151215 then true
12161216 else (bm == s))
12171217 then true
12181218 else hk
12191219 let gK = [if (if (!(hl))
12201220 then true
12211221 else gq(cR))
12221222 then true
12231223 else aP("put operation is blocked by admin"), if ((size(cR.payments) == 1))
12241224 then true
12251225 else aP("exactly 1 payment are expected")]
12261226 if ((gK == gK))
12271227 then {
12281228 let dl = toBase58String(value(bo))
12291229 let dm = toBase58String(value(bp))
12301230 let dk = bn
12311231 let fS = bq
12321232 let fT = br
12331233 let dj = if ((cR.caller == this))
12341234 then cR.originCaller
12351235 else cR.caller
12361236 let fm = value(cR.payments[0])
12371237 let dh = toBase58String(value(fm.assetId))
12381238 let dN = fm.amount
12391239 let eT = if ((fm.assetId == bo))
12401240 then eM(toBigInt(dN), toBigInt(0), toBigInt(0))
12411241 else eM(toBigInt(0), toBigInt(dN), toBigInt(0))
12421242 if ((eT == eT))
12431243 then {
12441244 let hm = fr(dN, dh, toString(dj), toBase58String(cR.transactionId), true)
12451245 if ((hm == hm))
12461246 then {
12471247 let cz = hm._3
12481248 let dD = hm._2
12491249 let hn = hm._1
12501250 let en = if (if ((fO > 0))
12511251 then (fO > hn)
12521252 else false)
12531253 then aP(makeString(["amount to receive is less than ", toString(fO)], ""))
12541254 else hn
12551255 let gZ = invoke(aS, "emit", [en], nil)
12561256 if ((gZ == gZ))
12571257 then {
12581258 let hb = {
12591259 let gn = gZ
12601260 if ($isInstanceOf(gn, "Address"))
12611261 then {
12621262 let hc = gn
12631263 invoke(hc, "emit", [en], nil)
12641264 }
12651265 else unit
12661266 }
12671267 if ((hb == hb))
12681268 then {
12691269 let hf = if (gT)
12701270 then {
1271- let hg = invoke(bw, "stake", nil, [AttachedPayment(dk, en)])
1271+ let hg = invoke(bw, "stakeFor", [toString(cR.caller)], [AttachedPayment(dk, en)])
12721272 if ((hg == hg))
12731273 then nil
12741274 else throw("Strict value is not equal to itself.")
12751275 }
12761276 else [ScriptTransfer(cR.caller, en, dk)]
12771277 let ge = if ((cz > 0))
12781278 then [ScriptTransfer(aZ, cz, fromBase58String(dh))]
12791279 else nil
12801280 let ho = if ((this == aZ))
12811281 then $Tuple2(0, 0)
12821282 else {
12831283 let hp = if ((fm.assetId == bo))
12841284 then true
12851285 else false
12861286 if (hp)
12871287 then $Tuple2(-(cz), 0)
12881288 else $Tuple2(0, -(cz))
12891289 }
12901290 let eV = ho._1
12911291 let eW = ho._2
12921292 let hq = eU(eV, eW, 0)
12931293 let gk = hq._1
12941294 let eL = hq._2
12951295 let gl = eY(eT, eL)
12961296 if ((gl == gl))
12971297 then $Tuple2((((dD ++ hf) ++ ge) ++ gk), en)
12981298 else throw("Strict value is not equal to itself.")
12991299 }
13001300 else throw("Strict value is not equal to itself.")
13011301 }
13021302 else throw("Strict value is not equal to itself.")
13031303 }
13041304 else throw("Strict value is not equal to itself.")
13051305 }
13061306 else throw("Strict value is not equal to itself.")
13071307 }
13081308 else throw("Strict value is not equal to itself.")
13091309 }
13101310
13111311
13121312
13131313 @Callable(cR)
13141314 func putForFree (hr) = if ((0 > hr))
13151315 then throw("Wrong slpg")
13161316 else if ((size(cR.payments) != 2))
13171317 then throw("2 pmnts expd")
13181318 else {
13191319 let hs = fn(toString(cR.caller), toBase58String(cR.transactionId), AttachedPayment(value(cR.payments[0]).assetId, value(cR.payments[0]).amount), cR.payments[1], hr, false, false, true, 0, "")
13201320 let dD = hs._9
13211321 let gX = toBigInt(value(cR.payments[0]).amount)
13221322 let gY = toBigInt(value(cR.payments[1]).amount)
13231323 let eT = eM(gX, gY, toBigInt(0))
13241324 if ((eT == eT))
13251325 then {
13261326 let ht = eU(0, 0, 0)
13271327 let gk = ht._1
13281328 let eL = ht._2
13291329 let gl = eY(eT, eL)
13301330 if ((gl == gl))
13311331 then (dD ++ gk)
13321332 else throw("Strict value is not equal to itself.")
13331333 }
13341334 else throw("Strict value is not equal to itself.")
13351335 }
13361336
13371337
13381338
13391339 @Callable(cR)
13401340 func get () = {
13411341 let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
13421342 if ((eT == eT))
13431343 then {
13441344 let dZ = fl(cR)
13451345 let hu = dZ._1
13461346 let dC = dZ._2
13471347 let dN = dZ._3
13481348 let dh = dZ._4
13491349 let dD = dZ._5
13501350 let eA = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
13511351 if ((eA == eA))
13521352 then {
13531353 let hv = eU(-(hu), -(dC), 0)
13541354 let gk = hv._1
13551355 let eL = hv._2
13561356 let gl = eY(eT, eL)
13571357 if ((gl == gl))
13581358 then (dD ++ gk)
13591359 else throw("Strict value is not equal to itself.")
13601360 }
13611361 else throw("Strict value is not equal to itself.")
13621362 }
13631363 else throw("Strict value is not equal to itself.")
13641364 }
13651365
13661366
13671367
13681368 @Callable(cR)
13691369 func getOneTknV2 (fN,fO) = {
13701370 let hk = {
13711371 let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13721372 if ($isInstanceOf(aU, "Boolean"))
13731373 then aU
13741374 else throw(($getType(aU) + " couldn't be cast to Boolean"))
13751375 }
13761376 let hw = if (if (aX())
13771377 then true
13781378 else (bm == s))
13791379 then true
13801380 else hk
13811381 let gK = [if (if (!(hw))
13821382 then true
13831383 else gq(cR))
13841384 then true
13851385 else aP("get operation is blocked by admin"), if ((size(cR.payments) == 1))
13861386 then true
13871387 else aP("exactly 1 payment are expected")]
13881388 if ((gK == gK))
13891389 then {
13901390 let hx = fM(fN, fO, cR.payments, cR.caller, cR.originCaller, cR.transactionId)
13911391 let dD = hx._1
13921392 let fX = hx._2
13931393 $Tuple2(dD, fX)
13941394 }
13951395 else throw("Strict value is not equal to itself.")
13961396 }
13971397
13981398
13991399
14001400 @Callable(cR)
14011401 func refreshDLp () = {
14021402 let hy = valueOrElse(getInteger(aq), 0)
14031403 let hz = if (((height - hy) >= at))
14041404 then unit
14051405 else aP(makeString([toString(at), " blocks have not passed since the previous call"], ""))
14061406 if ((hz == hz))
14071407 then {
14081408 let ff = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ap), "0")), aR("invalid dLp"))
14091409 let hA = eU(0, 0, 0)
14101410 let hB = hA._1
14111411 let eL = hA._2
14121412 let eX = if ((ff != eL))
14131413 then hB
14141414 else aP("nothing to refresh")
14151415 $Tuple2(eX, toString(eL))
14161416 }
14171417 else throw("Strict value is not equal to itself.")
14181418 }
14191419
14201420
14211421
14221422 @Callable(cR)
14231423 func getOneTknV2READONLY (fN,hC) = {
14241424 let dl = toBase58String(value(bo))
14251425 let dm = toBase58String(value(bp))
14261426 let dk = toBase58String(value(bn))
14271427 let cB = [toBigInt(bP(dl)), toBigInt(bP(dm))]
14281428 let eK = toBigInt(valueOrErrorMessage(assetInfo(fromBase58String(dk)), "invalid lp asset").quantity)
14291429 let cd = cA(cB)
14301430 let cc = (cd - fraction(toBigInt(hC), cd, eK))
14311431 let hD = if ((fN == dl))
14321432 then 0
14331433 else if ((fN == dm))
14341434 then 1
14351435 else throw("invalid out asset id")
14361436 let hE = eu(cB, hD, cc)
14371437 let gD = (cB[hD] - hE)
14381438 let gE = max([0, toInt((gD - f))])
14391439 let hF = cx(gE, aV)
14401440 let fW = hF._1
14411441 let cz = hF._2
14421442 $Tuple2(nil, $Tuple2(fW, cz))
14431443 }
14441444
14451445
14461446
14471447 @Callable(cR)
14481448 func getOneTknV2WithBonusREADONLY (fN,hC) = {
14491449 let dl = toBase58String(value(bo))
14501450 let dm = toBase58String(value(bp))
14511451 let dk = toBase58String(value(bn))
14521452 let dr = bP(dl)
14531453 let dt = bP(dm)
14541454 let hG = {
14551455 let aU = invoke(this, "getOneTknV2READONLY", [fN, hC], nil)
14561456 if ($isInstanceOf(aU, "(Int, Int)"))
14571457 then aU
14581458 else throw(($getType(aU) + " couldn't be cast to (Int, Int)"))
14591459 }
14601460 let fW = hG._1
14611461 let cz = hG._2
14621462 let dZ = df("", dk, hC, this)
14631463 let dB = dZ._1
14641464 let dC = dZ._2
14651465 let hH = (dB + dC)
14661466 let fL = if ((hH == 0))
14671467 then if ((fW == 0))
14681468 then 0
14691469 else throw("bonus calculation error")
14701470 else fraction((fW - hH), a, hH)
14711471 $Tuple2(nil, $Tuple3(fW, cz, fL))
14721472 }
14731473
14741474
14751475
14761476 @Callable(cR)
14771477 func getNoLess (hI,hJ) = {
14781478 let dZ = fl(cR)
14791479 let dB = dZ._1
14801480 let dC = dZ._2
14811481 let dN = dZ._3
14821482 let dh = dZ._4
14831483 let dD = dZ._5
14841484 if ((hI > dB))
14851485 then throw(((("Failed: " + toString(dB)) + " < ") + toString(hI)))
14861486 else if ((hJ > dC))
14871487 then throw(((("Failed: " + toString(dC)) + " < ") + toString(hJ)))
14881488 else {
14891489 let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
14901490 if ((eT == eT))
14911491 then {
14921492 let hK = invoke(aS, "burn", [dN], [AttachedPayment(dh, dN)])
14931493 if ((hK == hK))
14941494 then {
14951495 let hL = eU(-(dB), -(dC), 0)
14961496 let gk = hL._1
14971497 let eL = hL._2
14981498 let gl = eY(eT, eL)
14991499 if ((gl == gl))
15001500 then (dD ++ gk)
15011501 else throw("Strict value is not equal to itself.")
15021502 }
15031503 else throw("Strict value is not equal to itself.")
15041504 }
15051505 else throw("Strict value is not equal to itself.")
15061506 }
15071507 }
15081508
15091509
15101510
15111511 @Callable(cR)
15121512 func unstakeAndGet (cy) = {
15131513 let hM = if ((size(cR.payments) != 0))
15141514 then throw("No pmnts expd")
15151515 else true
15161516 if ((hM == hM))
15171517 then {
15181518 let hN = bu()
15191519 let ha = bn
15201520 let hO = valueOrErrorMessage(addressFromString(hN[C]), "Wr st addr")
15211521 let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
15221522 if ((eT == eT))
15231523 then {
15241524 let hP = invoke(hO, "unstake", [toBase58String(ha), cy], nil)
15251525 if ((hP == hP))
15261526 then {
15271527 let dZ = df(toBase58String(cR.transactionId), toBase58String(ha), cy, cR.caller)
15281528 let dB = dZ._1
15291529 let dC = dZ._2
15301530 let dp = parseIntValue(dZ._9)
15311531 let dD = dZ._10
15321532 let hQ = if (if (aX())
15331533 then true
15341534 else (dp == s))
15351535 then throw(("Blocked: " + toString(dp)))
15361536 else true
15371537 if ((hQ == hQ))
15381538 then {
15391539 let hR = invoke(aS, "burn", [cy], [AttachedPayment(ha, cy)])
15401540 if ((hR == hR))
15411541 then {
15421542 let hS = eU(-(dB), -(dC), 0)
15431543 let gk = hS._1
15441544 let eL = hS._2
15451545 let gl = eY(eT, eL)
15461546 if ((gl == gl))
15471547 then (dD ++ gk)
15481548 else throw("Strict value is not equal to itself.")
15491549 }
15501550 else throw("Strict value is not equal to itself.")
15511551 }
15521552 else throw("Strict value is not equal to itself.")
15531553 }
15541554 else throw("Strict value is not equal to itself.")
15551555 }
15561556 else throw("Strict value is not equal to itself.")
15571557 }
15581558 else throw("Strict value is not equal to itself.")
15591559 }
15601560
15611561
15621562
15631563 @Callable(cR)
15641564 func unstakeAndGetNoLess (hT,hU,hJ) = {
15651565 let hw = if (aX())
15661566 then true
15671567 else (bm == s)
15681568 let gK = [if (!(hw))
15691569 then true
15701570 else throw("get operation is blocked by admin"), if ((size(cR.payments) == 0))
15711571 then true
15721572 else throw("no payments are expected")]
15731573 if ((gK == gK))
15741574 then {
15751575 let eT = eM(toBigInt(0), toBigInt(0), toBigInt(0))
15761576 if ((eT == eT))
15771577 then {
15781578 let hP = invoke(bw, "unstake", [toBase58String(bn), hT], nil)
15791579 if ((hP == hP))
15801580 then {
15811581 let hV = df(toBase58String(cR.transactionId), toBase58String(bn), hT, cR.caller)
15821582 let dB = hV._1
15831583 let dC = hV._2
15841584 let dD = hV._10
15851585 let hW = [if ((dB >= hU))
15861586 then true
15871587 else throw(makeString(["amount asset amount to receive is less than ", toString(hU)], "")), if ((dC >= hJ))
15881588 then true
15891589 else throw(makeString(["price asset amount to receive is less than ", toString(hJ)], ""))]
15901590 if ((hW == hW))
15911591 then {
15921592 let hK = invoke(aS, "burn", [hT], [AttachedPayment(bn, hT)])
15931593 if ((hK == hK))
15941594 then {
15951595 let hX = eU(-(dB), -(dC), 0)
15961596 let gk = hX._1
15971597 let eL = hX._2
15981598 let gl = eY(eT, eL)
15991599 if ((gl == gl))
16001600 then (dD ++ gk)
16011601 else throw("Strict value is not equal to itself.")
16021602 }
16031603 else throw("Strict value is not equal to itself.")
16041604 }
16051605 else throw("Strict value is not equal to itself.")
16061606 }
16071607 else throw("Strict value is not equal to itself.")
16081608 }
16091609 else throw("Strict value is not equal to itself.")
16101610 }
16111611 else throw("Strict value is not equal to itself.")
16121612 }
16131613
16141614
16151615
16161616 @Callable(cR)
16171617 func unstakeAndGetOneTknV2 (hT,fN,fO) = {
16181618 let hk = {
16191619 let aU = invoke(aS, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
16201620 if ($isInstanceOf(aU, "Boolean"))
16211621 then aU
16221622 else throw(($getType(aU) + " couldn't be cast to Boolean"))
16231623 }
16241624 let hw = if (if (aX())
16251625 then true
16261626 else (bm == s))
16271627 then true
16281628 else hk
16291629 let gK = [if (if (!(hw))
16301630 then true
16311631 else gq(cR))
16321632 then true
16331633 else aP("get operation is blocked by admin"), if ((size(cR.payments) == 0))
16341634 then true
16351635 else aP("no payments are expected")]
16361636 if ((gK == gK))
16371637 then {
16381638 let hN = bu()
16391639 let ha = bn
16401640 let hO = valueOrErrorMessage(addressFromString(hN[C]), "Wr st addr")
16411641 let dj = cR.caller
16421642 let hY = this
16431643 let hP = invoke(hO, "unstakeINTERNAL", [ha, hT, dj.bytes, hY.bytes], nil)
16441644 if ((hP == hP))
16451645 then {
16461646 let hZ = fM(fN, fO, [AttachedPayment(ha, hT)], cR.caller, cR.originCaller, cR.transactionId)
16471647 let dD = hZ._1
16481648 let fX = hZ._2
16491649 $Tuple2(dD, fX)
16501650 }
16511651 else throw("Strict value is not equal to itself.")
16521652 }
16531653 else throw("Strict value is not equal to itself.")
16541654 }
16551655
16561656
16571657
16581658 @Callable(cR)
16591659 func putOneTknV2WithBonusREADONLY (ia,ib) = {
16601660 let ic = fr(ia, ib, "", "", true)
16611661 let fG = ic._1
16621662 let dD = ic._2
16631663 let cz = ic._3
16641664 let fL = ic._4
16651665 $Tuple2(nil, $Tuple3(fG, cz, fL))
16661666 }
16671667
16681668
16691669
16701670 @Callable(cR)
16711671 func putOneTknV2WithoutTakeFeeREADONLY (ia,ib) = {
16721672 let id = fr(ia, ib, "", "", false)
16731673 let fG = id._1
16741674 let dD = id._2
16751675 let cz = id._3
16761676 let fL = id._4
16771677 $Tuple2(nil, $Tuple3(fG, cz, fL))
16781678 }
16791679
16801680
16811681
16821682 @Callable(cR)
16831683 func activate (ie,if) = if ((toString(cR.caller) != toString(aS)))
16841684 then throw("denied")
16851685 else $Tuple2([StringEntry(aj(), ie), StringEntry(ak(), if)], "success")
16861686
16871687
16881688
16891689 @Callable(cR)
16901690 func setS (ig,hQ) = if ((toString(cR.caller) != aL(this, am())))
16911691 then gp
16921692 else [StringEntry(ig, hQ)]
16931693
16941694
16951695
16961696 @Callable(cR)
16971697 func setI (ig,hQ) = if ((toString(cR.caller) != aL(this, am())))
16981698 then gp
16991699 else [IntegerEntry(ig, hQ)]
17001700
17011701
17021702
17031703 @Callable(cR)
17041704 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
17051705
17061706
17071707
17081708 @Callable(cR)
17091709 func getAccBalanceWrapperREADONLY (bQ) = $Tuple2(nil, bP(bQ))
17101710
17111711
17121712
17131713 @Callable(cR)
17141714 func calcPricesWrapperREADONLY (cj,ck,co) = {
17151715 let ih = cn(cj, ck, co)
17161716 $Tuple2(nil, [toString(ih[0]), toString(ih[1]), toString(ih[2])])
17171717 }
17181718
17191719
17201720
17211721 @Callable(cR)
17221722 func fromX18WrapperREADONLY (M,ii) = $Tuple2(nil, L(parseBigIntValue(M), ii))
17231723
17241724
17251725
17261726 @Callable(cR)
17271727 func toX18WrapperREADONLY (I,J) = $Tuple2(nil, toString(H(I, J)))
17281728
17291729
17301730
17311731 @Callable(cR)
17321732 func calcPriceBigIntWrapperREADONLY (bS,bT) = $Tuple2(nil, toString(bR(parseBigIntValue(bS), parseBigIntValue(bT))))
17331733
17341734
17351735
17361736 @Callable(cR)
17371737 func estimatePutOperationWrapperREADONLY (dg,bY,dF,dG,dH,dI,ij,dJ,dK) = $Tuple2(nil, dE(dg, bY, dF, dG, dH, dI, ij, dJ, dK, true, false, 0, ""))
17381738
17391739
17401740
17411741 @Callable(cR)
17421742 func estimateGetOperationWrapperREADONLY (dg,ik,di,ij) = {
17431743 let dZ = df(dg, ik, di, addressFromStringValue(ij))
17441744 $Tuple2(nil, $Tuple10(dZ._1, dZ._2, dZ._3, dZ._4, dZ._5, dZ._6, dZ._7, toString(dZ._8), dZ._9, dZ._10))
17451745 }
17461746
17471747
17481748 @Verifier(il)
17491749 func im () = {
17501750 let in = {
17511751 let gn = gm()
17521752 if ($isInstanceOf(gn, "ByteVector"))
17531753 then {
17541754 let gr = gn
17551755 gr
17561756 }
17571757 else if ($isInstanceOf(gn, "Unit"))
17581758 then il.senderPublicKey
17591759 else throw("Match error")
17601760 }
17611761 let gn = il
17621762 if ($isInstanceOf(gn, "Order"))
17631763 then {
17641764 let fb = gn
17651765 let io = aY()
17661766 let ip = if (gy())
17671767 then $Tuple2(true, "")
17681768 else fa(fb)
17691769 let aH = ip._1
17701770 let aI = ip._2
17711771 let aJ = sigVerify(fb.bodyBytes, fb.proofs[0], fb.senderPublicKey)
17721772 let aK = sigVerify(fb.bodyBytes, fb.proofs[1], io)
17731773 if (if (if (aH)
17741774 then aJ
17751775 else false)
17761776 then aK
17771777 else false)
17781778 then true
17791779 else aG(aH, aI, aJ, aK)
17801780 }
17811781 else if ($isInstanceOf(gn, "SetScriptTransaction"))
17821782 then {
17831783 let cE = gn
17841784 if (sigVerify(il.bodyBytes, il.proofs[0], in))
17851785 then true
17861786 else {
17871787 let iq = blake2b256(value(cE.script))
17881788 let ir = fromBase64String(value(getString(aS, aC())))
17891789 let is = scriptHash(this)
17901790 if ((ir == iq))
17911791 then (is != iq)
17921792 else false
17931793 }
17941794 }
17951795 else sigVerify(il.bodyBytes, il.proofs[0], in)
17961796 }
17971797

github/deemru/w8io/6500d08 
268.99 ms