tx · 54K946RUBtg1m62kEtF3LsAdNMyrMpz5fRv1iwTUYwdS

3MxJDpjvSFyXbMeYtWutdNBdiRAtY7RsvcU:  -0.04300000 Waves

2023.09.21 14:41 [2765089] smart account 3MxJDpjvSFyXbMeYtWutdNBdiRAtY7RsvcU > SELF 0.00000000 Waves

{ "type": 13, "id": "54K946RUBtg1m62kEtF3LsAdNMyrMpz5fRv1iwTUYwdS", "fee": 4300000, "feeAssetId": null, "timestamp": 1695296526681, "version": 2, "chainId": 84, "sender": "3MxJDpjvSFyXbMeYtWutdNBdiRAtY7RsvcU", "senderPublicKey": "HsmD4gGK1QegUTibbXdp3zmCr1mZdcbvSGs6XjoKDQpX", "proofs": [ "eLgtp1ppTckMTAayq6yjjopViQKRT6tKFFoi7HbaXNQpwPKS8oZbESVRBdpMSi5QAVbsVPqX1cGcEDXeu9hE6i3" ], "script": "base64:BgK4OAgCEgASBQoDAQQBEgcKBQEEAQgBEgQKAgEEEgMKAQESBAoCAQQSBAoCCAESBAoCCAESBAoCCAESBQoDAQgBEgASBAoCAQESAwoBARIFCgMBAQESBAoCCAgSABIAEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igt0b1gxOEJpZ0ludCIHZnJvbVgxOCIDdmFsIg9yZXN1bHRTY2FsZU11bHQiDGZyb21YMThSb3VuZCIFcm91bmQiB3RvU2NhbGUiA2FtdCIIcmVzU2NhbGUiCGN1clNjYWxlIgNhYnMiCWFic0JpZ0ludCIMc3dhcENvbnRyYWN0IgJmYyITa2V5TWFuYWdlclB1YmxpY0tleSIWa2V5TWFuYWdlclZhdWx0QWRkcmVzcyICcGwiAnBoIgFoIgl0aW1lc3RhbXAiA3BhdSILdXNlckFkZHJlc3MiBHR4SWQiA2dhdSICYWEiAnBhIgZrZXlGZWUiCmZlZURlZmF1bHQiA2ZlZSIGa2V5S0xwIhVrZXlLTHBSZWZyZXNoZWRIZWlnaHQiEmtleUtMcFJlZnJlc2hEZWxheSIWa0xwUmVmcmVzaERlbGF5RGVmYXVsdCIPa0xwUmVmcmVzaERlbGF5IhRrZXlBZGRpdGlvbmFsQmFsYW5jZSIHYXNzZXRJZCIWa2V5U3Rha2luZ0Fzc2V0QmFsYW5jZSIaZ2V0QWRkaXRpb25hbEJhbGFuY2VPclplcm8iHGdldFN0YWtpbmdBc3NldEJhbGFuY2VPclplcm8iEGtleUZhY3RvcnlDb25maWciDWtleU1hdGNoZXJQdWIiKWtleU1hcHBpbmdQb29sQ29udHJhY3RBZGRyZXNzVG9Qb29sQXNzZXRzIhNwb29sQ29udHJhY3RBZGRyZXNzIg1rZXlQb29sQ29uZmlnIglpQW10QXNzZXQiC2lQcmljZUFzc2V0Ih9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkIgxiYXNlQXNzZXRTdHIiE2tleUFsbFBvb2xzU2h1dGRvd24iDWtleVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIWa2V5QWxsb3dlZExwU2NyaXB0SGFzaCIWa2V5RmVlQ29sbGVjdG9yQWRkcmVzcyIWa2V5U2tpcE9yZGVyVmFsaWRhdGlvbiILcG9vbEFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCIOb3JkZXJWYWxpZEluZm8iC3NlbmRlclZhbGlkIgxtYXRjaGVyVmFsaWQiF2FkZHJlc3NGcm9tU3RyaW5nT3JUaGlzIg1hZGRyZXNzU3RyaW5nIgckbWF0Y2gwIgFhIhxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzIg5mYWN0b3J5QWRkcmVzcyIDZmNhIgFzIg9nZXRTdHJpbmdPckZhaWwiB2FkZHJlc3MiA2tleSIMZ2V0SW50T3JGYWlsIgh0aHJvd0VyciIDbXNnIgZmbXRFcnIiD2ZhY3RvcnlDb250cmFjdCITZmVlQ29sbGVjdG9yQWRkcmVzcyIFaW5GZWUiAUAiBm91dEZlZSIQaXNHbG9iYWxTaHV0ZG93biITZ2V0TWF0Y2hlclB1Yk9yRmFpbCINZ2V0UG9vbENvbmZpZyIIYW10QXNzZXQiCnByaWNlQXNzZXQiDHBhcnNlQXNzZXRJZCIFaW5wdXQiD2Fzc2V0SWRUb1N0cmluZyIPcGFyc2VQb29sQ29uZmlnIgpwb29sQ29uZmlnIhBwb29sQ29uZmlnUGFyc2VkIgskdDA5NTI5OTY5NSIOY2ZnUG9vbEFkZHJlc3MiDWNmZ1Bvb2xTdGF0dXMiDGNmZ0xwQXNzZXRJZCIQY2ZnQW1vdW50QXNzZXRJZCIPY2ZnUHJpY2VBc3NldElkIhZjZmdBbW91bnRBc3NldERlY2ltYWxzIhVjZmdQcmljZUFzc2V0RGVjaW1hbHMiEGdldEZhY3RvcnlDb25maWciD3N0YWtpbmdDb250cmFjdCIQc2xpcHBhZ2VDb250cmFjdCIRZGF0YVB1dEFjdGlvbkluZm8iDWluQW10QXNzZXRBbXQiD2luUHJpY2VBc3NldEFtdCIIb3V0THBBbXQiBXByaWNlIh1zbGlwcGFnZVRvbGVyYW5jZVBhc3NlZEJ5VXNlciIVc2xpcHBhZ2VUb2xlcmFuY2VSZWFsIgh0eEhlaWdodCILdHhUaW1lc3RhbXAiEnNsaXBhZ2VBbXRBc3NldEFtdCIUc2xpcGFnZVByaWNlQXNzZXRBbXQiEWRhdGFHZXRBY3Rpb25JbmZvIg5vdXRBbXRBc3NldEFtdCIQb3V0UHJpY2VBc3NldEFtdCIHaW5McEFtdCINZ2V0QWNjQmFsYW5jZSINYmFsYW5jZU9uUG9vbCIMdG90YWxCYWxhbmNlIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIUY2FsY1ByaWNlQmlnSW50Um91bmQiB2dldFJhdGUiBXByb3h5IgNpbnYiAXIiB2RlcG9zaXQiBmFtb3VudCIOc3Rha2luZ0Fzc2V0SWQiGGN1cnJlbnRBZGRpdGlvbmFsQmFsYW5jZSIaY3VycmVudFN0YWtpbmdBc3NldEJhbGFuY2UiBWFzc2V0Ig1kZXBvc2l0SW52b2tlIhRyZWNlaXZlZFN0YWtpbmdBc3NldCIUbmV3QWRkaXRpb25hbEJhbGFuY2UiFm5ld1N0YWtpbmdBc3NldEJhbGFuY2UiCHdpdGhkcmF3Igxwcm94eVJhdGVNdWwiDXByb2ZpdEFkZHJlc3MiEGN1cnJlbnRQcm94eVJhdGUiB29sZFJhdGUiDHN0YWtpbmdBc3NldCIUb2xkU2VuZFN0YWtpbmdBbW91bnQiFnNlbmRTdGFraW5nQXNzZXRBbW91bnQiDHByb2ZpdEFtb3VudCIOd2l0aGRyYXdJbnZva2UiDnJlY2VpdmVkQXNzZXRzIhNnZXRMZWFzZVByb3h5Q29uZmlnIhFyZWJhbGFuY2VJbnRlcm5hbCILdGFyZ2V0UmF0aW8iCm1pbkJhbGFuY2UiFGxlYXNhYmxlVG90YWxCYWxhbmNlIhd0YXJnZXRBZGRpdGlvbmFsQmFsYW5jZSIEZGlmZiIPc2VuZEFzc2V0QW1vdW50Ig5nZXRBc3NldEFtb3VudCIOcmViYWxhbmNlQXNzZXQiDSR0MDE1OTMxMTYwNjciCmlzTGVhc2FibGUiC2xlYXNlZFJhdGlvIgxwcm94eUFkZHJlc3MiDHByb3h5QXNzZXRJZCIUc3Rha2luZ1Byb2ZpdEFkZHJlc3MiGXdpdGhkcmF3QW5kUmViYWxhbmNlQXNzZXQiCWdldEFtb3VudCINJHQwMTY0NjYxNjYwMiIXbmV3VG90YWxMZWFzYWJsZUJhbGFuY2UiDndpdGhkcmF3QW1vdW50Ihd3aXRoZHJhd0FuZFJlYmFsYW5jZUFsbCIUYW1vdW50QXNzZXRPdXRBbW91bnQiE3ByaWNlQXNzZXRPdXRBbW91bnQiEkFtQW10V2l0aGRyYXdTdGF0ZSISUHJBbXRXaXRoZHJhd1N0YXRlIhBwcml2YXRlQ2FsY1ByaWNlIgphbUFzc2V0RGNtIgpwckFzc2V0RGNtIgVhbUFtdCIFcHJBbXQiDmFtdEFzc2V0QW10WDE4IhBwcmljZUFzc2V0QW10WDE4IgpjYWxjUHJpY2VzIgVscEFtdCIDY2ZnIgthbXRBc3NldERjbSINcHJpY2VBc3NldERjbSIIcHJpY2VYMTgiCGxwQW10WDE4IhNscFByaWNlSW5BbUFzc2V0WDE4IhNscFByaWNlSW5QckFzc2V0WDE4Ig9jYWxjdWxhdGVQcmljZXMiBnByaWNlcyIUZXN0aW1hdGVHZXRPcGVyYXRpb24iBnR4SWQ1OCIKcG10QXNzZXRJZCIIcG10THBBbXQiCWxwQXNzZXRJZCIJYW1Bc3NldElkIglwckFzc2V0SWQiCnBvb2xTdGF0dXMiCmxwRW1pc3Npb24iCWFtQmFsYW5jZSIMYW1CYWxhbmNlWDE4IglwckJhbGFuY2UiDHByQmFsYW5jZVgxOCILY3VyUHJpY2VYMTgiCGN1clByaWNlIgtwbXRMcEFtdFgxOCINbHBFbWlzc2lvblgxOCILb3V0QW1BbXRYMTgiC291dFByQW10WDE4IghvdXRBbUFtdCIIb3V0UHJBbXQiBXN0YXRlIhRlc3RpbWF0ZVB1dE9wZXJhdGlvbiIRc2xpcHBhZ2VUb2xlcmFuY2UiDGluQW1Bc3NldEFtdCILaW5BbUFzc2V0SWQiDGluUHJBc3NldEFtdCILaW5QckFzc2V0SWQiCmlzRXZhbHVhdGUiBmVtaXRMcCIMYW1Bc3NldElkU3RyIgxwckFzc2V0SWRTdHIiC2lBbXRBc3NldElkIg1pUHJpY2VBc3NldElkIg5pbkFtQXNzZXRJZFN0ciIOaW5QckFzc2V0SWRTdHIiD2luQW1Bc3NldEFtdFgxOCIPaW5QckFzc2V0QW10WDE4Igx1c2VyUHJpY2VYMTgiA3JlcyILc2xpcHBhZ2VYMTgiFHNsaXBwYWdlVG9sZXJhbmNlWDE4IgpwclZpYUFtWDE4IgphbVZpYVByWDE4IgxleHBlY3RlZEFtdHMiEWV4cEFtdEFzc2V0QW10WDE4IhNleHBQcmljZUFzc2V0QW10WDE4IgljYWxjTHBBbXQiDmNhbGNBbUFzc2V0UG10Ig5jYWxjUHJBc3NldFBtdCIMc2xpcHBhZ2VDYWxjIgllbWl0THBBbXQiBmFtRGlmZiIGcHJEaWZmIgtjb21tb25TdGF0ZSIHY2FsY0tMcCINYW1vdW50QmFsYW5jZSIMcHJpY2VCYWxhbmNlIhBhbW91bnRCYWxhbmNlWDE4Ig9wcmljZUJhbGFuY2VYMTgiCnVwZGF0ZWRLTHAiDmNhbGNDdXJyZW50S0xwIhBhbW91bnRBc3NldERlbHRhIg9wcmljZUFzc2V0RGVsdGEiFGxwQXNzZXRFbWlzc2lvbkRlbHRhIhJhbW91bnRBc3NldEJhbGFuY2UiEXByaWNlQXNzZXRCYWxhbmNlIg9scEFzc2V0RW1pc3Npb24iCmN1cnJlbnRLTHAiEnJlZnJlc2hLTHBJbnRlcm5hbCIXYW1vdW50QXNzZXRCYWxhbmNlRGVsdGEiFnByaWNlQXNzZXRCYWxhbmNlRGVsdGEiB2FjdGlvbnMiE3NraXBPcmRlclZhbGlkYXRpb24iEnZhbGlkYXRlVXBkYXRlZEtMcCIGb2xkS0xwIht2YWxpZGF0ZU1hdGNoZXJPcmRlckFsbG93ZWQiBW9yZGVyIhFhbW91bnRBc3NldEFtb3VudCIQcHJpY2VBc3NldEFtb3VudCINJHQwMjg5OTEyOTIwMyIDa0xwIg0kdDAyOTY0MzI5NzQzIg11bnVzZWRBY3Rpb25zIgZrTHBOZXciDGlzT3JkZXJWYWxpZCIEaW5mbyIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiB2VtaXRJbnYiDWVtaXRJbnZMZWdhY3kiFWxlZ2FjeUZhY3RvcnlDb250cmFjdCIHdGFrZUZlZSIJZmVlQW1vdW50Ig9jYWxjUHV0T25lVG9rZW4iEHBheW1lbnRBbW91bnRSYXciDnBheW1lbnRBc3NldElkIgZpc0V2YWwiEGFtb3VudEJhbGFuY2VSYXciD3ByaWNlQmFsYW5jZVJhdyIUcGF5bWVudEluQW1vdW50QXNzZXQiDSR0MDMyODU2MzMxNDkiEGFtb3VudEJhbGFuY2VPbGQiD3ByaWNlQmFsYW5jZU9sZCINJHQwMzMxNTMzMzMwMiIUYW1vdW50QXNzZXRBbW91bnRSYXciE3ByaWNlQXNzZXRBbW91bnRSYXciDSR0MDMzNDM0MzM0OTgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDM1MTc5MzUzNDYiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiGG91dEluQW1vdW50QXNzZXREZWNpbWFscyIMYW1CYWxhbmNlT2xkIgxwckJhbGFuY2VPbGQiCm91dEJhbGFuY2UiEG91dEJhbGFuY2VCaWdJbnQiDnJlZGVlbWVkQmlnSW50IglhbW91bnRSYXciDSR0MDM3NDI0Mzc0ODAiC3RvdGFsQW1vdW50Ig0kdDAzNzQ4NDM3NzEwIgtvdXRBbUFtb3VudCILb3V0UHJBbW91bnQiDGFtQmFsYW5jZU5ldyIMcHJCYWxhbmNlTmV3IhhhbW91bnRCb3RoSW5QYXltZW50QXNzZXQiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiCWlzTWFuYWdlciICcGsiC211c3RNYW5hZ2VyIgJwZCINY2xlYW5BbW91bnRJbiIJaXNSZXZlcnNlIg1mZWVQb29sQW1vdW50Ig0kdDAzOTU2ODM5ODczIghhc3NldE91dCIHYXNzZXRJbiIScG9vbEFzc2V0SW5CYWxhbmNlIhNwb29sQXNzZXRPdXRCYWxhbmNlIglhbW91bnRPdXQiBG9sZEsiBG5ld0siBmNoZWNrSyIMYW1vdW50T3V0TWluIglhZGRyZXNzVG8iC3N3YXBDb250YWN0IhJpc1Bvb2xTd2FwRGlzYWJsZWQiDmlzU3dhcERpc2FibGVkIghjaGVja01pbiIRcmVmcmVzaEtMcEFjdGlvbnMiDnJlYmFsYW5jZVN0YXRlIg13aXRoZHJhd1N0YXRlIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiINJHQwNDUwMDc0NTQ2OSIRaXNVcGRhdGVkS0xwVmFsaWQiA3JlYiILbWF4U2xpcHBhZ2UiDSR0MDQ2MDgxNDYxNDYiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwNDczMzQ0NzQ4NiIFYm9udXMiE2VtaXRBbW91bnRFc3RpbWF0ZWQiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDA0ODA3MjQ4MjY5Ig0kdDA0ODI3MjQ4MzgwIg0kdDA0ODczNTQ4ODkyIg1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDA0OTc3NzQ5OTMwIg9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDUwNTk0NTA4NDEiEGZlZUFtb3VudEZvckNhbGMiDSR0MDUwODQ0NTA5NTIiDSR0MDUxMjMwNTEzODYiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDUyMjkxNTI0NDIiDSR0MDUzMTAxNTMzNDgiDSR0MDUzMzUxNTM0NTkiFGJ1cm5MUEFzc2V0T25GYWN0b3J5Ig0kdDA1NDU1NDU0NjM1IhJub0xlc3NUaGVuQW10QXNzZXQiFG5vTGVzc1RoZW5QcmljZUFzc2V0Ig0kdDA1NTczMDU1ODExIg1jaGVja1BheW1lbnRzIg9jaGVja1Bvb2xTdGF0dXMiDSR0MDU3MDgzNTcxNjQiFW5vTGVzc1RoZW5BbW91bnRBc3NldCIMY2hlY2tBbW91bnRzIg0kdDA1ODYwNTU4Njg2IgthbXRBc3NldFN0ciINcHJpY2VBc3NldFN0ciIYbGFzdFJlZnJlc2hlZEJsb2NrSGVpZ2h0Ih1jaGVja0xhc3RSZWZyZXNoZWRCbG9ja0hlaWdodCINJHQwNjAxNDM2MDIwNyIQa0xwVXBkYXRlQWN0aW9ucyIKYW10QXNzZXRJZCIMcHJpY2VBc3NldElkIg1wb29sTFBCYWxhbmNlIhJhY2NBbXRBc3NldEJhbGFuY2UiFGFjY1ByaWNlQXNzZXRCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiDSR0MDY4ODY5Njg5ODYiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaIIBAAFhAAgAAWIAgMLXLwABYwkAtgIBAIDC1y8AAWQJALYCAQCAgJC7utat8A0AAWUJALYCAQAAAAFmCQC2AgEAAAABZwkAtgIBAAEAAWgJALYCAQACAAFpAgVXQVZFUwABagICX18AAWsAAQABbAACAAFtAAMAAW4ABAABbwABAAFwAAIAAXEAAwABcgAEAAFzAAUAAXQABgABdQAHAAF2AAgAAXcACQABeAAKAAF5AAEAAXoAAgABQQADAAFCAAEAAUMABwEBRAIBRQFGCQC8AgMJALYCAQUBRQUBZAkAtgIBBQFGAQFHAgFFAUYJALwCAwUBRQUBZAUBRgEBSAIBSQFKCQCgAwEJALwCAwUBSQkAtgIBBQFKBQFkAQFLAwFJAUoBTAkAoAMBCQC9AgQFAUkJALYCAQUBSgUBZAUBTAEBTQMBTgFPAVAJAGsDBQFOBQFPBQFQAQFRAQFJAwkAZgIAAAUBSQkBAS0BBQFJBQFJAQFSAQFJAwkAvwICBQFlBQFJCQC+AgEFAUkFAUkBAVMAAhAlc19fc3dhcENvbnRyYWN0AQFUAAITJXNfX2ZhY3RvcnlDb250cmFjdAEBVQACFCVzX19tYW5hZ2VyUHVibGljS2V5AQFWAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBAVcAAhElcyVzX19wcmljZV9fbGFzdAEBWAIBWQFaCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBWQkAzAgCCQCkAwEFAVoFA25pbAUBagECYWECAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUCYWICAl9fBQJhYwECYWQCAmFiAmFjCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX0dfXwUCYWICAl9fBQJhYwECYWUAAg8lc19fYW1vdW50QXNzZXQBAmFmAAIOJXNfX3ByaWNlQXNzZXQAAmFnAgclc19fZmVlAAJhaAkAawMACgUBYgCQTgACYWkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUCYWcFAmFoAAJhagkAuQkCCQDMCAICAiVzCQDMCAICA2tMcAUDbmlsBQFqAAJhawkAuQkCCQDMCAICAiVzCQDMCAICEmtMcFJlZnJlc2hlZEhlaWdodAUDbmlsBQFqAAJhbAkAuQkCCQDMCAICAiVzCQDMCAICD3JlZnJlc2hLTHBEZWxheQUDbmlsBQFqAAJhbQAeAAJhbgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhbAUCYW0BAmFvAQJhcAkAuQkCCQDMCAICBCVzJXMJAMwIAgINc3Rha2VkQmFsYW5jZQkAzAgCBQJhcAUDbmlsBQFqAQJhcQECYXAJALkJAgkAzAgCAgQlcyVzCQDMCAICEXNoYXJlQXNzZXRCYWxhbmNlCQDMCAIFAmFwBQNuaWwFAWoBAmFyAQJhcAkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYW8BBQJhcAAAAQJhcwECYXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmFxAQUCYXAAAAECYXQAAhElc19fZmFjdG9yeUNvbmZpZwECYXUAAhglcyVzX19tYXRjaGVyX19wdWJsaWNLZXkBAmF2AQJhdwkArAICCQCsAgICCCVzJXMlc19fBQJhdwIgX19tYXBwaW5nc19fcG9vbENvbnRyYWN0MkxwQXNzZXQBAmF4AgJheQJhegkArAICCQCsAgIJAKwCAgkArAICAgglZCVkJXNfXwUCYXkCAl9fBQJhegIIX19jb25maWcBAmFBAQJhQgkArAICAiglcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyaW50ZXJuYWxJZF9fBQJhQgECYUMAAgwlc19fc2h1dGRvd24BAmFEAQJhRQkArAICAhIlcyVzX19wb29sV2VpZ2h0X18FAmFFAQJhRgACFyVzX19hbGxvd2VkTHBTY3JpcHRIYXNoAAJhRwIXJXNfX2ZlZUNvbGxlY3RvckFkZHJlc3MBAmFIAQJhSQkArAICAhslcyVzX19za2lwT3JkZXJWYWxpZGF0aW9uX18FAmFJAQJhSgQCYUsCYUwCYU0CYU4JAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmFLAgIgKAUCYUwCASkCDSBzZW5kZXJWYWxpZD0JAKUDAQUCYU0CDiBtYXRjaGVyVmFsaWQ9CQClAwEFAmFOAQJhTwECYVAEAmFRCQCmCAEFAmFQAwkAAQIFAmFRAgdBZGRyZXNzBAJhUgUCYVEFAmFSBQR0aGlzAQJhUwAEAmFUBAJhUQkAoggBCQEBVAADCQABAgUCYVECBlN0cmluZwQCYVUFAmFRCQECYU8BBQJhVQUEdGhpcwQCYVEJAJ0IAgUCYVQJAQFWAAMJAAECBQJhUQIGU3RyaW5nBAJhVgUCYVEJAQJhTwEFAmFWBQR0aGlzAQJhVwICYVgCYVkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJhWAUCYVkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVgJAMwIAgIBLgkAzAgCBQJhWQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJhWgICYVgCYVkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQJhWAUCYVkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUCYVgJAMwIAgIBLgkAzAgCBQJhWQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQJiYQECYmIJAAIBCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYmIFA25pbAIBIAECYmMBAmJiCQC5CQIJAMwIAgIIbHAucmlkZToJAMwIAgUCYmIFA25pbAIBIAACYmQJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhVwIFBHRoaXMJAQFUAAACYmUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQJhVwIFAmJkBQJhRwACYmYKAAJiZwkA/AcEBQJiZAIQZ2V0SW5GZWVSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgNJbnQFAmJnCQACAQkArAICCQADAQUCYmcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAACYmgKAAJiZwkA/AcEBQJiZAIRZ2V0T3V0RmVlUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIDSW50BQJiZwkAAgEJAKwCAgkAAwEFAmJnAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmJpAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJiZAkBAmFDAAcBAmJqAAkA2QQBCQECYVcCBQJiZAkBAmF1AAECYmsABAJibAkBAmFXAgUEdGhpcwkBAmFlAAQCYm0JAQJhVwIFBHRoaXMJAQJhZgAEAmF6CQECYVoCBQJiZAkBAmFBAQUCYm0EAmF5CQECYVoCBQJiZAkBAmFBAQUCYmwJALUJAgkBAmFXAgUCYmQJAQJheAIJAKQDAQUCYXkJAKQDAQUCYXoFAWoBAmJuAQJibwMJAAACBQJibwUBaQUEdW5pdAkA2QQBBQJibwECYnABAmJvAwkAAAIFAmJvBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmJvAQJicQECYnIJAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJicgUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJyBQFwCQDZBAEJAJEDAgUCYnIFAXEJAQJibgEJAJEDAgUCYnIFAXIJAQJibgEJAJEDAgUCYnIFAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJicgUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJyBQF1AAJicwkBAmJxAQkBAmJrAAACYnQFAmJzAAJidQgFAmJ0Al8xAAJidggFAmJ0Al8yAAJidwgFAmJ0Al8zAAJieAgFAmJ0Al80AAJieQgFAmJ0Al81AAJieggFAmJ0Al82AAJiQQgFAmJ0Al83AQJiQgAJALUJAgkBAmFXAgUCYmQJAQJhdAAFAWoAAmJDCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYkIABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiRAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmJCAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYkUKAmJGAmJHAmJIAmJJAmJKAmJLAmJMAmJNAmJOAmJPCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiRgkAzAgCCQCkAwEFAmJHCQDMCAIJAKQDAQUCYkgJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJKCQDMCAIJAKQDAQUCYksJAMwIAgkApAMBBQJiTAkAzAgCCQCkAwEFAmJNCQDMCAIJAKQDAQUCYk4JAMwIAgkApAMBBQJiTwUDbmlsBQFqAQJiUAYCYlECYlICYlMCYkkCYkwCYk0JALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiUQkAzAgCCQCkAwEFAmJSCQDMCAIJAKQDAQUCYlMJAMwIAgkApAMBBQJiSQkAzAgCCQCkAwEFAmJMCQDMCAIJAKQDAQUCYk0FA25pbAUBagECYlQBAmFwBAJiVQMJAAACBQJhcAIFV0FWRVMICQDvBwEFBHRoaXMJYXZhaWxhYmxlCQDwBwIFBHRoaXMJANkEAQUCYXAEAmJWCQBlAgkAZAIFAmJVCQECYXIBBQJhcAkBAmFzAQUCYXAJAJYDAQkAzAgCAAAJAMwIAgUCYlYFA25pbAECYlcCAmJYAmJZCQC8AgMFAmJYBQFkBQJiWQECYloDAmJYAmJZAUwJAL0CBAUCYlgFAWQFAmJZBQFMAQJjYQECY2IEAmNjCQD8BwQFAmNiAgdnZXRSYXRlBQNuaWwFA25pbAMJAAACBQJjYwUCY2MEAmFRBQJjYwMJAAECBQJhUQIDSW50BAJjZAUCYVEFAmNkCQECYmEBAiBwcm94eS5nZXRSYXRlKCkgdW5leHBlY3RlZCB2YWx1ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECY2UEAmFwAmNmAmNnAmNiBAJjaAkBAmFyAQUCYXADCQAAAgUCY2gFAmNoBAJjaQkBAmFzAQUCY2cDCQAAAgUCY2kFAmNpBAJjagkBAmJuAQUCYXADCQBmAgUCY2YAAAQCY2sJAPwHBAUCY2ICB2RlcG9zaXQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCY2oFAmNmBQNuaWwDCQAAAgUCY2sFAmNrBAJhUQUCY2sDCQABAgUCYVECA0ludAQCY2wFAmFRBAJjbQkAZAIFAmNoBQJjZgQCY24JAGQCBQJjaQUCY2wJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbwEFAmFwBQJjbQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFxAQUCY2cFAmNuBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjbwYCYXACY2YCY2cCY2ICY3ACY3EEAmNoCQECYXIBBQJhcAMJAAACBQJjaAUCY2gEAmNpCQECYXMBBQJjZwMJAAACBQJjaQUCY2kEAmNyCQECY2EBBQJjYgMJAAACBQJjcgUCY3IEAmNzCQBrAwUCY3AFAmNoBQJjaQQCY3QJAQJibgEFAmNnBAJjdQkAawMFAmNwBQJjZgUCY3MEAmN2CQBrAwUCY3AFAmNmBQJjcgQCY3cJAJYDAQkAzAgCAAAJAMwIAgkAZQIFAmN1BQJjdgUDbmlsAwkAZgIFAmN2AAAEAmN4CQD8BwQFAmNiAgh3aXRoZHJhdwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJjdAUCY3YFA25pbAMJAAACBQJjeAUCY3gEAmFRBQJjeAMJAAECBQJhUQIDSW50BAJjeQUCYVEEAmNtCQBlAgUCY2gFAmN5BAJjbgkAZQIJAGUCBQJjaQUCY3YFAmN3CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYW8BBQJhcAUCY20JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhcQEFAmNnBQJjbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJjcQUCY3cJAQJibgEFAmNnBQNuaWwFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJjegECYXAEAmFRCQD8BwQFAmJkAhpnZXRQb29sTGVhc2VDb25maWdSRUFET05MWQkAzAgCCQClCAEFBHRoaXMJAMwIAgUCYXAFA25pbAUDbmlsAwkAAQIFAmFRAjAoQm9vbGVhbiwgSW50LCBJbnQsIFN0cmluZywgU3RyaW5nLCBJbnQsIFN0cmluZykEAmFSBQJhUQUCYVIJAQJiYQEJAKwCAgkArAICAgFbBQJhcAIdXSBnZXRMZWFzZVByb3h5Q29uZmlnKCkgZXJyb3IBAmNBBwJjQgJhcAJjZwJjQwJjYgJjcAJjcQQCY2gJAQJhcgEFAmFwAwkAAAIFAmNoBQJjaAQCY2kJAQJhcwEFAmNnAwkAAAIFAmNpBQJjaQQCY0QJAJYDAQkAzAgCAAAJAMwIAgkAZQIJAQJiVAEFAmFwBQJjQwUDbmlsBAJjRQkAawMFAmNCBQJjRABkBAJjRgkAZQIFAmNoBQJjRQMJAAACBQJjRgAABQNuaWwDCQBmAgAABQJjRgQCY0cJAQEtAQUCY0YJAQJjZQQFAmFwBQJjRwUCY2cFAmNiBAJjSAUCY0YJAQJjbwYFAmFwBQJjSAUCY2cFAmNiBQJjcAUCY3EJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNJAQJhcAQCY0oJAQJjegEFAmFwBAJjSwgFAmNKAl8xBAJjTAgFAmNKAl8yBAJjQwgFAmNKAl8zBAJjTQgFAmNKAl80BAJjTggFAmNKAl81BAJjcAgFAmNKAl82BAJjTwgFAmNKAl83AwUCY0sJAQJjQQcFAmNMBQJhcAUCY04FAmNDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTQUCY3AJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNPBQNuaWwBAmNQAgJhcAJjUQQCY1IJAQJjegEFAmFwBAJjSwgFAmNSAl8xBAJjTAgFAmNSAl8yBAJjQwgFAmNSAl8zBAJjTQgFAmNSAl80BAJjTggFAmNSAl81BAJjcAgFAmNSAl82BAJjTwgFAmNSAl83AwUCY0sEAmNTCQCWAwEJAMwIAgAACQDMCAIJAGUCCQBlAgkBAmJUAQUCYXAFAmNRBQJjQwUDbmlsAwkAAAIFAmNTBQJjUwQCY20JAGsDBQJjTAUCY1MAZAMJAAACBQJjbQUCY20EAmNUCQBlAgkBAmFyAQUCYXAFAmNtAwkAAAIFAmNUBQJjVAMJAGYCAAAFAmNUCQECY2UEBQJhcAkBAS0BBQJjVAUCY04JARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNNCQECY28GBQJhcAUCY1QFAmNOCQERQGV4dHJOYXRpdmUoMTA2MikBBQJjTQUCY3AJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAmNPCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQNuaWwBAmNVAgJjVgJjVwQCY1gJAQJjUAIJAQJhVwIFBHRoaXMJAQJhZQAFAmNWBAJjWQkBAmNQAgkBAmFXAgUEdGhpcwkBAmFmAAUCY1cJAM4IAgUCY1gFAmNZAQJjWgQCZGECZGICZGMCZGQEAmRlCQEBRAIFAmRjBQJkYQQCZGYJAQFEAgUCZGQFAmRiCQECYlcCBQJkZgUCZGUBAmRnAwJkYwJkZAJkaAQCZGkJAQJiawAEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmRsCQECY1oEBQJkagUCZGsFAmRjBQJkZAQCYlkJAQFEAgUCZGMFAmRqBAJiWAkBAUQCBQJkZAUCZGsEAmRtCQEBRAIFAmRoBQFiBAJkbgkBAmJXAgUCYlkFAmRtBAJkbwkBAmJXAgUCYlgFAmRtCQDMCAIFAmRsCQDMCAIFAmRuCQDMCAIFAmRvBQNuaWwBAmRwAwJkYwJkZAJkaAQCZHEJAQJkZwMFAmRjBQJkZAUCZGgJAMwIAgkBAUgCCQCRAwIFAmRxAAAFAWIJAMwIAgkBAUgCCQCRAwIFAmRxAAEFAWIJAMwIAgkBAUgCCQCRAwIFAmRxAAIFAWIFA25pbAECZHIEAmRzAmR0AmR1AmFiBAJkaQkBAmJrAAQCZHYJAJEDAgUCZGkFAXEEAmR3CQCRAwIFAmRpBQFyBAJkeAkAkQMCBQJkaQUBcwQCZGEJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdAQCZGIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdQQCZHkJAJEDAgUCZGkFAXAEAmR6CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCZHYJAKwCAgkArAICAgZBc3NldCAFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmR2BQJkdAkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCZEEJAQJiVAEFAmR3BAJkQgkBAUQCBQJkQQUCZGEEAmRDCQECYlQBBQJkeAQCZEQJAQFEAgUCZEMFAmRiBAJkRQkBAmJXAgUCZEQFAmRCBAJkRgkBAUgCBQJkRQUBYgQCZEcJAQFEAgUCZHUFAWIEAmRICQEBRAIFAmR6BQFiBAJkSQkAvAIDBQJkQgUCZEcFAmRIBAJkSgkAvAIDBQJkRAUCZEcFAmRIBAJkSwkBAUsDBQJkSQUCZGEFBUZMT09SBAJkTAkBAUsDBQJkSgUCZGIFBUZMT09SBAJkTQMJAAACBQJkcwIABQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYWIFAmRLAwkAAAIFAmR3AgVXQVZFUwUEdW5pdAkA2QQBBQJkdwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJhYgUCZEwDCQAAAgUCZHgCBVdBVkVTBQR1bml0CQDZBAEFAmR4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIJAKUIAQUCYWIFAmRzCQECYlAGBQJkSwUCZEwFAmR1BQJkRgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJkRgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkRgUDbmlsCQCcCgoFAmRLBQJkTAUCZHcFAmR4BQJkQQUCZEMFAmR6BQJkRQUCZHkFAmRNAQJkTgkCZHMCZE8CZFACZFECZFICZFMCYWICZFQCZFUEAmRpCQECYmsABAJkdgkA2QQBCQCRAwIFAmRpBQFxBAJkVgkAkQMCBQJkaQUBcgQCZFcJAJEDAgUCZGkFAXMEAmRYCQCRAwIFAmRpBQF2BAJkWQkAkQMCBQJkaQUBdwQCZGoJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdAQCZGsJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkaQUBdQQCZHkJAJEDAgUCZGkFAXAEAmR6CAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmR2CQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFAmR2Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZFoJANgEAQkBC3ZhbHVlT3JFbHNlAgUCZFEJANkEAQIFV0FWRVMEAmVhCQDYBAEJAQt2YWx1ZU9yRWxzZQIFAmRTCQDZBAECBVdBVkVTAwMJAQIhPQIFAmRWBQJkWgYJAQIhPQIFAmRXBQJlYQkAAgECIkludmFsaWQgYW10IG9yIHByaWNlIGFzc2V0IHBhc3NlZC4EAmRBAwUCZFQJAQJiVAEFAmRWCQBlAgkBAmJUAQUCZFYFAmRQBAJkQwMFAmRUCQECYlQBBQJkVwkAZQIJAQJiVAEFAmRXBQJkUgQCZWIJAQFEAgUCZFAFAmRqBAJlYwkBAUQCBQJkUgUCZGsEAmVkCQECYlcCBQJlYwUCZWIEAmRCCQEBRAIFAmRBBQJkagQCZEQJAQFEAgUCZEMFAmRrBAJlZQMJAAACBQJkegAABAJkRQUBZQQCZWYFAWUEAmRtCQB2BgkAuQICBQJlYgUCZWMAAAkAtgIBAAUAAQAABQRET1dOCQCXCgUJAQFIAgUCZG0FAWIJAQFIAgUCZWIFAmRqCQEBSAIFAmVjBQJkawkBAmJXAgkAtwICBQJkRAUCZWMJALcCAgUCZEIFAmViBQJlZgQCZEUJAQJiVwIFAmREBQJkQgQCZWYJALwCAwkBAVIBCQC4AgIFAmRFBQJlZAUBZAUCZEUEAmVnCQEBRAIFAmRPBQFiAwMJAQIhPQIFAmRFBQFlCQC/AgIFAmVmBQJlZwcJAAIBCQCsAgIJAKwCAgkArAICAg9QcmljZSBzbGlwcGFnZSAJAKYDAQUCZWYCHiBleGNlZWRlZCB0aGUgcGFzc2VkIGxpbWl0IG9mIAkApgMBBQJlZwQCZEgJAQFEAgUCZHoFAWIEAmVoCQC9AgQFAmViCQECYloDBQJkRAUCZEIFB0NFSUxJTkcFAWQFB0NFSUxJTkcEAmVpCQC9AgQFAmVjBQFkCQECYloDBQJkRAUCZEIFBUZMT09SBQdDRUlMSU5HBAJlagMJAL8CAgUCZWgFAmVjCQCUCgIFAmVpBQJlYwkAlAoCBQJlYgUCZWgEAmVrCAUCZWoCXzEEAmVsCAUCZWoCXzIEAmRtCQC9AgQFAmRIBQJlbAUCZEQFBUZMT09SCQCXCgUJAQFLAwUCZG0FAWIFBUZMT09SCQEBSwMFAmVrBQJkagUHQ0VJTElORwkBAUsDBQJlbAUCZGsFB0NFSUxJTkcFAmRFBQJlZgQCZW0IBQJlZQJfMQQCZW4IBQJlZQJfMgQCZW8IBQJlZQJfMwQCZEYJAQFIAggFAmVlAl80BQFiBAJlcAkBAUgCCAUCZWUCXzUFAWIDCQBnAgAABQJlbQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCZXEDCQEBIQEFAmRVAAAFAmVtBAJlcgkAZQIFAmRQBQJlbgQCZXMJAGUCBQJkUgUCZW8EAmV0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmRGCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmRGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAmFiBQJkcwkBAmJFCgUCZW4FAmVvBQJlcQUCZEYFAmRPBQJlcAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZXIFAmVzBQNuaWwJAJ8KDQUCZW0FAmVxBQJkRgUCZEEFAmRDBQJkegUCZHYFAmR5BQJldAUCZXIFAmVzBQJkUQUCZFMBAmV1AwJldgJldwJkegQCZXgJAQFHAgUCZXYJALYCAQUCYnoEAmV5CQEBRwIFAmV3CQC2AgEFAmJBBAJlegkAvAIDCQB2BgkAuQICBQJleAUCZXkAAAkAtgIBAAUAAQASBQRET1dOBQFnBQJkegMJAAACBQJkegUBZgUBZgUCZXoBAmVBAwJlQgJlQwJlRAQCZUUJALgCAgkAtgIBCQECYlQBCQECYnABBQJieAUCZUIEAmVGCQC4AgIJALYCAQkBAmJUAQkBAmJwAQUCYnkFAmVDBAJlRwkAuAICCQC2AgEICQEFdmFsdWUBCQDsBwEFAmJ3CHF1YW50aXR5BQJlRAQCZUgJAQJldQMFAmVFBQJlRgUCZUcFAmVIAQJlSQMCZUoCZUsCZUQEAmVFCQBkAgkBAmJUAQkBAmJwAQUCYngFAmVKBAJlRgkAZAIJAQJiVAEJAQJicAEFAmJ5BQJlSwQCZUcJAGQCCAkBBXZhbHVlAQkA7AcBBQJidwhxdWFudGl0eQUCZUQEAmV6CQECZXUDCQC2AgEFAmVFCQC2AgEFAmVGCQC2AgEFAmVHBAJlTAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYWsFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQJhagkApgMBBQJlegUDbmlsCQCUCgIFAmVMBQJlegECZU0ACQELdmFsdWVPckVsc2UCCQCbCAIFAmJkCQECYUgBCQClCAEFBHRoaXMHAQJlTgICZU8CZXoDCQDAAgIFAmV6BQJlTwYJAQJiYQEJALkJAgkAzAgCAiJ1cGRhdGVkIEtMcCBsb3dlciB0aGFuIGN1cnJlbnQgS0xwCQDMCAIJAKYDAQUCZU8JAMwIAgkApgMBBQJlegUDbmlsAgEgAQJlUAECZVEEAmVFCQECYlQBCQECYnABBQJieAQCZUYJAQJiVAEJAQJicAEFAmJ5BAJlUggFAmVRBmFtb3VudAQCZVMJAG4ECAUCZVEGYW1vdW50CAUCZVEFcHJpY2UFAWIFBUZMT09SBAJlVAMJAAACCAUCZVEJb3JkZXJUeXBlBQNCdXkJAJQKAgUCZVIJAQEtAQUCZVMJAJQKAgkBAS0BBQJlUgUCZVMEAmVKCAUCZVQCXzEEAmVLCAUCZVQCXzIDAwMJAQJiaQAGCQAAAgUCYnYFAW0GCQAAAgUCYnYFAW4JAAIBAhxFeGNoYW5nZSBvcGVyYXRpb25zIGRpc2FibGVkAwMJAQIhPQIICAUCZVEJYXNzZXRQYWlyC2Ftb3VudEFzc2V0BQJieAYJAQIhPQIICAUCZVEJYXNzZXRQYWlyCnByaWNlQXNzZXQFAmJ5CQACAQITV3Jvbmcgb3JkZXIgYXNzZXRzLgQCZVUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAqAMBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAmFqAgEwCQECYmMBAgtpbnZhbGlkIGtMcAQCZVYJAQJlSQMFAmVKBQJlSwAABAJlVwgFAmVWAl8xBAJlWAgFAmVWAl8yBAJlWQkAwAICBQJlWAUCZVUEAmVaCQC5CQIJAMwIAgIEa0xwPQkAzAgCCQCmAwEFAmVVCQDMCAICCCBrTHBOZXc9CQDMCAIJAKYDAQUCZVgJAMwIAgIUIGFtb3VudEFzc2V0QmFsYW5jZT0JAMwIAgkApAMBBQJlRQkAzAgCAhMgcHJpY2VBc3NldEJhbGFuY2U9CQDMCAIJAKQDAQUCZUYJAMwIAgIZIGFtb3VudEFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVKCQDMCAICGCBwcmljZUFzc2V0QmFsYW5jZURlbHRhPQkAzAgCCQCkAwEFAmVLCQDMCAICCCBoZWlnaHQ9CQDMCAIJAKQDAQUGaGVpZ2h0BQNuaWwCAAkAlAoCBQJlWQUCZVoBAmZhAQJmYgMJAQIhPQIJAJADAQgFAmZiCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZmMJAQV2YWx1ZQEJAJEDAggFAmZiCHBheW1lbnRzAAAEAmR0CQEFdmFsdWUBCAUCZmMHYXNzZXRJZAQCZmQIBQJmYwZhbW91bnQEAmVlCQECZHIECQDYBAEIBQJmYg10cmFuc2FjdGlvbklkCQDYBAEFAmR0BQJmZAgFAmZiBmNhbGxlcgQCZEsIBQJlZQJfMQQCZEwIBQJlZQJfMgQCZHkJAQ1wYXJzZUludFZhbHVlAQgFAmVlAl85BAJkTQgFAmVlA18xMAMDCQECYmkABgkAAAIFAmR5BQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkeQkAlwoFBQJkSwUCZEwFAmZkBQJkdAUCZE0BAmZlAwJmYgJkTwJkVQMJAQIhPQIJAJADAQgFAmZiCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJmZgkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAQCZmcJAQV2YWx1ZQEJAJEDAggFAmZiCHBheW1lbnRzAAEEAmZoCQECZE4JCQDYBAEIBQJmYg10cmFuc2FjdGlvbklkBQJkTwgFAmZmBmFtb3VudAgFAmZmB2Fzc2V0SWQIBQJmZwZhbW91bnQIBQJmZwdhc3NldElkCQClCAEIBQJmYgZjYWxsZXIHBQJkVQQCZHkJAQ1wYXJzZUludFZhbHVlAQgFAmZoAl84AwMDCQECYmkABgkAAAIFAmR5BQFsBgkAAAIFAmR5BQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkeQUCZmgBAmZpAQJjZgQCZmoJAPwHBAUCYmQCBGVtaXQJAMwIAgUCY2YFA25pbAUDbmlsAwkAAAIFAmZqBQJmagQCZmsEAmFRBQJmagMJAAECBQJhUQIHQWRkcmVzcwQCZmwFAmFRCQD8BwQFAmZsAgRlbWl0CQDMCAIFAmNmBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmawUCZmsFAmNmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJmbQICY2YCYWkEAmZuAwkAAAIFAmFpAAAAAAkAawMFAmNmBQJhaQUBYgkAlAoCCQBlAgUCY2YFAmZuBQJmbgECZm8EAmZwAmZxAmFiAmFjBAJmcgkAAAIFAmFjBQR1bml0BAJmcwkBAmJUAQkBAmJwAQUCYngEAmZ0CQECYlQBCQECYnABBQJieQQCZnUDCQAAAgUCZnEFAmJ4BgMJAAACBQJmcQUCYnkHCQECYmEBAg1pbnZhbGlkIGFzc2V0BAJmdgMFAmZyCQCUCgIFAmZzBQJmdAMFAmZ1CQCUCgIJAGUCBQJmcwUCZnAFAmZ0CQCUCgIFAmZzCQBlAgUCZnQFAmZwBAJmdwgFAmZ2Al8xBAJmeAgFAmZ2Al8yBAJmeQMFAmZ1CQCUCgIFAmZwAAAJAJQKAgAABQJmcAQCZnoIBQJmeQJfMQQCZkEIBQJmeQJfMgQCZVIICQECZm0CBQJmegUCYmYCXzEEAmVTCAkBAmZtAgUCZkEFAmJmAl8xBAJmQgkBAmZtAgUCZnAFAmJmBAJmQwgFAmZCAl8xBAJmbggFAmZCAl8yBAJmRAkAZAIFAmZ3BQJlUgQCZkUJAGQCBQJmeAUCZVMEAmZGCQECYlcCCQEBRAIFAmZFBQJiQQkBAUQCBQJmRAUCYnoEAmZHCQEBSAIFAmZGBQFiBAJmSAMFAmZ1BQJmdwUCZngEAmZJCQC2AgEFAmZIBAJmSgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJ3CQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJ3Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZksDCQC/AgIFAmZKBQFmBgkBAmJhAQIiaW5pdGlhbCBkZXBvc2l0IHJlcXVpcmVzIGFsbCBjb2lucwMJAAACBQJmSwUCZksEAmZMCQC2AgEFAmZDBAJmTQkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJmSgkAuAICCQEKc3FydEJpZ0ludAQJALcCAgUBZAkAugICCQC5AgIFAmZMBQFkBQJmSQASABIFBERPV04FAWQFAWQFA25pbAQCZXQDBQJmcgUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVwAFAmZHCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmZHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIJAKUIAQkBBXZhbHVlAQUCYWIJANgEAQkBBXZhbHVlAQUCYWMJAQJiRQoFAmZ6BQJmQQUCZk0FAmZHAAAAAAUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAAAAAAFA25pbAQCZk4JAQJiVwIJAQFEAgUCZngFAmJBCQEBRAIFAmZ3BQJiegQCZk8JAQFIAgUCZk4FAWIEAmZQBAJmUQMFAmZ1CQCUCgIFAmZ6BQJmdwkAlAoCBQJmQQUCZngEAmNmCAUCZlECXzEEAmZSCAUCZlECXzIEAmZTCQCgAwEJALwCAwUCZkoJALYCAQkAaQIFAmNmAAIJALYCAQUCZlIJAGsDCQBlAgUCZk0FAmZTBQFiBQJmUwkAlwoFBQJmTQUCZXQFAmZuBQJmUAUCZnUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmZUBQJmVQJmQwJmcQJhYgJhYwQCZnIJAAACBQJhYwUEdW5pdAQCZGkJAQJiawAEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmZWCQDMCAIDCQAAAgUCZnEFAmJ3BgkBAmJhAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmZWBQJmVgQCZlcDCQAAAgUCZlUFAmJ4BgMJAAACBQJmVQUCYnkHCQECYmEBAg1pbnZhbGlkIGFzc2V0BAJmWAMFAmZXCQC2AgEJAQJiVAEJAQJicAEFAmJ4CQC2AgEJAQJiVAEJAQJicAEFAmJ5BAJmWQMFAmZXBQJkagUCZGsEAmZaCQECYlQBCQECYnABBQJieAQCZ2EJAQJiVAEJAQJicAEFAmJ5BAJnYgMFAmZXBQJmWgUCZ2EEAmdjCQC2AgEFAmdiBAJmSgkAtgIBCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFAmJ3CQCsAgIJAKwCAgIGYXNzZXQgCQDYBAEFAmJ3Ag4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQCZ2QJALYCAQUCZkMEAmdlCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmZYCQC4AgIFAWQJAHYGCQC4AgIFAWQJALoCAgkAuQICBQJnZAUBZAUCZkoAEgUBaAAAABIFBERPV04FAWQFA25pbAQCZ2YJAQJmbQIFAmdlBQJiaAQCZ2cIBQJnZgJfMQQCZm4IBQJnZgJfMgQCZ2gDBQJmVwkAlgoEBQJnZwAACQBlAgUCZloFAmdlBQJnYQkAlgoEAAAFAmdnBQJmWgkAZQIFAmdhBQJnZQQCZ2kIBQJnaAJfMQQCZ2oIBQJnaAJfMgQCZ2sIBQJnaAJfMwQCZ2wIBQJnaAJfNAQCZkYJAQJiVwIJAQFEAgUCZ2wFAmJBCQEBRAIFAmdrBQJiegQCZkcJAQFIAgUCZkYFAWIEAmV0AwUCZnIFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCCQClCAEJAQV2YWx1ZQEFAmFiCQDYBAEJAQV2YWx1ZQEFAmFjCQECYlAGBQJnaQUCZ2oFAmZDBQJmRwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVcABQJmRwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJmRwUDbmlsBAJmTgkBAmJXAgkBAUQCBQJnYQUCYkEJAQFEAgUCZloFAmJ6BAJmTwkBAUgCBQJmTgUBYgQCZlAEAmdtCQBoAgkAoAMBCQC8AgMFAmZYBQJnZAUCZkoAAgkAawMJAGUCBQJnZwUCZ20FAWIFAmdtCQCXCgUFAmdnBQJldAUCZm4FAmZQBQJmVwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECZ24ABAJnbwkBAmFTAAQCYVEJAJ0IAgUCZ28JAQFVAAMJAAECBQJhUQIGU3RyaW5nBAJhVgUCYVEJANkEAQUCYVYDCQABAgUCYVECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZ3ABAmZiBAJhUQkBAmduAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3EFAmFRCQAAAggFAmZiD2NhbGxlclB1YmxpY0tleQUCZ3EDCQABAgUCYVECBFVuaXQJAAACCAUCZmIGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBAmdyAQJmYgQCZ3MJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCYVEJAQJnbgADCQABAgUCYVECCkJ5dGVWZWN0b3IEAmdxBQJhUQMJAAACCAUCZmIPY2FsbGVyUHVibGljS2V5BQJncQYFAmdzAwkAAQIFAmFRAgRVbml0AwkAAAIIBQJmYgZjYWxsZXIFBHRoaXMGBQJncwkAAgECC01hdGNoIGVycm9yHQJmYgEJcmViYWxhbmNlAAkAzggCCQECY0kBCQECYVcCBQR0aGlzCQECYWUACQECY0kBCQECYVcCBQR0aGlzCQECYWYAAmZiASFjYWxjdWxhdGVBbW91bnRPdXRGb3JTd2FwUkVBRE9OTFkDAmd0Amd1Amd2BAJndwMJAAACBQJndQcEAmd4CQECYVcCBQR0aGlzCQECYWYABAJneQkBAmFXAgUEdGhpcwkBAmFlAAkAlAoCBQJneAUCZ3kEAmd4CQECYVcCBQR0aGlzCQECYWUABAJneQkBAmFXAgUEdGhpcwkBAmFmAAkAlAoCBQJneAUCZ3kEAmd4CAUCZ3cCXzEEAmd5CAUCZ3cCXzIEAmd6CQECYlQBBQJneQQCZ0EJAQJiVAEFAmd4BAJnQgkAawMFAmdBBQJndAkAZAIFAmd6BQJndAQCZ0MJALkCAgkAtgIBBQJnegkAtgIBBQJnQQQCZ0QJALkCAgkAtwICCQC3AgIJALYCAQkBAmJUAQUCZ3kJALYCAQUCZ3QJALYCAQUCZ3YJALgCAgkAtgIBCQECYlQBBQJneAkAtgIBBQJnQgQCZ0UDCQDAAgIFAmdEBQJnQwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJnRQUCZ0UJAJQKAgUDbmlsBQJnQgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEmY2FsY3VsYXRlQW1vdW50T3V0Rm9yU3dhcEFuZFNlbmRUb2tlbnMFAmd0Amd1AmdGAmdHAmd2BAJnSAoAAmJnCQD8BwQFAmJkAhdnZXRTd2FwQ29udHJhY3RSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYmcCBlN0cmluZwUCYmcJAAIBCQCsAgIJAAMBBQJiZwIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBAJnSQoAAmJnCQD8BwQFAmJkAhppc1Bvb2xTd2FwRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgdCb29sZWFuBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJnSgMDCQECYmkABgkAAAIFAmJ2BQFuBgUCZ0kEAmZWCQDMCAIDAwkBASEBBQJnSgYJAQJncAEFAmZiBgkBAmJhAQIic3dhcCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAZwIICQEFdmFsdWUBCQCRAwIIBQJmYghwYXltZW50cwAABmFtb3VudAUCZ3QGCQECYmEBAgxXcm9uZyBhbW91bnQJAMwIAgMJAAACCAUCZmIGY2FsbGVyCQERQGV4dHJOYXRpdmUoMTA2MikBBQJnSAYJAQJiYQECEVBlcm1pc3Npb24gZGVuaWVkBQNuaWwDCQAAAgUCZlYFAmZWBAJmYwkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAQCZ3kJAQJicAEIBQJmYwdhc3NldElkBAJneAMJAAACBQJndQcJAQJhVwIFBHRoaXMJAQJhZgAJAQJhVwIFBHRoaXMJAQJhZQAEAmd6CQBlAgkAZQIJAQJiVAEFAmd5CAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAAZhbW91bnQFAmd2BAJnQQkBAmJUAQUCZ3gEAmdCCQBrAwUCZ0EFAmd0CQBkAgUCZ3oFAmd0BAJnQwkAuQICCQC2AgEFAmd6CQC2AgEFAmdBBAJnRAkAuQICCQC3AgIJALYCAQkBAmJUAQUCZ3kJALYCAQUCZ3YJALgCAgkAtgIBCQECYlQBBQJneAkAtgIBBQJnQgQCZ0UDCQDAAgIFAmdEBQJnQwYJAAIBAhRuZXcgSyBpcyBmZXdlciBlcnJvcgMJAAACBQJnRQUCZ0UEAmdLAwkAZwIFAmdCBQJnRgYJAAIBAixFeGNoYW5nZSByZXN1bHQgaXMgZmV3ZXIgY29pbnMgdGhhbiBleHBlY3RlZAMJAAACBQJnSwUCZ0sEAmVKAwUCZ3UJAQEtAQUCZ0IFAmd2BAJlSwMFAmd1BQJndgkBAS0BBQJnQgQCZ0wICQECZUkDBQJlSgUCZUsAAAJfMQMJAAACBQJnTAUCZ0wEAmdNCQECY0kBBQJneQMJAAACBQJnTQUCZ00EAmdOCQECY1ACBQJneAUCZ0IDCQAAAgUCZ04FAmdOCQCUCgIJAM4IAgkAzggCBQJnTgUCZ00JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCZ0cFAmdCCQECYm4BBQJneAUDbmlsBQJnQgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEDcHV0AgJkTwJnTwMJAGYCAAAFAmRPCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmZoCQECZmUDBQJmYgUCZE8GBAJlcQgFAmZoAl8yBAJkdggFAmZoAl83BAJkTQgFAmZoAl85BAJlcggFAmZoA18xMAQCZXMIBQJmaANfMTEEAmdQCAUCZmgDXzEyBAJnUQgFAmZoA18xMwQCZmYJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmZiCHBheW1lbnRzAAAGYW1vdW50BAJmZwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAQZhbW91bnQEAmVICQECZUEDBQJmZgUCZmcJALYCAQAAAwkAAAIFAmVIBQJlSAQCZmoJAPwHBAUCYmQCBGVtaXQJAMwIAgUCZXEFA25pbAUDbmlsAwkAAAIFAmZqBQJmagQCZmsEAmFRBQJmagMJAAECBQJhUQIHQWRkcmVzcwQCZmwFAmFRCQD8BwQFAmZsAgRlbWl0CQDMCAIFAmVxBQNuaWwFA25pbAUEdW5pdAMJAAACBQJmawUCZmsEAmdSAwkAZgIFAmVyAAAJAPwHBAUCYkQCA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJnUAUCZXIFA25pbAUDbmlsAwkAAAIFAmdSBQJnUgQCZ1MDCQBmAgUCZXMAAAkA/AcEBQJiRAIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmdRBQJlcwUDbmlsBQNuaWwDCQAAAgUCZ1MFAmdTBAJnVAMFAmdPBAJnVQkA/AcEBQJiQwIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCZHYFAmVxBQNuaWwDCQAAAgUCZ1UFAmdVBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmZiBmNhbGxlcgUCZXEFAmR2BQNuaWwEAmdWCQECZUkDAAAAAAAAAwkAAAIFAmdWBQJnVgQCZXoIBQJnVgJfMgQCZ0wIBQJnVgJfMQQCZ1cJAQJlTgIFAmVIBQJlegMJAAACBQJnVwUCZ1cEAmdYCQD8BwQFBHRoaXMCCXJlYmFsYW5jZQUDbmlsBQNuaWwDCQAAAgUCZ1gFAmdYCQDOCAIJAM4IAgUCZE0FAmdUBQJnTAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEKcHV0Rm9yRnJlZQECZ1kDCQBmAgAABQJnWQkAAgECFEludmFsaWQgdmFsdWUgcGFzc2VkBAJmaAkBAmZlAwUCZmIFAmdZBwQCZE0IBQJmaAJfOQQCZmYJALYCAQgJAQV2YWx1ZQEJAJEDAggFAmZiCHBheW1lbnRzAAAGYW1vdW50BAJmZwkAtgIBCAkBBXZhbHVlAQkAkQMCCAUCZmIIcGF5bWVudHMAAQZhbW91bnQEAmVICQECZUEDBQJmZgUCZmcJALYCAQAAAwkAAAIFAmVIBQJlSAQCZ1oJAQJlSQMAAAAAAAAEAmdMCAUCZ1oCXzEEAmV6CAUCZ1oCXzIEAmdXCQECZU4CBQJlSAUCZXoDCQAAAgUCZ1cFAmdXCQDOCAIFAmRNBQJnTAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEJcHV0T25lVGtuAgJoYQJoYgQCaGMKAAJiZwkA/AcEBQJiZAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgdCb29sZWFuBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJoZAMDAwkBAmJpAAYJAAACBQJidgUBbAYJAAACBQJidgUBbgYFAmhjBAJmVgkAzAgCAwMJAQEhAQUCaGQGCQECZ3ABBQJmYgYJAQJiYQECIXB1dCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmZiCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmVgUCZlYEAmhlCQCRAwIIBQJmYghwYXltZW50cwAABAJmcQgFAmhlB2Fzc2V0SWQEAmZwCAUCaGUGYW1vdW50BAJlSAMJAAACBQJmcQUCYngJAQJlQQMJALYCAQUCZnAJALYCAQAACQC2AgEAAAMJAAACBQJmcQUCYnkJAQJlQQMJALYCAQAACQC2AgEFAmZwCQC2AgEAAAkBAmJhAQIecGF5bWVudCBhc3NldCBpcyBub3Qgc3VwcG9ydGVkAwkAAAIFAmVIBQJlSAQCYWIIBQJmYgZjYWxsZXIEAmFjCAUCZmINdHJhbnNhY3Rpb25JZAQCaGYJAQJmbwQFAmZwBQJmcQUCYWIFAmFjAwkAAAIFAmhmBQJoZgQCZnUIBQJoZgJfNQQCaGcIBQJoZgJfNAQCZm4IBQJoZgJfMwQCZXQIBQJoZgJfMgQCaGgIBQJoZgJfMQQCaGkDAwkAZgIFAmhhAAAJAGYCBQJoYQUCaGgHCQECYmEBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmhhBQNuaWwCAAUCaGgEAmZqCQECZmkBBQJoaQMJAAACBQJmagUCZmoEAmdUAwUCaGIEAmhqCQD8BwQFAmJDAgVzdGFrZQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJidwUCaGkFA25pbAMJAAACBQJoagUCaGoFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCZmIGY2FsbGVyBQJoaQUCYncFA25pbAQCaGsDCQBmAgUCZm4AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiZQUCZm4FAmZxBQNuaWwFA25pbAQCaGwDCQAAAgUEdGhpcwUCYmUJAJQKAgAAAAADBQJmdQkAlAoCCQEBLQEFAmZuAAAJAJQKAgAACQEBLQEFAmZuBAJlSggFAmhsAl8xBAJlSwgFAmhsAl8yBAJobQkBAmVJAwUCZUoFAmVLAAAEAmdMCAUCaG0CXzEEAmV6CAUCaG0CXzIEAmVVCQEFdmFsdWUBCQCiCAEFAmFqBAJnVwkBAmVOAgUCZUgFAmV6AwkAAAIFAmdXBQJnVwQCZ1gJAPwHBAUEdGhpcwIJcmViYWxhbmNlBQNuaWwFA25pbAMJAAACBQJnWAUCZ1gJAJQKAgkAzggCCQDOCAIJAM4IAgUCZXQFAmdUBQJoawUCZ0wFAmhpCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiARFwdXRPbmVUa25SRUFET05MWQICZnECZnAEAmhuCQECZm8EBQJmcAkBAmJuAQUCZnEFBHVuaXQFBHVuaXQEAmhoCAUCaG4CXzEEAmV0CAUCaG4CXzIEAmZuCAUCaG4CXzMEAmhnCAUCaG4CXzQEAmZ1CAUCaG4CXzUJAJQKAgUDbmlsCQCVCgMFAmhoBQJmbgUCaGcCZmIBCWdldE9uZVRrbgICaG8CaGEEAmhjCgACYmcJAPwHBAUCYmQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJiZwIHQm9vbGVhbgUCYmcJAAIBCQCsAgIJAAMBBQJiZwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCaHADAwkBAmJpAAYJAAACBQJidgUBbgYFAmhjBAJmVgkAzAgCAwMJAQEhAQUCaHAGCQECZ3ABBQJmYgYJAQJiYQECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmZiCHBheW1lbnRzAAEGCQECYmEBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmVgUCZlYEAmZVCQECYm4BBQJobwQCaGUJAJEDAggFAmZiCHBheW1lbnRzAAAEAmZxCAUCaGUHYXNzZXRJZAQCZkMIBQJoZQZhbW91bnQEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCYWIIBQJmYgZjYWxsZXIEAmFjCAUCZmINdHJhbnNhY3Rpb25JZAQCaHEJAQJmVAUFAmZVBQJmQwUCZnEFAmFiBQJhYwMJAAACBQJocQUCaHEEAmZXCAUCaHECXzUEAmhnCAUCaHECXzQEAmZuCAUCaHECXzMEAmV0CAUCaHECXzIEAmhyCAUCaHECXzEEAmNmAwMJAGYCBQJoYQAACQBmAgUCaGEFAmhyBwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoYQUDbmlsAgAFAmhyBAJocwkA/AcEBQJiZAIEYnVybgkAzAgCBQJmQwUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJmcQUCZkMFA25pbAMJAAACBQJocwUCaHMEAmdOCQECY1ACBQJobwkAZAIFAmNmCQCWAwEJAMwIAgAACQDMCAIFAmZuBQNuaWwEAmh0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFiBQJjZgUCZlUFA25pbAQCaGsDCQBmAgUCZm4AAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQJiZQUCZm4FAmZVBQNuaWwFA25pbAQCaHUEAmh2AwkAAAIFBHRoaXMFAmJlAAAFAmZuAwUCZlcJAJQKAgkBAS0BCQBkAgUCY2YFAmh2AAAJAJQKAgAACQEBLQEJAGQCBQJjZgUCaHYEAmVKCAUCaHUCXzEEAmVLCAUCaHUCXzIEAmh3CQECZUkDBQJlSgUCZUsAAAQCZ0wIBQJodwJfMQQCZXoIBQJodwJfMgQCZ1cJAQJlTgIFAmVIBQJlegMJAAACBQJnVwUCZ1cJAJQKAgkAzggCCQDOCAIJAM4IAgkAzggCBQJldAUCZ04FAmh0BQJoawUCZ0wFAmNmCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiARFnZXRPbmVUa25SRUFET05MWQICZlUCZkMEAmh4CQECZlQFCQECYm4BBQJmVQUCZkMFAmJ3BQR1bml0BQR1bml0BAJocggFAmh4Al8xBAJldAgFAmh4Al8yBAJmbggFAmh4Al8zBAJoZwgFAmh4Al80BAJmVwgFAmh4Al81CQCUCgIFA25pbAkAlQoDBQJocgUCZm4FAmhnAmZiARN1bnN0YWtlQW5kR2V0T25lVGtuAwJoeQJobwJoYQQCaGMKAAJiZwkA/AcEBQJiZAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmJnAgdCb29sZWFuBQJiZwkAAgEJAKwCAgkAAwEFAmJnAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJocAMDCQECYmkABgkAAAIFAmJ2BQFuBgUCaGMEAmZWCQDMCAIDAwkBASEBBQJocAYJAQJncAEFAmZiBgkBAmJhAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmIIcGF5bWVudHMAAAYJAQJiYQECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmZWBQJmVgQCZlUJAQJibgEFAmhvBAJhYggFAmZiBmNhbGxlcgQCYWMIBQJmYg10cmFuc2FjdGlvbklkBAJlSAkBAmVBAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSAUCZUgEAmh6CQD8BwQFAmJDAgd1bnN0YWtlCQDMCAIJANgEAQUCYncJAMwIAgUCaHkFA25pbAUDbmlsAwkAAAIFAmh6BQJoegQCaEEJAQJmVAUFAmZVBQJoeQUCYncFAmFiBQJhYwMJAAACBQJoQQUCaEEEAmZXCAUCaEECXzUEAmhnCAUCaEECXzQEAmZuCAUCaEECXzMEAmV0CAUCaEECXzIEAmhyCAUCaEECXzEEAmNmAwMJAGYCBQJoYQAACQBmAgUCaGEFAmhyBwkBAmJhAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoYQUDbmlsAgAFAmhyBAJocwkA/AcEBQJiZAIEYnVybgkAzAgCBQJoeQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJidwUCaHkFA25pbAMJAAACBQJocwUCaHMEAmdOCQECY1ACBQJobwkAZAIFAmNmCQCWAwEJAMwIAgAACQDMCAIFAmZuBQNuaWwEAmh0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQJmYgZjYWxsZXIFAmNmBQJmVQUDbmlsBAJoawMJAGYCBQJmbgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmJlBQJmbgUCZlUFA25pbAUDbmlsBAJoQgQCaHYDCQAAAgUEdGhpcwUCYmUAAAUCZm4DBQJmVwkAlAoCCQEBLQEJAGQCBQJjZgUCaHYAAAkAlAoCAAAJAQEtAQkAZAIFAmNmBQJodgQCZUoIBQJoQgJfMQQCZUsIBQJoQgJfMgQCaEMJAQJlSQMFAmVKBQJlSwAABAJnTAgFAmhDAl8xBAJleggFAmhDAl8yBAJnVwkBAmVOAgUCZUgFAmV6AwkAAAIFAmdXBQJnVwkAlAoCCQDOCAIJAM4IAgkAzggCCQDOCAIFAmV0BQJnTgUCaHQFAmhrBQJnTAUCY2YJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBA2dldAAEAmVlCQECZmEBBQJmYgQCZEsIBQJlZQJfMQQCZEwIBQJlZQJfMgQCZmQIBQJlZQJfMwQCZHQIBQJlZQJfNAQCZE0IBQJlZQJfNQQCZ04JAQJjVQIFAmRLBQJkTAQCZUgJAQJlQQMJALYCAQAACQC2AgEAAAkAtgIBAAADCQAAAgUCZUgFAmVIBAJoRAkA/AcEBQJiZAIEYnVybgkAzAgCBQJmZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkdAUCZmQFA25pbAMJAAACBQJoRAUCaEQEAmhFCQECZUkDCQEBLQEFAmRLCQEBLQEFAmRMAAAEAmdMCAUCaEUCXzEEAmV6CAUCaEUCXzIEAmdXCQECZU4CBQJlSAUCZXoDCQAAAgUCZ1cFAmdXCQDOCAIJAM4IAgUCZ04FAmRNBQJnTAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgEJZ2V0Tm9MZXNzAgJoRgJoRwQCZWUJAQJmYQEFAmZiBAJkSwgFAmVlAl8xBAJkTAgFAmVlAl8yBAJmZAgFAmVlAl8zBAJkdAgFAmVlAl80BAJkTQgFAmVlAl81AwkAZgIFAmhGBQJkSwkAAgEJAKwCAgkArAICCQCsAgICHG5vTGVzc1RoZW5BbXRBc3NldCBmYWlsZWQ6ICAJAKQDAQUCZEsCAyA8IAkApAMBBQJoRgMJAGYCBQJoRwUCZEwJAAIBCQCsAgIJAKwCAgkArAICAh1ub0xlc3NUaGVuUHJpY2VBc3NldCBmYWlsZWQ6IAkApAMBBQJkTAIDIDwgCQCkAwEFAmhHBAJnTgkBAmNVAgUCZEsFAmRMBAJlSAkBAmVBAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSAUCZUgEAmhECQD8BwQFAmJkAgRidXJuCQDMCAIFAmZkBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR0BQJmZAUDbmlsAwkAAAIFAmhEBQJoRAQCaEgJAQJlSQMJAQEtAQUCZEsJAQEtAQUCZEwAAAQCZ0wIBQJoSAJfMQQCZXoIBQJoSAJfMgQCZ1cJAQJlTgIFAmVIBQJlegMJAAACBQJnVwUCZ1cJAM4IAgkAzggCBQJnTgUCZE0FAmdMCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQ11bnN0YWtlQW5kR2V0AQJjZgQCaEkDCQECIT0CCQCQAwEIBQJmYghwYXltZW50cwAACQACAQIYTm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBgMJAAACBQJoSQUCaEkEAmRpCQECYmsABAJkdgkA2QQBCQCRAwIFAmRpBQFxBAJlSAkBAmVBAwkAtgIBAAAJALYCAQAACQC2AgEAAAMJAAACBQJlSAUCZUgEAmh6CQD8BwQFAmJDAgd1bnN0YWtlCQDMCAIJANgEAQUCZHYJAMwIAgUCY2YFA25pbAUDbmlsAwkAAAIFAmh6BQJoegQCZWUJAQJkcgQJANgEAQgFAmZiDXRyYW5zYWN0aW9uSWQJANgEAQUCZHYFAmNmCAUCZmIGY2FsbGVyBAJkSwgFAmVlAl8xBAJkTAgFAmVlAl8yBAJkeQkBDXBhcnNlSW50VmFsdWUBCAUCZWUCXzkEAmRNCAUCZWUDXzEwBAJnTgkBAmNVAgUCZEsFAmRMBAJoSgMDCQECYmkABgkAAAIFAmR5BQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJkeQYDCQAAAgUCaEoFAmhKBAJoRAkA/AcEBQJiZAIEYnVybgkAzAgCBQJjZgUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJkdgUCY2YFA25pbAMJAAACBQJoRAUCaEQEAmhLCQECZUkDCQEBLQEFAmRLCQEBLQEFAmRMAAAEAmdMCAUCaEsCXzEEAmV6CAUCaEsCXzIEAmdXCQECZU4CBQJlSAUCZXoDCQAAAgUCZ1cFAmdXCQDOCAIJAM4IAgUCZ04FAmRNBQJnTAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJmYgETdW5zdGFrZUFuZEdldE5vTGVzcwMCaHkCaEwCaEcEAmhwAwkBAmJpAAYJAAACBQJidgUBbgQCZlYJAMwIAgMJAQEhAQUCaHAGCQACAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZmIIcGF5bWVudHMAAAYJAAIBAhhubyBwYXltZW50cyBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJmVgUCZlYEAmVICQECZUEDCQC2AgEAAAkAtgIBAAAJALYCAQAAAwkAAAIFAmVIBQJlSAQCaHoJAPwHBAUCYkMCB3Vuc3Rha2UJAMwIAgkA2AQBBQJidwkAzAgCBQJoeQUDbmlsBQNuaWwDCQAAAgUCaHoFAmh6BAJlZQkBAmRyBAkA2AQBCAUCZmINdHJhbnNhY3Rpb25JZAkA2AQBBQJidwUCaHkIBQJmYgZjYWxsZXIEAmRLCAUCZWUCXzEEAmRMCAUCZWUCXzIEAmRNCAUCZWUDXzEwBAJnTgkBAmNVAgUCZEsFAmRMBAJoTQkAzAgCAwkAZwIFAmRLBQJoTAYJAAIBCQC5CQIJAMwIAgIsYW1vdW50IGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoTAUDbmlsAgAJAMwIAgMJAGcCBQJkTAUCaEcGCQACAQkAuQkCCQDMCAICK3ByaWNlIGFzc2V0IGFtb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJoRwUDbmlsAgAFA25pbAMJAAACBQJoTQUCaE0EAmhECQD8BwQFAmJkAgRidXJuCQDMCAIFAmh5BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJ3BQJoeQUDbmlsAwkAAAIFAmhEBQJoRAQCaE4JAQJlSQMJAQEtAQUCZEsJAQEtAQUCZEwAAAQCZ0wIBQJoTgJfMQQCZXoIBQJoTgJfMgQCZ1cJAQJlTgIFAmVIBQJlegMJAAACBQJnVwUCZ1cJAM4IAgkAzggCBQJnTgUCZE0FAmdMCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQhhY3RpdmF0ZQICaE8CaFADCQECIT0CCQClCAEIBQJmYgZjYWxsZXIJAKUIAQUCYmQJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUABQJoTwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYABQJoUAUDbmlsAgdzdWNjZXNzAmZiAQZpbnZlcnQABAJmVgkAzAgCAwkAAAIIBQJmYgZjYWxsZXIFAmJkBgkBAmJhAQIOaW52YWxpZCBjYWxsZXIFA25pbAMJAAACBQJmVgUCZlYJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUACQECYnABBQJieQkAzAgCCQELU3RyaW5nRW50cnkCCQECYWYACQECYnABBQJieAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmZiAQpyZWZyZXNoS0xwAAQCaFEJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUCYWsAAAQCaFIDCQBnAgkAZQIFBmhlaWdodAUCaFEFAmFuBQR1bml0CQECYmEBCQC5CQIJAMwIAgkApAMBBQJhbgkAzAgCAi8gYmxvY2tzIGhhdmUgbm90IHBhc3NlZCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbAUDbmlsAgADCQAAAgUCaFIFAmhSBAJlVQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUCYWoCATAJAQJiYwECC2ludmFsaWQga0xwBAJoUwkBAmVJAwAAAAAAAAQCaFQIBQJoUwJfMQQCZXoIBQJoUwJfMgQCZUwDCQECIT0CBQJlVQUCZXoFAmhUCQECYmEBAhJub3RoaW5nIHRvIHJlZnJlc2gJAJQKAgUCZUwJAKYDAQUCZXoJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZmIBHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkACQCUCgIFA25pbAkBAmJrAAJmYgEcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQECYXAJAJQKAgUDbmlsCQECYlQBBQJhcAJmYgEZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQMCZGMCZGQCZGgEAmRxCQECZGcDBQJkYwUCZGQFAmRoCQCUCgIFA25pbAkAzAgCCQCmAwEJAJEDAgUCZHEAAAkAzAgCCQCmAwEJAJEDAgUCZHEAAQkAzAgCCQCmAwEJAJEDAgUCZHEAAgUDbmlsAmZiARR0b1gxOFdyYXBwZXJSRUFET05MWQIBRQFGCQCUCgIFA25pbAkApgMBCQEBRAIFAUUFAUYCZmIBFmZyb21YMThXcmFwcGVyUkVBRE9OTFkCAUkBSgkAlAoCBQNuaWwJAQFIAgkApwMBBQFJBQFKAmZiAR5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkCAmJYAmJZCQCUCgIFA25pbAkApgMBCQECYlcCCQCnAwEFAmJYCQCnAwEFAmJZAmZiASNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkCZHMCZE8CZFACZFECZFICZFMCYWICZFQCZFUJAJQKAgUDbmlsCQECZE4JBQJkcwUCZE8FAmRQBQJkUQUCZFIFAmRTBQJhYgUCZFQFAmRVAmZiASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCZHMCZHQCZHUCYWIEAmVlCQECZHIEBQJkcwUCZHQFAmR1CQERQGV4dHJOYXRpdmUoMTA2MikBBQJhYgkAlAoCBQNuaWwJAJwKCggFAmVlAl8xCAUCZWUCXzIIBQJlZQJfMwgFAmVlAl80CAUCZWUCXzUIBQJlZQJfNggFAmVlAl83CQCmAwEIBQJlZQJfOAgFAmVlAl85CAUCZWUDXzEwAmZiAQ1zdGF0c1JFQURPTkxZAAQCZGkJAQJiawAEAmR2CQDZBAEJAJEDAgUCZGkFAXEEAmhVCQCRAwIFAmRpBQFyBAJoVgkAkQMCBQJkaQUBcwQCZFgJAJEDAgUCZGkFAXYEAmRZCQCRAwIFAmRpBQF3BAJkagkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF0BAJkawkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRpBQF1BAJoVwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkdgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkdgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmhYCQECYlQBBQJoVQQCaFkJAQJiVAEFAmhWBAJoWgMJAAACBQJoVwAACQDMCAIFAWUJAMwIAgUBZQkAzAgCBQFlBQNuaWwJAQJkZwMFAmhYBQJoWQUCaFcEAmRGAAAEAmlhCQEBSAIJAJEDAgUCaFoAAQUBYgQCaWIJAQFIAgkAkQMCBQJoWgACBQFiBAJpYwkBBXZhbHVlAQkAmggCBQJiZAkBAmFEAQkApQgBBQR0aGlzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCaFgJAMwIAgkApAMBBQJoWQkAzAgCCQCkAwEFAmhXCQDMCAIJAKQDAQUCZEYJAMwIAgkApAMBBQJpYQkAzAgCCQCkAwEFAmliCQDMCAIJAKQDAQUCaWMFA25pbAUBagJmYgEgZXZhbHVhdGVQdXRCeUFtb3VudEFzc2V0UkVBRE9OTFkBAmRQBAJkaQkBAmJrAAQCZHYJANkEAQkAkQMCBQJkaQUBcQQCZFYJAJEDAgUCZGkFAXIEAmR3CQDZBAEFAmRWBAJkVwkAkQMCBQJkaQUBcwQCZHgJANkEAQUCZFcEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmR5CQCRAwIFAmRpBQFwBAJoVwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkdgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkdgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmhYCQECYlQBBQJkVgQCaFkJAQJiVAEFAmRXBAJkZQkBAUQCBQJoWAUCZGoEAmRmCQEBRAIFAmhZBQJkawQCZEUDCQAAAgUCaFcAAAUBZQkBAmJXAgUCZGYFAmRlBAJlYgkBAUQCBQJkUAUCZGoEAmVjCQC8AgMFAmViBQJkRQUBZAQCZFIJAQFIAgUCZWMFAmRrBAJmaAkBAmROCQIAAKDCHgUCZFAFAmR3BQJkUgUCZHgCAAYHBAJlbQgFAmZoAl8xBAJpZAgFAmZoAl8zBAJkQQgFAmZoAl80BAJkQwgFAmZoAl81BAJkeggFAmZoAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJlbQkAzAgCCQCkAwEJAQFIAgUCZEUFAWIJAMwIAgkApAMBBQJkQQkAzAgCCQCkAwEFAmRDCQDMCAIJAKQDAQUCZHoJAMwIAgUCZHkJAMwIAgkApAMBBQJkUAkAzAgCCQCkAwEFAmRSBQNuaWwFAWoCZmIBH2V2YWx1YXRlUHV0QnlQcmljZUFzc2V0UkVBRE9OTFkBAmRSBAJkaQkBAmJrAAQCZHYJANkEAQkAkQMCBQJkaQUBcQQCZFYJAJEDAgUCZGkFAXIEAmR3CQDZBAEFAmRWBAJkVwkAkQMCBQJkaQUBcwQCZHgJANkEAQUCZFcEAmRqCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXQEAmRrCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZGkFAXUEAmR5CQCRAwIFAmRpBQFwBAJoVwgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJkdgkArAICCQCsAgICBkFzc2V0IAkA2AQBBQJkdgIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmllCQECYlQBBQJkVgQCaWYJAQJiVAEFAmRXBAJpZwkBAUQCBQJpZQUCZGoEAmloCQEBRAIFAmlmBQJkawQCZEUDCQAAAgUCaFcAAAUBZQkBAmJXAgUCaWgFAmlnBAJlYwkBAUQCBQJkUgUCZGsEAmViCQC8AgMFAmVjBQFkBQJkRQQCZFAJAQFIAgUCZWIFAmRqBAJmaAkBAmROCQIAAKDCHgUCZFAFAmR3BQJkUgUCZHgCAAYHBAJlbQgFAmZoAl8xBAJpZAgFAmZoAl8zBAJkQQgFAmZoAl80BAJkQwgFAmZoAl81BAJkeggFAmZoAl82CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJlbQkAzAgCCQCkAwEJAQFIAgUCZEUFAWIJAMwIAgkApAMBBQJkQQkAzAgCCQCkAwEFAmRDCQDMCAIJAKQDAQUCZHoJAMwIAgUCZHkJAMwIAgkApAMBBQJkUAkAzAgCCQCkAwEFAmRSBQNuaWwFAWoCZmIBE2V2YWx1YXRlR2V0UkVBRE9OTFkCAmlpAmlqBAJlZQkBAmRyBAIABQJpaQUCaWoFBHRoaXMEAmRLCAUCZWUCXzEEAmRMCAUCZWUCXzIEAmRBCAUCZWUCXzUEAmRDCAUCZWUCXzYEAmR6CAUCZWUCXzcEAmRGCAUCZWUCXzgEAmR5CQENcGFyc2VJbnRWYWx1ZQEIBQJlZQJfOQkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmRLCQDMCAIJAKQDAQUCZEwJAMwIAgkApAMBBQJkQQkAzAgCCQCkAwEFAmRDCQDMCAIJAKQDAQUCZHoJAMwIAgkApgMBBQJkRgkAzAgCCQCkAwEFAmR5BQNuaWwFAWoBAmlrAQJpbAAEAmltBAJhUQkBAmduAAMJAAECBQJhUQIKQnl0ZVZlY3RvcgQCZ3EFAmFRBQJncQMJAAECBQJhUQIEVW5pdAgFAmlrD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yBAJhUQUCaWsDCQABAgUCYVECBU9yZGVyBAJlUQUCYVEEAmluCQECYmoABAJpbwMJAQJlTQAJAJQKAgYCAAkBAmVQAQUCZVEEAmFLCAUCaW8CXzEEAmFMCAUCaW8CXzIEAmFNCQD0AwMIBQJlUQlib2R5Qnl0ZXMJAJEDAggFAmVRBnByb29mcwAACAUCZVEPc2VuZGVyUHVibGljS2V5BAJhTgkA9AMDCAUCZVEJYm9keUJ5dGVzCQCRAwIIBQJlUQZwcm9vZnMAAQUCaW4DAwMFAmFLBQJhTQcFAmFOBwYJAQJhSgQFAmFLBQJhTAUCYU0FAmFOAwkAAQIFAmFRAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCYVYFAmFRAwkA9AMDCAUCaWsJYm9keUJ5dGVzCQCRAwIIBQJpawZwcm9vZnMAAAUCaW0GBAJpcAkA9gMBCQEFdmFsdWUBCAUCYVYGc2NyaXB0BAJpcQkA2wQBCQEFdmFsdWUBCQCdCAIFAmJkCQECYUYABAJpcgkA8QcBBQR0aGlzAwkAAAIFAmlxBQJpcAkBAiE9AgUCaXIFAmlwBwkA9AMDCAUCaWsJYm9keUJ5dGVzCQCRAwIIBQJpawZwcm9vZnMAAAUCaW1+ZcYd", "height": 2765089, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3KpmsNA4MwpmMmvgxC9UbFo7Jd1SVXDhwj3uv2XeD186 Next: BFoMMMFC31NtudJ4XX3j3SRTwdFGHqFP1pScNfp7X9yw Diff:
OldNewDifferences
974974 then bg
975975 else throw(($getType(bg) + " couldn't be cast to String"))
976976 }
977- let fV = [if ((value(fb.payments[0]).amount >= gt))
977+ let gI = {
978+ let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
979+ if ($isInstanceOf(bg, "Boolean"))
980+ then bg
981+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
982+ }
983+ let gJ = if (if (bi())
984+ then true
985+ else (bv == n))
986+ then true
987+ else gI
988+ let fV = [if (if (!(gJ))
989+ then true
990+ else gp(fb))
991+ then true
992+ else ba("swap operation is blocked by admin"), if ((value(fb.payments[0]).amount >= gt))
978993 then true
979994 else ba("Wrong amount"), if ((fb.caller == addressFromStringValue(gH)))
980995 then true
9961011 else throw("new K is fewer error")
9971012 if ((gE == gE))
9981013 then {
999- let gI = if ((gB >= gF))
1014+ let gK = if ((gB >= gF))
10001015 then true
10011016 else throw("Exchange result is fewer coins than expected")
1002- if ((gI == gI))
1017+ if ((gK == gK))
10031018 then {
1004- let gJ = cI(gy)
1005- if ((gJ == gJ))
1019+ let eJ = if (gu)
1020+ then -(gB)
1021+ else gv
1022+ let eK = if (gu)
1023+ then gv
1024+ else -(gB)
1025+ let gL = eI(eJ, eK, 0)._1
1026+ if ((gL == gL))
10061027 then {
1007- let gK = cP(gx, gB)
1008- if ((gK == gK))
1009- then $Tuple2(((gK ++ gJ) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
1028+ let gM = cI(gy)
1029+ if ((gM == gM))
1030+ then {
1031+ let gN = cP(gx, gB)
1032+ if ((gN == gN))
1033+ then $Tuple2(((gN ++ gM) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
1034+ else throw("Strict value is not equal to itself.")
1035+ }
10101036 else throw("Strict value is not equal to itself.")
10111037 }
10121038 else throw("Strict value is not equal to itself.")
10211047
10221048
10231049 @Callable(fb)
1024-func put (dO,gL) = if ((0 > dO))
1050+func put (dO,gO) = if ((0 > dO))
10251051 then throw("Invalid slippageTolerance passed")
10261052 else {
10271053 let fh = fe(fb, dO, true)
10301056 let dM = fh._9
10311057 let er = fh._10
10321058 let es = fh._11
1033- let gM = fh._12
1034- let gN = fh._13
1059+ let gP = fh._12
1060+ let gQ = fh._13
10351061 let ff = toBigInt(value(fb.payments[0]).amount)
10361062 let fg = toBigInt(value(fb.payments[1]).amount)
10371063 let eH = eA(ff, fg, toBigInt(0))
10511077 }
10521078 if ((fk == fk))
10531079 then {
1054- let gO = if ((er > 0))
1055- then invoke(bD, "put", nil, [AttachedPayment(gM, er)])
1080+ let gR = if ((er > 0))
1081+ then invoke(bD, "put", nil, [AttachedPayment(gP, er)])
10561082 else nil
1057- if ((gO == gO))
1083+ if ((gR == gR))
10581084 then {
1059- let gP = if ((es > 0))
1060- then invoke(bD, "put", nil, [AttachedPayment(gN, es)])
1085+ let gS = if ((es > 0))
1086+ then invoke(bD, "put", nil, [AttachedPayment(gQ, es)])
10611087 else nil
1062- if ((gP == gP))
1088+ if ((gS == gS))
10631089 then {
1064- let gQ = if (gL)
1090+ let gT = if (gO)
10651091 then {
1066- let gR = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1067- if ((gR == gR))
1092+ let gU = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1093+ if ((gU == gU))
10681094 then nil
10691095 else throw("Strict value is not equal to itself.")
10701096 }
10711097 else [ScriptTransfer(fb.caller, eq, dv)]
1072- let gS = eI(0, 0, 0)
1073- if ((gS == gS))
1098+ let gV = eI(0, 0, 0)
1099+ if ((gV == gV))
10741100 then {
1075- let ez = gS._2
1076- let gT = gS._1
1077- let gU = eN(eH, ez)
1078- if ((gU == gU))
1101+ let ez = gV._2
1102+ let gL = gV._1
1103+ let gW = eN(eH, ez)
1104+ if ((gW == gW))
10791105 then {
1080- let gV = invoke(this, "rebalance", nil, nil)
1081- if ((gV == gV))
1082- then ((dM ++ gQ) ++ gT)
1106+ let gX = invoke(this, "rebalance", nil, nil)
1107+ if ((gX == gX))
1108+ then ((dM ++ gT) ++ gL)
10831109 else throw("Strict value is not equal to itself.")
10841110 }
10851111 else throw("Strict value is not equal to itself.")
11001126
11011127
11021128 @Callable(fb)
1103-func putForFree (gW) = if ((0 > gW))
1129+func putForFree (gY) = if ((0 > gY))
11041130 then throw("Invalid value passed")
11051131 else {
1106- let fh = fe(fb, gW, false)
1132+ let fh = fe(fb, gY, false)
11071133 let dM = fh._9
11081134 let ff = toBigInt(value(fb.payments[0]).amount)
11091135 let fg = toBigInt(value(fb.payments[1]).amount)
11101136 let eH = eA(ff, fg, toBigInt(0))
11111137 if ((eH == eH))
11121138 then {
1113- let gX = eI(0, 0, 0)
1114- let gT = gX._1
1115- let ez = gX._2
1116- let gU = eN(eH, ez)
1117- if ((gU == gU))
1118- then (dM ++ gT)
1139+ let gZ = eI(0, 0, 0)
1140+ let gL = gZ._1
1141+ let ez = gZ._2
1142+ let gW = eN(eH, ez)
1143+ if ((gW == gW))
1144+ then (dM ++ gL)
11191145 else throw("Strict value is not equal to itself.")
11201146 }
11211147 else throw("Strict value is not equal to itself.")
11241150
11251151
11261152 @Callable(fb)
1127-func putOneTkn (gY,gZ) = {
1128- let ha = {
1153+func putOneTkn (ha,hb) = {
1154+ let hc = {
11291155 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11301156 if ($isInstanceOf(bg, "Boolean"))
11311157 then bg
11321158 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11331159 }
1134- let hb = if (if (if (bi())
1160+ let hd = if (if (if (bi())
11351161 then true
11361162 else (bv == l))
11371163 then true
11381164 else (bv == n))
11391165 then true
1140- else ha
1141- let fV = [if (if (!(hb))
1166+ else hc
1167+ let fV = [if (if (!(hd))
11421168 then true
11431169 else gp(fb))
11441170 then true
11471173 else ba("exactly 1 payment are expected")]
11481174 if ((fV == fV))
11491175 then {
1150- let hc = fb.payments[0]
1151- let fq = hc.assetId
1152- let fp = hc.amount
1176+ let he = fb.payments[0]
1177+ let fq = he.assetId
1178+ let fp = he.amount
11531179 let eH = if ((fq == bx))
11541180 then eA(toBigInt(fp), toBigInt(0), toBigInt(0))
11551181 else if ((fq == by))
11591185 then {
11601186 let ab = fb.caller
11611187 let ac = fb.transactionId
1162- let hd = fo(fp, fq, ab, ac)
1163- if ((hd == hd))
1188+ let hf = fo(fp, fq, ab, ac)
1189+ if ((hf == hf))
11641190 then {
1165- let fu = hd._5
1166- let he = hd._4
1167- let fn = hd._3
1168- let et = hd._2
1169- let hf = hd._1
1170- let hg = if (if ((gY > 0))
1171- then (gY > hf)
1191+ let fu = hf._5
1192+ let hg = hf._4
1193+ let fn = hf._3
1194+ let et = hf._2
1195+ let hh = hf._1
1196+ let hi = if (if ((ha > 0))
1197+ then (ha > hh)
11721198 else false)
1173- then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1174- else hf
1175- let fj = fi(hg)
1199+ then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1200+ else hh
1201+ let fj = fi(hi)
11761202 if ((fj == fj))
11771203 then {
1178- let gQ = if (gZ)
1204+ let gT = if (hb)
11791205 then {
1180- let hh = invoke(bC, "stake", nil, [AttachedPayment(bw, hg)])
1181- if ((hh == hh))
1206+ let hj = invoke(bC, "stake", nil, [AttachedPayment(bw, hi)])
1207+ if ((hj == hj))
11821208 then nil
11831209 else throw("Strict value is not equal to itself.")
11841210 }
1185- else [ScriptTransfer(fb.caller, hg, bw)]
1186- let hi = if ((fn > 0))
1211+ else [ScriptTransfer(fb.caller, hi, bw)]
1212+ let hk = if ((fn > 0))
11871213 then [ScriptTransfer(be, fn, fq)]
11881214 else nil
1189- let hj = if ((this == be))
1215+ let hl = if ((this == be))
11901216 then $Tuple2(0, 0)
11911217 else if (fu)
11921218 then $Tuple2(-(fn), 0)
11931219 else $Tuple2(0, -(fn))
1194- let eJ = hj._1
1195- let eK = hj._2
1196- let hk = eI(eJ, eK, 0)
1197- let gT = hk._1
1198- let ez = hk._2
1220+ let eJ = hl._1
1221+ let eK = hl._2
1222+ let hm = eI(eJ, eK, 0)
1223+ let gL = hm._1
1224+ let ez = hm._2
11991225 let eU = value(getString(aj))
1200- let gU = eN(eH, ez)
1201- if ((gU == gU))
1226+ let gW = eN(eH, ez)
1227+ if ((gW == gW))
12021228 then {
1203- let gV = invoke(this, "rebalance", nil, nil)
1204- if ((gV == gV))
1205- then $Tuple2((((et ++ gQ) ++ hi) ++ gT), hg)
1229+ let gX = invoke(this, "rebalance", nil, nil)
1230+ if ((gX == gX))
1231+ then $Tuple2((((et ++ gT) ++ hk) ++ gL), hi)
12061232 else throw("Strict value is not equal to itself.")
12071233 }
12081234 else throw("Strict value is not equal to itself.")
12201246
12211247 @Callable(fb)
12221248 func putOneTknREADONLY (fq,fp) = {
1223- let hl = fo(fp, bn(fq), unit, unit)
1224- let hf = hl._1
1225- let et = hl._2
1226- let fn = hl._3
1227- let he = hl._4
1228- let fu = hl._5
1229- $Tuple2(nil, $Tuple3(hf, fn, he))
1249+ let hn = fo(fp, bn(fq), unit, unit)
1250+ let hh = hn._1
1251+ let et = hn._2
1252+ let fn = hn._3
1253+ let hg = hn._4
1254+ let fu = hn._5
1255+ $Tuple2(nil, $Tuple3(hh, fn, hg))
12301256 }
12311257
12321258
12331259
12341260 @Callable(fb)
1235-func getOneTkn (hm,gY) = {
1236- let ha = {
1261+func getOneTkn (ho,ha) = {
1262+ let hc = {
12371263 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12381264 if ($isInstanceOf(bg, "Boolean"))
12391265 then bg
12401266 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12411267 }
1242- let hn = if (if (bi())
1268+ let hp = if (if (bi())
12431269 then true
12441270 else (bv == n))
12451271 then true
1246- else ha
1247- let fV = [if (if (!(hn))
1272+ else hc
1273+ let fV = [if (if (!(hp))
12481274 then true
12491275 else gp(fb))
12501276 then true
12531279 else ba("exactly 1 payment are expected")]
12541280 if ((fV == fV))
12551281 then {
1256- let fU = bn(hm)
1257- let hc = fb.payments[0]
1258- let fq = hc.assetId
1259- let fC = hc.amount
1282+ let fU = bn(ho)
1283+ let he = fb.payments[0]
1284+ let fq = he.assetId
1285+ let fC = he.amount
12601286 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
12611287 if ((eH == eH))
12621288 then {
12631289 let ab = fb.caller
12641290 let ac = fb.transactionId
1265- let ho = fT(fU, fC, fq, ab, ac)
1266- if ((ho == ho))
1291+ let hq = fT(fU, fC, fq, ab, ac)
1292+ if ((hq == hq))
12671293 then {
1268- let fW = ho._5
1269- let he = ho._4
1270- let fn = ho._3
1271- let et = ho._2
1272- let hp = ho._1
1273- let cf = if (if ((gY > 0))
1274- then (gY > hp)
1294+ let fW = hq._5
1295+ let hg = hq._4
1296+ let fn = hq._3
1297+ let et = hq._2
1298+ let hr = hq._1
1299+ let cf = if (if ((ha > 0))
1300+ then (ha > hr)
12751301 else false)
1276- then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1277- else hp
1278- let hq = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1279- if ((hq == hq))
1302+ then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1303+ else hr
1304+ let hs = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1305+ if ((hs == hs))
12801306 then {
1281- let gK = cP(hm, (cf + max([0, fn])))
1282- let hr = [ScriptTransfer(ab, cf, fU)]
1283- let hi = if ((fn > 0))
1307+ let gN = cP(ho, (cf + max([0, fn])))
1308+ let ht = [ScriptTransfer(ab, cf, fU)]
1309+ let hk = if ((fn > 0))
12841310 then [ScriptTransfer(be, fn, fU)]
12851311 else nil
1286- let hs = {
1287- let ht = if ((this == be))
1312+ let hu = {
1313+ let hv = if ((this == be))
12881314 then 0
12891315 else fn
12901316 if (fW)
1291- then $Tuple2(-((cf + ht)), 0)
1292- else $Tuple2(0, -((cf + ht)))
1317+ then $Tuple2(-((cf + hv)), 0)
1318+ else $Tuple2(0, -((cf + hv)))
12931319 }
1294- let eJ = hs._1
1295- let eK = hs._2
1296- let hu = eI(eJ, eK, 0)
1297- let gT = hu._1
1298- let ez = hu._2
1299- let gU = eN(eH, ez)
1300- if ((gU == gU))
1301- then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
1320+ let eJ = hu._1
1321+ let eK = hu._2
1322+ let hw = eI(eJ, eK, 0)
1323+ let gL = hw._1
1324+ let ez = hw._2
1325+ let gW = eN(eH, ez)
1326+ if ((gW == gW))
1327+ then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
13021328 else throw("Strict value is not equal to itself.")
13031329 }
13041330 else throw("Strict value is not equal to itself.")
13141340
13151341 @Callable(fb)
13161342 func getOneTknREADONLY (fU,fC) = {
1317- let hv = fT(bn(fU), fC, bw, unit, unit)
1318- let hp = hv._1
1319- let et = hv._2
1320- let fn = hv._3
1321- let he = hv._4
1322- let fW = hv._5
1323- $Tuple2(nil, $Tuple3(hp, fn, he))
1343+ let hx = fT(bn(fU), fC, bw, unit, unit)
1344+ let hr = hx._1
1345+ let et = hx._2
1346+ let fn = hx._3
1347+ let hg = hx._4
1348+ let fW = hx._5
1349+ $Tuple2(nil, $Tuple3(hr, fn, hg))
13241350 }
13251351
13261352
13271353
13281354 @Callable(fb)
1329-func unstakeAndGetOneTkn (hw,hm,gY) = {
1330- let ha = {
1355+func unstakeAndGetOneTkn (hy,ho,ha) = {
1356+ let hc = {
13311357 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13321358 if ($isInstanceOf(bg, "Boolean"))
13331359 then bg
13341360 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13351361 }
1336- let hn = if (if (bi())
1362+ let hp = if (if (bi())
13371363 then true
13381364 else (bv == n))
13391365 then true
1340- else ha
1341- let fV = [if (if (!(hn))
1366+ else hc
1367+ let fV = [if (if (!(hp))
13421368 then true
13431369 else gp(fb))
13441370 then true
13471373 else ba("no payments are expected")]
13481374 if ((fV == fV))
13491375 then {
1350- let fU = bn(hm)
1376+ let fU = bn(ho)
13511377 let ab = fb.caller
13521378 let ac = fb.transactionId
13531379 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
13541380 if ((eH == eH))
13551381 then {
1356- let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1357- if ((hx == hx))
1382+ let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1383+ if ((hz == hz))
13581384 then {
1359- let hy = fT(fU, hw, bw, ab, ac)
1360- if ((hy == hy))
1385+ let hA = fT(fU, hy, bw, ab, ac)
1386+ if ((hA == hA))
13611387 then {
1362- let fW = hy._5
1363- let he = hy._4
1364- let fn = hy._3
1365- let et = hy._2
1366- let hp = hy._1
1367- let cf = if (if ((gY > 0))
1368- then (gY > hp)
1388+ let fW = hA._5
1389+ let hg = hA._4
1390+ let fn = hA._3
1391+ let et = hA._2
1392+ let hr = hA._1
1393+ let cf = if (if ((ha > 0))
1394+ then (ha > hr)
13691395 else false)
1370- then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1371- else hp
1372- let hq = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1373- if ((hq == hq))
1396+ then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1397+ else hr
1398+ let hs = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1399+ if ((hs == hs))
13741400 then {
1375- let gK = cP(hm, (cf + max([0, fn])))
1376- let hr = [ScriptTransfer(fb.caller, cf, fU)]
1377- let hi = if ((fn > 0))
1401+ let gN = cP(ho, (cf + max([0, fn])))
1402+ let ht = [ScriptTransfer(fb.caller, cf, fU)]
1403+ let hk = if ((fn > 0))
13781404 then [ScriptTransfer(be, fn, fU)]
13791405 else nil
1380- let hz = {
1381- let ht = if ((this == be))
1406+ let hB = {
1407+ let hv = if ((this == be))
13821408 then 0
13831409 else fn
13841410 if (fW)
1385- then $Tuple2(-((cf + ht)), 0)
1386- else $Tuple2(0, -((cf + ht)))
1411+ then $Tuple2(-((cf + hv)), 0)
1412+ else $Tuple2(0, -((cf + hv)))
13871413 }
1388- let eJ = hz._1
1389- let eK = hz._2
1390- let hA = eI(eJ, eK, 0)
1391- let gT = hA._1
1392- let ez = hA._2
1393- let gU = eN(eH, ez)
1394- if ((gU == gU))
1395- then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
1414+ let eJ = hB._1
1415+ let eK = hB._2
1416+ let hC = eI(eJ, eK, 0)
1417+ let gL = hC._1
1418+ let ez = hC._2
1419+ let gW = eN(eH, ez)
1420+ if ((gW == gW))
1421+ then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
13961422 else throw("Strict value is not equal to itself.")
13971423 }
13981424 else throw("Strict value is not equal to itself.")
14161442 let fd = ee._3
14171443 let dt = ee._4
14181444 let dM = ee._5
1419- let gK = cU(dK, dL)
1445+ let gN = cU(dK, dL)
14201446 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14211447 if ((eH == eH))
14221448 then {
1423- let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1424- if ((hB == hB))
1449+ let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1450+ if ((hD == hD))
14251451 then {
1426- let hC = eI(-(dK), -(dL), 0)
1427- let gT = hC._1
1428- let ez = hC._2
1429- let gU = eN(eH, ez)
1430- if ((gU == gU))
1431- then ((gK ++ dM) ++ gT)
1452+ let hE = eI(-(dK), -(dL), 0)
1453+ let gL = hE._1
1454+ let ez = hE._2
1455+ let gW = eN(eH, ez)
1456+ if ((gW == gW))
1457+ then ((gN ++ dM) ++ gL)
14321458 else throw("Strict value is not equal to itself.")
14331459 }
14341460 else throw("Strict value is not equal to itself.")
14391465
14401466
14411467 @Callable(fb)
1442-func getNoLess (hD,hE) = {
1468+func getNoLess (hF,hG) = {
14431469 let ee = fa(fb)
14441470 let dK = ee._1
14451471 let dL = ee._2
14461472 let fd = ee._3
14471473 let dt = ee._4
14481474 let dM = ee._5
1449- if ((hD > dK))
1450- then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hD)))
1451- else if ((hE > dL))
1452- then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hE)))
1475+ if ((hF > dK))
1476+ then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hF)))
1477+ else if ((hG > dL))
1478+ then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hG)))
14531479 else {
1454- let gK = cU(dK, dL)
1480+ let gN = cU(dK, dL)
14551481 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14561482 if ((eH == eH))
14571483 then {
1458- let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1459- if ((hB == hB))
1484+ let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1485+ if ((hD == hD))
14601486 then {
1461- let hF = eI(-(dK), -(dL), 0)
1462- let gT = hF._1
1463- let ez = hF._2
1464- let gU = eN(eH, ez)
1465- if ((gU == gU))
1466- then ((gK ++ dM) ++ gT)
1487+ let hH = eI(-(dK), -(dL), 0)
1488+ let gL = hH._1
1489+ let ez = hH._2
1490+ let gW = eN(eH, ez)
1491+ if ((gW == gW))
1492+ then ((gN ++ dM) ++ gL)
14671493 else throw("Strict value is not equal to itself.")
14681494 }
14691495 else throw("Strict value is not equal to itself.")
14761502
14771503 @Callable(fb)
14781504 func unstakeAndGet (cf) = {
1479- let hG = if ((size(fb.payments) != 0))
1505+ let hI = if ((size(fb.payments) != 0))
14801506 then throw("No payments are expected")
14811507 else true
1482- if ((hG == hG))
1508+ if ((hI == hI))
14831509 then {
14841510 let di = bk()
14851511 let dv = fromBase58String(di[q])
14861512 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14871513 if ((eH == eH))
14881514 then {
1489- let hx = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1490- if ((hx == hx))
1515+ let hz = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1516+ if ((hz == hz))
14911517 then {
14921518 let ee = dr(toBase58String(fb.transactionId), toBase58String(dv), cf, fb.caller)
14931519 let dK = ee._1
14941520 let dL = ee._2
14951521 let dy = parseIntValue(ee._9)
14961522 let dM = ee._10
1497- let gK = cU(dK, dL)
1498- let hH = if (if (bi())
1523+ let gN = cU(dK, dL)
1524+ let hJ = if (if (bi())
14991525 then true
15001526 else (dy == n))
15011527 then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
15021528 else true
1503- if ((hH == hH))
1529+ if ((hJ == hJ))
15041530 then {
1505- let hB = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1506- if ((hB == hB))
1531+ let hD = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1532+ if ((hD == hD))
15071533 then {
1508- let hI = eI(-(dK), -(dL), 0)
1509- let gT = hI._1
1510- let ez = hI._2
1511- let gU = eN(eH, ez)
1512- if ((gU == gU))
1513- then ((gK ++ dM) ++ gT)
1534+ let hK = eI(-(dK), -(dL), 0)
1535+ let gL = hK._1
1536+ let ez = hK._2
1537+ let gW = eN(eH, ez)
1538+ if ((gW == gW))
1539+ then ((gN ++ dM) ++ gL)
15141540 else throw("Strict value is not equal to itself.")
15151541 }
15161542 else throw("Strict value is not equal to itself.")
15271553
15281554
15291555 @Callable(fb)
1530-func unstakeAndGetNoLess (hw,hJ,hE) = {
1531- let hn = if (bi())
1556+func unstakeAndGetNoLess (hy,hL,hG) = {
1557+ let hp = if (bi())
15321558 then true
15331559 else (bv == n)
1534- let fV = [if (!(hn))
1560+ let fV = [if (!(hp))
15351561 then true
15361562 else throw("get operation is blocked by admin"), if ((size(fb.payments) == 0))
15371563 then true
15411567 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
15421568 if ((eH == eH))
15431569 then {
1544- let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1545- if ((hx == hx))
1570+ let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1571+ if ((hz == hz))
15461572 then {
1547- let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hw, fb.caller)
1573+ let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hy, fb.caller)
15481574 let dK = ee._1
15491575 let dL = ee._2
15501576 let dM = ee._10
1551- let gK = cU(dK, dL)
1552- let hK = [if ((dK >= hJ))
1577+ let gN = cU(dK, dL)
1578+ let hM = [if ((dK >= hL))
15531579 then true
1554- else throw(makeString(["amount asset amount to receive is less than ", toString(hJ)], "")), if ((dL >= hE))
1580+ else throw(makeString(["amount asset amount to receive is less than ", toString(hL)], "")), if ((dL >= hG))
15551581 then true
1556- else throw(makeString(["price asset amount to receive is less than ", toString(hE)], ""))]
1557- if ((hK == hK))
1582+ else throw(makeString(["price asset amount to receive is less than ", toString(hG)], ""))]
1583+ if ((hM == hM))
15581584 then {
1559- let hB = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1560- if ((hB == hB))
1585+ let hD = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1586+ if ((hD == hD))
15611587 then {
1562- let hL = eI(-(dK), -(dL), 0)
1563- let gT = hL._1
1564- let ez = hL._2
1565- let gU = eN(eH, ez)
1566- if ((gU == gU))
1567- then ((gK ++ dM) ++ gT)
1588+ let hN = eI(-(dK), -(dL), 0)
1589+ let gL = hN._1
1590+ let ez = hN._2
1591+ let gW = eN(eH, ez)
1592+ if ((gW == gW))
1593+ then ((gN ++ dM) ++ gL)
15681594 else throw("Strict value is not equal to itself.")
15691595 }
15701596 else throw("Strict value is not equal to itself.")
15811607
15821608
15831609 @Callable(fb)
1584-func activate (hM,hN) = if ((toString(fb.caller) != toString(bd)))
1610+func activate (hO,hP) = if ((toString(fb.caller) != toString(bd)))
15851611 then throw("permissions denied")
1586- else $Tuple2([StringEntry(ae(), hM), StringEntry(af(), hN)], "success")
1612+ else $Tuple2([StringEntry(ae(), hO), StringEntry(af(), hP)], "success")
1613+
1614+
1615+
1616+@Callable(fb)
1617+func invert () = {
1618+ let fV = [if ((fb.caller == bd))
1619+ then true
1620+ else ba("invalid caller")]
1621+ if ((fV == fV))
1622+ then $Tuple2([StringEntry(ae(), bp(by)), StringEntry(af(), bp(bx))], unit)
1623+ else throw("Strict value is not equal to itself.")
1624+ }
15871625
15881626
15891627
15901628 @Callable(fb)
15911629 func refreshKLp () = {
1592- let hO = valueOrElse(getInteger(ak), 0)
1593- let hP = if (((height - hO) >= an))
1630+ let hQ = valueOrElse(getInteger(ak), 0)
1631+ let hR = if (((height - hQ) >= an))
15941632 then unit
15951633 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1596- if ((hP == hP))
1634+ if ((hR == hR))
15971635 then {
15981636 let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1599- let hQ = eI(0, 0, 0)
1600- let hR = hQ._1
1601- let ez = hQ._2
1637+ let hS = eI(0, 0, 0)
1638+ let hT = hS._1
1639+ let ez = hS._2
16021640 let eL = if ((eU != ez))
1603- then hR
1641+ then hT
16041642 else ba("nothing to refresh")
16051643 $Tuple2(eL, toString(ez))
16061644 }
16591697 func statsREADONLY () = {
16601698 let di = bk()
16611699 let dv = fromBase58String(di[q])
1662- let hS = di[r]
1663- let hT = di[s]
1700+ let hU = di[r]
1701+ let hV = di[s]
16641702 let dX = di[v]
16651703 let dY = di[w]
16661704 let dj = parseIntValue(di[t])
16671705 let dk = parseIntValue(di[u])
1668- let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1669- let hV = bT(hS)
1670- let hW = bT(hT)
1671- let hX = if ((hU == 0))
1706+ let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1707+ let hX = bT(hU)
1708+ let hY = bT(hV)
1709+ let hZ = if ((hW == 0))
16721710 then [e, e, e]
1673- else dg(hV, hW, hU)
1711+ else dg(hX, hY, hW)
16741712 let dF = 0
1675- let hY = H(hX[1], b)
1676- let hZ = H(hX[2], b)
1677- let ia = value(getInteger(bd, aD(toString(this))))
1678- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hV), toString(hW), toString(hU), toString(dF), toString(hY), toString(hZ), toString(ia)], j))
1713+ let ia = H(hZ[1], b)
1714+ let ib = H(hZ[2], b)
1715+ let ic = value(getInteger(bd, aD(toString(this))))
1716+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hX), toString(hY), toString(hW), toString(dF), toString(ia), toString(ib), toString(ic)], j))
16791717 }
16801718
16811719
16911729 let dj = parseIntValue(di[t])
16921730 let dk = parseIntValue(di[u])
16931731 let dy = di[p]
1694- let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1695- let hV = bT(dV)
1696- let hW = bT(dW)
1697- let de = D(hV, dj)
1698- let df = D(hW, dk)
1699- let dE = if ((hU == 0))
1732+ let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1733+ let hX = bT(dV)
1734+ let hY = bT(dW)
1735+ let de = D(hX, dj)
1736+ let df = D(hY, dk)
1737+ let dE = if ((hW == 0))
17001738 then e
17011739 else bW(df, de)
17021740 let eb = D(dP, dj)
17041742 let dR = H(ec, dk)
17051743 let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
17061744 let em = fh._1
1707- let ib = fh._3
1745+ let id = fh._3
17081746 let dA = fh._4
17091747 let dC = fh._5
17101748 let dz = fh._6
17241762 let dj = parseIntValue(di[t])
17251763 let dk = parseIntValue(di[u])
17261764 let dy = di[p]
1727- let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1728- let ic = bT(dV)
1729- let id = bT(dW)
1730- let ie = D(ic, dj)
1731- let if = D(id, dk)
1732- let dE = if ((hU == 0))
1765+ let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1766+ let ie = bT(dV)
1767+ let if = bT(dW)
1768+ let ig = D(ie, dj)
1769+ let ih = D(if, dk)
1770+ let dE = if ((hW == 0))
17331771 then e
1734- else bW(if, ie)
1772+ else bW(ih, ig)
17351773 let ec = D(dR, dk)
17361774 let eb = fraction(ec, d, dE)
17371775 let dP = H(eb, dj)
17381776 let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
17391777 let em = fh._1
1740- let ib = fh._3
1778+ let id = fh._3
17411779 let dA = fh._4
17421780 let dC = fh._5
17431781 let dz = fh._6
17471785
17481786
17491787 @Callable(fb)
1750-func evaluateGetREADONLY (ig,ih) = {
1751- let ee = dr("", ig, ih, this)
1788+func evaluateGetREADONLY (ii,ij) = {
1789+ let ee = dr("", ii, ij, this)
17521790 let dK = ee._1
17531791 let dL = ee._2
17541792 let dA = ee._5
17601798 }
17611799
17621800
1763-@Verifier(ii)
1764-func ij () = {
1765- let ik = {
1801+@Verifier(ik)
1802+func il () = {
1803+ let im = {
17661804 let aQ = gn()
17671805 if ($isInstanceOf(aQ, "ByteVector"))
17681806 then {
17701808 gq
17711809 }
17721810 else if ($isInstanceOf(aQ, "Unit"))
1773- then ii.senderPublicKey
1811+ then ik.senderPublicKey
17741812 else throw("Match error")
17751813 }
1776- let aQ = ii
1814+ let aQ = ik
17771815 if ($isInstanceOf(aQ, "Order"))
17781816 then {
17791817 let eQ = aQ
1780- let il = bj()
1781- let im = if (eM())
1818+ let in = bj()
1819+ let io = if (eM())
17821820 then $Tuple2(true, "")
17831821 else eP(eQ)
1784- let aK = im._1
1785- let aL = im._2
1822+ let aK = io._1
1823+ let aL = io._2
17861824 let aM = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1787- let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], il)
1825+ let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], in)
17881826 if (if (if (aK)
17891827 then aM
17901828 else false)
17961834 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
17971835 then {
17981836 let aV = aQ
1799- if (sigVerify(ii.bodyBytes, ii.proofs[0], ik))
1837+ if (sigVerify(ik.bodyBytes, ik.proofs[0], im))
18001838 then true
18011839 else {
1802- let in = blake2b256(value(aV.script))
1803- let io = fromBase64String(value(getString(bd, aF())))
1804- let ip = scriptHash(this)
1805- if ((io == in))
1806- then (ip != in)
1840+ let ip = blake2b256(value(aV.script))
1841+ let iq = fromBase64String(value(getString(bd, aF())))
1842+ let ir = scriptHash(this)
1843+ if ((iq == ip))
1844+ then (ir != ip)
18071845 else false
18081846 }
18091847 }
1810- else sigVerify(ii.bodyBytes, ii.proofs[0], ik)
1848+ else sigVerify(ik.bodyBytes, ik.proofs[0], im)
18111849 }
18121850
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__managerVaultAddress"
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) = ("%s%s__skipOrderValidation__" + aI)
172172
173173
174174 func aJ (aK,aL,aM,aN) = throw((((((((("order validation failed: orderValid=" + toString(aK)) + " (") + aL) + ")") + " senderValid=") + toString(aM)) + " matcherValid=") + toString(aN)))
175175
176176
177177 func aO (aP) = {
178178 let aQ = addressFromString(aP)
179179 if ($isInstanceOf(aQ, "Address"))
180180 then {
181181 let aR = aQ
182182 aR
183183 }
184184 else this
185185 }
186186
187187
188188 func aS () = {
189189 let aT = {
190190 let aQ = getString(T())
191191 if ($isInstanceOf(aQ, "String"))
192192 then {
193193 let aU = aQ
194194 aO(aU)
195195 }
196196 else this
197197 }
198198 let aQ = getString(aT, V())
199199 if ($isInstanceOf(aQ, "String"))
200200 then {
201201 let aV = aQ
202202 aO(aV)
203203 }
204204 else this
205205 }
206206
207207
208208 func aW (aX,aY) = valueOrErrorMessage(getString(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
209209
210210
211211 func aZ (aX,aY) = valueOrErrorMessage(getInteger(aX, aY), makeString(["mandatory ", toString(aX), ".", aY, " is not defined"], ""))
212212
213213
214214 func ba (bb) = throw(makeString(["lp.ride:", bb], " "))
215215
216216
217217 func bc (bb) = makeString(["lp.ride:", bb], " ")
218218
219219
220220 let bd = addressFromStringValue(aW(this, T()))
221221
222222 let be = addressFromStringValue(aW(bd, aG))
223223
224224 let bf = {
225225 let bg = invoke(bd, "getInFeeREADONLY", [toString(this)], nil)
226226 if ($isInstanceOf(bg, "Int"))
227227 then bg
228228 else throw(($getType(bg) + " couldn't be cast to Int"))
229229 }
230230
231231 let bh = {
232232 let bg = invoke(bd, "getOutFeeREADONLY", [toString(this)], nil)
233233 if ($isInstanceOf(bg, "Int"))
234234 then bg
235235 else throw(($getType(bg) + " couldn't be cast to Int"))
236236 }
237237
238238 func bi () = valueOrElse(getBoolean(bd, aC()), false)
239239
240240
241241 func bj () = fromBase58String(aW(bd, au()))
242242
243243
244244 func bk () = {
245245 let bl = aW(this, ae())
246246 let bm = aW(this, af())
247247 let az = aZ(bd, aA(bm))
248248 let ay = aZ(bd, aA(bl))
249249 split(aW(bd, ax(toString(ay), toString(az))), j)
250250 }
251251
252252
253253 func bn (bo) = if ((bo == i))
254254 then unit
255255 else fromBase58String(bo)
256256
257257
258258 func bp (bo) = if ((bo == unit))
259259 then i
260260 else toBase58String(value(bo))
261261
262262
263263 func bq (br) = $Tuple7(addressFromStringValue(br[o]), parseIntValue(br[p]), fromBase58String(br[q]), bn(br[r]), bn(br[s]), parseIntValue(br[t]), parseIntValue(br[u]))
264264
265265
266266 let bs = bq(bk())
267267
268268 let bt = bs
269269
270270 let bu = bt._1
271271
272272 let bv = bt._2
273273
274274 let bw = bt._3
275275
276276 let bx = bt._4
277277
278278 let by = bt._5
279279
280280 let bz = bt._6
281281
282282 let bA = bt._7
283283
284284 func bB () = split(aW(bd, at()), j)
285285
286286
287287 let bC = valueOrErrorMessage(addressFromString(bB()[B]), "incorrect staking address")
288288
289289 let bD = valueOrErrorMessage(addressFromString(bB()[C]), "incorrect staking address")
290290
291291 func bE (bF,bG,bH,bI,bJ,bK,bL,bM,bN,bO) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bF), toString(bG), toString(bH), toString(bI), toString(bJ), toString(bK), toString(bL), toString(bM), toString(bN), toString(bO)], j)
292292
293293
294294 func bP (bQ,bR,bS,bI,bL,bM) = makeString(["%d%d%d%d%d%d", toString(bQ), toString(bR), toString(bS), toString(bI), toString(bL), toString(bM)], j)
295295
296296
297297 func bT (ap) = {
298298 let bU = if ((ap == "WAVES"))
299299 then wavesBalance(this).available
300300 else assetBalance(this, fromBase58String(ap))
301301 let bV = ((bU + ar(ap)) - as(ap))
302302 max([0, bV])
303303 }
304304
305305
306306 func bW (bX,bY) = fraction(bX, d, bY)
307307
308308
309309 func bZ (bX,bY,L) = fraction(bX, d, bY, L)
310310
311311
312312 func ca (cb) = {
313313 let cc = invoke(cb, "getRate", nil, nil)
314314 if ((cc == cc))
315315 then {
316316 let aQ = cc
317317 if ($isInstanceOf(aQ, "Int"))
318318 then {
319319 let cd = aQ
320320 cd
321321 }
322322 else ba("proxy.getRate() unexpected value")
323323 }
324324 else throw("Strict value is not equal to itself.")
325325 }
326326
327327
328328 func ce (ap,cf,cg,cb) = {
329329 let ch = ar(ap)
330330 if ((ch == ch))
331331 then {
332332 let ci = as(cg)
333333 if ((ci == ci))
334334 then {
335335 let cj = bn(ap)
336336 if ((cf > 0))
337337 then {
338338 let ck = invoke(cb, "deposit", nil, [AttachedPayment(cj, cf)])
339339 if ((ck == ck))
340340 then {
341341 let aQ = ck
342342 if ($isInstanceOf(aQ, "Int"))
343343 then {
344344 let cl = aQ
345345 let cm = (ch + cf)
346346 let cn = (ci + cl)
347347 [IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn)]
348348 }
349349 else nil
350350 }
351351 else throw("Strict value is not equal to itself.")
352352 }
353353 else nil
354354 }
355355 else throw("Strict value is not equal to itself.")
356356 }
357357 else throw("Strict value is not equal to itself.")
358358 }
359359
360360
361361 func co (ap,cf,cg,cb,cp,cq) = {
362362 let ch = ar(ap)
363363 if ((ch == ch))
364364 then {
365365 let ci = as(cg)
366366 if ((ci == ci))
367367 then {
368368 let cr = ca(cb)
369369 if ((cr == cr))
370370 then {
371371 let cs = fraction(cp, ch, ci)
372372 let ct = bn(cg)
373373 let cu = fraction(cp, cf, cs)
374374 let cv = fraction(cp, cf, cr)
375375 let cw = max([0, (cu - cv)])
376376 if ((cv > 0))
377377 then {
378378 let cx = invoke(cb, "withdraw", nil, [AttachedPayment(ct, cv)])
379379 if ((cx == cx))
380380 then {
381381 let aQ = cx
382382 if ($isInstanceOf(aQ, "Int"))
383383 then {
384384 let cy = aQ
385385 let cm = (ch - cy)
386386 let cn = ((ci - cv) - cw)
387387 [IntegerEntry(ao(ap), cm), IntegerEntry(aq(cg), cn), ScriptTransfer(cq, cw, bn(cg))]
388388 }
389389 else nil
390390 }
391391 else throw("Strict value is not equal to itself.")
392392 }
393393 else nil
394394 }
395395 else throw("Strict value is not equal to itself.")
396396 }
397397 else throw("Strict value is not equal to itself.")
398398 }
399399 else throw("Strict value is not equal to itself.")
400400 }
401401
402402
403403 func cz (ap) = {
404404 let aQ = invoke(bd, "getPoolLeaseConfigREADONLY", [toString(this), ap], nil)
405405 if ($isInstanceOf(aQ, "(Boolean, Int, Int, String, String, Int, String)"))
406406 then {
407407 let aR = aQ
408408 aR
409409 }
410410 else ba((("[" + ap) + "] getLeaseProxyConfig() error"))
411411 }
412412
413413
414414 func cA (cB,ap,cg,cC,cb,cp,cq) = {
415415 let ch = ar(ap)
416416 if ((ch == ch))
417417 then {
418418 let ci = as(cg)
419419 if ((ci == ci))
420420 then {
421421 let cD = max([0, (bT(ap) - cC)])
422422 let cE = fraction(cB, cD, 100)
423423 let cF = (ch - cE)
424424 if ((cF == 0))
425425 then nil
426426 else if ((0 > cF))
427427 then {
428428 let cG = -(cF)
429429 ce(ap, cG, cg, cb)
430430 }
431431 else {
432432 let cH = cF
433433 co(ap, cH, cg, cb, cp, cq)
434434 }
435435 }
436436 else throw("Strict value is not equal to itself.")
437437 }
438438 else throw("Strict value is not equal to itself.")
439439 }
440440
441441
442442 func cI (ap) = {
443443 let cJ = cz(ap)
444444 let cK = cJ._1
445445 let cL = cJ._2
446446 let cC = cJ._3
447447 let cM = cJ._4
448448 let cN = cJ._5
449449 let cp = cJ._6
450450 let cO = cJ._7
451451 if (cK)
452452 then cA(cL, ap, cN, cC, addressFromStringValue(cM), cp, addressFromStringValue(cO))
453453 else nil
454454 }
455455
456456
457457 func cP (ap,cQ) = {
458458 let cR = cz(ap)
459459 let cK = cR._1
460460 let cL = cR._2
461461 let cC = cR._3
462462 let cM = cR._4
463463 let cN = cR._5
464464 let cp = cR._6
465465 let cO = cR._7
466466 if (cK)
467467 then {
468468 let cS = max([0, ((bT(ap) - cQ) - cC)])
469469 if ((cS == cS))
470470 then {
471471 let cm = fraction(cL, cS, 100)
472472 if ((cm == cm))
473473 then {
474474 let cT = (ar(ap) - cm)
475475 if ((cT == cT))
476476 then if ((0 > cT))
477477 then ce(ap, -(cT), cN, addressFromStringValue(cM))
478478 else co(ap, cT, cN, addressFromStringValue(cM), cp, addressFromStringValue(cO))
479479 else throw("Strict value is not equal to itself.")
480480 }
481481 else throw("Strict value is not equal to itself.")
482482 }
483483 else throw("Strict value is not equal to itself.")
484484 }
485485 else nil
486486 }
487487
488488
489489 func cU (cV,cW) = {
490490 let cX = cP(aW(this, ae()), cV)
491491 let cY = cP(aW(this, af()), cW)
492492 (cX ++ cY)
493493 }
494494
495495
496496 func cZ (da,db,dc,dd) = {
497497 let de = D(dc, da)
498498 let df = D(dd, db)
499499 bW(df, de)
500500 }
501501
502502
503503 func dg (dc,dd,dh) = {
504504 let di = bk()
505505 let dj = parseIntValue(di[t])
506506 let dk = parseIntValue(di[u])
507507 let dl = cZ(dj, dk, dc, dd)
508508 let bY = D(dc, dj)
509509 let bX = D(dd, dk)
510510 let dm = D(dh, b)
511511 let dn = bW(bY, dm)
512512 let do = bW(bX, dm)
513513 [dl, dn, do]
514514 }
515515
516516
517517 func dp (dc,dd,dh) = {
518518 let dq = dg(dc, dd, dh)
519519 [H(dq[0], b), H(dq[1], b), H(dq[2], b)]
520520 }
521521
522522
523523 func dr (ds,dt,du,ab) = {
524524 let di = bk()
525525 let dv = di[q]
526526 let dw = di[r]
527527 let dx = di[s]
528528 let da = parseIntValue(di[t])
529529 let db = parseIntValue(di[u])
530530 let dy = di[p]
531531 let dz = valueOrErrorMessage(assetInfo(fromBase58String(dv)), (("Asset " + dv) + " doesn't exist")).quantity
532532 if ((dv != dt))
533533 then throw("Invalid asset passed.")
534534 else {
535535 let dA = bT(dw)
536536 let dB = D(dA, da)
537537 let dC = bT(dx)
538538 let dD = D(dC, db)
539539 let dE = bW(dD, dB)
540540 let dF = H(dE, b)
541541 let dG = D(du, b)
542542 let dH = D(dz, b)
543543 let dI = fraction(dB, dG, dH)
544544 let dJ = fraction(dD, dG, dH)
545545 let dK = K(dI, da, FLOOR)
546546 let dL = K(dJ, db, FLOOR)
547547 let dM = if ((ds == ""))
548548 then nil
549549 else [ScriptTransfer(ab, dK, if ((dw == "WAVES"))
550550 then unit
551551 else fromBase58String(dw)), ScriptTransfer(ab, dL, if ((dx == "WAVES"))
552552 then unit
553553 else fromBase58String(dx)), StringEntry(ad(toString(ab), ds), bP(dK, dL, du, dF, height, lastBlock.timestamp)), IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF)]
554554 $Tuple10(dK, dL, dw, dx, dA, dC, dz, dE, dy, dM)
555555 }
556556 }
557557
558558
559559 func dN (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = {
560560 let di = bk()
561561 let dv = fromBase58String(di[q])
562562 let dV = di[r]
563563 let dW = di[s]
564564 let dX = di[v]
565565 let dY = di[w]
566566 let dj = parseIntValue(di[t])
567567 let dk = parseIntValue(di[u])
568568 let dy = di[p]
569569 let dz = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
570570 let dZ = toBase58String(valueOrElse(dQ, fromBase58String("WAVES")))
571571 let ea = toBase58String(valueOrElse(dS, fromBase58String("WAVES")))
572572 if (if ((dV != dZ))
573573 then true
574574 else (dW != ea))
575575 then throw("Invalid amt or price asset passed.")
576576 else {
577577 let dA = if (dT)
578578 then bT(dV)
579579 else (bT(dV) - dP)
580580 let dC = if (dT)
581581 then bT(dW)
582582 else (bT(dW) - dR)
583583 let eb = D(dP, dj)
584584 let ec = D(dR, dk)
585585 let ed = bW(ec, eb)
586586 let dB = D(dA, dj)
587587 let dD = D(dC, dk)
588588 let ee = if ((dz == 0))
589589 then {
590590 let dE = e
591591 let ef = e
592592 let dm = pow((eb * ec), 0, toBigInt(5), 1, 0, DOWN)
593593 $Tuple5(H(dm, b), H(eb, dj), H(ec, dk), bW((dD + ec), (dB + eb)), ef)
594594 }
595595 else {
596596 let dE = bW(dD, dB)
597597 let ef = fraction(R((dE - ed)), d, dE)
598598 let eg = D(dO, b)
599599 if (if ((dE != e))
600600 then (ef > eg)
601601 else false)
602602 then throw(((("Price slippage " + toString(ef)) + " exceeded the passed limit of ") + toString(eg)))
603603 else {
604604 let dH = D(dz, b)
605605 let eh = fraction(eb, bZ(dD, dB, CEILING), d, CEILING)
606606 let ei = fraction(ec, d, bZ(dD, dB, FLOOR), CEILING)
607607 let ej = if ((eh > ec))
608608 then $Tuple2(ei, ec)
609609 else $Tuple2(eb, eh)
610610 let ek = ej._1
611611 let el = ej._2
612612 let dm = fraction(dH, el, dD, FLOOR)
613613 $Tuple5(K(dm, b, FLOOR), K(ek, dj, CEILING), K(el, dk, CEILING), dE, ef)
614614 }
615615 }
616616 let em = ee._1
617617 let en = ee._2
618618 let eo = ee._3
619619 let dF = H(ee._4, b)
620620 let ep = H(ee._5, b)
621621 if ((0 >= em))
622622 then throw("Invalid calculations. LP calculated is less than zero.")
623623 else {
624624 let eq = if (!(dU))
625625 then 0
626626 else em
627627 let er = (dP - en)
628628 let es = (dR - eo)
629629 let et = [IntegerEntry(W(), dF), IntegerEntry(X(height, lastBlock.timestamp), dF), StringEntry(aa(ab, ds), bE(en, eo, eq, dF, dO, ep, height, lastBlock.timestamp, er, es))]
630630 $Tuple13(em, eq, dF, dA, dC, dz, dv, dy, et, er, es, dQ, dS)
631631 }
632632 }
633633 }
634634
635635
636636 func eu (ev,ew,dz) = {
637637 let ex = G(ev, toBigInt(bz))
638638 let ey = G(ew, toBigInt(bA))
639639 let ez = fraction(pow((ex * ey), 0, toBigInt(5), 1, 18, DOWN), g, dz)
640640 if ((dz == f))
641641 then f
642642 else ez
643643 }
644644
645645
646646 func eA (eB,eC,eD) = {
647647 let eE = (toBigInt(bT(bp(bx))) - eB)
648648 let eF = (toBigInt(bT(bp(by))) - eC)
649649 let eG = (toBigInt(value(assetInfo(bw)).quantity) - eD)
650650 let eH = eu(eE, eF, eG)
651651 eH
652652 }
653653
654654
655655 func eI (eJ,eK,eD) = {
656656 let eE = (bT(bp(bx)) + eJ)
657657 let eF = (bT(bp(by)) + eK)
658658 let eG = (value(assetInfo(bw)).quantity + eD)
659659 let ez = eu(toBigInt(eE), toBigInt(eF), toBigInt(eG))
660660 let eL = [IntegerEntry(ak, height), StringEntry(aj, toString(ez))]
661661 $Tuple2(eL, ez)
662662 }
663663
664664
665665 func eM () = valueOrElse(getBoolean(bd, aH(toString(this))), false)
666666
667667
668668 func eN (eO,ez) = if ((ez >= eO))
669669 then true
670670 else ba(makeString(["updated KLp lower than current KLp", toString(eO), toString(ez)], " "))
671671
672672
673673 func eP (eQ) = {
674674 let eE = bT(bp(bx))
675675 let eF = bT(bp(by))
676676 let eR = eQ.amount
677677 let eS = fraction(eQ.amount, eQ.price, b, FLOOR)
678678 let eT = if ((eQ.orderType == Buy))
679679 then $Tuple2(eR, -(eS))
680680 else $Tuple2(-(eR), eS)
681681 let eJ = eT._1
682682 let eK = eT._2
683683 if (if (if (bi())
684684 then true
685685 else (bv == m))
686686 then true
687687 else (bv == n))
688688 then throw("Exchange operations disabled")
689689 else if (if ((eQ.assetPair.amountAsset != bx))
690690 then true
691691 else (eQ.assetPair.priceAsset != by))
692692 then throw("Wrong order assets.")
693693 else {
694694 let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
695695 let eV = eI(eJ, eK, 0)
696696 let eW = eV._1
697697 let eX = eV._2
698698 let eY = (eX >= eU)
699699 let eZ = makeString(["kLp=", toString(eU), " kLpNew=", toString(eX), " amountAssetBalance=", toString(eE), " priceAssetBalance=", toString(eF), " amountAssetBalanceDelta=", toString(eJ), " priceAssetBalanceDelta=", toString(eK), " height=", toString(height)], "")
700700 $Tuple2(eY, eZ)
701701 }
702702 }
703703
704704
705705 func fa (fb) = if ((size(fb.payments) != 1))
706706 then throw("exactly 1 payment is expected")
707707 else {
708708 let fc = value(fb.payments[0])
709709 let dt = value(fc.assetId)
710710 let fd = fc.amount
711711 let ee = dr(toBase58String(fb.transactionId), toBase58String(dt), fd, fb.caller)
712712 let dK = ee._1
713713 let dL = ee._2
714714 let dy = parseIntValue(ee._9)
715715 let dM = ee._10
716716 if (if (bi())
717717 then true
718718 else (dy == n))
719719 then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
720720 else $Tuple5(dK, dL, fd, dt, dM)
721721 }
722722
723723
724724 func fe (fb,dO,dU) = if ((size(fb.payments) != 2))
725725 then throw("exactly 2 payments are expected")
726726 else {
727727 let ff = value(fb.payments[0])
728728 let fg = value(fb.payments[1])
729729 let fh = dN(toBase58String(fb.transactionId), dO, ff.amount, ff.assetId, fg.amount, fg.assetId, toString(fb.caller), false, dU)
730730 let dy = parseIntValue(fh._8)
731731 if (if (if (bi())
732732 then true
733733 else (dy == l))
734734 then true
735735 else (dy == n))
736736 then throw(("Put operation is blocked by admin. Status = " + toString(dy)))
737737 else fh
738738 }
739739
740740
741741 func fi (cf) = {
742742 let fj = invoke(bd, "emit", [cf], nil)
743743 if ((fj == fj))
744744 then {
745745 let fk = {
746746 let aQ = fj
747747 if ($isInstanceOf(aQ, "Address"))
748748 then {
749749 let fl = aQ
750750 invoke(fl, "emit", [cf], nil)
751751 }
752752 else unit
753753 }
754754 if ((fk == fk))
755755 then cf
756756 else throw("Strict value is not equal to itself.")
757757 }
758758 else throw("Strict value is not equal to itself.")
759759 }
760760
761761
762762 func fm (cf,ai) = {
763763 let fn = if ((ai == 0))
764764 then 0
765765 else fraction(cf, ai, b)
766766 $Tuple2((cf - fn), fn)
767767 }
768768
769769
770770 func fo (fp,fq,ab,ac) = {
771771 let fr = (ac == unit)
772772 let fs = bT(bp(bx))
773773 let ft = bT(bp(by))
774774 let fu = if ((fq == bx))
775775 then true
776776 else if ((fq == by))
777777 then false
778778 else ba("invalid asset")
779779 let fv = if (fr)
780780 then $Tuple2(fs, ft)
781781 else if (fu)
782782 then $Tuple2((fs - fp), ft)
783783 else $Tuple2(fs, (ft - fp))
784784 let fw = fv._1
785785 let fx = fv._2
786786 let fy = if (fu)
787787 then $Tuple2(fp, 0)
788788 else $Tuple2(0, fp)
789789 let fz = fy._1
790790 let fA = fy._2
791791 let eR = fm(fz, bf)._1
792792 let eS = fm(fA, bf)._1
793793 let fB = fm(fp, bf)
794794 let fC = fB._1
795795 let fn = fB._2
796796 let fD = (fw + eR)
797797 let fE = (fx + eS)
798798 let fF = bW(D(fE, bA), D(fD, bz))
799799 let fG = H(fF, b)
800800 let fH = if (fu)
801801 then fw
802802 else fx
803803 let fI = toBigInt(fH)
804804 let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
805805 let fK = if ((fJ > f))
806806 then true
807807 else ba("initial deposit requires all coins")
808808 if ((fK == fK))
809809 then {
810810 let fL = toBigInt(fC)
811811 let fM = max([0, toInt(((fJ * (sqrtBigInt((d + ((fL * d) / fI)), 18, 18, DOWN) - d)) / d))])
812812 let et = if (fr)
813813 then nil
814814 else [IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG), StringEntry(aa(toString(value(ab)), toBase58String(value(ac))), bE(fz, fA, fM, fG, 0, 0, height, lastBlock.timestamp, 0, 0))]
815815 let fN = bW(D(fx, bA), D(fw, bz))
816816 let fO = H(fN, b)
817817 let fP = {
818818 let fQ = if (fu)
819819 then $Tuple2(fz, fw)
820820 else $Tuple2(fA, fx)
821821 let cf = fQ._1
822822 let fR = fQ._2
823823 let fS = toInt(fraction(fJ, toBigInt((cf / 2)), toBigInt(fR)))
824824 fraction((fM - fS), b, fS)
825825 }
826826 $Tuple5(fM, et, fn, fP, fu)
827827 }
828828 else throw("Strict value is not equal to itself.")
829829 }
830830
831831
832832 func fT (fU,fC,fq,ab,ac) = {
833833 let fr = (ac == unit)
834834 let di = bk()
835835 let dj = parseIntValue(di[t])
836836 let dk = parseIntValue(di[u])
837837 let fV = [if ((fq == bw))
838838 then true
839839 else ba("invalid lp asset")]
840840 if ((fV == fV))
841841 then {
842842 let fW = if ((fU == bx))
843843 then true
844844 else if ((fU == by))
845845 then false
846846 else ba("invalid asset")
847847 let fX = if (fW)
848848 then toBigInt(bT(bp(bx)))
849849 else toBigInt(bT(bp(by)))
850850 let fY = if (fW)
851851 then dj
852852 else dk
853853 let fZ = bT(bp(bx))
854854 let ga = bT(bp(by))
855855 let gb = if (fW)
856856 then fZ
857857 else ga
858858 let gc = toBigInt(gb)
859859 let fJ = toBigInt(valueOrErrorMessage(assetInfo(bw), (("asset " + toBase58String(bw)) + " doesn't exist")).quantity)
860860 let gd = toBigInt(fC)
861861 let ge = max([0, toInt(((fX * (d - pow((d - ((gd * d) / fJ)), 18, h, 0, 18, DOWN))) / d))])
862862 let gf = fm(ge, bh)
863863 let gg = gf._1
864864 let fn = gf._2
865865 let gh = if (fW)
866866 then $Tuple4(gg, 0, (fZ - ge), ga)
867867 else $Tuple4(0, gg, fZ, (ga - ge))
868868 let gi = gh._1
869869 let gj = gh._2
870870 let gk = gh._3
871871 let gl = gh._4
872872 let fF = bW(D(gl, bA), D(gk, bz))
873873 let fG = H(fF, b)
874874 let et = if (fr)
875875 then nil
876876 else [StringEntry(ad(toString(value(ab)), toBase58String(value(ac))), bP(gi, gj, fC, fG, height, lastBlock.timestamp)), IntegerEntry(W(), fG), IntegerEntry(X(height, lastBlock.timestamp), fG)]
877877 let fN = bW(D(ga, bA), D(fZ, bz))
878878 let fO = H(fN, b)
879879 let fP = {
880880 let gm = (toInt(fraction(fX, gd, fJ)) * 2)
881881 fraction((gg - gm), b, gm)
882882 }
883883 $Tuple5(gg, et, fn, fP, fW)
884884 }
885885 else throw("Strict value is not equal to itself.")
886886 }
887887
888888
889889 func gn () = {
890890 let go = aS()
891891 let aQ = getString(go, U())
892892 if ($isInstanceOf(aQ, "String"))
893893 then {
894894 let aV = aQ
895895 fromBase58String(aV)
896896 }
897897 else if ($isInstanceOf(aQ, "Unit"))
898898 then unit
899899 else throw("Match error")
900900 }
901901
902902
903903 func gp (fb) = {
904904 let aQ = gn()
905905 if ($isInstanceOf(aQ, "ByteVector"))
906906 then {
907907 let gq = aQ
908908 (fb.callerPublicKey == gq)
909909 }
910910 else if ($isInstanceOf(aQ, "Unit"))
911911 then (fb.caller == this)
912912 else throw("Match error")
913913 }
914914
915915
916916 func gr (fb) = {
917917 let gs = throw("Permission denied")
918918 let aQ = gn()
919919 if ($isInstanceOf(aQ, "ByteVector"))
920920 then {
921921 let gq = aQ
922922 if ((fb.callerPublicKey == gq))
923923 then true
924924 else gs
925925 }
926926 else if ($isInstanceOf(aQ, "Unit"))
927927 then if ((fb.caller == this))
928928 then true
929929 else gs
930930 else throw("Match error")
931931 }
932932
933933
934934 @Callable(fb)
935935 func rebalance () = (cI(aW(this, ae())) ++ cI(aW(this, af())))
936936
937937
938938
939939 @Callable(fb)
940940 func calculateAmountOutForSwapREADONLY (gt,gu,gv) = {
941941 let gw = if ((gu == false))
942942 then {
943943 let gx = aW(this, af())
944944 let gy = aW(this, ae())
945945 $Tuple2(gx, gy)
946946 }
947947 else {
948948 let gx = aW(this, ae())
949949 let gy = aW(this, af())
950950 $Tuple2(gx, gy)
951951 }
952952 let gx = gw._1
953953 let gy = gw._2
954954 let gz = bT(gy)
955955 let gA = bT(gx)
956956 let gB = fraction(gA, gt, (gz + gt))
957957 let gC = (toBigInt(gz) * toBigInt(gA))
958958 let gD = (((toBigInt(bT(gy)) + toBigInt(gt)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
959959 let gE = if ((gD >= gC))
960960 then true
961961 else throw("new K is fewer error")
962962 if ((gE == gE))
963963 then $Tuple2(nil, gB)
964964 else throw("Strict value is not equal to itself.")
965965 }
966966
967967
968968
969969 @Callable(fb)
970970 func calculateAmountOutForSwapAndSendTokens (gt,gu,gF,gG,gv) = {
971971 let gH = {
972972 let bg = invoke(bd, "getSwapContractREADONLY", nil, nil)
973973 if ($isInstanceOf(bg, "String"))
974974 then bg
975975 else throw(($getType(bg) + " couldn't be cast to String"))
976976 }
977- let fV = [if ((value(fb.payments[0]).amount >= gt))
977+ let gI = {
978+ let bg = invoke(bd, "isPoolSwapDisabledREADONLY", [toString(this)], nil)
979+ if ($isInstanceOf(bg, "Boolean"))
980+ then bg
981+ else throw(($getType(bg) + " couldn't be cast to Boolean"))
982+ }
983+ let gJ = if (if (bi())
984+ then true
985+ else (bv == n))
986+ then true
987+ else gI
988+ let fV = [if (if (!(gJ))
989+ then true
990+ else gp(fb))
991+ then true
992+ else ba("swap operation is blocked by admin"), if ((value(fb.payments[0]).amount >= gt))
978993 then true
979994 else ba("Wrong amount"), if ((fb.caller == addressFromStringValue(gH)))
980995 then true
981996 else ba("Permission denied")]
982997 if ((fV == fV))
983998 then {
984999 let fc = value(fb.payments[0])
9851000 let gy = bp(fc.assetId)
9861001 let gx = if ((gu == false))
9871002 then aW(this, af())
9881003 else aW(this, ae())
9891004 let gz = ((bT(gy) - value(fb.payments[0]).amount) - gv)
9901005 let gA = bT(gx)
9911006 let gB = fraction(gA, gt, (gz + gt))
9921007 let gC = (toBigInt(gz) * toBigInt(gA))
9931008 let gD = ((toBigInt(bT(gy)) + toBigInt(gv)) * (toBigInt(bT(gx)) - toBigInt(gB)))
9941009 let gE = if ((gD >= gC))
9951010 then true
9961011 else throw("new K is fewer error")
9971012 if ((gE == gE))
9981013 then {
999- let gI = if ((gB >= gF))
1014+ let gK = if ((gB >= gF))
10001015 then true
10011016 else throw("Exchange result is fewer coins than expected")
1002- if ((gI == gI))
1017+ if ((gK == gK))
10031018 then {
1004- let gJ = cI(gy)
1005- if ((gJ == gJ))
1019+ let eJ = if (gu)
1020+ then -(gB)
1021+ else gv
1022+ let eK = if (gu)
1023+ then gv
1024+ else -(gB)
1025+ let gL = eI(eJ, eK, 0)._1
1026+ if ((gL == gL))
10061027 then {
1007- let gK = cP(gx, gB)
1008- if ((gK == gK))
1009- then $Tuple2(((gK ++ gJ) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
1028+ let gM = cI(gy)
1029+ if ((gM == gM))
1030+ then {
1031+ let gN = cP(gx, gB)
1032+ if ((gN == gN))
1033+ then $Tuple2(((gN ++ gM) ++ [ScriptTransfer(addressFromStringValue(gG), gB, bn(gx))]), gB)
1034+ else throw("Strict value is not equal to itself.")
1035+ }
10101036 else throw("Strict value is not equal to itself.")
10111037 }
10121038 else throw("Strict value is not equal to itself.")
10131039 }
10141040 else throw("Strict value is not equal to itself.")
10151041 }
10161042 else throw("Strict value is not equal to itself.")
10171043 }
10181044 else throw("Strict value is not equal to itself.")
10191045 }
10201046
10211047
10221048
10231049 @Callable(fb)
1024-func put (dO,gL) = if ((0 > dO))
1050+func put (dO,gO) = if ((0 > dO))
10251051 then throw("Invalid slippageTolerance passed")
10261052 else {
10271053 let fh = fe(fb, dO, true)
10281054 let eq = fh._2
10291055 let dv = fh._7
10301056 let dM = fh._9
10311057 let er = fh._10
10321058 let es = fh._11
1033- let gM = fh._12
1034- let gN = fh._13
1059+ let gP = fh._12
1060+ let gQ = fh._13
10351061 let ff = toBigInt(value(fb.payments[0]).amount)
10361062 let fg = toBigInt(value(fb.payments[1]).amount)
10371063 let eH = eA(ff, fg, toBigInt(0))
10381064 if ((eH == eH))
10391065 then {
10401066 let fj = invoke(bd, "emit", [eq], nil)
10411067 if ((fj == fj))
10421068 then {
10431069 let fk = {
10441070 let aQ = fj
10451071 if ($isInstanceOf(aQ, "Address"))
10461072 then {
10471073 let fl = aQ
10481074 invoke(fl, "emit", [eq], nil)
10491075 }
10501076 else unit
10511077 }
10521078 if ((fk == fk))
10531079 then {
1054- let gO = if ((er > 0))
1055- then invoke(bD, "put", nil, [AttachedPayment(gM, er)])
1080+ let gR = if ((er > 0))
1081+ then invoke(bD, "put", nil, [AttachedPayment(gP, er)])
10561082 else nil
1057- if ((gO == gO))
1083+ if ((gR == gR))
10581084 then {
1059- let gP = if ((es > 0))
1060- then invoke(bD, "put", nil, [AttachedPayment(gN, es)])
1085+ let gS = if ((es > 0))
1086+ then invoke(bD, "put", nil, [AttachedPayment(gQ, es)])
10611087 else nil
1062- if ((gP == gP))
1088+ if ((gS == gS))
10631089 then {
1064- let gQ = if (gL)
1090+ let gT = if (gO)
10651091 then {
1066- let gR = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1067- if ((gR == gR))
1092+ let gU = invoke(bC, "stake", nil, [AttachedPayment(dv, eq)])
1093+ if ((gU == gU))
10681094 then nil
10691095 else throw("Strict value is not equal to itself.")
10701096 }
10711097 else [ScriptTransfer(fb.caller, eq, dv)]
1072- let gS = eI(0, 0, 0)
1073- if ((gS == gS))
1098+ let gV = eI(0, 0, 0)
1099+ if ((gV == gV))
10741100 then {
1075- let ez = gS._2
1076- let gT = gS._1
1077- let gU = eN(eH, ez)
1078- if ((gU == gU))
1101+ let ez = gV._2
1102+ let gL = gV._1
1103+ let gW = eN(eH, ez)
1104+ if ((gW == gW))
10791105 then {
1080- let gV = invoke(this, "rebalance", nil, nil)
1081- if ((gV == gV))
1082- then ((dM ++ gQ) ++ gT)
1106+ let gX = invoke(this, "rebalance", nil, nil)
1107+ if ((gX == gX))
1108+ then ((dM ++ gT) ++ gL)
10831109 else throw("Strict value is not equal to itself.")
10841110 }
10851111 else throw("Strict value is not equal to itself.")
10861112 }
10871113 else throw("Strict value is not equal to itself.")
10881114 }
10891115 else throw("Strict value is not equal to itself.")
10901116 }
10911117 else throw("Strict value is not equal to itself.")
10921118 }
10931119 else throw("Strict value is not equal to itself.")
10941120 }
10951121 else throw("Strict value is not equal to itself.")
10961122 }
10971123 else throw("Strict value is not equal to itself.")
10981124 }
10991125
11001126
11011127
11021128 @Callable(fb)
1103-func putForFree (gW) = if ((0 > gW))
1129+func putForFree (gY) = if ((0 > gY))
11041130 then throw("Invalid value passed")
11051131 else {
1106- let fh = fe(fb, gW, false)
1132+ let fh = fe(fb, gY, false)
11071133 let dM = fh._9
11081134 let ff = toBigInt(value(fb.payments[0]).amount)
11091135 let fg = toBigInt(value(fb.payments[1]).amount)
11101136 let eH = eA(ff, fg, toBigInt(0))
11111137 if ((eH == eH))
11121138 then {
1113- let gX = eI(0, 0, 0)
1114- let gT = gX._1
1115- let ez = gX._2
1116- let gU = eN(eH, ez)
1117- if ((gU == gU))
1118- then (dM ++ gT)
1139+ let gZ = eI(0, 0, 0)
1140+ let gL = gZ._1
1141+ let ez = gZ._2
1142+ let gW = eN(eH, ez)
1143+ if ((gW == gW))
1144+ then (dM ++ gL)
11191145 else throw("Strict value is not equal to itself.")
11201146 }
11211147 else throw("Strict value is not equal to itself.")
11221148 }
11231149
11241150
11251151
11261152 @Callable(fb)
1127-func putOneTkn (gY,gZ) = {
1128- let ha = {
1153+func putOneTkn (ha,hb) = {
1154+ let hc = {
11291155 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
11301156 if ($isInstanceOf(bg, "Boolean"))
11311157 then bg
11321158 else throw(($getType(bg) + " couldn't be cast to Boolean"))
11331159 }
1134- let hb = if (if (if (bi())
1160+ let hd = if (if (if (bi())
11351161 then true
11361162 else (bv == l))
11371163 then true
11381164 else (bv == n))
11391165 then true
1140- else ha
1141- let fV = [if (if (!(hb))
1166+ else hc
1167+ let fV = [if (if (!(hd))
11421168 then true
11431169 else gp(fb))
11441170 then true
11451171 else ba("put operation is blocked by admin"), if ((size(fb.payments) == 1))
11461172 then true
11471173 else ba("exactly 1 payment are expected")]
11481174 if ((fV == fV))
11491175 then {
1150- let hc = fb.payments[0]
1151- let fq = hc.assetId
1152- let fp = hc.amount
1176+ let he = fb.payments[0]
1177+ let fq = he.assetId
1178+ let fp = he.amount
11531179 let eH = if ((fq == bx))
11541180 then eA(toBigInt(fp), toBigInt(0), toBigInt(0))
11551181 else if ((fq == by))
11561182 then eA(toBigInt(0), toBigInt(fp), toBigInt(0))
11571183 else ba("payment asset is not supported")
11581184 if ((eH == eH))
11591185 then {
11601186 let ab = fb.caller
11611187 let ac = fb.transactionId
1162- let hd = fo(fp, fq, ab, ac)
1163- if ((hd == hd))
1188+ let hf = fo(fp, fq, ab, ac)
1189+ if ((hf == hf))
11641190 then {
1165- let fu = hd._5
1166- let he = hd._4
1167- let fn = hd._3
1168- let et = hd._2
1169- let hf = hd._1
1170- let hg = if (if ((gY > 0))
1171- then (gY > hf)
1191+ let fu = hf._5
1192+ let hg = hf._4
1193+ let fn = hf._3
1194+ let et = hf._2
1195+ let hh = hf._1
1196+ let hi = if (if ((ha > 0))
1197+ then (ha > hh)
11721198 else false)
1173- then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1174- else hf
1175- let fj = fi(hg)
1199+ then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1200+ else hh
1201+ let fj = fi(hi)
11761202 if ((fj == fj))
11771203 then {
1178- let gQ = if (gZ)
1204+ let gT = if (hb)
11791205 then {
1180- let hh = invoke(bC, "stake", nil, [AttachedPayment(bw, hg)])
1181- if ((hh == hh))
1206+ let hj = invoke(bC, "stake", nil, [AttachedPayment(bw, hi)])
1207+ if ((hj == hj))
11821208 then nil
11831209 else throw("Strict value is not equal to itself.")
11841210 }
1185- else [ScriptTransfer(fb.caller, hg, bw)]
1186- let hi = if ((fn > 0))
1211+ else [ScriptTransfer(fb.caller, hi, bw)]
1212+ let hk = if ((fn > 0))
11871213 then [ScriptTransfer(be, fn, fq)]
11881214 else nil
1189- let hj = if ((this == be))
1215+ let hl = if ((this == be))
11901216 then $Tuple2(0, 0)
11911217 else if (fu)
11921218 then $Tuple2(-(fn), 0)
11931219 else $Tuple2(0, -(fn))
1194- let eJ = hj._1
1195- let eK = hj._2
1196- let hk = eI(eJ, eK, 0)
1197- let gT = hk._1
1198- let ez = hk._2
1220+ let eJ = hl._1
1221+ let eK = hl._2
1222+ let hm = eI(eJ, eK, 0)
1223+ let gL = hm._1
1224+ let ez = hm._2
11991225 let eU = value(getString(aj))
1200- let gU = eN(eH, ez)
1201- if ((gU == gU))
1226+ let gW = eN(eH, ez)
1227+ if ((gW == gW))
12021228 then {
1203- let gV = invoke(this, "rebalance", nil, nil)
1204- if ((gV == gV))
1205- then $Tuple2((((et ++ gQ) ++ hi) ++ gT), hg)
1229+ let gX = invoke(this, "rebalance", nil, nil)
1230+ if ((gX == gX))
1231+ then $Tuple2((((et ++ gT) ++ hk) ++ gL), hi)
12061232 else throw("Strict value is not equal to itself.")
12071233 }
12081234 else throw("Strict value is not equal to itself.")
12091235 }
12101236 else throw("Strict value is not equal to itself.")
12111237 }
12121238 else throw("Strict value is not equal to itself.")
12131239 }
12141240 else throw("Strict value is not equal to itself.")
12151241 }
12161242 else throw("Strict value is not equal to itself.")
12171243 }
12181244
12191245
12201246
12211247 @Callable(fb)
12221248 func putOneTknREADONLY (fq,fp) = {
1223- let hl = fo(fp, bn(fq), unit, unit)
1224- let hf = hl._1
1225- let et = hl._2
1226- let fn = hl._3
1227- let he = hl._4
1228- let fu = hl._5
1229- $Tuple2(nil, $Tuple3(hf, fn, he))
1249+ let hn = fo(fp, bn(fq), unit, unit)
1250+ let hh = hn._1
1251+ let et = hn._2
1252+ let fn = hn._3
1253+ let hg = hn._4
1254+ let fu = hn._5
1255+ $Tuple2(nil, $Tuple3(hh, fn, hg))
12301256 }
12311257
12321258
12331259
12341260 @Callable(fb)
1235-func getOneTkn (hm,gY) = {
1236- let ha = {
1261+func getOneTkn (ho,ha) = {
1262+ let hc = {
12371263 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
12381264 if ($isInstanceOf(bg, "Boolean"))
12391265 then bg
12401266 else throw(($getType(bg) + " couldn't be cast to Boolean"))
12411267 }
1242- let hn = if (if (bi())
1268+ let hp = if (if (bi())
12431269 then true
12441270 else (bv == n))
12451271 then true
1246- else ha
1247- let fV = [if (if (!(hn))
1272+ else hc
1273+ let fV = [if (if (!(hp))
12481274 then true
12491275 else gp(fb))
12501276 then true
12511277 else ba("get operation is blocked by admin"), if ((size(fb.payments) == 1))
12521278 then true
12531279 else ba("exactly 1 payment are expected")]
12541280 if ((fV == fV))
12551281 then {
1256- let fU = bn(hm)
1257- let hc = fb.payments[0]
1258- let fq = hc.assetId
1259- let fC = hc.amount
1282+ let fU = bn(ho)
1283+ let he = fb.payments[0]
1284+ let fq = he.assetId
1285+ let fC = he.amount
12601286 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
12611287 if ((eH == eH))
12621288 then {
12631289 let ab = fb.caller
12641290 let ac = fb.transactionId
1265- let ho = fT(fU, fC, fq, ab, ac)
1266- if ((ho == ho))
1291+ let hq = fT(fU, fC, fq, ab, ac)
1292+ if ((hq == hq))
12671293 then {
1268- let fW = ho._5
1269- let he = ho._4
1270- let fn = ho._3
1271- let et = ho._2
1272- let hp = ho._1
1273- let cf = if (if ((gY > 0))
1274- then (gY > hp)
1294+ let fW = hq._5
1295+ let hg = hq._4
1296+ let fn = hq._3
1297+ let et = hq._2
1298+ let hr = hq._1
1299+ let cf = if (if ((ha > 0))
1300+ then (ha > hr)
12751301 else false)
1276- then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1277- else hp
1278- let hq = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1279- if ((hq == hq))
1302+ then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1303+ else hr
1304+ let hs = invoke(bd, "burn", [fC], [AttachedPayment(fq, fC)])
1305+ if ((hs == hs))
12801306 then {
1281- let gK = cP(hm, (cf + max([0, fn])))
1282- let hr = [ScriptTransfer(ab, cf, fU)]
1283- let hi = if ((fn > 0))
1307+ let gN = cP(ho, (cf + max([0, fn])))
1308+ let ht = [ScriptTransfer(ab, cf, fU)]
1309+ let hk = if ((fn > 0))
12841310 then [ScriptTransfer(be, fn, fU)]
12851311 else nil
1286- let hs = {
1287- let ht = if ((this == be))
1312+ let hu = {
1313+ let hv = if ((this == be))
12881314 then 0
12891315 else fn
12901316 if (fW)
1291- then $Tuple2(-((cf + ht)), 0)
1292- else $Tuple2(0, -((cf + ht)))
1317+ then $Tuple2(-((cf + hv)), 0)
1318+ else $Tuple2(0, -((cf + hv)))
12931319 }
1294- let eJ = hs._1
1295- let eK = hs._2
1296- let hu = eI(eJ, eK, 0)
1297- let gT = hu._1
1298- let ez = hu._2
1299- let gU = eN(eH, ez)
1300- if ((gU == gU))
1301- then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
1320+ let eJ = hu._1
1321+ let eK = hu._2
1322+ let hw = eI(eJ, eK, 0)
1323+ let gL = hw._1
1324+ let ez = hw._2
1325+ let gW = eN(eH, ez)
1326+ if ((gW == gW))
1327+ then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
13021328 else throw("Strict value is not equal to itself.")
13031329 }
13041330 else throw("Strict value is not equal to itself.")
13051331 }
13061332 else throw("Strict value is not equal to itself.")
13071333 }
13081334 else throw("Strict value is not equal to itself.")
13091335 }
13101336 else throw("Strict value is not equal to itself.")
13111337 }
13121338
13131339
13141340
13151341 @Callable(fb)
13161342 func getOneTknREADONLY (fU,fC) = {
1317- let hv = fT(bn(fU), fC, bw, unit, unit)
1318- let hp = hv._1
1319- let et = hv._2
1320- let fn = hv._3
1321- let he = hv._4
1322- let fW = hv._5
1323- $Tuple2(nil, $Tuple3(hp, fn, he))
1343+ let hx = fT(bn(fU), fC, bw, unit, unit)
1344+ let hr = hx._1
1345+ let et = hx._2
1346+ let fn = hx._3
1347+ let hg = hx._4
1348+ let fW = hx._5
1349+ $Tuple2(nil, $Tuple3(hr, fn, hg))
13241350 }
13251351
13261352
13271353
13281354 @Callable(fb)
1329-func unstakeAndGetOneTkn (hw,hm,gY) = {
1330- let ha = {
1355+func unstakeAndGetOneTkn (hy,ho,ha) = {
1356+ let hc = {
13311357 let bg = invoke(bd, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
13321358 if ($isInstanceOf(bg, "Boolean"))
13331359 then bg
13341360 else throw(($getType(bg) + " couldn't be cast to Boolean"))
13351361 }
1336- let hn = if (if (bi())
1362+ let hp = if (if (bi())
13371363 then true
13381364 else (bv == n))
13391365 then true
1340- else ha
1341- let fV = [if (if (!(hn))
1366+ else hc
1367+ let fV = [if (if (!(hp))
13421368 then true
13431369 else gp(fb))
13441370 then true
13451371 else ba("get operation is blocked by admin"), if ((size(fb.payments) == 0))
13461372 then true
13471373 else ba("no payments are expected")]
13481374 if ((fV == fV))
13491375 then {
1350- let fU = bn(hm)
1376+ let fU = bn(ho)
13511377 let ab = fb.caller
13521378 let ac = fb.transactionId
13531379 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
13541380 if ((eH == eH))
13551381 then {
1356- let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1357- if ((hx == hx))
1382+ let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1383+ if ((hz == hz))
13581384 then {
1359- let hy = fT(fU, hw, bw, ab, ac)
1360- if ((hy == hy))
1385+ let hA = fT(fU, hy, bw, ab, ac)
1386+ if ((hA == hA))
13611387 then {
1362- let fW = hy._5
1363- let he = hy._4
1364- let fn = hy._3
1365- let et = hy._2
1366- let hp = hy._1
1367- let cf = if (if ((gY > 0))
1368- then (gY > hp)
1388+ let fW = hA._5
1389+ let hg = hA._4
1390+ let fn = hA._3
1391+ let et = hA._2
1392+ let hr = hA._1
1393+ let cf = if (if ((ha > 0))
1394+ then (ha > hr)
13691395 else false)
1370- then ba(makeString(["amount to receive is less than ", toString(gY)], ""))
1371- else hp
1372- let hq = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1373- if ((hq == hq))
1396+ then ba(makeString(["amount to receive is less than ", toString(ha)], ""))
1397+ else hr
1398+ let hs = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1399+ if ((hs == hs))
13741400 then {
1375- let gK = cP(hm, (cf + max([0, fn])))
1376- let hr = [ScriptTransfer(fb.caller, cf, fU)]
1377- let hi = if ((fn > 0))
1401+ let gN = cP(ho, (cf + max([0, fn])))
1402+ let ht = [ScriptTransfer(fb.caller, cf, fU)]
1403+ let hk = if ((fn > 0))
13781404 then [ScriptTransfer(be, fn, fU)]
13791405 else nil
1380- let hz = {
1381- let ht = if ((this == be))
1406+ let hB = {
1407+ let hv = if ((this == be))
13821408 then 0
13831409 else fn
13841410 if (fW)
1385- then $Tuple2(-((cf + ht)), 0)
1386- else $Tuple2(0, -((cf + ht)))
1411+ then $Tuple2(-((cf + hv)), 0)
1412+ else $Tuple2(0, -((cf + hv)))
13871413 }
1388- let eJ = hz._1
1389- let eK = hz._2
1390- let hA = eI(eJ, eK, 0)
1391- let gT = hA._1
1392- let ez = hA._2
1393- let gU = eN(eH, ez)
1394- if ((gU == gU))
1395- then $Tuple2(((((et ++ gK) ++ hr) ++ hi) ++ gT), cf)
1414+ let eJ = hB._1
1415+ let eK = hB._2
1416+ let hC = eI(eJ, eK, 0)
1417+ let gL = hC._1
1418+ let ez = hC._2
1419+ let gW = eN(eH, ez)
1420+ if ((gW == gW))
1421+ then $Tuple2(((((et ++ gN) ++ ht) ++ hk) ++ gL), cf)
13961422 else throw("Strict value is not equal to itself.")
13971423 }
13981424 else throw("Strict value is not equal to itself.")
13991425 }
14001426 else throw("Strict value is not equal to itself.")
14011427 }
14021428 else throw("Strict value is not equal to itself.")
14031429 }
14041430 else throw("Strict value is not equal to itself.")
14051431 }
14061432 else throw("Strict value is not equal to itself.")
14071433 }
14081434
14091435
14101436
14111437 @Callable(fb)
14121438 func get () = {
14131439 let ee = fa(fb)
14141440 let dK = ee._1
14151441 let dL = ee._2
14161442 let fd = ee._3
14171443 let dt = ee._4
14181444 let dM = ee._5
1419- let gK = cU(dK, dL)
1445+ let gN = cU(dK, dL)
14201446 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14211447 if ((eH == eH))
14221448 then {
1423- let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1424- if ((hB == hB))
1449+ let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1450+ if ((hD == hD))
14251451 then {
1426- let hC = eI(-(dK), -(dL), 0)
1427- let gT = hC._1
1428- let ez = hC._2
1429- let gU = eN(eH, ez)
1430- if ((gU == gU))
1431- then ((gK ++ dM) ++ gT)
1452+ let hE = eI(-(dK), -(dL), 0)
1453+ let gL = hE._1
1454+ let ez = hE._2
1455+ let gW = eN(eH, ez)
1456+ if ((gW == gW))
1457+ then ((gN ++ dM) ++ gL)
14321458 else throw("Strict value is not equal to itself.")
14331459 }
14341460 else throw("Strict value is not equal to itself.")
14351461 }
14361462 else throw("Strict value is not equal to itself.")
14371463 }
14381464
14391465
14401466
14411467 @Callable(fb)
1442-func getNoLess (hD,hE) = {
1468+func getNoLess (hF,hG) = {
14431469 let ee = fa(fb)
14441470 let dK = ee._1
14451471 let dL = ee._2
14461472 let fd = ee._3
14471473 let dt = ee._4
14481474 let dM = ee._5
1449- if ((hD > dK))
1450- then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hD)))
1451- else if ((hE > dL))
1452- then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hE)))
1475+ if ((hF > dK))
1476+ then throw(((("noLessThenAmtAsset failed: " + toString(dK)) + " < ") + toString(hF)))
1477+ else if ((hG > dL))
1478+ then throw(((("noLessThenPriceAsset failed: " + toString(dL)) + " < ") + toString(hG)))
14531479 else {
1454- let gK = cU(dK, dL)
1480+ let gN = cU(dK, dL)
14551481 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14561482 if ((eH == eH))
14571483 then {
1458- let hB = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1459- if ((hB == hB))
1484+ let hD = invoke(bd, "burn", [fd], [AttachedPayment(dt, fd)])
1485+ if ((hD == hD))
14601486 then {
1461- let hF = eI(-(dK), -(dL), 0)
1462- let gT = hF._1
1463- let ez = hF._2
1464- let gU = eN(eH, ez)
1465- if ((gU == gU))
1466- then ((gK ++ dM) ++ gT)
1487+ let hH = eI(-(dK), -(dL), 0)
1488+ let gL = hH._1
1489+ let ez = hH._2
1490+ let gW = eN(eH, ez)
1491+ if ((gW == gW))
1492+ then ((gN ++ dM) ++ gL)
14671493 else throw("Strict value is not equal to itself.")
14681494 }
14691495 else throw("Strict value is not equal to itself.")
14701496 }
14711497 else throw("Strict value is not equal to itself.")
14721498 }
14731499 }
14741500
14751501
14761502
14771503 @Callable(fb)
14781504 func unstakeAndGet (cf) = {
1479- let hG = if ((size(fb.payments) != 0))
1505+ let hI = if ((size(fb.payments) != 0))
14801506 then throw("No payments are expected")
14811507 else true
1482- if ((hG == hG))
1508+ if ((hI == hI))
14831509 then {
14841510 let di = bk()
14851511 let dv = fromBase58String(di[q])
14861512 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
14871513 if ((eH == eH))
14881514 then {
1489- let hx = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1490- if ((hx == hx))
1515+ let hz = invoke(bC, "unstake", [toBase58String(dv), cf], nil)
1516+ if ((hz == hz))
14911517 then {
14921518 let ee = dr(toBase58String(fb.transactionId), toBase58String(dv), cf, fb.caller)
14931519 let dK = ee._1
14941520 let dL = ee._2
14951521 let dy = parseIntValue(ee._9)
14961522 let dM = ee._10
1497- let gK = cU(dK, dL)
1498- let hH = if (if (bi())
1523+ let gN = cU(dK, dL)
1524+ let hJ = if (if (bi())
14991525 then true
15001526 else (dy == n))
15011527 then throw(("Get operation is blocked by admin. Status = " + toString(dy)))
15021528 else true
1503- if ((hH == hH))
1529+ if ((hJ == hJ))
15041530 then {
1505- let hB = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1506- if ((hB == hB))
1531+ let hD = invoke(bd, "burn", [cf], [AttachedPayment(dv, cf)])
1532+ if ((hD == hD))
15071533 then {
1508- let hI = eI(-(dK), -(dL), 0)
1509- let gT = hI._1
1510- let ez = hI._2
1511- let gU = eN(eH, ez)
1512- if ((gU == gU))
1513- then ((gK ++ dM) ++ gT)
1534+ let hK = eI(-(dK), -(dL), 0)
1535+ let gL = hK._1
1536+ let ez = hK._2
1537+ let gW = eN(eH, ez)
1538+ if ((gW == gW))
1539+ then ((gN ++ dM) ++ gL)
15141540 else throw("Strict value is not equal to itself.")
15151541 }
15161542 else throw("Strict value is not equal to itself.")
15171543 }
15181544 else throw("Strict value is not equal to itself.")
15191545 }
15201546 else throw("Strict value is not equal to itself.")
15211547 }
15221548 else throw("Strict value is not equal to itself.")
15231549 }
15241550 else throw("Strict value is not equal to itself.")
15251551 }
15261552
15271553
15281554
15291555 @Callable(fb)
1530-func unstakeAndGetNoLess (hw,hJ,hE) = {
1531- let hn = if (bi())
1556+func unstakeAndGetNoLess (hy,hL,hG) = {
1557+ let hp = if (bi())
15321558 then true
15331559 else (bv == n)
1534- let fV = [if (!(hn))
1560+ let fV = [if (!(hp))
15351561 then true
15361562 else throw("get operation is blocked by admin"), if ((size(fb.payments) == 0))
15371563 then true
15381564 else throw("no payments are expected")]
15391565 if ((fV == fV))
15401566 then {
15411567 let eH = eA(toBigInt(0), toBigInt(0), toBigInt(0))
15421568 if ((eH == eH))
15431569 then {
1544- let hx = invoke(bC, "unstake", [toBase58String(bw), hw], nil)
1545- if ((hx == hx))
1570+ let hz = invoke(bC, "unstake", [toBase58String(bw), hy], nil)
1571+ if ((hz == hz))
15461572 then {
1547- let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hw, fb.caller)
1573+ let ee = dr(toBase58String(fb.transactionId), toBase58String(bw), hy, fb.caller)
15481574 let dK = ee._1
15491575 let dL = ee._2
15501576 let dM = ee._10
1551- let gK = cU(dK, dL)
1552- let hK = [if ((dK >= hJ))
1577+ let gN = cU(dK, dL)
1578+ let hM = [if ((dK >= hL))
15531579 then true
1554- else throw(makeString(["amount asset amount to receive is less than ", toString(hJ)], "")), if ((dL >= hE))
1580+ else throw(makeString(["amount asset amount to receive is less than ", toString(hL)], "")), if ((dL >= hG))
15551581 then true
1556- else throw(makeString(["price asset amount to receive is less than ", toString(hE)], ""))]
1557- if ((hK == hK))
1582+ else throw(makeString(["price asset amount to receive is less than ", toString(hG)], ""))]
1583+ if ((hM == hM))
15581584 then {
1559- let hB = invoke(bd, "burn", [hw], [AttachedPayment(bw, hw)])
1560- if ((hB == hB))
1585+ let hD = invoke(bd, "burn", [hy], [AttachedPayment(bw, hy)])
1586+ if ((hD == hD))
15611587 then {
1562- let hL = eI(-(dK), -(dL), 0)
1563- let gT = hL._1
1564- let ez = hL._2
1565- let gU = eN(eH, ez)
1566- if ((gU == gU))
1567- then ((gK ++ dM) ++ gT)
1588+ let hN = eI(-(dK), -(dL), 0)
1589+ let gL = hN._1
1590+ let ez = hN._2
1591+ let gW = eN(eH, ez)
1592+ if ((gW == gW))
1593+ then ((gN ++ dM) ++ gL)
15681594 else throw("Strict value is not equal to itself.")
15691595 }
15701596 else throw("Strict value is not equal to itself.")
15711597 }
15721598 else throw("Strict value is not equal to itself.")
15731599 }
15741600 else throw("Strict value is not equal to itself.")
15751601 }
15761602 else throw("Strict value is not equal to itself.")
15771603 }
15781604 else throw("Strict value is not equal to itself.")
15791605 }
15801606
15811607
15821608
15831609 @Callable(fb)
1584-func activate (hM,hN) = if ((toString(fb.caller) != toString(bd)))
1610+func activate (hO,hP) = if ((toString(fb.caller) != toString(bd)))
15851611 then throw("permissions denied")
1586- else $Tuple2([StringEntry(ae(), hM), StringEntry(af(), hN)], "success")
1612+ else $Tuple2([StringEntry(ae(), hO), StringEntry(af(), hP)], "success")
1613+
1614+
1615+
1616+@Callable(fb)
1617+func invert () = {
1618+ let fV = [if ((fb.caller == bd))
1619+ then true
1620+ else ba("invalid caller")]
1621+ if ((fV == fV))
1622+ then $Tuple2([StringEntry(ae(), bp(by)), StringEntry(af(), bp(bx))], unit)
1623+ else throw("Strict value is not equal to itself.")
1624+ }
15871625
15881626
15891627
15901628 @Callable(fb)
15911629 func refreshKLp () = {
1592- let hO = valueOrElse(getInteger(ak), 0)
1593- let hP = if (((height - hO) >= an))
1630+ let hQ = valueOrElse(getInteger(ak), 0)
1631+ let hR = if (((height - hQ) >= an))
15941632 then unit
15951633 else ba(makeString([toString(an), " blocks have not passed since the previous call"], ""))
1596- if ((hP == hP))
1634+ if ((hR == hR))
15971635 then {
15981636 let eU = valueOrErrorMessage(parseBigInt(valueOrElse(getString(this, aj), "0")), bc("invalid kLp"))
1599- let hQ = eI(0, 0, 0)
1600- let hR = hQ._1
1601- let ez = hQ._2
1637+ let hS = eI(0, 0, 0)
1638+ let hT = hS._1
1639+ let ez = hS._2
16021640 let eL = if ((eU != ez))
1603- then hR
1641+ then hT
16041642 else ba("nothing to refresh")
16051643 $Tuple2(eL, toString(ez))
16061644 }
16071645 else throw("Strict value is not equal to itself.")
16081646 }
16091647
16101648
16111649
16121650 @Callable(fb)
16131651 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, bk())
16141652
16151653
16161654
16171655 @Callable(fb)
16181656 func getAccBalanceWrapperREADONLY (ap) = $Tuple2(nil, bT(ap))
16191657
16201658
16211659
16221660 @Callable(fb)
16231661 func calcPricesWrapperREADONLY (dc,dd,dh) = {
16241662 let dq = dg(dc, dd, dh)
16251663 $Tuple2(nil, [toString(dq[0]), toString(dq[1]), toString(dq[2])])
16261664 }
16271665
16281666
16291667
16301668 @Callable(fb)
16311669 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
16321670
16331671
16341672
16351673 @Callable(fb)
16361674 func fromX18WrapperREADONLY (I,J) = $Tuple2(nil, H(parseBigIntValue(I), J))
16371675
16381676
16391677
16401678 @Callable(fb)
16411679 func calcPriceBigIntWrapperREADONLY (bX,bY) = $Tuple2(nil, toString(bW(parseBigIntValue(bX), parseBigIntValue(bY))))
16421680
16431681
16441682
16451683 @Callable(fb)
16461684 func estimatePutOperationWrapperREADONLY (ds,dO,dP,dQ,dR,dS,ab,dT,dU) = $Tuple2(nil, dN(ds, dO, dP, dQ, dR, dS, ab, dT, dU))
16471685
16481686
16491687
16501688 @Callable(fb)
16511689 func estimateGetOperationWrapperREADONLY (ds,dt,du,ab) = {
16521690 let ee = dr(ds, dt, du, addressFromStringValue(ab))
16531691 $Tuple2(nil, $Tuple10(ee._1, ee._2, ee._3, ee._4, ee._5, ee._6, ee._7, toString(ee._8), ee._9, ee._10))
16541692 }
16551693
16561694
16571695
16581696 @Callable(fb)
16591697 func statsREADONLY () = {
16601698 let di = bk()
16611699 let dv = fromBase58String(di[q])
1662- let hS = di[r]
1663- let hT = di[s]
1700+ let hU = di[r]
1701+ let hV = di[s]
16641702 let dX = di[v]
16651703 let dY = di[w]
16661704 let dj = parseIntValue(di[t])
16671705 let dk = parseIntValue(di[u])
1668- let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1669- let hV = bT(hS)
1670- let hW = bT(hT)
1671- let hX = if ((hU == 0))
1706+ let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1707+ let hX = bT(hU)
1708+ let hY = bT(hV)
1709+ let hZ = if ((hW == 0))
16721710 then [e, e, e]
1673- else dg(hV, hW, hU)
1711+ else dg(hX, hY, hW)
16741712 let dF = 0
1675- let hY = H(hX[1], b)
1676- let hZ = H(hX[2], b)
1677- let ia = value(getInteger(bd, aD(toString(this))))
1678- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hV), toString(hW), toString(hU), toString(dF), toString(hY), toString(hZ), toString(ia)], j))
1713+ let ia = H(hZ[1], b)
1714+ let ib = H(hZ[2], b)
1715+ let ic = value(getInteger(bd, aD(toString(this))))
1716+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(hX), toString(hY), toString(hW), toString(dF), toString(ia), toString(ib), toString(ic)], j))
16791717 }
16801718
16811719
16821720
16831721 @Callable(fb)
16841722 func evaluatePutByAmountAssetREADONLY (dP) = {
16851723 let di = bk()
16861724 let dv = fromBase58String(di[q])
16871725 let dV = di[r]
16881726 let dw = fromBase58String(dV)
16891727 let dW = di[s]
16901728 let dx = fromBase58String(dW)
16911729 let dj = parseIntValue(di[t])
16921730 let dk = parseIntValue(di[u])
16931731 let dy = di[p]
1694- let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1695- let hV = bT(dV)
1696- let hW = bT(dW)
1697- let de = D(hV, dj)
1698- let df = D(hW, dk)
1699- let dE = if ((hU == 0))
1732+ let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1733+ let hX = bT(dV)
1734+ let hY = bT(dW)
1735+ let de = D(hX, dj)
1736+ let df = D(hY, dk)
1737+ let dE = if ((hW == 0))
17001738 then e
17011739 else bW(df, de)
17021740 let eb = D(dP, dj)
17031741 let ec = fraction(eb, dE, d)
17041742 let dR = H(ec, dk)
17051743 let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
17061744 let em = fh._1
1707- let ib = fh._3
1745+ let id = fh._3
17081746 let dA = fh._4
17091747 let dC = fh._5
17101748 let dz = fh._6
17111749 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
17121750 }
17131751
17141752
17151753
17161754 @Callable(fb)
17171755 func evaluatePutByPriceAssetREADONLY (dR) = {
17181756 let di = bk()
17191757 let dv = fromBase58String(di[q])
17201758 let dV = di[r]
17211759 let dw = fromBase58String(dV)
17221760 let dW = di[s]
17231761 let dx = fromBase58String(dW)
17241762 let dj = parseIntValue(di[t])
17251763 let dk = parseIntValue(di[u])
17261764 let dy = di[p]
1727- let hU = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1728- let ic = bT(dV)
1729- let id = bT(dW)
1730- let ie = D(ic, dj)
1731- let if = D(id, dk)
1732- let dE = if ((hU == 0))
1765+ let hW = valueOrErrorMessage(assetInfo(dv), (("Asset " + toBase58String(dv)) + " doesn't exist")).quantity
1766+ let ie = bT(dV)
1767+ let if = bT(dW)
1768+ let ig = D(ie, dj)
1769+ let ih = D(if, dk)
1770+ let dE = if ((hW == 0))
17331771 then e
1734- else bW(if, ie)
1772+ else bW(ih, ig)
17351773 let ec = D(dR, dk)
17361774 let eb = fraction(ec, d, dE)
17371775 let dP = H(eb, dj)
17381776 let fh = dN("", 500000, dP, dw, dR, dx, "", true, false)
17391777 let em = fh._1
1740- let ib = fh._3
1778+ let id = fh._3
17411779 let dA = fh._4
17421780 let dC = fh._5
17431781 let dz = fh._6
17441782 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(em), toString(H(dE, b)), toString(dA), toString(dC), toString(dz), dy, toString(dP), toString(dR)], j))
17451783 }
17461784
17471785
17481786
17491787 @Callable(fb)
1750-func evaluateGetREADONLY (ig,ih) = {
1751- let ee = dr("", ig, ih, this)
1788+func evaluateGetREADONLY (ii,ij) = {
1789+ let ee = dr("", ii, ij, this)
17521790 let dK = ee._1
17531791 let dL = ee._2
17541792 let dA = ee._5
17551793 let dC = ee._6
17561794 let dz = ee._7
17571795 let dF = ee._8
17581796 let dy = parseIntValue(ee._9)
17591797 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dK), toString(dL), toString(dA), toString(dC), toString(dz), toString(dF), toString(dy)], j))
17601798 }
17611799
17621800
1763-@Verifier(ii)
1764-func ij () = {
1765- let ik = {
1801+@Verifier(ik)
1802+func il () = {
1803+ let im = {
17661804 let aQ = gn()
17671805 if ($isInstanceOf(aQ, "ByteVector"))
17681806 then {
17691807 let gq = aQ
17701808 gq
17711809 }
17721810 else if ($isInstanceOf(aQ, "Unit"))
1773- then ii.senderPublicKey
1811+ then ik.senderPublicKey
17741812 else throw("Match error")
17751813 }
1776- let aQ = ii
1814+ let aQ = ik
17771815 if ($isInstanceOf(aQ, "Order"))
17781816 then {
17791817 let eQ = aQ
1780- let il = bj()
1781- let im = if (eM())
1818+ let in = bj()
1819+ let io = if (eM())
17821820 then $Tuple2(true, "")
17831821 else eP(eQ)
1784- let aK = im._1
1785- let aL = im._2
1822+ let aK = io._1
1823+ let aL = io._2
17861824 let aM = sigVerify(eQ.bodyBytes, eQ.proofs[0], eQ.senderPublicKey)
1787- let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], il)
1825+ let aN = sigVerify(eQ.bodyBytes, eQ.proofs[1], in)
17881826 if (if (if (aK)
17891827 then aM
17901828 else false)
17911829 then aN
17921830 else false)
17931831 then true
17941832 else aJ(aK, aL, aM, aN)
17951833 }
17961834 else if ($isInstanceOf(aQ, "SetScriptTransaction"))
17971835 then {
17981836 let aV = aQ
1799- if (sigVerify(ii.bodyBytes, ii.proofs[0], ik))
1837+ if (sigVerify(ik.bodyBytes, ik.proofs[0], im))
18001838 then true
18011839 else {
1802- let in = blake2b256(value(aV.script))
1803- let io = fromBase64String(value(getString(bd, aF())))
1804- let ip = scriptHash(this)
1805- if ((io == in))
1806- then (ip != in)
1840+ let ip = blake2b256(value(aV.script))
1841+ let iq = fromBase64String(value(getString(bd, aF())))
1842+ let ir = scriptHash(this)
1843+ if ((iq == ip))
1844+ then (ir != ip)
18071845 else false
18081846 }
18091847 }
1810- else sigVerify(ii.bodyBytes, ii.proofs[0], ik)
1848+ else sigVerify(ik.bodyBytes, ik.proofs[0], im)
18111849 }
18121850

github/deemru/w8io/873ac7e 
515.29 ms