tx · AHfXMrHdyaPeUFTL4DwVixzFJxxsmRmXbfzPdhEGnuS3

3MpHzJ37KHNWPLWooSuAFmuzL3EUXt86qQw:  -0.03500000 Waves

2022.12.08 10:31 [2351077] smart account 3MpHzJ37KHNWPLWooSuAFmuzL3EUXt86qQw > SELF 0.00000000 Waves

{ "type": 13, "id": "AHfXMrHdyaPeUFTL4DwVixzFJxxsmRmXbfzPdhEGnuS3", "fee": 3500000, "feeAssetId": null, "timestamp": 1670484665373, "version": 1, "sender": "3MpHzJ37KHNWPLWooSuAFmuzL3EUXt86qQw", "senderPublicKey": "4gxnZwoAfBVeM48WyrZLy16TAaS7CUtppRoDqbadsKeA", "proofs": [ "4vpLqY7KzYyGYg85H4d9fdu6LCB7LXYmiZDypCyEhzX8ahaEjSEiKGctU7y4Nd5re6Xwtu8mMkcWbymrH4fswmX1" ], "script": "base64:BgKDLQgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiB2Zyb21YMTgiA3ZhbCIPcmVzdWx0U2NhbGVNdWx0Igxmcm9tWDE4Um91bmQiBXJvdW5kIgd0b1NjYWxlIgNhbXQiCHJlc1NjYWxlIghjdXJTY2FsZSIDYWJzIglhYnNCaWdJbnQiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIQa2V5RmFjdG9yeUNvbmZpZyINa2V5TWF0Y2hlclB1YiIpa2V5TWFwcGluZ1Bvb2xDb250cmFjdEFkZHJlc3NUb1Bvb2xBc3NldHMiE3Bvb2xDb250cmFjdEFkZHJlc3MiDWtleVBvb2xDb25maWciCWlBbXRBc3NldCILaVByaWNlQXNzZXQiH2tleU1hcHBpbmdzQmFzZUFzc2V0MmludGVybmFsSWQiDGJhc2VBc3NldFN0ciITa2V5QWxsUG9vbHNTaHV0ZG93biINa2V5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhZrZXlBbGxvd2VkTHBTY3JpcHRIYXNoIhZrZXlGZWVDb2xsZWN0b3JBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDgwNTg4MjI0Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCIFc3RhdGUiFGVzdGltYXRlUHV0T3BlcmF0aW9uIhFzbGlwcGFnZVRvbGVyYW5jZSIMaW5BbUFzc2V0QW10IgtpbkFtQXNzZXRJZCIMaW5QckFzc2V0QW10IgtpblByQXNzZXRJZCIKaXNFdmFsdWF0ZSIGZW1pdExwIgxhbUFzc2V0SWRTdHIiDHByQXNzZXRJZFN0ciILaUFtdEFzc2V0SWQiDWlQcmljZUFzc2V0SWQiDmluQW1Bc3NldElkU3RyIg5pblByQXNzZXRJZFN0ciIPaW5BbUFzc2V0QW10WDE4Ig9pblByQXNzZXRBbXRYMTgiDHVzZXJQcmljZVgxOCIDcmVzIgtzbGlwcGFnZVgxOCIUc2xpcHBhZ2VUb2xlcmFuY2VYMTgiCnByVmlhQW1YMTgiCmFtVmlhUHJYMTgiDGV4cGVjdGVkQW10cyIRZXhwQW10QXNzZXRBbXRYMTgiE2V4cFByaWNlQXNzZXRBbXRYMTgiCWNhbGNMcEFtdCIOY2FsY0FtQXNzZXRQbXQiDmNhbGNQckFzc2V0UG10IgxzbGlwcGFnZUNhbGMiCWVtaXRMcEFtdCIGYW1EaWZmIgZwckRpZmYiC2NvbW1vblN0YXRlIgdjYWxjS0xwIg1hbW91bnRCYWxhbmNlIgxwcmljZUJhbGFuY2UiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjA3NzcyMDk4OSIDa0xwIg0kdDAyMTQ2MDIxNTYwIg11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjQyNDUyNDUzOCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyNDU0MjI0NjkxIhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyINJHQwMjQ4MTMyNDg3MiINcGF5bWVudEFtb3VudCIQYW1vdW50QmFsYW5jZU5ldyIPcHJpY2VCYWxhbmNlTmV3IgtwcmljZU5ld1gxOCIIcHJpY2VOZXciDnBheW1lbnRCYWxhbmNlIhRwYXltZW50QmFsYW5jZUJpZ0ludCIMc3VwcGx5QmlnSW50IgtjaGVjaFN1cHBseSINZGVwb3NpdEJpZ0ludCILaXNzdWVBbW91bnQiC3ByaWNlT2xkWDE4IghwcmljZU9sZCIEbG9zcyINJHQwMjYzNDkyNjUxNiIHYmFsYW5jZSIPaXNzdWVBbW91bnRCb3RoIg9jYWxjR2V0T25lVG9rZW4iCm91dEFzc2V0SWQiBmNoZWNrcyIQb3V0SW5BbW91bnRBc3NldCINYmFsYW5jZUJpZ0ludCIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDI4MTE4MjgxNjgiC3RvdGFsQW1vdW50Ig0kdDAyODE3MjI4Mzk4IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IgtjaGVja0NhbGxlciIVY2hlY2tNYW5hZ2VyUHVibGljS2V5IgJwbSIFaGFzUE0iB2NoZWNrUE0iD3Nob3VsZEF1dG9TdGFrZSIEYW1JZCIEcHJJZCIMc2xpcHBhZ2VBSW52IgxzbGlwcGFnZVBJbnYiCmxwVHJhbnNmZXIiC3NscFN0YWtlSW52Ig0kdDAzMjkyNjMzMzg4IhFyZWZyZXNoS0xwQWN0aW9ucyIRaXNVcGRhdGVkS0xwVmFsaWQiC21heFNsaXBwYWdlIg0kdDAzMzk1MDM0MDE1IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiAUAiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDM1MjAwMzUzNTIiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwMzU5MzgzNjEzNSINJHQwMzYxMzgzNjI0NiINJHQwMzY1NTIzNjcwOSINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwMzc2MDMzNzc1NiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDAzODI1NjM4NTAzIhBmZWVBbW91bnRGb3JDYWxjIg0kdDAzODUwNjM4NjE0Ig0kdDAzODg3MTM5MDI3Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDAzOTkyOTQwMDgwIg0kdDA0MDU3NTQwODIyIg0kdDA0MDgyNTQwOTMzIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA0MTg4MTQxOTYzIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA0MjkxNDQyOTk1Ig1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDQ0MTE4NDQxOTkiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA0NTQ5MTQ1NTcyIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNDY3NTk0NjgyMyIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaG8AAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSAFJAUsJAKADAQkAvQIEBQFICQC2AgEFAUkFAWQFAUsBAUwDAU0BTgFPCQBrAwUBTQUBTgUBTwEBUAEBSAMJAGYCAAAFAUgJAQEtAQUBSAUBSAEBUQEBSAMJAL8CAgUBZQUBSAkAvgIBBQFIBQFIAQFSAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBUwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFUAAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQFVAAIRJXMlc19fcHJpY2VfX2xhc3QBAVYCAVcBWAkAuQkCCQDMCAICGCVzJXMlZCVkX19wcmljZV9faGlzdG9yeQkAzAgCCQCkAwEFAVcJAMwIAgkApAMBBQFYBQNuaWwFAWoBAVkCAVoCYWEJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQFaAgJfXwUCYWEBAmFiAgFaAmFhCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUBWgICX18FAmFhAQJhYwACDyVzX19hbW91bnRBc3NldAECYWQAAg4lc19fcHJpY2VBc3NldAACYWUCByVzX19mZWUAAmFmCQBrAwAKBQFiAJBOAAJhZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZQUCYWYAAmFoCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFpCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFqCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFrAB4AAmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFqBQJhawECYW0AAhElc19fZmFjdG9yeUNvbmZpZwECYW4AAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmFvAQJhcAkArAICCQCsAgICCCVzJXMlc19fBQJhcAIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmFxAgJhcgJhcwkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXICAl9fBQJhcwIIX19jb25maWcBAmF0AQJhdQkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhdQECYXYAAgwlc19fc2h1dGRvd24BAmF3AQJheAkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmF4AQJheQACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhegIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFBAwJhQgJhQwJhRAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUICDSBzZW5kZXJWYWxpZD0JAKUDAQUCYUMCDiBtYXRjaGVyVmFs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AQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiTgUBdQQCYlEJAQJiRQQFAmJPBQJiUAUCYkgFAmJJBAJiQwkBAUQCBQJiSAUCYk8EAmJCCQEBRAIFAmJJBQJiUAQCYlIJAQFEAgUCYk0FAWIEAmJTCQECYkECBQJiQwUCYlIEAmJUCQECYkECBQJiQgUCYlIJAMwIAgUCYlEJAMwIAgUCYlMJAMwIAgUCYlQFA25pbAECYlUDAmJIAmJJAmJNBAJiVgkBAmJMAwUCYkgFAmJJBQJiTQkAzAgCCQEBRwIJAJEDAgUCYlYAAAUBYgkAzAgCCQEBRwIJAJEDAgUCYlYAAQUBYgkAzAgCCQEBRwIJAJEDAgUCYlYAAgUBYgUDbmlsAQJiVwQCYlgCYlkCYloBWgQCYk4JAQJhUAAEAmNhCQCRAwIFAmJOBQFxBAJjYgkAkQMCBQJiTgUBcgQCY2MJAJEDAgUCYk4FAXMEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJjZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmNhCQCsAgIJAKwCAgIGQXNzZXQgBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJjYQUCYlkJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmNmCQECYnkBBQJjYgQCY2cJAQFEAgUCY2YFAmJGBAJjaAkBAmJ5AQUCY2MEAmNpCQEBRAIFAmNoBQJiRwQCY2oJAQJiQQIFAmNpBQJjZwQCY2sJAQFHAgUCY2oFAWIEAmNsCQEBRAIFAmJaBQFiBAJjbQkBAUQCBQJjZQUBYgQCY24JALwCAwUCY2cFAmNsBQJjbQQCY28JALwCAwUCY2kFAmNsBQJjbQQCY3AJAQFHAgUCY24FAmJGBAJjcQkBAUcCBQJjbwUCYkcEAmNyAwkAAAIFAmJYAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFaBQJjcAMJAAACBQJjYgIFV0FWRVMFBHVuaXQJANkEAQUCY2IJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWgUCY3EDCQAAAgUCY2MCBVdBVkVTBQR1bml0CQDZBAEFAmNjCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQUBWgUCYlgJAQJidQYFAmNwBQJjcQUCYloFAmNrBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmNrCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNrBQNuaWwJAJwKCgUCY3AFAmNxBQJjYgUCY2MFAmNmBQJjaAUCY2UFAmNqBQJjZAUCY3IBAmNzCQJiWAJjdAJjdQJjdgJjdwJjeAFaAmN5AmN6BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNCCQCRAwIFAmJOBQFzBAJjQwkAkQMCBQJiTgUBdgQCY0QJAJEDAgUCYk4FAXcEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJjZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmNFCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmN2CQDZBAECBVdBVkVTBAJjRgkA2AQBCQELdmFsdWVPckVsc2UCBQJjeAkA2QQBAgVXQVZFUwMDCQECIT0CBQJjQQUCY0UGCQECIT0CBQJjQgUCY0YJAAIBAiJJbnZhbGlkIGFtdCBvciBwcmljZSBhc3NldCBwYXNzZWQuBAJjZgMFAmN5CQECYnkBBQJjQQkAZQIJAQJieQEFAmNBBQJjdQQCY2gDBQJjeQkBAmJ5AQUCY0IJAGUCCQECYnkBBQJjQgUCY3cEAmNHCQEBRAIFAmN1BQJiTwQCY0gJAQFEAgUCY3cFAmJQBAJjSQkBAmJBAgUCY0gFAmNHBAJjZwkBAUQCBQJjZgUCYk8EAmNpCQEBRAIFAmNoBQJiUAQCY0oDCQAAAgUCY2UAAAQCY2oFAWUEAmNLBQFlBAJiUgkAdgYJALkCAgUCY0cFAmNIAAAJALYCAQAFAAEAAAUERE9XTgkAlwoFCQEBRwIFAmJSBQFiCQEBRwIFAmNHBQJiTwkBAUcCBQJjSAUCYlAJAQJiQQIJALcCAgUCY2kFAmNICQC3AgIFAmNnBQJjRwUCY0sEAmNqCQECYkECBQJjaQUCY2cEAmNLCQC8AgMJAQFRAQkAuAICBQJjagUCY0kFAWQFAmNqBAJjTAkBAUQCBQJjdAUBYgMDCQECIT0CBQJjagUBZQkAvwICBQJjSwUCY0wHCQACAQkArAICCQCsAgIJAKwCAgIPUHJpY2Ugc2xpcHBhZ2UgCQCmAwEFAmNLAh4gZXhjZWVkZWQgdGhlIHBhc3NlZCBsaW1pdCBvZiAJAKYDAQUCY0wEAmNtCQEBRAIFAmNlBQFiBAJjTQkAvQIEBQJjRwkBAmJEAwUCY2kFAmNnBQdDRUlMSU5HBQFkBQdDRUlMSU5HBAJjTgkAvQIEBQJjSAUBZAkBAmJEAwUCY2kFAmNnBQVGTE9PUgUHQ0VJTElORwQCY08DCQC/AgIFAmNNBQJjSAkAlAoCBQJjTgUCY0gJAJQKAgUCY0cFAmNNBAJjUAgFAmNPAl8xBAJjUQgFAmNPAl8yBAJiUgkAvQIEBQJjbQUCY1EFAmNpBQVGTE9PUgkAlwoFCQEBSgMFAmJSBQFiBQVGTE9PUgkBAUoDBQJjUAUCYk8FB0NFSUxJTkcJAQFKAwUCY1EFAmJQBQdDRUlMSU5HBQJjagUCY0sEAmNSCAUCY0oCXzEEAmNTCAUCY0oCXzIEAmNUCAUCY0oCXzMEAmNrCQEBRwIIBQJjSgJfNAUBYgQCY1UJAQFHAggFAmNKAl81BQFiAwkAZwIAAAUCY1IJAAIBAjZJbnZhbGlkIGNhbGN1bGF0aW9ucy4gTFAgY2FsY3VsYXRlZCBpcyBsZXNzIHRoYW4gemVyby4EAmNWAwkBASEBBQJjegAABQJjUgQCY1cJAGUCBQJjdQUCY1MEAmNYCQBlAgUCY3cFAmNUBAJjWQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVUABQJjawkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjawkAzAgCCQELU3RyaW5nRW50cnkCCQEBWQIFAVoFAmJYCQECYmoKBQJjUwUCY1QFAmNWBQJjawUCY3QFAmNVBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjVwUCY1gFA25pbAkAnwoNBQJjUgUCY1YFAmNrBQJjZgUCY2gFAmNlBQJjYQUCY2QFAmNZBQJjVwUCY1gFAmN2BQJjeAECY1oDAmRhAmRiAmNlBAJkYwkAvAIDCQB2BgkAuQICBQJkYQUCZGIAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJjZQMJAAACBQJjZQUBZgUBZgUCZGMBAmRkAwJkZQJkZgJkZwQCZGgJALgCAgkAtgIBCQECYnkBCQECYVUBBQJiYwUCZGUEAmRpCQC4AgIJALYCAQkBAmJ5AQkBAmFVAQUCYmQFAmRmBAJkagkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJiCHF1YW50aXR5BQJkZwQCZGsJAQJjWgMFAmRoBQJkaQUCZGoFAmRrAQJkbAMCZG0CZG4CZGcEAmRoCQBkAgkBAmJ5AQkBAmFVAQUCYmMFAmRtBAJkaQkAZAIJAQJieQEJAQJhVQEFAmJkBQJkbgQCZGoJAGQCCAkBBXZhbHVlAQkA7AcBBQJiYghxdWFudGl0eQUCZGcEAmRjCQECY1oDCQC2AgEFAmRoCQC2AgEFAmRpCQC2AgEFAmRqBAJkbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWkFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhaAkApgMBBQJkYwUDbmlsCQCUCgIFAmRvBQJkYwECZHACAmRxAmRjAwkAwAICBQJkYwUCZHEGCQECYUkBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmRxCQDMCAIJAKYDAQUCZGMFA25pbAIBIAECZHIBAmRzBAJkdAgFAmRzBmFtb3VudAQCZHUJAG4ECAUCZHMGYW1vdW50CAUCZHMFcHJpY2UFAWIFBUZMT09SBAJkdgMJAAACCAUCZHMJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZHQJAQEtAQUCZHUJAJQKAgkBAS0BBQJkdAUCZHUEAmRtCAUCZHYCXzEEAmRuCAUCZHYCXzIDAwMJAQJhTgAGCQAAAgUCYmEFAW0GCQAAAgUCYmEFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZHMJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJiYwYJAQIhPQIICAUCZHMJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJkCQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZHcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUCYWgJAQJhSwECD2tMcCBpcyByZXF1aXJlZAkBAmFLAQILaW52YWxpZCBrTHAEAmR4CQECZGwDBQJkbQUCZG4AAAQCZHkIBQJkeAJfMQQCZHoIBQJkeAJfMgQCZEEJAMACAgUCZHoFAmR3BQJkQQECZEIBAmRDAwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJkRAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAQCYlkJAQV2YWx1ZQEIBQJkRAdhc3NldElkBAJkRQgFAmREBmFtb3VudAQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYlkFAmRFCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCY0oCXzkEAmNyCAUCY0oDXzEwAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkCQCXCgUFAmNwBQJjcQUCZEUFAmJZBQJjcgECZEYDAmRDAmN0AmN6AwkBAiE9AgkAkAMBCAUCZEMIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmRHCQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABAJkSAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAQQCZEkJAQJjcwkJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQFAmN0CAUCZEcGYW1vdW50CAUCZEcHYXNzZXRJZAgFAmRIBmFtb3VudAgFAmRIB2Fzc2V0SWQJAKUIAQgFAmRDBmNhbGxlcgcFAmN6BAJjZAkBDXBhcnNlSW50VmFsdWUBCAUCZEkCXzgDAwMJAQJhTgAGCQAAAgUCY2QFAWwGCQAAAgUCY2QFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBQJkSQECZEoBAmRLBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCZEsFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQUCZEsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmRQAQJkSwQCZFEJAGsDBQJkSwUCYWcFAWIJAJQKAgkAZQIFAmRLBQJkUQUCZFEBAmRSBAJkUwJkVAFaAmFhBAJkVQkAAAIFAmFhBQR1bml0BAJkVgkBAmJ5AQkBAmFVAQUCYmMEAmRXCQECYnkBCQECYVUBBQJiZAQCZFgDCQAAAgUCZFQFAmJjBgMJAAACBQJkVAUCYmQHCQECYUkBAg1pbnZhbGlkIGFzc2V0BAJkWQMFAmRVCQCUCgIFAmRWBQJkVwMFAmRYCQCUCgIJAGUCBQJkVgUCZFMFAmRXCQCUCgIFAmRWCQBlAgUCZFcFAmRTBAJkWggFAmRZAl8xBAJlYQgFAmRZAl8yBAJlYgMFAmRYCQCUCgIFAmRTAAAJAJQKAgAABQJkUwQCZWMIBQJlYgJfMQQCZWQIBQJlYgJfMgQCZHQICQECZFABBQJlYwJfMQQCZHUICQECZFABBQJlZAJfMQQCZWUJAQJkUAEFAmRTBAJlZggFAmVlAl8xBAJkUQgFAmVlAl8yBAJlZwkAZAIFAmRaBQJkdAQCZWgJAGQCBQJlYQUCZHUEAmVpCQECYkECCQEBRAIFAmVoBQJiZgkBAUQCBQJlZwUCYmUEAmVqCQEBRwIFAmVpBQFiBAJlawMFAmRYBQJkWgUCZWEEAmVsCQC2AgEFAmVrBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZW4DCQC/AgIFAmVtBQFmBgkBAmFJAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJlbgUCZW4EAmVvCQC2AgEFAmVmBAJlcAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlbQkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmVvBQFkBQJlbAASABIFBERPV04FAWQFAWQFA25pbAQCY1kDBQJkVQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVQAFAmVqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFZAgkApQgBCQEFdmFsdWUBBQFaCQDYBAEJAQV2YWx1ZQEFAmFhCQECYmoKBQJlYwUCZWQFAmVwBQJlagAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmVxCQECYkECCQEBRAIFAmVhBQJiZgkBAUQCBQJkWgUCYmUEAmVyCQEBRwIFAmVxBQFiBAJlcwQCZXQDBQJkWAkAlAoCBQJlYwUCZFoJAJQKAgUCZWQFAmVhBAJkSwgFAmV0Al8xBAJldQgFAmV0Al8yBAJldgkAoAMBCQC8AgMFAmVtCQC2AgEJAGkCBQJkSwACCQC2AgEFAmV1CQBrAwkAZQIFAmVwBQJldgUBYgUCZXYJAJcKBQUCZXAFAmNZBQJkUQUCZXMFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldwUCZXgCZWYCZFQBWgJhYQQCZFUJAAACBQJhYQUEdW5pdAQCZXkJAMwIAgMJAAACBQJkVAUCYmIGCQECYUkBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZXkFAmV5BAJlegMJAAACBQJleAUCYmMGAwkAAAIFAmV4BQJiZAcJAQJhSQECDWludmFsaWQgYXNzZXQEAmVBAwUCZXoJALYCAQkBAmJ5AQkBAmFVAQUCYmMJALYCAQkBAmJ5AQkBAmFVAQUCYmQEAmVCCQECYnkBCQECYVUBBQJiYwQCZUMJAQJieQEJAQJhVQEFAmJkBAJlRAMFAmV6BQJlQgUCZUMEAmVFCQC2AgEFAmVEBAJlbQkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJiCQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJiAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZUYJALYCAQUCZWYEAmVHCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmVBCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJlRgUBZAUCZW0AEgUBaAAAABIFBERPV04FAWQFA25pbAQCZUgJAQJkUAEFAmVHBAJlSQgFAmVIAl8xBAJkUQgFAmVIAl8yBAJlSgMFAmV6CQCWCgQFAmVJAAAJAGUCBQJlQgUCZUcFAmVDCQCWCgQAAAUCZUkFAmVCCQBlAgUCZUMFAmVHBAJlSwgFAmVKAl8xBAJlTAgFAmVKAl8yBAJlTQgFAmVKAl8zBAJlTggFAmVKAl80BAJlaQkBAmJBAgkBAUQCBQJlTgUCYmYJAQFEAgUCZU0FAmJlBAJlagkBAUcCBQJlaQUBYgQCY1kDBQJkVQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIJAKUIAQkBBXZhbHVlAQUBWgkA2AQBCQEFdmFsdWUBBQJhYQkBAmJ1BgUCZUsFAmVMBQJlZgUCZWoFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFVAAUCZWoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFA25pbAQCZXEJAQJiQQIJAQFEAgUCZUMFAmJmCQEBRAIFAmVCBQJiZQQCZXIJAQFHAgUCZXEFAWIEAmVzBAJlTwkAaAIJAKADAQkAvAIDBQJlQQUCZUYFAmVtAAIJAGsDCQBlAgUCZUkFAmVPBQFiBQJlTwkAlwoFBQJlSQUCY1kFAmRRBQJlcwUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVQAAQCZE4JAKIIAQkBAVMAAwkAAQIFAmROAgZTdHJpbmcEAmVRBQJkTgkA2QQBBQJlUQMJAAECBQJkTgIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJlUgAEAmROCQCiCAEJAQFUAAMJAAECBQJkTgIGU3RyaW5nBAJlUQUCZE4JANkEAQUCZVEDCQABAgUCZE4CBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZVMBAmRDBAJkTgkBAmVQAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVQFAmROCQAAAggFAmRDD2NhbGxlclB1YmxpY0tleQUCZVQDCQABAgUCZE4CBFVuaXQJAAACCAUCZEMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmVVAQJkQwQCZVYJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCZE4JAQJlUAADCQABAgUCZE4CCkJ5dGVWZWN0b3IEAmVUBQJkTgMJAAACCAUCZEMPY2FsbGVyUHVibGljS2V5BQJlVAYFAmVWAwkAAQIFAmROAgRVbml0AwkAAAIIBQJkQwZjYWxsZXIFBHRoaXMGBQJlVgkAAgECC01hdGNoIGVycm9yGwJkQwEKc2V0TWFuYWdlcgECZVcEAmVYCQECZVUBBQJkQwMJAAACBQJlWAUCZVgEAmVZCQDZBAEFAmVXAwkAAAIFAmVZBQJlWQkAzAgCCQELU3RyaW5nRW50cnkCCQEBVAAFAmVXBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBDmNvbmZpcm1NYW5hZ2VyAAQCZVoJAQJlUgAEAmZhAwkBCWlzRGVmaW5lZAEFAmVaBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYQUCZmEEAmZiAwkAAAIIBQJkQw9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAmVaBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQJmYgUCZmIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMACQDYBAEJAQV2YWx1ZQEFAmVaCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFUAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQNwdXQCAmN0AmZjAwkAZgIAAAUCY3QJAAIBAiBJbnZhbGlkIHNsaXBwYWdlVG9sZXJhbmNlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJjdAYEAmNWCAUCZEkCXzIEAmNhCAUCZEkCXzcEAmNyCAUCZEkCXzkEAmNXCAUCZEkDXzEwBAJjWAgFAmRJA18xMQQCZmQIBQJkSQNfMTIEAmZlCAUCZEkDXzEzBAJkRwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZEMIcGF5bWVudHMAAAZhbW91bnQEAmRICQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwABBmFtb3VudAQCZGsJAQJkZAMFAmRHBQJkSAkAtgIBAAADCQAAAgUCZGsFAmRrBAJkTAkA/AcEBQJhTAIEZW1pdAkAzAgCBQJjVgUDbmlsBQNuaWwDCQAAAgUCZEwFAmRMBAJkTQQCZE4FAmRMAwkAAQIFAmROAgdBZGRyZXNzBAJkTwUCZE4JAPwHBAUCZE8CBGVtaXQJAMwIAgUCY1YFA25pbAUDbmlsBQR1bml0AwkAAAIFAmRNBQJkTQQCZmYDCQBmAgUCY1cAAAkA/AcEBQJiaQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmZkBQJjVwUDbmlsBQNuaWwDCQAAAgUCZmYFAmZmBAJmZwMJAGYCBQJjWAAACQD8BwQFAmJpAgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmUFAmNYBQNuaWwFA25pbAMJAAACBQJmZwUCZmcEAmZoAwUCZmMEAmZpCQD8BwQFAmJoAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCY1YFA25pbAMJAAACBQJmaQUCZmkFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZEMGY2FsbGVyBQJjVgUCY2EFA25pbAQCZmoJAQJkbAMAAAAAAAADCQAAAgUCZmoFAmZqBAJkYwgFAmZqAl8yBAJmawgFAmZqAl8xBAJmbAkBAmRwAgUCZGsFAmRjAwkAAAIFAmZsBQJmbAkAzggCCQDOCAIFAmNyBQJmaAUCZmsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCnB1dEZvckZyZWUBAmZtAwkAZgIAAAUCZm0JAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZEkJAQJkRgMFAmRDBQJmbQcEAmNyCAUCZEkCXzkEAmRHCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJkQwhwYXltZW50cwAABmFtb3VudAQCZEgJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmRDCHBheW1lbnRzAAEGYW1vdW50BAJkawkBAmRkAwUCZEcFAmRICQC2AgEAAAMJAAACBQJkawUCZGsEAmZuCQECZGwDAAAAAAAABAJmawgFAmZuAl8xBAJkYwgFAmZuAl8yBAJmbAkBAmRwAgUCZGsFAmRjAwkAAAIFAmZsBQJmbAkAzggCBQJjcgUCZmsJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZEMBCXB1dE9uZVRrbgICZm8CZnAEAmZxCgACZnIJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcgIHQm9vbGVhbgUCZnIJAAIBCQCsAgIJAAMBBQJmcgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZnMDAwMJAQJhTgAGCQAAAgUCYmEFAWwGCQAAAgUCYmEFAW4GBQJmcQQCZXkJAMwIAgMDCQEBIQEFAmZzBgkBAmVTAQUCZEMGCQECYUkBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwABBgkBAmFJAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZXkFAmV5BAJmdAkAkQMCCAUCZEMIcGF5bWVudHMAAAQCZFQIBQJmdAdhc3NldElkBAJkUwgFAmZ0BmFtb3VudAQCZGsDCQAAAgUCZFQFAmJjCQECZGQDCQC2AgEFAmRTCQC2AgEAAAkAtgIBAAADCQAAAgUCZFQFAmJkCQECZGQDCQC2AgEAAAkAtgIBBQJkUwkAtgIBAAAJAQJhSQECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAQBWggFAmRDBmNhbGxlcgQCYWEIBQJkQw10cmFuc2FjdGlvbklkBAJmdQkBAmRSBAUCZFMFAmRUBQFaBQJhYQMJAAACBQJmdQUCZnUEAmRYCAUCZnUCXzUEAmZ2CAUCZnUCXzQEAmRRCAUCZnUCXzMEAmNZCAUCZnUCXzIEAmZ3CAUCZnUCXzEEAmZ4AwMJAGYCBQJmbwAACQBmAgUCZm8FAmZ3BwkBAmFJAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJmbwUDbmlsAgAFAmZ3BAJkTAkBAmRKAQUCZngDCQAAAgUCZEwFAmRMBAJmaAMFAmZwBAJmeQkA/AcEBQJiaAIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYmIFAmZ4BQNuaWwDCQAAAgUCZnkFAmZ5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRDBmNhbGxlcgUCZngFAmJiBQNuaWwEAmZ6AwkAZgIFAmRRAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYU0FAmRRBQJkVAUDbmlsBQNuaWwEAmZBAwkAAAIFBHRoaXMFAmFNCQCUCgIAAAAAAwUCZFgJAJQKAgkBAS0BBQJkUQAACQCUCgIAAAkBAS0BBQJkUQQCZG0IBQJmQQJfMQQCZG4IBQJmQQJfMgQCZkIJAQJkbAMFAmRtBQJkbgAABAJmawgFAmZCAl8xBAJkYwgFAmZCAl8yBAJkdwkBBXZhbHVlAQkAoggBBQJhaAQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAJQKAgkAzggCCQDOCAIJAM4IAgUCY1kFAmZoBQJmegUCZmsFAmZ4CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARFwdXRPbmVUa25SRUFET05MWQICZFQCZFMEAmZDCQECZFIEBQJkUwkBAmFTAQUCZFQFBHVuaXQFBHVuaXQEAmZ3CAUCZkMCXzEEAmNZCAUCZkMCXzIEAmRRCAUCZkMCXzMEAmZ2CAUCZkMCXzQEAmRYCAUCZkMCXzUJAJQKAgUDbmlsCQCVCgMFAmZ3BQJkUQUCZnYCZEMBCWdldE9uZVRrbgICZkQCZm8EAmZxCgACZnIJAPwHBAUCYUwCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJmcgIHQm9vbGVhbgUCZnIJAAIBCQCsAgIJAAMBBQJmcgIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZkUDAwkBAmFOAAYJAAACBQJiYQUBbgYFAmZx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AAAJALYCAQUCZEUEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZUBQJmVAQCZlUJAQJkbAMJAQEtAQUCZlMJAQEtAQUCY3EAAAQCZmsIBQJmVQJfMQQCZGMIBQJmVQJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQlnZXROb0xlc3MCAmZWAmZXBAJjSgkBAmRCAQUCZEMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmRFCAUCY0oCXzMEAmJZCAUCY0oCXzQEAmNyCAUCY0oCXzUDCQBmAgUCZlYFAmNwCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJjcAIDIDwgCQCkAwEFAmZWAwkAZgIFAmZXBQJjcQkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmNxAgMgPCAJAKQDAQUCZlcEAmRrCQECZGQDCQC2AgEAAAkAtgIBAAAJALYCAQUCZEUEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRFBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJZBQJkRQUDbmlsAwkAAAIFAmZUBQJmVAQCZlgJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmsIBQJmWAJfMQQCZGMIBQJmWAJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDAQ11bnN0YWtlQW5kR2V0AQJkSwQCZlkDCQECIT0CCQCQAwEIBQJkQwhwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJmWQUCZlkEAmJOCQECYVAABAJjYQkA2QQBCQCRAwIFAmJOBQFxBAJkawkBAmRkAwkAtgIBAAAJALYCAQAACQC2AgEAAAQCZk8JAPwHBAUCYmgCB3Vuc3Rha2UJAMwIAgkA2AQBBQJjYQkAzAgCBQJkSwUDbmlsBQNuaWwDCQAAAgUCZk8FAmZPBAJjSgkBAmJXBAkA2AQBCAUCZEMNdHJhbnNhY3Rpb25JZAkA2AQBBQJjYQUCZEsIBQJkQwZjYWxsZXIEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQQCY3IIBQJjSgNfMTAEAmZaAwMJAQJhTgAGCQAAAgUCY2QFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmNkBgMJAAACBQJmWgUCZloEAmZUCQD8BwQFAmFMAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNhBQJkSwUDbmlsAwkAAAIFAmZUBQJmVAQCZ2EJAQJkbAMJAQEtAQUCY3AJAQEtAQUCY3EAAAQCZmsIBQJnYQJfMQQCZGMIBQJnYQJfMgQCZmwJAQJkcAIFAmRrBQJkYwMJAAACBQJmbAUCZmwJAM4IAgUCY3IFAmZrCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRDARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJmTgJnYgJmVwQCZkUDCQECYU4ABgkAAAIFAmJhBQFuBAJleQkAzAgCAwkBASEBBQJmRQYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkQwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmV5BQJleQQCZGsJAQJkZAMJALYCAQAACQC2AgEAAAkAtgIBAAAEAmZPCQD8BwQFAmJoAgd1bnN0YWtlCQDMCAIJANgEAQUCYmIJAMwIAgUCZk4FA25pbAUDbmlsAwkAAAIFAmZPBQJmTwQCY0oJAQJiVwQJANgEAQgFAmRDDXRyYW5zYWN0aW9uSWQJANgEAQUCYmIFAmZOCAUCZEMGY2FsbGVyBAJjcAgFAmNKAl8xBAJjcQgFAmNKAl8yBAJjcggFAmNKA18xMAQCZ2MJAMwIAgMJAGcCBQJjcAUCZ2IGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ2IFA25pbAIACQDMCAIDCQBnAgUCY3EFAmZXBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZlcFA25pbAIABQNuaWwDCQAAAgUCZ2MFAmdjBAJmVAkA/AcEBQJhTAIEYnVybgkAzAgCBQJmTgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJiYgUCZk4FA25pbAMJAAACBQJmVAUCZlQEAmdkCQECZGwDCQEBLQEFAmNwCQEBLQEFAmNxAAAEAmZrCAUCZ2QCXzEEAmRjCAUCZ2QCXzIEAmZsCQECZHACBQJkawUCZGMDCQAAAgUCZmwFAmZsCQDOCAIFAmNyBQJmawkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkQwEIYWN0aXZh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ZCVkCQDMCAIJAKQDAQUCZ24JAMwIAgkApAMBBQJnbwkAzAgCCQCkAwEFAmdtCQDMCAIJAKQDAQUCY2sJAMwIAgkApAMBBQJncQkAzAgCCQCkAwEFAmdyCQDMCAIJAKQDAQUCZ3MFA25pbAUBagJkQwEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmN1BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmduCQECYnkBBQJjQQQCZ28JAQJieQEFAmNCBAJiSgkBAUQCBQJnbgUCYk8EAmJLCQEBRAIFAmdvBQJiUAQCY2oDCQAAAgUCZ20AAAUBZQkBAmJBAgUCYksFAmJKBAJjRwkBAUQCBQJjdQUCYk8EAmNICQC8AgMFAmNHBQJjagUBZAQCY3cJAQFHAgUCY0gFAmJQBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndAgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmN3BAJiTgkBAmFQAAQCY2EJANkEAQkAkQMCBQJiTgUBcQQCY0EJAJEDAgUCYk4FAXIEAmNiCQDZBAEFAmNBBAJjQgkAkQMCBQJiTgUBcwQCY2MJANkEAQUCY0IEAmJPCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXQEAmJQCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYk4FAXUEAmNkCQCRAwIFAmJOBQFwBAJnbQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJjYQkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJjYQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmd1CQECYnkBBQJjQQQCZ3YJAQJieQEFAmNCBAJndwkBAUQCBQJndQUCYk8EAmd4CQEBRAIFAmd2BQJiUAQCY2oDCQAAAgUCZ20AAAUBZQkBAmJBAgUCZ3gFAmd3BAJjSAkBAUQCBQJjdwUCYlAEAmNHCQC8AgMFAmNIBQFkBQJjagQCY3UJAQFHAgUCY0cFAmJPBAJkSQkBAmNzCQIAAKDCHgUCY3UFAmNiBQJjdwUCY2MCAAYHBAJjUggFAmRJAl8xBAJndAgFAmRJAl8zBAJjZggFAmRJAl80BAJjaAgFAmRJAl81BAJjZQgFAmRJAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjUgkAzAgCCQCkAwEJAQFHAgUCY2oFAWIJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgUCY2QJAMwIAgkApAMBBQJjdQkAzAgCCQCkAwEFAmN3BQNuaWwFAWoCZEMBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmd5Amd6BAJjSgkBAmJXBAIABQJneQUCZ3oFBHRoaXMEAmNwCAUCY0oCXzEEAmNxCAUCY0oCXzIEAmNmCAUCY0oCXzUEAmNoCAUCY0oCXzYEAmNlCAUCY0oCXzcEAmNrCAUCY0oCXzgEAmNkCQENcGFyc2VJbnRWYWx1ZQEIBQJjSgJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNwCQDMCAIJAKQDAQUCY3EJAMwIAgkApAMBBQJjZgkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCY2UJAMwIAgkApgMBBQJjawkAzAgCCQCkAwEFAmNkBQNuaWwFAWoBAmdBAQJnQgAEAmdDBAJkTgkBAmVQAAMJAAECBQJkTgIKQnl0ZVZlY3RvcgQCZVQFAmROBQJlVAMJAAECBQJkTgIEVW5pdAgFAmdBD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJkTgUCZ0EDCQABAgUCZE4CBU9yZGVyBAJkcwUCZE4EAmdECQECYU8ABAJhQgkBAmRyAQUCZHMEAmFDCQD0AwMIBQJkcwlib2R5Qnl0ZXMJAJEDAggFAmRzBnByb29mcwAACAUCZHMPc2VuZGVyUHVibGljS2V5BAJhRAkA9AMDCAUCZHMJYm9keUJ5dGVzCQCRAwIIBQJkcwZwcm9vZnMAAQUCZ0QDAwMFAmFCBQJhQwcFAmFEBwYJAQJhQQMFAmFCBQJhQwUCYUQDCQABAgUCZE4CFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJlUQUCZE4EAmdFCQD2AwEJAQV2YWx1ZQEIBQJlUQZzY3JpcHQEAmdGCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYUwJAQJheQAEAmdHCQDxBwEFBHRoaXMDAwkAAAIFAmdGBQJnRQkBAiE9AgUCZ0cFAmdFBwYJAPQDAwgFAmdBCWJvZHlCeXRlcwkAkQMCCAUCZ0EGcHJvb2ZzAAAFAmdDCQD0AwMIBQJnQQlib2R5Qnl0ZXMJAJEDAggFAmdBBnByb29mcwAABQJnQ3+fCEw=", "chainId": 84, "height": 2351077, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Gc3x5o94mmoRVAAjUksAg1BPjzSVHp7v68GktxFw8HBC Next: 7wDqr5vioqhFhxdMXbimiaDxTArmCi3EWpNt9itPs4pK Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (H,I,K) = toInt(fraction(H, toBigInt(I), d, K))
6969
7070
7171 func L (M,N,O) = fraction(M, N, O)
7272
7373
7474 func P (H) = if ((0 > H))
7575 then -(H)
7676 else H
7777
7878
7979 func Q (H) = if ((e > H))
8080 then -(H)
8181 else H
8282
8383
8484 func R () = "%s__factoryContract"
8585
8686
8787 func S () = "%s__managerPublicKey"
8888
8989
9090 func T () = "%s__pendingManagerPublicKey"
9191
9292
9393 func U () = "%s%s__price__last"
9494
9595
9696 func V (W,X) = makeString(["%s%s%d%d__price__history", toString(W), toString(X)], j)
9797
9898
9999 func Y (Z,aa) = ((("%s%s%s__P__" + Z) + "__") + aa)
100100
101101
102102 func ab (Z,aa) = ((("%s%s%s__G__" + Z) + "__") + aa)
103103
104104
105105 func ac () = "%s__amountAsset"
106106
107107
108108 func ad () = "%s__priceAsset"
109109
110110
111111 let ae = "%s__fee"
112112
113113 let af = fraction(10, b, 10000)
114114
115115 let ag = valueOrElse(getInteger(this, ae), af)
116116
117117 let ah = makeString(["%s", "kLp"], j)
118118
119119 let ai = makeString(["%s", "kLpRefreshedHeight"], j)
120120
121121 let aj = makeString(["%s", "refreshKLpDelay"], j)
122122
123123 let ak = 30
124124
125125 let al = valueOrElse(getInteger(this, aj), ak)
126126
127127 func am () = "%s__factoryConfig"
128128
129129
130130 func an () = "%s%s__matcher__publicKey"
131131
132132
133133 func ao (ap) = (("%s%s%s__" + ap) + "__mappings__poolContract2LpAsset")
134134
135135
136136 func aq (ar,as) = (((("%d%d%s__" + ar) + "__") + as) + "__config")
137137
138138
139139 func at (au) = ("%s%s%s__mappings__baseAsset2internalId__" + au)
140140
141141
142142 func av () = "%s__shutdown"
143143
144144
145145 func aw (ax) = ("%s%s__poolWeight__" + ax)
146146
147147
148148 func ay () = "%s__allowedLpScriptHash"
149149
150150
151151 let az = "%s__feeCollectorAddress"
152152
153153 func aA (aB,aC,aD) = throw(((((("order validation failed: orderValid=" + toString(aB)) + " senderValid=") + toString(aC)) + " matcherValid=") + toString(aD)))
154154
155155
156156 func aE (aF,aG) = valueOrErrorMessage(getString(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
157157
158158
159159 func aH (aF,aG) = valueOrErrorMessage(getInteger(aF, aG), makeString(["mandatory ", toString(aF), ".", aG, " is not defined"], ""))
160160
161161
162162 func aI (aJ) = throw(makeString(["lp.ride:", aJ], " "))
163163
164164
165165 func aK (aJ) = makeString(["lp.ride:", aJ], " ")
166166
167167
168168 let aL = addressFromStringValue(aE(this, R()))
169169
170170 let aM = addressFromStringValue(aE(aL, az))
171171
172172 func aN () = valueOrElse(getBoolean(aL, av()), false)
173173
174174
175175 func aO () = fromBase58String(aE(aL, an()))
176176
177177
178178 func aP () = {
179179 let aQ = aE(this, ac())
180180 let aR = aE(this, ad())
181181 let as = aH(aL, at(aR))
182182 let ar = aH(aL, at(aQ))
183183 split(aE(aL, aq(toString(ar), toString(as))), j)
184184 }
185185
186186
187187 func aS (aT) = if ((aT == i))
188188 then unit
189189 else fromBase58String(aT)
190190
191191
192192 func aU (aT) = if ((aT == unit))
193193 then i
194194 else toBase58String(value(aT))
195195
196196
197197 func aV (aW) = $Tuple7(addressFromStringValue(aW[o]), parseIntValue(aW[p]), fromBase58String(aW[q]), aS(aW[r]), aS(aW[s]), parseIntValue(aW[t]), parseIntValue(aW[u]))
198198
199199
200200 let aX = aV(aP())
201201
202202 let aY = aX
203203
204204 let aZ = aY._1
205205
206206 let ba = aY._2
207207
208208 let bb = aY._3
209209
210210 let bc = aY._4
211211
212212 let bd = aY._5
213213
214214 let be = aY._6
215215
216216 let bf = aY._7
217217
218218 func bg () = split(aE(aL, am()), j)
219219
220220
221221 let bh = valueOrErrorMessage(addressFromString(bg()[B]), "incorrect staking address")
222222
223223 let bi = valueOrErrorMessage(addressFromString(bg()[C]), "incorrect staking address")
224224
225225 func bj (bk,bl,bm,bn,bo,bp,bq,br,bs,bt) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bk), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq), toString(br), toString(bs), toString(bt)], j)
226226
227227
228228 func bu (bv,bw,bx,bn,bq,br) = makeString(["%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(bn), toString(bq), toString(br)], j)
229229
230230
231231 func by (bz) = if ((bz == "WAVES"))
232232 then wavesBalance(this).available
233233 else assetBalance(this, fromBase58String(bz))
234234
235235
236236 func bA (bB,bC) = fraction(bB, d, bC)
237237
238238
239239 func bD (bB,bC,K) = fraction(bB, d, bC, K)
240240
241241
242242 func bE (bF,bG,bH,bI) = {
243243 let bJ = D(bH, bF)
244244 let bK = D(bI, bG)
245245 bA(bK, bJ)
246246 }
247247
248248
249249 func bL (bH,bI,bM) = {
250250 let bN = aP()
251251 let bO = parseIntValue(bN[t])
252252 let bP = parseIntValue(bN[u])
253253 let bQ = bE(bO, bP, bH, bI)
254254 let bC = D(bH, bO)
255255 let bB = D(bI, bP)
256256 let bR = D(bM, b)
257257 let bS = bA(bC, bR)
258258 let bT = bA(bB, bR)
259259 [bQ, bS, bT]
260260 }
261261
262262
263263 func bU (bH,bI,bM) = {
264264 let bV = bL(bH, bI, bM)
265265 [G(bV[0], b), G(bV[1], b), G(bV[2], b)]
266266 }
267267
268268
269269 func bW (bX,bY,bZ,Z) = {
270270 let bN = aP()
271271 let ca = bN[q]
272272 let cb = bN[r]
273273 let cc = bN[s]
274274 let bF = parseIntValue(bN[t])
275275 let bG = parseIntValue(bN[u])
276276 let cd = bN[p]
277277 let ce = valueOrErrorMessage(assetInfo(fromBase58String(ca)), (("Asset " + ca) + " doesn't exist")).quantity
278278 if ((ca != bY))
279279 then throw("Invalid asset passed.")
280280 else {
281281 let cf = by(cb)
282282 let cg = D(cf, bF)
283283 let ch = by(cc)
284284 let ci = D(ch, bG)
285285 let cj = bA(ci, cg)
286286 let ck = G(cj, b)
287287 let cl = D(bZ, b)
288288 let cm = D(ce, b)
289289 let cn = fraction(cg, cl, cm)
290290 let co = fraction(ci, cl, cm)
291291 let cp = G(cn, bF)
292292 let cq = G(co, bG)
293293 let cr = if ((bX == ""))
294294 then nil
295295 else [ScriptTransfer(Z, cp, if ((cb == "WAVES"))
296296 then unit
297297 else fromBase58String(cb)), ScriptTransfer(Z, cq, if ((cc == "WAVES"))
298298 then unit
299299 else fromBase58String(cc)), StringEntry(ab(toString(Z), bX), bu(cp, cq, bZ, ck, height, lastBlock.timestamp)), IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck)]
300300 $Tuple10(cp, cq, cb, cc, cf, ch, ce, cj, cd, cr)
301301 }
302302 }
303303
304304
305305 func cs (bX,ct,cu,cv,cw,cx,Z,cy,cz) = {
306306 let bN = aP()
307307 let ca = fromBase58String(bN[q])
308308 let cA = bN[r]
309309 let cB = bN[s]
310310 let cC = bN[v]
311311 let cD = bN[w]
312312 let bO = parseIntValue(bN[t])
313313 let bP = parseIntValue(bN[u])
314314 let cd = bN[p]
315315 let ce = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
316316 let cE = toBase58String(valueOrElse(cv, fromBase58String("WAVES")))
317317 let cF = toBase58String(valueOrElse(cx, fromBase58String("WAVES")))
318318 if (if ((cA != cE))
319319 then true
320320 else (cB != cF))
321321 then throw("Invalid amt or price asset passed.")
322322 else {
323323 let cf = if (cy)
324324 then by(cA)
325325 else (by(cA) - cu)
326326 let ch = if (cy)
327327 then by(cB)
328328 else (by(cB) - cw)
329329 let cG = D(cu, bO)
330330 let cH = D(cw, bP)
331331 let cI = bA(cH, cG)
332332 let cg = D(cf, bO)
333333 let ci = D(ch, bP)
334334 let cJ = if ((ce == 0))
335335 then {
336336 let cj = e
337337 let cK = e
338338 let bR = pow((cG * cH), 0, toBigInt(5), 1, 0, DOWN)
339339 $Tuple5(G(bR, b), G(cG, bO), G(cH, bP), bA((ci + cH), (cg + cG)), cK)
340340 }
341341 else {
342342 let cj = bA(ci, cg)
343343 let cK = fraction(Q((cj - cI)), d, cj)
344344 let cL = D(ct, b)
345345 if (if ((cj != e))
346346 then (cK > cL)
347347 else false)
348348 then throw(((("Price slippage " + toString(cK)) + " exceeded the passed limit of ") + toString(cL)))
349349 else {
350350 let cm = D(ce, b)
351351 let cM = fraction(cG, bD(ci, cg, CEILING), d, CEILING)
352352 let cN = fraction(cH, d, bD(ci, cg, FLOOR), CEILING)
353353 let cO = if ((cM > cH))
354354 then $Tuple2(cN, cH)
355355 else $Tuple2(cG, cM)
356356 let cP = cO._1
357357 let cQ = cO._2
358358 let bR = fraction(cm, cQ, ci, FLOOR)
359359 $Tuple5(J(bR, b, FLOOR), J(cP, bO, CEILING), J(cQ, bP, CEILING), cj, cK)
360360 }
361361 }
362362 let cR = cJ._1
363363 let cS = cJ._2
364364 let cT = cJ._3
365365 let ck = G(cJ._4, b)
366366 let cU = G(cJ._5, b)
367367 if ((0 >= cR))
368368 then throw("Invalid calculations. LP calculated is less than zero.")
369369 else {
370370 let cV = if (!(cz))
371371 then 0
372372 else cR
373373 let cW = (cu - cS)
374374 let cX = (cw - cT)
375375 let cY = [IntegerEntry(U(), ck), IntegerEntry(V(height, lastBlock.timestamp), ck), StringEntry(Y(Z, bX), bj(cS, cT, cV, ck, ct, cU, height, lastBlock.timestamp, cW, cX))]
376376 $Tuple13(cR, cV, ck, cf, ch, ce, ca, cd, cY, cW, cX, cv, cx)
377377 }
378378 }
379379 }
380380
381381
382382 func cZ (da,db,ce) = {
383383 let dc = fraction(pow((da * db), 0, toBigInt(5), 1, 18, DOWN), g, ce)
384384 if ((ce == f))
385385 then f
386386 else dc
387387 }
388388
389389
390390 func dd (de,df,dg) = {
391391 let dh = (toBigInt(by(aU(bc))) - de)
392392 let di = (toBigInt(by(aU(bd))) - df)
393393 let dj = (toBigInt(value(assetInfo(bb)).quantity) - dg)
394394 let dk = cZ(dh, di, dj)
395395 dk
396396 }
397397
398398
399399 func dl (dm,dn,dg) = {
400400 let dh = (by(aU(bc)) + dm)
401401 let di = (by(aU(bd)) + dn)
402402 let dj = (value(assetInfo(bb)).quantity + dg)
403403 let dc = cZ(toBigInt(dh), toBigInt(di), toBigInt(dj))
404404 let do = [IntegerEntry(ai, height), StringEntry(ah, toString(dc))]
405405 $Tuple2(do, dc)
406406 }
407407
408408
409409 func dp (dq,dc) = if ((dc >= dq))
410410 then true
411411 else aI(makeString(["updated KLp lower than current KLp", toString(dq), toString(dc)], " "))
412412
413413
414414 func dr (ds) = {
415415 let dt = ds.amount
416416 let du = fraction(ds.amount, ds.price, b, FLOOR)
417417 let dv = if ((ds.orderType == Buy))
418418 then $Tuple2(dt, -(du))
419419 else $Tuple2(-(dt), du)
420420 let dm = dv._1
421421 let dn = dv._2
422422 if (if (if (aN())
423423 then true
424424 else (ba == m))
425425 then true
426426 else (ba == n))
427427 then throw("Exchange operations disabled")
428428 else if (if ((ds.assetPair.amountAsset != bc))
429429 then true
430430 else (ds.assetPair.priceAsset != bd))
431431 then throw("Wrong order assets.")
432432 else {
433433 let dw = valueOrErrorMessage(parseBigInt(valueOrErrorMessage(getString(this, ah), aK("kLp is required"))), aK("invalid kLp"))
434434 let dx = dl(dm, dn, 0)
435435 let dy = dx._1
436436 let dz = dx._2
437437 let dA = (dz >= dw)
438438 dA
439439 }
440440 }
441441
442442
443443 func dB (dC) = if ((size(dC.payments) != 1))
444444 then throw("exactly 1 payment is expected")
445445 else {
446446 let dD = value(dC.payments[0])
447447 let bY = value(dD.assetId)
448448 let dE = dD.amount
449449 let cJ = bW(toBase58String(dC.transactionId), toBase58String(bY), dE, dC.caller)
450450 let cp = cJ._1
451451 let cq = cJ._2
452452 let cd = parseIntValue(cJ._9)
453453 let cr = cJ._10
454454 if (if (aN())
455455 then true
456456 else (cd == n))
457457 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
458458 else $Tuple5(cp, cq, dE, bY, cr)
459459 }
460460
461461
462462 func dF (dC,ct,cz) = if ((size(dC.payments) != 2))
463463 then throw("exactly 2 payments are expected")
464464 else {
465465 let dG = value(dC.payments[0])
466466 let dH = value(dC.payments[1])
467467 let dI = cs(toBase58String(dC.transactionId), ct, dG.amount, dG.assetId, dH.amount, dH.assetId, toString(dC.caller), false, cz)
468468 let cd = parseIntValue(dI._8)
469469 if (if (if (aN())
470470 then true
471471 else (cd == l))
472472 then true
473473 else (cd == n))
474474 then throw(("Put operation is blocked by admin. Status = " + toString(cd)))
475475 else dI
476476 }
477477
478478
479479 func dJ (dK) = {
480480 let dL = invoke(aL, "emit", [dK], nil)
481481 if ((dL == dL))
482482 then {
483483 let dM = {
484484 let dN = dL
485485 if ($isInstanceOf(dN, "Address"))
486486 then {
487487 let dO = dN
488488 invoke(dO, "emit", [dK], nil)
489489 }
490490 else unit
491491 }
492492 if ((dM == dM))
493493 then dK
494494 else throw("Strict value is not equal to itself.")
495495 }
496496 else throw("Strict value is not equal to itself.")
497497 }
498498
499499
500500 func dP (dK) = {
501501 let dQ = fraction(dK, ag, b)
502502 $Tuple2((dK - dQ), dQ)
503503 }
504504
505505
506506 func dR (dS,dT,Z,aa) = {
507507 let dU = (aa == unit)
508508 let dV = by(aU(bc))
509509 let dW = by(aU(bd))
510510 let dX = if ((dT == bc))
511511 then true
512512 else if ((dT == bd))
513513 then false
514514 else aI("invalid asset")
515515 let dY = if (dU)
516516 then $Tuple2(dV, dW)
517517 else if (dX)
518518 then $Tuple2((dV - dS), dW)
519519 else $Tuple2(dV, (dW - dS))
520520 let dZ = dY._1
521521 let ea = dY._2
522522 let eb = if (dX)
523523 then $Tuple2(dS, 0)
524524 else $Tuple2(0, dS)
525525 let ec = eb._1
526526 let ed = eb._2
527527 let dt = dP(ec)._1
528528 let du = dP(ed)._1
529529 let ee = dP(dS)
530530 let ef = ee._1
531531 let dQ = ee._2
532532 let eg = (dZ + dt)
533533 let eh = (ea + du)
534534 let ei = bA(D(eh, bf), D(eg, be))
535535 let ej = G(ei, b)
536536 let ek = if (dX)
537537 then dZ
538538 else ea
539539 let el = toBigInt(ek)
540540 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
541541 let en = if ((em > f))
542542 then true
543543 else aI("initial deposit requires all coins")
544544 if ((en == en))
545545 then {
546546 let eo = toBigInt(ef)
547547 let ep = max([0, toInt(((em * (sqrtBigInt((d + ((eo * d) / el)), 18, 18, DOWN) - d)) / d))])
548548 let cY = if (dU)
549549 then nil
550550 else [IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej), StringEntry(Y(toString(value(Z)), toBase58String(value(aa))), bj(ec, ed, ep, ej, 0, 0, height, lastBlock.timestamp, 0, 0))]
551551 let eq = bA(D(ea, bf), D(dZ, be))
552552 let er = G(eq, b)
553553 let es = {
554554 let et = if (dX)
555555 then $Tuple2(ec, dZ)
556556 else $Tuple2(ed, ea)
557557 let dK = et._1
558558 let eu = et._2
559559 let ev = toInt(fraction(em, toBigInt((dK / 2)), toBigInt(eu)))
560560 fraction((ep - ev), b, ev)
561561 }
562562 $Tuple5(ep, cY, dQ, es, dX)
563563 }
564564 else throw("Strict value is not equal to itself.")
565565 }
566566
567567
568568 func ew (ex,ef,dT,Z,aa) = {
569569 let dU = (aa == unit)
570570 let ey = [if ((dT == bb))
571571 then true
572572 else aI("invalid lp asset")]
573573 if ((ey == ey))
574574 then {
575575 let ez = if ((ex == bc))
576576 then true
577577 else if ((ex == bd))
578578 then false
579579 else aI("invalid asset")
580580 let eA = if (ez)
581581 then toBigInt(by(aU(bc)))
582582 else toBigInt(by(aU(bd)))
583583 let eB = by(aU(bc))
584584 let eC = by(aU(bd))
585585 let eD = if (ez)
586586 then eB
587587 else eC
588588 let eE = toBigInt(eD)
589589 let em = toBigInt(valueOrErrorMessage(assetInfo(bb), (("asset " + toBase58String(bb)) + " doesn't exist")).quantity)
590590 let eF = toBigInt(ef)
591591 let eG = max([0, toInt(((eA * (d - pow((d - ((eF * d) / em)), 18, h, 0, 18, DOWN))) / d))])
592592 let eH = dP(eG)
593593 let eI = eH._1
594594 let dQ = eH._2
595595 let eJ = if (ez)
596596 then $Tuple4(eI, 0, (eB - eG), eC)
597597 else $Tuple4(0, eI, eB, (eC - eG))
598598 let eK = eJ._1
599599 let eL = eJ._2
600600 let eM = eJ._3
601601 let eN = eJ._4
602602 let ei = bA(D(eN, bf), D(eM, be))
603603 let ej = G(ei, b)
604604 let cY = if (dU)
605605 then nil
606606 else [StringEntry(ab(toString(value(Z)), toBase58String(value(aa))), bu(eK, eL, ef, ej, height, lastBlock.timestamp)), IntegerEntry(U(), ej), IntegerEntry(V(height, lastBlock.timestamp), ej)]
607607 let eq = bA(D(eC, bf), D(eB, be))
608608 let er = G(eq, b)
609609 let es = {
610610 let eO = (toInt(fraction(eA, eF, em)) * 2)
611611 fraction((eI - eO), b, eO)
612612 }
613613 $Tuple5(eI, cY, dQ, es, ez)
614614 }
615615 else throw("Strict value is not equal to itself.")
616616 }
617617
618618
619619 func eP () = {
620620 let dN = getString(S())
621621 if ($isInstanceOf(dN, "String"))
622622 then {
623623 let eQ = dN
624624 fromBase58String(eQ)
625625 }
626626 else if ($isInstanceOf(dN, "Unit"))
627627 then unit
628628 else throw("Match error")
629629 }
630630
631631
632632 func eR () = {
633633 let dN = getString(T())
634634 if ($isInstanceOf(dN, "String"))
635635 then {
636636 let eQ = dN
637637 fromBase58String(eQ)
638638 }
639639 else if ($isInstanceOf(dN, "Unit"))
640640 then unit
641641 else throw("Match error")
642642 }
643643
644644
645645 func eS (dC) = {
646646 let dN = eP()
647647 if ($isInstanceOf(dN, "ByteVector"))
648648 then {
649649 let eT = dN
650650 (dC.callerPublicKey == eT)
651651 }
652652 else if ($isInstanceOf(dN, "Unit"))
653653 then (dC.caller == this)
654654 else throw("Match error")
655655 }
656656
657657
658658 func eU (dC) = {
659659 let eV = throw("Permission denied")
660660 let dN = eP()
661661 if ($isInstanceOf(dN, "ByteVector"))
662662 then {
663663 let eT = dN
664664 if ((dC.callerPublicKey == eT))
665665 then true
666666 else eV
667667 }
668668 else if ($isInstanceOf(dN, "Unit"))
669669 then if ((dC.caller == this))
670670 then true
671671 else eV
672672 else throw("Match error")
673673 }
674674
675675
676676 @Callable(dC)
677677 func setManager (eW) = {
678678 let eX = eU(dC)
679679 if ((eX == eX))
680680 then {
681681 let eY = fromBase58String(eW)
682682 if ((eY == eY))
683683 then [StringEntry(T(), eW)]
684684 else throw("Strict value is not equal to itself.")
685685 }
686686 else throw("Strict value is not equal to itself.")
687687 }
688688
689689
690690
691691 @Callable(dC)
692692 func confirmManager () = {
693693 let eZ = eR()
694694 let fa = if (isDefined(eZ))
695695 then true
696696 else throw("No pending manager")
697697 if ((fa == fa))
698698 then {
699699 let fb = if ((dC.callerPublicKey == value(eZ)))
700700 then true
701701 else throw("You are not pending manager")
702702 if ((fb == fb))
703703 then [StringEntry(S(), toBase58String(value(eZ))), DeleteEntry(T())]
704704 else throw("Strict value is not equal to itself.")
705705 }
706706 else throw("Strict value is not equal to itself.")
707707 }
708708
709709
710710
711711 @Callable(dC)
712712 func put (ct,fc) = if ((0 > ct))
713713 then throw("Invalid slippageTolerance passed")
714714 else {
715715 let dI = dF(dC, ct, true)
716716 let cV = dI._2
717717 let ca = dI._7
718718 let cr = dI._9
719719 let cW = dI._10
720720 let cX = dI._11
721721 let fd = dI._12
722722 let fe = dI._13
723723 let dG = toBigInt(value(dC.payments[0]).amount)
724724 let dH = toBigInt(value(dC.payments[1]).amount)
725725 let dk = dd(dG, dH, toBigInt(0))
726726 if ((dk == dk))
727727 then {
728728 let dL = invoke(aL, "emit", [cV], nil)
729729 if ((dL == dL))
730730 then {
731731 let dM = {
732732 let dN = dL
733733 if ($isInstanceOf(dN, "Address"))
734734 then {
735735 let dO = dN
736736 invoke(dO, "emit", [cV], nil)
737737 }
738738 else unit
739739 }
740740 if ((dM == dM))
741741 then {
742742 let ff = if ((cW > 0))
743743 then invoke(bi, "put", nil, [AttachedPayment(fd, cW)])
744744 else nil
745745 if ((ff == ff))
746746 then {
747747 let fg = if ((cX > 0))
748748 then invoke(bi, "put", nil, [AttachedPayment(fe, cX)])
749749 else nil
750750 if ((fg == fg))
751751 then {
752752 let fh = if (fc)
753753 then {
754754 let fi = invoke(bh, "stake", nil, [AttachedPayment(ca, cV)])
755755 if ((fi == fi))
756756 then nil
757757 else throw("Strict value is not equal to itself.")
758758 }
759759 else [ScriptTransfer(dC.caller, cV, ca)]
760760 let fj = dl(0, 0, 0)
761761 if ((fj == fj))
762762 then {
763763 let dc = fj._2
764764 let fk = fj._1
765765 let fl = dp(dk, dc)
766766 if ((fl == fl))
767767 then ((cr ++ fh) ++ fk)
768768 else throw("Strict value is not equal to itself.")
769769 }
770770 else throw("Strict value is not equal to itself.")
771771 }
772772 else throw("Strict value is not equal to itself.")
773773 }
774774 else throw("Strict value is not equal to itself.")
775775 }
776776 else throw("Strict value is not equal to itself.")
777777 }
778778 else throw("Strict value is not equal to itself.")
779779 }
780780 else throw("Strict value is not equal to itself.")
781781 }
782782
783783
784784
785785 @Callable(dC)
786786 func putForFree (fm) = if ((0 > fm))
787787 then throw("Invalid value passed")
788788 else {
789789 let dI = dF(dC, fm, false)
790790 let cr = dI._9
791791 let dG = toBigInt(value(dC.payments[0]).amount)
792792 let dH = toBigInt(value(dC.payments[1]).amount)
793793 let dk = dd(dG, dH, toBigInt(0))
794794 if ((dk == dk))
795795 then {
796796 let fn = dl(0, 0, 0)
797797 let fk = fn._1
798798 let dc = fn._2
799799 let fl = dp(dk, dc)
800800 if ((fl == fl))
801801 then (cr ++ fk)
802802 else throw("Strict value is not equal to itself.")
803803 }
804804 else throw("Strict value is not equal to itself.")
805805 }
806806
807807
808808
809809 @Callable(dC)
810810 func putOneTkn (fo,fp) = {
811811 let fq = {
812812 let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
813813 if ($isInstanceOf(fr, "Boolean"))
814814 then fr
815815 else throw(($getType(fr) + " couldn't be cast to Boolean"))
816816 }
817817 let fs = if (if (if (aN())
818818 then true
819819 else (ba == l))
820820 then true
821821 else (ba == n))
822822 then true
823823 else fq
824824 let ey = [if (if (!(fs))
825825 then true
826826 else eS(dC))
827827 then true
828828 else aI("put operation is blocked by admin"), if ((size(dC.payments) == 1))
829829 then true
830830 else aI("exactly 1 payment are expected")]
831831 if ((ey == ey))
832832 then {
833833 let ft = dC.payments[0]
834834 let dT = ft.assetId
835835 let dS = ft.amount
836836 let dk = if ((dT == bc))
837837 then dd(toBigInt(dS), toBigInt(0), toBigInt(0))
838838 else if ((dT == bd))
839839 then dd(toBigInt(0), toBigInt(dS), toBigInt(0))
840840 else aI("payment asset is not supported")
841841 let Z = dC.caller
842842 let aa = dC.transactionId
843843 let fu = dR(dS, dT, Z, aa)
844844 if ((fu == fu))
845845 then {
846846 let dX = fu._5
847847 let fv = fu._4
848848 let dQ = fu._3
849849 let cY = fu._2
850850 let fw = fu._1
851851 let fx = if (if ((fo > 0))
852852 then (fo > fw)
853853 else false)
854854 then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
855855 else fw
856856 let dL = dJ(fx)
857857 if ((dL == dL))
858858 then {
859859 let fh = if (fp)
860860 then {
861861 let fy = invoke(bh, "stake", nil, [AttachedPayment(bb, fx)])
862862 if ((fy == fy))
863863 then nil
864864 else throw("Strict value is not equal to itself.")
865865 }
866866 else [ScriptTransfer(dC.caller, fx, bb)]
867867 let fz = if ((dQ > 0))
868868 then [ScriptTransfer(aM, dQ, dT)]
869869 else nil
870870 let fA = if ((this == aM))
871871 then $Tuple2(0, 0)
872872 else if (dX)
873873 then $Tuple2(-(dQ), 0)
874874 else $Tuple2(0, -(dQ))
875875 let dm = fA._1
876876 let dn = fA._2
877877 let fB = dl(dm, dn, 0)
878878 let fk = fB._1
879879 let dc = fB._2
880880 let dw = value(getString(ah))
881881 let fl = dp(dk, dc)
882882 if ((fl == fl))
883883 then $Tuple2((((cY ++ fh) ++ fz) ++ fk), fx)
884884 else throw("Strict value is not equal to itself.")
885885 }
886886 else throw("Strict value is not equal to itself.")
887887 }
888888 else throw("Strict value is not equal to itself.")
889889 }
890890 else throw("Strict value is not equal to itself.")
891891 }
892892
893893
894894
895895 @Callable(dC)
896896 func putOneTknREADONLY (dT,dS) = {
897897 let fC = dR(dS, aS(dT), unit, unit)
898898 let fw = fC._1
899899 let cY = fC._2
900900 let dQ = fC._3
901901 let fv = fC._4
902902 let dX = fC._5
903903 $Tuple2(nil, $Tuple3(fw, dQ, fv))
904904 }
905905
906906
907907
908908 @Callable(dC)
909909 func getOneTkn (fD,fo) = {
910910 let fq = {
911911 let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
912912 if ($isInstanceOf(fr, "Boolean"))
913913 then fr
914914 else throw(($getType(fr) + " couldn't be cast to Boolean"))
915915 }
916916 let fE = if (if (aN())
917917 then true
918918 else (ba == n))
919919 then true
920920 else fq
921921 let ey = [if (if (!(fE))
922922 then true
923923 else eS(dC))
924924 then true
925925 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 1))
926926 then true
927927 else aI("exactly 1 payment are expected")]
928928 if ((ey == ey))
929929 then {
930930 let ex = aS(fD)
931931 let ft = dC.payments[0]
932932 let dT = ft.assetId
933933 let ef = ft.amount
934934 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(ef))
935935 let Z = dC.caller
936936 let aa = dC.transactionId
937937 let fF = ew(ex, ef, dT, Z, aa)
938938 if ((fF == fF))
939939 then {
940940 let ez = fF._5
941941 let fv = fF._4
942942 let dQ = fF._3
943943 let cY = fF._2
944944 let fG = fF._1
945945 let dK = if (if ((fo > 0))
946946 then (fo > fG)
947947 else false)
948948 then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
949949 else fG
950950 let fH = invoke(aL, "burn", [ef], [AttachedPayment(dT, ef)])
951951 if ((fH == fH))
952952 then {
953953 let fI = [ScriptTransfer(Z, dK, ex)]
954954 let fz = if ((dQ > 0))
955955 then [ScriptTransfer(aM, dQ, ex)]
956956 else nil
957957 let fJ = {
958958 let fK = if ((this == aM))
959959 then 0
960960 else dQ
961961 if (ez)
962962 then $Tuple2(-((dK + fK)), 0)
963963 else $Tuple2(0, -((dK + fK)))
964964 }
965965 let dm = fJ._1
966966 let dn = fJ._2
967967 let fL = dl(dm, dn, 0)
968968 let fk = fL._1
969969 let dc = fL._2
970970 let fl = dp(dk, dc)
971971 if ((fl == fl))
972972 then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
973973 else throw("Strict value is not equal to itself.")
974974 }
975975 else throw("Strict value is not equal to itself.")
976976 }
977977 else throw("Strict value is not equal to itself.")
978978 }
979979 else throw("Strict value is not equal to itself.")
980980 }
981981
982982
983983
984984 @Callable(dC)
985985 func getOneTknREADONLY (ex,ef) = {
986986 let fM = ew(aS(ex), ef, bb, unit, unit)
987987 let fG = fM._1
988988 let cY = fM._2
989989 let dQ = fM._3
990990 let fv = fM._4
991991 let ez = fM._5
992992 $Tuple2(nil, $Tuple3(fG, dQ, fv))
993993 }
994994
995995
996996
997997 @Callable(dC)
998998 func unstakeAndGetOneTkn (fN,fD,fo) = {
999999 let fq = {
10001000 let fr = invoke(aL, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
10011001 if ($isInstanceOf(fr, "Boolean"))
10021002 then fr
10031003 else throw(($getType(fr) + " couldn't be cast to Boolean"))
10041004 }
10051005 let fE = if (if (aN())
10061006 then true
10071007 else (ba == n))
10081008 then true
10091009 else fq
10101010 let ey = [if (if (!(fE))
10111011 then true
10121012 else eS(dC))
10131013 then true
10141014 else aI("get operation is blocked by admin"), if ((size(dC.payments) == 0))
10151015 then true
10161016 else aI("no payments are expected")]
10171017 if ((ey == ey))
10181018 then {
10191019 let ex = aS(fD)
10201020 let Z = dC.caller
10211021 let aa = dC.transactionId
10221022 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
10231023 let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
10241024 if ((fO == fO))
10251025 then {
10261026 let fP = ew(ex, fN, bb, Z, aa)
10271027 if ((fP == fP))
10281028 then {
10291029 let ez = fP._5
10301030 let fv = fP._4
10311031 let dQ = fP._3
10321032 let cY = fP._2
10331033 let fG = fP._1
10341034 let dK = if (if ((fo > 0))
10351035 then (fo > fG)
10361036 else false)
10371037 then aI(makeString(["amount to receive is less than ", toString(fo)], ""))
10381038 else fG
10391039 let fH = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
10401040 if ((fH == fH))
10411041 then {
10421042 let fI = [ScriptTransfer(dC.caller, dK, ex)]
10431043 let fz = if ((dQ > 0))
10441044 then [ScriptTransfer(aM, dQ, ex)]
10451045 else nil
10461046 let fQ = {
10471047 let fK = if ((this == aM))
10481048 then 0
10491049 else dQ
10501050 if (ez)
10511051 then $Tuple2(-((dK + fK)), 0)
10521052 else $Tuple2(0, -((dK + fK)))
10531053 }
10541054 let dm = fQ._1
10551055 let dn = fQ._2
10561056 let fR = dl(dm, dn, 0)
10571057 let fk = fR._1
10581058 let dc = fR._2
10591059 let fl = dp(dk, dc)
10601060 if ((fl == fl))
10611061 then $Tuple2((((cY ++ fI) ++ fz) ++ fk), dK)
10621062 else throw("Strict value is not equal to itself.")
10631063 }
10641064 else throw("Strict value is not equal to itself.")
10651065 }
10661066 else throw("Strict value is not equal to itself.")
10671067 }
10681068 else throw("Strict value is not equal to itself.")
10691069 }
10701070 else throw("Strict value is not equal to itself.")
10711071 }
10721072
10731073
10741074
10751075 @Callable(dC)
10761076 func get () = {
10771077 let cJ = dB(dC)
10781078 let fS = cJ._1
10791079 let cq = cJ._2
10801080 let dE = cJ._3
10811081 let bY = cJ._4
10821082 let cr = cJ._5
10831083 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
10841084 let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
10851085 if ((fT == fT))
10861086 then {
10871087 let fU = dl(-(fS), -(cq), 0)
10881088 let fk = fU._1
10891089 let dc = fU._2
10901090 let fl = dp(dk, dc)
10911091 if ((fl == fl))
10921092 then (cr ++ fk)
10931093 else throw("Strict value is not equal to itself.")
10941094 }
10951095 else throw("Strict value is not equal to itself.")
10961096 }
10971097
10981098
10991099
11001100 @Callable(dC)
11011101 func getNoLess (fV,fW) = {
11021102 let cJ = dB(dC)
11031103 let cp = cJ._1
11041104 let cq = cJ._2
11051105 let dE = cJ._3
11061106 let bY = cJ._4
11071107 let cr = cJ._5
11081108 if ((fV > cp))
11091109 then throw(((("noLessThenAmtAsset failed: " + toString(cp)) + " < ") + toString(fV)))
11101110 else if ((fW > cq))
11111111 then throw(((("noLessThenPriceAsset failed: " + toString(cq)) + " < ") + toString(fW)))
11121112 else {
11131113 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(dE))
11141114 let fT = invoke(aL, "burn", [dE], [AttachedPayment(bY, dE)])
11151115 if ((fT == fT))
11161116 then {
11171117 let fX = dl(-(cp), -(cq), 0)
11181118 let fk = fX._1
11191119 let dc = fX._2
11201120 let fl = dp(dk, dc)
11211121 if ((fl == fl))
11221122 then (cr ++ fk)
11231123 else throw("Strict value is not equal to itself.")
11241124 }
11251125 else throw("Strict value is not equal to itself.")
11261126 }
11271127 }
11281128
11291129
11301130
11311131 @Callable(dC)
11321132 func unstakeAndGet (dK) = {
11331133 let fY = if ((size(dC.payments) != 0))
11341134 then throw("No payments are expected")
11351135 else true
11361136 if ((fY == fY))
11371137 then {
11381138 let bN = aP()
11391139 let ca = fromBase58String(bN[q])
11401140 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
11411141 let fO = invoke(bh, "unstake", [toBase58String(ca), dK], nil)
11421142 if ((fO == fO))
11431143 then {
11441144 let cJ = bW(toBase58String(dC.transactionId), toBase58String(ca), dK, dC.caller)
11451145 let cp = cJ._1
11461146 let cq = cJ._2
11471147 let cd = parseIntValue(cJ._9)
11481148 let cr = cJ._10
11491149 let fZ = if (if (aN())
11501150 then true
11511151 else (cd == n))
11521152 then throw(("Get operation is blocked by admin. Status = " + toString(cd)))
11531153 else true
11541154 if ((fZ == fZ))
11551155 then {
11561156 let fT = invoke(aL, "burn", [dK], [AttachedPayment(ca, dK)])
11571157 if ((fT == fT))
11581158 then {
11591159 let ga = dl(-(cp), -(cq), 0)
11601160 let fk = ga._1
11611161 let dc = ga._2
11621162 let fl = dp(dk, dc)
11631163 if ((fl == fl))
11641164 then (cr ++ fk)
11651165 else throw("Strict value is not equal to itself.")
11661166 }
11671167 else throw("Strict value is not equal to itself.")
11681168 }
11691169 else throw("Strict value is not equal to itself.")
11701170 }
11711171 else throw("Strict value is not equal to itself.")
11721172 }
11731173 else throw("Strict value is not equal to itself.")
11741174 }
11751175
11761176
11771177
11781178 @Callable(dC)
11791179 func unstakeAndGetNoLess (fN,gb,fW) = {
11801180 let fE = if (aN())
11811181 then true
11821182 else (ba == n)
11831183 let ey = [if (!(fE))
11841184 then true
11851185 else throw("get operation is blocked by admin"), if ((size(dC.payments) == 0))
11861186 then true
11871187 else throw("no payments are expected")]
11881188 if ((ey == ey))
11891189 then {
11901190 let dk = dd(toBigInt(0), toBigInt(0), toBigInt(0))
11911191 let fO = invoke(bh, "unstake", [toBase58String(bb), fN], nil)
11921192 if ((fO == fO))
11931193 then {
11941194 let cJ = bW(toBase58String(dC.transactionId), toBase58String(bb), fN, dC.caller)
11951195 let cp = cJ._1
11961196 let cq = cJ._2
11971197 let cr = cJ._10
11981198 let gc = [if ((cp >= gb))
11991199 then true
12001200 else throw(makeString(["amount asset amount to receive is less than ", toString(gb)], "")), if ((cq >= fW))
12011201 then true
12021202 else throw(makeString(["price asset amount to receive is less than ", toString(fW)], ""))]
12031203 if ((gc == gc))
12041204 then {
12051205 let fT = invoke(aL, "burn", [fN], [AttachedPayment(bb, fN)])
12061206 if ((fT == fT))
12071207 then {
12081208 let gd = dl(-(cp), -(cq), 0)
12091209 let fk = gd._1
12101210 let dc = gd._2
12111211 let fl = dp(dk, dc)
12121212 if ((fl == fl))
12131213 then (cr ++ fk)
12141214 else throw("Strict value is not equal to itself.")
12151215 }
12161216 else throw("Strict value is not equal to itself.")
12171217 }
12181218 else throw("Strict value is not equal to itself.")
12191219 }
12201220 else throw("Strict value is not equal to itself.")
12211221 }
12221222 else throw("Strict value is not equal to itself.")
12231223 }
12241224
12251225
12261226
12271227 @Callable(dC)
12281228 func activate (ge,gf) = if ((toString(dC.caller) != toString(aL)))
12291229 then throw("permissions denied")
12301230 else $Tuple2([StringEntry(ac(), ge), StringEntry(ad(), gf)], "success")
12311231
12321232
12331233
12341234 @Callable(dC)
12351235 func refreshKLp () = {
12361236 let gg = valueOrElse(getInteger(ai), 0)
12371237 let gh = if (((height - gg) >= al))
12381238 then unit
12391239 else aI(makeString([toString(al), " blocks have not passed since the previous call"], ""))
12401240 if ((gh == gh))
12411241 then {
12421242 let dw = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, ah), "0")), aK("invalid kLp"))
12431243 let gi = dl(0, 0, 0)
12441244 let gj = gi._1
12451245 let dc = gi._2
12461246 let do = if ((dw != dc))
12471247 then gj
12481248 else aI("nothing to refresh")
12491249 $Tuple2(do, toString(dc))
12501250 }
12511251 else throw("Strict value is not equal to itself.")
12521252 }
12531253
12541254
12551255
12561256 @Callable(dC)
12571257 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aP())
12581258
12591259
12601260
12611261 @Callable(dC)
12621262 func getAccBalanceWrapperREADONLY (bz) = $Tuple2(nil, by(bz))
12631263
12641264
12651265
12661266 @Callable(dC)
12671267 func calcPricesWrapperREADONLY (bH,bI,bM) = {
12681268 let bV = bL(bH, bI, bM)
12691269 $Tuple2(nil, [toString(bV[0]), toString(bV[1]), toString(bV[2])])
12701270 }
12711271
12721272
12731273
12741274 @Callable(dC)
12751275 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
12761276
12771277
12781278
12791279 @Callable(dC)
12801280 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
12811281
12821282
12831283
12841284 @Callable(dC)
12851285 func calcPriceBigIntWrapperREADONLY (bB,bC) = $Tuple2(nil, toString(bA(parseBigIntValue(bB), parseBigIntValue(bC))))
12861286
12871287
12881288
12891289 @Callable(dC)
12901290 func estimatePutOperationWrapperREADONLY (bX,ct,cu,cv,cw,cx,Z,cy,cz) = $Tuple2(nil, cs(bX, ct, cu, cv, cw, cx, Z, cy, cz))
12911291
12921292
12931293
12941294 @Callable(dC)
12951295 func estimateGetOperationWrapperREADONLY (bX,bY,bZ,Z) = {
12961296 let cJ = bW(bX, bY, bZ, addressFromStringValue(Z))
12971297 $Tuple2(nil, $Tuple10(cJ._1, cJ._2, cJ._3, cJ._4, cJ._5, cJ._6, cJ._7, toString(cJ._8), cJ._9, cJ._10))
12981298 }
12991299
13001300
13011301
13021302 @Callable(dC)
13031303 func statsREADONLY () = {
13041304 let bN = aP()
13051305 let ca = fromBase58String(bN[q])
13061306 let gk = bN[r]
13071307 let gl = bN[s]
13081308 let cC = bN[v]
13091309 let cD = bN[w]
13101310 let bO = parseIntValue(bN[t])
13111311 let bP = parseIntValue(bN[u])
13121312 let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13131313 let gn = by(gk)
13141314 let go = by(gl)
13151315 let gp = if ((gm == 0))
13161316 then [e, e, e]
13171317 else bL(gn, go, gm)
13181318 let ck = 0
13191319 let gq = G(gp[1], b)
13201320 let gr = G(gp[2], b)
13211321 let gs = value(getInteger(aL, aw(toString(this))))
13221322 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(gn), toString(go), toString(gm), toString(ck), toString(gq), toString(gr), toString(gs)], j))
13231323 }
13241324
13251325
13261326
13271327 @Callable(dC)
13281328 func evaluatePutByAmountAssetREADONLY (cu) = {
13291329 let bN = aP()
13301330 let ca = fromBase58String(bN[q])
13311331 let cA = bN[r]
13321332 let cb = fromBase58String(cA)
13331333 let cB = bN[s]
13341334 let cc = fromBase58String(cB)
13351335 let bO = parseIntValue(bN[t])
13361336 let bP = parseIntValue(bN[u])
13371337 let cd = bN[p]
13381338 let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13391339 let gn = by(cA)
13401340 let go = by(cB)
13411341 let bJ = D(gn, bO)
13421342 let bK = D(go, bP)
13431343 let cj = if ((gm == 0))
13441344 then e
13451345 else bA(bK, bJ)
13461346 let cG = D(cu, bO)
13471347 let cH = fraction(cG, cj, d)
13481348 let cw = G(cH, bP)
13491349 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13501350 let cR = dI._1
13511351 let gt = dI._3
13521352 let cf = dI._4
13531353 let ch = dI._5
13541354 let ce = dI._6
13551355 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13561356 }
13571357
13581358
13591359
13601360 @Callable(dC)
13611361 func evaluatePutByPriceAssetREADONLY (cw) = {
13621362 let bN = aP()
13631363 let ca = fromBase58String(bN[q])
13641364 let cA = bN[r]
13651365 let cb = fromBase58String(cA)
13661366 let cB = bN[s]
13671367 let cc = fromBase58String(cB)
13681368 let bO = parseIntValue(bN[t])
13691369 let bP = parseIntValue(bN[u])
13701370 let cd = bN[p]
13711371 let gm = valueOrErrorMessage(assetInfo(ca), (("Asset " + toBase58String(ca)) + " doesn't exist")).quantity
13721372 let gu = by(cA)
13731373 let gv = by(cB)
13741374 let gw = D(gu, bO)
13751375 let gx = D(gv, bP)
13761376 let cj = if ((gm == 0))
13771377 then e
13781378 else bA(gx, gw)
13791379 let cH = D(cw, bP)
13801380 let cG = fraction(cH, d, cj)
13811381 let cu = G(cG, bO)
13821382 let dI = cs("", 500000, cu, cb, cw, cc, "", true, false)
13831383 let cR = dI._1
13841384 let gt = dI._3
13851385 let cf = dI._4
13861386 let ch = dI._5
13871387 let ce = dI._6
13881388 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cR), toString(G(cj, b)), toString(cf), toString(ch), toString(ce), cd, toString(cu), toString(cw)], j))
13891389 }
13901390
13911391
13921392
13931393 @Callable(dC)
13941394 func evaluateGetREADONLY (gy,gz) = {
13951395 let cJ = bW("", gy, gz, this)
13961396 let cp = cJ._1
13971397 let cq = cJ._2
13981398 let cf = cJ._5
13991399 let ch = cJ._6
14001400 let ce = cJ._7
14011401 let ck = cJ._8
14021402 let cd = parseIntValue(cJ._9)
14031403 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cp), toString(cq), toString(cf), toString(ch), toString(ce), toString(ck), toString(cd)], j))
14041404 }
14051405
14061406
14071407 @Verifier(gA)
14081408 func gB () = {
14091409 let gC = {
14101410 let dN = eP()
14111411 if ($isInstanceOf(dN, "ByteVector"))
14121412 then {
14131413 let eT = dN
14141414 eT
14151415 }
14161416 else if ($isInstanceOf(dN, "Unit"))
14171417 then gA.senderPublicKey
14181418 else throw("Match error")
14191419 }
14201420 let dN = gA
14211421 if ($isInstanceOf(dN, "Order"))
14221422 then {
14231423 let ds = dN
14241424 let gD = aO()
14251425 let aB = dr(ds)
14261426 let aC = sigVerify(ds.bodyBytes, ds.proofs[0], ds.senderPublicKey)
14271427 let aD = sigVerify(ds.bodyBytes, ds.proofs[1], gD)
14281428 if (if (if (aB)
14291429 then aC
14301430 else false)
14311431 then aD
14321432 else false)
14331433 then true
14341434 else aA(aB, aC, aD)
14351435 }
14361436 else if ($isInstanceOf(dN, "SetScriptTransaction"))
14371437 then {
14381438 let eQ = dN
14391439 let gE = blake2b256(value(eQ.script))
14401440 let gF = fromBase64String(value(getString(aL, ay())))
14411441 let gG = scriptHash(this)
14421442 if (if ((gF == gE))
14431443 then (gG != gE)
14441444 else false)
14451445 then true
14461446 else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14471447 }
14481448 else sigVerify(gA.bodyBytes, gA.proofs[0], gC)
14491449 }
14501450

github/deemru/w8io/026f985 
144.56 ms