tx · HmN46doiv8JoSPx2PvkvexNFGwwhSmV4nMVGkqMpCb5t

3MpHPSAjga845Rg38vJHGBw1rea56ZP1p8h:  -0.03000000 Waves

2022.11.17 14:56 [2321078] smart account 3MpHPSAjga845Rg38vJHGBw1rea56ZP1p8h > SELF 0.00000000 Waves

{ "type": 13, "id": "HmN46doiv8JoSPx2PvkvexNFGwwhSmV4nMVGkqMpCb5t", "fee": 3000000, "feeAssetId": null, "timestamp": 1668686223466, "version": 1, "sender": "3MpHPSAjga845Rg38vJHGBw1rea56ZP1p8h", "senderPublicKey": "HMrW9VMvLfdvQY17DsaoFvFQSZEbwm3KetmUWFZZoW1U", "proofs": [ "4SkuKQHBvw4zm6S1R7h3eXfUH7L6cmiRDnS7T7pmYF29TkRMMdnJJ9QmqMMcRAsjh5VsMKmHqD9oejCjmfz3PEa8" ], "script": "base64:BgK8JwgCEgMKAQgSABIECgIBBBIDCgEBEgQKAgEEEgQKAggBEgQKAggBEgQKAggBEgUKAwEIARIAEgQKAgEBEgMKAQESBQoDAQEBEgQKAggIEgASAwoBCBIFCgMBAQESBAoCAQESBAoCCAESBAoCCAgSCwoJCAEBAgECCAQEEgYKBAgIAQgSABIDCgEBEgMKAQESBAoCCAEiCmxQZGVjaW1hbHMiBnNjYWxlOCIMc2NhbGU4QmlnSW50IgdzY2FsZTE4Igp6ZXJvQmlnSW50IgRiaWcwIgRiaWcxIgRiaWcyIgt3YXZlc1N0cmluZyIDU0VQIgpQb29sQWN0aXZlIg9Qb29sUHV0RGlzYWJsZWQiE1Bvb2xNYXRjaGVyRGlzYWJsZWQiDFBvb2xTaHV0ZG93biIOaWR4UG9vbEFkZHJlc3MiDWlkeFBvb2xTdGF0dXMiEGlkeFBvb2xMUEFzc2V0SWQiDWlkeEFtdEFzc2V0SWQiD2lkeFByaWNlQXNzZXRJZCIOaWR4QW10QXNzZXREY20iEGlkeFByaWNlQXNzZXREY20iDmlkeElBbXRBc3NldElkIhBpZHhJUHJpY2VBc3NldElkIg1pZHhMUEFzc2V0RGNtIhJpZHhQb29sQW10QXNzZXRBbXQiFGlkeFBvb2xQcmljZUFzc2V0QW10IhFpZHhQb29sTFBBc3NldEFtdCIZaWR4RmFjdG9yeVN0YWtpbmdDb250cmFjdCIaaWR4RmFjdG9yeVNsaXBwYWdlQ29udHJhY3QiBXRvWDE4IgdvcmlnVmFsIg1vcmlnU2NhbGVNdWx0Igdmcm9tWDE4IgN2YWwiD3Jlc3VsdFNjYWxlTXVsdCIHdG9TY2FsZSIDYW10IghyZXNTY2FsZSIIY3VyU2NhbGUiA2FicyIJYWJzQmlnSW50IgJmYyIDbXBrIgRwbXBrIgJwbCICcGgiAWgiCXRpbWVzdGFtcCIDcGF1Igt1c2VyQWRkcmVzcyIEdHhJZCIDZ2F1IgJhYSICcGEiBmtleUZlZSIKZmVlRGVmYXVsdCIDZmVlIhBrZXlGYWN0b3J5Q29uZmlnIg1rZXlNYXRjaGVyUHViIilrZXlNYXBwaW5nUG9vbENvbnRyYWN0QWRkcmVzc1RvUG9vbEFzc2V0cyITcG9vbENvbnRyYWN0QWRkcmVzcyINa2V5UG9vbENvbmZpZyIJaUFtdEFzc2V0IgtpUHJpY2VBc3NldCIfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZCIMYmFzZUFzc2V0U3RyIhNrZXlBbGxQb29sc1NodXRkb3duIg1rZXlQb29sV2VpZ2h0Ig9jb250cmFjdEFkZHJlc3MiFmtleUFsbG93ZWRMcFNjcmlwdEhhc2giFmtleUZlZUNvbGxlY3RvckFkZHJlc3MiD3Rocm93T3JkZXJFcnJvciIKb3JkZXJWYWxpZCILc2VuZGVyVmFsaWQiDG1hdGNoZXJWYWxpZCIPZ2V0U3RyaW5nT3JGYWlsIgdhZGRyZXNzIgNrZXkiDGdldEludE9yRmFpbCIIdGhyb3dFcnIiA21zZyIPZmFjdG9yeUNvbnRyYWN0IhNmZWVDb2xsZWN0b3JBZGRyZXNzIhBpc0dsb2JhbFNodXRkb3duIhNnZXRNYXRjaGVyUHViT3JGYWlsIg1nZXRQb29sQ29uZmlnIghhbXRBc3NldCIKcHJpY2VBc3NldCIMcGFyc2VBc3NldElkIgVpbnB1dCIPYXNzZXRJZFRvU3RyaW5nIg9wYXJzZVBvb2xDb25maWciCnBvb2xDb25maWciEHBvb2xDb25maWdQYXJzZWQiCyR0MDc1NDQ3NzEwIg5jZmdQb29sQWRkcmVzcyINY2ZnUG9vbFN0YXR1cyIMY2ZnTHBBc3NldElkIhBjZmdBbW91bnRBc3NldElkIg9jZmdQcmljZUFzc2V0SWQiFmNmZ0Ftb3VudEFzc2V0RGVjaW1hbHMiFWNmZ1ByaWNlQXNzZXREZWNpbWFscyIQZ2V0RmFjdG9yeUNvbmZpZyIPc3Rha2luZ0NvbnRyYWN0IhBzbGlwcGFnZUNvbnRyYWN0IhFkYXRhUHV0QWN0aW9uSW5mbyINaW5BbXRBc3NldEFtdCIPaW5QcmljZUFzc2V0QW10IghvdXRMcEFtdCIFcHJpY2UiHXNsaXBwYWdlVG9sZXJhbmNlUGFzc2VkQnlVc2VyIhVzbGlwcGFnZVRvbGVyYW5jZVJlYWwiCHR4SGVpZ2h0Igt0eFRpbWVzdGFtcCISc2xpcGFnZUFtdEFzc2V0QW10IhRzbGlwYWdlUHJpY2VBc3NldEFtdCIRZGF0YUdldEFjdGlvbkluZm8iDm91dEFtdEFzc2V0QW10IhBvdXRQcmljZUFzc2V0QW10IgdpbkxwQW10Ig1nZXRBY2NCYWxhbmNlIgdhc3NldElkIg9jYWxjUHJpY2VCaWdJbnQiCHByQW10WDE4IghhbUFtdFgxOCIQcHJpdmF0ZUNhbGNQcmljZSIKYW1Bc3NldERjbSIKcHJBc3NldERjbSIFYW1BbXQiBXByQW10Ig5hbXRBc3NldEFtdFgxOCIQcHJpY2VBc3NldEFtdFgxOCIKY2FsY1ByaWNlcyIFbHBBbXQiA2NmZyILYW10QXNzZXREY20iDXByaWNlQXNzZXREY20iCHByaWNlWDE4IghscEFtdFgxOCITbHBQcmljZUluQW1Bc3NldFgxOCITbHBQcmljZUluUHJBc3NldFgxOCIPY2FsY3VsYXRlUHJpY2VzIgZwcmljZXMiFGVzdGltYXRlR2V0T3BlcmF0aW9uIgZ0eElkNTgiCnBtdEFzc2V0SWQiCHBtdExwQW10IglscEFzc2V0SWQiCWFtQXNzZXRJZCIJcHJBc3NldElkIgpwb29sU3RhdHVzIgpscEVtaXNzaW9uIglhbUJhbGFuY2UiDGFtQmFsYW5jZVgxOCIJcHJCYWxhbmNlIgxwckJhbGFuY2VYMTgiC2N1clByaWNlWDE4IghjdXJQcmljZSILcG10THBBbXRYMTgiDWxwRW1pc3Npb25YMTgiC291dEFtQW10WDE4IgtvdXRQckFtdFgxOCIIb3V0QW1BbXQiCG91dFByQW10IgVzdGF0ZSIUZXN0aW1hdGVQdXRPcGVyYXRpb24iEXNsaXBwYWdlVG9sZXJhbmNlIgxpbkFtQXNzZXRBbXQiC2luQW1Bc3NldElkIgxpblByQXNzZXRBbXQiC2luUHJBc3NldElkIgppc0V2YWx1YXRlIgZlbWl0THAiDGFtQXNzZXRJZFN0ciIMcHJBc3NldElkU3RyIgtpQW10QXNzZXRJZCINaVByaWNlQXNzZXRJZCIOaW5BbUFzc2V0SWRTdHIiDmluUHJBc3NldElkU3RyIg9pbkFtQXNzZXRBbXRYMTgiD2luUHJBc3NldEFtdFgxOCIMdXNlclByaWNlWDE4IgNyZXMiC3NsaXBwYWdlWDE4IhRzbGlwcGFnZVRvbGVyYW5jZVgxOCIKcHJWaWFBbVgxOCIKYW1WaWFQclgxOCIMZXhwZWN0ZWRBbXRzIhFleHBBbXRBc3NldEFtdFgxOCITZXhwUHJpY2VBc3NldEFtdFgxOCIJY2FsY0xwQW10Ig5jYWxjQW1Bc3NldFBtdCIOY2FsY1ByQXNzZXRQbXQiDHNsaXBwYWdlQ2FsYyIJZW1pdExwQW10IgZhbURpZmYiBnByRGlmZiILY29tbW9uU3RhdGUiG3ZhbGlkYXRlTWF0Y2hlck9yZGVyQWxsb3dlZCIFb3JkZXIiCmFtdEFzc2V0SWQiDHByaWNlQXNzZXRJZCISYWNjQW10QXNzZXRCYWxhbmNlIhRhY2NQcmljZUFzc2V0QmFsYW5jZSINb3JkZXJBbXRBc3NldCIQb3JkZXJBbXRBc3NldFN0ciIPb3JkZXJQcmljZUFzc2V0IhJvcmRlclByaWNlQXNzZXRTdHIiCm9yZGVyUHJpY2UiCHByaWNlRGNtIhBjYXN0ZWRPcmRlclByaWNlIhFpc09yZGVyUHJpY2VWYWxpZCIJY29tbW9uR2V0IgFpIgNwbXQiBnBtdEFtdCIJY29tbW9uUHV0IgphbUFzc2V0UG10IgpwckFzc2V0UG10IgZlc3RQdXQiBGVtaXQiBmFtb3VudCIHZW1pdEludiINZW1pdEludkxlZ2FjeSIHJG1hdGNoMCIVbGVnYWN5RmFjdG9yeUNvbnRyYWN0Igd0YWtlRmVlIglmZWVBbW91bnQiD2NhbGNQdXRPbmVUb2tlbiIQcGF5bWVudEFtb3VudFJhdyIOcGF5bWVudEFzc2V0SWQiBmlzRXZhbCIQYW1vdW50QmFsYW5jZVJhdyIPcHJpY2VCYWxhbmNlUmF3IhRwYXltZW50SW5BbW91bnRBc3NldCINJHQwMjI1NzEyMjg2NCIQYW1vdW50QmFsYW5jZU9sZCIPcHJpY2VCYWxhbmNlT2xkIg0kdDAyMjg2ODIzMDE3IhRhbW91bnRBc3NldEFtb3VudFJhdyITcHJpY2VBc3NldEFtb3VudFJhdyIRYW1vdW50QXNzZXRBbW91bnQiEHByaWNlQXNzZXRBbW91bnQiDSR0MDIzMTM5MjMxOTgiDXBheW1lbnRBbW91bnQiEGFtb3VudEJhbGFuY2VOZXciD3ByaWNlQmFsYW5jZU5ldyILcHJpY2VOZXdYMTgiCHByaWNlTmV3Ig5wYXltZW50QmFsYW5jZSIUcGF5bWVudEJhbGFuY2VCaWdJbnQiDHN1cHBseUJpZ0ludCILY2hlY2hTdXBwbHkiDWRlcG9zaXRCaWdJbnQiC2lzc3VlQW1vdW50IgtwcmljZU9sZFgxOCIIcHJpY2VPbGQiBGxvc3MiDSR0MDI0Njc1MjQ4NDIiB2JhbGFuY2UiD2lzc3VlQW1vdW50Qm90aCIPY2FsY0dldE9uZVRva2VuIgpvdXRBc3NldElkIgZjaGVja3MiEG91dEluQW1vdW50QXNzZXQiDWJhbGFuY2VCaWdJbnQiDGFtQmFsYW5jZU9sZCIMcHJCYWxhbmNlT2xkIgpvdXRCYWxhbmNlIhBvdXRCYWxhbmNlQmlnSW50Ig5yZWRlZW1lZEJpZ0ludCIJYW1vdW50UmF3Ig0kdDAyNjQyMjI2NDcyIgt0b3RhbEFtb3VudCINJHQwMjY0NzYyNjcwMiILb3V0QW1BbW91bnQiC291dFByQW1vdW50IgxhbUJhbGFuY2VOZXciDHByQmFsYW5jZU5ldyIYYW1vdW50Qm90aEluUGF5bWVudEFzc2V0IhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCIJaXNNYW5hZ2VyIgJwayILbXVzdE1hbmFnZXIiAnBkIhdwZW5kaW5nTWFuYWdlclB1YmxpY0tleSILY2hlY2tDYWxsZXIiFWNoZWNrTWFuYWdlclB1YmxpY0tleSICcG0iBWhhc1BNIgdjaGVja1BNIg9zaG91bGRBdXRvU3Rha2UiBGFtSWQiBHBySWQiDHNsaXBwYWdlQUludiIMc2xpcHBhZ2VQSW52IgpscFRyYW5zZmVyIgtzbHBTdGFrZUludiILbWF4U2xpcHBhZ2UiDG1pbk91dEFtb3VudCIJYXV0b1N0YWtlIiBpc1Bvb2xPbmVUb2tlbk9wZXJhdGlvbnNEaXNhYmxlZCIBQCINaXNQdXREaXNhYmxlZCIHcGF5bWVudCINJHQwMzE2MDkzMTczNiITZW1pdEFtb3VudEVzdGltYXRlZCIFYm9udXMiCmVtaXRBbW91bnQiCHN0YWtlSW52IgdzZW5kRmVlIg0kdDAzMjQ2NTMyNjAwIg1vdXRBc3NldElkU3RyIg1pc0dldERpc2FibGVkIg0kdDAzMzQwNTMzNTM3Ig9hbW91bnRFc3RpbWF0ZWQiB2J1cm5JbnYiDWFzc2V0VHJhbnNmZXIiDSR0MDM0MTcyMzQzMTAiDXVuc3Rha2VBbW91bnQiCnVuc3Rha2VJbnYiDSR0MDM1MTM1MzUyNjUiCW91dEFtdEFtdCIUYnVybkxQQXNzZXRPbkZhY3RvcnkiEm5vTGVzc1RoZW5BbXRBc3NldCIUbm9MZXNzVGhlblByaWNlQXNzZXQiDWNoZWNrUGF5bWVudHMiD2NoZWNrUG9vbFN0YXR1cyIVbm9MZXNzVGhlbkFtb3VudEFzc2V0IgxjaGVja0Ftb3VudHMiC2FtdEFzc2V0U3RyIg1wcmljZUFzc2V0U3RyIg1wb29sTFBCYWxhbmNlIgpwcmljZXNMaXN0Ig9scEFtdEFzc2V0U2hhcmUiEWxwUHJpY2VBc3NldFNoYXJlIgpwb29sV2VpZ2h0IgxjdXJQcmljZUNhbGMiDGFtQmFsYW5jZVJhdyIMcHJCYWxhbmNlUmF3Ig9hbUJhbGFuY2VSYXdYMTgiD3ByQmFsYW5jZVJhd1gxOCIQcGF5bWVudExwQXNzZXRJZCIMcGF5bWVudExwQW10IgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXkiCm1hdGNoZXJQdWIiB25ld0hhc2giC2FsbG93ZWRIYXNoIgtjdXJyZW50SGFzaGMAAWEACAABYgCAwtcvAAFjCQC2AgEAgMLXLwABZAkAtgIBAICAkLu61q3wDQABZQkAtgIBAAAAAWYJALYCAQAAAAFnCQC2AgEAAQABaAkAtgIBAAIAAWkCBVdBVkVTAAFqAgJfXwABawABAAFsAAIAAW0AAwABbgAEAAFvAAEAAXAAAgABcQADAAFyAAQAAXMABQABdAAGAAF1AAcAAXYACAABdwAJAAF4AAoAAXkAAQABegACAAFBAAMAAUIAAQABQwAHAQFEAgFFAUYJALwCAwkAtgIBBQFFBQFkCQC2AgEFAUYBAUcCAUgBSQkAoAMBCQC8AgMFAUgJALYCAQUBSQUBZAEBSgMBSwFMAU0JAGsDBQFLBQFMBQFNAQFOAQFIAwkAZgIAAAUBSAkBAS0BBQFIBQFIAQFPAQFIAwkAvwICBQFlBQFICQC+AgEFAUgFAUgBAVAAAhMlc19fZmFjdG9yeUNvbnRyYWN0AQFRAAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBAVIAAhslc19fcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkBAVMAAhElcyVzX19wcmljZV9fbGFzdAEBVAIBVQFWCQC5CQIJAMwIAgIYJXMlcyVkJWRfX3ByaWNlX19oaXN0b3J5CQDMCAIJAKQDAQUBVQkAzAgCCQCkAwEFAVYFA25pbAUBagEBVwIBWAFZCQCsAgIJAKwCAgkArAICAgslcyVzJXNfX1BfXwUBWAICX18FAVkBAVoCAVgBWQkArAICCQCsAgIJAKwCAgILJXMlcyVzX19HX18FAVgCAl9fBQFZAQJhYQACDyVzX19hbW91bnRBc3NldAECYWIAAg4lc19fcHJpY2VBc3NldAACYWMCByVzX19mZWUAAmFkCQBrAwAKBQFiAJBOAAJhZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQJhYwUCYWQBAmFmAAIRJXNfX2ZhY3RvcnlDb25maWcBAmFnAAIYJXMlc19fbWF0Y2hlcl9fcHVibGljS2V5AQJhaAECYWkJAKwCAgkArAICAgglcyVzJXNfXwUCYWkCIF9fbWFwcGluZ3NfX3Bvb2xDb250cmFjdDJMcEFzc2V0AQJhagICYWsCYWwJAKwCAgkArAICCQCsAgIJAKwCAgIIJWQlZCVzX18FAmFrAgJfXwUCYWwCCF9fY29uZmlnAQJhbQECYW4JAKwCAgIoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUCYW4BAmFvAAIMJXNfX3NodXRkb3duAQJhcAECYXEJAKwCAgISJXMlc19fcG9vbFdlaWdodF9fBQJhcQECYXIAAhclc19fYWxsb3dlZExwU2NyaXB0SGFzaAACYXMCFyVzX19mZWVDb2xsZWN0b3JBZGRyZXNzAQJhdAMCYXUCYXYCYXcJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIkb3JkZXIgdmFsaWRhdGlvbiBmYWlsZWQ6IG9yZGVyVmFsaWQ9CQClAwEFAmF1Ag0gc2VuZGVyVmFsaWQ9CQClAwEFAmF2Ag4gbWF0Y2hlclZhbGlkPQkApQMBBQJhdwECYXgCAmF5AmF6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYXkFAmF6CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF5CQDMCAICAS4JAMwIAgUCYXoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUECAmF5AmF6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUCYXkFAmF6CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFAmF5CQDMCAICAS4JAMwIAgUCYXoJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAECYUIBAmFDCQACAQkAuQkCCQDMCAICCGxwLnJpZGU6CQDMCAIFAmFDBQNuaWwCASAAAmFECQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQR0aGlzCQEBUAAAAmFFCQERQGV4dHJOYXRpdmUoMTA2MikBCQECYXgCBQJhRAUCYXMBAmFGAAkBC3ZhbHVlT3JFbHNlAgkAmwgCBQJhRAkBAmFvAAcBAmFHAAkA2QQBCQECYXgCBQJhRAkBAmFnAAECYUgABAJhSQkBAmF4AgUEdGhpcwkBAmFhAAQCYUoJAQJheAIFBHRoaXMJAQJhYgAEAmFsCQECYUECBQJhRAkBAmFtAQUCYUoEAmFrCQECYUECBQJhRAkBAmFtAQUCYUkJALUJAgkBAmF4AgUCYUQJAQJhagIJAKQDAQUCYWsJAKQDAQUCYWwFAWoBAmFLAQJhTAMJAAACBQJhTAUBaQUEdW5pdAkA2QQBBQJhTAECYU0BAmFMAwkAAAIFAmFMBQR1bml0BQFpCQDYBAEJAQV2YWx1ZQEFAmFMAQJhTgECYU8JAJkKBwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQJhTwUBbwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFPBQFwCQDZBAEJAJEDAgUCYU8FAXEJAQJhSwEJAJEDAgUCYU8FAXIJAQJhSwEJAJEDAgUCYU8FAXMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJhTwUBdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmFPBQF1AAJhUAkBAmFOAQkBAmFIAAACYVEFAmFQAAJhUggFAmFRAl8xAAJhUwgFAmFRAl8yAAJhVAgFAmFRAl8zAAJhVQgFAmFRAl80AAJhVggFAmFRAl81AAJhVwgFAmFRAl82AAJhWAgFAmFRAl83AQJhWQAJALUJAgkBAmF4AgUCYUQJAQJhZgAFAWoAAmFaCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCCQECYVkABQFCAhlpbmNvcnJlY3Qgc3Rha2luZyBhZGRyZXNzAAJiYQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgkBAmFZAAUBQwIZaW5jb3JyZWN0IHN0YWtpbmcgYWRkcmVzcwECYmIKAmJjAmJkAmJlAmJmAmJnAmJoAmJpAmJqAmJrAmJsCQC5CQIJAMwIAgIUJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJiYwkAzAgCCQCkAwEFAmJkCQDMCAIJAKQDAQUCYmUJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEFAmJnCQDMCAIJAKQDAQUCYmgJAMwIAgkApAMBBQJiaQkAzAgCCQCkAwEFAmJqCQDMCAIJAKQDAQUCYmsJAMwIAgkApAMBBQJibAUDbmlsBQFqAQJibQYCYm4CYm8CYnACYmYCYmkCYmoJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJibgkAzAgCCQCkAwEFAmJvCQDMCAIJAKQDAQUCYnAJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEFAmJpCQDMCAIJAKQDAQUCYmoFA25pbAUBagECYnEBAmJyAwkAAAIFAmJyAgVXQVZFUwgJAO8HAQUEdGhpcwlhdmFpbGFibGUJAPAHAgUEdGhpcwkA2QQBBQJicgECYnMCAmJ0AmJ1CQC8AgMFAmJ0BQFkBQJidQECYnYEAmJ3AmJ4AmJ5AmJ6BAJiQQkBAUQCBQJieQUCYncEAmJCCQEBRAIFAmJ6BQJieAkBAmJzAgUCYkIFAmJBAQJiQwMCYnkCYnoCYkQEAmJFCQECYUgABAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiSAkBAmJ2BAUCYkYFAmJHBQJieQUCYnoEAmJ1CQEBRAIFAmJ5BQJiRgQCYnQJAQFEAgUCYnoFAmJHBAJiSQkBAUQCBQJiRAUBYgQCYkoJAQJicwIFAmJ1BQJiSQQCYksJAQJicwIFAmJ0BQJiSQkAzAgCBQJiSAkAzAgCBQJiSgkAzAgCBQJiSwUDbmlsAQJiTAMCYnkCYnoCYkQEAmJNCQECYkMDBQJieQUCYnoFAmJECQDMCAIJAQFHAgkAkQMCBQJiTQAABQFiCQDMCAIJAQFHAgkAkQMCBQJiTQABBQFiCQDMCAIJAQFHAgkAkQMCBQJiTQACBQFiBQNuaWwBAmJOBAJiTwJiUAJiUQFYBAJiRQkBAmFIAAQCYlIJAJEDAgUCYkUFAXEEAmJTCQCRAwIFAmJFBQFyBAJiVAkAkQMCBQJiRQUBcwQCYncJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYngJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCYlUJAJEDAgUCYkUFAXAEAmJWCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEJANkEAQUCYlIJAKwCAgkArAICAgZBc3NldCAFAmJSAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQMJAQIhPQIFAmJSBQJiUAkAAgECFUludmFsaWQgYXNzZXQgcGFzc2VkLgQCYlcJAQJicQEFAmJTBAJiWAkBAUQCBQJiVwUCYncEAmJZCQECYnEBBQJiVAQCYloJAQFEAgUCYlkFAmJ4BAJjYQkBAmJzAgUCYloFAmJYBAJjYgkBAUcCBQJjYQUBYgQCY2MJAQFEAgUCYlEFAWIEAmNkCQEBRAIFAmJWBQFiBAJjZQkAvAIDBQJiWAUCY2MFAmNkBAJjZgkAvAIDBQJiWgUCY2MFAmNkBAJjZwkBAUcCBQJjZQUCYncEAmNoCQEBRwIFAmNmBQJieAQCY2kDCQAAAgUCYk8CAAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAVgFAmNnAwkAAAIFAmJTAgVXQVZFUwUEdW5pdAkA2QQBBQJiUwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQFYBQJjaAMJAAACBQJiVAIFV0FWRVMFBHVuaXQJANkEAQUCYlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCCQClCAEFAVgFAmJPCQECYm0GBQJjZwUCY2gFAmJRBQJjYgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJjYgUDbmlsCQCcCgoFAmNnBQJjaAUCYlMFAmJUBQJiVwUCYlkFAmJWBQJjYQUCYlUFAmNpAQJjagkCYk8CY2sCY2wCY20CY24CY28BWAJjcAJjcQQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJjcwkAkQMCBQJiRQUBcwQCY3QJAJEDAgUCYkUFAXYEAmN1CQCRAwIFAmJFBQF3BAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCYlYICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjdgkA2AQBCQELdmFsdWVPckVsc2UCBQJjbQkA2QQBAgVXQVZFUwQCY3cJANgEAQkBC3ZhbHVlT3JFbHNlAgUCY28JANkEAQIFV0FWRVMDAwkBAiE9AgUCY3IFAmN2BgkBAiE9AgUCY3MFAmN3CQACAQIiSW52YWxpZCBhbXQgb3IgcHJpY2UgYXNzZXQgcGFzc2VkLgQCYlcDBQJjcAkBAmJxAQUCY3IJAGUCCQECYnEBBQJjcgUCY2wEAmJZAwUCY3AJAQJicQEFAmNzCQBlAgkBAmJxAQUCY3MFAmNuBAJjeAkBAUQCBQJjbAUCYkYEAmN5CQEBRAIFAmNuBQJiRwQCY3oJAQJicwIFAmN5BQJjeAQCYlgJAQFEAgUCYlcFAmJGBAJiWgkBAUQCBQJiWQUCYkcEAmNBAwkAAAIFAmJWAAAEAmNhBQFlBAJjQgUBZQQCYkkJAHYGCQC5AgIFAmN4BQJjeQAACQC2AgEABQABAAAFBERPV04JAJcKBQkBAUcCBQJiSQUBYgkBAUcCBQJjeAUCYkYJAQFHAgUCY3kFAmJHCQECYnMCCQC3AgIFAmJaBQJjeQkAtwICBQJiWAUCY3gFAmNCBAJjYQkBAmJzAgUCYloFAmJYBAJjQgkAvAIDCQEBTwEJALgCAgUCY2EFAmN6BQFkBQJjYQQCY0MJAQFEAgUCY2sFAWIDAwkBAiE9AgUCY2EFAWUJAL8CAgUCY0IFAmNDBwkAAgEJAKwCAgkArAICCQCsAgICD1ByaWNlIHNsaXBwYWdlIAkApgMBBQJjQgIeIGV4Y2VlZGVkIHRoZSBwYXNzZWQgbGltaXQgb2YgCQCmAwEFAmNDBAJjZAkBAUQCBQJiVgUBYgQCY0QJALwCAwUCY3gFAmNhBQFkBAJjRQkAvAIDBQJjeQUBZAUCY2EEAmNGAwkAvwICBQJjRAUCY3kJAJQKAgUCY0UFAmN5CQCUCgIFAmN4BQJjRAQCY0cIBQJjRgJfMQQCY0gIBQJjRgJfMgQCYkkJALwCAwUCY2QFAmNIBQJiWgkAlwoFCQEBRwIFAmJJBQFiCQEBRwIFAmNHBQJiRgkBAUcCBQJjSAUCYkcFAmNhBQJjQgQCY0kIBQJjQQJfMQQCY0oIBQJjQQJfMgQCY0sIBQJjQQJfMwQCY2IJAQFHAggFAmNBAl80BQFiBAJjTAkBAUcCCAUCY0ECXzUFAWIDCQBnAgAABQJjSQkAAgECNkludmFsaWQgY2FsY3VsYXRpb25zLiBMUCBjYWxjdWxhdGVkIGlzIGxlc3MgdGhhbiB6ZXJvLgQCY00DCQEBIQEFAmNxAAAFAmNJBAJjTgkAZQIFAmNsBQJjSgQCY08JAGUCBQJjbgUCY0sEAmNQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBUwAFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVAIFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNiCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFXAgUBWAUCYk8JAQJiYgoFAmNKBQJjSwUCY00FAmNiBQJjawUCY0wFBmhlaWdodAgFCWxhc3RCbG9jawl0aW1lc3RhbXAFAmNOBQJjTwUDbmlsCQCfCg0FAmNJBQJjTQUCY2IFAmJXBQJiWQUCYlYFAmJSBQJiVQUCY1AFAmNOBQJjTwUCY20FAmNvAQJjUQECY1IEAmJFCQECYUgABAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmJVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXAEAmJGCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXQEAmJHCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYkUFAXUEAmNVCQECYnEBBQJjUwQCY1YJAQJicQEFAmNUBAJjYQMJAAACCAUCY1IJb3JkZXJUeXBlBQNCdXkJAQJidgQFAmJGBQJiRwkAZAIFAmNVCAUCY1IGYW1vdW50BQJjVgkBAmJ2BAUCYkYFAmJHCQBlAgUCY1UIBQJjUgZhbW91bnQFAmNWBAJjYgkBAUcCBQJjYQUBYgMDAwkBAmFGAAYJAAACBQJiVQUBbQYJAAACBQJiVQUBbgkAAgECHEV4Y2hhbmdlIG9wZXJhdGlvbnMgZGlzYWJsZWQEAmNXCAgFAmNSCWFzc2V0UGFpcgthbW91bnRBc3NldAQCY1gDCQAAAgUCY1cFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNXBAJjWQgIBQJjUglhc3NldFBhaXIKcHJpY2VBc3NldAQCY1oDCQAAAgUCY1kFBHVuaXQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmNZAwMJAQIhPQIFAmNYBQJjUwYJAQIhPQIFAmNaBQJjVAkAAgECE1dyb25nIG9yZGVyIGFzc2V0cy4EAmRhCAUCY1IFcHJpY2UEAmRiCQBrAwUBYgUCYkcFAmJGBAJkYwkBAUoDBQJkYQUBYgUCZGIEAmRkAwkAAAIIBQJjUglvcmRlclR5cGUFA0J1eQkAZwIFAmNiBQJkYwkAZwIFAmRjBQJjYgYBAmRlAQJkZgMJAQIhPQIJAJADAQgFAmRmCHBheW1lbnRzAAEJAAIBAh1leGFjdGx5IDEgcGF5bWVudCBpcyBleHBlY3RlZAQCZGcJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAAEAmJQCQEFdmFsdWUBCAUCZGcHYXNzZXRJZAQCZGgIBQJkZwZhbW91bnQEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmJQBQJkaAgFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmNBAl85BAJjaQgFAmNBA18xMAMDCQECYUYABgkAAAIFAmJVBQFuCQACAQkArAICAixHZXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVQkAlwoFBQJjZwUCY2gFAmRoBQJiUAUCY2kBAmRpAwJkZgJjawJjcQMJAQIhPQIJAJADAQgFAmRmCHBheW1lbnRzAAIJAAIBAh9leGFjdGx5IDIgcGF5bWVudHMgYXJlIGV4cGVjdGVkBAJkagkBBXZhbHVlAQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZGsJAQV2YWx1ZQEJAJEDAggFAmRmCHBheW1lbnRzAAEEAmRsCQECY2oJCQDYBAEIBQJkZg10cmFuc2FjdGlvbklkBQJjawgFAmRqBmFtb3VudAgFAmRqB2Fzc2V0SWQIBQJkawZhbW91bnQIBQJkawdhc3NldElkCQClCAEIBQJkZgZjYWxsZXIHBQJjcQQCYlUJAQ1wYXJzZUludFZhbHVlAQgFAmRsAl84AwMDCQECYUYABgkAAAIFAmJVBQFsBgkAAAIFAmJVBQFuCQACAQkArAICAixQdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4uIFN0YXR1cyA9IAkApAMBBQJiVQUCZGwBAmRtAQJkbgQCZG8JAPwHBAUCYUQCBGVtaXQJAMwIAgUCZG4FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmRuBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJkcwECZG4EAmR0CQBrAwUCZG4FAmFlBQFiCQCUCgIJAGUCBQJkbgUCZHQFAmR0AQJkdQQCZHYCZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmR5CQECYnEBCQECYU0BBQJhVQQCZHoJAQJicQEJAQJhTQEFAmFWBAJkQQMJAAACBQJkdwUCYVUGAwkAAAIFAmR3BQJhVgcJAQJhQgECDWludmFsaWQgYXNzZXQEAmRCAwUCZHgJAJQKAgUCZHkFAmR6AwUCZEEJAJQKAgkAZQIFAmR5BQJkdgUCZHoJAJQKAgUCZHkJAGUCBQJkegUCZHYEAmRDCAUCZEICXzEEAmRECAUCZEICXzIEAmRFAwUCZEEJAJQKAgUCZHYAAAkAlAoCAAAFAmR2BAJkRggFAmRFAl8xBAJkRwgFAmRFAl8yBAJkSAgJAQJkcwEFAmRGAl8xBAJkSQgJAQJkcwEFAmRHAl8xBAJkSgkBAmRzAQUCZHYEAmRLCAUCZEoCXzEEAmR0CAUCZEoCXzIEAmRMCQBkAgUCZEMFAmRIBAJkTQkAZAIFAmREBQJkSQQCZE4JAQJicwIJAQFEAgUCZE0FAmFYCQEBRAIFAmRMBQJhVwQCZE8JAQFHAgUCZE4FAWIEAmRQAwUCZEEFAmRDBQJkRAQCZFEJALYCAQUCZFAEAmRSCQC2AgEICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYVQJAKwCAgkArAICAgZhc3NldCAJANgEAQUCYVQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJkUwMJAL8CAgUCZFIFAWYGCQECYUIBAiJpbml0aWFsIGRlcG9zaXQgcmVxdWlyZXMgYWxsIGNvaW5zAwkAAAIFAmRTBQJkUwQCZFQJALYCAQUCZEsEAmRVCQCWAwEJAMwIAgAACQDMCAIJAKADAQkAugICCQC5AgIFAmRSCQC4AgIJAQpzcXJ0QmlnSW50BAkAtwICBQFkCQC6AgIJALkCAgUCZFQFAWQFAmRRABIAEgUERE9XTgUBZAUBZAUDbmlsBAJjUAMFAmR4BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFTAAUCZE8JAMwIAgkBDEludGVnZXJFbnRyeQIJAQFUAgUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAUCZE8JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCCQClCAEJAQV2YWx1ZQEFAVgJANgEAQkBBXZhbHVlAQUBWQkBAmJiCgUCZEYFAmRHBQJkVQUCZE8AAAAABQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wAAAAAAUDbmlsBAJkVgkBAmJzAgkBAUQCBQJkRAUCYVgJAQFEAgUCZEMFAmFXBAJkVwkBAUcCBQJkVgUBYgQCZFgEAmRZAwUCZEEJAJQKAgUCZEYFAmRDCQCUCgIFAmRHBQJkRAQCZG4IBQJkWQJfMQQCZFoIBQJkWQJfMgQCZWEJAKADAQkAvAIDBQJkUgkAtgIBCQBpAgUCZG4AAgkAtgIBBQJkWgkAawMJAGUCBQJkVQUCZWEFAWIFAmVhCQCWCgQFAmRVBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlYgUCZWMCZEsCZHcBWAFZBAJkeAkAAAIFAVkFBHVuaXQEAmVkCQDMCAIDCQAAAgUCZHcFAmFUBgkBAmFCAQIQaW52YWxpZCBscCBhc3NldAUDbmlsAwkAAAIFAmVkBQJlZAQCZWUDCQAAAgUCZWMFAmFVBgMJAAACBQJlYwUCYVYHCQECYUIBAg1pbnZhbGlkIGFzc2V0BAJlZgMFAmVlCQC2AgEJAQJicQEJAQJhTQEFAmFVCQC2AgEJAQJicQEJAQJhTQEFAmFWBAJlZwkBAmJxAQkBAmFNAQUCYVUEAmVoCQECYnEBCQECYU0BBQJhVgQCZWkDBQJlZQUCZWcFAmVoBAJlagkAtgIBBQJlaQQCZFIJALYCAQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQJhVAkArAICCQCsAgICBmFzc2V0IAkA2AQBBQJhVAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEAmVrCQC2AgEFAmRLBAJlbAkAlgMBCQDMCAIAAAkAzAgCCQCgAwEJALoCAgkAuQICBQJlZgkAuAICBQFkCQB2BgkAuAICBQFkCQC6AgIJALkCAgUCZWsFAWQFAmRSABIFAWgAAAASBQRET1dOBQFkBQNuaWwEAmVtCQECZHMBBQJlbAQCZW4IBQJlbQJfMQQCZHQIBQJlbQJfMgQCZW8DBQJlZQkAlgoEBQJlbgAACQBlAgUCZWcFAmVsBQJlaAkAlgoEAAAFAmVuBQJlZwkAZQIFAmVoBQJlbAQCZXAIBQJlbwJfMQQCZXEIBQJlbwJfMgQCZXIIBQJlbwJfMwQCZXMIBQJlbwJfNAQCZE4JAQJicwIJAQFEAgUCZXMFAmFYCQEBRAIFAmVyBQJhVwQCZE8JAQFHAgUCZE4FAWIEAmNQAwUCZHgFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIJAKUIAQkBBXZhbHVlAQUBWAkA2AQBCQEFdmFsdWUBBQFZCQECYm0GBQJlcAUCZXEFAmRLBQJkTwUGaGVpZ2h0CAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVMABQJkTwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVQCBQZoZWlnaHQIBQlsYXN0QmxvY2sJdGltZXN0YW1wBQJkTwUDbmlsBAJkVgkBAmJzAgkBAUQCBQJlaAUCYVgJAQFEAgUCZWcFAmFXBAJkVwkBAUcCBQJkVgUBYgQCZFgEAmV0CQBoAgkAoAMBCQC8AgMFAmVmBQJlawUCZFIAAgkAawMJAGUCBQJlbgUCZXQFAWIFAmV0CQCWCgQFAmVuBQJjUAUCZHQFAmRYCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJldQAEAmRxCQCiCAEJAQFRAAMJAAECBQJkcQIGU3RyaW5nBAJldgUCZHEJANkEAQUCZXYDCQABAgUCZHECBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECZXcABAJkcQkAoggBCQEBUgADCQABAgUCZHECBlN0cmluZwQCZXYFAmRxCQDZBAEFAmV2AwkAAQIFAmRxAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmV4AQJkZgQCZHEJAQJldQADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV5BQJkcQkAAAIIBQJkZg9jYWxsZXJQdWJsaWNLZXkFAmV5AwkAAQIFAmRxAgRVbml0CQAAAggFAmRmBmNhbGxlcgUEdGhpcwkAAgECC01hdGNoIGVycm9yAQJlegECZGYEAmVBCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAmRxCQECZXUAAwkAAQIFAmRxAgpCeXRlVmVjdG9yBAJleQUCZHEDCQAAAggFAmRmD2NhbGxlclB1YmxpY0tleQUCZXkGBQJlQQMJAAECBQJkcQIEVW5pdAMJAAACCAUCZGYGY2FsbGVyBQR0aGlzBgUCZUEJAAIBAgtNYXRjaCBlcnJvchoCZGYBCnNldE1hbmFnZXIBAmVCBAJlQwkBAmV6AQUCZGYDCQAAAgUCZUMFAmVDBAJlRAkA2QQBBQJlQgMJAAACBQJlRAUCZUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVIABQJlQgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQ5jb25maXJtTWFuYWdlcgAEAmVFCQECZXcABAJlRgMJAQlpc0RlZmluZWQBBQJlRQYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUYFAmVGBAJlRwMJAAACCAUCZGYPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlRQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZUcFAmVHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAAkA2AQBCQEFdmFsdWUBBQJlRQkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgAFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEDcHV0AgJjawJlSAMJAGYCAAAFAmNrCQACAQIgSW52YWxpZCBzbGlwcGFnZVRvbGVyYW5jZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCY2sGBAJjTQgFAmRsAl8yBAJiUggFAmRsAl83BAJjaQgFAmRsAl85BAJjTggFAmRsA18xMAQCY08IBQJkbANfMTEEAmVJCAUCZGwDXzEyBAJlSggFAmRsA18xMwQCZG8JAPwHBAUCYUQCBGVtaXQJAMwIAgUCY00FA25pbAUDbmlsAwkAAAIFAmRvBQJkbwQCZHAEAmRxBQJkbwMJAAECBQJkcQIHQWRkcmVzcwQCZHIFAmRxCQD8BwQFAmRyAgRlbWl0CQDMCAIFAmNNBQNuaWwFA25pbAUEdW5pdAMJAAACBQJkcAUCZHAEAmVLAwkAZgIFAmNOAAAJAPwHBAUCYmECA3B1dAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQJlSQUCY04FA25pbAUDbmlsAwkAAAIFAmVLBQJlSwQCZUwDCQBmAgUCY08AAAkA/AcEBQJiYQIDcHV0BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmVKBQJjTwUDbmlsBQNuaWwDCQAAAgUCZUwFAmVMBAJlTQMFAmVIBAJlTgkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlIFAmNNBQNuaWwDCQAAAgUCZU4FAmVOBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCY00FAmJSBQNuaWwJAM4IAgUCY2kFAmVNCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQpwdXRGb3JGcmVlAQJlTwMJAGYCAAAFAmVPCQACAQIUSW52YWxpZCB2YWx1ZSBwYXNzZWQEAmRsCQECZGkDBQJkZgUCZU8HCAUCZGwCXzkCZGYBCXB1dE9uZVRrbgICZVACZVEEAmVSCgACZVMJAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJlUwIHQm9vbGVhbgUCZVMJAAIBCQCsAgIJAAMBBQJlUwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZVQDAwMJAQJhRgAGCQAAAgUCYVMFAWwGCQAAAgUCYVMFAW4GBQJlUgQCZWQJAMwIAgMDCQEBIQEFAmVUBgkBAmV4AQUCZGYGCQECYUIBAiFwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQgYnkgYWRtaW4JAMwIAgMJAAACCQCQAwEIBQJkZghwYXltZW50cwABBgkBAmFCAQIeZXhhY3RseSAxIHBheW1lbnQgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJlVQkAkQMCCAUCZGYIcGF5bWVudHMAAAQCZHcIBQJlVQdhc3NldElkBAJkdggFAmVVBmFtb3VudAQBWAgFAmRmBmNhbGxlcgQBWQgFAmRmDXRyYW5zYWN0aW9uSWQEAmVWCQECZHUEBQJkdgUCZHcFAVgFAVkEAmVXCAUCZVYCXzEEAmNQCAUCZVYCXzIEAmR0CAUCZVYCXzMEAmVYCAUCZVYCXzQEAmVZAwMJAGYCBQJlUAAACQBmAgUCZVAFAmVXBwkBAmFCAQkAuQkCCQDMCAICH2Ftb3VudCB0byByZWNlaXZlIGlzIGxlc3MgdGhhbiAJAMwIAgkApAMBBQJlUAUDbmlsAgAFAmVXBAJkbwkBAmRtAQUCZVkDCQAAAgUCZG8FAmRvBAJlTQMFAmVRBAJlWgkA/AcEBQJhWgIFc3Rha2UFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmVZBQNuaWwDCQAAAgUCZVoFAmVaBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZVkFAmFUBQNuaWwEAmZhAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJkdwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJlTQUCZmEFAmVZCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmARFwdXRPbmVUa25SRUFET05MWQICZHcCZHYEAmZiCQECZHUEBQJkdgkBAmFLAQUCZHcFBHVuaXQFBHVuaXQEAmVXCAUCZmICXzEEAmNQCAUCZmICXzIEAmR0CAUCZmICXzMEAmVYCAUCZmICXzQJAJQKAgUDbmlsCQCVCgMFAmVXBQJkdAUCZVgCZGYBCWdldE9uZVRrbgICZmMCZVAEAmVSCgACZVMJAPwHBAUCYUQCKGlzUG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkUkVBRE9OTFkJAMwIAgkApQgBBQR0aGlzBQNuaWwFA25pbAMJAAECBQJlUwIHQm9vbGVhbgUCZVMJAAIBCQCsAgIJAAMBBQJlUwIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQCZmQDAwkBAmFGAAYJAAACBQJhUwUBbgYFAmVSBAJlZAkAzAgCAwMJAQEhAQUCZmQGCQECZXgBBQJkZgYJAQJhQgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAEGCQECYUIBAh5leGFjdGx5IDEgcGF5bWVudCBhcmUgZXhwZWN0ZWQFA25pbAMJAAACBQJlZAUCZWQEAmVjCQECYUsBBQJmYwQCZVUJAJEDAggFAmRmCHBheW1lbnRzAAAEAmR3CAUCZVUHYXNzZXRJZAQCZEsIBQJlVQZhbW91bnQEAVgIBQJkZgZjYWxsZXIEAVkIBQJkZg10cmFuc2FjdGlvbklkBAJmZQkBAmViBQUCZWMFAmRLBQJkdwUBWAUBWQQCZmYIBQJmZQJfMQQCY1AIBQJmZQJfMgQCZHQIBQJmZQJfMwQCZVgIBQJmZQJfNAQCZG4DAwkAZgIFAmVQAAAJAGYCBQJlUAUCZmYHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVQBQNuaWwCAAUCZmYEAmZnCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRLBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmR3BQJkSwUDbmlsAwkAAAIFAmZnBQJmZwQCZmgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUBWAUCZG4FAmVjBQNuaWwEAmZhAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJlYwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmaAUCZmEFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmARFnZXRPbmVUa25SRUFET05MWQICZWMCZEsEAmZpCQECZWIFCQECYUsBBQJlYwUCZEsFAmFUBQR1bml0BQR1bml0BAJmZggFAmZpAl8xBAJjUAgFAmZpAl8yBAJkdAgFAmZpAl8zBAJlWAgFAmZpAl80CQCUCgIFA25pbAkAlQoDBQJmZgUCZHQFAmVYAmRmARN1bnN0YWtlQW5kR2V0T25lVGtuAwJmagJmYwJlUAQCZVIKAAJlUwkA/AcEBQJhRAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFBHRoaXMFA25pbAUDbmlsAwkAAQIFAmVTAgdCb29sZWFuBQJlUwkAAgEJAKwCAgkAAwEFAmVTAhwgY291bGRuJ3QgYmUgY2FzdCB0byBCb29sZWFuBAJmZAMDCQECYUYABgkAAAIFAmFTBQFuBgUCZVIEAmVkCQDMCAIDAwkBASEBBQJmZAYJAQJleAEFAmRmBgkBAmFCAQIhZ2V0IG9wZXJhdGlvbiBpcyBibG9ja2VkIGJ5IGFkbWluCQDMCAIDCQAAAgkAkAMBCAUCZGYIcGF5bWVudHMAAAYJAQJhQgECGG5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAUDbmlsAwkAAAIFAmVkBQJlZAQCZWMJAQJhSwEFAmZjBAFYCAUCZGYGY2FsbGVyBAFZCAUCZGYNdHJhbnNhY3Rpb25JZAQCZmsJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJhVAkAzAgCBQJmagUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJmbAkBAmViBQUCZWMFAmZqBQJhVAUBWAUBWQQCZmYIBQJmbAJfMQQCY1AIBQJmbAJfMgQCZHQIBQJmbAJfMwQCZVgIBQJmbAJfNAQCZG4DAwkAZgIFAmVQAAAJAGYCBQJlUAUCZmYHCQECYUIBCQC5CQIJAMwIAgIfYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmVQBQNuaWwCAAUCZmYEAmZnCQD8BwQFAmFEAgRidXJuCQDMCAIFAmZqBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmFUBQJmagUDbmlsAwkAAAIFAmZnBQJmZwQCZmgJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAmRmBmNhbGxlcgUCZG4FAmVjBQNuaWwEAmZhAwkAZgIFAmR0AAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCYUUFAmR0BQJlYwUDbmlsBQNuaWwJAJQKAgkAzggCCQDOCAIFAmNQBQJmaAUCZmEFAmRuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmRmAQNnZXQABAJjQQkBAmRlAQUCZGYEAmZtCAUCY0ECXzEEAmNoCAUCY0ECXzIEAmRoCAUCY0ECXzMEAmJQCAUCY0ECXzQEAmNpCAUCY0ECXzUEAmZuCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRoBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJQBQJkaAUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBCWdldE5vTGVzcwICZm8CZnAEAmNBCQECZGUBBQJkZgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCZGgIBQJjQQJfMwQCYlAIBQJjQQJfNAQCY2kIBQJjQQJfNQMJAGYCBQJmbwUCY2cJAAIBCQCsAgIJAKwCAgkArAICAhxub0xlc3NUaGVuQW10QXNzZXQgZmFpbGVkOiAgCQCkAwEFAmNnAgMgPCAJAKQDAQUCZm8DCQBmAgUCZnAFAmNoCQACAQkArAICCQCsAgIJAKwCAgIdbm9MZXNzVGhlblByaWNlQXNzZXQgZmFpbGVkOiAJAKQDAQUCY2gCAyA8IAkApAMBBQJmcAQCZm4JAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZGgFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYlAFAmRoBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgENdW5zdGFrZUFuZEdldAECZG4EAmZxAwkBAiE9AgkAkAMBCAUCZGYIcGF5bWVudHMAAAkAAgECGE5vIHBheW1lbnRzIGFyZSBleHBlY3RlZAYDCQAAAgUCZnEFAmZxBAJiRQkBAmFIAAQCYlIJANkEAQkAkQMCBQJiRQUBcQQCZmsJAPwHBAUCYVoCB3Vuc3Rha2UJAMwIAgkA2AQBBQJiUgkAzAgCBQJkbgUDbmlsBQNuaWwDCQAAAgUCZmsFAmZrBAJjQQkBAmJOBAkA2AQBCAUCZGYNdHJhbnNhY3Rpb25JZAkA2AQBBQJiUgUCZG4IBQJkZgZjYWxsZXIEAmJVCQENcGFyc2VJbnRWYWx1ZQEIBQJjQQJfOQQCY2kIBQJjQQNfMTAEAmZyAwMJAQJhRgAGCQAAAgUCYlUFAW4JAAIBCQCsAgICLEdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbi4gU3RhdHVzID0gCQCkAwEFAmJVBgMJAAACBQJmcgUCZnIEAmZuCQD8BwQFAmFEAgRidXJuCQDMCAIFAmRuBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFAmJSBQJkbgUDbmlsAwkAAAIFAmZuBQJmbgUCY2kJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CZGYBE3Vuc3Rha2VBbmRHZXROb0xlc3MDAmZqAmZzAmZwBAJmZAMJAQJhRgAGCQAAAgUCYVMFAW4EAmVkCQDMCAIDCQEBIQEFAmZkBgkAAgECIWdldCBvcGVyYXRpb24gaXMgYmxvY2tlZCBieSBhZG1pbgkAzAgCAwkAAAIJAJADAQgFAmRmCHBheW1lbnRzAAAGCQACAQIYbm8gcGF5bWVudHMgYXJlIGV4cGVjdGVkBQNuaWwDCQAAAgUCZWQFAmVkBAJmawkA/AcEBQJhWgIHdW5zdGFrZQkAzAgCCQDYBAEFAmFUCQDMCAIFAmZqBQNuaWwFA25pbAMJAAACBQJmawUCZmsEAmNBCQECYk4ECQDYBAEIBQJkZg10cmFuc2FjdGlvbklkCQDYBAEFAmFUBQJmaggFAmRmBmNhbGxlcgQCY2cIBQJjQQJfMQQCY2gIBQJjQQJfMgQCY2kIBQJjQQNfMTAEAmZ0CQDMCAIDCQBnAgUCY2cFAmZzBgkAAgEJALkJAgkAzAgCAixhbW91bnQgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZzBQNuaWwCAAkAzAgCAwkAZwIFAmNoBQJmcAYJAAIBCQC5CQIJAMwIAgIrcHJpY2UgYXNzZXQgYW1vdW50IHRvIHJlY2VpdmUgaXMgbGVzcyB0aGFuIAkAzAgCCQCkAwEFAmZwBQNuaWwCAAUDbmlsAwkAAAIFAmZ0BQJmdAQCZm4JAPwHBAUCYUQCBGJ1cm4JAMwIAgUCZmoFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgUCYVQFAmZqBQNuaWwDCQAAAgUCZm4FAmZuBQJjaQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJkZgEIYWN0aXZhdGUCAmZ1AmZ2AwkBAiE9AgkApQgBCAUCZGYGY2FsbGVyCQClCAEFAmFECQACAQIScGVybWlzc2lvbnMgZGVuaWVkCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAAUCZnUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFiAAUCZnYFA25pbAIHc3VjY2VzcwJkZgEcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQAJAJQKAgUDbmlsCQECYUgAAmRmARxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZAQJicgkAlAoCBQNuaWwJAQJicQEFAmJyAmRmARljYWxjUHJpY2VzV3JhcHBlclJFQURPTkxZAwJieQJiegJiRAQCYk0JAQJiQwMFAmJ5BQJiegUCYkQJAJQKAgUDbmlsCQDMCAIJAKYDAQkAkQMCBQJiTQAACQDMCAIJAKYDAQkAkQMCBQJiTQABCQDMCAIJAKYDAQkAkQMCBQJiTQACBQNuaWwCZGYBFHRvWDE4V3JhcHBlclJFQURPTkxZAgFFAUYJAJQKAgUDbmlsCQCmAwEJAQFEAgUBRQUBRgJkZgEWZnJvbVgxOFdyYXBwZXJSRUFET05MWQIBSAFJCQCUCgIFA25pbAkBAUcCCQCnAwEFAUgFAUkCZGYBHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQICYnQCYnUJAJQKAgUDbmlsCQCmAwEJAQJicwIJAKcDAQUCYnQJAKcDAQUCYnUCZGYBI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQJiTwJjawJjbAJjbQJjbgJjbwFYAmNwAmNxCQCUCgIFA25pbAkBAmNqCQUCYk8FAmNrBQJjbAUCY20FAmNuBQJjbwUBWAUCY3AFAmNxAmRmASNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQQCYk8CYlACYlEBWAQCY0EJAQJiTgQFAmJPBQJiUAUCYlEJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAVgJAJQKAgUDbmlsCQCcCgoIBQJjQQJfMQgFAmNBAl8yCAUCY0ECXzMIBQJjQQJfNAgFAmNBAl81CAUCY0ECXzYIBQJjQQJfNwkApgMBCAUCY0ECXzgIBQJjQQJfOQgFAmNBA18xMAJkZgENc3RhdHNSRUFET05MWQAEAmJFCQECYUgABAJiUgkA2QQBCQCRAwIFAmJFBQFxBAJjUwkAkQMCBQJiRQUBcgQCY1QJAJEDAgUCYkUFAXMEAmN0CQCRAwIFAmJFBQF2BAJjdQkAkQMCBQJiRQUBdwQCYkYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdAQCYkcJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJiRQUBdQQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY1MEAmNWCQECYnEBBQJjVAQCZngDCQAAAgUCZncAAAkAzAgCBQFlCQDMCAIFAWUJAMwIAgUBZQUDbmlsCQECYkMDBQJjVQUCY1YFAmZ3BAJjYgAABAJmeQkBAUcCCQCRAwIFAmZ4AAEFAWIEAmZ6CQEBRwIJAJEDAgUCZngAAgUBYgQCZkEJAQV2YWx1ZQEJAJoIAgUCYUQJAQJhcAEJAKUIAQUEdGhpcwkAlAoCBQNuaWwJALkJAgkAzAgCAg4lZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFAmNVCQDMCAIJAKQDAQUCY1YJAMwIAgkApAMBBQJmdwkAzAgCCQCkAwEFAmNiCQDMCAIJAKQDAQUCZnkJAMwIAgkApAMBBQJmegkAzAgCCQCkAwEFAmZBBQNuaWwFAWoCZGYBIGV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAQJjbAQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJjVQkBAmJxAQUCY3IEAmNWCQECYnEBBQJjcwQCYkEJAQFEAgUCY1UFAmJGBAJiQgkBAUQCBQJjVgUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmJCBQJiQQQCY3gJAQFEAgUCY2wFAmJGBAJjeQkAvAIDBQJjeAUCY2EFAWQEAmNuCQEBRwIFAmN5BQJiRwQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmAR9ldmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAQJjbgQCYkUJAQJhSAAEAmJSCQDZBAEJAJEDAgUCYkUFAXEEAmNyCQCRAwIFAmJFBQFyBAJiUwkA2QQBBQJjcgQCY3MJAJEDAgUCYkUFAXMEAmJUCQDZBAEFAmNzBAJiRgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF0BAJiRwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJFBQF1BAJiVQkAkQMCBQJiRQUBcAQCZncICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUCYlIJAKwCAgkArAICAgZBc3NldCAJANgEAQUCYlICDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAJmQwkBAmJxAQUCY3IEAmZECQECYnEBBQJjcwQCZkUJAQFEAgUCZkMFAmJGBAJmRgkBAUQCBQJmRAUCYkcEAmNhAwkAAAIFAmZ3AAAFAWUJAQJicwIFAmZGBQJmRQQCY3kJAQFEAgUCY24FAmJHBAJjeAkAvAIDBQJjeQUBZAUCY2EEAmNsCQEBRwIFAmN4BQJiRgQCZGwJAQJjagkCAACgwh4FAmNsBQJiUwUCY24FAmJUAgAGBwQCY0kIBQJkbAJfMQQCZkIIBQJkbAJfMwQCYlcIBQJkbAJfNAQCYlkIBQJkbAJfNQQCYlYIBQJkbAJfNgkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCY0kJAMwIAgkApAMBCQEBRwIFAmNhBQFiCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIFAmJVCQDMCAIJAKQDAQUCY2wJAMwIAgkApAMBBQJjbgUDbmlsBQFqAmRmARNldmFsdWF0ZUdldFJFQURPTkxZAgJmRwJmSAQCY0EJAQJiTgQCAAUCZkcFAmZIBQR0aGlzBAJjZwgFAmNBAl8xBAJjaAgFAmNBAl8yBAJiVwgFAmNBAl81BAJiWQgFAmNBAl82BAJiVggFAmNBAl83BAJjYggFAmNBAl84BAJiVQkBDXBhcnNlSW50VmFsdWUBCAUCY0ECXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQJjZwkAzAgCCQCkAwEFAmNoCQDMCAIJAKQDAQUCYlcJAMwIAgkApAMBBQJiWQkAzAgCCQCkAwEFAmJWCQDMCAIJAKYDAQUCY2IJAMwIAgkApAMBBQJiVQUDbmlsBQFqAQJmSQECZkoABAJmSwQCZHEJAQJldQADCQABAgUCZHECCkJ5dGVWZWN0b3IEAmV5BQJkcQUCZXkDCQABAgUCZHECBFVuaXQIBQJmSQ9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgQCZHEFAmZJAwkAAQIFAmRxAgVPcmRlcgQCY1IFAmRxBAJmTAkBAmFHAAQCYXUJAQJjUQEFAmNSBAJhdgkA9AMDCAUCY1IJYm9keUJ5dGVzCQCRAwIIBQJjUgZwcm9vZnMAAAgFAmNSD3NlbmRlclB1YmxpY0tleQQCYXcJAPQDAwgFAmNSCWJvZHlCeXRlcwkAkQMCCAUCY1IGcHJvb2ZzAAEFAmZMAwMDBQJhdQUCYXYHBQJhdwcGCQECYXQDBQJhdQUCYXYFAmF3AwkAAQIFAmRxAhRTZXRTY3JpcHRUcmFuc2FjdGlvbgQCZXYFAmRxBAJmTQkA9gMBCQEFdmFsdWUBCAUCZXYGc2NyaXB0BAJmTgkA2wQBCQEFdmFsdWUBCQCdCAIFAmFECQECYXIABAJmTwkA8QcBBQR0aGlzAwMJAAACBQJmTgUCZk0JAQIhPQIFAmZPBQJmTQcGCQD0AwMIBQJmSQlib2R5Qnl0ZXMJAJEDAggFAmZJBnByb29mcwAABQJmSwkA9AMDCAUCZkkJYm9keUJ5dGVzCQCRAwIIBQJmSQZwcm9vZnMAAAUCZkvFV26M", "chainId": 84, "height": 2321078, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7LoG9Wt1DyxfzpsvCnbggKV8XRz98z334FxuG3v5swxP Next: Hzz1n1CyKAac7U6uoj8PaV8PJLxJDNZKLsw9cy86pUYJ Diff:
OldNewDifferences
608608
609609
610610 func ex (df) = {
611- let ey = throw("Permission denied")
612611 let dq = eu()
613612 if ($isInstanceOf(dq, "ByteVector"))
614613 then {
615- let ez = dq
616- if ((df.callerPublicKey == ez))
614+ let ey = dq
615+ (df.callerPublicKey == ey)
616+ }
617+ else if ($isInstanceOf(dq, "Unit"))
618+ then (df.caller == this)
619+ else throw("Match error")
620+ }
621+
622+
623+func ez (df) = {
624+ let eA = throw("Permission denied")
625+ let dq = eu()
626+ if ($isInstanceOf(dq, "ByteVector"))
627+ then {
628+ let ey = dq
629+ if ((df.callerPublicKey == ey))
617630 then true
618- else ey
631+ else eA
619632 }
620633 else if ($isInstanceOf(dq, "Unit"))
621634 then if ((df.caller == this))
622635 then true
623- else ey
636+ else eA
624637 else throw("Match error")
625638 }
626639
627640
628641 @Callable(df)
629-func setManager (eA) = {
630- let eB = ex(df)
631- if ((eB == eB))
642+func setManager (eB) = {
643+ let eC = ez(df)
644+ if ((eC == eC))
632645 then {
633- let eC = fromBase58String(eA)
634- if ((eC == eC))
635- then [StringEntry(R(), eA)]
646+ let eD = fromBase58String(eB)
647+ if ((eD == eD))
648+ then [StringEntry(R(), eB)]
636649 else throw("Strict value is not equal to itself.")
637650 }
638651 else throw("Strict value is not equal to itself.")
642655
643656 @Callable(df)
644657 func confirmManager () = {
645- let eD = ew()
646- let eE = if (isDefined(eD))
658+ let eE = ew()
659+ let eF = if (isDefined(eE))
647660 then true
648661 else throw("No pending manager")
649- if ((eE == eE))
662+ if ((eF == eF))
650663 then {
651- let eF = if ((df.callerPublicKey == value(eD)))
664+ let eG = if ((df.callerPublicKey == value(eE)))
652665 then true
653666 else throw("You are not pending manager")
654- if ((eF == eF))
655- then [StringEntry(Q(), toBase58String(value(eD))), DeleteEntry(R())]
667+ if ((eG == eG))
668+ then [StringEntry(Q(), toBase58String(value(eE))), DeleteEntry(R())]
656669 else throw("Strict value is not equal to itself.")
657670 }
658671 else throw("Strict value is not equal to itself.")
661674
662675
663676 @Callable(df)
664-func put (ck,eG) = if ((0 > ck))
677+func put (ck,eH) = if ((0 > ck))
665678 then throw("Invalid slippageTolerance passed")
666679 else {
667680 let dl = di(df, ck, true)
670683 let ci = dl._9
671684 let cN = dl._10
672685 let cO = dl._11
673- let eH = dl._12
674- let eI = dl._13
686+ let eI = dl._12
687+ let eJ = dl._13
675688 let do = invoke(aD, "emit", [cM], nil)
676689 if ((do == do))
677690 then {
686699 }
687700 if ((dp == dp))
688701 then {
689- let eJ = if ((cN > 0))
690- then invoke(ba, "put", nil, [AttachedPayment(eH, cN)])
702+ let eK = if ((cN > 0))
703+ then invoke(ba, "put", nil, [AttachedPayment(eI, cN)])
691704 else nil
692- if ((eJ == eJ))
705+ if ((eK == eK))
693706 then {
694- let eK = if ((cO > 0))
695- then invoke(ba, "put", nil, [AttachedPayment(eI, cO)])
707+ let eL = if ((cO > 0))
708+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cO)])
696709 else nil
697- if ((eK == eK))
710+ if ((eL == eL))
698711 then {
699- let eL = if (eG)
712+ let eM = if (eH)
700713 then {
701- let eM = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
702- if ((eM == eM))
714+ let eN = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
715+ if ((eN == eN))
703716 then nil
704717 else throw("Strict value is not equal to itself.")
705718 }
706719 else [ScriptTransfer(df.caller, cM, bR)]
707- (ci ++ eL)
720+ (ci ++ eM)
708721 }
709722 else throw("Strict value is not equal to itself.")
710723 }
718731
719732
720733 @Callable(df)
721-func putForFree (eN) = if ((0 > eN))
734+func putForFree (eO) = if ((0 > eO))
722735 then throw("Invalid value passed")
723736 else {
724- let dl = di(df, eN, false)
737+ let dl = di(df, eO, false)
725738 dl._9
726739 }
727740
728741
729742
730743 @Callable(df)
731-func putOneTkn (eO,eP) = {
732- let eQ = {
733- let eR = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
734- if ($isInstanceOf(eR, "Boolean"))
735- then eR
736- else throw(($getType(eR) + " couldn't be cast to Boolean"))
744+func putOneTkn (eP,eQ) = {
745+ let eR = {
746+ let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
747+ if ($isInstanceOf(eS, "Boolean"))
748+ then eS
749+ else throw(($getType(eS) + " couldn't be cast to Boolean"))
737750 }
738- let eS = if (if (if (aF())
751+ let eT = if (if (if (aF())
739752 then true
740753 else (aS == l))
741754 then true
742755 else (aS == n))
743756 then true
744- else eQ
745- let ed = [if (!(eS))
757+ else eR
758+ let ed = [if (if (!(eT))
759+ then true
760+ else ex(df))
746761 then true
747762 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
748763 then true
749764 else aB("exactly 1 payment are expected")]
750765 if ((ed == ed))
751766 then {
752- let eT = df.payments[0]
753- let dw = eT.assetId
754- let dv = eT.amount
767+ let eU = df.payments[0]
768+ let dw = eU.assetId
769+ let dv = eU.amount
755770 let X = df.caller
756771 let Y = df.transactionId
757- let eU = du(dv, dw, X, Y)
758- let eV = eU._1
759- let cP = eU._2
760- let dt = eU._3
761- let eW = eU._4
762- let eX = if (if ((eO > 0))
763- then (eO > eV)
772+ let eV = du(dv, dw, X, Y)
773+ let eW = eV._1
774+ let cP = eV._2
775+ let dt = eV._3
776+ let eX = eV._4
777+ let eY = if (if ((eP > 0))
778+ then (eP > eW)
764779 else false)
765- then aB(makeString(["amount to receive is less than ", toString(eO)], ""))
766- else eV
767- let do = dm(eX)
780+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
781+ else eW
782+ let do = dm(eY)
768783 if ((do == do))
769784 then {
770- let eL = if (eP)
785+ let eM = if (eQ)
771786 then {
772- let eY = invoke(aZ, "stake", nil, [AttachedPayment(aT, eX)])
773- if ((eY == eY))
787+ let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
788+ if ((eZ == eZ))
774789 then nil
775790 else throw("Strict value is not equal to itself.")
776791 }
777- else [ScriptTransfer(df.caller, eX, aT)]
778- let eZ = if ((dt > 0))
792+ else [ScriptTransfer(df.caller, eY, aT)]
793+ let fa = if ((dt > 0))
779794 then [ScriptTransfer(aE, dt, dw)]
780795 else nil
781- $Tuple2(((cP ++ eL) ++ eZ), eX)
796+ $Tuple2(((cP ++ eM) ++ fa), eY)
782797 }
783798 else throw("Strict value is not equal to itself.")
784799 }
789804
790805 @Callable(df)
791806 func putOneTknREADONLY (dw,dv) = {
792- let fa = du(dv, aK(dw), unit, unit)
793- let eV = fa._1
794- let cP = fa._2
795- let dt = fa._3
796- let eW = fa._4
797- $Tuple2(nil, $Tuple3(eV, dt, eW))
807+ let fb = du(dv, aK(dw), unit, unit)
808+ let eW = fb._1
809+ let cP = fb._2
810+ let dt = fb._3
811+ let eX = fb._4
812+ $Tuple2(nil, $Tuple3(eW, dt, eX))
798813 }
799814
800815
801816
802817 @Callable(df)
803-func getOneTkn (fb,eO) = {
804- let eQ = {
805- let eR = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
806- if ($isInstanceOf(eR, "Boolean"))
807- then eR
808- else throw(($getType(eR) + " couldn't be cast to Boolean"))
818+func getOneTkn (fc,eP) = {
819+ let eR = {
820+ let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
821+ if ($isInstanceOf(eS, "Boolean"))
822+ then eS
823+ else throw(($getType(eS) + " couldn't be cast to Boolean"))
809824 }
810- let fc = if (if (aF())
825+ let fd = if (if (aF())
811826 then true
812827 else (aS == n))
813828 then true
814- else eQ
815- let ed = [if (!(fc))
829+ else eR
830+ let ed = [if (if (!(fd))
831+ then true
832+ else ex(df))
816833 then true
817834 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
818835 then true
819836 else aB("exactly 1 payment are expected")]
820837 if ((ed == ed))
821838 then {
822- let ec = aK(fb)
823- let eT = df.payments[0]
824- let dw = eT.assetId
825- let dK = eT.amount
839+ let ec = aK(fc)
840+ let eU = df.payments[0]
841+ let dw = eU.assetId
842+ let dK = eU.amount
826843 let X = df.caller
827844 let Y = df.transactionId
828- let fd = eb(ec, dK, dw, X, Y)
829- let fe = fd._1
830- let cP = fd._2
831- let dt = fd._3
832- let eW = fd._4
833- let dn = if (if ((eO > 0))
834- then (eO > fe)
845+ let fe = eb(ec, dK, dw, X, Y)
846+ let ff = fe._1
847+ let cP = fe._2
848+ let dt = fe._3
849+ let eX = fe._4
850+ let dn = if (if ((eP > 0))
851+ then (eP > ff)
835852 else false)
836- then aB(makeString(["amount to receive is less than ", toString(eO)], ""))
837- else fe
838- let ff = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
839- if ((ff == ff))
853+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
854+ else ff
855+ let fg = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
856+ if ((fg == fg))
840857 then {
841- let fg = [ScriptTransfer(X, dn, ec)]
842- let eZ = if ((dt > 0))
858+ let fh = [ScriptTransfer(X, dn, ec)]
859+ let fa = if ((dt > 0))
843860 then [ScriptTransfer(aE, dt, ec)]
844861 else nil
845- $Tuple2(((cP ++ fg) ++ eZ), dn)
862+ $Tuple2(((cP ++ fh) ++ fa), dn)
846863 }
847864 else throw("Strict value is not equal to itself.")
848865 }
853870
854871 @Callable(df)
855872 func getOneTknREADONLY (ec,dK) = {
856- let fh = eb(aK(ec), dK, aT, unit, unit)
857- let fe = fh._1
858- let cP = fh._2
859- let dt = fh._3
860- let eW = fh._4
861- $Tuple2(nil, $Tuple3(fe, dt, eW))
873+ let fi = eb(aK(ec), dK, aT, unit, unit)
874+ let ff = fi._1
875+ let cP = fi._2
876+ let dt = fi._3
877+ let eX = fi._4
878+ $Tuple2(nil, $Tuple3(ff, dt, eX))
862879 }
863880
864881
865882
866883 @Callable(df)
867-func unstakeAndGetOneTkn (fi,fb,eO) = {
868- let eQ = {
869- let eR = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
870- if ($isInstanceOf(eR, "Boolean"))
871- then eR
872- else throw(($getType(eR) + " couldn't be cast to Boolean"))
884+func unstakeAndGetOneTkn (fj,fc,eP) = {
885+ let eR = {
886+ let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
887+ if ($isInstanceOf(eS, "Boolean"))
888+ then eS
889+ else throw(($getType(eS) + " couldn't be cast to Boolean"))
873890 }
874- let fc = if (if (aF())
891+ let fd = if (if (aF())
875892 then true
876893 else (aS == n))
877894 then true
878- else eQ
879- let ed = [if (!(fc))
895+ else eR
896+ let ed = [if (if (!(fd))
897+ then true
898+ else ex(df))
880899 then true
881900 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
882901 then true
883902 else aB("no payments are expected")]
884903 if ((ed == ed))
885904 then {
886- let ec = aK(fb)
905+ let ec = aK(fc)
887906 let X = df.caller
888907 let Y = df.transactionId
889- let fj = invoke(aZ, "unstake", [toBase58String(aT), fi], nil)
890- if ((fj == fj))
908+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
909+ if ((fk == fk))
891910 then {
892- let fk = eb(ec, fi, aT, X, Y)
893- let fe = fk._1
894- let cP = fk._2
895- let dt = fk._3
896- let eW = fk._4
897- let dn = if (if ((eO > 0))
898- then (eO > fe)
911+ let fl = eb(ec, fj, aT, X, Y)
912+ let ff = fl._1
913+ let cP = fl._2
914+ let dt = fl._3
915+ let eX = fl._4
916+ let dn = if (if ((eP > 0))
917+ then (eP > ff)
899918 else false)
900- then aB(makeString(["amount to receive is less than ", toString(eO)], ""))
901- else fe
902- let ff = invoke(aD, "burn", [fi], [AttachedPayment(aT, fi)])
903- if ((ff == ff))
919+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
920+ else ff
921+ let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
922+ if ((fg == fg))
904923 then {
905- let fg = [ScriptTransfer(df.caller, dn, ec)]
906- let eZ = if ((dt > 0))
924+ let fh = [ScriptTransfer(df.caller, dn, ec)]
925+ let fa = if ((dt > 0))
907926 then [ScriptTransfer(aE, dt, ec)]
908927 else nil
909- $Tuple2(((cP ++ fg) ++ eZ), dn)
928+ $Tuple2(((cP ++ fh) ++ fa), dn)
910929 }
911930 else throw("Strict value is not equal to itself.")
912931 }
920939 @Callable(df)
921940 func get () = {
922941 let cA = de(df)
923- let fl = cA._1
942+ let fm = cA._1
924943 let ch = cA._2
925944 let dh = cA._3
926945 let bP = cA._4
927946 let ci = cA._5
928- let fm = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
929- if ((fm == fm))
947+ let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
948+ if ((fn == fn))
930949 then ci
931950 else throw("Strict value is not equal to itself.")
932951 }
934953
935954
936955 @Callable(df)
937-func getNoLess (fn,fo) = {
956+func getNoLess (fo,fp) = {
938957 let cA = de(df)
939958 let cg = cA._1
940959 let ch = cA._2
941960 let dh = cA._3
942961 let bP = cA._4
943962 let ci = cA._5
944- if ((fn > cg))
945- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fn)))
946- else if ((fo > ch))
947- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fo)))
963+ if ((fo > cg))
964+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
965+ else if ((fp > ch))
966+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
948967 else {
949- let fm = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
950- if ((fm == fm))
968+ let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
969+ if ((fn == fn))
951970 then ci
952971 else throw("Strict value is not equal to itself.")
953972 }
957976
958977 @Callable(df)
959978 func unstakeAndGet (dn) = {
960- let fp = if ((size(df.payments) != 0))
979+ let fq = if ((size(df.payments) != 0))
961980 then throw("No payments are expected")
962981 else true
963- if ((fp == fp))
982+ if ((fq == fq))
964983 then {
965984 let bE = aH()
966985 let bR = fromBase58String(bE[q])
967- let fj = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
968- if ((fj == fj))
986+ let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
987+ if ((fk == fk))
969988 then {
970989 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
971990 let bU = parseIntValue(cA._9)
972991 let ci = cA._10
973- let fq = if (if (aF())
992+ let fr = if (if (aF())
974993 then true
975994 else (bU == n))
976995 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
977996 else true
978- if ((fq == fq))
997+ if ((fr == fr))
979998 then {
980- let fm = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
981- if ((fm == fm))
999+ let fn = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
1000+ if ((fn == fn))
9821001 then ci
9831002 else throw("Strict value is not equal to itself.")
9841003 }
9921011
9931012
9941013 @Callable(df)
995-func unstakeAndGetNoLess (fi,fr,fo) = {
996- let fc = if (aF())
1014+func unstakeAndGetNoLess (fj,fs,fp) = {
1015+ let fd = if (aF())
9971016 then true
9981017 else (aS == n)
999- let ed = [if (!(fc))
1018+ let ed = [if (!(fd))
10001019 then true
10011020 else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10021021 then true
10031022 else throw("no payments are expected")]
10041023 if ((ed == ed))
10051024 then {
1006- let fj = invoke(aZ, "unstake", [toBase58String(aT), fi], nil)
1007- if ((fj == fj))
1025+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1026+ if ((fk == fk))
10081027 then {
1009- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fi, df.caller)
1028+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
10101029 let cg = cA._1
10111030 let ch = cA._2
10121031 let ci = cA._10
1013- let fs = [if ((cg >= fr))
1032+ let ft = [if ((cg >= fs))
10141033 then true
1015- else throw(makeString(["amount asset amount to receive is less than ", toString(fr)], "")), if ((ch >= fo))
1034+ else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
10161035 then true
1017- else throw(makeString(["price asset amount to receive is less than ", toString(fo)], ""))]
1018- if ((fs == fs))
1036+ else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1037+ if ((ft == ft))
10191038 then {
1020- let fm = invoke(aD, "burn", [fi], [AttachedPayment(aT, fi)])
1021- if ((fm == fm))
1039+ let fn = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
1040+ if ((fn == fn))
10221041 then ci
10231042 else throw("Strict value is not equal to itself.")
10241043 }
10321051
10331052
10341053 @Callable(df)
1035-func activate (ft,fu) = if ((toString(df.caller) != toString(aD)))
1054+func activate (fu,fv) = if ((toString(df.caller) != toString(aD)))
10361055 then throw("permissions denied")
1037- else $Tuple2([StringEntry(aa(), ft), StringEntry(ab(), fu)], "success")
1056+ else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
10381057
10391058
10401059
10941113 let cu = bE[w]
10951114 let bF = parseIntValue(bE[t])
10961115 let bG = parseIntValue(bE[u])
1097- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1116+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10981117 let cU = bq(cS)
10991118 let cV = bq(cT)
1100- let fw = if ((fv == 0))
1119+ let fx = if ((fw == 0))
11011120 then [e, e, e]
1102- else bC(cU, cV, fv)
1121+ else bC(cU, cV, fw)
11031122 let cb = 0
1104- let fx = G(fw[1], b)
1105- let fy = G(fw[2], b)
1106- let fz = value(getInteger(aD, ap(toString(this))))
1107- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fv), toString(cb), toString(fx), toString(fy), toString(fz)], j))
1123+ let fy = G(fx[1], b)
1124+ let fz = G(fx[2], b)
1125+ let fA = value(getInteger(aD, ap(toString(this))))
1126+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11081127 }
11091128
11101129
11201139 let bF = parseIntValue(bE[t])
11211140 let bG = parseIntValue(bE[u])
11221141 let bU = bE[p]
1123- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1142+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11241143 let cU = bq(cr)
11251144 let cV = bq(cs)
11261145 let bA = D(cU, bF)
11271146 let bB = D(cV, bG)
1128- let ca = if ((fv == 0))
1147+ let ca = if ((fw == 0))
11291148 then e
11301149 else bs(bB, bA)
11311150 let cx = D(cl, bF)
11331152 let cn = G(cy, bG)
11341153 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11351154 let cI = dl._1
1136- let fA = dl._3
1155+ let fB = dl._3
11371156 let bW = dl._4
11381157 let bY = dl._5
11391158 let bV = dl._6
11531172 let bF = parseIntValue(bE[t])
11541173 let bG = parseIntValue(bE[u])
11551174 let bU = bE[p]
1156- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1157- let fB = bq(cr)
1158- let fC = bq(cs)
1159- let fD = D(fB, bF)
1160- let fE = D(fC, bG)
1161- let ca = if ((fv == 0))
1175+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1176+ let fC = bq(cr)
1177+ let fD = bq(cs)
1178+ let fE = D(fC, bF)
1179+ let fF = D(fD, bG)
1180+ let ca = if ((fw == 0))
11621181 then e
1163- else bs(fE, fD)
1182+ else bs(fF, fE)
11641183 let cy = D(cn, bG)
11651184 let cx = fraction(cy, d, ca)
11661185 let cl = G(cx, bF)
11671186 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11681187 let cI = dl._1
1169- let fA = dl._3
1188+ let fB = dl._3
11701189 let bW = dl._4
11711190 let bY = dl._5
11721191 let bV = dl._6
11761195
11771196
11781197 @Callable(df)
1179-func evaluateGetREADONLY (fF,fG) = {
1180- let cA = bN("", fF, fG, this)
1198+func evaluateGetREADONLY (fG,fH) = {
1199+ let cA = bN("", fG, fH, this)
11811200 let cg = cA._1
11821201 let ch = cA._2
11831202 let bW = cA._5
11891208 }
11901209
11911210
1192-@Verifier(fH)
1193-func fI () = {
1194- let fJ = {
1211+@Verifier(fI)
1212+func fJ () = {
1213+ let fK = {
11951214 let dq = eu()
11961215 if ($isInstanceOf(dq, "ByteVector"))
11971216 then {
1198- let ez = dq
1199- ez
1217+ let ey = dq
1218+ ey
12001219 }
12011220 else if ($isInstanceOf(dq, "Unit"))
1202- then fH.senderPublicKey
1221+ then fI.senderPublicKey
12031222 else throw("Match error")
12041223 }
1205- let dq = fH
1224+ let dq = fI
12061225 if ($isInstanceOf(dq, "Order"))
12071226 then {
12081227 let cR = dq
1209- let fK = aG()
1228+ let fL = aG()
12101229 let au = cQ(cR)
12111230 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1212- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fK)
1231+ let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
12131232 if (if (if (au)
12141233 then av
12151234 else false)
12211240 else if ($isInstanceOf(dq, "SetScriptTransaction"))
12221241 then {
12231242 let ev = dq
1224- let fL = blake2b256(value(ev.script))
1225- let fM = fromBase64String(value(getString(aD, ar())))
1226- let fN = scriptHash(this)
1227- if (if ((fM == fL))
1228- then (fN != fL)
1243+ let fM = blake2b256(value(ev.script))
1244+ let fN = fromBase64String(value(getString(aD, ar())))
1245+ let fO = scriptHash(this)
1246+ if (if ((fN == fM))
1247+ then (fO != fM)
12291248 else false)
12301249 then true
1231- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1250+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12321251 }
1233- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1252+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12341253 }
12351254
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = toBigInt(100000000)
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = toBigInt(0)
1313
1414 let f = toBigInt(0)
1515
1616 let g = toBigInt(1)
1717
1818 let h = toBigInt(2)
1919
2020 let i = "WAVES"
2121
2222 let j = "__"
2323
2424 let k = 1
2525
2626 let l = 2
2727
2828 let m = 3
2929
3030 let n = 4
3131
3232 let o = 1
3333
3434 let p = 2
3535
3636 let q = 3
3737
3838 let r = 4
3939
4040 let s = 5
4141
4242 let t = 6
4343
4444 let u = 7
4545
4646 let v = 8
4747
4848 let w = 9
4949
5050 let x = 10
5151
5252 let y = 1
5353
5454 let z = 2
5555
5656 let A = 3
5757
5858 let B = 1
5959
6060 let C = 7
6161
6262 func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
6363
6464
6565 func G (H,I) = toInt(fraction(H, toBigInt(I), d))
6666
6767
6868 func J (K,L,M) = fraction(K, L, M)
6969
7070
7171 func N (H) = if ((0 > H))
7272 then -(H)
7373 else H
7474
7575
7676 func O (H) = if ((e > H))
7777 then -(H)
7878 else H
7979
8080
8181 func P () = "%s__factoryContract"
8282
8383
8484 func Q () = "%s__managerPublicKey"
8585
8686
8787 func R () = "%s__pendingManagerPublicKey"
8888
8989
9090 func S () = "%s%s__price__last"
9191
9292
9393 func T (U,V) = makeString(["%s%s%d%d__price__history", toString(U), toString(V)], j)
9494
9595
9696 func W (X,Y) = ((("%s%s%s__P__" + X) + "__") + Y)
9797
9898
9999 func Z (X,Y) = ((("%s%s%s__G__" + X) + "__") + Y)
100100
101101
102102 func aa () = "%s__amountAsset"
103103
104104
105105 func ab () = "%s__priceAsset"
106106
107107
108108 let ac = "%s__fee"
109109
110110 let ad = fraction(10, b, 10000)
111111
112112 let ae = valueOrElse(getInteger(this, ac), ad)
113113
114114 func af () = "%s__factoryConfig"
115115
116116
117117 func ag () = "%s%s__matcher__publicKey"
118118
119119
120120 func ah (ai) = (("%s%s%s__" + ai) + "__mappings__poolContract2LpAsset")
121121
122122
123123 func aj (ak,al) = (((("%d%d%s__" + ak) + "__") + al) + "__config")
124124
125125
126126 func am (an) = ("%s%s%s__mappings__baseAsset2internalId__" + an)
127127
128128
129129 func ao () = "%s__shutdown"
130130
131131
132132 func ap (aq) = ("%s%s__poolWeight__" + aq)
133133
134134
135135 func ar () = "%s__allowedLpScriptHash"
136136
137137
138138 let as = "%s__feeCollectorAddress"
139139
140140 func at (au,av,aw) = throw(((((("order validation failed: orderValid=" + toString(au)) + " senderValid=") + toString(av)) + " matcherValid=") + toString(aw)))
141141
142142
143143 func ax (ay,az) = valueOrErrorMessage(getString(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
144144
145145
146146 func aA (ay,az) = valueOrErrorMessage(getInteger(ay, az), makeString(["mandatory ", toString(ay), ".", az, " is not defined"], ""))
147147
148148
149149 func aB (aC) = throw(makeString(["lp.ride:", aC], " "))
150150
151151
152152 let aD = addressFromStringValue(ax(this, P()))
153153
154154 let aE = addressFromStringValue(ax(aD, as))
155155
156156 func aF () = valueOrElse(getBoolean(aD, ao()), false)
157157
158158
159159 func aG () = fromBase58String(ax(aD, ag()))
160160
161161
162162 func aH () = {
163163 let aI = ax(this, aa())
164164 let aJ = ax(this, ab())
165165 let al = aA(aD, am(aJ))
166166 let ak = aA(aD, am(aI))
167167 split(ax(aD, aj(toString(ak), toString(al))), j)
168168 }
169169
170170
171171 func aK (aL) = if ((aL == i))
172172 then unit
173173 else fromBase58String(aL)
174174
175175
176176 func aM (aL) = if ((aL == unit))
177177 then i
178178 else toBase58String(value(aL))
179179
180180
181181 func aN (aO) = $Tuple7(addressFromStringValue(aO[o]), parseIntValue(aO[p]), fromBase58String(aO[q]), aK(aO[r]), aK(aO[s]), parseIntValue(aO[t]), parseIntValue(aO[u]))
182182
183183
184184 let aP = aN(aH())
185185
186186 let aQ = aP
187187
188188 let aR = aQ._1
189189
190190 let aS = aQ._2
191191
192192 let aT = aQ._3
193193
194194 let aU = aQ._4
195195
196196 let aV = aQ._5
197197
198198 let aW = aQ._6
199199
200200 let aX = aQ._7
201201
202202 func aY () = split(ax(aD, af()), j)
203203
204204
205205 let aZ = valueOrErrorMessage(addressFromString(aY()[B]), "incorrect staking address")
206206
207207 let ba = valueOrErrorMessage(addressFromString(aY()[C]), "incorrect staking address")
208208
209209 func bb (bc,bd,be,bf,bg,bh,bi,bj,bk,bl) = makeString(["%d%d%d%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(bf), toString(bg), toString(bh), toString(bi), toString(bj), toString(bk), toString(bl)], j)
210210
211211
212212 func bm (bn,bo,bp,bf,bi,bj) = makeString(["%d%d%d%d%d%d", toString(bn), toString(bo), toString(bp), toString(bf), toString(bi), toString(bj)], j)
213213
214214
215215 func bq (br) = if ((br == "WAVES"))
216216 then wavesBalance(this).available
217217 else assetBalance(this, fromBase58String(br))
218218
219219
220220 func bs (bt,bu) = fraction(bt, d, bu)
221221
222222
223223 func bv (bw,bx,by,bz) = {
224224 let bA = D(by, bw)
225225 let bB = D(bz, bx)
226226 bs(bB, bA)
227227 }
228228
229229
230230 func bC (by,bz,bD) = {
231231 let bE = aH()
232232 let bF = parseIntValue(bE[t])
233233 let bG = parseIntValue(bE[u])
234234 let bH = bv(bF, bG, by, bz)
235235 let bu = D(by, bF)
236236 let bt = D(bz, bG)
237237 let bI = D(bD, b)
238238 let bJ = bs(bu, bI)
239239 let bK = bs(bt, bI)
240240 [bH, bJ, bK]
241241 }
242242
243243
244244 func bL (by,bz,bD) = {
245245 let bM = bC(by, bz, bD)
246246 [G(bM[0], b), G(bM[1], b), G(bM[2], b)]
247247 }
248248
249249
250250 func bN (bO,bP,bQ,X) = {
251251 let bE = aH()
252252 let bR = bE[q]
253253 let bS = bE[r]
254254 let bT = bE[s]
255255 let bw = parseIntValue(bE[t])
256256 let bx = parseIntValue(bE[u])
257257 let bU = bE[p]
258258 let bV = valueOrErrorMessage(assetInfo(fromBase58String(bR)), (("Asset " + bR) + " doesn't exist")).quantity
259259 if ((bR != bP))
260260 then throw("Invalid asset passed.")
261261 else {
262262 let bW = bq(bS)
263263 let bX = D(bW, bw)
264264 let bY = bq(bT)
265265 let bZ = D(bY, bx)
266266 let ca = bs(bZ, bX)
267267 let cb = G(ca, b)
268268 let cc = D(bQ, b)
269269 let cd = D(bV, b)
270270 let ce = fraction(bX, cc, cd)
271271 let cf = fraction(bZ, cc, cd)
272272 let cg = G(ce, bw)
273273 let ch = G(cf, bx)
274274 let ci = if ((bO == ""))
275275 then nil
276276 else [ScriptTransfer(X, cg, if ((bS == "WAVES"))
277277 then unit
278278 else fromBase58String(bS)), ScriptTransfer(X, ch, if ((bT == "WAVES"))
279279 then unit
280280 else fromBase58String(bT)), StringEntry(Z(toString(X), bO), bm(cg, ch, bQ, cb, height, lastBlock.timestamp)), IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb)]
281281 $Tuple10(cg, ch, bS, bT, bW, bY, bV, ca, bU, ci)
282282 }
283283 }
284284
285285
286286 func cj (bO,ck,cl,cm,cn,co,X,cp,cq) = {
287287 let bE = aH()
288288 let bR = fromBase58String(bE[q])
289289 let cr = bE[r]
290290 let cs = bE[s]
291291 let ct = bE[v]
292292 let cu = bE[w]
293293 let bF = parseIntValue(bE[t])
294294 let bG = parseIntValue(bE[u])
295295 let bU = bE[p]
296296 let bV = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
297297 let cv = toBase58String(valueOrElse(cm, fromBase58String("WAVES")))
298298 let cw = toBase58String(valueOrElse(co, fromBase58String("WAVES")))
299299 if (if ((cr != cv))
300300 then true
301301 else (cs != cw))
302302 then throw("Invalid amt or price asset passed.")
303303 else {
304304 let bW = if (cp)
305305 then bq(cr)
306306 else (bq(cr) - cl)
307307 let bY = if (cp)
308308 then bq(cs)
309309 else (bq(cs) - cn)
310310 let cx = D(cl, bF)
311311 let cy = D(cn, bG)
312312 let cz = bs(cy, cx)
313313 let bX = D(bW, bF)
314314 let bZ = D(bY, bG)
315315 let cA = if ((bV == 0))
316316 then {
317317 let ca = e
318318 let cB = e
319319 let bI = pow((cx * cy), 0, toBigInt(5), 1, 0, DOWN)
320320 $Tuple5(G(bI, b), G(cx, bF), G(cy, bG), bs((bZ + cy), (bX + cx)), cB)
321321 }
322322 else {
323323 let ca = bs(bZ, bX)
324324 let cB = fraction(O((ca - cz)), d, ca)
325325 let cC = D(ck, b)
326326 if (if ((ca != e))
327327 then (cB > cC)
328328 else false)
329329 then throw(((("Price slippage " + toString(cB)) + " exceeded the passed limit of ") + toString(cC)))
330330 else {
331331 let cd = D(bV, b)
332332 let cD = fraction(cx, ca, d)
333333 let cE = fraction(cy, d, ca)
334334 let cF = if ((cD > cy))
335335 then $Tuple2(cE, cy)
336336 else $Tuple2(cx, cD)
337337 let cG = cF._1
338338 let cH = cF._2
339339 let bI = fraction(cd, cH, bZ)
340340 $Tuple5(G(bI, b), G(cG, bF), G(cH, bG), ca, cB)
341341 }
342342 }
343343 let cI = cA._1
344344 let cJ = cA._2
345345 let cK = cA._3
346346 let cb = G(cA._4, b)
347347 let cL = G(cA._5, b)
348348 if ((0 >= cI))
349349 then throw("Invalid calculations. LP calculated is less than zero.")
350350 else {
351351 let cM = if (!(cq))
352352 then 0
353353 else cI
354354 let cN = (cl - cJ)
355355 let cO = (cn - cK)
356356 let cP = [IntegerEntry(S(), cb), IntegerEntry(T(height, lastBlock.timestamp), cb), StringEntry(W(X, bO), bb(cJ, cK, cM, cb, ck, cL, height, lastBlock.timestamp, cN, cO))]
357357 $Tuple13(cI, cM, cb, bW, bY, bV, bR, bU, cP, cN, cO, cm, co)
358358 }
359359 }
360360 }
361361
362362
363363 func cQ (cR) = {
364364 let bE = aH()
365365 let cS = bE[r]
366366 let cT = bE[s]
367367 let bU = parseIntValue(bE[p])
368368 let bF = parseIntValue(bE[t])
369369 let bG = parseIntValue(bE[u])
370370 let cU = bq(cS)
371371 let cV = bq(cT)
372372 let ca = if ((cR.orderType == Buy))
373373 then bv(bF, bG, (cU + cR.amount), cV)
374374 else bv(bF, bG, (cU - cR.amount), cV)
375375 let cb = G(ca, b)
376376 if (if (if (aF())
377377 then true
378378 else (bU == m))
379379 then true
380380 else (bU == n))
381381 then throw("Exchange operations disabled")
382382 else {
383383 let cW = cR.assetPair.amountAsset
384384 let cX = if ((cW == unit))
385385 then "WAVES"
386386 else toBase58String(value(cW))
387387 let cY = cR.assetPair.priceAsset
388388 let cZ = if ((cY == unit))
389389 then "WAVES"
390390 else toBase58String(value(cY))
391391 if (if ((cX != cS))
392392 then true
393393 else (cZ != cT))
394394 then throw("Wrong order assets.")
395395 else {
396396 let da = cR.price
397397 let db = fraction(b, bG, bF)
398398 let dc = J(da, b, db)
399399 let dd = if ((cR.orderType == Buy))
400400 then (cb >= dc)
401401 else (dc >= cb)
402402 true
403403 }
404404 }
405405 }
406406
407407
408408 func de (df) = if ((size(df.payments) != 1))
409409 then throw("exactly 1 payment is expected")
410410 else {
411411 let dg = value(df.payments[0])
412412 let bP = value(dg.assetId)
413413 let dh = dg.amount
414414 let cA = bN(toBase58String(df.transactionId), toBase58String(bP), dh, df.caller)
415415 let cg = cA._1
416416 let ch = cA._2
417417 let bU = parseIntValue(cA._9)
418418 let ci = cA._10
419419 if (if (aF())
420420 then true
421421 else (bU == n))
422422 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
423423 else $Tuple5(cg, ch, dh, bP, ci)
424424 }
425425
426426
427427 func di (df,ck,cq) = if ((size(df.payments) != 2))
428428 then throw("exactly 2 payments are expected")
429429 else {
430430 let dj = value(df.payments[0])
431431 let dk = value(df.payments[1])
432432 let dl = cj(toBase58String(df.transactionId), ck, dj.amount, dj.assetId, dk.amount, dk.assetId, toString(df.caller), false, cq)
433433 let bU = parseIntValue(dl._8)
434434 if (if (if (aF())
435435 then true
436436 else (bU == l))
437437 then true
438438 else (bU == n))
439439 then throw(("Put operation is blocked by admin. Status = " + toString(bU)))
440440 else dl
441441 }
442442
443443
444444 func dm (dn) = {
445445 let do = invoke(aD, "emit", [dn], nil)
446446 if ((do == do))
447447 then {
448448 let dp = {
449449 let dq = do
450450 if ($isInstanceOf(dq, "Address"))
451451 then {
452452 let dr = dq
453453 invoke(dr, "emit", [dn], nil)
454454 }
455455 else unit
456456 }
457457 if ((dp == dp))
458458 then dn
459459 else throw("Strict value is not equal to itself.")
460460 }
461461 else throw("Strict value is not equal to itself.")
462462 }
463463
464464
465465 func ds (dn) = {
466466 let dt = fraction(dn, ae, b)
467467 $Tuple2((dn - dt), dt)
468468 }
469469
470470
471471 func du (dv,dw,X,Y) = {
472472 let dx = (Y == unit)
473473 let dy = bq(aM(aU))
474474 let dz = bq(aM(aV))
475475 let dA = if ((dw == aU))
476476 then true
477477 else if ((dw == aV))
478478 then false
479479 else aB("invalid asset")
480480 let dB = if (dx)
481481 then $Tuple2(dy, dz)
482482 else if (dA)
483483 then $Tuple2((dy - dv), dz)
484484 else $Tuple2(dy, (dz - dv))
485485 let dC = dB._1
486486 let dD = dB._2
487487 let dE = if (dA)
488488 then $Tuple2(dv, 0)
489489 else $Tuple2(0, dv)
490490 let dF = dE._1
491491 let dG = dE._2
492492 let dH = ds(dF)._1
493493 let dI = ds(dG)._1
494494 let dJ = ds(dv)
495495 let dK = dJ._1
496496 let dt = dJ._2
497497 let dL = (dC + dH)
498498 let dM = (dD + dI)
499499 let dN = bs(D(dM, aX), D(dL, aW))
500500 let dO = G(dN, b)
501501 let dP = if (dA)
502502 then dC
503503 else dD
504504 let dQ = toBigInt(dP)
505505 let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
506506 let dS = if ((dR > f))
507507 then true
508508 else aB("initial deposit requires all coins")
509509 if ((dS == dS))
510510 then {
511511 let dT = toBigInt(dK)
512512 let dU = max([0, toInt(((dR * (sqrtBigInt((d + ((dT * d) / dQ)), 18, 18, DOWN) - d)) / d))])
513513 let cP = if (dx)
514514 then nil
515515 else [IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO), StringEntry(W(toString(value(X)), toBase58String(value(Y))), bb(dF, dG, dU, dO, 0, 0, height, lastBlock.timestamp, 0, 0))]
516516 let dV = bs(D(dD, aX), D(dC, aW))
517517 let dW = G(dV, b)
518518 let dX = {
519519 let dY = if (dA)
520520 then $Tuple2(dF, dC)
521521 else $Tuple2(dG, dD)
522522 let dn = dY._1
523523 let dZ = dY._2
524524 let ea = toInt(fraction(dR, toBigInt((dn / 2)), toBigInt(dZ)))
525525 fraction((dU - ea), b, ea)
526526 }
527527 $Tuple4(dU, cP, dt, dX)
528528 }
529529 else throw("Strict value is not equal to itself.")
530530 }
531531
532532
533533 func eb (ec,dK,dw,X,Y) = {
534534 let dx = (Y == unit)
535535 let ed = [if ((dw == aT))
536536 then true
537537 else aB("invalid lp asset")]
538538 if ((ed == ed))
539539 then {
540540 let ee = if ((ec == aU))
541541 then true
542542 else if ((ec == aV))
543543 then false
544544 else aB("invalid asset")
545545 let ef = if (ee)
546546 then toBigInt(bq(aM(aU)))
547547 else toBigInt(bq(aM(aV)))
548548 let eg = bq(aM(aU))
549549 let eh = bq(aM(aV))
550550 let ei = if (ee)
551551 then eg
552552 else eh
553553 let ej = toBigInt(ei)
554554 let dR = toBigInt(valueOrErrorMessage(assetInfo(aT), (("asset " + toBase58String(aT)) + " doesn't exist")).quantity)
555555 let ek = toBigInt(dK)
556556 let el = max([0, toInt(((ef * (d - pow((d - ((ek * d) / dR)), 18, h, 0, 18, DOWN))) / d))])
557557 let em = ds(el)
558558 let en = em._1
559559 let dt = em._2
560560 let eo = if (ee)
561561 then $Tuple4(en, 0, (eg - el), eh)
562562 else $Tuple4(0, en, eg, (eh - el))
563563 let ep = eo._1
564564 let eq = eo._2
565565 let er = eo._3
566566 let es = eo._4
567567 let dN = bs(D(es, aX), D(er, aW))
568568 let dO = G(dN, b)
569569 let cP = if (dx)
570570 then nil
571571 else [StringEntry(Z(toString(value(X)), toBase58String(value(Y))), bm(ep, eq, dK, dO, height, lastBlock.timestamp)), IntegerEntry(S(), dO), IntegerEntry(T(height, lastBlock.timestamp), dO)]
572572 let dV = bs(D(eh, aX), D(eg, aW))
573573 let dW = G(dV, b)
574574 let dX = {
575575 let et = (toInt(fraction(ef, ek, dR)) * 2)
576576 fraction((en - et), b, et)
577577 }
578578 $Tuple4(en, cP, dt, dX)
579579 }
580580 else throw("Strict value is not equal to itself.")
581581 }
582582
583583
584584 func eu () = {
585585 let dq = getString(Q())
586586 if ($isInstanceOf(dq, "String"))
587587 then {
588588 let ev = dq
589589 fromBase58String(ev)
590590 }
591591 else if ($isInstanceOf(dq, "Unit"))
592592 then unit
593593 else throw("Match error")
594594 }
595595
596596
597597 func ew () = {
598598 let dq = getString(R())
599599 if ($isInstanceOf(dq, "String"))
600600 then {
601601 let ev = dq
602602 fromBase58String(ev)
603603 }
604604 else if ($isInstanceOf(dq, "Unit"))
605605 then unit
606606 else throw("Match error")
607607 }
608608
609609
610610 func ex (df) = {
611- let ey = throw("Permission denied")
612611 let dq = eu()
613612 if ($isInstanceOf(dq, "ByteVector"))
614613 then {
615- let ez = dq
616- if ((df.callerPublicKey == ez))
614+ let ey = dq
615+ (df.callerPublicKey == ey)
616+ }
617+ else if ($isInstanceOf(dq, "Unit"))
618+ then (df.caller == this)
619+ else throw("Match error")
620+ }
621+
622+
623+func ez (df) = {
624+ let eA = throw("Permission denied")
625+ let dq = eu()
626+ if ($isInstanceOf(dq, "ByteVector"))
627+ then {
628+ let ey = dq
629+ if ((df.callerPublicKey == ey))
617630 then true
618- else ey
631+ else eA
619632 }
620633 else if ($isInstanceOf(dq, "Unit"))
621634 then if ((df.caller == this))
622635 then true
623- else ey
636+ else eA
624637 else throw("Match error")
625638 }
626639
627640
628641 @Callable(df)
629-func setManager (eA) = {
630- let eB = ex(df)
631- if ((eB == eB))
642+func setManager (eB) = {
643+ let eC = ez(df)
644+ if ((eC == eC))
632645 then {
633- let eC = fromBase58String(eA)
634- if ((eC == eC))
635- then [StringEntry(R(), eA)]
646+ let eD = fromBase58String(eB)
647+ if ((eD == eD))
648+ then [StringEntry(R(), eB)]
636649 else throw("Strict value is not equal to itself.")
637650 }
638651 else throw("Strict value is not equal to itself.")
639652 }
640653
641654
642655
643656 @Callable(df)
644657 func confirmManager () = {
645- let eD = ew()
646- let eE = if (isDefined(eD))
658+ let eE = ew()
659+ let eF = if (isDefined(eE))
647660 then true
648661 else throw("No pending manager")
649- if ((eE == eE))
662+ if ((eF == eF))
650663 then {
651- let eF = if ((df.callerPublicKey == value(eD)))
664+ let eG = if ((df.callerPublicKey == value(eE)))
652665 then true
653666 else throw("You are not pending manager")
654- if ((eF == eF))
655- then [StringEntry(Q(), toBase58String(value(eD))), DeleteEntry(R())]
667+ if ((eG == eG))
668+ then [StringEntry(Q(), toBase58String(value(eE))), DeleteEntry(R())]
656669 else throw("Strict value is not equal to itself.")
657670 }
658671 else throw("Strict value is not equal to itself.")
659672 }
660673
661674
662675
663676 @Callable(df)
664-func put (ck,eG) = if ((0 > ck))
677+func put (ck,eH) = if ((0 > ck))
665678 then throw("Invalid slippageTolerance passed")
666679 else {
667680 let dl = di(df, ck, true)
668681 let cM = dl._2
669682 let bR = dl._7
670683 let ci = dl._9
671684 let cN = dl._10
672685 let cO = dl._11
673- let eH = dl._12
674- let eI = dl._13
686+ let eI = dl._12
687+ let eJ = dl._13
675688 let do = invoke(aD, "emit", [cM], nil)
676689 if ((do == do))
677690 then {
678691 let dp = {
679692 let dq = do
680693 if ($isInstanceOf(dq, "Address"))
681694 then {
682695 let dr = dq
683696 invoke(dr, "emit", [cM], nil)
684697 }
685698 else unit
686699 }
687700 if ((dp == dp))
688701 then {
689- let eJ = if ((cN > 0))
690- then invoke(ba, "put", nil, [AttachedPayment(eH, cN)])
702+ let eK = if ((cN > 0))
703+ then invoke(ba, "put", nil, [AttachedPayment(eI, cN)])
691704 else nil
692- if ((eJ == eJ))
705+ if ((eK == eK))
693706 then {
694- let eK = if ((cO > 0))
695- then invoke(ba, "put", nil, [AttachedPayment(eI, cO)])
707+ let eL = if ((cO > 0))
708+ then invoke(ba, "put", nil, [AttachedPayment(eJ, cO)])
696709 else nil
697- if ((eK == eK))
710+ if ((eL == eL))
698711 then {
699- let eL = if (eG)
712+ let eM = if (eH)
700713 then {
701- let eM = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
702- if ((eM == eM))
714+ let eN = invoke(aZ, "stake", nil, [AttachedPayment(bR, cM)])
715+ if ((eN == eN))
703716 then nil
704717 else throw("Strict value is not equal to itself.")
705718 }
706719 else [ScriptTransfer(df.caller, cM, bR)]
707- (ci ++ eL)
720+ (ci ++ eM)
708721 }
709722 else throw("Strict value is not equal to itself.")
710723 }
711724 else throw("Strict value is not equal to itself.")
712725 }
713726 else throw("Strict value is not equal to itself.")
714727 }
715728 else throw("Strict value is not equal to itself.")
716729 }
717730
718731
719732
720733 @Callable(df)
721-func putForFree (eN) = if ((0 > eN))
734+func putForFree (eO) = if ((0 > eO))
722735 then throw("Invalid value passed")
723736 else {
724- let dl = di(df, eN, false)
737+ let dl = di(df, eO, false)
725738 dl._9
726739 }
727740
728741
729742
730743 @Callable(df)
731-func putOneTkn (eO,eP) = {
732- let eQ = {
733- let eR = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
734- if ($isInstanceOf(eR, "Boolean"))
735- then eR
736- else throw(($getType(eR) + " couldn't be cast to Boolean"))
744+func putOneTkn (eP,eQ) = {
745+ let eR = {
746+ let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
747+ if ($isInstanceOf(eS, "Boolean"))
748+ then eS
749+ else throw(($getType(eS) + " couldn't be cast to Boolean"))
737750 }
738- let eS = if (if (if (aF())
751+ let eT = if (if (if (aF())
739752 then true
740753 else (aS == l))
741754 then true
742755 else (aS == n))
743756 then true
744- else eQ
745- let ed = [if (!(eS))
757+ else eR
758+ let ed = [if (if (!(eT))
759+ then true
760+ else ex(df))
746761 then true
747762 else aB("put operation is blocked by admin"), if ((size(df.payments) == 1))
748763 then true
749764 else aB("exactly 1 payment are expected")]
750765 if ((ed == ed))
751766 then {
752- let eT = df.payments[0]
753- let dw = eT.assetId
754- let dv = eT.amount
767+ let eU = df.payments[0]
768+ let dw = eU.assetId
769+ let dv = eU.amount
755770 let X = df.caller
756771 let Y = df.transactionId
757- let eU = du(dv, dw, X, Y)
758- let eV = eU._1
759- let cP = eU._2
760- let dt = eU._3
761- let eW = eU._4
762- let eX = if (if ((eO > 0))
763- then (eO > eV)
772+ let eV = du(dv, dw, X, Y)
773+ let eW = eV._1
774+ let cP = eV._2
775+ let dt = eV._3
776+ let eX = eV._4
777+ let eY = if (if ((eP > 0))
778+ then (eP > eW)
764779 else false)
765- then aB(makeString(["amount to receive is less than ", toString(eO)], ""))
766- else eV
767- let do = dm(eX)
780+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
781+ else eW
782+ let do = dm(eY)
768783 if ((do == do))
769784 then {
770- let eL = if (eP)
785+ let eM = if (eQ)
771786 then {
772- let eY = invoke(aZ, "stake", nil, [AttachedPayment(aT, eX)])
773- if ((eY == eY))
787+ let eZ = invoke(aZ, "stake", nil, [AttachedPayment(aT, eY)])
788+ if ((eZ == eZ))
774789 then nil
775790 else throw("Strict value is not equal to itself.")
776791 }
777- else [ScriptTransfer(df.caller, eX, aT)]
778- let eZ = if ((dt > 0))
792+ else [ScriptTransfer(df.caller, eY, aT)]
793+ let fa = if ((dt > 0))
779794 then [ScriptTransfer(aE, dt, dw)]
780795 else nil
781- $Tuple2(((cP ++ eL) ++ eZ), eX)
796+ $Tuple2(((cP ++ eM) ++ fa), eY)
782797 }
783798 else throw("Strict value is not equal to itself.")
784799 }
785800 else throw("Strict value is not equal to itself.")
786801 }
787802
788803
789804
790805 @Callable(df)
791806 func putOneTknREADONLY (dw,dv) = {
792- let fa = du(dv, aK(dw), unit, unit)
793- let eV = fa._1
794- let cP = fa._2
795- let dt = fa._3
796- let eW = fa._4
797- $Tuple2(nil, $Tuple3(eV, dt, eW))
807+ let fb = du(dv, aK(dw), unit, unit)
808+ let eW = fb._1
809+ let cP = fb._2
810+ let dt = fb._3
811+ let eX = fb._4
812+ $Tuple2(nil, $Tuple3(eW, dt, eX))
798813 }
799814
800815
801816
802817 @Callable(df)
803-func getOneTkn (fb,eO) = {
804- let eQ = {
805- let eR = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
806- if ($isInstanceOf(eR, "Boolean"))
807- then eR
808- else throw(($getType(eR) + " couldn't be cast to Boolean"))
818+func getOneTkn (fc,eP) = {
819+ let eR = {
820+ let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
821+ if ($isInstanceOf(eS, "Boolean"))
822+ then eS
823+ else throw(($getType(eS) + " couldn't be cast to Boolean"))
809824 }
810- let fc = if (if (aF())
825+ let fd = if (if (aF())
811826 then true
812827 else (aS == n))
813828 then true
814- else eQ
815- let ed = [if (!(fc))
829+ else eR
830+ let ed = [if (if (!(fd))
831+ then true
832+ else ex(df))
816833 then true
817834 else aB("get operation is blocked by admin"), if ((size(df.payments) == 1))
818835 then true
819836 else aB("exactly 1 payment are expected")]
820837 if ((ed == ed))
821838 then {
822- let ec = aK(fb)
823- let eT = df.payments[0]
824- let dw = eT.assetId
825- let dK = eT.amount
839+ let ec = aK(fc)
840+ let eU = df.payments[0]
841+ let dw = eU.assetId
842+ let dK = eU.amount
826843 let X = df.caller
827844 let Y = df.transactionId
828- let fd = eb(ec, dK, dw, X, Y)
829- let fe = fd._1
830- let cP = fd._2
831- let dt = fd._3
832- let eW = fd._4
833- let dn = if (if ((eO > 0))
834- then (eO > fe)
845+ let fe = eb(ec, dK, dw, X, Y)
846+ let ff = fe._1
847+ let cP = fe._2
848+ let dt = fe._3
849+ let eX = fe._4
850+ let dn = if (if ((eP > 0))
851+ then (eP > ff)
835852 else false)
836- then aB(makeString(["amount to receive is less than ", toString(eO)], ""))
837- else fe
838- let ff = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
839- if ((ff == ff))
853+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
854+ else ff
855+ let fg = invoke(aD, "burn", [dK], [AttachedPayment(dw, dK)])
856+ if ((fg == fg))
840857 then {
841- let fg = [ScriptTransfer(X, dn, ec)]
842- let eZ = if ((dt > 0))
858+ let fh = [ScriptTransfer(X, dn, ec)]
859+ let fa = if ((dt > 0))
843860 then [ScriptTransfer(aE, dt, ec)]
844861 else nil
845- $Tuple2(((cP ++ fg) ++ eZ), dn)
862+ $Tuple2(((cP ++ fh) ++ fa), dn)
846863 }
847864 else throw("Strict value is not equal to itself.")
848865 }
849866 else throw("Strict value is not equal to itself.")
850867 }
851868
852869
853870
854871 @Callable(df)
855872 func getOneTknREADONLY (ec,dK) = {
856- let fh = eb(aK(ec), dK, aT, unit, unit)
857- let fe = fh._1
858- let cP = fh._2
859- let dt = fh._3
860- let eW = fh._4
861- $Tuple2(nil, $Tuple3(fe, dt, eW))
873+ let fi = eb(aK(ec), dK, aT, unit, unit)
874+ let ff = fi._1
875+ let cP = fi._2
876+ let dt = fi._3
877+ let eX = fi._4
878+ $Tuple2(nil, $Tuple3(ff, dt, eX))
862879 }
863880
864881
865882
866883 @Callable(df)
867-func unstakeAndGetOneTkn (fi,fb,eO) = {
868- let eQ = {
869- let eR = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
870- if ($isInstanceOf(eR, "Boolean"))
871- then eR
872- else throw(($getType(eR) + " couldn't be cast to Boolean"))
884+func unstakeAndGetOneTkn (fj,fc,eP) = {
885+ let eR = {
886+ let eS = invoke(aD, "isPoolOneTokenOperationsDisabledREADONLY", [toString(this)], nil)
887+ if ($isInstanceOf(eS, "Boolean"))
888+ then eS
889+ else throw(($getType(eS) + " couldn't be cast to Boolean"))
873890 }
874- let fc = if (if (aF())
891+ let fd = if (if (aF())
875892 then true
876893 else (aS == n))
877894 then true
878- else eQ
879- let ed = [if (!(fc))
895+ else eR
896+ let ed = [if (if (!(fd))
897+ then true
898+ else ex(df))
880899 then true
881900 else aB("get operation is blocked by admin"), if ((size(df.payments) == 0))
882901 then true
883902 else aB("no payments are expected")]
884903 if ((ed == ed))
885904 then {
886- let ec = aK(fb)
905+ let ec = aK(fc)
887906 let X = df.caller
888907 let Y = df.transactionId
889- let fj = invoke(aZ, "unstake", [toBase58String(aT), fi], nil)
890- if ((fj == fj))
908+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
909+ if ((fk == fk))
891910 then {
892- let fk = eb(ec, fi, aT, X, Y)
893- let fe = fk._1
894- let cP = fk._2
895- let dt = fk._3
896- let eW = fk._4
897- let dn = if (if ((eO > 0))
898- then (eO > fe)
911+ let fl = eb(ec, fj, aT, X, Y)
912+ let ff = fl._1
913+ let cP = fl._2
914+ let dt = fl._3
915+ let eX = fl._4
916+ let dn = if (if ((eP > 0))
917+ then (eP > ff)
899918 else false)
900- then aB(makeString(["amount to receive is less than ", toString(eO)], ""))
901- else fe
902- let ff = invoke(aD, "burn", [fi], [AttachedPayment(aT, fi)])
903- if ((ff == ff))
919+ then aB(makeString(["amount to receive is less than ", toString(eP)], ""))
920+ else ff
921+ let fg = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
922+ if ((fg == fg))
904923 then {
905- let fg = [ScriptTransfer(df.caller, dn, ec)]
906- let eZ = if ((dt > 0))
924+ let fh = [ScriptTransfer(df.caller, dn, ec)]
925+ let fa = if ((dt > 0))
907926 then [ScriptTransfer(aE, dt, ec)]
908927 else nil
909- $Tuple2(((cP ++ fg) ++ eZ), dn)
928+ $Tuple2(((cP ++ fh) ++ fa), dn)
910929 }
911930 else throw("Strict value is not equal to itself.")
912931 }
913932 else throw("Strict value is not equal to itself.")
914933 }
915934 else throw("Strict value is not equal to itself.")
916935 }
917936
918937
919938
920939 @Callable(df)
921940 func get () = {
922941 let cA = de(df)
923- let fl = cA._1
942+ let fm = cA._1
924943 let ch = cA._2
925944 let dh = cA._3
926945 let bP = cA._4
927946 let ci = cA._5
928- let fm = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
929- if ((fm == fm))
947+ let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
948+ if ((fn == fn))
930949 then ci
931950 else throw("Strict value is not equal to itself.")
932951 }
933952
934953
935954
936955 @Callable(df)
937-func getNoLess (fn,fo) = {
956+func getNoLess (fo,fp) = {
938957 let cA = de(df)
939958 let cg = cA._1
940959 let ch = cA._2
941960 let dh = cA._3
942961 let bP = cA._4
943962 let ci = cA._5
944- if ((fn > cg))
945- then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fn)))
946- else if ((fo > ch))
947- then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fo)))
963+ if ((fo > cg))
964+ then throw(((("noLessThenAmtAsset failed: " + toString(cg)) + " < ") + toString(fo)))
965+ else if ((fp > ch))
966+ then throw(((("noLessThenPriceAsset failed: " + toString(ch)) + " < ") + toString(fp)))
948967 else {
949- let fm = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
950- if ((fm == fm))
968+ let fn = invoke(aD, "burn", [dh], [AttachedPayment(bP, dh)])
969+ if ((fn == fn))
951970 then ci
952971 else throw("Strict value is not equal to itself.")
953972 }
954973 }
955974
956975
957976
958977 @Callable(df)
959978 func unstakeAndGet (dn) = {
960- let fp = if ((size(df.payments) != 0))
979+ let fq = if ((size(df.payments) != 0))
961980 then throw("No payments are expected")
962981 else true
963- if ((fp == fp))
982+ if ((fq == fq))
964983 then {
965984 let bE = aH()
966985 let bR = fromBase58String(bE[q])
967- let fj = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
968- if ((fj == fj))
986+ let fk = invoke(aZ, "unstake", [toBase58String(bR), dn], nil)
987+ if ((fk == fk))
969988 then {
970989 let cA = bN(toBase58String(df.transactionId), toBase58String(bR), dn, df.caller)
971990 let bU = parseIntValue(cA._9)
972991 let ci = cA._10
973- let fq = if (if (aF())
992+ let fr = if (if (aF())
974993 then true
975994 else (bU == n))
976995 then throw(("Get operation is blocked by admin. Status = " + toString(bU)))
977996 else true
978- if ((fq == fq))
997+ if ((fr == fr))
979998 then {
980- let fm = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
981- if ((fm == fm))
999+ let fn = invoke(aD, "burn", [dn], [AttachedPayment(bR, dn)])
1000+ if ((fn == fn))
9821001 then ci
9831002 else throw("Strict value is not equal to itself.")
9841003 }
9851004 else throw("Strict value is not equal to itself.")
9861005 }
9871006 else throw("Strict value is not equal to itself.")
9881007 }
9891008 else throw("Strict value is not equal to itself.")
9901009 }
9911010
9921011
9931012
9941013 @Callable(df)
995-func unstakeAndGetNoLess (fi,fr,fo) = {
996- let fc = if (aF())
1014+func unstakeAndGetNoLess (fj,fs,fp) = {
1015+ let fd = if (aF())
9971016 then true
9981017 else (aS == n)
999- let ed = [if (!(fc))
1018+ let ed = [if (!(fd))
10001019 then true
10011020 else throw("get operation is blocked by admin"), if ((size(df.payments) == 0))
10021021 then true
10031022 else throw("no payments are expected")]
10041023 if ((ed == ed))
10051024 then {
1006- let fj = invoke(aZ, "unstake", [toBase58String(aT), fi], nil)
1007- if ((fj == fj))
1025+ let fk = invoke(aZ, "unstake", [toBase58String(aT), fj], nil)
1026+ if ((fk == fk))
10081027 then {
1009- let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fi, df.caller)
1028+ let cA = bN(toBase58String(df.transactionId), toBase58String(aT), fj, df.caller)
10101029 let cg = cA._1
10111030 let ch = cA._2
10121031 let ci = cA._10
1013- let fs = [if ((cg >= fr))
1032+ let ft = [if ((cg >= fs))
10141033 then true
1015- else throw(makeString(["amount asset amount to receive is less than ", toString(fr)], "")), if ((ch >= fo))
1034+ else throw(makeString(["amount asset amount to receive is less than ", toString(fs)], "")), if ((ch >= fp))
10161035 then true
1017- else throw(makeString(["price asset amount to receive is less than ", toString(fo)], ""))]
1018- if ((fs == fs))
1036+ else throw(makeString(["price asset amount to receive is less than ", toString(fp)], ""))]
1037+ if ((ft == ft))
10191038 then {
1020- let fm = invoke(aD, "burn", [fi], [AttachedPayment(aT, fi)])
1021- if ((fm == fm))
1039+ let fn = invoke(aD, "burn", [fj], [AttachedPayment(aT, fj)])
1040+ if ((fn == fn))
10221041 then ci
10231042 else throw("Strict value is not equal to itself.")
10241043 }
10251044 else throw("Strict value is not equal to itself.")
10261045 }
10271046 else throw("Strict value is not equal to itself.")
10281047 }
10291048 else throw("Strict value is not equal to itself.")
10301049 }
10311050
10321051
10331052
10341053 @Callable(df)
1035-func activate (ft,fu) = if ((toString(df.caller) != toString(aD)))
1054+func activate (fu,fv) = if ((toString(df.caller) != toString(aD)))
10361055 then throw("permissions denied")
1037- else $Tuple2([StringEntry(aa(), ft), StringEntry(ab(), fu)], "success")
1056+ else $Tuple2([StringEntry(aa(), fu), StringEntry(ab(), fv)], "success")
10381057
10391058
10401059
10411060 @Callable(df)
10421061 func getPoolConfigWrapperREADONLY () = $Tuple2(nil, aH())
10431062
10441063
10451064
10461065 @Callable(df)
10471066 func getAccBalanceWrapperREADONLY (br) = $Tuple2(nil, bq(br))
10481067
10491068
10501069
10511070 @Callable(df)
10521071 func calcPricesWrapperREADONLY (by,bz,bD) = {
10531072 let bM = bC(by, bz, bD)
10541073 $Tuple2(nil, [toString(bM[0]), toString(bM[1]), toString(bM[2])])
10551074 }
10561075
10571076
10581077
10591078 @Callable(df)
10601079 func toX18WrapperREADONLY (E,F) = $Tuple2(nil, toString(D(E, F)))
10611080
10621081
10631082
10641083 @Callable(df)
10651084 func fromX18WrapperREADONLY (H,I) = $Tuple2(nil, G(parseBigIntValue(H), I))
10661085
10671086
10681087
10691088 @Callable(df)
10701089 func calcPriceBigIntWrapperREADONLY (bt,bu) = $Tuple2(nil, toString(bs(parseBigIntValue(bt), parseBigIntValue(bu))))
10711090
10721091
10731092
10741093 @Callable(df)
10751094 func estimatePutOperationWrapperREADONLY (bO,ck,cl,cm,cn,co,X,cp,cq) = $Tuple2(nil, cj(bO, ck, cl, cm, cn, co, X, cp, cq))
10761095
10771096
10781097
10791098 @Callable(df)
10801099 func estimateGetOperationWrapperREADONLY (bO,bP,bQ,X) = {
10811100 let cA = bN(bO, bP, bQ, addressFromStringValue(X))
10821101 $Tuple2(nil, $Tuple10(cA._1, cA._2, cA._3, cA._4, cA._5, cA._6, cA._7, toString(cA._8), cA._9, cA._10))
10831102 }
10841103
10851104
10861105
10871106 @Callable(df)
10881107 func statsREADONLY () = {
10891108 let bE = aH()
10901109 let bR = fromBase58String(bE[q])
10911110 let cS = bE[r]
10921111 let cT = bE[s]
10931112 let ct = bE[v]
10941113 let cu = bE[w]
10951114 let bF = parseIntValue(bE[t])
10961115 let bG = parseIntValue(bE[u])
1097- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1116+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
10981117 let cU = bq(cS)
10991118 let cV = bq(cT)
1100- let fw = if ((fv == 0))
1119+ let fx = if ((fw == 0))
11011120 then [e, e, e]
1102- else bC(cU, cV, fv)
1121+ else bC(cU, cV, fw)
11031122 let cb = 0
1104- let fx = G(fw[1], b)
1105- let fy = G(fw[2], b)
1106- let fz = value(getInteger(aD, ap(toString(this))))
1107- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fv), toString(cb), toString(fx), toString(fy), toString(fz)], j))
1123+ let fy = G(fx[1], b)
1124+ let fz = G(fx[2], b)
1125+ let fA = value(getInteger(aD, ap(toString(this))))
1126+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cU), toString(cV), toString(fw), toString(cb), toString(fy), toString(fz), toString(fA)], j))
11081127 }
11091128
11101129
11111130
11121131 @Callable(df)
11131132 func evaluatePutByAmountAssetREADONLY (cl) = {
11141133 let bE = aH()
11151134 let bR = fromBase58String(bE[q])
11161135 let cr = bE[r]
11171136 let bS = fromBase58String(cr)
11181137 let cs = bE[s]
11191138 let bT = fromBase58String(cs)
11201139 let bF = parseIntValue(bE[t])
11211140 let bG = parseIntValue(bE[u])
11221141 let bU = bE[p]
1123- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1142+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
11241143 let cU = bq(cr)
11251144 let cV = bq(cs)
11261145 let bA = D(cU, bF)
11271146 let bB = D(cV, bG)
1128- let ca = if ((fv == 0))
1147+ let ca = if ((fw == 0))
11291148 then e
11301149 else bs(bB, bA)
11311150 let cx = D(cl, bF)
11321151 let cy = fraction(cx, ca, d)
11331152 let cn = G(cy, bG)
11341153 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11351154 let cI = dl._1
1136- let fA = dl._3
1155+ let fB = dl._3
11371156 let bW = dl._4
11381157 let bY = dl._5
11391158 let bV = dl._6
11401159 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
11411160 }
11421161
11431162
11441163
11451164 @Callable(df)
11461165 func evaluatePutByPriceAssetREADONLY (cn) = {
11471166 let bE = aH()
11481167 let bR = fromBase58String(bE[q])
11491168 let cr = bE[r]
11501169 let bS = fromBase58String(cr)
11511170 let cs = bE[s]
11521171 let bT = fromBase58String(cs)
11531172 let bF = parseIntValue(bE[t])
11541173 let bG = parseIntValue(bE[u])
11551174 let bU = bE[p]
1156- let fv = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1157- let fB = bq(cr)
1158- let fC = bq(cs)
1159- let fD = D(fB, bF)
1160- let fE = D(fC, bG)
1161- let ca = if ((fv == 0))
1175+ let fw = valueOrErrorMessage(assetInfo(bR), (("Asset " + toBase58String(bR)) + " doesn't exist")).quantity
1176+ let fC = bq(cr)
1177+ let fD = bq(cs)
1178+ let fE = D(fC, bF)
1179+ let fF = D(fD, bG)
1180+ let ca = if ((fw == 0))
11621181 then e
1163- else bs(fE, fD)
1182+ else bs(fF, fE)
11641183 let cy = D(cn, bG)
11651184 let cx = fraction(cy, d, ca)
11661185 let cl = G(cx, bF)
11671186 let dl = cj("", 500000, cl, bS, cn, bT, "", true, false)
11681187 let cI = dl._1
1169- let fA = dl._3
1188+ let fB = dl._3
11701189 let bW = dl._4
11711190 let bY = dl._5
11721191 let bV = dl._6
11731192 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(cI), toString(G(ca, b)), toString(bW), toString(bY), toString(bV), bU, toString(cl), toString(cn)], j))
11741193 }
11751194
11761195
11771196
11781197 @Callable(df)
1179-func evaluateGetREADONLY (fF,fG) = {
1180- let cA = bN("", fF, fG, this)
1198+func evaluateGetREADONLY (fG,fH) = {
1199+ let cA = bN("", fG, fH, this)
11811200 let cg = cA._1
11821201 let ch = cA._2
11831202 let bW = cA._5
11841203 let bY = cA._6
11851204 let bV = cA._7
11861205 let cb = cA._8
11871206 let bU = parseIntValue(cA._9)
11881207 $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(cg), toString(ch), toString(bW), toString(bY), toString(bV), toString(cb), toString(bU)], j))
11891208 }
11901209
11911210
1192-@Verifier(fH)
1193-func fI () = {
1194- let fJ = {
1211+@Verifier(fI)
1212+func fJ () = {
1213+ let fK = {
11951214 let dq = eu()
11961215 if ($isInstanceOf(dq, "ByteVector"))
11971216 then {
1198- let ez = dq
1199- ez
1217+ let ey = dq
1218+ ey
12001219 }
12011220 else if ($isInstanceOf(dq, "Unit"))
1202- then fH.senderPublicKey
1221+ then fI.senderPublicKey
12031222 else throw("Match error")
12041223 }
1205- let dq = fH
1224+ let dq = fI
12061225 if ($isInstanceOf(dq, "Order"))
12071226 then {
12081227 let cR = dq
1209- let fK = aG()
1228+ let fL = aG()
12101229 let au = cQ(cR)
12111230 let av = sigVerify(cR.bodyBytes, cR.proofs[0], cR.senderPublicKey)
1212- let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fK)
1231+ let aw = sigVerify(cR.bodyBytes, cR.proofs[1], fL)
12131232 if (if (if (au)
12141233 then av
12151234 else false)
12161235 then aw
12171236 else false)
12181237 then true
12191238 else at(au, av, aw)
12201239 }
12211240 else if ($isInstanceOf(dq, "SetScriptTransaction"))
12221241 then {
12231242 let ev = dq
1224- let fL = blake2b256(value(ev.script))
1225- let fM = fromBase64String(value(getString(aD, ar())))
1226- let fN = scriptHash(this)
1227- if (if ((fM == fL))
1228- then (fN != fL)
1243+ let fM = blake2b256(value(ev.script))
1244+ let fN = fromBase64String(value(getString(aD, ar())))
1245+ let fO = scriptHash(this)
1246+ if (if ((fN == fM))
1247+ then (fO != fM)
12291248 else false)
12301249 then true
1231- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1250+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12321251 }
1233- else sigVerify(fH.bodyBytes, fH.proofs[0], fJ)
1252+ else sigVerify(fI.bodyBytes, fI.proofs[0], fK)
12341253 }
12351254

github/deemru/w8io/169f3d6 
183.83 ms