tx · FrKPM6pFFpqrfoEfXjZthywgX4kiaYPJqV7oZXtEFky4

3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt:  -0.04200000 Waves

2023.04.05 15:10 [2521219] smart account 3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt > SELF 0.00000000 Waves

{ "type": 13, "id": "FrKPM6pFFpqrfoEfXjZthywgX4kiaYPJqV7oZXtEFky4", "fee": 4200000, "feeAssetId": null, "timestamp": 1680696678750, "version": 2, "chainId": 84, "sender": "3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt", "senderPublicKey": "Aig94J3pRT3J41eXw33rJrs67gTCECiMVRZrbtuoARit", "proofs": [ "4mUC68tz8jYZRrvDzBXKniCo7NpwYBSkyUK7iBbXyU1S24QGSYSmzN4b3Yr5tcgQCBfUiZPykSUEeobkG5dsPN3Q" ], "script": "base64:BgKQNwgCEgASBQoDAQQBEgcKBQEEAQgBEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASABIDCgEIEgUKAwEBARIECgIBARIECgIIARIECgIICBILCgkIAQECAQIIBAQSBgoECAgBCBIAEgMKAQESAwoBARIECgIIASIKbFBkZWNpbWFscyIGc2NhbGU4IgxzY2FsZThCaWdJbnQiB3NjYWxlMTgiCnplcm9CaWdJbnQiBGJpZzAiBGJpZzEiBGJpZzIiC3dhdmVzU3RyaW5nIgNTRVAiClBvb2xBY3RpdmUiD1Bvb2xQdXREaXNhYmxlZCITUG9vbE1hdGNoZXJEaXNhYmxlZCIMUG9vbFNodXRkb3duIg5pZHhQb29sQWRkcmVzcyINaWR4UG9vbFN0YXR1cyIQaWR4UG9vbExQQXNzZXRJZCINaWR4QW10QXNzZXRJZCIPaWR4UHJpY2VBc3NldElkIg5pZHhBbXRBc3NldERjbSIQaWR4UHJpY2VBc3NldERjbSIOaWR4SUFtdEFzc2V0SWQiEGlkeElQcmljZUFzc2V0SWQiDWlkeExQQXNzZXREY20iEmlkeFBvb2xBbXRBc3NldEFtdCIUaWR4UG9vbFByaWNlQXNzZXRBbXQiEWlkeFBvb2xMUEFzc2V0QW10IhlpZHhGYWN0b3J5U3Rha2luZ0NvbnRyYWN0IhppZHhGYWN0b3J5U2xpcHBhZ2VDb250cmFjdCIFdG9YMTgiB29yaWdWYWwiDW9yaWdTY2FsZU11bHQiC3RvWDE4QmlnSW50Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIMZnJvbVgxOFJvdW5kIgVyb3VuZCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50Igxzd2FwQ29udHJhY3QiAmZjIgNtcGsiBHBtcGsiAnBsIgJwaCIBaCIJdGltZXN0YW1wIgNwYXUiC3VzZXJBZGRyZXNzIgR0eElkIgNnYXUiAmFhIgJwYSIGa2V5RmVlIgpmZWVEZWZhdWx0IgNmZWUiBmtleUtMcCIVa2V5S0xwUmVmcmVzaGVkSGVpZ2h0IhJrZXlLTHBSZWZyZXNoRGVsYXkiFmtMcFJlZnJlc2hEZWxheURlZmF1bHQiD2tMcFJlZnJlc2hEZWxheSIUa2V5QWRkaXRpb25hbEJhbGFuY2UiB2Fzc2V0SWQiFmtleVN0YWtpbmdBc3NldEJhbGFuY2UiGmdldEFkZGl0aW9uYWxCYWxhbmNlT3JaZXJvIhxnZXRTdGFraW5nQXNzZXRCYWxhbmNlT3JaZXJvIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPckZhaWwiCHRocm93RXJyIgNtc2ciBmZtdEVyciIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIgVpbkZlZSIBQCIGb3V0RmVlIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDg5NjI5MTI4Ig5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIg1iYWxhbmNlT25Qb29sIgx0b3RhbEJhbGFuY2UiD2NhbGNQcmljZUJpZ0ludCIIcHJBbXRYMTgiCGFtQW10WDE4IhRjYWxjUHJpY2VCaWdJbnRSb3VuZCIHZ2V0UmF0ZSIFcHJveHkiA2ludiIHJG1hdGNoMCIBciIHZGVwb3NpdCIGYW1vdW50Ig5zdGFraW5nQXNzZXRJZCIYY3VycmVudEFkZGl0aW9uYWxCYWxhbmNlIhpjdXJyZW50U3Rha2luZ0Fzc2V0QmFsYW5jZSIFYXNzZXQiDWRlcG9zaXRJbnZva2UiFHJlY2VpdmVkU3Rha2luZ0Fzc2V0IhRuZXdBZGRpdGlvbmFsQmFsYW5jZSIWbmV3U3Rha2luZ0Fzc2V0QmFsYW5jZSIId2l0aGRyYXciDHByb3h5UmF0ZU11bCINcHJvZml0QWRkcmVzcyIQY3VycmVudFByb3h5UmF0ZSIHb2xkUmF0ZSIMc3Rha2luZ0Fzc2V0IhRvbGRTZW5kU3Rha2luZ0Ftb3VudCIWc2VuZFN0YWtpbmdBc3NldEFtb3VudCIMcHJvZml0QW1vdW50Ig53aXRoZHJhd0ludm9rZSIOcmVjZWl2ZWRBc3NldHMiE2dldExlYXNlUHJveHlDb25maWciAWEiEXJlYmFsYW5jZUludGVybmFsIgt0YXJnZXRSYXRpbyIKbWluQmFsYW5jZSIQYXZhaWxhYmxlQmFsYW5jZSIBYiIBdSIMd2hvbGVCYWxhbmNlIhd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZSIEZGlmZiIPc2VuZEFzc2V0QW1vdW50Ig5nZXRBc3NldEFtb3VudCIOcmViYWxhbmNlQXNzZXQiDSR0MDE1NTI3MTU2NjMiCmlzTGVhc2FibGUiC2xlYXNlZFJhdGlvIgxwcm94eUFkZHJlc3MiDHByb3h5QXNzZXRJZCIUc3Rha2luZ1Byb2ZpdEFkZHJlc3MiGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQiCWdldEFtb3VudCINJHQwMTYwNTIxNjE4OCITbmV3VG90YWxDYWxjQmFsYW5jZSIOd2l0aGRyYXdBbW91bnQiEHByaXZhdGVDYWxjUHJpY2UiCmFtQXNzZXREY20iCnByQXNzZXREY20iBWFtQW10IgVwckFtdCIOYW10QXNzZXRBbXRYMTgiEHByaWNlQXNzZXRBbXRYMTgiCmNhbGNQcmljZXMiBWxwQW10IgNjZmciC2FtdEFzc2V0RGNtIg1wcmljZUFzc2V0RGNtIghwcmljZVgxOCIIbHBBbXRYMTgiE2xwUHJpY2VJbkFtQXNzZXRYMTgiE2xwUHJpY2VJblByQXNzZXRYMTgiD2NhbGN1bGF0ZVByaWNlcyIGcHJpY2VzIhRlc3RpbWF0ZUdldE9wZXJhdGlvbiIGdHhJZDU4IgpwbXRBc3NldElkIghwbXRMcEFtdCIJbHBBc3NldElkIglhbUFzc2V0SWQiCXByQXNzZXRJZCIKcG9vbFN0YXR1cyIKbHBFbWlzc2lvbiIJYW1CYWxhbmNlIgxhbUJhbGFuY2VYMTgiCXByQmFsYW5jZSIMcHJCYWxhbmNlWDE4IgtjdXJQcmljZVgxOCIIY3VyUHJpY2UiC3BtdExwQW10WDE4Ig1scEVtaXNzaW9uWDE4IgtvdXRBbUFtdFgxOCILb3V0UHJBbXRYMTgiCG91dEFtQW10IghvdXRQckFtdCISQW1BbXRXaXRoZHJhd1N0YXRlIhJQckFtdFdpdGhkcmF3U3RhdGUiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIHY2FsY0tMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIhBhbW91bnRCYWxhbmNlWDE4Ig9wcmljZUJhbGFuY2VYMTgiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjgxNTMyODM2NSIDa0xwIg0kdDAyODgwNTI4OTA1Ig11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDMyMDE4MzIzMTEiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMzIzMTUzMjQ2NCIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDMyNTk2MzI2NjAiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDM0MzQxMzQ1MDgiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDM2NTg2MzY2NDIiC3RvdGFsQW1vdW50Ig0kdDAzNjY0NjM2ODcyIgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiAXMiHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0Iglpc01hbmFnZXIiAnBrIgttdXN0TWFuYWdlciICcGQiDWNsZWFuQW1vdW50SW4iCWlzUmV2ZXJzZSINZmVlUG9vbEFtb3VudCINJHQwMzg3NTgzOTA2MyIIYXNzZXRPdXQiB2Fzc2V0SW4iEnBvb2xBc3NldEluQmFsYW5jZSITcG9vbEFzc2V0T3V0QmFsYW5jZSIJYW1vdW50T3V0IgRvbGRLIgRuZXdLIgZjaGVja0siDGFtb3VudE91dE1pbiIJYWRkcmVzc1RvIgtzd2FwQ29udGFjdCIIY2hlY2tNaW4iDnJlYmFsYW5jZVN0YXRlIg13aXRoZHJhd1N0YXRlIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDQxMDk0NDU3MSIRcmVmcmVzaEtMcEFjdGlvbnMiEWlzVXBkYXRlZEtMcFZhbGlkIgNyZWIiC21heFNsaXBwYWdlIg0kdDA0NTE4MzQ1MjQ4IgxtaW5PdXRBbW91bnQiCWF1dG9TdGFrZSIgaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWQiDWlzUHV0RGlzYWJsZWQiB3BheW1lbnQiDSR0MDQ2NDM2NDY1ODgiBWJvbnVzIhNlbWl0QW1vdW50RXN0aW1hdGVkIgplbWl0QW1vdW50IghzdGFrZUludiIHc2VuZEZlZSINJHQwNDcxNzQ0NzM3MSINJHQwNDczNzQ0NzQ4MiINJHQwNDc4Mzc0Nzk5NCINb3V0QXNzZXRJZFN0ciINaXNHZXREaXNhYmxlZCINJHQwNDg4Nzk0OTAzMiIPYW1vdW50RXN0aW1hdGVkIgdidXJuSW52Ig1hc3NldFRyYW5zZmVyIg0kdDA0OTYwNjQ5ODUzIhBmZWVBbW91bnRGb3JDYWxjIg0kdDA0OTg1NjQ5OTY0Ig0kdDA1MDI0MjUwMzk4Ig11bnN0YWtlQW1vdW50Igp1bnN0YWtlSW52Ig0kdDA1MTMwMzUxNDU0Ig0kdDA1MjAyMzUyMjcwIg0kdDA1MjI3MzUyMzgxIglvdXRBbXRBbXQiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1MzM0ODUzNDMwIhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA1NDM3OTU0NDYwIg1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDU1NTg2NTU2NjciFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA1Njk2MjU3MDQzIgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNTgyMzA1ODI5NCIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDY2OTU2NjcwMjUiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaH4AAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUUBRgkAvAIDBQFFBQFkBQFGAQFIAgFJAUoJAKADAQkAvAIDBQFJCQC2AgEFAUoFAWQBAUsDAUkBSgFMCQCgAwEJAL0CBAUBSQkAtgIBBQFKBQFkBQFMAQFNAwFOAU8BUAkAawMFAU4FAU8FAVABAVEBAUkDCQBmAgAABQFJCQEBLQEFAUkFAUkBAVIBAUkDCQC/AgIFAWUFAUkJAL4CAQUBSQUBSQEBUwACECVzX19zd2FwQ29udHJhY3QBAVQAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFVAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVYAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVcAAhElcyVzX19wcmljZV9fbGFzdAEBWAIBWQFaCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBWQkAzAgCCQCkAwEFAVoFA25pbAUBagECYWECAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWICAl9fBQJhYwECYWQCAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWICAl9fBQJhYwECYWUAAg8lc19fYW1vdW50QXNzZXQBAmFmAAIOJXNfX3ByaWNlQXNzZXQAAmFnAgclc19fZmVlAAJhaAkAawMACgUBYgCQTgACYWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWcFAmFoAAJhagkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhawkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhbQAeAAJhbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbAUCYW0BAmFvAQJhcAkAuQkCCQDMCAICBCVzJXMJAMwIAgINc3Rha2VkQmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcQECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICEXNoYXJlQXNzZXRCYWxhbmNlCQDMCAIFAmFwBQNuaWwFAWoBAmFyAQJhcAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYW8BBQJhcAAAAQJhcwECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFxAQUCYXAAAAECYXQAAhElc19fZmFjdG9yeUNvbmZpZwECYXUAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF2AQJhdwkArAICCQCsAgICCCVzJXMlc19fBQJhdwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmF4AgJheQJhegkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXkCAl9fBQJhegIIX19jb25maWcBAmFBAQJhQgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhQgECYUMAAgwlc19fc2h1dGRvd24BAmFEAQJhRQkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFFAQJhRgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhRwIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFIBAJhSQJhSgJhSwJhTAkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAiRvcmRlciB2YWxpZGF0aW9uIGZhaWxlZDogb3JkZXJWYWxpZD0JAKUDAQUCYUkCAiAoBQJhSgIBKQINIHNlbmRlclZhbGlkPQkApQMBBQJhSwIOIG1hdGNoZXJWYWxpZD0JAKUDAQUCYUwBAmFNAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFQAgJhTgJhTwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAmFOBQJhTwkAuQkCCQDMCAICCm1hbmRhdG9yeSAJAMwIAgkApQgBBQJhTgkAzAgCAgEuCQDMCAIFAmFPCQDMCAICDyBpcyBub3QgZGVmaW5lZAUDbmlsAgABAmFRAQJhUgkAAgEJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAQJhUwECYVIJALkJAgkAzAgCAghscC5yaWRlOgkAzAgCBQJhUgUDbmlsAgEgAAJhVAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUEdGhpcwkBAVQAAAJhVQkBEUBleHRyTmF0aXZlKDEwNjIpAQkBAmFNAgUCYVQFAmFHAAJhVgoAAmFXCQD8BwQFAmFUAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQNuaWwDCQABAgUCYVcCA0ludAUCYVcJAAIBCQCsAgIJAAMBBQJhVwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AAJhWAoAAmFXCQD8BwQFAmFUAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFXAgNJbnQFAmFXCQACAQkArAICCQADAQUCYVcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAECYVkACQELdmFsdWVPckVsc2UCCQCbCAIFAmFUCQECYUMABwECYVoACQDZBAEJAQJhTQIFAmFUCQECYXUAAQJiYQAEAmJiCQECYU0CBQR0aGlzCQECYWUABAJiYwkBAmFNAgUEdGhpcwkBAmFmAAQCYXoJAQJhUAIFAmFUCQECYUEBBQJiYwQCYXkJAQJhUAIFAmFUCQECYUEBBQJiYgkAtQkCCQECYU0CBQJhVAkBAmF4AgkApAMBBQJheQkApAMBBQJhegUBagECYmQBAmJlAwkAAAIFAmJlBQFpBQR1bml0CQDZBAEFAmJlAQJiZgECYmUDCQAAAgUCYmUFBHVuaXQFAWkJANgEAQkBBXZhbHVlAQUCYmUBAmJnAQJiaAkAmQoHCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFAmJoBQFvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXAJANkEAQkAkQMCBQJiaAUBcQkBAmJkAQkAkQMCBQJiaAUBcgkBAmJkAQkAkQMCBQJiaAUBcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJoBQF0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYmgFAXUAAmJpCQECYmcBCQECYmEAAAJiagUCYmkAAmJrCAUCYmoCXzEAAmJsCAUCYmoCXzIAAmJtCAUCYmoCXzMAAmJuCAUCYmoCXzQAAmJvCAUCYmoCXzUAAmJwCAUCYmoCXzYAAmJxCAUCYmoCXzcBAmJyAAkAtQkCCQECYU0CBQJhVAkBAmF0AAUBagACYnMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBCQCRAwIJAQJicgAFAUICGWluY29ycmVjdCBzdGFraW5nIGFkZHJlc3MAAmJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYnIABQFDAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAQJidQoCYnYCYncCYngCYnkCYnoCYkECYkICYkMCYkQCYkUJALkJAgkAzAgCAhQlZCVkJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJ2CQDMCAIJAKQDAQUCYncJAMwIAgkApAMBBQJieAkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYnoJAMwIAgkApAMBBQJiQQkAzAgCCQCkAwEFAmJCCQDMCAIJAKQDAQUCYkMJAMwIAgkApAMBBQJiRAkAzAgCCQCkAwEFAmJFBQNuaWwFAWoBAmJGBgJiRwJiSAJiSQJieQJiQgJiQwkAuQkCCQDMCAICDCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJ5CQDMCAIJAKQDAQUCYkIJAMwIAgkApAMBBQJiQwUDbmlsBQFqAQJiSgECYXAEAmJLAwkAAAIFAmFwAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJhcAQCYkwJAGUCCQBkAgUCYksJAQJhcgEFAmFwCQECYXMBBQJhcAkAlgMBCQDMCAIAAAkAzAgCBQJiTAUDbmlsAQJiTQICYk4CYk8JALwCAwUCYk4FAWQFAmJPAQJiUAMCYk4CYk8BTAkAvQIEBQJiTgUBZAUCYk8FAUwBAmJRAQJiUgQCYlMJAPwHBAUCYlICB2dldFJhdGUFA25pbAUDbmlsAwkAAAIFAmJTBQJiUwQCYlQFAmJTAwkAAQIFAmJUAgNJbnQEAmJVBQJiVAUCYlUJAQJhUQECIHByb3h5LmdldFJhdGUoKSB1bmV4cGVjdGVkIHZhbHVlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJiVgQCYXACYlcCYlgCYlIEAmJZCQECYXIBBQJhcAMJAAACBQJiWQUCYlkEAmJaCQECYXMBBQJiWAMJAAACBQJiWgUCYloEAmNhCQECYmQBBQJhcAMJAGYCBQJiVwAABAJjYgkA/AcEBQJiUgIHZGVwb3NpdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjYQUCYlcFA25pbAMJAAACBQJjYgUCY2IEAmJUBQJjYgMJAAECBQJiVAIDSW50BAJjYwUCYlQEAmNkCQBkAgUCYlkFAmJXBAJjZQkAZAIFAmJaBQJjYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFvAQUCYXAFAmNkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXEBBQJiWAUCY2UFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNmBgJhcAJiVwJiWAJiUgJjZwJjaAQCYlkJAQJhcgEFAmFwAwkAAAIFAmJZBQJiWQQCYloJAQJhcwEFAmJYAwkAAAIFAmJaBQJiWgQCY2kJAQJiUQEFAmJSAwkAAAIFAmNpBQJjaQQCY2oJAGsDBQJjZwUCYlkFAmJaBAJjawkBAmJkAQUCYlgEAmNsCQBrAwUCY2cFAmJXBQJjagQCY20JAGsDBQJjZwUCYlcFAmNpBAJjbgkAlgMBCQDMCAIAAAkAzAgCCQBlAgUCY2wFAmNtBQNuaWwDCQBmAgUCY20AAAQCY28JAPwHBAUCYlICCHdpdGhkcmF3BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmNrBQJjbQUDbmlsAwkAAAIFAmNvBQJjbwQCYlQFAmNvAwkAAQIFAmJUAgNJbnQEAmNwBQJiVAQCY2QJAGUCBQJiWQUCY3AEAmNlCQBlAgkAZQIFAmJaBQJjbQUCY24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCYlgFAmNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNoBQJjbgkBAmJkAQUCYlgFA25pbAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNxAQJhcAQCYlQJAPwHBAUCYVQCGmdldFBvb2xMZWFzZUNvbmZpZ1JFQURPTkxZCQDMCAIJAKUIAQUEdGhpcwkAzAgCBQJhcAUDbmlsBQNuaWwDCQABAgUCYlQCMChCb29sZWFuLCBJbnQsIEludCwgU3RyaW5nLCBTdHJpbmcsIEludCwgU3RyaW5nKQQCY3IFAmJUBQJjcgkBAmFRAQkArAICCQCsAgICAVsFAmFwAh1dIGdldExlYXNlUHJveHlDb25maWcoKSBlcnJvcgECY3MHAmN0AmFwAmJYAmN1AmJSAmNnAmNoBAJiWQkBAmFyAQUCYXADCQAAAgUCYlkFAmJZBAJiWgkBAmFzAQUCYlgDCQAAAgUCYloFAmJaBAJjdgQCYlQJAQJiZAEFAmFwAwkAAQIFAmJUAgpCeXRlVmVjdG9yBAJjdwUCYlQJAPAHAgUEdGhpcwUCY3cDCQABAgUCYlQCBFVuaXQEAmN4BQJiVAgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAAIBAgtNYXRjaCBlcnJvcgMJAAACBQJjdgUCY3YEAmN5CQCWAwEJAMwIAgAACQDMCAIJAGUCCQBkAgUCY3YFAmJZBQJjdQUDbmlsBAJjegkAawMFAmN0BQJjeQBkBAJjQQkAZQIFAmJZBQJjegMJAAACBQJjQQAABQNuaWwDCQBmAgAABQJjQQQCY0IJAQEtAQUCY0EJAQJiVgQFAmFwBQJjQgUCYlgFAmJSBAJjQwUCY0EJAQJjZgYFAmFwBQJjQwUCYlgFAmJSBQJjZwUCY2gJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNEAQJhcAQCY0UJAQJjcQEFAmFwBAJjRggFAmNFAl8xBAJjRwgFAmNFAl8yBAJjdQgFAmNFAl8zBAJjSAgFAmNFAl80BAJjSQgFAmNFAl81BAJjZwgFAmNFAl82BAJjSggFAmNFAl83AwUCY0YJAQJjcwcFAmNHBQJhcAUCY0kFAmN1CQERQGV4dHJOYXRpdmUoMTA2MikBBQJjSAUCY2cJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNKBQNuaWwBAmNLAgJhcAJjTAQCY00JAQJjcQEFAmFwBAJjRggFAmNNAl8xBAJjRwgFAmNNAl8yBAJjdQgFAmNNAl8zBAJjSAgFAmNNAl80BAJjSQgFAmNNAl81BAJjZwgFAmNNAl82BAJjSggFAmNNAl83AwUCY0YEAmNOCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBlAgkBAmJKAQUCYXAFAmNMBQJjdQUDbmlsAwkAAAIFAmNOBQJjTgQCY2QJAGsDBQJjRwUCY04AZAMJAAACBQJjZAUCY2QEAmNPCQCWAwEJAMwIAgAACQDMCAIJAGUCCQECYXIBBQJhcAUCY2QFA25pbAMJAAACBQJjTwUCY08JAQJjZgYFAmFwBQJjTwUCY0kJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNIBQJjZwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCY0oJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAECY1AEAmNRAmNSAmNTAmNUBAJjVQkBAUQCBQJjUwUCY1EEAmNWCQEBRAIFAmNUBQJjUgkBAmJNAgUCY1YFAmNVAQJjVwMCY1MCY1QCY1gEAmNZCQECYmEABAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF0BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF1BAJkYgkBAmNQBAUCY1oFAmRhBQJjUwUCY1QEAmJPCQEBRAIFAmNTBQJjWgQCYk4JAQFEAgUCY1QFAmRhBAJkYwkBAUQCBQJjWAUBYgQCZGQJAQJiTQIFAmJPBQJkYwQCZGUJAQJiTQIFAmJOBQJkYwkAzAgCBQJkYgkAzAgCBQJkZAkAzAgCBQJkZQUDbmlsAQJkZgMCY1MCY1QCY1gEAmRnCQECY1cDBQJjUwUCY1QFAmNYCQDMCAIJAQFIAgkAkQMCBQJkZwAABQFiCQDMCAIJAQFIAgkAkQMCBQJkZwABBQFiCQDMCAIJAQFIAgkAkQMCBQJkZwACBQFiBQNuaWwBAmRoBAJkaQJkagJkawJhYgQCY1kJAQJiYQAEAmRsCQCRAwIFAmNZBQFxBAJkbQkAkQMCBQJjWQUBcgQCZG4JAJEDAgUCY1kFAXMEAmNRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXQEAmNSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXUEAmRvCQCRAwIFAmNZBQFwBAJkcAgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBCQDZBAEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgBQJkbAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkDCQECIT0CBQJkbAUCZGoJAAIBAhVJbnZhbGlkIGFzc2V0IHBhc3NlZC4EAmRxCQECYkoBBQJkbQQCZHIJAQFEAgUCZHEFAmNRBAJkcwkBAmJKAQUCZG4EAmR0CQEBRAIFAmRzBQJjUgQCZHUJAQJiTQIFAmR0BQJkcgQCZHYJAQFIAgUCZHUFAWIEAmR3CQEBRAIFAmRrBQFiBAJkeAkBAUQCBQJkcAUBYgQCZHkJALwCAwUCZHIFAmR3BQJkeAQCZHoJALwCAwUCZHQFAmR3BQJkeAQCZEEJAQFLAwUCZHkFAmNRBQVGTE9PUgQCZEIJAQFLAwUCZHoFAmNSBQVGTE9PUgQCZEMJAQJjSwIFAmRtBQJkQQMJAAACBQJkQwUCZEMEAmRECQECY0sCBQJkbgUCZEIDCQAAAgUCZEQFAmREBAJkRQMJAAACBQJkaQIABQNuaWwJAM4IAgkAzggCBQJkQwUCZEQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRBAwkAAAIFAmRtAgVXQVZFUwUEdW5pdAkA2QQBBQJkbQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZEIDCQAAAgUCZG4CBVdBVkVTBQR1bml0CQDZBAEFAmRuCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmRpCQECYkYGBQJkQQUCZEIFAmRrBQJkdgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkdgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkdgUDbmlsCQCcCgoFAmRBBQJkQgUCZG0FAmRuBQJkcQUCZHMFAmRwBQJkdQUCZG8FAmRFCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkRgkCZGkCZEcCZEgCZEkCZEoCZEsCYWICZEwCZE0EAmNZCQECYmEABAJkbAkA2QQBCQCRAwIFAmNZBQFxBAJkTgkAkQMCBQJjWQUBcgQCZE8JAJEDAgUCY1kFAXMEAmRQCQCRAwIFAmNZBQF2BAJkUQkAkQMCBQJjWQUBdwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCZG8JAJEDAgUCY1kFAXAEAmRwCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZFIJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZEkJANkEAQIFV0FWRVMEAmRTCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRLCQDZBAECBVdBVkVTAwMJAQIhPQIFAmROBQJkUgYJAQIhPQIFAmRPBQJkUwkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmRxAwUCZEwJAQJiSgEFAmROCQBlAgkBAmJKAQUCZE4FAmRIBAJkcwMFAmRMCQECYkoBBQJkTwkAZQIJAQJiSgEFAmRPBQJkSgQCZFQJAQFEAgUCZEgFAmNaBAJkVQkBAUQCBQJkSgUCZGEEAmRWCQECYk0CBQJkVQUCZFQEAmRyCQEBRAIFAmRxBQJjWgQCZHQJAQFEAgUCZHMFAmRhBAJkVwMJAAACBQJkcAAABAJkdQUBZQQCZFgFAWUEAmRjCQB2BgkAuQICBQJkVAUCZFUAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCZGMFAWIJAQFIAgUCZFQFAmNaCQEBSAIFAmRVBQJkYQkBAmJNAgkAtwICBQJkdAUCZFUJALcCAgUCZHIFAmRUBQJkWAQCZHUJAQJiTQIFAmR0BQJkcgQCZFgJALwCAwkBAVIBCQC4AgIFAmR1BQJkVgUBZAUCZHUEAmRZCQEBRAIFAmRHBQFiAwMJAQIhPQIFAmR1BQFlCQC/AgIFAmRYBQJkWQcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZFgCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJkWQQCZHgJAQFEAgUCZHAFAWIEAmRaCQC9AgQFAmRUCQECYlADBQJkdAUCZHIFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVhCQC9AgQFAmRVBQFkCQECYlADBQJkdAUCZHIFBUZMT09SBQdDRUlMSU5HBAJlYgMJAL8CAgUCZFoFAmRVCQCUCgIFAmVhBQJkVQkAlAoCBQJkVAUCZFoEAmVjCAUCZWICXzEEAmVkCAUCZWICXzIEAmRjCQC9AgQFAmR4BQJlZAUCZHQFBUZMT09SCQCXCgUJAQFLAwUCZGMFAWIFBUZMT09SCQEBSwMFAmVjBQJjWgUHQ0VJTElORwkBAUsDBQJlZAUCZGEFB0NFSUxJTkcFAmR1BQJkWAQCZWUIBQJkVwJfMQQCZWYIBQJkVwJfMgQCZWcIBQJkVwJfMwQCZHYJAQFIAggFAmRXAl80BQFiBAJlaAkBAUgCCAUCZFcCXzUFAWIDCQBnAgAABQJlZQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZWkDCQEBIQEFAmRNAAAFAmVlBAJlagkAZQIFAmRIBQJlZgQCZWsJAGUCBQJkSgUCZWcEAmVsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmR2CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmR2CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJkaQkBAmJ1CgUCZWYFAmVnBQJlaQUCZHYFAmRHBQJlaAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZWoFAmVrBQNuaWwJAJ8KDQUCZWUFAmVpBQJkdgUCZHEFAmRzBQJkcAUCZGwFAmRvBQJlbAUCZWoFAmVrBQJkSQUCZEsBAmVtAwJlbgJlbwJkcAQCZXAJAQFHAgUCZW4JALYCAQUCYnAEAmVxCQEBRwIFAmVvCQC2AgEFAmJxBAJlcgkAvAIDCQB2BgkAuQICBQJlcAUCZXEAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJkcAMJAAACBQJkcAUBZgUBZgUCZXIBAmVzAwJldAJldQJldgQCZXcJALgCAgkAtgIBCQECYkoBCQECYmYBBQJibgUCZXQEAmV4CQC4AgIJALYCAQkBAmJKAQkBAmJmAQUCYm8FAmV1BAJleQkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJtCHF1YW50aXR5BQJldgQCZXoJAQJlbQMFAmV3BQJleAUCZXkFAmV6AQJlQQMCZUICZUMCZXYEAmV3CQBkAgkBAmJKAQkBAmJmAQUCYm4FAmVCBAJleAkAZAIJAQJiSgEJAQJiZgEFAmJvBQJlQwQCZXkJAGQCCAkBBXZhbHVlAQkA7AcBBQJibQhxdWFudGl0eQUCZXYEAmVyCQECZW0DCQC2AgEFAmV3CQC2AgEFAmV4CQC2AgEFAmV5BAJlRAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJlcgUDbmlsCQCUCgIFAmVEBQJlcgECZUUCAmVGAmVyAwkAwAICBQJlcgUCZUYGCQECYVEBCQC5CQIJAMwIAgIidXBkYXRlZCBLTHAgbG93ZXIgdGhhbiBjdXJyZW50IEtMcAkAzAgCCQCmAwEFAmVGCQDMCAIJAKYDAQUCZXIFA25pbAIBIAECZUcBAmVIBAJldwkBAmJKAQkBAmJmAQUCYm4EAmV4CQECYkoBCQECYmYBBQJibwQCZUkIBQJlSAZhbW91bnQEAmVKCQBuBAgFAmVIBmFtb3VudAgFAmVIBXByaWNlBQFiBQVGTE9PUgQCZUsDCQAAAggFAmVICW9yZGVyVHlwZQUDQnV5CQCUCgIFAmVJCQEBLQEFAmVKCQCUCgIJAQEtAQUCZUkFAmVKBAJlQggFAmVLAl8xBAJlQwgFAmVLAl8yAwMDCQECYVkABgkAAAIFAmJsBQFtBgkAAAIFAmJsBQFuCQACAQIcRXhjaGFuZ2Ugb3BlcmF0aW9ucyBkaXNhYmxlZAMDCQECIT0CCAgFAmVICWFzc2V0UGFpcgthbW91bnRBc3NldAUCYm4GCQECIT0CCAgFAmVICWFzc2V0UGFpcgpwcmljZUFzc2V0BQJibwkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmVMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFTAQILaW52YWxpZCBrTHAEAmVNCQECZUEDBQJlQgUCZUMAAAQCZU4IBQJlTQJfMQQCZU8IBQJlTQJfMgQCZVAJAMACAgUCZU8FAmVMBAJlUQkAuQkCCQDMCAICBGtMcD0JAMwIAgkApgMBBQJlTAkAzAgCAggga0xwTmV3PQkAzAgCCQCmAwEFAmVPCQDMCAICFCBhbW91bnRBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZXcJAMwIAgITIHByaWNlQXNzZXRCYWxhbmNlPQkAzAgCCQCkAwEFAmV4CQDMCAICGSBhbW91bnRBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlQgkAzAgCAhggcHJpY2VBc3NldEJhbGFuY2VEZWx0YT0JAMwIAgkApAMBBQJlQwkAzAgCAgggaGVpZ2h0PQkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgAJAJQKAgUCZVAFAmVRAQJlUgECZVMDCQECIT0CCQCQAwEIBQJlUwhwYXltZW50cwABCQACAQIdZXhhY3RseSAxIHBheW1lbnQgaXMgZXhwZWN0ZWQEAmVUCQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABAJkagkBBXZhbHVlAQgFAmVUB2Fzc2V0SWQEAmVVCAUCZVQGYW1vdW50BAJkVwkBAmRoBAkA2AQBCAUCZVMNdHJhbnNhY3Rpb25JZAkA2AQBBQJkagUCZVUIBQJlUwZjYWxsZXIEAmRBCAUCZFcCXzEEAmRCCAUCZFcCXzIEAmRvCQENcGFyc2VJbnRWYWx1ZQEIBQJkVwJfOQQCZEUIBQJkVwNfMTADAwkBAmFZAAYJAAACBQJkbwUBbgkAAgEJAKwCAgIsR2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZG8JAJcKBQUCZEEFAmRCBQJlVQUCZGoFAmRFAQJlVgMCZVMCZEcCZE0DCQECIT0CCQCQAwEIBQJlUwhwYXltZW50cwACCQACAQIfZXhhY3RseSAyIHBheW1lbnRzIGFyZSBleHBlY3RlZAQCZVcJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAEAmVYCQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwABBAJlWQkBAmRGCQkA2AQBCAUCZVMNdHJhbnNhY3Rpb25JZAUCZEcIBQJlVwZhbW91bnQIBQJlVwdhc3NldElkCAUCZVgGYW1vdW50CAUCZVgHYXNzZXRJZAkApQgBCAUCZVMGY2FsbGVyBwUCZE0EAmRvCQENcGFyc2VJbnRWYWx1ZQEIBQJlWQJfOAMDAwkBAmFZAAYJAAACBQJkbwUBbAYJAAACBQJkbwUBbgkAAgEJAKwCAgIsUHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluLiBTdGF0dXMgPSAJAKQDAQUCZG8FAmVZAQJlWgECYlcEAmZhCQD8BwQFAmFUAgRlbWl0CQDMCAIFAmJXBQNuaWwFA25pbAMJAAACBQJmYQUCZmEEAmZiBAJiVAUCZmEDCQABAgUCYlQCB0FkZHJlc3MEAmZjBQJiVAkA/AcEBQJmYwIEZW1pdAkAzAgCBQJiVwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCZmIFAmZiBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZmQCAmJXAmFpBAJmZQMJAAACBQJhaQAAAAAJAGsDBQJiVwUCYWkFAWIJAJQKAgkAZQIFAmJXBQJmZQUCZmUBAmZmBAJmZwJmaAJhYgJhYwQCZmkJAAACBQJhYwUEdW5pdAQCZmoJAQJiSgEJAQJiZgEFAmJuBAJmawkBAmJKAQkBAmJmAQUCYm8EAmZsAwkAAAIFAmZoBQJibgYDCQAAAgUCZmgFAmJvBwkBAmFRAQINaW52YWxpZCBhc3NldAQCZm0DBQJmaQkAlAoCBQJmagUCZmsDBQJmbAkAlAoCCQBlAgUCZmoFAmZnBQJmawkAlAoCBQJmagkAZQIFAmZrBQJmZwQCZm4IBQJmbQJfMQQCZm8IBQJmbQJfMgQCZnADBQJmbAkAlAoCBQJmZwAACQCUCgIAAAUCZmcEAmZxCAUCZnACXzEEAmZyCAUCZnACXzIEAmVJCAkBAmZkAgUCZnEFAmFWAl8xBAJlSggJAQJmZAIFAmZyBQJhVgJfMQQCZnMJAQJmZAIFAmZnBQJhVgQCZnQIBQJmcwJfMQQCZmUIBQJmcwJfMgQCZnUJAGQCBQJmbgUCZUkEAmZ2CQBkAgUCZm8FAmVKBAJmdwkBAmJNAgkBAUQCBQJmdgUCYnEJAQFEAgUCZnUFAmJwBAJmeAkBAUgCBQJmdwUBYgQCZnkDBQJmbAUCZm4FAmZvBAJmegkAtgIBBQJmeQQCZkEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJibQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJibQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZCAwkAvwICBQJmQQUBZgYJAQJhUQECImluaXRpYWwgZGVwb3NpdCByZXF1aXJlcyBhbGwgY29pbnMDCQAAAgUCZkIFAmZCBAJmQwkAtgIBBQJmdAQCZkQJAJYDAQkAzAgCAAAJAMwIAgkAoAMBCQC6AgIJALkCAgUCZkEJALgCAgkBCnNxcnRCaWdJbnQECQC3AgIFAWQJALoCAgkAuQICBQJmQwUBZAUCZnoAEgASBQRET1dOBQFkBQFkBQNuaWwEAmVsAwUCZmkFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmeAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmeAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYnUKBQJmcQUCZnIFAmZEBQJmeAAAAAAFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAAAAAABQNuaWwEAmZFCQECYk0CCQEBRAIFAmZvBQJicQkBAUQCBQJmbgUCYnAEAmZGCQEBSAIFAmZFBQFiBAJmRwQCZkgDBQJmbAkAlAoCBQJmcQUCZm4JAJQKAgUCZnIFAmZvBAJiVwgFAmZIAl8xBAJmSQgFAmZIAl8yBAJmSgkAoAMBCQC8AgMFAmZBCQC2AgEJAGkCBQJiVwACCQC2AgEFAmZJCQBrAwkAZQIFAmZEBQJmSgUBYgUCZkoJAJcKBQUCZkQFAmVsBQJmZQUCZkcFAmZsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmSwUCZkwCZnQCZmgCYWICYWMEAmZpCQAAAgUCYWMFBHVuaXQEAmNZCQECYmEABAJjWgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF0BAJkYQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNZBQF1BAJmTQkAzAgCAwkAAAIFAmZoBQJibQYJAQJhUQECEGludmFsaWQgbHAgYXNzZXQFA25pbAMJAAACBQJmTQUCZk0EAmZOAwkAAAIFAmZMBQJibgYDCQAAAgUCZkwFAmJvBwkBAmFRAQINaW52YWxpZCBhc3NldAQCZk8DBQJmTgkAtgIBCQECYkoBCQECYmYBBQJibgkAtgIBCQECYkoBCQECYmYBBQJibwQCZlADBQJmTgUCY1oFAmRhBAJmUQkBAmJKAQkBAmJmAQUCYm4EAmZSCQECYkoBCQECYmYBBQJibwQCZlMDBQJmTgUCZlEFAmZSBAJmVAkAtgIBBQJmUwQCZkEJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJibQkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJibQIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmZVCQC2AgEFAmZ0BAJmVgkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJmTwkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZlUFAWQFAmZBABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmZXCQECZmQCBQJmVgUCYVgEAmZYCAUCZlcCXzEEAmZlCAUCZlcCXzIEAmZZAwUCZk4JAJYKBAUCZlgAAAkAZQIFAmZRBQJmVgUCZlIJAJYKBAAABQJmWAUCZlEJAGUCBQJmUgUCZlYEAmZaCAUCZlkCXzEEAmdhCAUCZlkCXzIEAmdiCAUCZlkCXzMEAmdjCAUCZlkCXzQEAmZ3CQECYk0CCQEBRAIFAmdjBQJicQkBAUQCBQJnYgUCYnAEAmZ4CQEBSAIFAmZ3BQFiBAJlbAMFAmZpBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFkAgkApQgBCQEFdmFsdWUBBQJhYgkA2AQBCQEFdmFsdWUBBQJhYwkBAmJGBgUCZloFAmdhBQJmdAUCZngFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFXAAUCZngJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZngFA25pbAQCZkUJAQJiTQIJAQFEAgUCZlIFAmJxCQEBRAIFAmZRBQJicAQCZkYJAQFIAgUCZkUFAWIEAmZHBAJnZAkAaAIJAKADAQkAvAIDBQJmTwUCZlUFAmZBAAIJAGsDCQBlAgUCZlgFAmdkBQFiBQJnZAkAlwoFBQJmWAUCZWwFAmZlBQJmRwUCZk4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmdlAAQCYlQJAKIIAQkBAVUAAwkAAQIFAmJUAgZTdHJpbmcEAmdmBQJiVAkA2QQBBQJnZgMJAAECBQJiVAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJnZwAEAmJUCQCiCAEJAQFWAAMJAAECBQJiVAIGU3RyaW5nBAJnZgUCYlQJANkEAQUCZ2YDCQABAgUCYlQCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ2gBAmVTBAJiVAkBAmdlAAMJAAECBQJiVAIKQnl0ZVZlY3RvcgQCZ2kFAmJUCQAAAggFAmVTD2NhbGxlclB1YmxpY0tleQUCZ2kDCQABAgUCYlQCBFVuaXQJAAACCAUCZVMGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdqAQJlUwQCZ2sJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCYlQJAQJnZQADCQABAgUCYlQCCkJ5dGVWZWN0b3IEAmdpBQJiVAMJAAACCAUCZVMPY2FsbGVyUHVibGljS2V5BQJnaQYFAmdrAwkAAQIFAmJUAgRVbml0AwkAAAIIBQJlUwZjYWxsZXIFBHRoaXMGBQJnawkAAgECC01hdGNoIGVycm9yHgJlUwEJcmViYWxhbmNlAAkAzggCCQECY0QBCQECYU0CBQR0aGlzCQECYWUACQECY0QBCQECYU0CBQR0aGlzCQECYWYAAmVTASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDAmdsAmdtAmduBAJnbwMJAAACBQJnbQcEAmdwCQECYU0CBQR0aGlzCQECYWYABAJncQkBAmFNAgUEdGhpcwkBAmFlAAkAlAoCBQJncAUCZ3EEAmdwCQECYU0CBQR0aGlzCQECYWUABAJncQkBAmFNAgUEdGhpcwkBAmFmAAkAlAoCBQJncAUCZ3EEAmdwCAUCZ28CXzEEAmdxCAUCZ28CXzIEAmdyCQECYkoBBQJncQQCZ3MJAQJiSgEFAmdwBAJndAkAawMFAmdzBQJnbAkAZAIFAmdyBQJnbAQCZ3UJALkCAgkAtgIBBQJncgkAtgIBBQJncwQCZ3YJALkCAgkAtwICCQC3AgIJALYCAQkBAmJKAQUCZ3EJALYCAQUCZ2wJALYCAQUCZ24JALgCAgkAtgIBCQECYkoBBQJncAkAtgIBBQJndAQCZ3cDCQDAAgIFAmd2BQJndQYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJndwUCZ3cJAJQKAgUDbmlsBQJndAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFAmdsAmdtAmd4Amd5AmduBAJnegoAAmFXCQD8BwQFAmFUAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYVcCBlN0cmluZwUCYVcJAAIBCQCsAgIJAAMBBQJhVwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJmTQkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAUCZ2wGCQECYVEBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZVMGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnegYJAQJhUQECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZk0FAmZNBAJlVAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAAQCZ3EJAQJiZgEIBQJlVAdhc3NldElkBAJncAMJAAACBQJnbQcJAQJhTQIFBHRoaXMJAQJhZgAJAQJhTQIFBHRoaXMJAQJhZQAEAmdyCQBlAgkBAmJKAQUCZ3EICQEFdmFsdWUBCQCRAwIIBQJlUwhwYXltZW50cwAABmFtb3VudAQCZ3MJAQJiSgEFAmdwBAJndAkAawMFAmdzBQJnbAkAZAIFAmdyBQJnbAQCZ3UJALkCAgkAtgIBBQJncgkAtgIBBQJncwQCZ3YJALkCAgkAtwICCQC2AgEJAQJiSgEFAmdxCQC2AgEFAmduCQC4AgIJALYCAQkBAmJKAQUCZ3AJALYCAQUCZ3QEAmd3AwkAwAICBQJndgUCZ3UGCQACAQIUbmV3IEsgaXMgZmV3ZXIgZXJyb3IDCQAAAgUCZ3cFAmd3BAJnQQMJAGcCBQJndAUCZ3gGCQACAQIsRXhjaGFuZ2UgcmVzdWx0IGlzIGZld2VyIGNvaW5zIHRoYW4gZXhwZWN0ZWQDCQAAAgUCZ0EFAmdBBAJnQgkBAmNEAQUCZ3EDCQAAAgUCZ0IFAmdCBAJnQwkBAmNLAgUCZ3AFAmd0AwkAAAIFAmdDBQJnQwkAlAoCCQDOCAIJAM4IAgUCZ0MFAmdCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmd5BQJndAkBAmJkAQUCZ3AFA25pbAUCZ3QJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCnNldE1hbmFnZXIBAmdEBAJnRQkBAmdqAQUCZVMDCQAAAgUCZ0UFAmdFBAJnRgkA2QQBBQJnRAMJAAACBQJnRgUCZ0YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVYABQJnRAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQ5jb25maXJtTWFuYWdlcgAEAmdHCQECZ2cABAJnSAMJAQlpc0RlZmluZWQBBQJnRwYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ0gFAmdIBAJnSQMJAAACCAUCZVMPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJnRwYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZ0kFAmdJCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAAkA2AQBCQEFdmFsdWUBBQJnRwkAzAgCCQELRGVsZXRlRW50cnkBCQEBVgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEDcHV0AgJkRwJnSgMJAGYCAAAFAmRHCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmVZCQECZVYDBQJlUwUCZEcGBAJlaQgFAmVZAl8yBAJkbAgFAmVZAl83BAJkRQgFAmVZAl85BAJlaggFAmVZA18xMAQCZWsIBQJlWQNfMTEEAmdLCAUCZVkDXzEyBAJnTAgFAmVZA18xMwQCZVcJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAGYW1vdW50BAJlWAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAQZhbW91bnQEAmV6CQECZXMDBQJlVwUCZVgJALYCAQAAAwkAAAIFAmV6BQJlegQCZmEJAPwHBAUCYVQCBGVtaXQJAMwIAgUCZWkFA25pbAUDbmlsAwkAAAIFAmZhBQJmYQQCZmIEAmJUBQJmYQMJAAECBQJiVAIHQWRkcmVzcwQCZmMFAmJUCQD8BwQFAmZjAgRlbWl0CQDMCAIFAmVpBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmYgUCZmIEAmdNAwkAZgIFAmVqAAAJAPwHBAUCYnQCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnSwUCZWoFA25pbAUDbmlsAwkAAAIFAmdNBQJnTQQCZ04DCQBmAgUCZWsAAAkA/AcEBQJidAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdMBQJlawUDbmlsBQNuaWwDCQAAAgUCZ04FAmdOBAJnTwMFAmdKBAJnUAkA/AcEBQJicwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGwFAmVpBQNuaWwDCQAAAgUCZ1AFAmdQBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVTBmNhbGxlcgUCZWkFAmRsBQNuaWwEAmdRCQECZUEDAAAAAAAAAwkAAAIFAmdRBQJnUQQCZXIIBQJnUQJfMgQCZ1IIBQJnUQJfMQQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MEAmdUCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZ1QFAmdUCQDOCAIJAM4IAgUCZEUFAmdPBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEKcHV0Rm9yRnJlZQECZ1UDCQBmAgAABQJnVQkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJlWQkBAmVWAwUCZVMFAmdVBwQCZEUIBQJlWQJfOQQCZVcJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmVTCHBheW1lbnRzAAAGYW1vdW50BAJlWAkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZVMIcGF5bWVudHMAAQZhbW91bnQEAmV6CQECZXMDBQJlVwUCZVgJALYCAQAAAwkAAAIFAmV6BQJlegQCZ1YJAQJlQQMAAAAAAAAEAmdSCAUCZ1YCXzEEAmVyCAUCZ1YCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQDOCAIFAmRFBQJnUgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEJcHV0T25lVGtuAgJnVwJnWAQCZ1kKAAJhVwkA/AcEBQJhVAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmFXAgdCb29sZWFuBQJhVwkAAgEJAKwCAgkAAwEFAmFXAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnWgMDAwkBAmFZAAYJAAACBQJibAUBbAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCZ1oGCQECZ2gBBQJlUwYJAQJhUQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAEGCQECYVEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmhhCQCRAwIIBQJlUwhwYXltZW50cwAABAJmaAgFAmhhB2Fzc2V0SWQEAmZnCAUCaGEGYW1vdW50BAJlegMJAAACBQJmaAUCYm4JAQJlcwMJALYCAQUCZmcJALYCAQAACQC2AgEAAAMJAAACBQJmaAUCYm8JAQJlcwMJALYCAQAACQC2AgEFAmZnCQC2AgEAAAkBAmFRAQIecGF5bWVudCBhc3NldCBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFAmV6BQJlegQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCaGIJAQJmZgQFAmZnBQJmaAUCYWIFAmFjAwkAAAIFAmhiBQJoYgQCZmwIBQJoYgJfNQQCaGMIBQJoYgJfNAQCZmUIBQJoYgJfMwQCZWwIBQJoYgJfMgQCaGQIBQJoYgJfMQQCaGUDAwkAZgIFAmdXAAAJAGYCBQJnVwUCaGQHCQECYVEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmdXBQNuaWwCAAUCaGQEAmZhCQECZVoBBQJoZQMJAAACBQJmYQUCZmEEAmdPAwUCZ1gEAmhmCQD8BwQFAmJzAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJibQUCaGUFA25pbAMJAAACBQJoZgUCaGYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZVMGY2FsbGVyBQJoZQUCYm0FA25pbAQCaGcDCQBmAgUCZmUAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhVQUCZmUFAmZoBQNuaWwFA25pbAQCaGgDCQAAAgUEdGhpcwUCYVUJAJQKAgAAAAADBQJmbAkAlAoCCQEBLQEFAmZlAAAJAJQKAgAACQEBLQEFAmZlBAJlQggFAmhoAl8xBAJlQwgFAmhoAl8yBAJoaQkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaGkCXzEEAmVyCAUCaGkCXzIEAmVMCQEFdmFsdWUBCQCiCAEFAmFqBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwQCZ1QJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJnVAUCZ1QJAJQKAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdPBQJoZwUCZ1IFAmhlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTARFwdXRPbmVUa25SRUFET05MWQICZmgCZmcEAmhqCQECZmYEBQJmZwkBAmJkAQUCZmgFBHVuaXQFBHVuaXQEAmhkCAUCaGoCXzEEAmVsCAUCaGoCXzIEAmZlCAUCaGoCXzMEAmhjCAUCaGoCXzQEAmZsCAUCaGoCXzUJAJQKAgUDbmlsCQCVCgMFAmhkBQJmZQUCaGMCZVMBCWdldE9uZVRrbgICaGsCZ1cEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGwDAwkBAmFZAAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCaGwGCQECZ2gBBQJlUwYJAQJhUQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAEGCQECYVEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmZMCQECYmQBBQJoawQCaGEJAJEDAggFAmVTCHBheW1lbnRzAAAEAmZoCAUCaGEHYXNzZXRJZAQCZnQIBQJoYQZhbW91bnQEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCaG0JAQJmSwUFAmZMBQJmdAUCZmgFAmFiBQJhYwMJAAACBQJobQUCaG0EAmZOCAUCaG0CXzUEAmhjCAUCaG0CXzQEAmZlCAUCaG0CXzMEAmVsCAUCaG0CXzIEAmhuCAUCaG0CXzEEAmJXAwMJAGYCBQJnVwAACQBmAgUCZ1cFAmhuBwkBAmFRAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJnVwUDbmlsAgAFAmhuBAJobwkA/AcEBQJhVAIEYnVybgkAzAgCBQJmdAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmaAUCZnQFA25pbAMJAAACBQJobwUCaG8EAmdDCQECY0sCBQJoawUCYlcDCQAAAgUCZ0MFAmdDBAJocAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCYlcFAmZMBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmTAUDbmlsBQNuaWwEAmhxBAJocgMJAAACBQR0aGlzBQJhVQAABQJmZQMFAmZOCQCUCgIJAQEtAQkAZAIFAmJXBQJocgAACQCUCgIAAAkBAS0BCQBkAgUCYlcFAmhyBAJlQggFAmhxAl8xBAJlQwgFAmhxAl8yBAJocwkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaHMCXzEEAmVyCAUCaHMCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdDBQJocAUCaGcFAmdSBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwERZ2V0T25lVGtuUkVBRE9OTFkCAmZMAmZ0BAJodAkBAmZLBQkBAmJkAQUCZkwFAmZ0BQJibQUEdW5pdAUEdW5pdAQCaG4IBQJodAJfMQQCZWwIBQJodAJfMgQCZmUIBQJodAJfMwQCaGMIBQJodAJfNAQCZk4IBQJodAJfNQkAlAoCBQNuaWwJAJUKAwUCaG4FAmZlBQJoYwJlUwETdW5zdGFrZUFuZEdldE9uZVRrbgMCaHUCaGsCZ1cEAmdZCgACYVcJAPwHBAUCYVQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJhVwIHQm9vbGVhbgUCYVcJAAIBCQCsAgIJAAMBBQJhVwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaGwDAwkBAmFZAAYJAAACBQJibAUBbgYFAmdZBAJmTQkAzAgCAwMJAQEhAQUCaGwGCQECZ2gBBQJlUwYJAQJhUQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmVTCHBheW1lbnRzAAAGCQECYVEBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmTQUCZk0EAmZMCQECYmQBBQJoawQCYWIIBQJlUwZjYWxsZXIEAmFjCAUCZVMNdHJhbnNhY3Rpb25JZAQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJtCQDMCAIFAmh1BQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmh3CQECZksFBQJmTAUCaHUFAmJtBQJhYgUCYWMDCQAAAgUCaHcFAmh3BAJmTggFAmh3Al81BAJoYwgFAmh3Al80BAJmZQgFAmh3Al8zBAJlbAgFAmh3Al8yBAJobggFAmh3Al8xBAJiVwMDCQBmAgUCZ1cAAAkAZgIFAmdXBQJobgcJAQJhUQEJALkJAgkAzAgCAh9hbW91bnQgdG8gcmVjZWl2ZSBpcyBsZXNzIHRoYW4gCQDMCAIJAKQDAQUCZ1cFA25pbAIABQJobgQCaG8JAPwHBAUCYVQCBGJ1cm4JAMwIAgUCaHUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmh1BQNuaWwDCQAAAgUCaG8FAmhvBAJnQwkBAmNLAgUCaGsFAmJXAwkAAAIFAmdDBQJnQwQCaHAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmVTBmNhbGxlcgUCYlcFAmZMBQNuaWwEAmhnAwkAZgIFAmZlAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYVUFAmZlBQJmTAUDbmlsBQNuaWwEAmh4BAJocgMJAAACBQR0aGlzBQJhVQAABQJmZQMFAmZOCQCUCgIJAQEtAQkAZAIFAmJXBQJocgAACQCUCgIAAAkBAS0BCQBkAgUCYlcFAmhyBAJlQggFAmh4Al8xBAJlQwgFAmh4Al8yBAJoeQkBAmVBAwUCZUIFAmVDAAAEAmdSCAUCaHkCXzEEAmVyCAUCaHkCXzIEAmdTCQECZUUCBQJlegUCZXIDCQAAAgUCZ1MFAmdTCQCUCgIJAM4IAgkAzggCCQDOCAIJAM4IAgUCZWwFAmdDBQJocAUCaGcFAmdSBQJiVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEDZ2V0AAQCZFcJAQJlUgEFAmVTBAJoeggFAmRXAl8xBAJkQggFAmRXAl8yBAJlVQgFAmRXAl8zBAJkaggFAmRXAl80BAJkRQgFAmRXAl81BAJlegkBAmVzAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlegUCZXoEAmhBCQD8BwQFAmFUAgRidXJuCQDMCAIFAmVVBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRqBQJlVQUDbmlsAwkAAAIFAmhBBQJoQQQCaEIJAQJlQQMJAQEtAQUCaHoJAQEtAQUCZEIAAAQCZ1IIBQJoQgJfMQQCZXIIBQJoQgJfMgQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MJAM4IAgUCZEUFAmdSCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTAQlnZXROb0xlc3MCAmhDAmhEBAJkVwkBAmVSAQUCZVMEAmRBCAUCZFcCXzEEAmRCCAUCZFcCXzIEAmVVCAUCZFcCXzMEAmRqCAUCZFcCXzQEAmRFCAUCZFcCXzUDCQBmAgUCaEMFAmRBCQACAQkArAICCQCsAgIJAKwCAgIcbm9MZXNzVGhlbkFtdEFzc2V0IGZhaWxlZDogIAkApAMBBQJkQQIDIDwgCQCkAwEFAmhDAwkAZgIFAmhEBQJkQgkAAgEJAKwCAgkArAICCQCsAgICHW5vTGVzc1RoZW5QcmljZUFzc2V0IGZhaWxlZDogCQCkAwEFAmRCAgMgPCAJAKQDAQUCaEQEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCaEEJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCZVUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZGoFAmVVBQNuaWwDCQAAAgUCaEEFAmhBBAJoRQkBAmVBAwkBAS0BBQJkQQkBAS0BBQJkQgAABAJnUggFAmhFAl8xBAJlcggFAmhFAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBDXVuc3Rha2VBbmRHZXQBAmJXBAJoRgMJAQIhPQIJAJADAQgFAmVTCHBheW1lbnRzAAAJAAIBAhhObyBwYXltZW50cyBhcmUgZXhwZWN0ZWQGAwkAAAIFAmhGBQJoRgQCY1kJAQJiYQAEAmRsCQDZBAEJAJEDAgUCY1kFAXEEAmV6CQECZXMDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmV6BQJlegQCaHYJAPwHBAUCYnMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJkbAkAzAgCBQJiVwUDbmlsBQNuaWwDCQAAAgUCaHYFAmh2BAJkVwkBAmRoBAkA2AQBCAUCZVMNdHJhbnNhY3Rpb25JZAkA2AQBBQJkbAUCYlcIBQJlUwZjYWxsZXIEAmRBCAUCZFcCXzEEAmRCCAUCZFcCXzIEAmRvCQENcGFyc2VJbnRWYWx1ZQEIBQJkVwJfOQQCZEUIBQJkVwNfMTAEAmhHAwMJAQJhWQAGCQAAAgUCZG8FAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmRvBgMJAAACBQJoRwUCaEcEAmhBCQD8BwQFAmFUAgRidXJuCQDMCAIFAmJXBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmRsBQJiVwUDbmlsAwkAAAIFAmhBBQJoQQQCaEgJAQJlQQMJAQEtAQUCZEEJAQEtAQUCZEIAAAQCZ1IIBQJoSAJfMQQCZXIIBQJoSAJfMgQCZ1MJAQJlRQIFAmV6BQJlcgMJAAACBQJnUwUCZ1MJAM4IAgUCZEUFAmdSCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmVTARN1bnN0YWtlQW5kR2V0Tm9MZXNzAwJodQJoSQJoRAQCaGwDCQECYVkABgkAAAIFAmJsBQFuBAJmTQkAzAgCAwkBASEBBQJobAYJAAIBAiFnZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJlUwhwYXltZW50cwAABgkAAgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZNBQJmTQQCZXoJAQJlcwMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZXoFAmV6BAJodgkA/AcEBQJicwIHdW5zdGFrZQkAzAgCCQDYBAEFAmJtCQDMCAIFAmh1BQNuaWwFA25pbAMJAAACBQJodgUCaHYEAmRXCQECZGgECQDYBAEIBQJlUw10cmFuc2FjdGlvbklkCQDYBAEFAmJtBQJodQgFAmVTBmNhbGxlcgQCZEEIBQJkVwJfMQQCZEIIBQJkVwJfMgQCZEUIBQJkVwNfMTAEAmhKCQDMCAIDCQBnAgUCZEEFAmhJBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhJBQNuaWwCAAkAzAgCAwkAZwIFAmRCBQJoRAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhEBQNuaWwCAAUDbmlsAwkAAAIFAmhKBQJoSgQCaEEJAPwHBAUCYVQCBGJ1cm4JAMwIAgUCaHUFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYm0FAmh1BQNuaWwDCQAAAgUCaEEFAmhBBAJoSwkBAmVBAwkBAS0BBQJkQQkBAS0BBQJkQgAABAJnUggFAmhLAl8xBAJlcggFAmhLAl8yBAJnUwkBAmVFAgUCZXoFAmVyAwkAAAIFAmdTBQJnUwkAzggCBQJkRQUCZ1IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZVMBCGFjdGl2YXRlAgJoTAJoTQMJAQIhPQIJAKUIAQgFAmVTBmNhbGxlcgkApQgBBQJhVAkAAgECEnBlcm1pc3Npb25zIGRlbmllZAkAlAoCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQAFAmhMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZgAFAmhNBQNuaWwCB3N1Y2Nlc3MCZVMBCnJlZnJlc2hLTHAABAJoTgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQJhawAABAJoTwMJAGcCCQBlAgUGaGVpZ2h0BQJoTgUCYW4FBHVuaXQJAQJhUQEJALkJAgkAzAgCCQCkAwEFAmFuCQDMCAICLyBibG9ja3MgaGF2ZSBub3QgcGFzc2VkIHNpbmNlIHRoZSBwcmV2aW91cyBjYWxsBQNuaWwCAAMJAAACBQJoTwUCaE8EAmVMCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKgDAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQJhagIBMAkBAmFTAQILaW52YWxpZCBrTHAEAmhQCQECZUEDAAAAAAAABAJoUQgFAmhQAl8xBAJlcggFAmhQAl8yBAJlRAMJAQIhPQIFAmVMBQJlcgUCaFEJAQJhUQECEm5vdGhpbmcgdG8gcmVmcmVzaAkAlAoCBQJlRAkApgMBBQJlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJlUwEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYmEAAmVTARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJhcAkAlAoCBQNuaWwJAQJiSgEFAmFwAmVTARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJjUwJjVAJjWAQCZGcJAQJjVwMFAmNTBQJjVAUCY1gJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJkZwAACQDMCAIJAKYDAQkAkQMCBQJkZwABCQDMCAIJAKYDAQkAkQMCBQJkZwACBQNuaWwCZVMBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJlUwEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSQFKCQCUCgIFA25pbAkBAUgCCQCnAwEFAUkFAUoCZVMBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYk4CYk8JAJQKAgUDbmlsCQCmAwEJAQJiTQIJAKcDAQUCYk4JAKcDAQUCYk8CZVMBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJkaQJkRwJkSAJkSQJkSgJkSwJhYgJkTAJkTQkAlAoCBQNuaWwJAQJkRgkFAmRpBQJkRwUCZEgFAmRJBQJkSgUCZEsFAmFiBQJkTAUCZE0CZVMBI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZBAJkaQJkagJkawJhYgQCZFcJAQJkaAQFAmRpBQJkagUCZGsJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmFiCQCUCgIFA25pbAkAnAoKCAUCZFcCXzEIBQJkVwJfMggFAmRXAl8zCAUCZFcCXzQIBQJkVwJfNQgFAmRXAl82CAUCZFcCXzcJAKYDAQgFAmRXAl84CAUCZFcCXzkIBQJkVwNfMTACZVMBDXN0YXRzUkVBRE9OTFkABAJjWQkBAmJhAAQCZGwJANkEAQkAkQMCBQJjWQUBcQQCaFIJAJEDAgUCY1kFAXIEAmhTCQCRAwIFAmNZBQFzBAJkUAkAkQMCBQJjWQUBdgQCZFEJAJEDAgUCY1kFAXcEAmNaCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXQEAmRhCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY1kFAXUEAmhUCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFUJAQJiSgEFAmhSBAJoVgkBAmJKAQUCaFMEAmhXAwkAAAIFAmhUAAAJAMwIAgUBZQkAzAgCBQFlCQDMCAIFAWUFA25pbAkBAmNXAwUCaFUFAmhWBQJoVAQCZHYAAAQCaFgJAQFIAgkAkQMCBQJoVwABBQFiBAJoWQkBAUgCCQCRAwIFAmhXAAIFAWIEAmhaCQEFdmFsdWUBCQCaCAIFAmFUCQECYUQBCQClCAEFBHRoaXMJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJoVQkAzAgCCQCkAwEFAmhWCQDMCAIJAKQDAQUCaFQJAMwIAgkApAMBBQJkdgkAzAgCCQCkAwEFAmhYCQDMCAIJAKQDAQUCaFkJAMwIAgkApAMBBQJoWgUDbmlsBQFqAmVTASBldmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQECZEgEAmNZCQECYmEABAJkbAkA2QQBCQCRAwIFAmNZBQFxBAJkTgkAkQMCBQJjWQUBcgQCZG0JANkEAQUCZE4EAmRPCQCRAwIFAmNZBQFzBAJkbgkA2QQBBQJkTwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCZG8JAJEDAgUCY1kFAXAEAmhUCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaFUJAQJiSgEFAmROBAJoVgkBAmJKAQUCZE8EAmNVCQEBRAIFAmhVBQJjWgQCY1YJAQFEAgUCaFYFAmRhBAJkdQMJAAACBQJoVAAABQFlCQECYk0CBQJjVgUCY1UEAmRUCQEBRAIFAmRIBQJjWgQCZFUJALwCAwUCZFQFAmR1BQFkBAJkSgkBAUgCBQJkVQUCZGEEAmVZCQECZEYJAgAAoMIeBQJkSAUCZG0FAmRKBQJkbgIABgcEAmVlCAUCZVkCXzEEAmlhCAUCZVkCXzMEAmRxCAUCZVkCXzQEAmRzCAUCZVkCXzUEAmRwCAUCZVkCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVlCQDMCAIJAKQDAQkBAUgCBQJkdQUBYgkAzAgCCQCkAwEFAmRxCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkcAkAzAgCBQJkbwkAzAgCCQCkAwEFAmRICQDMCAIJAKQDAQUCZEoFA25pbAUBagJlUwEfZXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQECZEoEAmNZCQECYmEABAJkbAkA2QQBCQCRAwIFAmNZBQFxBAJkTgkAkQMCBQJjWQUBcgQCZG0JANkEAQUCZE4EAmRPCQCRAwIFAmNZBQFzBAJkbgkA2QQBBQJkTwQCY1oJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdAQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjWQUBdQQCZG8JAJEDAgUCY1kFAXAEAmhUCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmRsCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmRsAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCaWIJAQJiSgEFAmROBAJpYwkBAmJKAQUCZE8EAmlkCQEBRAIFAmliBQJjWgQCaWUJAQFEAgUCaWMFAmRhBAJkdQMJAAACBQJoVAAABQFlCQECYk0CBQJpZQUCaWQEAmRVCQEBRAIFAmRKBQJkYQQCZFQJALwCAwUCZFUFAWQFAmR1BAJkSAkBAUgCBQJkVAUCY1oEAmVZCQECZEYJAgAAoMIeBQJkSAUCZG0FAmRKBQJkbgIABgcEAmVlCAUCZVkCXzEEAmlhCAUCZVkCXzMEAmRxCAUCZVkCXzQEAmRzCAUCZVkCXzUEAmRwCAUCZVkCXzYJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmVlCQDMCAIJAKQDAQkBAUgCBQJkdQUBYgkAzAgCCQCkAwEFAmRxCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkcAkAzAgCBQJkbwkAzAgCCQCkAwEFAmRICQDMCAIJAKQDAQUCZEoFA25pbAUBagJlUwETZXZhbHVhdGVHZXRSRUFET05MWQICaWYCaWcEAmRXCQECZGgEAgAFAmlmBQJpZwUEdGhpcwQCZEEIBQJkVwJfMQQCZEIIBQJkVwJfMgQCZHEIBQJkVwJfNQQCZHMIBQJkVwJfNgQCZHAIBQJkVwJfNwQCZHYIBQJkVwJfOAQCZG8JAQ1wYXJzZUludFZhbHVlAQgFAmRXAl85CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCZEEJAMwIAgkApAMBBQJkQgkAzAgCCQCkAwEFAmRxCQDMCAIJAKQDAQUCZHMJAMwIAgkApAMBBQJkcAkAzAgCCQCmAwEFAmR2CQDMCAIJAKQDAQUCZG8FA25pbAUBagECaWgBAmlpAAQCaWoEAmJUCQECZ2UAAwkAAQIFAmJUAgpCeXRlVmVjdG9yBAJnaQUCYlQFAmdpAwkAAQIFAmJUAgRVbml0CAUCaWgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IEAmJUBQJpaAMJAAECBQJiVAIFT3JkZXIEAmVIBQJiVAQCaWsJAQJhWgAEAmlsCQECZUcBBQJlSAQCYUkIBQJpbAJfMQQCYUoIBQJpbAJfMgQCYUsJAPQDAwgFAmVICWJvZHlCeXRlcwkAkQMCCAUCZUgGcHJvb2ZzAAAIBQJlSA9zZW5kZXJQdWJsaWNLZXkEAmFMCQD0AwMIBQJlSAlib2R5Qnl0ZXMJAJEDAggFAmVIBnByb29mcwABBQJpawMDAwUCYUkFAmFLBwUCYUwHBgkBAmFIBAUCYUkFAmFKBQJhSwUCYUwDCQABAgUCYlQCFFNldFNjcmlwdFRyYW5zYWN0aW9uBAJnZgUCYlQDCQD0AwMIBQJpaAlib2R5Qnl0ZXMJAJEDAggFAmloBnByb29mcwAABQJpagYEAmltCQD2AwEJAQV2YWx1ZQEIBQJnZgZzY3JpcHQEAmluCQDbBAEJAQV2YWx1ZQEJAJ0IAgUCYVQJAQJhRgAEAmlvCQDxBwEFBHRoaXMDCQAAAgUCaW4FAmltCQECIT0CBQJpbwUCaW0HCQD0AwMIBQJpaAlib2R5Qnl0ZXMJAJEDAggFAmloBnByb29mcwAABQJpauamT2I=", "height": 2521219, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G5vBozyZJPVVC4kfZvCJeZYq7hzZfyaox9Rpwummn3wL Next: 2okJ2pFQTZGpqqvgdMnan8HXnHwzGNfNNNL4TYeTnAjA Diff:
OldNewDifferences
366366 }
367367
368368
369-func cq (ap) = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
369+func cq (ap) = {
370+ let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371+ if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
372+ then {
373+ let cr = bT
374+ cr
375+ }
376+ else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377+ }
370378
371379
372-func cr (cs,ap,bX,ct,bR,cg,ch) = {
380+func cs (ct,ap,bX,cu,bR,cg,ch) = {
373381 let bY = ar(ap)
374382 if ((bY == bY))
375383 then {
376384 let bZ = as(bX)
377385 if ((bZ == bZ))
378386 then {
379- let cu = {
387+ let cv = {
380388 let bT = bd(ap)
381389 if ($isInstanceOf(bT, "ByteVector"))
382390 then {
383- let cv = bT
384- assetBalance(this, cv)
391+ let cw = bT
392+ assetBalance(this, cw)
385393 }
386394 else if ($isInstanceOf(bT, "Unit"))
387395 then {
388- let cw = bT
396+ let cx = bT
389397 wavesBalance(this).available
390398 }
391399 else throw("Match error")
392400 }
393- if ((cu == cu))
401+ if ((cv == cv))
394402 then {
395- let cx = max([0, ((cu + bY) - ct)])
396- let cy = fraction(cs, cx, 100)
397- let cz = (bY - cy)
398- if ((cz == 0))
403+ let cy = max([0, ((cv + bY) - cu)])
404+ let cz = fraction(ct, cy, 100)
405+ let cA = (bY - cz)
406+ if ((cA == 0))
399407 then nil
400- else if ((0 > cz))
408+ else if ((0 > cA))
401409 then {
402- let cA = -(cz)
403- bV(ap, cA, bX, bR)
410+ let cB = -(cA)
411+ bV(ap, cB, bX, bR)
404412 }
405413 else {
406- let cB = cz
407- cf(ap, cB, bX, bR, cg, ch)
414+ let cC = cA
415+ cf(ap, cC, bX, bR, cg, ch)
408416 }
409417 }
410418 else throw("Strict value is not equal to itself.")
415423 }
416424
417425
418-func cC (ap) = {
419- let bT = cq(ap)
420- if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
421- then {
422- let cD = bT
423- let cE = cD
424- let cF = cE._1
425- let cG = cE._2
426- let ct = cE._3
427- let cH = cE._4
428- let cI = cE._5
429- let cg = cE._6
430- let cJ = cE._7
431- if (cF)
432- then cr(cG, ap, cI, ct, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
433- else nil
434- }
435- else aQ((("[" + ap) + "] Rebalance error"))
426+func cD (ap) = {
427+ let cE = cq(ap)
428+ let cF = cE._1
429+ let cG = cE._2
430+ let cu = cE._3
431+ let cH = cE._4
432+ let cI = cE._5
433+ let cg = cE._6
434+ let cJ = cE._7
435+ if (cF)
436+ then cs(cG, ap, cI, cu, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
437+ else nil
436438 }
437439
438440
439441 func cK (ap,cL) = {
440- let bT = cq(ap)
441- if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
442+ let cM = cq(ap)
443+ let cF = cM._1
444+ let cG = cM._2
445+ let cu = cM._3
446+ let cH = cM._4
447+ let cI = cM._5
448+ let cg = cM._6
449+ let cJ = cM._7
450+ if (cF)
442451 then {
443- let cD = bT
444- let cM = cD
445- let cF = cM._1
446- let cG = cM._2
447- let ct = cM._3
448- let cH = cM._4
449- let cI = cM._5
450- let cg = cM._6
451- let cJ = cM._7
452- if (cF)
452+ let cN = max([0, ((bJ(ap) - cL) - cu)])
453+ if ((cN == cN))
453454 then {
454- let cN = max([0, ((bJ(ap) - cL) - ct)])
455- if ((cN == cN))
455+ let cd = fraction(cG, cN, 100)
456+ if ((cd == cd))
456457 then {
457- let cd = fraction(cG, cN, 100)
458- if ((cd == cd))
459- then {
460- let cO = max([0, (ar(ap) - cd)])
461- if ((cO == cO))
462- then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
463- else throw("Strict value is not equal to itself.")
464- }
458+ let cO = max([0, (ar(ap) - cd)])
459+ if ((cO == cO))
460+ then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
465461 else throw("Strict value is not equal to itself.")
466462 }
467463 else throw("Strict value is not equal to itself.")
468464 }
469- else nil
465+ else throw("Strict value is not equal to itself.")
470466 }
471- else aQ((("[" + ap) + "] getWithdrawAssetState() error"))
467+ else nil
472468 }
473469
474470
930926
931927
932928 @Callable(eS)
933-func rebalance () = (cC(aM(this, ae())) ++ cC(aM(this, af())))
929+func rebalance () = (cD(aM(this, ae())) ++ cD(aM(this, af())))
934930
935931
936932
999995 else throw("Exchange result is fewer coins than expected")
1000996 if ((gA == gA))
1001997 then {
1002- let gB = cC(gq)
998+ let gB = cD(gq)
1003999 if ((gB == gB))
10041000 then {
10051001 let gC = cK(gp, gt)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (E,F) = fraction(E, d, F)
6666
6767
6868 func H (I,J) = toInt(fraction(I, toBigInt(J), d))
6969
7070
7171 func K (I,J,L) = toInt(fraction(I, toBigInt(J), d, L))
7272
7373
7474 func M (N,O,P) = fraction(N, O, P)
7575
7676
7777 func Q (I) = if ((0 > I))
7878 then -(I)
7979 else I
8080
8181
8282 func R (I) = if ((e > I))
8383 then -(I)
8484 else I
8585
8686
8787 func S () = "%s__swapContract"
8888
8989
9090 func T () = "%s__factoryContract"
9191
9292
9393 func U () = "%s__managerPublicKey"
9494
9595
9696 func V () = "%s__pendingManagerPublicKey"
9797
9898
9999 func W () = "%s%s__price__last"
100100
101101
102102 func X (Y,Z) = makeString(["%s%s%d%d__price__history", toString(Y), toString(Z)], j)
103103
104104
105105 func aa (ab,ac) = ((("%s%s%s__P__" + ab) + "__") + ac)
106106
107107
108108 func ad (ab,ac) = ((("%s%s%s__G__" + ab) + "__") + ac)
109109
110110
111111 func ae () = "%s__amountAsset"
112112
113113
114114 func af () = "%s__priceAsset"
115115
116116
117117 let ag = "%s__fee"
118118
119119 let ah = fraction(10, b, 10000)
120120
121121 let ai = valueOrElse(getInteger(this, ag), ah)
122122
123123 let aj = makeString(["%s", "kLp"], j)
124124
125125 let ak = makeString(["%s", "kLpRefreshedHeight"], j)
126126
127127 let al = makeString(["%s", "refreshKLpDelay"], j)
128128
129129 let am = 30
130130
131131 let an = valueOrElse(getInteger(this, al), am)
132132
133133 func ao (ap) = makeString(["%s%s", "stakedBalance", ap], j)
134134
135135
136136 func aq (ap) = makeString(["%s%s", "shareAssetBalance", ap], j)
137137
138138
139139 func ar (ap) = valueOrElse(getInteger(this, ao(ap)), 0)
140140
141141
142142 func as (ap) = valueOrElse(getInteger(this, aq(ap)), 0)
143143
144144
145145 func at () = "%s__factoryConfig"
146146
147147
148148 func au () = "%s%s__matcher__publicKey"
149149
150150
151151 func av (aw) = (("%s%s%s__" + aw) + "__mappings__poolContract2LpAsset")
152152
153153
154154 func ax (ay,az) = (((("%d%d%s__" + ay) + "__") + az) + "__config")
155155
156156
157157 func aA (aB) = ("%s%s%s__mappings__baseAsset2internalId__" + aB)
158158
159159
160160 func aC () = "%s__shutdown"
161161
162162
163163 func aD (aE) = ("%s%s__poolWeight__" + aE)
164164
165165
166166 func aF () = "%s__allowedLpScriptHash"
167167
168168
169169 let aG = "%s__feeCollectorAddress"
170170
171171 func aH (aI,aJ,aK,aL) = throw((((((((("order validation failed: orderValid=" + toString(aI)) + " (") + aJ) + ")") + " senderValid=") + toString(aK)) + " matcherValid=") + toString(aL)))
172172
173173
174174 func aM (aN,aO) = valueOrErrorMessage(getString(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
175175
176176
177177 func aP (aN,aO) = valueOrErrorMessage(getInteger(aN, aO), makeString(["mandatory ", toString(aN), ".", aO, " is not defined"], ""))
178178
179179
180180 func aQ (aR) = throw(makeString(["lp.ride:", aR], " "))
181181
182182
183183 func aS (aR) = makeString(["lp.ride:", aR], " ")
184184
185185
186186 let aT = addressFromStringValue(aM(this, T()))
187187
188188 let aU = addressFromStringValue(aM(aT, aG))
189189
190190 let aV = {
191191 let aW = invoke(aT, "getInFeeREADONLY", [toString(this)], nil)
192192 if ($isInstanceOf(aW, "Int"))
193193 then aW
194194 else throw(($getType(aW) + " couldn't be cast to Int"))
195195 }
196196
197197 let aX = {
198198 let aW = invoke(aT, "getOutFeeREADONLY", [toString(this)], nil)
199199 if ($isInstanceOf(aW, "Int"))
200200 then aW
201201 else throw(($getType(aW) + " couldn't be cast to Int"))
202202 }
203203
204204 func aY () = valueOrElse(getBoolean(aT, aC()), false)
205205
206206
207207 func aZ () = fromBase58String(aM(aT, au()))
208208
209209
210210 func ba () = {
211211 let bb = aM(this, ae())
212212 let bc = aM(this, af())
213213 let az = aP(aT, aA(bc))
214214 let ay = aP(aT, aA(bb))
215215 split(aM(aT, ax(toString(ay), toString(az))), j)
216216 }
217217
218218
219219 func bd (be) = if ((be == i))
220220 then unit
221221 else fromBase58String(be)
222222
223223
224224 func bf (be) = if ((be == unit))
225225 then i
226226 else toBase58String(value(be))
227227
228228
229229 func bg (bh) = $Tuple7(addressFromStringValue(bh[o]), parseIntValue(bh[p]), fromBase58String(bh[q]), bd(bh[r]), bd(bh[s]), parseIntValue(bh[t]), parseIntValue(bh[u]))
230230
231231
232232 let bi = bg(ba())
233233
234234 let bj = bi
235235
236236 let bk = bj._1
237237
238238 let bl = bj._2
239239
240240 let bm = bj._3
241241
242242 let bn = bj._4
243243
244244 let bo = bj._5
245245
246246 let bp = bj._6
247247
248248 let bq = bj._7
249249
250250 func br () = split(aM(aT, at()), j)
251251
252252
253253 let bs = valueOrErrorMessage(addressFromString(br()[B]), "incorrect staking address")
254254
255255 let bt = valueOrErrorMessage(addressFromString(br()[C]), "incorrect staking address")
256256
257257 func bu (bv,bw,bx,by,bz,bA,bB,bC,bD,bE) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bv), toString(bw), toString(bx), toString(by), toString(bz), toString(bA), toString(bB), toString(bC), toString(bD), toString(bE)], j)
258258
259259
260260 func bF (bG,bH,bI,by,bB,bC) = makeString(["%d%d%d%d%d%d", toString(bG), toString(bH), toString(bI), toString(by), toString(bB), toString(bC)], j)
261261
262262
263263 func bJ (ap) = {
264264 let bK = if ((ap == "WAVES"))
265265 then wavesBalance(this).available
266266 else assetBalance(this, fromBase58String(ap))
267267 let bL = ((bK + ar(ap)) - as(ap))
268268 max([0, bL])
269269 }
270270
271271
272272 func bM (bN,bO) = fraction(bN, d, bO)
273273
274274
275275 func bP (bN,bO,L) = fraction(bN, d, bO, L)
276276
277277
278278 func bQ (bR) = {
279279 let bS = invoke(bR, "getRate", nil, nil)
280280 if ((bS == bS))
281281 then {
282282 let bT = bS
283283 if ($isInstanceOf(bT, "Int"))
284284 then {
285285 let bU = bT
286286 bU
287287 }
288288 else aQ("proxy.getRate() unexpected value")
289289 }
290290 else throw("Strict value is not equal to itself.")
291291 }
292292
293293
294294 func bV (ap,bW,bX,bR) = {
295295 let bY = ar(ap)
296296 if ((bY == bY))
297297 then {
298298 let bZ = as(bX)
299299 if ((bZ == bZ))
300300 then {
301301 let ca = bd(ap)
302302 if ((bW > 0))
303303 then {
304304 let cb = invoke(bR, "deposit", nil, [AttachedPayment(ca, bW)])
305305 if ((cb == cb))
306306 then {
307307 let bT = cb
308308 if ($isInstanceOf(bT, "Int"))
309309 then {
310310 let cc = bT
311311 let cd = (bY + bW)
312312 let ce = (bZ + cc)
313313 [IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce)]
314314 }
315315 else nil
316316 }
317317 else throw("Strict value is not equal to itself.")
318318 }
319319 else nil
320320 }
321321 else throw("Strict value is not equal to itself.")
322322 }
323323 else throw("Strict value is not equal to itself.")
324324 }
325325
326326
327327 func cf (ap,bW,bX,bR,cg,ch) = {
328328 let bY = ar(ap)
329329 if ((bY == bY))
330330 then {
331331 let bZ = as(bX)
332332 if ((bZ == bZ))
333333 then {
334334 let ci = bQ(bR)
335335 if ((ci == ci))
336336 then {
337337 let cj = fraction(cg, bY, bZ)
338338 let ck = bd(bX)
339339 let cl = fraction(cg, bW, cj)
340340 let cm = fraction(cg, bW, ci)
341341 let cn = max([0, (cl - cm)])
342342 if ((cm > 0))
343343 then {
344344 let co = invoke(bR, "withdraw", nil, [AttachedPayment(ck, cm)])
345345 if ((co == co))
346346 then {
347347 let bT = co
348348 if ($isInstanceOf(bT, "Int"))
349349 then {
350350 let cp = bT
351351 let cd = (bY - cp)
352352 let ce = ((bZ - cm) - cn)
353353 [IntegerEntry(ao(ap), cd), IntegerEntry(aq(bX), ce), ScriptTransfer(ch, cn, bd(bX))]
354354 }
355355 else nil
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359 else nil
360360 }
361361 else throw("Strict value is not equal to itself.")
362362 }
363363 else throw("Strict value is not equal to itself.")
364364 }
365365 else throw("Strict value is not equal to itself.")
366366 }
367367
368368
369-func cq (ap) = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
369+func cq (ap) = {
370+ let bT = invoke(aT, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
371+ if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
372+ then {
373+ let cr = bT
374+ cr
375+ }
376+ else aQ((("[" + ap) + "] getLeaseProxyConfig() error"))
377+ }
370378
371379
372-func cr (cs,ap,bX,ct,bR,cg,ch) = {
380+func cs (ct,ap,bX,cu,bR,cg,ch) = {
373381 let bY = ar(ap)
374382 if ((bY == bY))
375383 then {
376384 let bZ = as(bX)
377385 if ((bZ == bZ))
378386 then {
379- let cu = {
387+ let cv = {
380388 let bT = bd(ap)
381389 if ($isInstanceOf(bT, "ByteVector"))
382390 then {
383- let cv = bT
384- assetBalance(this, cv)
391+ let cw = bT
392+ assetBalance(this, cw)
385393 }
386394 else if ($isInstanceOf(bT, "Unit"))
387395 then {
388- let cw = bT
396+ let cx = bT
389397 wavesBalance(this).available
390398 }
391399 else throw("Match error")
392400 }
393- if ((cu == cu))
401+ if ((cv == cv))
394402 then {
395- let cx = max([0, ((cu + bY) - ct)])
396- let cy = fraction(cs, cx, 100)
397- let cz = (bY - cy)
398- if ((cz == 0))
403+ let cy = max([0, ((cv + bY) - cu)])
404+ let cz = fraction(ct, cy, 100)
405+ let cA = (bY - cz)
406+ if ((cA == 0))
399407 then nil
400- else if ((0 > cz))
408+ else if ((0 > cA))
401409 then {
402- let cA = -(cz)
403- bV(ap, cA, bX, bR)
410+ let cB = -(cA)
411+ bV(ap, cB, bX, bR)
404412 }
405413 else {
406- let cB = cz
407- cf(ap, cB, bX, bR, cg, ch)
414+ let cC = cA
415+ cf(ap, cC, bX, bR, cg, ch)
408416 }
409417 }
410418 else throw("Strict value is not equal to itself.")
411419 }
412420 else throw("Strict value is not equal to itself.")
413421 }
414422 else throw("Strict value is not equal to itself.")
415423 }
416424
417425
418-func cC (ap) = {
419- let bT = cq(ap)
420- if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
421- then {
422- let cD = bT
423- let cE = cD
424- let cF = cE._1
425- let cG = cE._2
426- let ct = cE._3
427- let cH = cE._4
428- let cI = cE._5
429- let cg = cE._6
430- let cJ = cE._7
431- if (cF)
432- then cr(cG, ap, cI, ct, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
433- else nil
434- }
435- else aQ((("[" + ap) + "] Rebalance error"))
426+func cD (ap) = {
427+ let cE = cq(ap)
428+ let cF = cE._1
429+ let cG = cE._2
430+ let cu = cE._3
431+ let cH = cE._4
432+ let cI = cE._5
433+ let cg = cE._6
434+ let cJ = cE._7
435+ if (cF)
436+ then cs(cG, ap, cI, cu, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
437+ else nil
436438 }
437439
438440
439441 func cK (ap,cL) = {
440- let bT = cq(ap)
441- if ($isInstanceOf(bT, "(Boolean, Int, Int, String, String, Int, String)"))
442+ let cM = cq(ap)
443+ let cF = cM._1
444+ let cG = cM._2
445+ let cu = cM._3
446+ let cH = cM._4
447+ let cI = cM._5
448+ let cg = cM._6
449+ let cJ = cM._7
450+ if (cF)
442451 then {
443- let cD = bT
444- let cM = cD
445- let cF = cM._1
446- let cG = cM._2
447- let ct = cM._3
448- let cH = cM._4
449- let cI = cM._5
450- let cg = cM._6
451- let cJ = cM._7
452- if (cF)
452+ let cN = max([0, ((bJ(ap) - cL) - cu)])
453+ if ((cN == cN))
453454 then {
454- let cN = max([0, ((bJ(ap) - cL) - ct)])
455- if ((cN == cN))
455+ let cd = fraction(cG, cN, 100)
456+ if ((cd == cd))
456457 then {
457- let cd = fraction(cG, cN, 100)
458- if ((cd == cd))
459- then {
460- let cO = max([0, (ar(ap) - cd)])
461- if ((cO == cO))
462- then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
463- else throw("Strict value is not equal to itself.")
464- }
458+ let cO = max([0, (ar(ap) - cd)])
459+ if ((cO == cO))
460+ then cf(ap, cO, cI, addressFromStringValue(cH), cg, addressFromStringValue(cJ))
465461 else throw("Strict value is not equal to itself.")
466462 }
467463 else throw("Strict value is not equal to itself.")
468464 }
469- else nil
465+ else throw("Strict value is not equal to itself.")
470466 }
471- else aQ((("[" + ap) + "] getWithdrawAssetState() error"))
467+ else nil
472468 }
473469
474470
475471 func cP (cQ,cR,cS,cT) = {
476472 let cU = D(cS, cQ)
477473 let cV = D(cT, cR)
478474 bM(cV, cU)
479475 }
480476
481477
482478 func cW (cS,cT,cX) = {
483479 let cY = ba()
484480 let cZ = parseIntValue(cY[t])
485481 let da = parseIntValue(cY[u])
486482 let db = cP(cZ, da, cS, cT)
487483 let bO = D(cS, cZ)
488484 let bN = D(cT, da)
489485 let dc = D(cX, b)
490486 let dd = bM(bO, dc)
491487 let de = bM(bN, dc)
492488 [db, dd, de]
493489 }
494490
495491
496492 func df (cS,cT,cX) = {
497493 let dg = cW(cS, cT, cX)
498494 [H(dg[0], b), H(dg[1], b), H(dg[2], b)]
499495 }
500496
501497
502498 func dh (di,dj,dk,ab) = {
503499 let cY = ba()
504500 let dl = cY[q]
505501 let dm = cY[r]
506502 let dn = cY[s]
507503 let cQ = parseIntValue(cY[t])
508504 let cR = parseIntValue(cY[u])
509505 let do = cY[p]
510506 let dp = valueOrErrorMessage(assetInfo(fromBase58String(dl)), (("Asset " + dl) + " doesn't exist")).quantity
511507 if ((dl != dj))
512508 then throw("Invalid asset passed.")
513509 else {
514510 let dq = bJ(dm)
515511 let dr = D(dq, cQ)
516512 let ds = bJ(dn)
517513 let dt = D(ds, cR)
518514 let du = bM(dt, dr)
519515 let dv = H(du, b)
520516 let dw = D(dk, b)
521517 let dx = D(dp, b)
522518 let dy = fraction(dr, dw, dx)
523519 let dz = fraction(dt, dw, dx)
524520 let dA = K(dy, cQ, FLOOR)
525521 let dB = K(dz, cR, FLOOR)
526522 let dC = cK(dm, dA)
527523 if ((dC == dC))
528524 then {
529525 let dD = cK(dn, dB)
530526 if ((dD == dD))
531527 then {
532528 let dE = if ((di == ""))
533529 then nil
534530 else ((dC ++ dD) ++ [ScriptTransfer(ab, dA, if ((dm == "WAVES"))
535531 then unit
536532 else fromBase58String(dm)), ScriptTransfer(ab, dB, if ((dn == "WAVES"))
537533 then unit
538534 else fromBase58String(dn)), StringEntry(ad(toString(ab), di), bF(dA, dB, dk, dv, height, lastBlock.timestamp)), IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv)])
539535 $Tuple10(dA, dB, dm, dn, dq, ds, dp, du, do, dE)
540536 }
541537 else throw("Strict value is not equal to itself.")
542538 }
543539 else throw("Strict value is not equal to itself.")
544540 }
545541 }
546542
547543
548544 func dF (di,dG,dH,dI,dJ,dK,ab,dL,dM) = {
549545 let cY = ba()
550546 let dl = fromBase58String(cY[q])
551547 let dN = cY[r]
552548 let dO = cY[s]
553549 let dP = cY[v]
554550 let dQ = cY[w]
555551 let cZ = parseIntValue(cY[t])
556552 let da = parseIntValue(cY[u])
557553 let do = cY[p]
558554 let dp = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
559555 let dR = toBase58String(valueOrElse(dI, fromBase58String("WAVES")))
560556 let dS = toBase58String(valueOrElse(dK, fromBase58String("WAVES")))
561557 if (if ((dN != dR))
562558 then true
563559 else (dO != dS))
564560 then throw("Invalid amt or price asset passed.")
565561 else {
566562 let dq = if (dL)
567563 then bJ(dN)
568564 else (bJ(dN) - dH)
569565 let ds = if (dL)
570566 then bJ(dO)
571567 else (bJ(dO) - dJ)
572568 let dT = D(dH, cZ)
573569 let dU = D(dJ, da)
574570 let dV = bM(dU, dT)
575571 let dr = D(dq, cZ)
576572 let dt = D(ds, da)
577573 let dW = if ((dp == 0))
578574 then {
579575 let du = e
580576 let dX = e
581577 let dc = pow((dT * dU), 0, toBigInt(5), 1, 0, DOWN)
582578 $Tuple5(H(dc, b), H(dT, cZ), H(dU, da), bM((dt + dU), (dr + dT)), dX)
583579 }
584580 else {
585581 let du = bM(dt, dr)
586582 let dX = fraction(R((du - dV)), d, du)
587583 let dY = D(dG, b)
588584 if (if ((du != e))
589585 then (dX > dY)
590586 else false)
591587 then throw(((("Price slippage " + toString(dX)) + " exceeded the passed limit of ") + toString(dY)))
592588 else {
593589 let dx = D(dp, b)
594590 let dZ = fraction(dT, bP(dt, dr, CEILING), d, CEILING)
595591 let ea = fraction(dU, d, bP(dt, dr, FLOOR), CEILING)
596592 let eb = if ((dZ > dU))
597593 then $Tuple2(ea, dU)
598594 else $Tuple2(dT, dZ)
599595 let ec = eb._1
600596 let ed = eb._2
601597 let dc = fraction(dx, ed, dt, FLOOR)
602598 $Tuple5(K(dc, b, FLOOR), K(ec, cZ, CEILING), K(ed, da, CEILING), du, dX)
603599 }
604600 }
605601 let ee = dW._1
606602 let ef = dW._2
607603 let eg = dW._3
608604 let dv = H(dW._4, b)
609605 let eh = H(dW._5, b)
610606 if ((0 >= ee))
611607 then throw("Invalid calculations. LP calculated is less than zero.")
612608 else {
613609 let ei = if (!(dM))
614610 then 0
615611 else ee
616612 let ej = (dH - ef)
617613 let ek = (dJ - eg)
618614 let el = [IntegerEntry(W(), dv), IntegerEntry(X(height, lastBlock.timestamp), dv), StringEntry(aa(ab, di), bu(ef, eg, ei, dv, dG, eh, height, lastBlock.timestamp, ej, ek))]
619615 $Tuple13(ee, ei, dv, dq, ds, dp, dl, do, el, ej, ek, dI, dK)
620616 }
621617 }
622618 }
623619
624620
625621 func em (en,eo,dp) = {
626622 let ep = G(en, toBigInt(bp))
627623 let eq = G(eo, toBigInt(bq))
628624 let er = fraction(pow((ep * eq), 0, toBigInt(5), 1, 18, DOWN), g, dp)
629625 if ((dp == f))
630626 then f
631627 else er
632628 }
633629
634630
635631 func es (et,eu,ev) = {
636632 let ew = (toBigInt(bJ(bf(bn))) - et)
637633 let ex = (toBigInt(bJ(bf(bo))) - eu)
638634 let ey = (toBigInt(value(assetInfo(bm)).quantity) - ev)
639635 let ez = em(ew, ex, ey)
640636 ez
641637 }
642638
643639
644640 func eA (eB,eC,ev) = {
645641 let ew = (bJ(bf(bn)) + eB)
646642 let ex = (bJ(bf(bo)) + eC)
647643 let ey = (value(assetInfo(bm)).quantity + ev)
648644 let er = em(toBigInt(ew), toBigInt(ex), toBigInt(ey))
649645 let eD = [IntegerEntry(ak, height), StringEntry(aj, toString(er))]
650646 $Tuple2(eD, er)
651647 }
652648
653649
654650 func eE (eF,er) = if ((er >= eF))
655651 then true
656652 else aQ(makeString(["updated KLp lower than current KLp", toString(eF), toString(er)], " "))
657653
658654
659655 func eG (eH) = {
660656 let ew = bJ(bf(bn))
661657 let ex = bJ(bf(bo))
662658 let eI = eH.amount
663659 let eJ = fraction(eH.amount, eH.price, b, FLOOR)
664660 let eK = if ((eH.orderType == Buy))
665661 then $Tuple2(eI, -(eJ))
666662 else $Tuple2(-(eI), eJ)
667663 let eB = eK._1
668664 let eC = eK._2
669665 if (if (if (aY())
670666 then true
671667 else (bl == m))
672668 then true
673669 else (bl == n))
674670 then throw("Exchange operations disabled")
675671 else if (if ((eH.assetPair.amountAsset != bn))
676672 then true
677673 else (eH.assetPair.priceAsset != bo))
678674 then throw("Wrong order assets.")
679675 else {
680676 let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
681677 let eM = eA(eB, eC, 0)
682678 let eN = eM._1
683679 let eO = eM._2
684680 let eP = (eO >= eL)
685681 let eQ = makeString(["kLp=", toString(eL), " kLpNew=", toString(eO), " amountAssetBalance=", toString(ew), " priceAssetBalance=", toString(ex), " amountAssetBalanceDelta=", toString(eB), " priceAssetBalanceDelta=", toString(eC), " height=", toString(height)], "")
686682 $Tuple2(eP, eQ)
687683 }
688684 }
689685
690686
691687 func eR (eS) = if ((size(eS.payments) != 1))
692688 then throw("exactly 1 payment is expected")
693689 else {
694690 let eT = value(eS.payments[0])
695691 let dj = value(eT.assetId)
696692 let eU = eT.amount
697693 let dW = dh(toBase58String(eS.transactionId), toBase58String(dj), eU, eS.caller)
698694 let dA = dW._1
699695 let dB = dW._2
700696 let do = parseIntValue(dW._9)
701697 let dE = dW._10
702698 if (if (aY())
703699 then true
704700 else (do == n))
705701 then throw(("Get operation is blocked by admin. Status = " + toString(do)))
706702 else $Tuple5(dA, dB, eU, dj, dE)
707703 }
708704
709705
710706 func eV (eS,dG,dM) = if ((size(eS.payments) != 2))
711707 then throw("exactly 2 payments are expected")
712708 else {
713709 let eW = value(eS.payments[0])
714710 let eX = value(eS.payments[1])
715711 let eY = dF(toBase58String(eS.transactionId), dG, eW.amount, eW.assetId, eX.amount, eX.assetId, toString(eS.caller), false, dM)
716712 let do = parseIntValue(eY._8)
717713 if (if (if (aY())
718714 then true
719715 else (do == l))
720716 then true
721717 else (do == n))
722718 then throw(("Put operation is blocked by admin. Status = " + toString(do)))
723719 else eY
724720 }
725721
726722
727723 func eZ (bW) = {
728724 let fa = invoke(aT, "emit", [bW], nil)
729725 if ((fa == fa))
730726 then {
731727 let fb = {
732728 let bT = fa
733729 if ($isInstanceOf(bT, "Address"))
734730 then {
735731 let fc = bT
736732 invoke(fc, "emit", [bW], nil)
737733 }
738734 else unit
739735 }
740736 if ((fb == fb))
741737 then bW
742738 else throw("Strict value is not equal to itself.")
743739 }
744740 else throw("Strict value is not equal to itself.")
745741 }
746742
747743
748744 func fd (bW,ai) = {
749745 let fe = if ((ai == 0))
750746 then 0
751747 else fraction(bW, ai, b)
752748 $Tuple2((bW - fe), fe)
753749 }
754750
755751
756752 func ff (fg,fh,ab,ac) = {
757753 let fi = (ac == unit)
758754 let fj = bJ(bf(bn))
759755 let fk = bJ(bf(bo))
760756 let fl = if ((fh == bn))
761757 then true
762758 else if ((fh == bo))
763759 then false
764760 else aQ("invalid asset")
765761 let fm = if (fi)
766762 then $Tuple2(fj, fk)
767763 else if (fl)
768764 then $Tuple2((fj - fg), fk)
769765 else $Tuple2(fj, (fk - fg))
770766 let fn = fm._1
771767 let fo = fm._2
772768 let fp = if (fl)
773769 then $Tuple2(fg, 0)
774770 else $Tuple2(0, fg)
775771 let fq = fp._1
776772 let fr = fp._2
777773 let eI = fd(fq, aV)._1
778774 let eJ = fd(fr, aV)._1
779775 let fs = fd(fg, aV)
780776 let ft = fs._1
781777 let fe = fs._2
782778 let fu = (fn + eI)
783779 let fv = (fo + eJ)
784780 let fw = bM(D(fv, bq), D(fu, bp))
785781 let fx = H(fw, b)
786782 let fy = if (fl)
787783 then fn
788784 else fo
789785 let fz = toBigInt(fy)
790786 let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
791787 let fB = if ((fA > f))
792788 then true
793789 else aQ("initial deposit requires all coins")
794790 if ((fB == fB))
795791 then {
796792 let fC = toBigInt(ft)
797793 let fD = max([0, toInt(((fA * (sqrtBigInt((d + ((fC * d) / fz)), 18, 18, DOWN) - d)) / d))])
798794 let el = if (fi)
799795 then nil
800796 else [IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bu(fq, fr, fD, fx, 0, 0, height, lastBlock.timestamp, 0, 0))]
801797 let fE = bM(D(fo, bq), D(fn, bp))
802798 let fF = H(fE, b)
803799 let fG = {
804800 let fH = if (fl)
805801 then $Tuple2(fq, fn)
806802 else $Tuple2(fr, fo)
807803 let bW = fH._1
808804 let fI = fH._2
809805 let fJ = toInt(fraction(fA, toBigInt((bW / 2)), toBigInt(fI)))
810806 fraction((fD - fJ), b, fJ)
811807 }
812808 $Tuple5(fD, el, fe, fG, fl)
813809 }
814810 else throw("Strict value is not equal to itself.")
815811 }
816812
817813
818814 func fK (fL,ft,fh,ab,ac) = {
819815 let fi = (ac == unit)
820816 let cY = ba()
821817 let cZ = parseIntValue(cY[t])
822818 let da = parseIntValue(cY[u])
823819 let fM = [if ((fh == bm))
824820 then true
825821 else aQ("invalid lp asset")]
826822 if ((fM == fM))
827823 then {
828824 let fN = if ((fL == bn))
829825 then true
830826 else if ((fL == bo))
831827 then false
832828 else aQ("invalid asset")
833829 let fO = if (fN)
834830 then toBigInt(bJ(bf(bn)))
835831 else toBigInt(bJ(bf(bo)))
836832 let fP = if (fN)
837833 then cZ
838834 else da
839835 let fQ = bJ(bf(bn))
840836 let fR = bJ(bf(bo))
841837 let fS = if (fN)
842838 then fQ
843839 else fR
844840 let fT = toBigInt(fS)
845841 let fA = toBigInt(valueOrErrorMessage(assetInfo(bm), (("asset " + toBase58String(bm)) + " doesn't exist")).quantity)
846842 let fU = toBigInt(ft)
847843 let fV = max([0, toInt(((fO * (d - pow((d - ((fU * d) / fA)), 18, h, 0, 18, DOWN))) / d))])
848844 let fW = fd(fV, aX)
849845 let fX = fW._1
850846 let fe = fW._2
851847 let fY = if (fN)
852848 then $Tuple4(fX, 0, (fQ - fV), fR)
853849 else $Tuple4(0, fX, fQ, (fR - fV))
854850 let fZ = fY._1
855851 let ga = fY._2
856852 let gb = fY._3
857853 let gc = fY._4
858854 let fw = bM(D(gc, bq), D(gb, bp))
859855 let fx = H(fw, b)
860856 let el = if (fi)
861857 then nil
862858 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bF(fZ, ga, ft, fx, height, lastBlock.timestamp)), IntegerEntry(W(), fx), IntegerEntry(X(height, lastBlock.timestamp), fx)]
863859 let fE = bM(D(fR, bq), D(fQ, bp))
864860 let fF = H(fE, b)
865861 let fG = {
866862 let gd = (toInt(fraction(fO, fU, fA)) * 2)
867863 fraction((fX - gd), b, gd)
868864 }
869865 $Tuple5(fX, el, fe, fG, fN)
870866 }
871867 else throw("Strict value is not equal to itself.")
872868 }
873869
874870
875871 func ge () = {
876872 let bT = getString(U())
877873 if ($isInstanceOf(bT, "String"))
878874 then {
879875 let gf = bT
880876 fromBase58String(gf)
881877 }
882878 else if ($isInstanceOf(bT, "Unit"))
883879 then unit
884880 else throw("Match error")
885881 }
886882
887883
888884 func gg () = {
889885 let bT = getString(V())
890886 if ($isInstanceOf(bT, "String"))
891887 then {
892888 let gf = bT
893889 fromBase58String(gf)
894890 }
895891 else if ($isInstanceOf(bT, "Unit"))
896892 then unit
897893 else throw("Match error")
898894 }
899895
900896
901897 func gh (eS) = {
902898 let bT = ge()
903899 if ($isInstanceOf(bT, "ByteVector"))
904900 then {
905901 let gi = bT
906902 (eS.callerPublicKey == gi)
907903 }
908904 else if ($isInstanceOf(bT, "Unit"))
909905 then (eS.caller == this)
910906 else throw("Match error")
911907 }
912908
913909
914910 func gj (eS) = {
915911 let gk = throw("Permission denied")
916912 let bT = ge()
917913 if ($isInstanceOf(bT, "ByteVector"))
918914 then {
919915 let gi = bT
920916 if ((eS.callerPublicKey == gi))
921917 then true
922918 else gk
923919 }
924920 else if ($isInstanceOf(bT, "Unit"))
925921 then if ((eS.caller == this))
926922 then true
927923 else gk
928924 else throw("Match error")
929925 }
930926
931927
932928 @Callable(eS)
933-func rebalance () = (cC(aM(this, ae())) ++ cC(aM(this, af())))
929+func rebalance () = (cD(aM(this, ae())) ++ cD(aM(this, af())))
934930
935931
936932
937933 @Callable(eS)
938934 func calculateAmountOutForSwapREADONLY (gl,gm,gn) = {
939935 let go = if ((gm == false))
940936 then {
941937 let gp = aM(this, af())
942938 let gq = aM(this, ae())
943939 $Tuple2(gp, gq)
944940 }
945941 else {
946942 let gp = aM(this, ae())
947943 let gq = aM(this, af())
948944 $Tuple2(gp, gq)
949945 }
950946 let gp = go._1
951947 let gq = go._2
952948 let gr = bJ(gq)
953949 let gs = bJ(gp)
954950 let gt = fraction(gs, gl, (gr + gl))
955951 let gu = (toBigInt(gr) * toBigInt(gs))
956952 let gv = (((toBigInt(bJ(gq)) + toBigInt(gl)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
957953 let gw = if ((gv >= gu))
958954 then true
959955 else throw("new K is fewer error")
960956 if ((gw == gw))
961957 then $Tuple2(nil, gt)
962958 else throw("Strict value is not equal to itself.")
963959 }
964960
965961
966962
967963 @Callable(eS)
968964 func calculateAmountOutForSwapAndSendTokens (gl,gm,gx,gy,gn) = {
969965 let gz = {
970966 let aW = invoke(aT, "getSwapContractREADONLY", nil, nil)
971967 if ($isInstanceOf(aW, "String"))
972968 then aW
973969 else throw(($getType(aW) + " couldn't be cast to String"))
974970 }
975971 let fM = [if ((value(eS.payments[0]).amount >= gl))
976972 then true
977973 else aQ("Wrong amount"), if ((eS.caller == addressFromStringValue(gz)))
978974 then true
979975 else aQ("Permission denied")]
980976 if ((fM == fM))
981977 then {
982978 let eT = value(eS.payments[0])
983979 let gq = bf(eT.assetId)
984980 let gp = if ((gm == false))
985981 then aM(this, af())
986982 else aM(this, ae())
987983 let gr = (bJ(gq) - value(eS.payments[0]).amount)
988984 let gs = bJ(gp)
989985 let gt = fraction(gs, gl, (gr + gl))
990986 let gu = (toBigInt(gr) * toBigInt(gs))
991987 let gv = ((toBigInt(bJ(gq)) + toBigInt(gn)) * (toBigInt(bJ(gp)) - toBigInt(gt)))
992988 let gw = if ((gv >= gu))
993989 then true
994990 else throw("new K is fewer error")
995991 if ((gw == gw))
996992 then {
997993 let gA = if ((gt >= gx))
998994 then true
999995 else throw("Exchange result is fewer coins than expected")
1000996 if ((gA == gA))
1001997 then {
1002- let gB = cC(gq)
998+ let gB = cD(gq)
1003999 if ((gB == gB))
10041000 then {
10051001 let gC = cK(gp, gt)
10061002 if ((gC == gC))
10071003 then $Tuple2(((gC ++ gB) ++ [ScriptTransfer(addressFromStringValue(gy), gt, bd(gp))]), gt)
10081004 else throw("Strict value is not equal to itself.")
10091005 }
10101006 else throw("Strict value is not equal to itself.")
10111007 }
10121008 else throw("Strict value is not equal to itself.")
10131009 }
10141010 else throw("Strict value is not equal to itself.")
10151011 }
10161012 else throw("Strict value is not equal to itself.")
10171013 }
10181014
10191015
10201016
10211017 @Callable(eS)
10221018 func setManager (gD) = {
10231019 let gE = gj(eS)
10241020 if ((gE == gE))
10251021 then {
10261022 let gF = fromBase58String(gD)
10271023 if ((gF == gF))
10281024 then [StringEntry(V(), gD)]
10291025 else throw("Strict value is not equal to itself.")
10301026 }
10311027 else throw("Strict value is not equal to itself.")
10321028 }
10331029
10341030
10351031
10361032 @Callable(eS)
10371033 func confirmManager () = {
10381034 let gG = gg()
10391035 let gH = if (isDefined(gG))
10401036 then true
10411037 else throw("No pending manager")
10421038 if ((gH == gH))
10431039 then {
10441040 let gI = if ((eS.callerPublicKey == value(gG)))
10451041 then true
10461042 else throw("You are not pending manager")
10471043 if ((gI == gI))
10481044 then [StringEntry(U(), toBase58String(value(gG))), DeleteEntry(V())]
10491045 else throw("Strict value is not equal to itself.")
10501046 }
10511047 else throw("Strict value is not equal to itself.")
10521048 }
10531049
10541050
10551051
10561052 @Callable(eS)
10571053 func put (dG,gJ) = if ((0 > dG))
10581054 then throw("Invalid slippageTolerance passed")
10591055 else {
10601056 let eY = eV(eS, dG, true)
10611057 let ei = eY._2
10621058 let dl = eY._7
10631059 let dE = eY._9
10641060 let ej = eY._10
10651061 let ek = eY._11
10661062 let gK = eY._12
10671063 let gL = eY._13
10681064 let eW = toBigInt(value(eS.payments[0]).amount)
10691065 let eX = toBigInt(value(eS.payments[1]).amount)
10701066 let ez = es(eW, eX, toBigInt(0))
10711067 if ((ez == ez))
10721068 then {
10731069 let fa = invoke(aT, "emit", [ei], nil)
10741070 if ((fa == fa))
10751071 then {
10761072 let fb = {
10771073 let bT = fa
10781074 if ($isInstanceOf(bT, "Address"))
10791075 then {
10801076 let fc = bT
10811077 invoke(fc, "emit", [ei], nil)
10821078 }
10831079 else unit
10841080 }
10851081 if ((fb == fb))
10861082 then {
10871083 let gM = if ((ej > 0))
10881084 then invoke(bt, "put", nil, [AttachedPayment(gK, ej)])
10891085 else nil
10901086 if ((gM == gM))
10911087 then {
10921088 let gN = if ((ek > 0))
10931089 then invoke(bt, "put", nil, [AttachedPayment(gL, ek)])
10941090 else nil
10951091 if ((gN == gN))
10961092 then {
10971093 let gO = if (gJ)
10981094 then {
10991095 let gP = invoke(bs, "stake", nil, [AttachedPayment(dl, ei)])
11001096 if ((gP == gP))
11011097 then nil
11021098 else throw("Strict value is not equal to itself.")
11031099 }
11041100 else [ScriptTransfer(eS.caller, ei, dl)]
11051101 let gQ = eA(0, 0, 0)
11061102 if ((gQ == gQ))
11071103 then {
11081104 let er = gQ._2
11091105 let gR = gQ._1
11101106 let gS = eE(ez, er)
11111107 if ((gS == gS))
11121108 then {
11131109 let gT = invoke(this, "rebalance", nil, nil)
11141110 if ((gT == gT))
11151111 then ((dE ++ gO) ++ gR)
11161112 else throw("Strict value is not equal to itself.")
11171113 }
11181114 else throw("Strict value is not equal to itself.")
11191115 }
11201116 else throw("Strict value is not equal to itself.")
11211117 }
11221118 else throw("Strict value is not equal to itself.")
11231119 }
11241120 else throw("Strict value is not equal to itself.")
11251121 }
11261122 else throw("Strict value is not equal to itself.")
11271123 }
11281124 else throw("Strict value is not equal to itself.")
11291125 }
11301126 else throw("Strict value is not equal to itself.")
11311127 }
11321128
11331129
11341130
11351131 @Callable(eS)
11361132 func putForFree (gU) = if ((0 > gU))
11371133 then throw("Invalid value passed")
11381134 else {
11391135 let eY = eV(eS, gU, false)
11401136 let dE = eY._9
11411137 let eW = toBigInt(value(eS.payments[0]).amount)
11421138 let eX = toBigInt(value(eS.payments[1]).amount)
11431139 let ez = es(eW, eX, toBigInt(0))
11441140 if ((ez == ez))
11451141 then {
11461142 let gV = eA(0, 0, 0)
11471143 let gR = gV._1
11481144 let er = gV._2
11491145 let gS = eE(ez, er)
11501146 if ((gS == gS))
11511147 then (dE ++ gR)
11521148 else throw("Strict value is not equal to itself.")
11531149 }
11541150 else throw("Strict value is not equal to itself.")
11551151 }
11561152
11571153
11581154
11591155 @Callable(eS)
11601156 func putOneTkn (gW,gX) = {
11611157 let gY = {
11621158 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11631159 if ($isInstanceOf(aW, "Boolean"))
11641160 then aW
11651161 else throw(($getType(aW) + " couldn't be cast to Boolean"))
11661162 }
11671163 let gZ = if (if (if (aY())
11681164 then true
11691165 else (bl == l))
11701166 then true
11711167 else (bl == n))
11721168 then true
11731169 else gY
11741170 let fM = [if (if (!(gZ))
11751171 then true
11761172 else gh(eS))
11771173 then true
11781174 else aQ("put operation is blocked by admin"), if ((size(eS.payments) == 1))
11791175 then true
11801176 else aQ("exactly 1 payment are expected")]
11811177 if ((fM == fM))
11821178 then {
11831179 let ha = eS.payments[0]
11841180 let fh = ha.assetId
11851181 let fg = ha.amount
11861182 let ez = if ((fh == bn))
11871183 then es(toBigInt(fg), toBigInt(0), toBigInt(0))
11881184 else if ((fh == bo))
11891185 then es(toBigInt(0), toBigInt(fg), toBigInt(0))
11901186 else aQ("payment asset is not supported")
11911187 if ((ez == ez))
11921188 then {
11931189 let ab = eS.caller
11941190 let ac = eS.transactionId
11951191 let hb = ff(fg, fh, ab, ac)
11961192 if ((hb == hb))
11971193 then {
11981194 let fl = hb._5
11991195 let hc = hb._4
12001196 let fe = hb._3
12011197 let el = hb._2
12021198 let hd = hb._1
12031199 let he = if (if ((gW > 0))
12041200 then (gW > hd)
12051201 else false)
12061202 then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
12071203 else hd
12081204 let fa = eZ(he)
12091205 if ((fa == fa))
12101206 then {
12111207 let gO = if (gX)
12121208 then {
12131209 let hf = invoke(bs, "stake", nil, [AttachedPayment(bm, he)])
12141210 if ((hf == hf))
12151211 then nil
12161212 else throw("Strict value is not equal to itself.")
12171213 }
12181214 else [ScriptTransfer(eS.caller, he, bm)]
12191215 let hg = if ((fe > 0))
12201216 then [ScriptTransfer(aU, fe, fh)]
12211217 else nil
12221218 let hh = if ((this == aU))
12231219 then $Tuple2(0, 0)
12241220 else if (fl)
12251221 then $Tuple2(-(fe), 0)
12261222 else $Tuple2(0, -(fe))
12271223 let eB = hh._1
12281224 let eC = hh._2
12291225 let hi = eA(eB, eC, 0)
12301226 let gR = hi._1
12311227 let er = hi._2
12321228 let eL = value(getString(aj))
12331229 let gS = eE(ez, er)
12341230 if ((gS == gS))
12351231 then {
12361232 let gT = invoke(this, "rebalance", nil, nil)
12371233 if ((gT == gT))
12381234 then $Tuple2((((el ++ gO) ++ hg) ++ gR), he)
12391235 else throw("Strict value is not equal to itself.")
12401236 }
12411237 else throw("Strict value is not equal to itself.")
12421238 }
12431239 else throw("Strict value is not equal to itself.")
12441240 }
12451241 else throw("Strict value is not equal to itself.")
12461242 }
12471243 else throw("Strict value is not equal to itself.")
12481244 }
12491245 else throw("Strict value is not equal to itself.")
12501246 }
12511247
12521248
12531249
12541250 @Callable(eS)
12551251 func putOneTknREADONLY (fh,fg) = {
12561252 let hj = ff(fg, bd(fh), unit, unit)
12571253 let hd = hj._1
12581254 let el = hj._2
12591255 let fe = hj._3
12601256 let hc = hj._4
12611257 let fl = hj._5
12621258 $Tuple2(nil, $Tuple3(hd, fe, hc))
12631259 }
12641260
12651261
12661262
12671263 @Callable(eS)
12681264 func getOneTkn (hk,gW) = {
12691265 let gY = {
12701266 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12711267 if ($isInstanceOf(aW, "Boolean"))
12721268 then aW
12731269 else throw(($getType(aW) + " couldn't be cast to Boolean"))
12741270 }
12751271 let hl = if (if (aY())
12761272 then true
12771273 else (bl == n))
12781274 then true
12791275 else gY
12801276 let fM = [if (if (!(hl))
12811277 then true
12821278 else gh(eS))
12831279 then true
12841280 else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 1))
12851281 then true
12861282 else aQ("exactly 1 payment are expected")]
12871283 if ((fM == fM))
12881284 then {
12891285 let fL = bd(hk)
12901286 let ha = eS.payments[0]
12911287 let fh = ha.assetId
12921288 let ft = ha.amount
12931289 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
12941290 if ((ez == ez))
12951291 then {
12961292 let ab = eS.caller
12971293 let ac = eS.transactionId
12981294 let hm = fK(fL, ft, fh, ab, ac)
12991295 if ((hm == hm))
13001296 then {
13011297 let fN = hm._5
13021298 let hc = hm._4
13031299 let fe = hm._3
13041300 let el = hm._2
13051301 let hn = hm._1
13061302 let bW = if (if ((gW > 0))
13071303 then (gW > hn)
13081304 else false)
13091305 then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
13101306 else hn
13111307 let ho = invoke(aT, "burn", [ft], [AttachedPayment(fh, ft)])
13121308 if ((ho == ho))
13131309 then {
13141310 let gC = cK(hk, bW)
13151311 if ((gC == gC))
13161312 then {
13171313 let hp = [ScriptTransfer(ab, bW, fL)]
13181314 let hg = if ((fe > 0))
13191315 then [ScriptTransfer(aU, fe, fL)]
13201316 else nil
13211317 let hq = {
13221318 let hr = if ((this == aU))
13231319 then 0
13241320 else fe
13251321 if (fN)
13261322 then $Tuple2(-((bW + hr)), 0)
13271323 else $Tuple2(0, -((bW + hr)))
13281324 }
13291325 let eB = hq._1
13301326 let eC = hq._2
13311327 let hs = eA(eB, eC, 0)
13321328 let gR = hs._1
13331329 let er = hs._2
13341330 let gS = eE(ez, er)
13351331 if ((gS == gS))
13361332 then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
13371333 else throw("Strict value is not equal to itself.")
13381334 }
13391335 else throw("Strict value is not equal to itself.")
13401336 }
13411337 else throw("Strict value is not equal to itself.")
13421338 }
13431339 else throw("Strict value is not equal to itself.")
13441340 }
13451341 else throw("Strict value is not equal to itself.")
13461342 }
13471343 else throw("Strict value is not equal to itself.")
13481344 }
13491345
13501346
13511347
13521348 @Callable(eS)
13531349 func getOneTknREADONLY (fL,ft) = {
13541350 let ht = fK(bd(fL), ft, bm, unit, unit)
13551351 let hn = ht._1
13561352 let el = ht._2
13571353 let fe = ht._3
13581354 let hc = ht._4
13591355 let fN = ht._5
13601356 $Tuple2(nil, $Tuple3(hn, fe, hc))
13611357 }
13621358
13631359
13641360
13651361 @Callable(eS)
13661362 func unstakeAndGetOneTkn (hu,hk,gW) = {
13671363 let gY = {
13681364 let aW = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13691365 if ($isInstanceOf(aW, "Boolean"))
13701366 then aW
13711367 else throw(($getType(aW) + " couldn't be cast to Boolean"))
13721368 }
13731369 let hl = if (if (aY())
13741370 then true
13751371 else (bl == n))
13761372 then true
13771373 else gY
13781374 let fM = [if (if (!(hl))
13791375 then true
13801376 else gh(eS))
13811377 then true
13821378 else aQ("get operation is blocked by admin"), if ((size(eS.payments) == 0))
13831379 then true
13841380 else aQ("no payments are expected")]
13851381 if ((fM == fM))
13861382 then {
13871383 let fL = bd(hk)
13881384 let ab = eS.caller
13891385 let ac = eS.transactionId
13901386 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
13911387 if ((ez == ez))
13921388 then {
13931389 let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
13941390 if ((hv == hv))
13951391 then {
13961392 let hw = fK(fL, hu, bm, ab, ac)
13971393 if ((hw == hw))
13981394 then {
13991395 let fN = hw._5
14001396 let hc = hw._4
14011397 let fe = hw._3
14021398 let el = hw._2
14031399 let hn = hw._1
14041400 let bW = if (if ((gW > 0))
14051401 then (gW > hn)
14061402 else false)
14071403 then aQ(makeString(["amount to receive is less than ", toString(gW)], ""))
14081404 else hn
14091405 let ho = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
14101406 if ((ho == ho))
14111407 then {
14121408 let gC = cK(hk, bW)
14131409 if ((gC == gC))
14141410 then {
14151411 let hp = [ScriptTransfer(eS.caller, bW, fL)]
14161412 let hg = if ((fe > 0))
14171413 then [ScriptTransfer(aU, fe, fL)]
14181414 else nil
14191415 let hx = {
14201416 let hr = if ((this == aU))
14211417 then 0
14221418 else fe
14231419 if (fN)
14241420 then $Tuple2(-((bW + hr)), 0)
14251421 else $Tuple2(0, -((bW + hr)))
14261422 }
14271423 let eB = hx._1
14281424 let eC = hx._2
14291425 let hy = eA(eB, eC, 0)
14301426 let gR = hy._1
14311427 let er = hy._2
14321428 let gS = eE(ez, er)
14331429 if ((gS == gS))
14341430 then $Tuple2(((((el ++ gC) ++ hp) ++ hg) ++ gR), bW)
14351431 else throw("Strict value is not equal to itself.")
14361432 }
14371433 else throw("Strict value is not equal to itself.")
14381434 }
14391435 else throw("Strict value is not equal to itself.")
14401436 }
14411437 else throw("Strict value is not equal to itself.")
14421438 }
14431439 else throw("Strict value is not equal to itself.")
14441440 }
14451441 else throw("Strict value is not equal to itself.")
14461442 }
14471443 else throw("Strict value is not equal to itself.")
14481444 }
14491445
14501446
14511447
14521448 @Callable(eS)
14531449 func get () = {
14541450 let dW = eR(eS)
14551451 let hz = dW._1
14561452 let dB = dW._2
14571453 let eU = dW._3
14581454 let dj = dW._4
14591455 let dE = dW._5
14601456 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
14611457 if ((ez == ez))
14621458 then {
14631459 let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
14641460 if ((hA == hA))
14651461 then {
14661462 let hB = eA(-(hz), -(dB), 0)
14671463 let gR = hB._1
14681464 let er = hB._2
14691465 let gS = eE(ez, er)
14701466 if ((gS == gS))
14711467 then (dE ++ gR)
14721468 else throw("Strict value is not equal to itself.")
14731469 }
14741470 else throw("Strict value is not equal to itself.")
14751471 }
14761472 else throw("Strict value is not equal to itself.")
14771473 }
14781474
14791475
14801476
14811477 @Callable(eS)
14821478 func getNoLess (hC,hD) = {
14831479 let dW = eR(eS)
14841480 let dA = dW._1
14851481 let dB = dW._2
14861482 let eU = dW._3
14871483 let dj = dW._4
14881484 let dE = dW._5
14891485 if ((hC > dA))
14901486 then throw(((("noLessThenAmtAsset failed: " + toString(dA)) + " < ") + toString(hC)))
14911487 else if ((hD > dB))
14921488 then throw(((("noLessThenPriceAsset failed: " + toString(dB)) + " < ") + toString(hD)))
14931489 else {
14941490 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
14951491 if ((ez == ez))
14961492 then {
14971493 let hA = invoke(aT, "burn", [eU], [AttachedPayment(dj, eU)])
14981494 if ((hA == hA))
14991495 then {
15001496 let hE = eA(-(dA), -(dB), 0)
15011497 let gR = hE._1
15021498 let er = hE._2
15031499 let gS = eE(ez, er)
15041500 if ((gS == gS))
15051501 then (dE ++ gR)
15061502 else throw("Strict value is not equal to itself.")
15071503 }
15081504 else throw("Strict value is not equal to itself.")
15091505 }
15101506 else throw("Strict value is not equal to itself.")
15111507 }
15121508 }
15131509
15141510
15151511
15161512 @Callable(eS)
15171513 func unstakeAndGet (bW) = {
15181514 let hF = if ((size(eS.payments) != 0))
15191515 then throw("No payments are expected")
15201516 else true
15211517 if ((hF == hF))
15221518 then {
15231519 let cY = ba()
15241520 let dl = fromBase58String(cY[q])
15251521 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
15261522 if ((ez == ez))
15271523 then {
15281524 let hv = invoke(bs, "unstake", [toBase58String(dl), bW], nil)
15291525 if ((hv == hv))
15301526 then {
15311527 let dW = dh(toBase58String(eS.transactionId), toBase58String(dl), bW, eS.caller)
15321528 let dA = dW._1
15331529 let dB = dW._2
15341530 let do = parseIntValue(dW._9)
15351531 let dE = dW._10
15361532 let hG = if (if (aY())
15371533 then true
15381534 else (do == n))
15391535 then throw(("Get operation is blocked by admin. Status = " + toString(do)))
15401536 else true
15411537 if ((hG == hG))
15421538 then {
15431539 let hA = invoke(aT, "burn", [bW], [AttachedPayment(dl, bW)])
15441540 if ((hA == hA))
15451541 then {
15461542 let hH = eA(-(dA), -(dB), 0)
15471543 let gR = hH._1
15481544 let er = hH._2
15491545 let gS = eE(ez, er)
15501546 if ((gS == gS))
15511547 then (dE ++ gR)
15521548 else throw("Strict value is not equal to itself.")
15531549 }
15541550 else throw("Strict value is not equal to itself.")
15551551 }
15561552 else throw("Strict value is not equal to itself.")
15571553 }
15581554 else throw("Strict value is not equal to itself.")
15591555 }
15601556 else throw("Strict value is not equal to itself.")
15611557 }
15621558 else throw("Strict value is not equal to itself.")
15631559 }
15641560
15651561
15661562
15671563 @Callable(eS)
15681564 func unstakeAndGetNoLess (hu,hI,hD) = {
15691565 let hl = if (aY())
15701566 then true
15711567 else (bl == n)
15721568 let fM = [if (!(hl))
15731569 then true
15741570 else throw("get operation is blocked by admin"), if ((size(eS.payments) == 0))
15751571 then true
15761572 else throw("no payments are expected")]
15771573 if ((fM == fM))
15781574 then {
15791575 let ez = es(toBigInt(0), toBigInt(0), toBigInt(0))
15801576 if ((ez == ez))
15811577 then {
15821578 let hv = invoke(bs, "unstake", [toBase58String(bm), hu], nil)
15831579 if ((hv == hv))
15841580 then {
15851581 let dW = dh(toBase58String(eS.transactionId), toBase58String(bm), hu, eS.caller)
15861582 let dA = dW._1
15871583 let dB = dW._2
15881584 let dE = dW._10
15891585 let hJ = [if ((dA >= hI))
15901586 then true
15911587 else throw(makeString(["amount asset amount to receive is less than ", toString(hI)], "")), if ((dB >= hD))
15921588 then true
15931589 else throw(makeString(["price asset amount to receive is less than ", toString(hD)], ""))]
15941590 if ((hJ == hJ))
15951591 then {
15961592 let hA = invoke(aT, "burn", [hu], [AttachedPayment(bm, hu)])
15971593 if ((hA == hA))
15981594 then {
15991595 let hK = eA(-(dA), -(dB), 0)
16001596 let gR = hK._1
16011597 let er = hK._2
16021598 let gS = eE(ez, er)
16031599 if ((gS == gS))
16041600 then (dE ++ gR)
16051601 else throw("Strict value is not equal to itself.")
16061602 }
16071603 else throw("Strict value is not equal to itself.")
16081604 }
16091605 else throw("Strict value is not equal to itself.")
16101606 }
16111607 else throw("Strict value is not equal to itself.")
16121608 }
16131609 else throw("Strict value is not equal to itself.")
16141610 }
16151611 else throw("Strict value is not equal to itself.")
16161612 }
16171613
16181614
16191615
16201616 @Callable(eS)
16211617 func activate (hL,hM) = if ((toString(eS.caller) != toString(aT)))
16221618 then throw("permissions denied")
16231619 else $Tuple2([StringEntry(ae(), hL), StringEntry(af(), hM)], "success")
16241620
16251621
16261622
16271623 @Callable(eS)
16281624 func refreshKLp () = {
16291625 let hN = valueOrElse(getInteger(ak), 0)
16301626 let hO = if (((height - hN) >= an))
16311627 then unit
16321628 else aQ(makeString([toString(an), " blocks have not passed since the previous call"], ""))
16331629 if ((hO == hO))
16341630 then {
16351631 let eL = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), aS("invalid kLp"))
16361632 let hP = eA(0, 0, 0)
16371633 let hQ = hP._1
16381634 let er = hP._2
16391635 let eD = if ((eL != er))
16401636 then hQ
16411637 else aQ("nothing to refresh")
16421638 $Tuple2(eD, toString(er))
16431639 }
16441640 else throw("Strict value is not equal to itself.")
16451641 }
16461642
16471643
16481644
16491645 @Callable(eS)
16501646 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, ba())
16511647
16521648
16531649
16541650 @Callable(eS)
16551651 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bJ(ap))
16561652
16571653
16581654
16591655 @Callable(eS)
16601656 func calcPricesWrapperREADONLY (cS,cT,cX) = {
16611657 let dg = cW(cS, cT, cX)
16621658 $Tuple2(nil, [toString(dg[0]), toString(dg[1]), toString(dg[2])])
16631659 }
16641660
16651661
16661662
16671663 @Callable(eS)
16681664 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16691665
16701666
16711667
16721668 @Callable(eS)
16731669 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16741670
16751671
16761672
16771673 @Callable(eS)
16781674 func calcPriceBigIntWrapperREADONLY (bN,bO) = $Tuple2(nil, toString(bM(parseBigIntValue(bN), parseBigIntValue(bO))))
16791675
16801676
16811677
16821678 @Callable(eS)
16831679 func estimatePutOperationWrapperREADONLY (di,dG,dH,dI,dJ,dK,ab,dL,dM) = $Tuple2(nil, dF(di, dG, dH, dI, dJ, dK, ab, dL, dM))
16841680
16851681
16861682
16871683 @Callable(eS)
16881684 func estimateGetOperationWrapperREADONLY (di,dj,dk,ab) = {
16891685 let dW = dh(di, dj, dk, addressFromStringValue(ab))
16901686 $Tuple2(nil, $Tuple10(dW._1, dW._2, dW._3, dW._4, dW._5, dW._6, dW._7, toString(dW._8), dW._9, dW._10))
16911687 }
16921688
16931689
16941690
16951691 @Callable(eS)
16961692 func statsREADONLY () = {
16971693 let cY = ba()
16981694 let dl = fromBase58String(cY[q])
16991695 let hR = cY[r]
17001696 let hS = cY[s]
17011697 let dP = cY[v]
17021698 let dQ = cY[w]
17031699 let cZ = parseIntValue(cY[t])
17041700 let da = parseIntValue(cY[u])
17051701 let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
17061702 let hU = bJ(hR)
17071703 let hV = bJ(hS)
17081704 let hW = if ((hT == 0))
17091705 then [e, e, e]
17101706 else cW(hU, hV, hT)
17111707 let dv = 0
17121708 let hX = H(hW[1], b)
17131709 let hY = H(hW[2], b)
17141710 let hZ = value(getInteger(aT, aD(toString(this))))
17151711 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hU), toString(hV), toString(hT), toString(dv), toString(hX), toString(hY), toString(hZ)], j))
17161712 }
17171713
17181714
17191715
17201716 @Callable(eS)
17211717 func evaluatePutByAmountAssetREADONLY (dH) = {
17221718 let cY = ba()
17231719 let dl = fromBase58String(cY[q])
17241720 let dN = cY[r]
17251721 let dm = fromBase58String(dN)
17261722 let dO = cY[s]
17271723 let dn = fromBase58String(dO)
17281724 let cZ = parseIntValue(cY[t])
17291725 let da = parseIntValue(cY[u])
17301726 let do = cY[p]
17311727 let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
17321728 let hU = bJ(dN)
17331729 let hV = bJ(dO)
17341730 let cU = D(hU, cZ)
17351731 let cV = D(hV, da)
17361732 let du = if ((hT == 0))
17371733 then e
17381734 else bM(cV, cU)
17391735 let dT = D(dH, cZ)
17401736 let dU = fraction(dT, du, d)
17411737 let dJ = H(dU, da)
17421738 let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
17431739 let ee = eY._1
17441740 let ia = eY._3
17451741 let dq = eY._4
17461742 let ds = eY._5
17471743 let dp = eY._6
17481744 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
17491745 }
17501746
17511747
17521748
17531749 @Callable(eS)
17541750 func evaluatePutByPriceAssetREADONLY (dJ) = {
17551751 let cY = ba()
17561752 let dl = fromBase58String(cY[q])
17571753 let dN = cY[r]
17581754 let dm = fromBase58String(dN)
17591755 let dO = cY[s]
17601756 let dn = fromBase58String(dO)
17611757 let cZ = parseIntValue(cY[t])
17621758 let da = parseIntValue(cY[u])
17631759 let do = cY[p]
17641760 let hT = valueOrErrorMessage(assetInfo(dl), (("Asset " + toBase58String(dl)) + " doesn't exist")).quantity
17651761 let ib = bJ(dN)
17661762 let ic = bJ(dO)
17671763 let id = D(ib, cZ)
17681764 let ie = D(ic, da)
17691765 let du = if ((hT == 0))
17701766 then e
17711767 else bM(ie, id)
17721768 let dU = D(dJ, da)
17731769 let dT = fraction(dU, d, du)
17741770 let dH = H(dT, cZ)
17751771 let eY = dF("", 500000, dH, dm, dJ, dn, "", true, false)
17761772 let ee = eY._1
17771773 let ia = eY._3
17781774 let dq = eY._4
17791775 let ds = eY._5
17801776 let dp = eY._6
17811777 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(ee), toString(H(du, b)), toString(dq), toString(ds), toString(dp), do, toString(dH), toString(dJ)], j))
17821778 }
17831779
17841780
17851781
17861782 @Callable(eS)
17871783 func evaluateGetREADONLY (if,ig) = {
17881784 let dW = dh("", if, ig, this)
17891785 let dA = dW._1
17901786 let dB = dW._2
17911787 let dq = dW._5
17921788 let ds = dW._6
17931789 let dp = dW._7
17941790 let dv = dW._8
17951791 let do = parseIntValue(dW._9)
17961792 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dA), toString(dB), toString(dq), toString(ds), toString(dp), toString(dv), toString(do)], j))
17971793 }
17981794
17991795
18001796 @Verifier(ih)
18011797 func ii () = {
18021798 let ij = {
18031799 let bT = ge()
18041800 if ($isInstanceOf(bT, "ByteVector"))
18051801 then {
18061802 let gi = bT
18071803 gi
18081804 }
18091805 else if ($isInstanceOf(bT, "Unit"))
18101806 then ih.senderPublicKey
18111807 else throw("Match error")
18121808 }
18131809 let bT = ih
18141810 if ($isInstanceOf(bT, "Order"))
18151811 then {
18161812 let eH = bT
18171813 let ik = aZ()
18181814 let il = eG(eH)
18191815 let aI = il._1
18201816 let aJ = il._2
18211817 let aK = sigVerify(eH.bodyBytes, eH.proofs[0], eH.senderPublicKey)
18221818 let aL = sigVerify(eH.bodyBytes, eH.proofs[1], ik)
18231819 if (if (if (aI)
18241820 then aK
18251821 else false)
18261822 then aL
18271823 else false)
18281824 then true
18291825 else aH(aI, aJ, aK, aL)
18301826 }
18311827 else if ($isInstanceOf(bT, "SetScriptTransaction"))
18321828 then {
18331829 let gf = bT
18341830 if (sigVerify(ih.bodyBytes, ih.proofs[0], ij))
18351831 then true
18361832 else {
18371833 let im = blake2b256(value(gf.script))
18381834 let in = fromBase64String(value(getString(aT, aF())))
18391835 let io = scriptHash(this)
18401836 if ((in == im))
18411837 then (io != im)
18421838 else false
18431839 }
18441840 }
18451841 else sigVerify(ih.bodyBytes, ih.proofs[0], ij)
18461842 }
18471843

github/deemru/w8io/3ef1775 
259.96 ms