tx · EeY7a1Y8vXonRftSoyFrHUcA6FcEQHh9wQ2J9dsnk1SN

3Mt23yV6tMfBzgRzjyLoe7Z2PJaRmWrHT7Z:  -0.04300000 Waves

2023.05.11 17:32 [2573341] smart account 3Mt23yV6tMfBzgRzjyLoe7Z2PJaRmWrHT7Z > SELF 0.00000000 Waves

{ "type": 13, "id": "EeY7a1Y8vXonRftSoyFrHUcA6FcEQHh9wQ2J9dsnk1SN", "fee": 4300000, "feeAssetId": null, "timestamp": 1683815569068, "version": 2, "chainId": 84, "sender": "3Mt23yV6tMfBzgRzjyLoe7Z2PJaRmWrHT7Z", "senderPublicKey": "AnnsVaPVEQvuzRdAgsJBfKyAAQWRithw8DTNr1w3sLwM", "proofs": [ "3rGrEFKj7v67XuodJAB8YhoMF4zWWTn98zyDu8mmVjDWavC5hcTq6s3LVuQT3TLyPSVGeXJaFMxLZrJAHARVWFt2" ], "script": "base64:BgL3NwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiFmtleVNraXBPcmRlclZhbGlkYXRpb24iC3Bvb2xBZGRyZXNzIg90aHJvd09yZGVyRXJyb3IiCm9yZGVyVmFsaWQiDm9yZGVyVmFsaWRJbmZvIgtzZW5kZXJWYWxpZCIMbWF0Y2hlclZhbGlkIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIgZmbXRFcnIiD2ZhY3RvcnlDb250cmFjdCITZmVlQ29sbGVjdG9yQWRkcmVzcyIFaW5GZWUiAUAiBm91dEZlZSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA5MDU4OTIyNCIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEGdldEZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIh1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlciIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiEnNsaXBhZ2VBbXRBc3NldEFtdCIUc2xpcGFnZVByaWNlQXNzZXRBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSINYmFsYW5jZU9uUG9vbCIMdG90YWxCYWxhbmNlIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiB2dldFJhdGUiBXByb3h5IgNpbnYiByRtYXRjaDAiAXIiB2RlcG9zaXQiBmFtb3VudCIOc3Rha2luZ0Fzc2V0SWQiGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZSIaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UiBWFzc2V0Ig1kZXBvc2l0SW52b2tlIhRyZWNlaXZlZFN0YWtpbmdBc3NldCIUbmV3QWRkaXRpb25hbEJhbGFuY2UiFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UiCHdpdGhkcmF3Igxwcm94eVJhdGVNdWwiDXByb2ZpdEFkZHJlc3MiEGN1cnJlbnRQcm94eVJhdGUiB29sZFJhdGUiDHN0YWtpbmdBc3NldCIUb2xkU2VuZFN0YWtpbmdBbW91bnQiFnNlbmRTdGFraW5nQXNzZXRBbW91bnQiDHByb2ZpdEFtb3VudCIOd2l0aGRyYXdJbnZva2UiDnJlY2VpdmVkQXNzZXRzIhNnZXRMZWFzZVByb3h5Q29uZmlnIgFhIhFyZWJhbGFuY2VJbnRlcm5hbCILdGFyZ2V0UmF0aW8iCm1pbkJhbGFuY2UiFGxlYXNhYmxlVG90YWxCYWxhbmNlIhd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZSIEZGlmZiIPc2VuZEFzc2V0QW1vdW50Ig5nZXRBc3NldEFtb3VudCIOcmViYWxhbmNlQXNzZXQiDSR0MDE1NDYwMTU1OTYiCmlzTGVhc2FibGUiC2xlYXNlZFJhdGlvIgxwcm94eUFkZHJlc3MiDHByb3h5QXNzZXRJZCIUc3Rha2luZ1Byb2ZpdEFkZHJlc3MiGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQiCWdldEFtb3VudCINJHQwMTU5OTUxNjEzMSIXbmV3VG90YWxMZWFzYWJsZUJhbGFuY2UiDndpdGhkcmF3QW1vdW50Ihd3aXRoZHJhd0FuZFJlYmFsYW5jZUFsbCIUYW1vdW50QXNzZXRPdXRBbW91bnQiE3ByaWNlQXNzZXRPdXRBbW91bnQiEkFtQW10V2l0aGRyYXdTdGF0ZSISUHJBbXRXaXRoZHJhd1N0YXRlIhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIHY2FsY0tMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIhBhbW91bnRCYWxhbmNlWDE4Ig9wcmljZUJhbGFuY2VYMTgiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiE3NraXBPcmRlclZhbGlkYXRpb24iEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjg1MjAyODczMiIDa0xwIg0kdDAyOTE3MjI5MjcyIg11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDMyMzg1MzI2NzgiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMzI2ODIzMjgzMSIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDMyOTYzMzMwMjciDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDM0NzA4MzQ4NzUiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDM2OTUzMzcwMDkiC3RvdGFsQW1vdW50Ig0kdDAzNzAxMzM3MjM5IgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzkxMjUzOTQzMCIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iDnJlYmFsYW5jZVN0YXRlIg13aXRoZHJhd1N0YXRlIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDQ0NzY0NDkzOCIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NTU1MDQ1NjE1IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ2ODAzNDY5NTUiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDc1NDE0NzczOCINJHQwNDc3NDE0Nzg0OSINJHQwNDgyMDQ0ODM2MSINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDkyNDY0OTM5OSIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA1MDA2MzUwMzEwIhBmZWVBbW91bnRGb3JDYWxjIg0kdDA1MDMxMzUwNDIxIg0kdDA1MDY5OTUwODU1Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1MTc2MDUxOTExIg0kdDA1MjU3MDUyODE3Ig0kdDA1MjgyMDUyOTI4IhRidXJuTFBBc3NldE9uRmFjdG9yeSINJHQwNTQwMjM1NDEwNCISbm9MZXNzVGhlbkFtdEFzc2V0IhRub0xlc3NUaGVuUHJpY2VBc3NldCINJHQwNTUxOTk1NTI4MCINY2hlY2tQYXltZW50cyIPY2hlY2tQb29sU3RhdHVzIg0kdDA1NjU1MjU2NjMzIhVub0xlc3NUaGVuQW1vdW50QXNzZXQiDGNoZWNrQW1vdW50cyINJHQwNTgwNzQ1ODE1NSILYW10QXNzZXRTdHIiDXByaWNlQXNzZXRTdHIiGGxhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCIdY2hlY2tMYXN0UmVmcmVzaGVkQmxvY2tIZWlnaHQiDSR0MDU5MzU5NTk0MjMiEGtMcFVwZGF0ZUFjdGlvbnMiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCINcG9vbExQQmFsYW5jZSISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSIKcHJpY2VzTGlzdCIPbHBBbXRBc3NldFNoYXJlIhFscFByaWNlQXNzZXRTaGFyZSIKcG9vbFdlaWdodCIMY3VyUHJpY2VDYWxjIgxhbUJhbGFuY2VSYXciDHByQmFsYW5jZVJhdyIPYW1CYWxhbmNlUmF3WDE4Ig9wckJhbGFuY2VSYXdYMTgiEHBheW1lbnRMcEFzc2V0SWQiDHBheW1lbnRMcEFtdCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5IgptYXRjaGVyUHViIg0kdDA2ODA4NTY4MjAyIgduZXdIYXNoIgthbGxvd2VkSGFzaCILY3VycmVudEhhc2iBAQABYQAIAAFiAIDC1y8AAWMJALYCAQCAwtcvAAFkCQC2AgEAgICQu7rWrfANAAFlCQC2AgEAAAABZgkAtgIBAAAAAWcJALYCAQABAAFoCQC2AgEAAgABaQIFV0FWRVMAAWoCAl9fAAFrAAEAAWwAAgABbQADAAFuAAQAAW8AAQABcAACAAFxAAMAAXIABAABcwAFAAF0AAYAAXUABwABdgAIAAF3AAkAAXgACgABeQABAAF6AAIAAUEAAwABQgABAAFDAAcBAUQCAUUBRgkAvAIDCQC2AgEFAUUFAWQJALYCAQUBRgEBRwIBRQFGCQC8AgMFAUUFAWQFAUYBAUgCAUkBSgkAoAMBCQC8AgMFAUkJALYCAQUBSgUBZAEBSwMBSQFKAUwJAKADAQkAvQIEBQFJCQC2AgEFAUoFAWQFAUwBAU0DAU4BTwFQCQBrAwUBTgUBTwUBUAEBUQEBSQMJAGYCAAAFAUkJAQEtAQUBSQUBSQEBUgEBSQMJAL8CAgUBZQUBSQkAvgIBBQFJBQFJAQFTAAIQJXNfX3N3YXBDb250cmFjdAEBVAACEyVzX19mYWN0b3J5Q29udHJhY3QBAVUAAhQlc19fbWFuYWdlclB1YmxpY0tleQEBVgACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEBVwACESVzJXNfX3ByaWNlX19sYXN0AQFYAgFZAVoJALkJAgkAzAgCAhglcyVzJWQlZF9fcHJpY2VfX2hpc3RvcnkJAMwIAgkApAMBBQFZCQDMCAIJAKQDAQUBWgUDbmlsBQFqAQJhYQICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fUF9fBQJhYgICX18FAmFjAQJhZAICYWICYWMJAKwCAgkArAICCQCsAgICCyVzJXMlc19fR19fBQJhYgICX18FAmFjAQJhZQACDyVzX19hbW91bnRBc3NldAECYWYAAg4lc19fcHJpY2VBc3NldAACYWcCByVzX19mZWUAAmFoCQBrAwAKBQFiAJBOAAJhaQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhZwUCYWgAAmFqCQC5CQIJAMwIAgICJXMJAMwIAgIDa0xwBQNuaWwFAWoAAmFrCQC5CQIJAMwIAgICJXMJAMwIAgISa0xwUmVmcmVzaGVkSGVpZ2h0BQNuaWwFAWoAAmFsCQC5CQIJAMwIAgICJXMJAMwIAgIPcmVmcmVzaEtMcERlbGF5BQNuaWwFAWoAAmFtAB4AAmFuCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmFsBQJhbQECYW8BAmFwCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg1zdGFrZWRCYWxhbmNlCQDMCAIFAmFwBQNuaWwFAWoBAmFxAQJhcAkAuQkCCQDMCAICBCVzJXMJAMwIAgIRc2hhcmVBc3NldEJhbGFuY2UJAMwIAgUCYXAFA25pbAUBagECYXIBAmFwCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhbwEFAmFwAAABAmFzAQJhcAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYXEBBQJhcAAAAQJhdAACESVzX19mYWN0b3J5Q29uZmlnAQJhdQACGCVzJXNfX21hdGNoZXJfX3B1YmxpY0tleQECYXYBAmF3CQCsAgIJAKwCAgIIJXMlcyVzX18FAmF3AiBfX21hcHBpbmdzX19wb29sQ29udHJhY3QyTHBBc3NldAECYXgCAmF5AmF6CQCsAgIJAKwCAgkArAICCQCsAgICCCVkJWQlc19fBQJheQICX18FAmF6AghfX2NvbmZpZwECYUEBAmFCCQCsAgICKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAmFCAQJhQwACDCVzX19zaHV0ZG93bgECYUQBAmFFCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUCYUUBAmFGAAIXJXNfX2FsbG93ZWRMcFNjcmlwdEhhc2gAAmFHAhclc19fZmVlQ29sbGVjdG9yQWRkcmVzcwECYUgBAmFJCQCsAgICGyVzJXNfX3NraXBPcmRlclZhbGlkYXRpb25fXwUCYUkBAmFKBAJhSwJhTAJhTQJhTgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUsCAiAoBQJhTAIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhTQIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYU4BAmFPAgJhUAJhUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFQBQJhUQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhUAkAzAgCAgEuCQDMCAIFAmFRCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFSAgJhUAJhUQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFQBQJhUQkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhUAkAzAgCAgEuCQDMCAIFAmFRCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFTAQJhVAkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhVAUDbmlsAgEgAQJhVQECYVQJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhVAUDbmlsAgEgAAJhVgkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFPAgUEdGhpcwkBAVQAAAJhVwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFPAgUCYVYFAmFHAAJhWAoAAmFZCQD8BwQFAmFWAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVkCA0ludAUCYVkJAAIBCQCsAgIJAAMBBQJhWQIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhWgoAAmFZCQD8BwQFAmFWAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFZAgNJbnQFAmFZCQACAQkArAICCQADAQUCYVkCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYmEACQELdmFsdWVPckVsc2UCCQCbCAIFAmFWCQECYUMABwECYmIACQDZBAEJAQJhTwIFAmFWCQECYXUAAQJiYwAEAmJkCQECYU8CBQR0aGlzCQECYWUABAJiZQkBAmFPAgUEdGhpcwkBAmFmAAQCYXoJAQJhUgIFAmFWCQECYUEBBQJiZQQCYXkJAQJhUgIFAmFWCQECYUEBBQJiZAkAtQkCCQECYU8CBQJhVgkBAmF4AgkApAMBBQJheQkApAMBBQJhegUBagECYmYBAmJnAwkAAAIFAmJnBQFpBQR1bml0CQDZBAEFAmJnAQJiaAECYmcDCQAAAgUCYmcFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYmcBAmJpAQJiagkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJqBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmoFAXAJANkEAQkAkQMCBQJiagUBcQkBAmJmAQkAkQMCBQJiagUBcgkBAmJmAQkAkQMCBQJiagUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJqBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmoFAXUAAmJrCQECYmkBCQECYmMAAAJibAUCYmsAAmJtCAUCYmwCXzEAAmJuCAUCYmwCXzIAAmJvCAUCYmwCXzMAAmJwCAUCYmwCXzQAAmJxCAUCYmwCXzUAAmJyCAUCYmwCXzYAAmJzCAUCYmwCXzcBAmJ0AAkAtQkCCQECYU8CBQJhVgkBAmF0AAUBagACYnUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJidAAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJ2CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnQABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJidwoCYngCYnkCYnoCYkECYkICYkMCYkQCYkUCYkYCYkcJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ4CQDMCAIJAKQDAQUCYnkJAMwIAgkApAMBBQJiegkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwkAzAgCCQCkAwEFAmJECQDMCAIJAKQDAQUCYkUJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHBQNuaWwFAWoBAmJIBgJiSQJiSgJiSwJiQQJiRAJiRQkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJJCQDMCAIJAKQDAQUCYkoJAMwIAgkApAMBBQJiSwkAzAgCCQCkAwEFAmJBCQDMCAIJAKQDAQUCYkQJAMwIAgkApAMBBQJiRQUDbmlsBQFqAQJiTAECYXAEAmJNAwkAAAIFAmFwAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJhcAQCYk4JAGUCCQBkAgUCYk0JAQJhcgEFAmFwCQECYXMBBQJhcAkAlgMBCQDMCAIAAAkAzAgCBQJiTgUDbmlsAQJiTwICYlACYlEJALwCAwUCYlAFAWQFAmJRAQJiUgMCYlACYlEBTAkAvQIEBQJiUAUBZAUCYlEFAUwBAmJTAQJiVAQCYlUJAPwHBAUCYlQCB2dldFJhdGUFA25pbAUDbmlsAwkAAAIFAmJVBQJiVQQCYlYFAmJVAwkAAQIFAmJWAgNJbnQEAmJXBQJiVgUCYlcJAQJhUwECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiWAQCYXACYlkCYloCYlQEAmNhCQECYXIBBQJhcAMJAAACBQJjYQUCY2EEAmNiCQECYXMBBQJiWgMJAAACBQJjYgUCY2IEAmNjCQECYmYBBQJhcAMJAGYCBQJiWQAABAJjZAkA/AcEBQJiVAIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYwUCYlkFA25pbAMJAAACBQJjZAUCY2QEAmJWBQJjZAMJAAECBQJiVgIDSW50BAJjZQUCYlYEAmNmCQBkAgUCY2EFAmJZBAJjZwkAZAIFAmNiBQJjZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJiWgUCY2cFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNoBgJhcAJiWQJiWgJiVAJjaQJjagQCY2EJAQJhcgEFAmFwAwkAAAIFAmNhBQJjYQQCY2IJAQJhcwEFAmJaAwkAAAIFAmNiBQJjYgQCY2sJAQJiUwEFAmJUAwkAAAIFAmNrBQJjawQCY2wJAGsDBQJjaQUCY2EFAmNiBAJjbQkBAmJmAQUCYloEAmNuCQBrAwUCY2kFAmJZBQJjbAQCY28JAGsDBQJjaQUCYlkFAmNrBAJjcAkAlgMBCQDMCAIAAAkAzAgCCQBlAgUCY24FAmNvBQNuaWwDCQBmAgUCY28AAAQCY3EJAPwHBAUCYlQCCHdpdGhkcmF3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNtBQJjbwUDbmlsAwkAAAIFAmNxBQJjcQQCYlYFAmNxAwkAAQIFAmJWAgNJbnQEAmNyBQJiVgQCY2YJAGUCBQJjYQUCY3IEAmNnCQBlAgkAZQIFAmNiBQJjbwUCY3AJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjZgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCYloFAmNnCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNqBQJjcAkBAmJmAQUCYloFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNzAQJhcAQCYlYJAPwHBAUCYVYCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQJhcAUDbmlsBQNuaWwDCQABAgUCYlYCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY3QFAmJWBQJjdAkBAmFTAQkArAICCQCsAgICAVsFAmFwAh1dIGdldExlYXNlUHJveHlDb25maWcoKSBlcnJvcgECY3UHAmN2AmFwAmJaAmN3AmJUAmNpAmNqBAJjYQkBAmFyAQUCYXADCQAAAgUCY2EFAmNhBAJjYgkBAmFzAQUCYloDCQAAAgUCY2IFAmNiBAJjeAkAlgMBCQDMCAIAAAkAzAgCCQBlAgkBAmJMAQUCYXAFAmN3BQNuaWwEAmN5CQBrAwUCY3YFAmN4AGQEAmN6CQBlAgUCY2EFAmN5AwkAAAIFAmN6AAAFA25pbAMJAGYCAAAFAmN6BAJjQQkBAS0BBQJjegkBAmJYBAUCYXAFAmNBBQJiWgUCYlQEAmNCBQJjegkBAmNoBgUCYXAFAmNCBQJiWgUCYlQFAmNpBQJjagkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY0MBAmFwBAJjRAkBAmNzAQUCYXAEAmNFCAUCY0QCXzEEAmNGCAUCY0QCXzIEAmN3CAUCY0QCXzMEAmNHCAUCY0QCXzQEAmNICAUCY0QCXzUEAmNpCAUCY0QCXzYEAmNJCAUCY0QCXzcDBQJjRQkBAmN1BwUCY0YFAmFwBQJjSAUCY3cJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNHBQJjaQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0kFA25pbAECY0oCAmFwAmNLBAJjTAkBAmNzAQUCYXAEAmNFCAUCY0wCXzEEAmNGCAUCY0wCXzIEAmN3CAUCY0wCXzMEAmNHCAUCY0wCXzQEAmNICAUCY0wCXzUEAmNpCAUCY0wCXzYEAmNJCAUCY0wCXzcDBQJjRQQCY00JAJYDAQkAzAgCAAAJAMwIAgkAZQIJAGUCCQECYkwBBQJhcAUCY0sFAmN3BQNuaWwDCQAAAgUCY00FAmNNBAJjZgkAawMFAmNGBQJjTQBkAwkAAAIFAmNmBQJjZgQCY04JAGUCCQECYXIBBQJhcAUCY2YDCQAAAgUCY04FAmNOAwkAZgIAAAUCY04JAQJiWAQFAmFwCQEBLQEFAmNOBQJjSAkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0cJAQJjaAYFAmFwBQJjTgUCY0gJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNHBQJjaQkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAECY08CAmNQAmNRBAJjUgkBAmNKAgkBAmFPAgUEdGhpcwkBAmFlAAUCY1AEAmNTCQECY0oCCQECYU8CBQR0aGlzCQECYWYABQJjUQkAzggCBQJjUgUCY1MBAmNUBAJjVQJjVgJjVwJjWAQCY1kJAQFEAgUCY1cFAmNVBAJjWgkBAUQCBQJjWAUCY1YJAQJiTwIFAmNaBQJjWQECZGEDAmNXAmNYAmRiBAJkYwkBAmJjAAQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdAQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdQQCZGYJAQJjVAQFAmRkBQJkZQUCY1cFAmNYBAJiUQkBAUQCBQJjVwUCZGQEAmJQCQEBRAIFAmNYBQJkZQQCZGcJAQFEAgUCZGIFAWIEAmRoCQECYk8CBQJiUQUCZGcEAmRpCQECYk8CBQJiUAUCZGcJAMwIAgUCZGYJAMwIAgUCZGgJAMwIAgUCZGkFA25pbAECZGoDAmNXAmNYAmRiBAJkawkBAmRhAwUCY1cFAmNYBQJkYgkAzAgCCQEBSAIJAJEDAgUCZGsAAAUBYgkAzAgCCQEBSAIJAJEDAgUCZGsAAQUBYgkAzAgCCQEBSAIJAJEDAgUCZGsAAgUBYgUDbmlsAQJkbAQCZG0CZG4CZG8CYWIEAmRjCQECYmMABAJkcAkAkQMCBQJkYwUBcQQCZHEJAJEDAgUCZGMFAXIEAmRyCQCRAwIFAmRjBQFzBAJjVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF0BAJjVgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF1BAJkcwkAkQMCBQJkYwUBcAQCZHQICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQkA2QQBBQJkcAkArAICCQCsAgICBkFzc2V0IAUCZHACDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5AwkBAiE9AgUCZHAFAmRuCQACAQIVSW52YWxpZCBhc3NldCBwYXNzZWQuBAJkdQkBAmJMAQUCZHEEAmR2CQEBRAIFAmR1BQJjVQQCZHcJAQJiTAEFAmRyBAJkeAkBAUQCBQJkdwUCY1YEAmR5CQECYk8CBQJkeAUCZHYEAmR6CQEBSAIFAmR5BQFiBAJkQQkBAUQCBQJkbwUBYgQCZEIJAQFEAgUCZHQFAWIEAmRDCQC8AgMFAmR2BQJkQQUCZEIEAmRECQC8AgMFAmR4BQJkQQUCZEIEAmRFCQEBSwMFAmRDBQJjVQUFRkxPT1IEAmRGCQEBSwMFAmREBQJjVgUFRkxPT1IEAmRHAwkAAAIFAmRtAgAFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZEUDCQAAAgUCZHECBVdBVkVTBQR1bml0CQDZBAEFAmRxCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJkRgMJAAACBQJkcgIFV0FWRVMFBHVuaXQJANkEAQUCZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBBQJhYgUCZG0JAQJiSAYFAmRFBQJkRgUCZG8FAmR6BQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmR6CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR6BQNuaWwJAJwKCgUCZEUFAmRGBQJkcQUCZHIFAmR1BQJkdwUCZHQFAmR5BQJkcwUCZEcBAmRICQJkbQJkSQJkSgJkSwJkTAJkTQJhYgJkTgJkTwQCZGMJAQJiYwAEAmRwCQDZBAEJAJEDAgUCZGMFAXEEAmRQCQCRAwIFAmRjBQFyBAJkUQkAkQMCBQJkYwUBcwQCZFIJAJEDAgUCZGMFAXYEAmRTCQCRAwIFAmRjBQF3BAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF0BAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF1BAJkcwkAkQMCBQJkYwUBcAQCZHQICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHAJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHACDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkVAkA2AQBCQELdmFsdWVPckVsc2UCBQJkSwkA2QQBAgVXQVZFUwQCZFUJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZE0JANkEAQIFV0FWRVMDAwkBAiE9AgUCZFAFAmRUBgkBAiE9AgUCZFEFAmRVCQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCZHUDBQJkTgkBAmJMAQUCZFAJAGUCCQECYkwBBQJkUAUCZEoEAmR3AwUCZE4JAQJiTAEFAmRRCQBlAgkBAmJMAQUCZFEFAmRMBAJkVgkBAUQCBQJkSgUCZGQEAmRXCQEBRAIFAmRMBQJkZQQCZFgJAQJiTwIFAmRXBQJkVgQCZHYJAQFEAgUCZHUFAmRkBAJkeAkBAUQCBQJkdwUCZGUEAmRZAwkAAAIFAmR0AAAEAmR5BQFlBAJkWgUBZQQCZGcJAHYGCQC5AgIFAmRWBQJkVwAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUgCBQJkZwUBYgkBAUgCBQJkVgUCZGQJAQFIAgUCZFcFAmRlCQECYk8CCQC3AgIFAmR4BQJkVwkAtwICBQJkdgUCZFYFAmRaBAJkeQkBAmJPAgUCZHgFAmR2BAJkWgkAvAIDCQEBUgEJALgCAgUCZHkFAmRYBQFkBQJkeQQCZWEJAQFEAgUCZEkFAWIDAwkBAiE9AgUCZHkFAWUJAL8CAgUCZFoFAmVhBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJkWgIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmVhBAJkQgkBAUQCBQJkdAUBYgQCZWIJAL0CBAUCZFYJAQJiUgMFAmR4BQJkdgUHQ0VJTElORwUBZAUHQ0VJTElORwQCZWMJAL0CBAUCZFcFAWQJAQJiUgMFAmR4BQJkdgUFRkxPT1IFB0NFSUxJTkcEAmVkAwkAvwICBQJlYgUCZFcJAJQKAgUCZWMFAmRXCQCUCgIFAmRWBQJlYgQCZWUIBQJlZAJfMQQCZWYIBQJlZAJfMgQCZGcJAL0CBAUCZEIFAmVmBQJkeAUFRkxPT1IJAJcKBQkBAUsDBQJkZwUBYgUFRkxPT1IJAQFLAwUCZWUFAmRkBQdDRUlMSU5HCQEBSwMFAmVmBQJkZQUHQ0VJTElORwUCZHkFAmRaBAJlZwgFAmRZAl8xBAJlaAgFAmRZAl8yBAJlaQgFAmRZAl8zBAJkegkBAUgCCAUCZFkCXzQFAWIEAmVqCQEBSAIIBQJkWQJfNQUBYgMJAGcCAAAFAmVnCQACAQI2SW52YWxpZCBjYWxjdWxhdGlvbnMuIExQIGNhbGN1bGF0ZWQgaXMgbGVzcyB0aGFuIHplcm8uBAJlawMJAQEhAQUCZE8AAAUCZWcEAmVsCQBlAgUCZEoFAmVoBAJlbQkAZQIFAmRMBQJlaQQCZW4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZHoJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZHoJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUCYWIFAmRtCQECYncKBQJlaAUCZWkFAmVrBQJkegUCZEkFAmVqBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJlbAUCZW0FA25pbAkAnwoNBQJlZwUCZWsFAmR6BQJkdQUCZHcFAmR0BQJkcAUCZHMFAmVuBQJlbAUCZW0FAmRLBQJkTQECZW8DAmVwAmVxAmR0BAJlcgkBAUcCBQJlcAkAtgIBBQJicgQCZXMJAQFHAgUCZXEJALYCAQUCYnMEAmV0CQC8AgMJAHYGCQC5AgIFAmVyBQJlcwAACQC2AgEABQABABIFBERPV04FAWcFAmR0AwkAAAIFAmR0BQFmBQFmBQJldAECZXUDAmV2AmV3AmV4BAJleQkAuAICCQC2AgEJAQJiTAEJAQJiaAEFAmJwBQJldgQCZXoJALgCAgkAtgIBCQECYkwBCQECYmgBBQJicQUCZXcEAmVBCQC4AgIJALYCAQgJAQV2YWx1ZQEJAOwHAQUCYm8IcXVhbnRpdHkFAmV4BAJlQgkBAmVvAwUCZXkFAmV6BQJlQQUCZUIBAmVDAwJlRAJlRQJleAQCZXkJAGQCCQECYkwBCQECYmgBBQJicAUCZUQEAmV6CQBkAgkBAmJMAQkBAmJoAQUCYnEFAmVFBAJlQQkAZAIICQEFdmFsdWUBCQDsBwEFAmJvCHF1YW50aXR5BQJleAQCZXQJAQJlbwMJALYCAQUCZXkJALYCAQUCZXoJALYCAQUCZUEEAmVGCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJhawUGaGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIFAmFqCQCmAwEFAmV0BQNuaWwJAJQKAgUCZUYFAmV0AQJlRwAJAQt2YWx1ZU9yRWxzZQIJAJsIAgUCYVYJAQJhSAEJAKUIAQUEdGhpcwcBAmVIAgJlSQJldAMJAMACAgUCZXQFAmVJBgkBAmFTAQkAuQkCCQDMCAICInVwZGF0ZWQgS0xwIGxvd2VyIHRoYW4gY3VycmVudCBLTHAJAMwIAgkApgMBBQJlSQkAzAgCCQCmAwEFAmV0BQNuaWwCASABAmVKAQJlSwQCZXkJAQJiTAEJAQJiaAEFAmJwBAJlegkBAmJMAQkBAmJoAQUCYnEEAmVMCAUCZUsGYW1vdW50BAJlTQkAbgQIBQJlSwZhbW91bnQIBQJlSwVwcmljZQUBYgUFRkxPT1IEAmVOAwkAAAIIBQJlSwlvcmRlclR5cGUFA0J1eQkAlAoCBQJlTAkBAS0BBQJlTQkAlAoCCQEBLQEFAmVMBQJlTQQCZUQIBQJlTgJfMQQCZUUIBQJlTgJfMgMDAwkBAmJhAAYJAAACBQJibgUBbQYJAAACBQJibgUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQDAwkBAiE9AggIBQJlSwlhc3NldFBhaXILYW1vdW50QXNzZXQFAmJwBgkBAiE9AggIBQJlSwlhc3NldFBhaXIKcHJpY2VBc3NldAUCYnEJAAIBAhNXcm9uZyBvcmRlciBhc3NldHMuBAJlTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJhVQECC2ludmFsaWQga0xwBAJlUAkBAmVDAwUCZUQFAmVFAAAEAmVRCAUCZVACXzEEAmVSCAUCZVACXzIEAmVTCQDAAgIFAmVSBQJlTwQCZVQJALkJAgkAzAgCAgRrTHA9CQDMCAIJAKYDAQUCZU8JAMwIAgIIIGtMcE5ldz0JAMwIAgkApgMBBQJlUgkAzAgCAhQgYW1vdW50QXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmV5CQDMCAICEyBwcmljZUFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlegkAzAgCAhkgYW1vdW50QXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUQJAMwIAgIYIHByaWNlQXNzZXRCYWxhbmNlRGVsdGE9CQDMCAIJAKQDAQUCZUUJAMwIAgIIIGhlaWdodD0JAMwIAgkApAMBBQZoZWlnaHQFA25pbAIACQCUCgIFAmVTBQJlVAECZVUBAmVWAwkBAiE9AgkAkAMBCAUCZVYIcGF5bWVudHMAAQkAAgECHWV4YWN0bHkgMSBwYXltZW50IGlzIGV4cGVjdGVkBAJlVwkBBXZhbHVlAQkAkQMCCAUCZVYIcGF5bWVudHMAAAQCZG4JAQV2YWx1ZQEIBQJlVwdhc3NldElkBAJlWAgFAmVXBmFtb3VudAQCZFkJAQJkbAQJANgEAQgFAmVWDXRyYW5zYWN0aW9uSWQJANgEAQUCZG4FAmVYCAUCZVYGY2FsbGVyBAJkRQgFAmRZAl8xBAJkRggFAmRZAl8yBAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZFkCXzkEAmRHCAUCZFkDXzEwAwMJAQJiYQAGCQAAAgUCZHMFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRzCQCXCgUFAmRFBQJkRgUCZVgFAmRuBQJkRwECZVkDAmVWAmRJAmRPAwkBAiE9AgkAkAMBCAUCZVYIcGF5bWVudHMAAgkAAgECH2V4YWN0bHkgMiBwYXltZW50cyBhcmUgZXhwZWN0ZWQEAmVaCQEFdmFsdWUBCQCRAwIIBQJlVghwYXltZW50cwAABAJmYQkBBXZhbHVlAQkAkQMCCAUCZVYIcGF5bWVudHMAAQQCZmIJAQJkSAkJANgEAQgFAmVWDXRyYW5zYWN0aW9uSWQFAmRJCAUCZVoGYW1vdW50CAUCZVoHYXNzZXRJZAgFAmZhBmFtb3VudAgFAmZhB2Fzc2V0SWQJAKUIAQgFAmVWBmNhbGxlcgcFAmRPBAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZmICXzgDAwMJAQJiYQAGCQAAAgUCZHMFAWwGCQAAAgUCZHMFAW4JAAIBCQCsAgICLFB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRzBQJmYgECZmMBAmJZBAJmZAkA/AcEBQJhVgIEZW1pdAkAzAgCBQJiWQUDbmlsBQNuaWwDCQAAAgUCZmQFAmZkBAJmZQQCYlYFAmZkAwkAAQIFAmJWAgdBZGRyZXNzBAJmZgUCYlYJAPwHBAUCZmYCBGVtaXQJAMwIAgUCYlkFA25pbAUDbmlsBQR1bml0AwkAAAIFAmZlBQJmZQUCYlkJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZnAgJiWQJhaQQCZmgDCQAAAgUCYWkAAAAACQBrAwUCYlkFAmFpBQFiCQCUCgIJAGUCBQJiWQUCZmgFAmZoAQJmaQQCZmoCZmsCYWICYWMEAmZsCQAAAgUCYWMFBHVuaXQEAmZtCQECYkwBCQECYmgBBQJicAQCZm4JAQJiTAEJAQJiaAEFAmJxBAJmbwMJAAACBQJmawUCYnAGAwkAAAIFAmZrBQJicQcJAQJhUwECDWludmFsaWQgYXNzZXQEAmZwAwUCZmwJAJQKAgUCZm0FAmZuAwUCZm8JAJQKAgkAZQIFAmZtBQJmagUCZm4JAJQKAgUCZm0JAGUCBQJmbgUCZmoEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmZzAwUCZm8JAJQKAgUCZmoAAAkAlAoCAAAFAmZqBAJmdAgFAmZzAl8xBAJmdQgFAmZzAl8yBAJlTAgJAQJmZwIFAmZ0BQJhWAJfMQQCZU0ICQECZmcCBQJmdQUCYVgCXzEEAmZ2CQECZmcCBQJmagUCYVgEAmZ3CAUCZnYCXzEEAmZoCAUCZnYCXzIEAmZ4CQBkAgUCZnEFAmVMBAJmeQkAZAIFAmZyBQJlTQQCZnoJAQJiTwIJAQFEAgUCZnkFAmJzCQEBRAIFAmZ4BQJicgQCZkEJAQFIAgUCZnoFAWIEAmZCAwUCZm8FAmZxBQJmcgQCZkMJALYCAQUCZkIEAmZECQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYm8JAKwCAgkArAICAgZhc3NldCAJANgEAQUCYm8CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmRQMJAL8CAgUCZkQFAWYGCQECYVMBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmZFBQJmRQQCZkYJALYCAQUCZncEAmZHCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZECQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZkYFAWQFAmZDABIAEgUERE9XTgUBZAUBZAUDbmlsBAJlbgMFAmZsBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZkEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZkEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJ3CgUCZnQFAmZ1BQJmRwUCZkEAAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJmSAkBAmJPAgkBAUQCBQJmcgUCYnMJAQFEAgUCZnEFAmJyBAJmSQkBAUgCBQJmSAUBYgQCZkoEAmZLAwUCZm8JAJQKAgUCZnQFAmZxCQCUCgIFAmZ1BQJmcgQCYlkIBQJmSwJfMQQCZkwIBQJmSwJfMgQCZk0JAKADAQkAvAIDBQJmRAkAtgIBCQBpAgUCYlkAAgkAtgIBBQJmTAkAawMJAGUCBQJmRwUCZk0FAWIFAmZNCQCXCgUFAmZHBQJlbgUCZmgFAmZKBQJmbwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZk4FAmZPAmZ3AmZrAmFiAmFjBAJmbAkAAAIFAmFjBQR1bml0BAJkYwkBAmJjAAQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdAQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdQQCZlAJAMwIAgMJAAACBQJmawUCYm8GCQECYVMBAhBpbnZhbGlkIGxwIGFzc2V0BQNuaWwDCQAAAgUCZlAFAmZQBAJmUQMJAAACBQJmTwUCYnAGAwkAAAIFAmZPBQJicQcJAQJhUwECDWludmFsaWQgYXNzZXQEAmZSAwUCZlEJALYCAQkBAmJMAQkBAmJoAQUCYnAJALYCAQkBAmJMAQkBAmJoAQUCYnEEAmZTAwUCZlEFAmRkBQJkZQQCZlQJAQJiTAEJAQJiaAEFAmJwBAJmVQkBAmJMAQkBAmJoAQUCYnEEAmZWAwUCZlEFAmZUBQJmVQQCZlcJALYCAQUCZlYEAmZECQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYm8JAKwCAgkArAICAgZhc3NldCAJANgEAQUCYm8CDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmWAkAtgIBBQJmdwQCZlkJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZlIJALgCAgUBZAkAdgYJALgCAgUBZAkAugICCQC5AgIFAmZYBQFkBQJmRAASBQFoAAAAEgUERE9XTgUBZAUDbmlsBAJmWgkBAmZnAgUCZlkFAmFaBAJnYQgFAmZaAl8xBAJmaAgFAmZaAl8yBAJnYgMFAmZRCQCWCgQFAmdhAAAJAGUCBQJmVAUCZlkFAmZVCQCWCgQAAAUCZ2EFAmZUCQBlAgUCZlUFAmZZBAJnYwgFAmdiAl8xBAJnZAgFAmdiAl8yBAJnZQgFAmdiAl8zBAJnZggFAmdiAl80BAJmegkBAmJPAgkBAUQCBQJnZgUCYnMJAQFEAgUCZ2UFAmJyBAJmQQkBAUgCBQJmegUBYgQCZW4DBQJmbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiSAYFAmdjBQJnZAUCZncFAmZBBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZBCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZBBQNuaWwEAmZICQECYk8CCQEBRAIFAmZVBQJicwkBAUQCBQJmVAUCYnIEAmZJCQEBSAIFAmZIBQFiBAJmSgQCZ2cJAGgCCQCgAwEJALwCAwUCZlIFAmZYBQJmRAACCQBrAwkAZQIFAmdhBQJnZwUBYgUCZ2cJAJcKBQUCZ2EFAmVuBQJmaAUCZkoFAmZRCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJnaAAEAmJWCQCiCAEJAQFVAAMJAAECBQJiVgIGU3RyaW5nBAJnaQUCYlYJANkEAQUCZ2kDCQABAgUCYlYCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2oABAJiVgkAoggBCQEBVgADCQABAgUCYlYCBlN0cmluZwQCZ2kFAmJWCQDZBAEFAmdpAwkAAQIFAmJWAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmdrAQJlVgQCYlYJAQJnaAADCQABAgUCYlYCCkJ5dGVWZWN0b3IEAmdsBQJiVgkAAAIIBQJlVg9jYWxsZXJQdWJsaWNLZXkFAmdsAwkAAQIFAmJWAgRVbml0CQAAAggFAmVWBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJnbQECZVYEAmduCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmJWCQECZ2gAAwkAAQIFAmJWAgpCeXRlVmVjdG9yBAJnbAUCYlYDCQAAAggFAmVWD2NhbGxlclB1YmxpY0tleQUCZ2wGBQJnbgMJAAECBQJiVgIEVW5pdAMJAAACCAUCZVYGY2FsbGVyBQR0aGlzBgUCZ24JAAIBAgtNYXRjaCBlcnJvch4CZVYBCXJlYmFsYW5jZQAJAM4IAgkBAmNDAQkBAmFPAgUEdGhpcwkBAmFlAAkBAmNDAQkBAmFPAgUEdGhpcwkBAmFmAAJlVgEhY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcFJFQURPTkxZAwJnbwJncAJncQQCZ3IDCQAAAgUCZ3AHBAJncwkBAmFPAgUEdGhpcwkBAmFmAAQCZ3QJAQJhTwIFBHRoaXMJAQJhZQAJAJQKAgUCZ3MFAmd0BAJncwkBAmFPAgUEdGhpcwkBAmFlAAQCZ3QJAQJhTwIFBHRoaXMJAQJhZgAJAJQKAgUCZ3MFAmd0BAJncwgFAmdyAl8xBAJndAgFAmdyAl8yBAJndQkBAmJMAQUCZ3QEAmd2CQECYkwBBQJncwQCZ3cJAGsDBQJndgUCZ28JAGQCBQJndQUCZ28EAmd4CQC5AgIJALYCAQUCZ3UJALYCAQUCZ3YEAmd5CQC5AgIJALcCAgkAtwICCQC2AgEJAQJiTAEFAmd0CQC2AgEFAmdvCQC2AgEFAmdxCQC4AgIJALYCAQkBAmJMAQUCZ3MJALYCAQUCZ3cEAmd6AwkAwAICBQJneQUCZ3gGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ3oFAmd6CQCUCgIFA25pbAUCZ3cJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVYBJmNhbGN1bGF0ZUFtb3VudE91dEZvclN3YXBBbmRTZW5kVG9rZW5zBQJnbwJncAJnQQJnQgJncQQCZ0MKAAJhWQkA/AcEBQJhVgIXZ2V0U3dhcENvbnRyYWN0UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAmFZAgZTdHJpbmcFAmFZCQACAQkArAICCQADAQUCYVkCGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQCZlAJAMwIAgMJAGcCCAkBBXZhbHVlAQkAkQMCCAUCZVYIcGF5bWVudHMAAAZhbW91bnQFAmdvBgkBAmFTAQIMV3JvbmcgYW1vdW50CQDMCAIDCQAAAggFAmVWBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0MGCQECYVMBAhFQZXJtaXNzaW9uIGRlbmllZAUDbmlsAwkAAAIFAmZQBQJmUAQCZVcJAQV2YWx1ZQEJAJEDAggFAmVWCHBheW1lbnRzAAAEAmd0CQECYmgBCAUCZVcHYXNzZXRJZAQCZ3MDCQAAAgUCZ3AHCQECYU8CBQR0aGlzCQECYWYACQECYU8CBQR0aGlzCQECYWUABAJndQkAZQIJAQJiTAEFAmd0CAkBBXZhbHVlAQkAkQMCCAUCZVYIcGF5bWVudHMAAAZhbW91bnQEAmd2CQECYkwBBQJncwQCZ3cJAGsDBQJndgUCZ28JAGQCBQJndQUCZ28EAmd4CQC5AgIJALYCAQUCZ3UJALYCAQUCZ3YEAmd5CQC5AgIJALcCAgkAtgIBCQECYkwBBQJndAkAtgIBBQJncQkAuAICCQC2AgEJAQJiTAEFAmdzCQC2AgEFAmd3BAJnegMJAMACAgUCZ3kFAmd4BgkAAgECFG5ldyBLIGlzIGZld2VyIGVycm9yAwkAAAIFAmd6BQJnegQCZ0QDCQBnAgUCZ3cFAmdBBgkAAgECLEV4Y2hhbmdlIHJlc3VsdCBpcyBmZXdlciBjb2lucyB0aGFuIGV4cGVjdGVkAwkAAAIFAmdEBQJnRAQCZ0UJAQJjQwEFAmd0AwkAAAIFAmdFBQJnRQQCZ0YJAQJjSgIFAmdzBQJndwMJAAACBQJnRgUCZ0YJAJQKAgkAzggCCQDOCAIFAmdGBQJnRQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnQgUCZ3cJAQJiZgEFAmdzBQNuaWwFAmd3CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVWAQpzZXRNYW5hZ2VyAQJnRwQCZ0gJAQJnbQEFAmVWAwkAAAIFAmdIBQJnSAQCZ0kJANkEAQUCZ0cDCQAAAgUCZ0kFAmdJCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFWAAUCZ0cFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVgEOY29uZmlybU1hbmFnZXIABAJnSgkBAmdqAAQCZ0sDCQEJaXNEZWZpbmVkAQUCZ0oGCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdLBQJnSwQCZ0wDCQAAAggFAmVWD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCZ0oGCQACAQIbWW91IGFyZSBub3QgcGVuZGluZyBtYW5hZ2VyAwkAAAIFAmdMBQJnTAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQAJANgEAQkBBXZhbHVlAQUCZ0oJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVYBA3B1dAICZEkCZ00DCQBmAgAABQJkSQkAAgECIEludmFsaWQgc2xpcHBhZ2VUb2xlcmFuY2UgcGFzc2VkBAJmYgkBAmVZAwUCZVYFAmRJBgQCZWsIBQJmYgJfMgQCZHAIBQJmYgJfNwQCZEcIBQJmYgJfOQQCZWwIBQJmYgNfMTAEAmVtCAUCZmIDXzExBAJnTggFAmZiA18xMgQCZ08IBQJmYgNfMTMEAmVaCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlVghwYXltZW50cwAABmFtb3VudAQCZmEJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVWCHBheW1lbnRzAAEGYW1vdW50BAJlQgkBAmV1AwUCZVoFAmZhCQC2AgEAAAMJAAACBQJlQgUCZUIEAmZkCQD8BwQFAmFWAgRlbWl0CQDMCAIFAmVrBQNuaWwFA25pbAMJAAACBQJmZAUCZmQEAmZlBAJiVgUCZmQDCQABAgUCYlYCB0FkZHJlc3MEAmZmBQJiVgkA/AcEBQJmZgIEZW1pdAkAzAgCBQJlawUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmUFAmZlBAJnUAMJAGYCBQJlbAAACQD8BwQFAmJ2AgNwdXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZ04FAmVsBQNuaWwFA25pbAMJAAACBQJnUAUCZ1AEAmdRAwkAZgIFAmVtAAAJAPwHBAUCYnYCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnTwUCZW0FA25pbAUDbmlsAwkAAAIFAmdRBQJnUQQCZ1IDBQJnTQQCZ1MJAPwHBAUCYnUCBXN0YWtlBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRwBQJlawUDbmlsAwkAAAIFAmdTBQJnUwUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJlVgZjYWxsZXIFAmVrBQJkcAUDbmlsBAJnVAkBAmVDAwAAAAAAAAMJAAACBQJnVAUCZ1QEAmV0CAUCZ1QCXzIEAmdVCAUCZ1QCXzEEAmdWCQECZUgCBQJlQgUCZXQDCQAAAgUCZ1YFAmdWBAJnVwkA/AcEBQR0aGlzAglyZWJhbGFuY2UFA25pbAUDbmlsAwkAAAIFAmdXBQJnVwkAzggCCQDOCAIFAmRHBQJnUgUCZ1UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVYBCnB1dEZvckZyZWUBAmdYAwkAZgIAAAUCZ1gJAAIBAhRJbnZhbGlkIHZhbHVlIHBhc3NlZAQCZmIJAQJlWQMFAmVWBQJnWAcEAmRHCAUCZmICXzkEAmVaCQC2AgEICQEFdmFsdWUBCQCRAwIIBQJlVghwYXltZW50cwAABmFtb3VudAQCZmEJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVWCHBheW1lbnRzAAEGYW1vdW50BAJlQgkBAmV1AwUCZVoFAmZhCQC2AgEAAAMJAAACBQJlQgUCZUIEAmdZCQECZUMDAAAAAAAABAJnVQgFAmdZAl8xBAJldAgFAmdZAl8yBAJnVgkBAmVIAgUCZUIFAmV0AwkAAAIFAmdWBQJnVgkAzggCBQJkRwUCZ1UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVYBCXB1dE9uZVRrbgICZ1oCaGEEAmhiCgACYVkJAPwHBAUCYVYCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWQIHQm9vbGVhbgUCYVkJAAIBCQCsAgIJAAMBBQJhWQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGMDAwMJAQJiYQAGCQAAAgUCYm4FAWwGCQAAAgUCYm4FAW4GBQJoYgQCZlAJAMwIAgMDCQEBIQEFAmhjBgkBAmdrAQUCZVYGCQECYVMBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlVghwYXltZW50cwABBgkBAmFTAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlAFAmZQBAJoZAkAkQMCCAUCZVYIcGF5bWVudHMAAAQCZmsIBQJoZAdhc3NldElkBAJmaggFAmhkBmFtb3VudAQCZUIDCQAAAgUCZmsFAmJwCQECZXUDCQC2AgEFAmZqCQC2AgEAAAkAtgIBAAADCQAAAgUCZmsFAmJxCQECZXUDCQC2AgEAAAkAtgIBBQJmagkAtgIBAAAJAQJhUwECHnBheW1lbnQgYXNzZXQgaXMgbm90IHN1cHBvcnRlZAMJAAACBQJlQgUCZUIEAmFiCAUCZVYGY2FsbGVyBAJhYwgFAmVWDXRyYW5zYWN0aW9uSWQEAmhlCQECZmkEBQJmagUCZmsFAmFiBQJhYwMJAAACBQJoZQUCaGUEAmZvCAUCaGUCXzUEAmhmCAUCaGUCXzQEAmZoCAUCaGUCXzMEAmVuCAUCaGUCXzIEAmhnCAUCaGUCXzEEAmhoAwMJAGYCBQJnWgAACQBmAgUCZ1oFAmhnBwkBAmFTAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnWgUDbmlsAgAFAmhnBAJmZAkBAmZjAQUCaGgDCQAAAgUCZmQFAmZkBAJnUgMFAmhhBAJoaQkA/AcEBQJidQIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm8FAmhoBQNuaWwDCQAAAgUCaGkFAmhpBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVWBmNhbGxlcgUCaGgFAmJvBQNuaWwEAmhqAwkAZgIFAmZoAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVcFAmZoBQJmawUDbmlsBQNuaWwEAmhrAwkAAAIFBHRoaXMFAmFXCQCUCgIAAAAAAwUCZm8JAJQKAgkBAS0BBQJmaAAACQCUCgIAAAkBAS0BBQJmaAQCZUQIBQJoawJfMQQCZUUIBQJoawJfMgQCaGwJAQJlQwMFAmVEBQJlRQAABAJnVQgFAmhsAl8xBAJldAgFAmhsAl8yBAJlTwkBBXZhbHVlAQkAoggBBQJhagQCZ1YJAQJlSAIFAmVCBQJldAMJAAACBQJnVgUCZ1YEAmdXCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZ1cFAmdXCQCUCgIJAM4IAgkAzggCCQDOCAIFAmVuBQJnUgUCaGoFAmdVBQJoaAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVgERcHV0T25lVGtuUkVBRE9OTFkCAmZrAmZqBAJobQkBAmZpBAUCZmoJAQJiZgEFAmZrBQR1bml0BQR1bml0BAJoZwgFAmhtAl8xBAJlbggFAmhtAl8yBAJmaAgFAmhtAl8zBAJoZggFAmhtAl80BAJmbwgFAmhtAl81CQCUCgIFA25pbAkAlQoDBQJoZwUCZmgFAmhmAmVWAQlnZXRPbmVUa24CAmhuAmdaBAJoYgoAAmFZCQD8BwQFAmFWAihpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZFJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVkCB0Jvb2xlYW4FAmFZCQACAQkArAICCQADAQUCYVkCHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EAmhvAwMJAQJiYQAGCQAAAgUCYm4FAW4GBQJoYgQCZlAJAMwIAgMDCQEBIQEFAmhvBgkBAmdrAQUCZVYGCQECYVMBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlVghwYXltZW50cwABBgkBAmFTAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlAFAmZQBAJmTwkBAmJmAQUCaG4EAmhkCQCRAwIIBQJlVghwYXltZW50cwAABAJmawgFAmhkB2Fzc2V0SWQEAmZ3CAUCaGQGYW1vdW50BAJlQgkBAmV1AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlQgUCZUIEAmFiCAUCZVYGY2FsbGVyBAJhYwgFAmVWDXRyYW5zYWN0aW9uSWQEAmhwCQECZk4FBQJmTwUCZncFAmZrBQJhYgUCYWMDCQAAAgUCaHAFAmhwBAJmUQgFAmhwAl81BAJoZggFAmhwAl80BAJmaAgFAmhwAl8zBAJlbggFAmhwAl8yBAJocQgFAmhwAl8xBAJiWQMDCQBmAgUCZ1oAAAkAZgIFAmdaBQJocQcJAQJhUwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1oFA25pbAIABQJocQQCaHIJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZncFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZmsFAmZ3BQNuaWwDCQAAAgUCaHIFAmhyBAJnRgkBAmNKAgUCaG4JAGQCBQJiWQkAlgMBCQDMCAIAAAkAzAgCBQJmaAUDbmlsBAJocwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCYlkFAmZPBQNuaWwEAmhqAwkAZgIFAmZoAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVcFAmZoBQJmTwUDbmlsBQNuaWwEAmh0BAJodQMJAAACBQR0aGlzBQJhVwAABQJmaAMFAmZRCQCUCgIJAQEtAQkAZAIFAmJZBQJodQAACQCUCgIAAAkBAS0BCQBkAgUCYlkFAmh1BAJlRAgFAmh0Al8xBAJlRQgFAmh0Al8yBAJodgkBAmVDAwUCZUQFAmVFAAAEAmdVCAUCaHYCXzEEAmV0CAUCaHYCXzIEAmdWCQECZUgCBQJlQgUCZXQDCQAAAgUCZ1YFAmdWCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZW4FAmdGBQJocwUCaGoFAmdVBQJiWQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVgERZ2V0T25lVGtuUkVBRE9OTFkCAmZPAmZ3BAJodwkBAmZOBQkBAmJmAQUCZk8FAmZ3BQJibwUEdW5pdAUEdW5pdAQCaHEIBQJodwJfMQQCZW4IBQJodwJfMgQCZmgIBQJodwJfMwQCaGYIBQJodwJfNAQCZlEIBQJodwJfNQkAlAoCBQNuaWwJAJUKAwUCaHEFAmZoBQJoZgJlVgETdW5zdGFrZUFuZEdldE9uZVRrbgMCaHgCaG4CZ1oEAmhiCgACYVkJAPwHBAUCYVYCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhWQIHQm9vbGVhbgUCYVkJAAIBCQCsAgIJAAMBBQJhWQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaG8DAwkBAmJhAAYJAAACBQJibgUBbgYFAmhiBAJmUAkAzAgCAwMJAQEhAQUCaG8GCQECZ2sBBQJlVgYJAQJhUwECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVWCHBheW1lbnRzAAAGCQECYVMBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmUAUCZlAEAmZPCQECYmYBBQJobgQCYWIIBQJlVgZjYWxsZXIEAmFjCAUCZVYNdHJhbnNhY3Rpb25JZAQCZUIJAQJldQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUIFAmVCBAJoeQkA/AcEBQJidQIHdW5zdGFrZQkAzAgCCQDYBAEFAmJvCQDMCAIFAmh4BQNuaWwFA25pbAMJAAACBQJoeQUCaHkEAmh6CQECZk4FBQJmTwUCaHgFAmJvBQJhYgUCYWMDCQAAAgUCaHoFAmh6BAJmUQgFAmh6Al81BAJoZggFAmh6Al80BAJmaAgFAmh6Al8zBAJlbggFAmh6Al8yBAJocQgFAmh6Al8xBAJiWQMDCQBmAgUCZ1oAAAkAZgIFAmdaBQJocQcJAQJhUwEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1oFA25pbAIABQJocQQCaHIJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCaHgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm8FAmh4BQNuaWwDCQAAAgUCaHIFAmhyBAJnRgkBAmNKAgUCaG4JAGQCBQJiWQkAlgMBCQDMCAIAAAkAzAgCBQJmaAUDbmlsBAJocwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVYGY2FsbGVyBQJiWQUCZk8FA25pbAQCaGoDCQBmAgUCZmgAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVwUCZmgFAmZPBQNuaWwFA25pbAQCaEEEAmh1AwkAAAIFBHRoaXMFAmFXAAAFAmZoAwUCZlEJAJQKAgkBAS0BCQBkAgUCYlkFAmh1AAAJAJQKAgAACQEBLQEJAGQCBQJiWQUCaHUEAmVECAUCaEECXzEEAmVFCAUCaEECXzIEAmhCCQECZUMDBQJlRAUCZUUAAAQCZ1UIBQJoQgJfMQQCZXQIBQJoQgJfMgQCZ1YJAQJlSAIFAmVCBQJldAMJAAACBQJnVgUCZ1YJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCBQJlbgUCZ0YFAmhzBQJoagUCZ1UFAmJZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVWAQNnZXQABAJkWQkBAmVVAQUCZVYEAmRFCAUCZFkCXzEEAmRGCAUCZFkCXzIEAmVYCAUCZFkCXzMEAmRuCAUCZFkCXzQEAmRHCAUCZFkCXzUEAmdGCQECY08CBQJkRQUCZEYEAmVCCQECZXUDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVCBQJlQgQCaEMJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCZVgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZG4FAmVYBQNuaWwDCQAAAgUCaEMFAmhDBAJoRAkBAmVDAwkBAS0BBQJkRQkBAS0BBQJkRgAABAJnVQgFAmhEAl8xBAJldAgFAmhEAl8yBAJnVgkBAmVIAgUCZUIFAmV0AwkAAAIFAmdWBQJnVgkAzggCCQDOCAIFAmdGBQJkRwUCZ1UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVYBCWdldE5vTGVzcwICaEUCaEYEAmRZCQECZVUBBQJlVgQCZEUIBQJkWQJfMQQCZEYIBQJkWQJfMgQCZVgIBQJkWQJfMwQCZG4IBQJkWQJfNAQCZEcIBQJkWQJfNQMJAGYCBQJoRQUCZEUJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmRFAgMgPCAJAKQDAQUCaEUDCQBmAgUCaEYFAmRGCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCZEYCAyA8IAkApAMBBQJoRgQCZ0YJAQJjTwIFAmRFBQJkRgQCZUIJAQJldQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUIFAmVCBAJoQwkA/AcEBQJhVgIEYnVybgkAzAgCBQJlWAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkbgUCZVgFA25pbAMJAAACBQJoQwUCaEMEAmhHCQECZUMDCQEBLQEFAmRFCQEBLQEFAmRGAAAEAmdVCAUCaEcCXzEEAmV0CAUCaEcCXzIEAmdWCQECZUgCBQJlQgUCZXQDCQAAAgUCZ1YFAmdWCQDOCAIJAM4IAgUCZ0YFAmRHBQJnVQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVgENdW5zdGFrZUFuZEdldAECYlkEAmhIAwkBAiE9AgkAkAMBCAUCZVYIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCaEgFAmhIBAJkYwkBAmJjAAQCZHAJANkEAQkAkQMCBQJkYwUBcQQCZUIJAQJldQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUIFAmVCBAJoeQkA/AcEBQJidQIHdW5zdGFrZQkAzAgCCQDYBAEFAmRwCQDMCAIFAmJZBQNuaWwFA25pbAMJAAACBQJoeQUCaHkEAmRZCQECZGwECQDYBAEIBQJlVg10cmFuc2FjdGlvbklkCQDYBAEFAmRwBQJiWQgFAmVWBmNhbGxlcgQCZEUIBQJkWQJfMQQCZEYIBQJkWQJfMgQCZHMJAQ1wYXJzZUludFZhbHVlAQgFAmRZAl85BAJkRwgFAmRZA18xMAQCZ0YJAQJjTwIFAmRFBQJkRgQCaEkDAwkBAmJhAAYJAAACBQJkcwUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZHMGAwkAAAIFAmhJBQJoSQQCaEMJAPwHBAUCYVYCBGJ1cm4JAMwIAgUCYlkFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHAFAmJZBQNuaWwDCQAAAgUCaEMFAmhDBAJoSgkBAmVDAwkBAS0BBQJkRQkBAS0BBQJkRgAABAJnVQgFAmhKAl8xBAJldAgFAmhKAl8yBAJnVgkBAmVIAgUCZUIFAmV0AwkAAAIFAmdWBQJnVgkAzggCCQDOCAIFAmdGBQJkRwUCZ1UJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmh4AmhLAmhGBAJobwMJAQJiYQAGCQAAAgUCYm4FAW4EAmZQCQDMCAIDCQEBIQEFAmhvBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVWCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZlAFAmZQBAJlQgkBAmV1AwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlQgUCZUIEAmh5CQD8BwQFAmJ1Agd1bnN0YWtlCQDMCAIJANgEAQUCYm8JAMwIAgUCaHgFA25pbAUDbmlsAwkAAAIFAmh5BQJoeQQCZFkJAQJkbAQJANgEAQgFAmVWDXRyYW5zYWN0aW9uSWQJANgEAQUCYm8FAmh4CAUCZVYGY2FsbGVyBAJkRQgFAmRZAl8xBAJkRggFAmRZAl8yBAJkRwgFAmRZA18xMAQCZ0YJAQJjTwIFAmRFBQJkRgQCaEwJAMwIAgMJAGcCBQJkRQUCaEsGCQACAQkAuQkCCQDMCAICLGFtb3VudCBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEsFA25pbAIACQDMCAIDCQBnAgUCZEYFAmhGBgkAAgEJALkJAgkAzAgCAitwcmljZSBhc3NldCBhbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCaEYFA25pbAIABQNuaWwDCQAAAgUCaEwFAmhMBAJoQwkA/AcEBQJhVgIEYnVybgkAzAgCBQJoeAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJibwUCaHgFA25pbAMJAAACBQJoQwUCaEMEAmhNCQECZUMDCQEBLQEFAmRFCQEBLQEFAmRGAAAEAmdVCAUCaE0CXzEEAmV0CAUCaE0CXzIEAmdWCQECZUgCBQJlQgUCZXQDCQAAAgUCZ1YFAmdWCQDOCAIJAM4IAgUCZ0YFAmRHBQJnVQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlVgEIYWN0aXZhdGUCAmhOAmhPAwkBAiE9AgkApQgBCAUCZVYGY2FsbGVyCQClCAEFAmFWCQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAAUCaE4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFmAAUCaE8FA25pbAIHc3VjY2VzcwJlVgEKcmVmcmVzaEtMcAAEAmhQCQELdmFsdWVPckVsc2UCCQCfCAEFAmFrAAAEAmhRAwkAZwIJAGUCBQZoZWlnaHQFAmhQBQJhbgUEdW5pdAkBAmFTAQkAuQkCCQDMCAIJAKQDAQUCYW4JAMwIAgIvIGJsb2NrcyBoYXZlIG5vdCBwYXNzZWQgc2luY2UgdGhlIHByZXZpb3VzIGNhbGwFA25pbAIAAwkAAAIFAmhRBQJoUQQCZU8JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYVUBAgtpbnZhbGlkIGtMcAQCaFIJAQJlQwMAAAAAAAAEAmhTCAUCaFICXzEEAmV0CAUCaFICXzIEAmVGAwkBAiE9AgUCZU8FAmV0BQJoUwkBAmFTAQISbm90aGluZyB0byByZWZyZXNoCQCUCgIFAmVGCQCmAwEFAmV0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVWARxnZXRQb29sQ29uZmlnV3JhcHBlclJFQURPTkxZAAkAlAoCBQNuaWwJAQJiYwACZVYBHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkBAmFwCQCUCgIFA25pbAkBAmJMAQUCYXACZVYBGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkDAmNXAmNYAmRiBAJkawkBAmRhAwUCY1cFAmNYBQJkYgkAlAoCBQNuaWwJAMwIAgkApgMBCQCRAwIFAmRrAAAJAMwIAgkApgMBCQCRAwIFAmRrAAEJAMwIAgkApgMBCQCRAwIFAmRrAAIFA25pbAJlVgEUdG9YMThXcmFwcGVyUkVBRE9OTFkCAUUBRgkAlAoCBQNuaWwJAKYDAQkBAUQCBQFFBQFGAmVWARZmcm9tWDE4V3JhcHBlclJFQURPTkxZAgFJAUoJAJQKAgUDbmlsCQEBSAIJAKcDAQUBSQUBSgJlVgEeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZAgJiUAJiUQkAlAoCBQNuaWwJAKYDAQkBAmJPAgkApwMBBQJiUAkApwMBBQJiUQJlVgEjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAmRtAmRJAmRKAmRLAmRMAmRNAmFiAmROAmRPCQCUCgIFA25pbAkBAmRICQUCZG0FAmRJBQJkSgUCZEsFAmRMBQJkTQUCYWIFAmROBQJkTwJlVgEjZXN0aW1hdGVHZXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkEAmRtAmRuAmRvAmFiBAJkWQkBAmRsBAUCZG0FAmRuBQJkbwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYWIJAJQKAgUDbmlsCQCcCgoIBQJkWQJfMQgFAmRZAl8yCAUCZFkCXzMIBQJkWQJfNAgFAmRZAl81CAUCZFkCXzYIBQJkWQJfNwkApgMBCAUCZFkCXzgIBQJkWQJfOQgFAmRZA18xMAJlVgENc3RhdHNSRUFET05MWQAEAmRjCQECYmMABAJkcAkA2QQBCQCRAwIFAmRjBQFxBAJoVAkAkQMCBQJkYwUBcgQCaFUJAJEDAgUCZGMFAXMEAmRSCQCRAwIFAmRjBQF2BAJkUwkAkQMCBQJkYwUBdwQCZGQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdAQCZGUJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkYwUBdQQCaFYICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHAJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHACDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoVwkBAmJMAQUCaFQEAmhYCQECYkwBBQJoVQQCaFkDCQAAAgUCaFYAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECZGEDBQJoVwUCaFgFAmhWBAJkegAABAJoWgkBAUgCCQCRAwIFAmhZAAEFAWIEAmlhCQEBSAIJAJEDAgUCaFkAAgUBYgQCaWIJAQV2YWx1ZQEJAJoIAgUCYVYJAQJhRAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmhXCQDMCAIJAKQDAQUCaFgJAMwIAgkApAMBBQJoVgkAzAgCCQCkAwEFAmR6CQDMCAIJAKQDAQUCaFoJAMwIAgkApAMBBQJpYQkAzAgCCQCkAwEFAmliBQNuaWwFAWoCZVYBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJkSgQCZGMJAQJiYwAEAmRwCQDZBAEJAJEDAgUCZGMFAXEEAmRQCQCRAwIFAmRjBQFyBAJkcQkA2QQBBQJkUAQCZFEJAJEDAgUCZGMFAXMEAmRyCQDZBAEFAmRRBAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF0BAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF1BAJkcwkAkQMCBQJkYwUBcAQCaFYICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHAJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHACDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJoVwkBAmJMAQUCZFAEAmhYCQECYkwBBQJkUQQCY1kJAQFEAgUCaFcFAmRkBAJjWgkBAUQCBQJoWAUCZGUEAmR5AwkAAAIFAmhWAAAFAWUJAQJiTwIFAmNaBQJjWQQCZFYJAQFEAgUCZEoFAmRkBAJkVwkAvAIDBQJkVgUCZHkFAWQEAmRMCQEBSAIFAmRXBQJkZQQCZmIJAQJkSAkCAACgwh4FAmRKBQJkcQUCZEwFAmRyAgAGBwQCZWcIBQJmYgJfMQQCaWMIBQJmYgJfMwQCZHUIBQJmYgJfNAQCZHcIBQJmYgJfNQQCZHQIBQJmYgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZWcJAMwIAgkApAMBCQEBSAIFAmR5BQFiCQDMCAIJAKQDAQUCZHUJAMwIAgkApAMBBQJkdwkAzAgCCQCkAwEFAmR0CQDMCAIFAmRzCQDMCAIJAKQDAQUCZEoJAMwIAgkApAMBBQJkTAUDbmlsBQFqAmVWAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJkTAQCZGMJAQJiYwAEAmRwCQDZBAEJAJEDAgUCZGMFAXEEAmRQCQCRAwIFAmRjBQFyBAJkcQkA2QQBBQJkUAQCZFEJAJEDAgUCZGMFAXMEAmRyCQDZBAEFAmRRBAJkZAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF0BAJkZQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRjBQF1BAJkcwkAkQMCBQJkYwUBcAQCaFYICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCZHAJAKwCAgkArAICAgZBc3NldCAJANgEAQUCZHACDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJpZAkBAmJMAQUCZFAEAmllCQECYkwBBQJkUQQCaWYJAQFEAgUCaWQFAmRkBAJpZwkBAUQCBQJpZQUCZGUEAmR5AwkAAAIFAmhWAAAFAWUJAQJiTwIFAmlnBQJpZgQCZFcJAQFEAgUCZEwFAmRlBAJkVgkAvAIDBQJkVwUBZAUCZHkEAmRKCQEBSAIFAmRWBQJkZAQCZmIJAQJkSAkCAACgwh4FAmRKBQJkcQUCZEwFAmRyAgAGBwQCZWcIBQJmYgJfMQQCaWMIBQJmYgJfMwQCZHUIBQJmYgJfNAQCZHcIBQJmYgJfNQQCZHQIBQJmYgJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZWcJAMwIAgkApAMBCQEBSAIFAmR5BQFiCQDMCAIJAKQDAQUCZHUJAMwIAgkApAMBBQJkdwkAzAgCCQCkAwEFAmR0CQDMCAIFAmRzCQDMCAIJAKQDAQUCZEoJAMwIAgkApAMBBQJkTAUDbmlsBQFqAmVWARNldmFsdWF0ZUdldFJFQURPTkxZAgJpaAJpaQQCZFkJAQJkbAQCAAUCaWgFAmlpBQR0aGlzBAJkRQgFAmRZAl8xBAJkRggFAmRZAl8yBAJkdQgFAmRZAl81BAJkdwgFAmRZAl82BAJkdAgFAmRZAl83BAJkeggFAmRZAl84BAJkcwkBDXBhcnNlSW50VmFsdWUBCAUCZFkCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJkRQkAzAgCCQCkAwEFAmRGCQDMCAIJAKQDAQUCZHUJAMwIAgkApAMBBQJkdwkAzAgCCQCkAwEFAmR0CQDMCAIJAKYDAQUCZHoJAMwIAgkApAMBBQJkcwUDbmlsBQFqAQJpagECaWsABAJpbAQCYlYJAQJnaAADCQABAgUCYlYCCkJ5dGVWZWN0b3IEAmdsBQJiVgUCZ2wDCQABAgUCYlYCBFVuaXQIBQJpag9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCYlYFAmlqAwkAAQIFAmJWAgVPcmRlcgQCZUsFAmJWBAJpbQkBAmJiAAQCaW4DCQECZUcACQCUCgIGAgAJAQJlSgEFAmVLBAJhSwgFAmluAl8xBAJhTAgFAmluAl8yBAJhTQkA9AMDCAUCZUsJYm9keUJ5dGVzCQCRAwIIBQJlSwZwcm9vZnMAAAgFAmVLD3NlbmRlclB1YmxpY0tleQQCYU4JAPQDAwgFAmVLCWJvZHlCeXRlcwkAkQMCCAUCZUsGcHJvb2ZzAAEFAmltAwMDBQJhSwUCYU0HBQJhTgcGCQECYUoEBQJhSwUCYUwFAmFNBQJhTgMJAAECBQJiVgIUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAmdpBQJiVgMJAPQDAwgFAmlqCWJvZHlCeXRlcwkAkQMCCAUCaWoGcHJvb2ZzAAAFAmlsBgQCaW8JAPYDAQkBBXZhbHVlAQgFAmdpBnNjcmlwdAQCaXAJANsEAQkBBXZhbHVlAQkAnQgCBQJhVgkBAmFGAAQCaXEJAPEHAQUEdGhpcwMJAAACBQJpcAUCaW8JAQIhPQIFAmlxBQJpbwcJAPQDAwgFAmlqCWJvZHlCeXRlcwkAkQMCCAUCaWoGcHJvb2ZzAAAFAmlsLmY3kQ==", "height": 2573341, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 7JshJnFQEFtsxtkEo5pHavSUzd6AXHtvnuJgDnqLJAUq Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let a = 8
5+
6+let b = 100000000
7+
8+let c = toBigInt(100000000)
9+
10+let d = toBigInt(1000000000000000000)
11+
12+let e = toBigInt(0)
13+
14+let f = toBigInt(0)
15+
16+let g = toBigInt(1)
17+
18+let h = toBigInt(2)
19+
20+let i = "WAVES"
21+
22+let j = "__"
23+
24+let k = 1
25+
26+let l = 2
27+
28+let m = 3
29+
30+let n = 4
31+
32+let o = 1
33+
34+let p = 2
35+
36+let q = 3
37+
38+let r = 4
39+
40+let s = 5
41+
42+let t = 6
43+
44+let u = 7
45+
46+let v = 8
47+
48+let w = 9
49+
50+let x = 10
51+
52+let y = 1
53+
54+let z = 2
55+
56+let A = 3
57+
58+let B = 1
59+
60+let C = 7
61+
62+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
63+
64+
65+func G (E,F) = fraction(E, d, F)
66+
67+
68+func H (I,J) = toInt(fraction(I, toBigInt(J), d))
69+
70+
71+func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
72+
73+
74+func M (N,O,P) = fraction(N, O, P)
75+
76+
77+func Q (I) = if ((0 > I))
78+ then -(I)
79+ else I
80+
81+
82+func R (I) = if ((e > I))
83+ then -(I)
84+ else I
85+
86+
87+func S () = "%s__swapContract"
88+
89+
90+func T () = "%s__factoryContract"
91+
92+
93+func U () = "%s__managerPublicKey"
94+
95+
96+func V () = "%s__pendingManagerPublicKey"
97+
98+
99+func W () = "%s%s__price__last"
100+
101+
102+func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103+
104+
105+func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106+
107+
108+func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109+
110+
111+func ae () = "%s__amountAsset"
112+
113+
114+func af () = "%s__priceAsset"
115+
116+
117+let ag = "%s__fee"
118+
119+let ah = fraction(10, b, 10000)
120+
121+let ai = valueOrElse(getInteger(this, ag), ah)
122+
123+let aj = makeString(["%s", "kLp"], j)
124+
125+let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126+
127+let al = makeString(["%s", "refreshKLpDelay"], j)
128+
129+let am = 30
130+
131+let an = valueOrElse(getInteger(this, al), am)
132+
133+func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134+
135+
136+func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137+
138+
139+func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140+
141+
142+func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143+
144+
145+func at () = "%s__factoryConfig"
146+
147+
148+func au () = "%s%s__matcher__publicKey"
149+
150+
151+func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152+
153+
154+func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155+
156+
157+func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158+
159+
160+func aC () = "%s__shutdown"
161+
162+
163+func aD (aE) = ("%s%s__poolWeight__" + aE)
164+
165+
166+func aF () = "%s__allowedLpScriptHash"
167+
168+
169+let aG = "%s__feeCollectorAddress"
170+
171+func aH (aI) = ("%s%s__skipOrderValidation__" + aI)
172+
173+
174+func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175+
176+
177+func aO (aP,aQ) = valueOrErrorMessage(getString(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
178+
179+
180+func aR (aP,aQ) = valueOrErrorMessage(getInteger(aP, aQ), makeString(["mandatory ", toString(aP), ".", aQ, " is not defined"], ""))
181+
182+
183+func aS (aT) = throw(makeString(["lp.ride:", aT], " "))
184+
185+
186+func aU (aT) = makeString(["lp.ride:", aT], " ")
187+
188+
189+let aV = addressFromStringValue(aO(this, T()))
190+
191+let aW = addressFromStringValue(aO(aV, aG))
192+
193+let aX = {
194+ let aY = invoke(aV, "getInFeeREADONLY", [toString(this)], nil)
195+ if ($isInstanceOf(aY, "Int"))
196+ then aY
197+ else throw(($getType(aY) + " couldn't be cast to Int"))
198+ }
199+
200+let aZ = {
201+ let aY = invoke(aV, "getOutFeeREADONLY", [toString(this)], nil)
202+ if ($isInstanceOf(aY, "Int"))
203+ then aY
204+ else throw(($getType(aY) + " couldn't be cast to Int"))
205+ }
206+
207+func ba () = valueOrElse(getBoolean(aV, aC()), false)
208+
209+
210+func bb () = fromBase58String(aO(aV, au()))
211+
212+
213+func bc () = {
214+ let bd = aO(this, ae())
215+ let be = aO(this, af())
216+ let az = aR(aV, aA(be))
217+ let ay = aR(aV, aA(bd))
218+ split(aO(aV, ax(toString(ay), toString(az))), j)
219+ }
220+
221+
222+func bf (bg) = if ((bg == i))
223+ then unit
224+ else fromBase58String(bg)
225+
226+
227+func bh (bg) = if ((bg == unit))
228+ then i
229+ else toBase58String(value(bg))
230+
231+
232+func bi (bj) = $Tuple7(addressFromStringValue(bj[o]), parseIntValue(bj[p]), fromBase58String(bj[q]), bf(bj[r]), bf(bj[s]), parseIntValue(bj[t]), parseIntValue(bj[u]))
233+
234+
235+let bk = bi(bc())
236+
237+let bl = bk
238+
239+let bm = bl._1
240+
241+let bn = bl._2
242+
243+let bo = bl._3
244+
245+let bp = bl._4
246+
247+let bq = bl._5
248+
249+let br = bl._6
250+
251+let bs = bl._7
252+
253+func bt () = split(aO(aV, at()), j)
254+
255+
256+let bu = valueOrErrorMessage(addressFromString(bt()[B]), "incorrect staking address")
257+
258+let bv = valueOrErrorMessage(addressFromString(bt()[C]), "incorrect staking address")
259+
260+func bw (bx,by,bz,bA,bB,bC,bD,bE,bF,bG) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE), toString(bF), toString(bG)], j)
261+
262+
263+func bH (bI,bJ,bK,bA,bD,bE) = makeString(["%d%d%d%d%d%d", toString(bI), toString(bJ), toString(bK), toString(bA), toString(bD), toString(bE)], j)
264+
265+
266+func bL (ap) = {
267+ let bM = if ((ap == "WAVES"))
268+ then wavesBalance(this).available
269+ else assetBalance(this, fromBase58String(ap))
270+ let bN = ((bM + ar(ap)) - as(ap))
271+ max([0, bN])
272+ }
273+
274+
275+func bO (bP,bQ) = fraction(bP, d, bQ)
276+
277+
278+func bR (bP,bQ,L) = fraction(bP, d, bQ, L)
279+
280+
281+func bS (bT) = {
282+ let bU = invoke(bT, "getRate", nil, nil)
283+ if ((bU == bU))
284+ then {
285+ let bV = bU
286+ if ($isInstanceOf(bV, "Int"))
287+ then {
288+ let bW = bV
289+ bW
290+ }
291+ else aS("proxy.getRate() unexpected value")
292+ }
293+ else throw("Strict value is not equal to itself.")
294+ }
295+
296+
297+func bX (ap,bY,bZ,bT) = {
298+ let ca = ar(ap)
299+ if ((ca == ca))
300+ then {
301+ let cb = as(bZ)
302+ if ((cb == cb))
303+ then {
304+ let cc = bf(ap)
305+ if ((bY > 0))
306+ then {
307+ let cd = invoke(bT, "deposit", nil, [AttachedPayment(cc, bY)])
308+ if ((cd == cd))
309+ then {
310+ let bV = cd
311+ if ($isInstanceOf(bV, "Int"))
312+ then {
313+ let ce = bV
314+ let cf = (ca + bY)
315+ let cg = (cb + ce)
316+[IntegerEntry(ao(ap), cf), IntegerEntry(aq(bZ), cg)]
317+ }
318+ else nil
319+ }
320+ else throw("Strict value is not equal to itself.")
321+ }
322+ else nil
323+ }
324+ else throw("Strict value is not equal to itself.")
325+ }
326+ else throw("Strict value is not equal to itself.")
327+ }
328+
329+
330+func ch (ap,bY,bZ,bT,ci,cj) = {
331+ let ca = ar(ap)
332+ if ((ca == ca))
333+ then {
334+ let cb = as(bZ)
335+ if ((cb == cb))
336+ then {
337+ let ck = bS(bT)
338+ if ((ck == ck))
339+ then {
340+ let cl = fraction(ci, ca, cb)
341+ let cm = bf(bZ)
342+ let cn = fraction(ci, bY, cl)
343+ let co = fraction(ci, bY, ck)
344+ let cp = max([0, (cn - co)])
345+ if ((co > 0))
346+ then {
347+ let cq = invoke(bT, "withdraw", nil, [AttachedPayment(cm, co)])
348+ if ((cq == cq))
349+ then {
350+ let bV = cq
351+ if ($isInstanceOf(bV, "Int"))
352+ then {
353+ let cr = bV
354+ let cf = (ca - cr)
355+ let cg = ((cb - co) - cp)
356+[IntegerEntry(ao(ap), cf), IntegerEntry(aq(bZ), cg), ScriptTransfer(cj, cp, bf(bZ))]
357+ }
358+ else nil
359+ }
360+ else throw("Strict value is not equal to itself.")
361+ }
362+ else nil
363+ }
364+ else throw("Strict value is not equal to itself.")
365+ }
366+ else throw("Strict value is not equal to itself.")
367+ }
368+ else throw("Strict value is not equal to itself.")
369+ }
370+
371+
372+func cs (ap) = {
373+ let bV = invoke(aV, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
374+ if ($isInstanceOf(bV, "(Boolean, Int, Int, String, String, Int, String)"))
375+ then {
376+ let ct = bV
377+ ct
378+ }
379+ else aS((("[" + ap) + "] getLeaseProxyConfig() error"))
380+ }
381+
382+
383+func cu (cv,ap,bZ,cw,bT,ci,cj) = {
384+ let ca = ar(ap)
385+ if ((ca == ca))
386+ then {
387+ let cb = as(bZ)
388+ if ((cb == cb))
389+ then {
390+ let cx = max([0, (bL(ap) - cw)])
391+ let cy = fraction(cv, cx, 100)
392+ let cz = (ca - cy)
393+ if ((cz == 0))
394+ then nil
395+ else if ((0 > cz))
396+ then {
397+ let cA = -(cz)
398+ bX(ap, cA, bZ, bT)
399+ }
400+ else {
401+ let cB = cz
402+ ch(ap, cB, bZ, bT, ci, cj)
403+ }
404+ }
405+ else throw("Strict value is not equal to itself.")
406+ }
407+ else throw("Strict value is not equal to itself.")
408+ }
409+
410+
411+func cC (ap) = {
412+ let cD = cs(ap)
413+ let cE = cD._1
414+ let cF = cD._2
415+ let cw = cD._3
416+ let cG = cD._4
417+ let cH = cD._5
418+ let ci = cD._6
419+ let cI = cD._7
420+ if (cE)
421+ then cu(cF, ap, cH, cw, addressFromStringValue(cG), ci, addressFromStringValue(cI))
422+ else nil
423+ }
424+
425+
426+func cJ (ap,cK) = {
427+ let cL = cs(ap)
428+ let cE = cL._1
429+ let cF = cL._2
430+ let cw = cL._3
431+ let cG = cL._4
432+ let cH = cL._5
433+ let ci = cL._6
434+ let cI = cL._7
435+ if (cE)
436+ then {
437+ let cM = max([0, ((bL(ap) - cK) - cw)])
438+ if ((cM == cM))
439+ then {
440+ let cf = fraction(cF, cM, 100)
441+ if ((cf == cf))
442+ then {
443+ let cN = (ar(ap) - cf)
444+ if ((cN == cN))
445+ then if ((0 > cN))
446+ then bX(ap, -(cN), cH, addressFromStringValue(cG))
447+ else ch(ap, cN, cH, addressFromStringValue(cG), ci, addressFromStringValue(cI))
448+ else throw("Strict value is not equal to itself.")
449+ }
450+ else throw("Strict value is not equal to itself.")
451+ }
452+ else throw("Strict value is not equal to itself.")
453+ }
454+ else nil
455+ }
456+
457+
458+func cO (cP,cQ) = {
459+ let cR = cJ(aO(this, ae()), cP)
460+ let cS = cJ(aO(this, af()), cQ)
461+ (cR ++ cS)
462+ }
463+
464+
465+func cT (cU,cV,cW,cX) = {
466+ let cY = D(cW, cU)
467+ let cZ = D(cX, cV)
468+ bO(cZ, cY)
469+ }
470+
471+
472+func da (cW,cX,db) = {
473+ let dc = bc()
474+ let dd = parseIntValue(dc[t])
475+ let de = parseIntValue(dc[u])
476+ let df = cT(dd, de, cW, cX)
477+ let bQ = D(cW, dd)
478+ let bP = D(cX, de)
479+ let dg = D(db, b)
480+ let dh = bO(bQ, dg)
481+ let di = bO(bP, dg)
482+[df, dh, di]
483+ }
484+
485+
486+func dj (cW,cX,db) = {
487+ let dk = da(cW, cX, db)
488+[H(dk[0], b), H(dk[1], b), H(dk[2], b)]
489+ }
490+
491+
492+func dl (dm,dn,do,ab) = {
493+ let dc = bc()
494+ let dp = dc[q]
495+ let dq = dc[r]
496+ let dr = dc[s]
497+ let cU = parseIntValue(dc[t])
498+ let cV = parseIntValue(dc[u])
499+ let ds = dc[p]
500+ let dt = valueOrErrorMessage(assetInfo(fromBase58String(dp)), (("Asset " + dp) + " doesn't exist")).quantity
501+ if ((dp != dn))
502+ then throw("Invalid asset passed.")
503+ else {
504+ let du = bL(dq)
505+ let dv = D(du, cU)
506+ let dw = bL(dr)
507+ let dx = D(dw, cV)
508+ let dy = bO(dx, dv)
509+ let dz = H(dy, b)
510+ let dA = D(do, b)
511+ let dB = D(dt, b)
512+ let dC = fraction(dv, dA, dB)
513+ let dD = fraction(dx, dA, dB)
514+ let dE = K(dC, cU, FLOOR)
515+ let dF = K(dD, cV, FLOOR)
516+ let dG = if ((dm == ""))
517+ then nil
518+ else [ScriptTransfer(ab, dE, if ((dq == "WAVES"))
519+ then unit
520+ else fromBase58String(dq)), ScriptTransfer(ab, dF, if ((dr == "WAVES"))
521+ then unit
522+ else fromBase58String(dr)), StringEntry(ad(toString(ab), dm), bH(dE, dF, do, dz, height, lastBlock.timestamp)), IntegerEntry(W(), dz), IntegerEntry(X(height, lastBlock.timestamp), dz)]
523+ $Tuple10(dE, dF, dq, dr, du, dw, dt, dy, ds, dG)
524+ }
525+ }
526+
527+
528+func dH (dm,dI,dJ,dK,dL,dM,ab,dN,dO) = {
529+ let dc = bc()
530+ let dp = fromBase58String(dc[q])
531+ let dP = dc[r]
532+ let dQ = dc[s]
533+ let dR = dc[v]
534+ let dS = dc[w]
535+ let dd = parseIntValue(dc[t])
536+ let de = parseIntValue(dc[u])
537+ let ds = dc[p]
538+ let dt = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
539+ let dT = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
540+ let dU = toBase58String(valueOrElse(dM, fromBase58String("WAVES")))
541+ if (if ((dP != dT))
542+ then true
543+ else (dQ != dU))
544+ then throw("Invalid amt or price asset passed.")
545+ else {
546+ let du = if (dN)
547+ then bL(dP)
548+ else (bL(dP) - dJ)
549+ let dw = if (dN)
550+ then bL(dQ)
551+ else (bL(dQ) - dL)
552+ let dV = D(dJ, dd)
553+ let dW = D(dL, de)
554+ let dX = bO(dW, dV)
555+ let dv = D(du, dd)
556+ let dx = D(dw, de)
557+ let dY = if ((dt == 0))
558+ then {
559+ let dy = e
560+ let dZ = e
561+ let dg = pow((dV * dW), 0, toBigInt(5), 1, 0, DOWN)
562+ $Tuple5(H(dg, b), H(dV, dd), H(dW, de), bO((dx + dW), (dv + dV)), dZ)
563+ }
564+ else {
565+ let dy = bO(dx, dv)
566+ let dZ = fraction(R((dy - dX)), d, dy)
567+ let ea = D(dI, b)
568+ if (if ((dy != e))
569+ then (dZ > ea)
570+ else false)
571+ then throw(((("Price slippage " + toString(dZ)) + " exceeded the passed limit of ") + toString(ea)))
572+ else {
573+ let dB = D(dt, b)
574+ let eb = fraction(dV, bR(dx, dv, CEILING), d, CEILING)
575+ let ec = fraction(dW, d, bR(dx, dv, FLOOR), CEILING)
576+ let ed = if ((eb > dW))
577+ then $Tuple2(ec, dW)
578+ else $Tuple2(dV, eb)
579+ let ee = ed._1
580+ let ef = ed._2
581+ let dg = fraction(dB, ef, dx, FLOOR)
582+ $Tuple5(K(dg, b, FLOOR), K(ee, dd, CEILING), K(ef, de, CEILING), dy, dZ)
583+ }
584+ }
585+ let eg = dY._1
586+ let eh = dY._2
587+ let ei = dY._3
588+ let dz = H(dY._4, b)
589+ let ej = H(dY._5, b)
590+ if ((0 >= eg))
591+ then throw("Invalid calculations. LP calculated is less than zero.")
592+ else {
593+ let ek = if (!(dO))
594+ then 0
595+ else eg
596+ let el = (dJ - eh)
597+ let em = (dL - ei)
598+ let en = [IntegerEntry(W(), dz), IntegerEntry(X(height, lastBlock.timestamp), dz), StringEntry(aa(ab, dm), bw(eh, ei, ek, dz, dI, ej, height, lastBlock.timestamp, el, em))]
599+ $Tuple13(eg, ek, dz, du, dw, dt, dp, ds, en, el, em, dK, dM)
600+ }
601+ }
602+ }
603+
604+
605+func eo (ep,eq,dt) = {
606+ let er = G(ep, toBigInt(br))
607+ let es = G(eq, toBigInt(bs))
608+ let et = fraction(pow((er * es), 0, toBigInt(5), 1, 18, DOWN), g, dt)
609+ if ((dt == f))
610+ then f
611+ else et
612+ }
613+
614+
615+func eu (ev,ew,ex) = {
616+ let ey = (toBigInt(bL(bh(bp))) - ev)
617+ let ez = (toBigInt(bL(bh(bq))) - ew)
618+ let eA = (toBigInt(value(assetInfo(bo)).quantity) - ex)
619+ let eB = eo(ey, ez, eA)
620+ eB
621+ }
622+
623+
624+func eC (eD,eE,ex) = {
625+ let ey = (bL(bh(bp)) + eD)
626+ let ez = (bL(bh(bq)) + eE)
627+ let eA = (value(assetInfo(bo)).quantity + ex)
628+ let et = eo(toBigInt(ey), toBigInt(ez), toBigInt(eA))
629+ let eF = [IntegerEntry(ak, height), StringEntry(aj, toString(et))]
630+ $Tuple2(eF, et)
631+ }
632+
633+
634+func eG () = valueOrElse(getBoolean(aV, aH(toString(this))), false)
635+
636+
637+func eH (eI,et) = if ((et >= eI))
638+ then true
639+ else aS(makeString(["updated KLp lower than current KLp", toString(eI), toString(et)], " "))
640+
641+
642+func eJ (eK) = {
643+ let ey = bL(bh(bp))
644+ let ez = bL(bh(bq))
645+ let eL = eK.amount
646+ let eM = fraction(eK.amount, eK.price, b, FLOOR)
647+ let eN = if ((eK.orderType == Buy))
648+ then $Tuple2(eL, -(eM))
649+ else $Tuple2(-(eL), eM)
650+ let eD = eN._1
651+ let eE = eN._2
652+ if (if (if (ba())
653+ then true
654+ else (bn == m))
655+ then true
656+ else (bn == n))
657+ then throw("Exchange operations disabled")
658+ else if (if ((eK.assetPair.amountAsset != bp))
659+ then true
660+ else (eK.assetPair.priceAsset != bq))
661+ then throw("Wrong order assets.")
662+ else {
663+ let eO = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
664+ let eP = eC(eD, eE, 0)
665+ let eQ = eP._1
666+ let eR = eP._2
667+ let eS = (eR >= eO)
668+ let eT = makeString(["kLp=", toString(eO), " kLpNew=", toString(eR), " amountAssetBalance=", toString(ey), " priceAssetBalance=", toString(ez), " amountAssetBalanceDelta=", toString(eD), " priceAssetBalanceDelta=", toString(eE), " height=", toString(height)], "")
669+ $Tuple2(eS, eT)
670+ }
671+ }
672+
673+
674+func eU (eV) = if ((size(eV.payments) != 1))
675+ then throw("exactly 1 payment is expected")
676+ else {
677+ let eW = value(eV.payments[0])
678+ let dn = value(eW.assetId)
679+ let eX = eW.amount
680+ let dY = dl(toBase58String(eV.transactionId), toBase58String(dn), eX, eV.caller)
681+ let dE = dY._1
682+ let dF = dY._2
683+ let ds = parseIntValue(dY._9)
684+ let dG = dY._10
685+ if (if (ba())
686+ then true
687+ else (ds == n))
688+ then throw(("Get operation is blocked by admin. Status = " + toString(ds)))
689+ else $Tuple5(dE, dF, eX, dn, dG)
690+ }
691+
692+
693+func eY (eV,dI,dO) = if ((size(eV.payments) != 2))
694+ then throw("exactly 2 payments are expected")
695+ else {
696+ let eZ = value(eV.payments[0])
697+ let fa = value(eV.payments[1])
698+ let fb = dH(toBase58String(eV.transactionId), dI, eZ.amount, eZ.assetId, fa.amount, fa.assetId, toString(eV.caller), false, dO)
699+ let ds = parseIntValue(fb._8)
700+ if (if (if (ba())
701+ then true
702+ else (ds == l))
703+ then true
704+ else (ds == n))
705+ then throw(("Put operation is blocked by admin. Status = " + toString(ds)))
706+ else fb
707+ }
708+
709+
710+func fc (bY) = {
711+ let fd = invoke(aV, "emit", [bY], nil)
712+ if ((fd == fd))
713+ then {
714+ let fe = {
715+ let bV = fd
716+ if ($isInstanceOf(bV, "Address"))
717+ then {
718+ let ff = bV
719+ invoke(ff, "emit", [bY], nil)
720+ }
721+ else unit
722+ }
723+ if ((fe == fe))
724+ then bY
725+ else throw("Strict value is not equal to itself.")
726+ }
727+ else throw("Strict value is not equal to itself.")
728+ }
729+
730+
731+func fg (bY,ai) = {
732+ let fh = if ((ai == 0))
733+ then 0
734+ else fraction(bY, ai, b)
735+ $Tuple2((bY - fh), fh)
736+ }
737+
738+
739+func fi (fj,fk,ab,ac) = {
740+ let fl = (ac == unit)
741+ let fm = bL(bh(bp))
742+ let fn = bL(bh(bq))
743+ let fo = if ((fk == bp))
744+ then true
745+ else if ((fk == bq))
746+ then false
747+ else aS("invalid asset")
748+ let fp = if (fl)
749+ then $Tuple2(fm, fn)
750+ else if (fo)
751+ then $Tuple2((fm - fj), fn)
752+ else $Tuple2(fm, (fn - fj))
753+ let fq = fp._1
754+ let fr = fp._2
755+ let fs = if (fo)
756+ then $Tuple2(fj, 0)
757+ else $Tuple2(0, fj)
758+ let ft = fs._1
759+ let fu = fs._2
760+ let eL = fg(ft, aX)._1
761+ let eM = fg(fu, aX)._1
762+ let fv = fg(fj, aX)
763+ let fw = fv._1
764+ let fh = fv._2
765+ let fx = (fq + eL)
766+ let fy = (fr + eM)
767+ let fz = bO(D(fy, bs), D(fx, br))
768+ let fA = H(fz, b)
769+ let fB = if (fo)
770+ then fq
771+ else fr
772+ let fC = toBigInt(fB)
773+ let fD = toBigInt(valueOrErrorMessage(assetInfo(bo), (("asset " + toBase58String(bo)) + " doesn't exist")).quantity)
774+ let fE = if ((fD > f))
775+ then true
776+ else aS("initial deposit requires all coins")
777+ if ((fE == fE))
778+ then {
779+ let fF = toBigInt(fw)
780+ let fG = max([0, toInt(((fD * (sqrtBigInt((d + ((fF * d) / fC)), 18, 18, DOWN) - d)) / d))])
781+ let en = if (fl)
782+ then nil
783+ else [IntegerEntry(W(), fA), IntegerEntry(X(height, lastBlock.timestamp), fA), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bw(ft, fu, fG, fA, 0, 0, height, lastBlock.timestamp, 0, 0))]
784+ let fH = bO(D(fr, bs), D(fq, br))
785+ let fI = H(fH, b)
786+ let fJ = {
787+ let fK = if (fo)
788+ then $Tuple2(ft, fq)
789+ else $Tuple2(fu, fr)
790+ let bY = fK._1
791+ let fL = fK._2
792+ let fM = toInt(fraction(fD, toBigInt((bY / 2)), toBigInt(fL)))
793+ fraction((fG - fM), b, fM)
794+ }
795+ $Tuple5(fG, en, fh, fJ, fo)
796+ }
797+ else throw("Strict value is not equal to itself.")
798+ }
799+
800+
801+func fN (fO,fw,fk,ab,ac) = {
802+ let fl = (ac == unit)
803+ let dc = bc()
804+ let dd = parseIntValue(dc[t])
805+ let de = parseIntValue(dc[u])
806+ let fP = [if ((fk == bo))
807+ then true
808+ else aS("invalid lp asset")]
809+ if ((fP == fP))
810+ then {
811+ let fQ = if ((fO == bp))
812+ then true
813+ else if ((fO == bq))
814+ then false
815+ else aS("invalid asset")
816+ let fR = if (fQ)
817+ then toBigInt(bL(bh(bp)))
818+ else toBigInt(bL(bh(bq)))
819+ let fS = if (fQ)
820+ then dd
821+ else de
822+ let fT = bL(bh(bp))
823+ let fU = bL(bh(bq))
824+ let fV = if (fQ)
825+ then fT
826+ else fU
827+ let fW = toBigInt(fV)
828+ let fD = toBigInt(valueOrErrorMessage(assetInfo(bo), (("asset " + toBase58String(bo)) + " doesn't exist")).quantity)
829+ let fX = toBigInt(fw)
830+ let fY = max([0, toInt(((fR * (d - pow((d - ((fX * d) / fD)), 18, h, 0, 18, DOWN))) / d))])
831+ let fZ = fg(fY, aZ)
832+ let ga = fZ._1
833+ let fh = fZ._2
834+ let gb = if (fQ)
835+ then $Tuple4(ga, 0, (fT - fY), fU)
836+ else $Tuple4(0, ga, fT, (fU - fY))
837+ let gc = gb._1
838+ let gd = gb._2
839+ let ge = gb._3
840+ let gf = gb._4
841+ let fz = bO(D(gf, bs), D(ge, br))
842+ let fA = H(fz, b)
843+ let en = if (fl)
844+ then nil
845+ else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bH(gc, gd, fw, fA, height, lastBlock.timestamp)), IntegerEntry(W(), fA), IntegerEntry(X(height, lastBlock.timestamp), fA)]
846+ let fH = bO(D(fU, bs), D(fT, br))
847+ let fI = H(fH, b)
848+ let fJ = {
849+ let gg = (toInt(fraction(fR, fX, fD)) * 2)
850+ fraction((ga - gg), b, gg)
851+ }
852+ $Tuple5(ga, en, fh, fJ, fQ)
853+ }
854+ else throw("Strict value is not equal to itself.")
855+ }
856+
857+
858+func gh () = {
859+ let bV = getString(U())
860+ if ($isInstanceOf(bV, "String"))
861+ then {
862+ let gi = bV
863+ fromBase58String(gi)
864+ }
865+ else if ($isInstanceOf(bV, "Unit"))
866+ then unit
867+ else throw("Match error")
868+ }
869+
870+
871+func gj () = {
872+ let bV = getString(V())
873+ if ($isInstanceOf(bV, "String"))
874+ then {
875+ let gi = bV
876+ fromBase58String(gi)
877+ }
878+ else if ($isInstanceOf(bV, "Unit"))
879+ then unit
880+ else throw("Match error")
881+ }
882+
883+
884+func gk (eV) = {
885+ let bV = gh()
886+ if ($isInstanceOf(bV, "ByteVector"))
887+ then {
888+ let gl = bV
889+ (eV.callerPublicKey == gl)
890+ }
891+ else if ($isInstanceOf(bV, "Unit"))
892+ then (eV.caller == this)
893+ else throw("Match error")
894+ }
895+
896+
897+func gm (eV) = {
898+ let gn = throw("Permission denied")
899+ let bV = gh()
900+ if ($isInstanceOf(bV, "ByteVector"))
901+ then {
902+ let gl = bV
903+ if ((eV.callerPublicKey == gl))
904+ then true
905+ else gn
906+ }
907+ else if ($isInstanceOf(bV, "Unit"))
908+ then if ((eV.caller == this))
909+ then true
910+ else gn
911+ else throw("Match error")
912+ }
913+
914+
915+@Callable(eV)
916+func rebalance () = (cC(aO(this, ae())) ++ cC(aO(this, af())))
917+
918+
919+
920+@Callable(eV)
921+func calculateAmountOutForSwapREADONLY (go,gp,gq) = {
922+ let gr = if ((gp == false))
923+ then {
924+ let gs = aO(this, af())
925+ let gt = aO(this, ae())
926+ $Tuple2(gs, gt)
927+ }
928+ else {
929+ let gs = aO(this, ae())
930+ let gt = aO(this, af())
931+ $Tuple2(gs, gt)
932+ }
933+ let gs = gr._1
934+ let gt = gr._2
935+ let gu = bL(gt)
936+ let gv = bL(gs)
937+ let gw = fraction(gv, go, (gu + go))
938+ let gx = (toBigInt(gu) * toBigInt(gv))
939+ let gy = (((toBigInt(bL(gt)) + toBigInt(go)) + toBigInt(gq)) * (toBigInt(bL(gs)) - toBigInt(gw)))
940+ let gz = if ((gy >= gx))
941+ then true
942+ else throw("new K is fewer error")
943+ if ((gz == gz))
944+ then $Tuple2(nil, gw)
945+ else throw("Strict value is not equal to itself.")
946+ }
947+
948+
949+
950+@Callable(eV)
951+func calculateAmountOutForSwapAndSendTokens (go,gp,gA,gB,gq) = {
952+ let gC = {
953+ let aY = invoke(aV, "getSwapContractREADONLY", nil, nil)
954+ if ($isInstanceOf(aY, "String"))
955+ then aY
956+ else throw(($getType(aY) + " couldn't be cast to String"))
957+ }
958+ let fP = [if ((value(eV.payments[0]).amount >= go))
959+ then true
960+ else aS("Wrong amount"), if ((eV.caller == addressFromStringValue(gC)))
961+ then true
962+ else aS("Permission denied")]
963+ if ((fP == fP))
964+ then {
965+ let eW = value(eV.payments[0])
966+ let gt = bh(eW.assetId)
967+ let gs = if ((gp == false))
968+ then aO(this, af())
969+ else aO(this, ae())
970+ let gu = (bL(gt) - value(eV.payments[0]).amount)
971+ let gv = bL(gs)
972+ let gw = fraction(gv, go, (gu + go))
973+ let gx = (toBigInt(gu) * toBigInt(gv))
974+ let gy = ((toBigInt(bL(gt)) + toBigInt(gq)) * (toBigInt(bL(gs)) - toBigInt(gw)))
975+ let gz = if ((gy >= gx))
976+ then true
977+ else throw("new K is fewer error")
978+ if ((gz == gz))
979+ then {
980+ let gD = if ((gw >= gA))
981+ then true
982+ else throw("Exchange result is fewer coins than expected")
983+ if ((gD == gD))
984+ then {
985+ let gE = cC(gt)
986+ if ((gE == gE))
987+ then {
988+ let gF = cJ(gs, gw)
989+ if ((gF == gF))
990+ then $Tuple2(((gF ++ gE) ++ [ScriptTransfer(addressFromStringValue(gB), gw, bf(gs))]), gw)
991+ else throw("Strict value is not equal to itself.")
992+ }
993+ else throw("Strict value is not equal to itself.")
994+ }
995+ else throw("Strict value is not equal to itself.")
996+ }
997+ else throw("Strict value is not equal to itself.")
998+ }
999+ else throw("Strict value is not equal to itself.")
1000+ }
1001+
1002+
1003+
1004+@Callable(eV)
1005+func setManager (gG) = {
1006+ let gH = gm(eV)
1007+ if ((gH == gH))
1008+ then {
1009+ let gI = fromBase58String(gG)
1010+ if ((gI == gI))
1011+ then [StringEntry(V(), gG)]
1012+ else throw("Strict value is not equal to itself.")
1013+ }
1014+ else throw("Strict value is not equal to itself.")
1015+ }
1016+
1017+
1018+
1019+@Callable(eV)
1020+func confirmManager () = {
1021+ let gJ = gj()
1022+ let gK = if (isDefined(gJ))
1023+ then true
1024+ else throw("No pending manager")
1025+ if ((gK == gK))
1026+ then {
1027+ let gL = if ((eV.callerPublicKey == value(gJ)))
1028+ then true
1029+ else throw("You are not pending manager")
1030+ if ((gL == gL))
1031+ then [StringEntry(U(), toBase58String(value(gJ))), DeleteEntry(V())]
1032+ else throw("Strict value is not equal to itself.")
1033+ }
1034+ else throw("Strict value is not equal to itself.")
1035+ }
1036+
1037+
1038+
1039+@Callable(eV)
1040+func put (dI,gM) = if ((0 > dI))
1041+ then throw("Invalid slippageTolerance passed")
1042+ else {
1043+ let fb = eY(eV, dI, true)
1044+ let ek = fb._2
1045+ let dp = fb._7
1046+ let dG = fb._9
1047+ let el = fb._10
1048+ let em = fb._11
1049+ let gN = fb._12
1050+ let gO = fb._13
1051+ let eZ = toBigInt(value(eV.payments[0]).amount)
1052+ let fa = toBigInt(value(eV.payments[1]).amount)
1053+ let eB = eu(eZ, fa, toBigInt(0))
1054+ if ((eB == eB))
1055+ then {
1056+ let fd = invoke(aV, "emit", [ek], nil)
1057+ if ((fd == fd))
1058+ then {
1059+ let fe = {
1060+ let bV = fd
1061+ if ($isInstanceOf(bV, "Address"))
1062+ then {
1063+ let ff = bV
1064+ invoke(ff, "emit", [ek], nil)
1065+ }
1066+ else unit
1067+ }
1068+ if ((fe == fe))
1069+ then {
1070+ let gP = if ((el > 0))
1071+ then invoke(bv, "put", nil, [AttachedPayment(gN, el)])
1072+ else nil
1073+ if ((gP == gP))
1074+ then {
1075+ let gQ = if ((em > 0))
1076+ then invoke(bv, "put", nil, [AttachedPayment(gO, em)])
1077+ else nil
1078+ if ((gQ == gQ))
1079+ then {
1080+ let gR = if (gM)
1081+ then {
1082+ let gS = invoke(bu, "stake", nil, [AttachedPayment(dp, ek)])
1083+ if ((gS == gS))
1084+ then nil
1085+ else throw("Strict value is not equal to itself.")
1086+ }
1087+ else [ScriptTransfer(eV.caller, ek, dp)]
1088+ let gT = eC(0, 0, 0)
1089+ if ((gT == gT))
1090+ then {
1091+ let et = gT._2
1092+ let gU = gT._1
1093+ let gV = eH(eB, et)
1094+ if ((gV == gV))
1095+ then {
1096+ let gW = invoke(this, "rebalance", nil, nil)
1097+ if ((gW == gW))
1098+ then ((dG ++ gR) ++ gU)
1099+ else throw("Strict value is not equal to itself.")
1100+ }
1101+ else throw("Strict value is not equal to itself.")
1102+ }
1103+ else throw("Strict value is not equal to itself.")
1104+ }
1105+ else throw("Strict value is not equal to itself.")
1106+ }
1107+ else throw("Strict value is not equal to itself.")
1108+ }
1109+ else throw("Strict value is not equal to itself.")
1110+ }
1111+ else throw("Strict value is not equal to itself.")
1112+ }
1113+ else throw("Strict value is not equal to itself.")
1114+ }
1115+
1116+
1117+
1118+@Callable(eV)
1119+func putForFree (gX) = if ((0 > gX))
1120+ then throw("Invalid value passed")
1121+ else {
1122+ let fb = eY(eV, gX, false)
1123+ let dG = fb._9
1124+ let eZ = toBigInt(value(eV.payments[0]).amount)
1125+ let fa = toBigInt(value(eV.payments[1]).amount)
1126+ let eB = eu(eZ, fa, toBigInt(0))
1127+ if ((eB == eB))
1128+ then {
1129+ let gY = eC(0, 0, 0)
1130+ let gU = gY._1
1131+ let et = gY._2
1132+ let gV = eH(eB, et)
1133+ if ((gV == gV))
1134+ then (dG ++ gU)
1135+ else throw("Strict value is not equal to itself.")
1136+ }
1137+ else throw("Strict value is not equal to itself.")
1138+ }
1139+
1140+
1141+
1142+@Callable(eV)
1143+func putOneTkn (gZ,ha) = {
1144+ let hb = {
1145+ let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1146+ if ($isInstanceOf(aY, "Boolean"))
1147+ then aY
1148+ else throw(($getType(aY) + " couldn't be cast to Boolean"))
1149+ }
1150+ let hc = if (if (if (ba())
1151+ then true
1152+ else (bn == l))
1153+ then true
1154+ else (bn == n))
1155+ then true
1156+ else hb
1157+ let fP = [if (if (!(hc))
1158+ then true
1159+ else gk(eV))
1160+ then true
1161+ else aS("put operation is blocked by admin"), if ((size(eV.payments) == 1))
1162+ then true
1163+ else aS("exactly 1 payment are expected")]
1164+ if ((fP == fP))
1165+ then {
1166+ let hd = eV.payments[0]
1167+ let fk = hd.assetId
1168+ let fj = hd.amount
1169+ let eB = if ((fk == bp))
1170+ then eu(toBigInt(fj), toBigInt(0), toBigInt(0))
1171+ else if ((fk == bq))
1172+ then eu(toBigInt(0), toBigInt(fj), toBigInt(0))
1173+ else aS("payment asset is not supported")
1174+ if ((eB == eB))
1175+ then {
1176+ let ab = eV.caller
1177+ let ac = eV.transactionId
1178+ let he = fi(fj, fk, ab, ac)
1179+ if ((he == he))
1180+ then {
1181+ let fo = he._5
1182+ let hf = he._4
1183+ let fh = he._3
1184+ let en = he._2
1185+ let hg = he._1
1186+ let hh = if (if ((gZ > 0))
1187+ then (gZ > hg)
1188+ else false)
1189+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1190+ else hg
1191+ let fd = fc(hh)
1192+ if ((fd == fd))
1193+ then {
1194+ let gR = if (ha)
1195+ then {
1196+ let hi = invoke(bu, "stake", nil, [AttachedPayment(bo, hh)])
1197+ if ((hi == hi))
1198+ then nil
1199+ else throw("Strict value is not equal to itself.")
1200+ }
1201+ else [ScriptTransfer(eV.caller, hh, bo)]
1202+ let hj = if ((fh > 0))
1203+ then [ScriptTransfer(aW, fh, fk)]
1204+ else nil
1205+ let hk = if ((this == aW))
1206+ then $Tuple2(0, 0)
1207+ else if (fo)
1208+ then $Tuple2(-(fh), 0)
1209+ else $Tuple2(0, -(fh))
1210+ let eD = hk._1
1211+ let eE = hk._2
1212+ let hl = eC(eD, eE, 0)
1213+ let gU = hl._1
1214+ let et = hl._2
1215+ let eO = value(getString(aj))
1216+ let gV = eH(eB, et)
1217+ if ((gV == gV))
1218+ then {
1219+ let gW = invoke(this, "rebalance", nil, nil)
1220+ if ((gW == gW))
1221+ then $Tuple2((((en ++ gR) ++ hj) ++ gU), hh)
1222+ else throw("Strict value is not equal to itself.")
1223+ }
1224+ else throw("Strict value is not equal to itself.")
1225+ }
1226+ else throw("Strict value is not equal to itself.")
1227+ }
1228+ else throw("Strict value is not equal to itself.")
1229+ }
1230+ else throw("Strict value is not equal to itself.")
1231+ }
1232+ else throw("Strict value is not equal to itself.")
1233+ }
1234+
1235+
1236+
1237+@Callable(eV)
1238+func putOneTknREADONLY (fk,fj) = {
1239+ let hm = fi(fj, bf(fk), unit, unit)
1240+ let hg = hm._1
1241+ let en = hm._2
1242+ let fh = hm._3
1243+ let hf = hm._4
1244+ let fo = hm._5
1245+ $Tuple2(nil, $Tuple3(hg, fh, hf))
1246+ }
1247+
1248+
1249+
1250+@Callable(eV)
1251+func getOneTkn (hn,gZ) = {
1252+ let hb = {
1253+ let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1254+ if ($isInstanceOf(aY, "Boolean"))
1255+ then aY
1256+ else throw(($getType(aY) + " couldn't be cast to Boolean"))
1257+ }
1258+ let ho = if (if (ba())
1259+ then true
1260+ else (bn == n))
1261+ then true
1262+ else hb
1263+ let fP = [if (if (!(ho))
1264+ then true
1265+ else gk(eV))
1266+ then true
1267+ else aS("get operation is blocked by admin"), if ((size(eV.payments) == 1))
1268+ then true
1269+ else aS("exactly 1 payment are expected")]
1270+ if ((fP == fP))
1271+ then {
1272+ let fO = bf(hn)
1273+ let hd = eV.payments[0]
1274+ let fk = hd.assetId
1275+ let fw = hd.amount
1276+ let eB = eu(toBigInt(0), toBigInt(0), toBigInt(0))
1277+ if ((eB == eB))
1278+ then {
1279+ let ab = eV.caller
1280+ let ac = eV.transactionId
1281+ let hp = fN(fO, fw, fk, ab, ac)
1282+ if ((hp == hp))
1283+ then {
1284+ let fQ = hp._5
1285+ let hf = hp._4
1286+ let fh = hp._3
1287+ let en = hp._2
1288+ let hq = hp._1
1289+ let bY = if (if ((gZ > 0))
1290+ then (gZ > hq)
1291+ else false)
1292+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1293+ else hq
1294+ let hr = invoke(aV, "burn", [fw], [AttachedPayment(fk, fw)])
1295+ if ((hr == hr))
1296+ then {
1297+ let gF = cJ(hn, (bY + max([0, fh])))
1298+ let hs = [ScriptTransfer(ab, bY, fO)]
1299+ let hj = if ((fh > 0))
1300+ then [ScriptTransfer(aW, fh, fO)]
1301+ else nil
1302+ let ht = {
1303+ let hu = if ((this == aW))
1304+ then 0
1305+ else fh
1306+ if (fQ)
1307+ then $Tuple2(-((bY + hu)), 0)
1308+ else $Tuple2(0, -((bY + hu)))
1309+ }
1310+ let eD = ht._1
1311+ let eE = ht._2
1312+ let hv = eC(eD, eE, 0)
1313+ let gU = hv._1
1314+ let et = hv._2
1315+ let gV = eH(eB, et)
1316+ if ((gV == gV))
1317+ then $Tuple2(((((en ++ gF) ++ hs) ++ hj) ++ gU), bY)
1318+ else throw("Strict value is not equal to itself.")
1319+ }
1320+ else throw("Strict value is not equal to itself.")
1321+ }
1322+ else throw("Strict value is not equal to itself.")
1323+ }
1324+ else throw("Strict value is not equal to itself.")
1325+ }
1326+ else throw("Strict value is not equal to itself.")
1327+ }
1328+
1329+
1330+
1331+@Callable(eV)
1332+func getOneTknREADONLY (fO,fw) = {
1333+ let hw = fN(bf(fO), fw, bo, unit, unit)
1334+ let hq = hw._1
1335+ let en = hw._2
1336+ let fh = hw._3
1337+ let hf = hw._4
1338+ let fQ = hw._5
1339+ $Tuple2(nil, $Tuple3(hq, fh, hf))
1340+ }
1341+
1342+
1343+
1344+@Callable(eV)
1345+func unstakeAndGetOneTkn (hx,hn,gZ) = {
1346+ let hb = {
1347+ let aY = invoke(aV, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
1348+ if ($isInstanceOf(aY, "Boolean"))
1349+ then aY
1350+ else throw(($getType(aY) + " couldn't be cast to Boolean"))
1351+ }
1352+ let ho = if (if (ba())
1353+ then true
1354+ else (bn == n))
1355+ then true
1356+ else hb
1357+ let fP = [if (if (!(ho))
1358+ then true
1359+ else gk(eV))
1360+ then true
1361+ else aS("get operation is blocked by admin"), if ((size(eV.payments) == 0))
1362+ then true
1363+ else aS("no payments are expected")]
1364+ if ((fP == fP))
1365+ then {
1366+ let fO = bf(hn)
1367+ let ab = eV.caller
1368+ let ac = eV.transactionId
1369+ let eB = eu(toBigInt(0), toBigInt(0), toBigInt(0))
1370+ if ((eB == eB))
1371+ then {
1372+ let hy = invoke(bu, "unstake", [toBase58String(bo), hx], nil)
1373+ if ((hy == hy))
1374+ then {
1375+ let hz = fN(fO, hx, bo, ab, ac)
1376+ if ((hz == hz))
1377+ then {
1378+ let fQ = hz._5
1379+ let hf = hz._4
1380+ let fh = hz._3
1381+ let en = hz._2
1382+ let hq = hz._1
1383+ let bY = if (if ((gZ > 0))
1384+ then (gZ > hq)
1385+ else false)
1386+ then aS(makeString(["amount to receive is less than ", toString(gZ)], ""))
1387+ else hq
1388+ let hr = invoke(aV, "burn", [hx], [AttachedPayment(bo, hx)])
1389+ if ((hr == hr))
1390+ then {
1391+ let gF = cJ(hn, (bY + max([0, fh])))
1392+ let hs = [ScriptTransfer(eV.caller, bY, fO)]
1393+ let hj = if ((fh > 0))
1394+ then [ScriptTransfer(aW, fh, fO)]
1395+ else nil
1396+ let hA = {
1397+ let hu = if ((this == aW))
1398+ then 0
1399+ else fh
1400+ if (fQ)
1401+ then $Tuple2(-((bY + hu)), 0)
1402+ else $Tuple2(0, -((bY + hu)))
1403+ }
1404+ let eD = hA._1
1405+ let eE = hA._2
1406+ let hB = eC(eD, eE, 0)
1407+ let gU = hB._1
1408+ let et = hB._2
1409+ let gV = eH(eB, et)
1410+ if ((gV == gV))
1411+ then $Tuple2(((((en ++ gF) ++ hs) ++ hj) ++ gU), bY)
1412+ else throw("Strict value is not equal to itself.")
1413+ }
1414+ else throw("Strict value is not equal to itself.")
1415+ }
1416+ else throw("Strict value is not equal to itself.")
1417+ }
1418+ else throw("Strict value is not equal to itself.")
1419+ }
1420+ else throw("Strict value is not equal to itself.")
1421+ }
1422+ else throw("Strict value is not equal to itself.")
1423+ }
1424+
1425+
1426+
1427+@Callable(eV)
1428+func get () = {
1429+ let dY = eU(eV)
1430+ let dE = dY._1
1431+ let dF = dY._2
1432+ let eX = dY._3
1433+ let dn = dY._4
1434+ let dG = dY._5
1435+ let gF = cO(dE, dF)
1436+ let eB = eu(toBigInt(0), toBigInt(0), toBigInt(0))
1437+ if ((eB == eB))
1438+ then {
1439+ let hC = invoke(aV, "burn", [eX], [AttachedPayment(dn, eX)])
1440+ if ((hC == hC))
1441+ then {
1442+ let hD = eC(-(dE), -(dF), 0)
1443+ let gU = hD._1
1444+ let et = hD._2
1445+ let gV = eH(eB, et)
1446+ if ((gV == gV))
1447+ then ((gF ++ dG) ++ gU)
1448+ else throw("Strict value is not equal to itself.")
1449+ }
1450+ else throw("Strict value is not equal to itself.")
1451+ }
1452+ else throw("Strict value is not equal to itself.")
1453+ }
1454+
1455+
1456+
1457+@Callable(eV)
1458+func getNoLess (hE,hF) = {
1459+ let dY = eU(eV)
1460+ let dE = dY._1
1461+ let dF = dY._2
1462+ let eX = dY._3
1463+ let dn = dY._4
1464+ let dG = dY._5
1465+ if ((hE > dE))
1466+ then throw(((("noLessThenAmtAsset failed: " + toString(dE)) + " < ") + toString(hE)))
1467+ else if ((hF > dF))
1468+ then throw(((("noLessThenPriceAsset failed: " + toString(dF)) + " < ") + toString(hF)))
1469+ else {
1470+ let gF = cO(dE, dF)
1471+ let eB = eu(toBigInt(0), toBigInt(0), toBigInt(0))
1472+ if ((eB == eB))
1473+ then {
1474+ let hC = invoke(aV, "burn", [eX], [AttachedPayment(dn, eX)])
1475+ if ((hC == hC))
1476+ then {
1477+ let hG = eC(-(dE), -(dF), 0)
1478+ let gU = hG._1
1479+ let et = hG._2
1480+ let gV = eH(eB, et)
1481+ if ((gV == gV))
1482+ then ((gF ++ dG) ++ gU)
1483+ else throw("Strict value is not equal to itself.")
1484+ }
1485+ else throw("Strict value is not equal to itself.")
1486+ }
1487+ else throw("Strict value is not equal to itself.")
1488+ }
1489+ }
1490+
1491+
1492+
1493+@Callable(eV)
1494+func unstakeAndGet (bY) = {
1495+ let hH = if ((size(eV.payments) != 0))
1496+ then throw("No payments are expected")
1497+ else true
1498+ if ((hH == hH))
1499+ then {
1500+ let dc = bc()
1501+ let dp = fromBase58String(dc[q])
1502+ let eB = eu(toBigInt(0), toBigInt(0), toBigInt(0))
1503+ if ((eB == eB))
1504+ then {
1505+ let hy = invoke(bu, "unstake", [toBase58String(dp), bY], nil)
1506+ if ((hy == hy))
1507+ then {
1508+ let dY = dl(toBase58String(eV.transactionId), toBase58String(dp), bY, eV.caller)
1509+ let dE = dY._1
1510+ let dF = dY._2
1511+ let ds = parseIntValue(dY._9)
1512+ let dG = dY._10
1513+ let gF = cO(dE, dF)
1514+ let hI = if (if (ba())
1515+ then true
1516+ else (ds == n))
1517+ then throw(("Get operation is blocked by admin. Status = " + toString(ds)))
1518+ else true
1519+ if ((hI == hI))
1520+ then {
1521+ let hC = invoke(aV, "burn", [bY], [AttachedPayment(dp, bY)])
1522+ if ((hC == hC))
1523+ then {
1524+ let hJ = eC(-(dE), -(dF), 0)
1525+ let gU = hJ._1
1526+ let et = hJ._2
1527+ let gV = eH(eB, et)
1528+ if ((gV == gV))
1529+ then ((gF ++ dG) ++ gU)
1530+ else throw("Strict value is not equal to itself.")
1531+ }
1532+ else throw("Strict value is not equal to itself.")
1533+ }
1534+ else throw("Strict value is not equal to itself.")
1535+ }
1536+ else throw("Strict value is not equal to itself.")
1537+ }
1538+ else throw("Strict value is not equal to itself.")
1539+ }
1540+ else throw("Strict value is not equal to itself.")
1541+ }
1542+
1543+
1544+
1545+@Callable(eV)
1546+func unstakeAndGetNoLess (hx,hK,hF) = {
1547+ let ho = if (ba())
1548+ then true
1549+ else (bn == n)
1550+ let fP = [if (!(ho))
1551+ then true
1552+ else throw("get operation is blocked by admin"), if ((size(eV.payments) == 0))
1553+ then true
1554+ else throw("no payments are expected")]
1555+ if ((fP == fP))
1556+ then {
1557+ let eB = eu(toBigInt(0), toBigInt(0), toBigInt(0))
1558+ if ((eB == eB))
1559+ then {
1560+ let hy = invoke(bu, "unstake", [toBase58String(bo), hx], nil)
1561+ if ((hy == hy))
1562+ then {
1563+ let dY = dl(toBase58String(eV.transactionId), toBase58String(bo), hx, eV.caller)
1564+ let dE = dY._1
1565+ let dF = dY._2
1566+ let dG = dY._10
1567+ let gF = cO(dE, dF)
1568+ let hL = [if ((dE >= hK))
1569+ then true
1570+ else throw(makeString(["amount asset amount to receive is less than ", toString(hK)], "")), if ((dF >= hF))
1571+ then true
1572+ else throw(makeString(["price asset amount to receive is less than ", toString(hF)], ""))]
1573+ if ((hL == hL))
1574+ then {
1575+ let hC = invoke(aV, "burn", [hx], [AttachedPayment(bo, hx)])
1576+ if ((hC == hC))
1577+ then {
1578+ let hM = eC(-(dE), -(dF), 0)
1579+ let gU = hM._1
1580+ let et = hM._2
1581+ let gV = eH(eB, et)
1582+ if ((gV == gV))
1583+ then ((gF ++ dG) ++ gU)
1584+ else throw("Strict value is not equal to itself.")
1585+ }
1586+ else throw("Strict value is not equal to itself.")
1587+ }
1588+ else throw("Strict value is not equal to itself.")
1589+ }
1590+ else throw("Strict value is not equal to itself.")
1591+ }
1592+ else throw("Strict value is not equal to itself.")
1593+ }
1594+ else throw("Strict value is not equal to itself.")
1595+ }
1596+
1597+
1598+
1599+@Callable(eV)
1600+func activate (hN,hO) = if ((toString(eV.caller) != toString(aV)))
1601+ then throw("permissions denied")
1602+ else $Tuple2([StringEntry(ae(), hN), StringEntry(af(), hO)], "success")
1603+
1604+
1605+
1606+@Callable(eV)
1607+func refreshKLp () = {
1608+ let hP = valueOrElse(getInteger(ak), 0)
1609+ let hQ = if (((height - hP) >= an))
1610+ then unit
1611+ else aS(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1612+ if ((hQ == hQ))
1613+ then {
1614+ let eO = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aU("invalid kLp"))
1615+ let hR = eC(0, 0, 0)
1616+ let hS = hR._1
1617+ let et = hR._2
1618+ let eF = if ((eO != et))
1619+ then hS
1620+ else aS("nothing to refresh")
1621+ $Tuple2(eF, toString(et))
1622+ }
1623+ else throw("Strict value is not equal to itself.")
1624+ }
1625+
1626+
1627+
1628+@Callable(eV)
1629+func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bc())
1630+
1631+
1632+
1633+@Callable(eV)
1634+func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bL(ap))
1635+
1636+
1637+
1638+@Callable(eV)
1639+func calcPricesWrapperREADONLY (cW,cX,db) = {
1640+ let dk = da(cW, cX, db)
1641+ $Tuple2(nil, [toString(dk[0]), toString(dk[1]), toString(dk[2])])
1642+ }
1643+
1644+
1645+
1646+@Callable(eV)
1647+func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
1648+
1649+
1650+
1651+@Callable(eV)
1652+func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
1653+
1654+
1655+
1656+@Callable(eV)
1657+func calcPriceBigIntWrapperREADONLY (bP,bQ) = $Tuple2(nil, toString(bO(parseBigIntValue(bP), parseBigIntValue(bQ))))
1658+
1659+
1660+
1661+@Callable(eV)
1662+func estimatePutOperationWrapperREADONLY (dm,dI,dJ,dK,dL,dM,ab,dN,dO) = $Tuple2(nil, dH(dm, dI, dJ, dK, dL, dM, ab, dN, dO))
1663+
1664+
1665+
1666+@Callable(eV)
1667+func estimateGetOperationWrapperREADONLY (dm,dn,do,ab) = {
1668+ let dY = dl(dm, dn, do, addressFromStringValue(ab))
1669+ $Tuple2(nil, $Tuple10(dY._1, dY._2, dY._3, dY._4, dY._5, dY._6, dY._7, toString(dY._8), dY._9, dY._10))
1670+ }
1671+
1672+
1673+
1674+@Callable(eV)
1675+func statsREADONLY () = {
1676+ let dc = bc()
1677+ let dp = fromBase58String(dc[q])
1678+ let hT = dc[r]
1679+ let hU = dc[s]
1680+ let dR = dc[v]
1681+ let dS = dc[w]
1682+ let dd = parseIntValue(dc[t])
1683+ let de = parseIntValue(dc[u])
1684+ let hV = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1685+ let hW = bL(hT)
1686+ let hX = bL(hU)
1687+ let hY = if ((hV == 0))
1688+ then [e, e, e]
1689+ else da(hW, hX, hV)
1690+ let dz = 0
1691+ let hZ = H(hY[1], b)
1692+ let ia = H(hY[2], b)
1693+ let ib = value(getInteger(aV, aD(toString(this))))
1694+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hW), toString(hX), toString(hV), toString(dz), toString(hZ), toString(ia), toString(ib)], j))
1695+ }
1696+
1697+
1698+
1699+@Callable(eV)
1700+func evaluatePutByAmountAssetREADONLY (dJ) = {
1701+ let dc = bc()
1702+ let dp = fromBase58String(dc[q])
1703+ let dP = dc[r]
1704+ let dq = fromBase58String(dP)
1705+ let dQ = dc[s]
1706+ let dr = fromBase58String(dQ)
1707+ let dd = parseIntValue(dc[t])
1708+ let de = parseIntValue(dc[u])
1709+ let ds = dc[p]
1710+ let hV = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1711+ let hW = bL(dP)
1712+ let hX = bL(dQ)
1713+ let cY = D(hW, dd)
1714+ let cZ = D(hX, de)
1715+ let dy = if ((hV == 0))
1716+ then e
1717+ else bO(cZ, cY)
1718+ let dV = D(dJ, dd)
1719+ let dW = fraction(dV, dy, d)
1720+ let dL = H(dW, de)
1721+ let fb = dH("", 500000, dJ, dq, dL, dr, "", true, false)
1722+ let eg = fb._1
1723+ let ic = fb._3
1724+ let du = fb._4
1725+ let dw = fb._5
1726+ let dt = fb._6
1727+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eg), toString(H(dy, b)), toString(du), toString(dw), toString(dt), ds, toString(dJ), toString(dL)], j))
1728+ }
1729+
1730+
1731+
1732+@Callable(eV)
1733+func evaluatePutByPriceAssetREADONLY (dL) = {
1734+ let dc = bc()
1735+ let dp = fromBase58String(dc[q])
1736+ let dP = dc[r]
1737+ let dq = fromBase58String(dP)
1738+ let dQ = dc[s]
1739+ let dr = fromBase58String(dQ)
1740+ let dd = parseIntValue(dc[t])
1741+ let de = parseIntValue(dc[u])
1742+ let ds = dc[p]
1743+ let hV = valueOrErrorMessage(assetInfo(dp), (("Asset " + toBase58String(dp)) + " doesn't exist")).quantity
1744+ let id = bL(dP)
1745+ let ie = bL(dQ)
1746+ let if = D(id, dd)
1747+ let ig = D(ie, de)
1748+ let dy = if ((hV == 0))
1749+ then e
1750+ else bO(ig, if)
1751+ let dW = D(dL, de)
1752+ let dV = fraction(dW, d, dy)
1753+ let dJ = H(dV, dd)
1754+ let fb = dH("", 500000, dJ, dq, dL, dr, "", true, false)
1755+ let eg = fb._1
1756+ let ic = fb._3
1757+ let du = fb._4
1758+ let dw = fb._5
1759+ let dt = fb._6
1760+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(eg), toString(H(dy, b)), toString(du), toString(dw), toString(dt), ds, toString(dJ), toString(dL)], j))
1761+ }
1762+
1763+
1764+
1765+@Callable(eV)
1766+func evaluateGetREADONLY (ih,ii) = {
1767+ let dY = dl("", ih, ii, this)
1768+ let dE = dY._1
1769+ let dF = dY._2
1770+ let du = dY._5
1771+ let dw = dY._6
1772+ let dt = dY._7
1773+ let dz = dY._8
1774+ let ds = parseIntValue(dY._9)
1775+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dE), toString(dF), toString(du), toString(dw), toString(dt), toString(dz), toString(ds)], j))
1776+ }
1777+
1778+
1779+@Verifier(ij)
1780+func ik () = {
1781+ let il = {
1782+ let bV = gh()
1783+ if ($isInstanceOf(bV, "ByteVector"))
1784+ then {
1785+ let gl = bV
1786+ gl
1787+ }
1788+ else if ($isInstanceOf(bV, "Unit"))
1789+ then ij.senderPublicKey
1790+ else throw("Match error")
1791+ }
1792+ let bV = ij
1793+ if ($isInstanceOf(bV, "Order"))
1794+ then {
1795+ let eK = bV
1796+ let im = bb()
1797+ let in = if (eG())
1798+ then $Tuple2(true, "")
1799+ else eJ(eK)
1800+ let aK = in._1
1801+ let aL = in._2
1802+ let aM = sigVerify(eK.bodyBytes, eK.proofs[0], eK.senderPublicKey)
1803+ let aN = sigVerify(eK.bodyBytes, eK.proofs[1], im)
1804+ if (if (if (aK)
1805+ then aM
1806+ else false)
1807+ then aN
1808+ else false)
1809+ then true
1810+ else aJ(aK, aL, aM, aN)
1811+ }
1812+ else if ($isInstanceOf(bV, "SetScriptTransaction"))
1813+ then {
1814+ let gi = bV
1815+ if (sigVerify(ij.bodyBytes, ij.proofs[0], il))
1816+ then true
1817+ else {
1818+ let io = blake2b256(value(gi.script))
1819+ let ip = fromBase64String(value(getString(aV, aF())))
1820+ let iq = scriptHash(this)
1821+ if ((ip == io))
1822+ then (iq != io)
1823+ else false
1824+ }
1825+ }
1826+ else sigVerify(ij.bodyBytes, ij.proofs[0], il)
1827+ }
1828+

github/deemru/w8io/026f985 
73.61 ms