tx · 46yv6uQ4T326oMZV2cvv4KdAjfKR9MQNGh3dZ7nGhYR7

3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE:  -0.02000000 Waves

2023.09.21 14:38 [2765087] smart account 3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE > SELF 0.00000000 Waves

{ "type": 13, "id": "46yv6uQ4T326oMZV2cvv4KdAjfKR9MQNGh3dZ7nGhYR7", "fee": 2000000, "feeAssetId": null, "timestamp": 1695296348342, "version": 2, "chainId": 84, "sender": "3Mp5kisFrqESzrXxAMEPk2k69zpeF41czEE", "senderPublicKey": "G349Uq3FTox7dRNLeAfAQeoACvwZ9iEnVSaHcEYn6j8J", "proofs": [ "4SJvetwzuhJQAYa9KkUi7E5d3hArYAgF5ZeytuZt91AswbnngwjqBjNAQnp5Z6etaPje5YVzX5AsSoyey3tGo5P2" ], "script": "base64:BgKMHQgCEgYKBAEYEQESBAoCCAESABIDCgEBEgASABIAEgMKAQgSAwoBCBIDCgEIEgUKAwEBARIFCgMBAQESABIDCgEIEgcKBQgICAgIEgQKAhgREgASAwoBCCIDU0VQIgVTQ0FMRSIFTVVMVDgiCnplcm9CaWdJbnQiFHByb2Nlc3NpbmdTdGFnZVRvdGFsIhVwcm9jZXNzaW5nU3RhZ2VTaGFyZXMiC3dhdmVzU3RyaW5nIg5nZXROdW1iZXJCeUtleSIDa2V5Ig9nZXROdW1iZXJPckZhaWwiDmdldFN0cmluZ0J5S2V5Ig9nZXRTdHJpbmdPckZhaWwiDHBhcnNlQXNzZXRJZCIFaW5wdXQiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiA2FicyIDdmFsIglhYnNCaWdJbnQiC2tleU1heERlcHRoIg9tYXhEZXB0aERlZmF1bHQiCG1heERlcHRoIhFrZXlGYWN0b3J5QWRkcmVzcyIRZmFjdG9yeUFkZHJlc3NTdHIiD2ZhY3RvcnlDb250cmFjdCISa2V5RW1pc3Npb25BZGRyZXNzIhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0IhNrZXlOdW1Ub1VzZXJNYXBwaW5nIgNudW0iFmtleVJlZmVycmFsUHJvZ3JhbU5hbWUiGnJlZmVycmFsUHJvZ3JhbU5hbWVEZWZhdWx0IhNyZWZlcnJhbFByb2dyYW1OYW1lIhdrZXlSZWZlcnJhbE1pbkdXeEFtb3VudCIbcmVmZXJyYWxNaW5HV3hBbW91bnREZWZhdWx0IhRyZWZlcnJhbE1pbkdXeEFtb3VudCIZa2V5UmVmZXJyZXJSZXdhcmRQZXJtaWxsZSIdcmVmZXJyZXJSZXdhcmRQZXJtaWxsZURlZmF1bHQiFnJlZmVycmVyUmV3YXJkUGVybWlsbGUiGWtleVJlZmVycmFsUmV3YXJkUGVybWlsbGUiHXJlZmVycmFsUmV3YXJkUGVybWlsbGVEZWZhdWx0IhZyZWZlcnJhbFJld2FyZFBlcm1pbGxlIgtrZXlSZWZlcnJlciIPcmVmZXJyYWxBZGRyZXNzIhRrZXlVbmNsYWltZWRSZWZlcnJhbCILcHJvZ3JhbU5hbWUiDmNsYWltZXJBZGRyZXNzIhJlbWlzc2lvbkFkZHJlc3NTdHIiEGVtaXNzaW9uQ29udHJhY3QiDUlkeENmZ0Fzc2V0SWQiFklkeENmZ1BhY2VtYWtlckFkZHJlc3MiFklkeENmZ0Jvb3N0aW5nQ29udHJhY3QiDklkeENmZ01heERlcHRoIglrZXlDb25maWciEmdldEVtaXNzaW9uQWRkcmVzcyIPZW1pc3Npb25BZGRyZXNzIgx3eEFzc2V0SWRTdHIiCXd4QXNzZXRJZCIVcmVhZENvbmZpZ0FycmF5T3JGYWlsIgxmb3JtYXRDb25maWciGm1hdGNoZXJQYWNlbWFrZXJBZGRyZXNzU3RyIhpib29zdGluZ0NvbnRyYWN0QWRkcmVzc1N0ciIWYm9vc3RpbmdDb250cmFjdE9yRmFpbCIIY2ZnQXJyYXkiH2tleUd3eFJld2FyZEVtaXNzaW9uU3RhcnRIZWlnaHQiDWtleVVzZXJzQ291bnQiFmtleVJhdGVQZXJCbG9ja0N1cnJlbnQiGmtleUd3eEhvbGRlcnNSZXdhcmRDdXJyZW50IhdrZXlHd3hIb2xkZXJzUmV3YXJkTmV4dCIUa2V5UG9vbFdlaWdodFZpcnR1YWwiFGtleU5leHRQcm9jZXNzZWRVc2VyIg9rZXlMYXRlc3RQZXJpb2QiDWtleU5leHRQZXJpb2QiEmtleVByb2Nlc3NpbmdTdGFnZSIWa2V5TmV4dFByb2Nlc3NlZFBlcmlvZCIQa2V5VXNlclVuY2xhaW1lZCIJdXNlckluZGV4IhtrZXlOZXh0VW5sYWltZWRQZXJpb2RPZlVzZXIiHGtleUxhc3RQcm9jZXNzZWRQZXJpb2RPZlVzZXIiEmtleUhlaWdodEZvclBlcmlvZCIGcGVyaW9kIh1rZXlBdXhFbWlzc2lvblJld2FyZEZvclBlcmlvZCIXa2V5VG90YWxBbW91bnRGb3JQZXJpb2QiEWtleUxhc3RQYXlvdXRJbmZvIhBQZXJpb2RQYXlvdXRJbmZvIg1tYXRjaGVyUmV3YXJkIg5lbWlzc2lvblJld2FyZCIUa2V5UGF5b3V0SGlzdG9yeUluZm8iF2tleVRvdGFsV2VpZ2h0Rm9yUGVyaW9kIhZrZXlVc2VyS1ZhbHVlRm9yUGVyaW9kIhZrZXlVc2VyQlZhbHVlRm9yUGVyaW9kIhZrZXlVc2VyV2VpZ2h0Rm9yUGVyaW9kIhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIXa2V5VHJhZGluZ1Jld2FyZEhpc3RvcnkiBHVzZXIiAWkiEGtleVRyYWRpbmdSZXdhcmQiC3VzZXJBZGRyZXNzIhBrZXlNYXhSZWNpcGllbnRzIgxIaXN0b3J5RW50cnkiBHR5cGUiBmFtb3VudCIKaGlzdG9yeUtFWSILaGlzdG9yeURBVEEiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMiByRtYXRjaDAiAXMiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiC211c3RNYW5hZ2VyIgJwZCICcGsiDmNhbGNVc2VyV2VpZ2h0Ihdib29zdGluZ0NvbnRyYWN0QWRkcmVzcyIPaGVpZ2h0Rm9yUGVyaW9kIgVrTGFzdCIEa0tleSIEa1JhdyILa1VzZXJXZWlnaHQiAWsiAWIiAXciAXAiAnB2IhZjYWxjVXNlcldlaWdodEZvckNsYWltIhB1c2VyV2VpZ2h0T3JVbml0IhVnZXRVc2VySW5kZXhCeUFkZHJlc3MiCm5leHRQZXJpb2QiEWNvbW1vbkNsYWltUmV3YXJkIgd1c2VySWR4IhN1c2VyVW5jbGFpbWVkT3B0aW9uIgF1IhBnZXRUcmFkaW5nUmV3YXJkIhVwYXltZW50QW1vdW50TGVmdE92ZXIiDXVzZXJBZGRyZXNzZXMiB3Jld2FyZHMiC2N1cnJlbnRJdGVyIgZjaGVja3MiE3RyYWRlUmV3YXJkSW50ZXJuYWwiF3RyYWRpbmdSZXdhcmRIaXN0b3J5S2V5Ig5nV3hBbW91bnRTdGFydCIIcmVmZXJyZXIiEWFjdGl2ZVJlZmVycmFsSW52Ig9wcm9jZXNzaW5nU3RhZ2UiDWN1cnJlbnRQZXJpb2QiC2N1cnJlbnRVc2VyIgxsYXRlc3RQZXJpb2QiCnVzZXJzQ291bnQiDnRvdGFsV2VpZ2h0S2V5Igt0b3RhbFdlaWdodCINJHQwMTQ1MTAxNDYyNiIKdXNlcldlaWdodCILdXNlckFjdGlvbnMiDnRvdGFsV2VpZ2h0TmV3IhFwcm9jZXNzaW5nQWN0aW9ucyIadXNlckFtb3VudE1hdGNoZXJGb3JQZXJpb2QiG3VzZXJBbW91bnRFbWlzc2lvbkZvclBlcmlvZCIPdXNlclRvdGFsQW1vdW50IgtyZWZlcnJhbEludiIOcmVmZXJyZXJSZXdhcmQiDnJlZmVycmFsUmV3YXJkIhB1bmNsYWltZWRBY3Rpb25zIgdjb3VudGVyIgZyZXN1bHQiAUAiC2NoZWNrQ2FsbGVyIgZkZWx0YUgiDGVtaXNzaW9uUmF0ZSIXZ3d4SG9sZGVyc1Jld2FyZEN1cnJlbnQiCWF1eEFtb3VudCICZW0iC21hdGNoZXJQYXJ0IgpwYXlvdXRJbmZvIhdnd3hIb2xkZXJzUmV3YXJkVXBkYXRlZCILdG90YWxSZXdhcmQiB2FjdGlvbnMiB2FkZHJlc3MiDSR0MDE5ODE1MTk4NjUiC2NoZWNrQW1vdW50IhJhbW91bnRGcm9tRW1pc3Npb24iD2NsYWltZWRSZWZlcnJhbCILdG90YWxBbW91bnQiDSR0MDIwNDM4MjA0ODgiEXJlZmVycmFsVW5jbGFpbWVkIg5nd3hBbW91bnRTdGFydCIPbG9ja1N0YXJ0SGVpZ2h0IhJsb2NrRHVyYXRpb25CbG9ja3MiDWxvY2tFbmRIZWlnaHQiDHNjYWxlOFBhcmFtSyIMc2NhbGU4UGFyYW1CIgx3eExvY2tBbW91bnQiDGxvY2tEdXJhdGlvbiIPbWF4TG9ja0R1cmF0aW9uIgdjb2VmZlg4Igt4MUJpZ0ludFN0ciILeDJCaWdJbnRTdHIiDGFtcEJpZ0ludFN0ciITYVByZWNpc2lvbkJpZ0ludFN0ciIYdGFyZ2V0UHJlY2lzaW9uQmlnSW50U3RyIgZuQ29pbnMiCmFQcmVjaXNpb24iD3RhcmdldFByZWNpc2lvbiICeDEiAngyIgNhbXAiA2FubiIDYXJyIgRjYWxjIgNhY2MiA2N1ciINJHQwMjMxMjEyMzE0OCIBZCIFZFByZXYiBWZvdW5kIgJkcCIFZE5leHQiBWREaWZmIg0kdDAyMzc0NjIzODA5IgIkbCICJHMiBSRhY2MwIgUkZjBfMSICJGEiAiRpIgUkZjBfMiIOYXJnc0NvbXBhcmlzb24iDW1heFJlY2lwaWVudHMiB3BheW1lbnQiDnBheW1lbnRBc3NldElkIg1wYXltZW50QW1vdW50IhF1c2VyQWRkcmVzc1N0cmluZyIGcmV3YXJkIgJ0eCIGdmVyaWZ5Ig90YXJnZXRQdWJsaWNLZXlfAAFhAgJfXwABYgDoBwABYwCAwtcvAAFkCQC2AgEAAAABZQAAAAFmAAEAAWcCBVdBVkVTAQFoAQFpCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAWkAAAEBagEBaQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFAWkJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWkCDyBpcyBub3QgZGVmaW5lZAEBawEBaQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQFpAgABAWwBAWkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBQFpCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFpAg8gaXMgbm90IGRlZmluZWQBAW0BAW4DCQAAAgUBbgUBZwUEdW5pdAkA2QQBBQFuAQFvAQFwCQC5CQIJAMwIAgIQZ3d4X3Jld2FyZC5yaWRlOgkAzAgCBQFwBQNuaWwCASABAXEBAXAJAAIBCQEBbwEFAXABAXIBAXMDCQBmAgAABQFzCQEBLQEFAXMFAXMBAXQBAXMDCQC/AgIFAWQFAXMJAL4CAQUBcwUBcwABdQIMJXNfX21heERlcHRoAAF2AB4AAXcJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUBdQUBdgEBeAACHCVzJXNfX2NvbmZpZ19fZmFjdG9yeUFkZHJlc3MAAXkJAQFsAQkBAXgAAAF6CQERQGV4dHJOYXRpdmUoMTA2MikBBQF5AQFBAAIdJXMlc19fY29uZmlnX19lbWlzc2lvbkFkZHJlc3MBAUIACQC5CQIJAMwIAgICJXMJAMwIAgIWdm90aW5nRW1pc3Npb25Db250cmFjdAUDbmlsBQFhAAFDCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQF6CQEBQgABAUQBAUUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIHbWFwcGluZwkAzAgCAghudW0ydXNlcgkAzAgCCQCkAwEFAUUFA25pbAUBYQABRgkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABRwIGd3hsb2NrAAFICQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAUYFAUcAAUkJALkJAgkAzAgCAgQlcyVzCQDMCAICCHJlZmVycmFsCQDMCAICDG1pbkdXeEFtb3VudAUDbmlsBQFhAAFKCQBoAgD0AwUBYwABSwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFJBQFKAAFMCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAhZyZWZlcnJlclJld2FyZFBlcm1pbGxlBQNuaWwFAWEAAU0AMgABTgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFMBQFNAAFPCQC5CQIJAMwIAgIEJXMlcwkAzAgCAghyZWZlcnJhbAkAzAgCAhZyZWZlcnJhbFJld2FyZFBlcm1pbGxlBQNuaWwFAWEAAVAAMgABUQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFPBQFQAQFSAQFTCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICCHJlZmVycmVyCQDMCAIFAUgJAMwIAgUBUwUDbmlsBQFhAQFUAgFVAVYJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdW5jbGFpbWVkUmVmZXJyYWwJAMwIAgUBVQkAzAgCBQFWBQNuaWwFAWEAAVcJAQFsAQkBAUEAAAFYCQERQGV4dHJOYXRpdmUoMTA2MikBBQFXAAFZAAEAAVoAAgACYWEAAwACYWIABAECYWMAAgolc19fY29uZmlnAQJhZAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzCQEBQQAJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4JAQFBAAIPIGlzIG5vdCBkZWZpbmVkAAJhZQkBAmFkAAACYWYJAJEDAgkAtQkCCQEFdmFsdWUBCQCdCAIFAmFlCQECYWMABQFhAAEAAmFnCQDZBAEFAmFmAQJhaAAJALUJAgkBAWwBCQECYWMABQFhAQJhaQQCYWYCYWoCYWsBdwkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAIFAmFmCQDMCAIFAmFqCQDMCAIFAmFrCQDMCAIJAKQDAQUBdwUDbmlsBQFhAQJhbAAEAmFtCQECYWgACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQJhbQUCYWECKGJvb3N0aW5nIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm90IGRlZmluZWQBAmFuAAIoJXMlc19fZ3d4UmV3YXJkRW1pc3Npb25QYXJ0X19zdGFydEhlaWdodAECYW8AAg8lc19fbmV4dFVzZXJOdW0BAmFwAAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50AQJhcQACHyVzJXNfX2d3eEhvbGRlcnNSZXdhcmRfX2N1cnJlbnQBAmFyAAIcJXMlc19fZ3d4SG9sZGVyc1Jld2FyZF9fbmV4dAECYXMAAiAlcyVzX19wb29sV2VpZ2h0X19HV1h2aXJ0dWFsUE9PTAECYXQAAhUlc19fbmV4dFByb2Nlc3NlZFVzZXIBAmF1AAIQJXNfX2xhdGVzdFBlcmlvZAECYXYAAg4lc19fbmV4dFBlcmlvZAECYXcAAhMlc19fcHJvY2Vzc2luZ1N0YWdlAQJheAACFyVzX19uZXh0UHJvY2Vzc2VkUGVyaW9kAQJheQECYXoJALkJAgkAzAgCAgQlcyVkCQDMCAICDXVzZXJVbmNsYWltZWQJAMwIAgkApAMBBQJhegUDbmlsBQFhAQJhQQECYXoJALkJAgkAzAgCAhclcyVkX19uZXh0Q2xhaW1lZFBlcmlvZAkAzAgCCQCkAwEFAmF6BQNuaWwFAWEBAmFCAQJhegkAuQkCCQDMCAICGSVzJWRfX2xhc3RQcm9jZXNzZWRQZXJpb2QJAMwIAgkApAMBBQJhegUDbmlsBQFhAQJhQwECYUQJALkJAgkAzAgCAholcyVkX19zdGFydEhlaWdodEZvclBlcmlvZAkAzAgCCQCkAwEFAmFEBQNuaWwFAWEBAmFFAQJhRAkAuQkCCQDMCAICFyVzJWRfX2F1eEVtaXNzaW9uUmV3YXJkCQDMCAIJAKQDAQUCYUQFA25pbAUBYQECYUYBAmFECQC5CQIJAMwIAgIaJXMlZF9fdG90YWxBbW91bnRGb3JQZXJpb2QJAMwIAgkApAMBBQJhRAUDbmlsBQFhAQJhRwACEiVzX19sYXN0UGF5b3V0SW5mbwECYUgDAmFEAmFJAmFKCQC5CQIJAMwIAgIGJWQlZCVkCQDMCAIJAKQDAQUCYUQJAMwIAgkApAMBBQJhSQkAzAgCCQCkAwEFAmFKBQNuaWwFAWEBAmFLAQJhRAkAuQkCCQDMCAICGCVzJXMlZF9fcGF5b3V0c19faGlzdG9yeQkAzAgCCQCkAwEFAmFEBQNuaWwFAWEBAmFMAQJhRAkAuQkCCQDMCAICGiVzJWRfX3RvdGFsV2VpZ2h0Rm9yUGVyaW9kCQDMCAIJAKQDAQUCYUQFA25pbAUBYQECYU0CAmFEAmF6CQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQJhegkAzAgCAgFrCQDMCAIJAKQDAQUCYUQFA25pbAUBYQECYU4CAmFEAmF6CQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQJhegkAzAgCAgFiCQDMCAIJAKQDAQUCYUQFA25pbAUBYQECYU8CAmFEAmF6CQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgkApAMBBQJhegkAzAgCAgZ3ZWlnaHQJAMwIAgkApAMBBQJhRAUDbmlsBQFhAQJhUAAJALkJAgkAzAgCAgQlcyVzCQDMCAICBmNvbmZpZwkAzAgCAhhyZWZlcnJhbHNDb250cmFjdEFkZHJlc3MFA25pbAUBYQACYVEJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFsAQkBAmFQAAECYVICAmFTAmFUCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgINdHJhZGluZ1Jld2FyZAkAzAgCAgdoaXN0b3J5CQDMCAIFAmFTCQDMCAIJANgEAQgFAmFUDXRyYW5zYWN0aW9uSWQFA25pbAUBYQECYVUBAmFWCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg10cmFkaW5nUmV3YXJkCQDMCAIFAmFWBQNuaWwFAWEBAmFXAAkAuQkCCQDMCAICAiVzCQDMCAICDW1heFJlY2lwaWVudHMFA25pbAUBYQECYVgEAmFZAmFTAmFaAmFUBAJiYQkAuQkCCQDMCAICESVzJXMlcyVzX19oaXN0b3J5CQDMCAIFAmFZCQDMCAIFAmFTCQDMCAIJANgEAQgFAmFUDXRyYW5zYWN0aW9uSWQFA25pbAUBYQQCYmIJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYVoFA25pbAUBYQkBC1N0cmluZ0VudHJ5AgUCYmEFAmJiAQJiYwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJiZAACFyVzX19tYW5hZ2VyVmF1bHRBZGRyZXNzAQJiZQAEAmJmCQCiCAEJAQJiZAADCQABAgUCYmYCBlN0cmluZwQCYmcFAmJmCQERQGV4dHJOYXRpdmUoMTA2MikBBQJiZwUEdGhpcwECYmgABAJiaQkBAmJlAAQCYmYJAJ0IAgUCYmkJAQJiYwADCQABAgUCYmYCBlN0cmluZwQCYmcFAmJmCQDZBAEFAmJnAwkAAQIFAmJmAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmJqAQJhVAQCYmsJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAQCYmYJAQJiaAADCQABAgUCYmYCCkJ5dGVWZWN0b3IEAmJsBQJiZgMJAAACCAUCYVQPY2FsbGVyUHVibGljS2V5BQJibAYFAmJrAwkAAQIFAmJmAgRVbml0AwkAAAIIBQJhVAZjYWxsZXIFBHRoaXMGBQJiawkAAgECC01hdGNoIGVycm9yAQJibQQCYm4CYm8CYUQCYXoEAmJwCQECYUIBBQJhegQCYnEJAQJhTQIFAmFEBQJhegQCYnIJAJoIAgUCYm4FAmJxBAJicwkBAmFPAgUCYUQFAmF6AwkBCWlzRGVmaW5lZAEFAmJyBAJidAkBBXZhbHVlAQUCYnIEAmJ1CQEFdmFsdWUBCQCaCAIFAmJuCQECYU4CBQJhRAUCYXoEAmJ2CQBkAgkAaAIFAmJ0BQJibwUCYnUDCQBmAgUCYnYAAAkAlAoCCQBpAgUCYnYFAWIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJwBQJhRAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYnMFAmJ2BQNuaWwJAJQKAgAABQNuaWwEAmJ3CQCaCAIFBHRoaXMFAmJwAwMJAQlpc0RlZmluZWQBBQJidwkAZwIFAmFECQEFdmFsdWUBBQJidwcEAmJ4CQEFdmFsdWUBBQJidwQCYnQJAQV2YWx1ZQEJAJoIAgUCYm4JAQJhTQIFAmJ4BQJhegQCYnUJAQV2YWx1ZQEJAJoIAgUCYm4JAQJhTgIFAmJ4BQJhegQCYnYJAGQCCQBoAgUCYnQFAmJvBQJidQMJAGYCBQJidgAACQCUCgIJAGkCBQJidgUBYgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYnMFAmJ2BQNuaWwJAJQKAgAABQNuaWwJAJQKAgAABQNuaWwBAmJ5BAJibgJibwJhRAJhegQCYnMJAQJhTwIFAmFEBQJhegQCYnoJAJ8IAQUCYnMEAmJmBQJiegMJAAECBQJiZgIEVW5pdAAAAwkAAQIFAmJmAgNJbnQEAmJ2BQJiZgkAaQIFAmJ2BQFiCQACAQILTWF0Y2ggZXJyb3IBAmJBAgJhawJhVgQBaQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgdtYXBwaW5nCQDMCAICCHVzZXIybnVtCQDMCAIFAmFWBQNuaWwFAWEJAQ1wYXJzZUludFZhbHVlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQdBZGRyZXNzAQkA2QQBBQJhawUBaQkArAICCQCsAgIJAKwCAgINVXNlciBhZGRyZXNzIAUCYVYCLSBpcyBub3QgZm91bmQgaW4gYm9vc3RpbmcgY29udHJhY3QgZGF0YSwga2V5PQUBaQECYkIACQEBaAEJAQJhdgABAmJDAQJhVgQCYW0JAQJhaAAEAmJECQECYkECCQCRAwIFAmFtBQJhYQUCYVYEAmJFCQCfCAEJAQJheQEFAmJEBAJiZgUCYkUDCQABAgUCYmYCBFVuaXQJAJQKAgAABQNuaWwDCQABAgUCYmYCA0ludAQCYkYFAmJmCQCUCgIFAmJGCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXkBBQJiRAAABQNuaWwJAAIBAgtNYXRjaCBlcnJvcgECYkcBAmFWCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQJhVQEFAmFWAAASAmFUARN0cmFkZVJld2FyZEludGVybmFsBAJiSAJiSQJiSgJiSwMJAAACBQJiSwkAkAMBBQJiSQUDbmlsBAJiTAkAzAgCAwkAAAIIBQJhVAZjYWxsZXIFBHRoaXMGCQEBcQECEVBlcm1pc3Npb24gZGVuaWVkCQDMCAIDCQBnAgUCYkgJAJEDAgUCYkoFAmJLBgkBAXEBAhxpbnN1ZmZpY2llbnQgcGF5bWVudCBhc3NldElkBQNuaWwDCQAAAgUCYkwFAmJMBAJiTQkA/AcEBQR0aGlzAhN0cmFkZVJld2FyZEludGVybmFsCQDMCAIJAGUCBQJiSAkAkQMCBQJiSgUCYksJAMwIAgUCYkkJAMwIAgUCYkoJAMwIAgkAZAIFAmJLAAEFA25pbAUDbmlsAwkAAAIFAmJNBQJiTQQCYk4JAQJhUgIJAJEDAgUCYkkFAmJLBQJhVAQCYVYJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUCYkkFAmJLCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFAmJOCQCRAwIFAmJKBQJiSwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFVAQkAkQMCBQJiSQUCYksJAJEDAgUCYkoFAmJLBQNuaWwFAmJNCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFUARZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5AgJhVgJiTwQCYlAJAJ0IAgUCYVEJAQFSAQUCYVYEAmJRAwkAAAIFAmJQBQR1bml0BQR1bml0CQD8BwQFAmFRAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIFAUgJAMwIAgUCYVYJAMwIAgkAZwIFAmJPBQFLBQNuaWwFA25pbAMJAAACBQJiUQUCYlEJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFUAQ5maW5hbGl6ZUhlbHBlcgAEAmJSCQELdmFsdWVPckVsc2UCCQCfCAEJAQJhdwAFAWUEAmJTCQEBaAEJAQJheAAEAmJUCQEBaAEJAQJhdAAEAmJVCQEBaAEJAQJhdQAEAmJWCQELdmFsdWVPckVsc2UCCQCaCAIJAQJhbAAJAQJhbwAAAAQCYlcJAQJhTAEFAmJTBAJiWAkBAWgBCQECYUwBBQJiUwQCYm8JAQFoAQkBAmFDAQUCYlMDCQBmAgUCYlMFAmJVCQCUCgIFA25pbAcDCQAAAgUCYlIFAWUEAmJZCQECYm0ECQECYWwABQJibwUCYlMFAmJUBAJiWggFAmJZAl8xBAJjYQgFAmJZAl8yBAJjYgkAZAIFAmJYBQJiWgQCY2MDCQBmAgkAZQIFAmJWAAEFAmJUCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXQACQBkAgUCYlQAAQUDbmlsCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXcABQFmCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXQAAAAFA25pbAkAlAoCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCYlcFAmNiBQNuaWwFAmNjBQJjYQYDCQAAAgUCYlIFAWYEAmJaCQECYnkECQECYWwABQJibwUCYlMFAmJUBAJjZAkAawMJAQFoAQkBAmFGAQUCYlMFAmJaBQJiWAQCY2UJAGsDCQEBaAEJAQJhRQEFAmJTBQJiWgUCYlgEAmNmCQBkAgUCY2UFAmNkBAJiRQkAnwgBCQECYXkBBQJiVAQCYVYJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQJhbAAJAQFEAQUCYlQEAmJQCQCdCAIFAmFRCQEBUgEFAmFWBAJiUQMJAAACBQJiUAUEdW5pdAUEdW5pdAkA/AcEBQJhUQIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCBQFICQDMCAIFAmFWCQDMCAIJAGcCBQJiWgUBSwUDbmlsBQNuaWwDCQAAAgUCYlEFAmJRBAJjZwMDCQAAAgUCYlAFBHVuaXQGCQBmAgUBSwUCYloFBHVuaXQEAmNoCQBrAwUCY2YFAU4FAWIEAmNpCQBrAwUCY2YFAVEFAWIJAPwHBAUCYVECDGluY1VuY2xhaW1lZAkAzAgCBQFICQDMCAIFAmFWCQDMCAIFAmNoCQDMCAIFAmNpBQNuaWwFA25pbAMJAAACBQJjZwUCY2cEAmNqCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXkBBQJiVAkAZAIJAQt2YWx1ZU9yRWxzZQIFAmJFAAAFAmNmBQNuaWwEAmNjAwkAZgIJAGUCBQJiVgABBQJiVAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF0AAkAZAIFAmJUAAEFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmF4AAkAZAIFAmJTAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhdAAAAAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXcABQNuaWwJAJQKAgkAzggCBQJjagUCY2MGCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIYaW52YWxpZCBwcm9jZXNzaW5nIHN0YWdlAmFUAQ9maW5hbGl6ZVdyYXBwZXIBAmNrBAJjbAoAAmNtCQD8BwQFBHRoaXMCDmZpbmFsaXplSGVscGVyBQNuaWwFA25pbAMJAAECBQJjbQIHQm9vbGVhbgUCY20JAAIBCQCsAgIJAAMBBQJjbQIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgMJAAACBQJjbAUCY2wDCQEBIQEFAmNsAwkAAAIFAmNrBQF3CQACAQISTm90aGluZyB0byBwcm9jZXNzCQCUCgIFA25pbAUEdW5pdAMJAGYCBQJjawAACQCUCgIFA25pbAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgkAZQIFAmNrAAEFA25pbAUDbmlsCQCUCgIFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhVAEdcHJvY2Vzc1BlbmRpbmdQZXJpb2RzQW5kVXNlcnMACQCUCgIFA25pbAkA/AcEBQR0aGlzAg9maW5hbGl6ZVdyYXBwZXIJAMwIAgUBdwUDbmlsBQNuaWwCYVQBB2RlcG9zaXQABAJjbgMJAAACCAUCYVQGY2FsbGVyBQFDBgkBAmJqAQUCYVQDCQAAAgUCY24FAmNuBAJhRAkBAmJCAAQCY28JAGUCBQZoZWlnaHQJAQFqAQkBAmFuAAQCY3AJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQFYCQECYXAACQCsAgIJAKwCAgIcbWFuZGF0b3J5IGVtaXNzaW9uX2NvbnRyYWN0LgkBAmFwAAIPIGlzIG5vdCBkZWZpbmVkBAJjcQkBC3ZhbHVlT3JFbHNlAgkAmggCBQFYCQECYXEAAAADCQAAAgUCY3EFAmNxBAJjcgkAawMJAGgCBQJjbwUCY3EFAmNwBQFjBAJjcwMJAGYCBQJjcgAACQD8BwQFAVgCBGVtaXQJAMwIAgUCY3IFA25pbAUDbmlsBQR1bml0AwkAAAIFAmNzBQJjcwQCY3QAAAQCY3UJAQJhSAMFAmFEBQJjdAUCY3IEAmN2CgACY20JAPwHBAUBWAIWZ3d4SG9sZGVyc1Jld2FyZFVwZGF0ZQUDbmlsBQNuaWwDCQABAgUCY20CB0Jvb2xlYW4FAmNtCQACAQkArAICCQADAQUCY20CHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4DCQAAAgUCY3YFAmN2BAJjdwkAZAIFAmN0BQJjcgQCY3gDAwkAAAIFAmN3AAAJAQEhAQUCY3YHBQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhdQAFAmFECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUMBBQJhRAUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYUUBBQJhRAUCY3IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbgAFBmhlaWdodAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFGAQUCYUQFAmN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYXYACQBkAgUCYUQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQECYUcABQJjdQkAzAgCCQELU3RyaW5nRW50cnkCCQECYUsBBQJhRAUCY3UFA25pbAkAlAoCBQJjeAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhVAELY2xhaW1SZXdhcmQABAJhbQkBAmFoAAQCY3kJAKUIAQgFAmFUBmNhbGxlcgQCY3oJAQJiQwEFAmN5BAJhWggFAmN6Al8xBAJjeAgFAmN6Al8yBAJjQQMJAGYCBQJhWgAABgkAAgECEE5vdGhpbmcgdG8gY2xhaW0DCQAAAgUCY0EFAmNBBAJjQgAABAJjQwoAAmNtCQD8BwQFAmFRAgVjbGFpbQkAzAgCBQFIBQNuaWwFA25pbAMJAAECBQJjbQIDSW50BQJjbQkAAgEJAKwCAgkAAwEFAmNtAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQEAmNECQBkAgUCYVoFAmNDCQCUCgIJAM4IAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUCYVQGY2FsbGVyBQJjRAkA2QQBCQCRAwIFAmFtBQFZCQDMCAIJAQJhWAQCBWNsYWltBQJjeQUCYVoFAmFUBQNuaWwFAmN4CQDMCAIFAmNECQDMCAIFAmNCBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYVQBE2NsYWltUmV3YXJkUkVBRE9OTFkBAmN5BAJjRQkBAmJDAQUCY3kEAmFaCAUCY0UCXzEEAmN4CAUCY0UCXzIEAmNGCQELdmFsdWVPckVsc2UCCQCaCAIFAmFRCQEBVAIFAUgFAmN5AAAEAmNECQBkAgUCYVoFAmNGCQCUCgIFA25pbAUCY0QCYVQBHWxhdGVzdEZpbmFsaXplZFBlcmlvZFJFQURPTkxZAQJjeQkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmF1AAD///////////8BAmFUASFsYXRlc3RGaW5hbGl6ZWRQZXJpb2RJbmZvUkVBRE9OTFkBAmN5CQCUCgIFA25pbAkBAWsBCQECYUcAAmFUARVjYWxjR3d4UGFyYW1zUkVBRE9OTFkDAmNHAmNIAmNJBAJjSgkAZAIFAmNIBQJjSQQCY0sJAQEtAQkAawMFAmNHBQFiBQJjSQQCY0wJAGgCCQBrAwUCY0cFAWIFAmNJBQJjSgkAlAoCBQNuaWwJAMwIAgUCY0sJAMwIAgUCY0wJAMwIAgkBAmJCAAUDbmlsAmFUARpjYWxjR3d4QW1vdW50U3RhcnRSRUFET05MWQMCY00CY04CY08EAmNQCQBrAwUCY04FAWMFAmNPBAJiTwkAawMFAmNNBQJjUAUBYwkAlAoCBQNuaWwJAMwIAgUCYk8FA25pbAJhVAEVb25FbWlzc2lvbkZvckd3eFN0YXJ0AAMJAQIhPQIIBQJhVAZjYWxsZXIFAXoJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhbgAFBmhlaWdodAUDbmlsAmFUASNsYXRlc3RQZXJpb2RFbWlzc2lvblJld2FyZHNSRUFET05MWQECY3kEAmFECQECYkIACQCUCgIFA25pbAkAzAgCCQEBaAEJAQJhRQEFAmFEBQNuaWwCYVQBBWNhbGNEBQJjUQJjUgJjUwJjVAJjVQQCY1YJALYCAQACBAJjVwkApwMBBQJjVAQCY1gJAKcDAQUCY1UEAmNZCQCnAwEFAmNRBAJjWgkApwMBBQJjUgQCZGEJALkCAgkApwMBBQJjUwUCY1cEAmJnCQC3AgIFAmNZBQJjWgMJAAACBQJiZwUBZAkAlAoCBQNuaWwJAKYDAQUBZAQCZGIJALkCAgUCZGEFAmNWBAJkYwkAzAgCAAAJAMwIAgABCQDMCAIAAgkAzAgCAAMJAMwIAgAECQDMCAIABQkAzAgCAAYFA25pbAoBAmRkAgJkZQJkZgQCZGcFAmRlBAJkaAgFAmRnAl8xBAJkaQgFAmRnAl8yBAJkaggFAmRnAl8zAwkBAiE9AgUCZGoFBHVuaXQFAmRlBAJkawkAugICCQC5AgIJALkCAgUCZGgFAmRoBQJkaAkAuQICCQC5AgIJALkCAgUCY1kFAmNaBQJjVgUCY1YEAmRsCQC6AgIJALkCAgkAtwICCQC6AgIJALkCAgUCZGIFAmJnBQJjVwkAuQICBQJkawUCY1YFAmRoCQC3AgIJALoCAgkAuQICCQC4AgIFAmRiBQJjVwUCZGgFAmNXCQC5AgIJALcCAgUCY1YJALYCAQABBQJkawQCZG0JAQF0AQkAuAICBQJkbAkBBXZhbHVlAQUCZGgDCQDAAgIFAmNYBQJkbQkAlQoDBQJkbAUCZGgFAmRmCQCVCgMFAmRsBQJkaAUEdW5pdAQCZG4KAAJkbwUCZGMKAAJkcAkAkAMBBQJkbwoAAmRxCQCVCgMFAmJnBQR1bml0BQR1bml0CgECZHICAmRzAmR0AwkAZwIFAmR0BQJkcAUCZHMJAQJkZAIFAmRzCQCRAwIFAmRvBQJkdAoBAmR1AgJkcwJkdAMJAGcCBQJkdAUCZHAFAmRzCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgNwkBAmR1AgkBAmRyAgkBAmRyAgkBAmRyAgkBAmRyAgkBAmRyAgkBAmRyAgkBAmRyAgUCZHEAAAABAAIAAwAEAAUABgAHBAJkbAgFAmRuAl8xBAJkaQgFAmRuAl8yBAJkaggFAmRuAl8zAwkBAiE9AgUCZGoFBHVuaXQJAJQKAgUDbmlsCQCmAwEFAmRsBAJkbQkBAXQBCQC4AgIFAmRsCQEFdmFsdWUBBQJkaQkAAgEJAKwCAgIdRCBjYWxjdWxhdGlvbiBlcnJvciwgZERpZmYgPSAJAKYDAQUCZG0CYVQBC3RyYWRlUmV3YXJkAgJiSQJiSgQCZHYJAAACCQCQAwEFAmJJCQCQAwEFAmJKBAJkdwkBC3ZhbHVlT3JFbHNlAgkAnwgBCQECYVcAAAAEAmR4CQCRAwIIBQJhVAhwYXltZW50cwAABAJkeQgFAmR4B2Fzc2V0SWQEAmR6CAUCZHgGYW1vdW50BAJiTAkAzAgCAwkAZwIFAmR3CQCQAwEFAmJJBgkBAXEBAhNUb28gbWFueSByZWNpcGllbnRzCQDMCAIDBQJkdgYJAQFxAQIXQXJndW1lbnRzIHNpemUgbWlzbWF0Y2gJAMwIAgMJAAACBQJkeQUCYWcGCQEBcQECE1dyb25nIGFzc2V0IHBheW1lbnQFA25pbAMJAAACBQJiTAUCYkwEAmJNCQD8BwQFBHRoaXMCE3RyYWRlUmV3YXJkSW50ZXJuYWwJAMwIAgUCZHoJAMwIAgUCYkkJAMwIAgUCYkoJAMwIAgAABQNuaWwFA25pbAMJAAACBQJiTQUCYk0JAJQKAgUDbmlsBQJiTQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhVAESY2xhaW1UcmFkaW5nUmV3YXJkAAQCYVYIBQJhVAZjYWxsZXIEAmRBCQClCAEFAmFWBAJkQgkBAmJHAQUCZEEDCQBmAgUCZEIAAAkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmFWBQJkQgUCYWcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhVQEFAmRBAAAFA25pbAUCZEIJAQFxAQIQbm90aGluZyB0byBjbGFpbQJhVAEaY2xhaW1UcmFkaW5nUmV3YXJkUkVBRE9OTFkBAmFWCQCUCgIFA25pbAkBAmJHAQUCYVYBAmRDAQJkRAAEAmRFBAJiZgkBAmJoAAMJAAECBQJiZgIKQnl0ZVZlY3RvcgQCYmwFAmJmBQJibAMJAAECBQJiZgIEVW5pdAgFAmRDD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJkQwlib2R5Qnl0ZXMJAJEDAggFAmRDBnByb29mcwAABQJkReC5ky4=", "height": 2765087, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: D2pxJxcYEhJxxbt4AsasHmgTGpcAJvxVodqyJx2TZXBD Next: none Diff:
OldNewDifferences
77
88 let c = 100000000
99
10-let d = toBigInt(c)
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = 0
1313
14-let f = 0
14+let f = 1
1515
16-let g = 1
16+let g = "WAVES"
1717
18-let h = 1000000000000000000
19-
20-let i = toBigInt(h)
21-
22-let j = "WAVES"
23-
24-func k (l) = makeString(["gwx_reward.ride:", l], " ")
18+func h (i) = valueOrElse(getInteger(this, i), 0)
2519
2620
27-func m (l) = throw(k(l))
21+func j (i) = valueOrErrorMessage(getInteger(this, i), (("mandatory this." + i) + " is not defined"))
2822
2923
30-func n (o) = valueOrElse(getInteger(this, o), 0)
24+func k (i) = valueOrElse(getString(this, i), "")
3125
3226
33-func p (o) = valueOrErrorMessage(getInteger(this, o), k((("mandatory this." + o) + " is not defined")))
27+func l (i) = valueOrErrorMessage(getString(this, i), (("mandatory this." + i) + " is not defined"))
3428
3529
36-func q (o) = valueOrElse(getString(this, o), "")
30+func m (n) = if ((n == g))
31+ then unit
32+ else fromBase58String(n)
3733
3834
39-func r (o) = valueOrErrorMessage(getString(this, o), k((("mandatory this." + o) + " is not defined")))
35+func o (p) = makeString(["gwx_reward.ride:", p], " ")
4036
4137
42-func s (t) = if ((t == j))
43- then unit
44- else fromBase58String(t)
38+func q (p) = throw(o(p))
4539
4640
47-func u (v) = if ((0 > v))
48- then -(v)
49- else v
41+func r (s) = if ((0 > s))
42+ then -(s)
43+ else s
5044
5145
52-func w (v) = if ((e > v))
53- then -(v)
54- else v
46+func t (s) = if ((d > s))
47+ then -(s)
48+ else s
5549
5650
57-let x = "%s__maxDepth"
51+let u = "%s__maxDepth"
5852
59-let y = 30
53+let v = 30
6054
61-let z = valueOrElse(getInteger(this, x), y)
55+let w = valueOrElse(getInteger(this, u), v)
6256
63-func A () = "%s%s__config__factoryAddress"
57+func x () = "%s%s__config__factoryAddress"
6458
6559
66-let B = r(A())
60+let y = l(x())
6761
68-let C = addressFromStringValue(B)
62+let z = addressFromStringValue(y)
6963
70-func D () = "%s%s__config__emissionAddress"
64+func A () = "%s%s__config__emissionAddress"
7165
7266
73-func E () = makeString(["%s", "votingEmissionContract"], a)
67+func B () = makeString(["%s", "votingEmissionContract"], a)
7468
7569
76-let F = addressFromStringValue(getStringValue(C, E()))
70+let C = addressFromStringValue(getStringValue(z, B()))
7771
78-func G (H) = makeString(["%s%s%s", "mapping", "num2user", toString(H)], a)
72+func D (E) = makeString(["%s%s%s", "mapping", "num2user", toString(E)], a)
7973
8074
81-let I = makeString(["%s%s", "referral", "programName"], a)
75+let F = makeString(["%s%s", "referral", "programName"], a)
8276
83-let J = "wxlock"
77+let G = "wxlock"
8478
85-let K = valueOrElse(getString(this, I), J)
79+let H = valueOrElse(getString(this, F), G)
8680
87-let L = makeString(["%s%s", "referral", "minGWxAmount"], a)
81+let I = makeString(["%s%s", "referral", "minGWxAmount"], a)
8882
89-let M = (500 * c)
83+let J = (500 * c)
84+
85+let K = valueOrElse(getInteger(this, I), J)
86+
87+let L = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
88+
89+let M = 50
9090
9191 let N = valueOrElse(getInteger(this, L), M)
9292
93-let O = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
93+let O = makeString(["%s%s", "referral", "referralRewardPermille"], a)
9494
9595 let P = 50
9696
9797 let Q = valueOrElse(getInteger(this, O), P)
9898
99-let R = makeString(["%s%s", "referral", "referralRewardPermille"], a)
100-
101-let S = 50
102-
103-let T = valueOrElse(getInteger(this, R), S)
104-
105-func U (V) = makeString(["%s%s%s", "referrer", K, V], a)
99+func R (S) = makeString(["%s%s%s", "referrer", H, S], a)
106100
107101
108-func W (X,Y) = makeString(["%s%s%s", "unclaimedReferral", X, Y], a)
102+func T (U,V) = makeString(["%s%s%s", "unclaimedReferral", U, V], a)
109103
110104
111-let Z = r(D())
105+let W = l(A())
112106
113-let aa = addressFromStringValue(Z)
107+let X = addressFromStringValue(W)
114108
115-let ab = 1
109+let Y = 1
116110
117-let ac = 2
111+let Z = 2
118112
119-let ad = 3
113+let aa = 3
120114
121-let ae = 4
115+let ab = 4
122116
123-func af () = "%s__config"
117+func ac () = "%s__config"
124118
125119
126-func ag () = addressFromStringValue(valueOrErrorMessage(getString(this, D()), (("mandatory this." + D()) + " is not defined")))
120+func ad () = addressFromStringValue(valueOrErrorMessage(getString(this, A()), (("mandatory this." + A()) + " is not defined")))
127121
128122
129-let ah = ag()
123+let ae = ad()
130124
131-let ai = split(value(getString(ah, af())), a)[1]
125+let af = split(value(getString(ae, ac())), a)[1]
132126
133-let aj = fromBase58String(ai)
127+let ag = fromBase58String(af)
134128
135-func ak () = split(r(af()), a)
129+func ah () = split(l(ac()), a)
136130
137131
138-func al (ai,am,an,z) = makeString(["%s%s%s%d", ai, am, an, toString(z)], a)
132+func ai (af,aj,ak,w) = makeString(["%s%s%s%d", af, aj, ak, toString(w)], a)
139133
140134
141-func ao () = {
142- let ap = ak()
143- valueOrErrorMessage(addressFromString(ap[ad]), "boosting contract address is not defined")
135+func al () = {
136+ let am = ah()
137+ valueOrErrorMessage(addressFromString(am[aa]), "boosting contract address is not defined")
144138 }
145139
146140
147-let aq = "%s__suspension"
148-
149-let ar = valueOrElse(getBoolean(this, aq), false)
150-
151-func as () = if (!(ar))
152- then true
153- else m("suspended")
141+func an () = "%s%s__gwxRewardEmissionPart__startHeight"
154142
155143
156-func at () = "%s%s__gwxRewardEmissionPart__startHeight"
144+func ao () = "%s__nextUserNum"
157145
158146
159-func au () = "%s__nextUserNum"
147+func ap () = "%s%s__ratePerBlock__current"
160148
161149
162-func av (aw) = makeString(["%s%s%s__mapping__user2num", toString(aw)], a)
150+func aq () = "%s%s__gwxHoldersReward__current"
163151
164152
165-func ax () = "%s%s__ratePerBlock__current"
153+func ar () = "%s%s__gwxHoldersReward__next"
166154
167155
168-func ay () = "%s%s__gwxHoldersReward__current"
156+func as () = "%s%s__poolWeight__GWXvirtualPOOL"
169157
170158
171-func az () = "%s%s__gwxHoldersReward__next"
159+func at () = "%s__nextProcessedUser"
172160
173161
174-func aA () = "%s%s__poolWeight__GWXvirtualPOOL"
162+func au () = "%s__latestPeriod"
175163
176164
177-func aB (aC) = makeString(["%s%d", "userUnclaimed", toString(aC)], a)
165+func av () = "%s__nextPeriod"
178166
179167
180-func aD () = makeString(["%s%s", "config", "referralsContractAddress"], a)
168+func aw () = "%s__processingStage"
181169
182170
183-let aE = addressFromStringValue(r(aD()))
184-
185-func aF (aG,aH) = makeString(["%s%s%s%s", "tradingReward", "history", aG, toBase58String(aH.transactionId)], a)
171+func ax () = "%s__nextProcessedPeriod"
186172
187173
188-func aI (aw) = makeString(["%s%s", "tradingReward", aw], a)
174+func ay (az) = makeString(["%s%d", "userUnclaimed", toString(az)], a)
189175
190176
191-func aJ () = makeString(["%s", "maxRecipients"], a)
177+func aA (az) = makeString(["%s%d__nextClaimedPeriod", toString(az)], a)
192178
193179
194-func aK (aL,aG,aM,aH) = {
195- let aN = makeString(["%s%s%s%s__history", aL, aG, toBase58String(aH.transactionId)], a)
196- let aO = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aM)], a)
197- StringEntry(aN, aO)
180+func aB (az) = makeString(["%s%d__lastProcessedPeriod", toString(az)], a)
181+
182+
183+func aC (aD) = makeString(["%s%d__startHeightForPeriod", toString(aD)], a)
184+
185+
186+func aE (aD) = makeString(["%s%d__auxEmissionReward", toString(aD)], a)
187+
188+
189+func aF (aD) = makeString(["%s%d__totalAmountForPeriod", toString(aD)], a)
190+
191+
192+func aG () = "%s__lastPayoutInfo"
193+
194+
195+func aH (aD,aI,aJ) = makeString(["%d%d%d", toString(aD), toString(aI), toString(aJ)], a)
196+
197+
198+func aK (aD) = makeString(["%s%s%d__payouts__history", toString(aD)], a)
199+
200+
201+func aL (aD) = makeString(["%s%d__totalWeightForPeriod", toString(aD)], a)
202+
203+
204+func aM (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "k", toString(aD)], a)
205+
206+
207+func aN (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "b", toString(aD)], a)
208+
209+
210+func aO (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "weight", toString(aD)], a)
211+
212+
213+func aP () = makeString(["%s%s", "config", "referralsContractAddress"], a)
214+
215+
216+let aQ = addressFromStringValue(l(aP()))
217+
218+func aR (aS,aT) = makeString(["%s%s%s%s", "tradingReward", "history", aS, toBase58String(aT.transactionId)], a)
219+
220+
221+func aU (aV) = makeString(["%s%s", "tradingReward", aV], a)
222+
223+
224+func aW () = makeString(["%s", "maxRecipients"], a)
225+
226+
227+func aX (aY,aS,aZ,aT) = {
228+ let ba = makeString(["%s%s%s%s__history", aY, aS, toBase58String(aT.transactionId)], a)
229+ let bb = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aZ)], a)
230+ StringEntry(ba, bb)
198231 }
199232
200233
201-func aP () = "%s__managerPublicKey"
234+func bc () = "%s__managerPublicKey"
202235
203236
204-func aQ () = "%s__managerVaultAddress"
237+func bd () = "%s__managerVaultAddress"
205238
206239
207-func aR () = {
208- let aS = getString(aQ())
209- if ($isInstanceOf(aS, "String"))
240+func be () = {
241+ let bf = getString(bd())
242+ if ($isInstanceOf(bf, "String"))
210243 then {
211- let aT = aS
212- addressFromStringValue(aT)
244+ let bg = bf
245+ addressFromStringValue(bg)
213246 }
214247 else this
215248 }
216249
217250
218-func aU () = {
219- let aV = aR()
220- let aS = getString(aV, aP())
221- if ($isInstanceOf(aS, "String"))
251+func bh () = {
252+ let bi = be()
253+ let bf = getString(bi, bc())
254+ if ($isInstanceOf(bf, "String"))
222255 then {
223- let aT = aS
224- fromBase58String(aT)
256+ let bg = bf
257+ fromBase58String(bg)
225258 }
226- else if ($isInstanceOf(aS, "Unit"))
259+ else if ($isInstanceOf(bf, "Unit"))
227260 then unit
228261 else throw("Match error")
229262 }
230263
231264
232-func aW (aH) = {
233- let aX = throw("Permission denied")
234- let aS = aU()
235- if ($isInstanceOf(aS, "ByteVector"))
265+func bj (aT) = {
266+ let bk = throw("Permission denied")
267+ let bf = bh()
268+ if ($isInstanceOf(bf, "ByteVector"))
236269 then {
237- let aY = aS
238- if ((aH.callerPublicKey == aY))
270+ let bl = bf
271+ if ((aT.callerPublicKey == bl))
239272 then true
240- else aX
273+ else bk
241274 }
242- else if ($isInstanceOf(aS, "Unit"))
243- then if ((aH.caller == this))
275+ else if ($isInstanceOf(bf, "Unit"))
276+ then if ((aT.caller == this))
244277 then true
245- else aX
278+ else bk
246279 else throw("Match error")
247280 }
248281
249282
250-func aZ (an,aw) = {
251- let o = makeString(["%s%s%s", "mapping", "user2num", aw], a)
252- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(an)), o), ((("User address " + aw) + " is not found in boosting contract data, key=") + o)))
283+func bm (bn,bo,aD,az) = {
284+ let bp = aB(az)
285+ let bq = aM(aD, az)
286+ let br = getInteger(bn, bq)
287+ let bs = aO(aD, az)
288+ if (isDefined(br))
289+ then {
290+ let bt = value(br)
291+ let bu = value(getInteger(bn, aN(aD, az)))
292+ let bv = ((bt * bo) + bu)
293+ if ((bv > 0))
294+ then $Tuple2((bv / b), [IntegerEntry(bp, aD), IntegerEntry(bs, bv)])
295+ else $Tuple2(0, nil)
296+ }
297+ else {
298+ let bw = getInteger(this, bp)
299+ if (if (isDefined(bw))
300+ then (aD >= value(bw))
301+ else false)
302+ then {
303+ let bx = value(bw)
304+ let bt = value(getInteger(bn, aM(bx, az)))
305+ let bu = value(getInteger(bn, aN(bx, az)))
306+ let bv = ((bt * bo) + bu)
307+ if ((bv > 0))
308+ then $Tuple2((bv / b), [IntegerEntry(bs, bv)])
309+ else $Tuple2(0, nil)
310+ }
311+ else $Tuple2(0, nil)
312+ }
253313 }
254314
255315
256-func ba (aw) = valueOrElse(getInteger(this, aI(aw)), 0)
257-
258-
259-func bb () = makeString(["%s", "rewardPerGwxIntegral"], a)
260-
261-
262-func bc () = {
263- let bd = "%s%s__gwx__total"
264- getInteger(ao(), bd)
316+func by (bn,bo,aD,az) = {
317+ let bs = aO(aD, az)
318+ let bz = getInteger(bs)
319+ let bf = bz
320+ if ($isInstanceOf(bf, "Unit"))
321+ then 0
322+ else if ($isInstanceOf(bf, "Int"))
323+ then {
324+ let bv = bf
325+ (bv / b)
326+ }
327+ else throw("Match error")
265328 }
266329
267330
268-func be (aw) = {
269- func bf (aw) = makeString(["%s%s__gwxAmountTotal", toString(aw)], a)
270-
271- getInteger(ao(), bf(aw))
331+func bA (ak,aV) = {
332+ let i = makeString(["%s%s%s", "mapping", "user2num", aV], a)
333+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(ak)), i), ((("User address " + aV) + " is not found in boosting contract data, key=") + i)))
272334 }
273335
274336
275-func bg () = {
276- let bh = valueOrElse({
277- let aS = getString(this, bb())
278- if ($isInstanceOf(aS, "String"))
337+func bB () = h(av())
338+
339+
340+func bC (aV) = {
341+ let am = ah()
342+ let bD = bA(am[aa], aV)
343+ let bE = getInteger(ay(bD))
344+ let bf = bE
345+ if ($isInstanceOf(bf, "Unit"))
346+ then $Tuple2(0, nil)
347+ else if ($isInstanceOf(bf, "Int"))
279348 then {
280- let aT = aS
281- parseBigInt(aT)
349+ let bF = bf
350+ $Tuple2(bF, [IntegerEntry(ay(bD), 0)])
282351 }
283- else if ($isInstanceOf(aS, "Unit"))
284- then unit
285- else throw("Match error")
286- }, e)
287- let bi = valueOrErrorMessage(getInteger(this, at()), k(("invalid " + at())))
288- let bj = valueOrErrorMessage(getInteger(aa, ax()), k(("invalid " + ax())))
289- let bk = valueOrElse(getInteger(aa, ay()), 0)
290- let bl = valueOrElse(bc(), 0)
291- let bm = toBigInt((height - bi))
292- let bn = toBigInt(bl)
293- let bo = (bh + (if ((bn == e))
294- then e
295- else fraction(bm, ((toBigInt(bj) * toBigInt(bk)) * i), (bn * d))))
296- $Tuple2([IntegerEntry(at(), height), StringEntry(bb(), toString(bo))], bo)
352+ else throw("Match error")
297353 }
298354
299355
300-func bp (aw) = makeString(["%s%s", "rewardPerGwxIntegralUserLast", toString(aw)], a)
356+func bG (aV) = valueOrElse(getInteger(this, aU(aV)), 0)
301357
302358
303-func bq (aw,br) = {
304- let bs = bg()
305- let bt = bs._1
306- let bo = bs._2
307- let bu = {
308- let aS = getString(this, bp(aw))
309- if ($isInstanceOf(aS, "String"))
359+@Callable(aT)
360+func tradeRewardInternal (bH,bI,bJ,bK) = if ((bK == size(bI)))
361+ then nil
362+ else {
363+ let bL = [if ((aT.caller == this))
364+ then true
365+ else q("Permission denied"), if ((bH >= bJ[bK]))
366+ then true
367+ else q("insufficient payment assetId")]
368+ if ((bL == bL))
310369 then {
311- let aT = aS
312- valueOrErrorMessage(parseBigInt(aT), k("invalid user last integral"))
370+ let bM = invoke(this, "tradeRewardInternal", [(bH - bJ[bK]), bI, bJ, (bK + 1)], nil)
371+ if ((bM == bM))
372+ then {
373+ let bN = aR(bI[bK], aT)
374+ let aV = addressFromStringValue(bI[bK])
375+ $Tuple2([IntegerEntry(bN, bJ[bK]), IntegerEntry(aU(bI[bK]), bJ[bK])], bM)
376+ }
377+ else throw("Strict value is not equal to itself.")
313378 }
314- else if ($isInstanceOf(aS, "Unit"))
315- then bo
316- else throw("Match error")
379+ else throw("Strict value is not equal to itself.")
317380 }
318- let bv = getString(ao(), av(aw))
319- let bw = valueOrElse(getInteger(aB(br)), 0)
320- let bx = valueOrElse(be(aw), 0)
321- let by = (toInt(fraction(toBigInt(bx), (bo - bu), i)) + bw)
322- $Tuple2(([StringEntry(bp(aw), toString(bo))] ++ bt), by)
323- }
324381
325382
326-func bz (bA) = {
327- let aw = valueOrErrorMessage(addressFromString(bA), k("invalid user address"))
328- let ap = ak()
329- let br = aZ(ap[ad], bA)
330- let bB = bq(aw, br)
331- let bC = bB._1
332- let bD = bB._2
333- $Tuple2(bD, ([IntegerEntry(aB(br), 0)] ++ bC))
334- }
335383
336-
337-@Callable(aH)
338-func refreshUserReward (bE,br) = {
339- let bF = as()
340- if ((bF == bF))
341- then {
342- let bG = if ((aH.caller == ao()))
343- then true
344- else m("permission denied")
345- if ((bG == bG))
346- then {
347- let bH = bq(Address(bE), br)
348- let bC = bH._1
349- let bD = bH._2
350- $Tuple2(([IntegerEntry(aB(br), bD)] ++ bC), bD)
351- }
352- else throw("Strict value is not equal to itself.")
353- }
384+@Callable(aT)
385+func updateReferralActivity (aV,bO) = {
386+ let bP = getString(aQ, R(aV))
387+ let bQ = if ((bP == unit))
388+ then unit
389+ else invoke(aQ, "updateReferralActivity", [H, aV, (bO >= K)], nil)
390+ if ((bQ == bQ))
391+ then $Tuple2(nil, unit)
354392 else throw("Strict value is not equal to itself.")
355393 }
356394
357395
358396
359-@Callable(aH)
360-func tradeRewardInternal (bI,bJ,bK,bL) = {
361- let bF = as()
362- if ((bF == bF))
363- then if ((bL == size(bJ)))
364- then nil
365- else {
366- let bM = [if ((aH.caller == this))
367- then true
368- else m("Permission denied"), if ((bI >= bK[bL]))
369- then true
370- else m("insufficient payment assetId")]
371- if ((bM == bM))
372- then {
373- let bN = invoke(this, "tradeRewardInternal", [(bI - bK[bL]), bJ, bK, (bL + 1)], nil)
374- if ((bN == bN))
375- then {
376- let bO = aF(bJ[bL], aH)
377- let aw = addressFromStringValue(bJ[bL])
378- $Tuple2([IntegerEntry(bO, bK[bL]), IntegerEntry(aI(bJ[bL]), bK[bL])], bN)
379- }
380- else throw("Strict value is not equal to itself.")
381- }
382- else throw("Strict value is not equal to itself.")
397+@Callable(aT)
398+func finalizeHelper () = {
399+ let bR = valueOrElse(getInteger(aw()), e)
400+ let bS = h(ax())
401+ let bT = h(at())
402+ let bU = h(au())
403+ let bV = valueOrElse(getInteger(al(), ao()), 0)
404+ let bW = aL(bS)
405+ let bX = h(aL(bS))
406+ let bo = h(aC(bS))
407+ if ((bS > bU))
408+ then $Tuple2(nil, false)
409+ else if ((bR == e))
410+ then {
411+ let bY = bm(al(), bo, bS, bT)
412+ let bZ = bY._1
413+ let ca = bY._2
414+ let cb = (bX + bZ)
415+ let cc = if (((bV - 1) > bT))
416+ then [IntegerEntry(at(), (bT + 1))]
417+ else [IntegerEntry(aw(), f), IntegerEntry(at(), 0)]
418+ $Tuple2((([IntegerEntry(bW, cb)] ++ cc) ++ ca), true)
383419 }
420+ else if ((bR == f))
421+ then {
422+ let bZ = by(al(), bo, bS, bT)
423+ let cd = fraction(h(aF(bS)), bZ, bX)
424+ let ce = fraction(h(aE(bS)), bZ, bX)
425+ let cf = (ce + cd)
426+ let bE = getInteger(ay(bT))
427+ let aV = getStringValue(al(), D(bT))
428+ let bP = getString(aQ, R(aV))
429+ let bQ = if ((bP == unit))
430+ then unit
431+ else invoke(aQ, "updateReferralActivity", [H, aV, (bZ >= K)], nil)
432+ if ((bQ == bQ))
433+ then {
434+ let cg = if (if ((bP == unit))
435+ then true
436+ else (K > bZ))
437+ then unit
438+ else {
439+ let ch = fraction(cf, N, b)
440+ let ci = fraction(cf, Q, b)
441+ invoke(aQ, "incUnclaimed", [H, aV, ch, ci], nil)
442+ }
443+ if ((cg == cg))
444+ then {
445+ let cj = [IntegerEntry(ay(bT), (valueOrElse(bE, 0) + cf))]
446+ let cc = if (((bV - 1) > bT))
447+ then [IntegerEntry(at(), (bT + 1))]
448+ else [IntegerEntry(ax(), (bS + 1)), IntegerEntry(at(), 0), DeleteEntry(aw())]
449+ $Tuple2((cj ++ cc), true)
450+ }
451+ else throw("Strict value is not equal to itself.")
452+ }
453+ else throw("Strict value is not equal to itself.")
454+ }
455+ else throw("invalid processing stage")
456+ }
457+
458+
459+
460+@Callable(aT)
461+func finalizeWrapper (ck) = {
462+ let cl = {
463+ let cm = invoke(this, "finalizeHelper", nil, nil)
464+ if ($isInstanceOf(cm, "Boolean"))
465+ then cm
466+ else throw(($getType(cm) + " couldn't be cast to Boolean"))
467+ }
468+ if ((cl == cl))
469+ then if (!(cl))
470+ then if ((ck == w))
471+ then throw("Nothing to process")
472+ else $Tuple2(nil, unit)
473+ else if ((ck > 0))
474+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(ck - 1)], nil))
475+ else $Tuple2(nil, unit)
384476 else throw("Strict value is not equal to itself.")
385477 }
386478
387479
388480
389-@Callable(aH)
390-func updateReferralActivity (aw,bP) = {
391- let bF = as()
392- if ((bF == bF))
393- then {
394- let bQ = getString(aE, U(aw))
395- let bR = if ((bQ == unit))
396- then unit
397- else invoke(aE, "updateReferralActivity", [K, aw, (bP >= N)], nil)
398- if ((bR == bR))
399- then $Tuple2(nil, unit)
400- else throw("Strict value is not equal to itself.")
401- }
402- else throw("Strict value is not equal to itself.")
403- }
481+@Callable(aT)
482+func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [w], nil))
404483
405484
406485
407-@Callable(aH)
408-func processPendingPeriodsAndUsers () = $Tuple2(nil, m("deprecated"))
409-
410-
411-
412-@Callable(aH)
413-func claimReward () = {
414- let bF = as()
415- if ((bF == bF))
486+@Callable(aT)
487+func deposit () = {
488+ let cn = if ((aT.caller == C))
489+ then true
490+ else bj(aT)
491+ if ((cn == cn))
416492 then {
417- let ap = ak()
418- let aw = aH.caller
419- let bA = toString(aw)
420- let bS = bz(bA)
421- let aM = bS._1
422- let bC = bS._2
423- let bT = if ((aM > 0))
424- then true
425- else throw("nothing to claim")
426- if ((bT == bT))
493+ let aD = bB()
494+ let co = (height - j(an()))
495+ let cp = valueOrErrorMessage(getInteger(X, ap()), (("mandatory emission_contract." + ap()) + " is not defined"))
496+ let cq = valueOrElse(getInteger(X, aq()), 0)
497+ if ((cq == cq))
427498 then {
428- let bx = {
429- let bU = invoke(ao(), "getUserGwxAmount", [bA], nil)
430- if ($isInstanceOf(bU, "Int"))
431- then bU
432- else throw(($getType(bU) + " couldn't be cast to Int"))
433- }
434- let bQ = getString(aE, U(bA))
435- let bR = if ((bQ == unit))
436- then unit
437- else invoke(aE, "updateReferralActivity", [K, aw, (bx >= N)], nil)
438- if ((bR == bR))
499+ let cr = fraction((co * cq), cp, c)
500+ let cs = if ((cr > 0))
501+ then invoke(X, "emit", [cr], nil)
502+ else unit
503+ if ((cs == cs))
439504 then {
440- let bV = if (if ((bQ == unit))
441- then true
442- else (N > bx))
443- then unit
444- else {
445- let bW = fraction(aM, Q, b)
446- let bX = fraction(aM, T, b)
447- invoke(aE, "incUnclaimed", [K, aw, bW, bX], nil)
448- }
449- if ((bV == bV))
505+ let ct = 0
506+ let cu = aH(aD, ct, cr)
507+ let cv = {
508+ let cm = invoke(X, "gwxHoldersRewardUpdate", nil, nil)
509+ if ($isInstanceOf(cm, "Boolean"))
510+ then cm
511+ else throw(($getType(cm) + " couldn't be cast to Boolean"))
512+ }
513+ if ((cv == cv))
450514 then {
451- let bY = invoke(aa, "emit", [aM], nil)
452- if ((bY == bY))
453- then {
454- let bZ = {
455- let bU = invoke(aE, "claim", [K], nil)
456- if ($isInstanceOf(bU, "Int"))
457- then bU
458- else throw(($getType(bU) + " couldn't be cast to Int"))
459- }
460- if ((bZ == bZ))
461- then {
462- let ca = (aM + bZ)
463- $Tuple2(([ScriptTransfer(aH.caller, aM, aj), aK("claim", bA, ca, aH)] ++ bC), ca)
464- }
465- else throw("Strict value is not equal to itself.")
466- }
467- else throw("Strict value is not equal to itself.")
515+ let cw = (ct + cr)
516+ let cx = if (if ((cw == 0))
517+ then !(cv)
518+ else false)
519+ then nil
520+ else [IntegerEntry(au(), aD), IntegerEntry(aC(aD), height), IntegerEntry(aE(aD), cr), IntegerEntry(an(), height), IntegerEntry(aF(aD), ct), IntegerEntry(av(), (aD + 1)), StringEntry(aG(), cu), StringEntry(aK(aD), cu)]
521+ $Tuple2(cx, unit)
468522 }
469523 else throw("Strict value is not equal to itself.")
470524 }
477531
478532
479533
480-@Callable(aH)
481-func claimRewardREADONLY (cb) = {
482- let cc = bz(cb)
483- let aM = cc._1
484- let bC = cc._2
485- let cd = valueOrElse(getInteger(aE, W(K, cb)), 0)
486- let ca = (aM + cd)
487- $Tuple2(nil, ca)
488- }
489-
490-
491-
492-@Callable(aH)
493-func onEmissionForGwxStart () = {
494- let bF = as()
495- if ((bF == bF))
496- then if ((aH.caller != C))
497- then throw("permissions denied")
498- else [IntegerEntry(at(), height)]
534+@Callable(aT)
535+func claimReward () = {
536+ let am = ah()
537+ let cy = toString(aT.caller)
538+ let cz = bC(cy)
539+ let aZ = cz._1
540+ let cx = cz._2
541+ let cA = if ((aZ > 0))
542+ then true
543+ else throw("Nothing to claim")
544+ if ((cA == cA))
545+ then {
546+ let cB = 0
547+ let cC = {
548+ let cm = invoke(aQ, "claim", [H], nil)
549+ if ($isInstanceOf(cm, "Int"))
550+ then cm
551+ else throw(($getType(cm) + " couldn't be cast to Int"))
552+ }
553+ let cD = (aZ + cC)
554+ $Tuple2(([ScriptTransfer(aT.caller, cD, fromBase58String(am[Y])), aX("claim", cy, aZ, aT)] ++ cx), [cD, cB])
555+ }
499556 else throw("Strict value is not equal to itself.")
500557 }
501558
502559
503560
504-@Callable(aH)
505-func tradeReward (bJ,bK) = {
506- let bF = as()
507- if ((bF == bF))
561+@Callable(aT)
562+func claimRewardREADONLY (cy) = {
563+ let cE = bC(cy)
564+ let aZ = cE._1
565+ let cx = cE._2
566+ let cF = valueOrElse(getInteger(aQ, T(H, cy)), 0)
567+ let cD = (aZ + cF)
568+ $Tuple2(nil, cD)
569+ }
570+
571+
572+
573+@Callable(aT)
574+func latestFinalizedPeriodREADONLY (cy) = $Tuple2(nil, valueOrElse(getInteger(this, au()), -1))
575+
576+
577+
578+@Callable(aT)
579+func latestFinalizedPeriodInfoREADONLY (cy) = $Tuple2(nil, k(aG()))
580+
581+
582+
583+@Callable(aT)
584+func calcGwxParamsREADONLY (cG,cH,cI) = {
585+ let cJ = (cH + cI)
586+ let cK = -(fraction(cG, b, cI))
587+ let cL = (fraction(cG, b, cI) * cJ)
588+ $Tuple2(nil, [cK, cL, bB()])
589+ }
590+
591+
592+
593+@Callable(aT)
594+func calcGwxAmountStartREADONLY (cM,cN,cO) = {
595+ let cP = fraction(cN, c, cO)
596+ let bO = fraction(cM, cP, c)
597+ $Tuple2(nil, [bO])
598+ }
599+
600+
601+
602+@Callable(aT)
603+func onEmissionForGwxStart () = if ((aT.caller != z))
604+ then throw("permissions denied")
605+ else [IntegerEntry(an(), height)]
606+
607+
608+
609+@Callable(aT)
610+func latestPeriodEmissionRewardsREADONLY (cy) = {
611+ let aD = bB()
612+ $Tuple2(nil, [h(aE(aD))])
613+ }
614+
615+
616+
617+@Callable(aT)
618+func calcD (cQ,cR,cS,cT,cU) = {
619+ let cV = toBigInt(2)
620+ let cW = parseBigIntValue(cT)
621+ let cX = parseBigIntValue(cU)
622+ let cY = parseBigIntValue(cQ)
623+ let cZ = parseBigIntValue(cR)
624+ let da = (parseBigIntValue(cS) * cW)
625+ let bg = (cY + cZ)
626+ if ((bg == d))
627+ then $Tuple2(nil, toString(d))
628+ else {
629+ let db = (da * cV)
630+ let dc = [0, 1, 2, 3, 4, 5, 6]
631+ func dd (de,df) = {
632+ let dg = de
633+ let dh = dg._1
634+ let di = dg._2
635+ let dj = dg._3
636+ if ((dj != unit))
637+ then de
638+ else {
639+ let dk = (((dh * dh) * dh) / (((cY * cZ) * cV) * cV))
640+ let dl = (((((db * bg) / cW) + (dk * cV)) * dh) / ((((db - cW) * dh) / cW) + ((cV + toBigInt(1)) * dk)))
641+ let dm = t((dl - value(dh)))
642+ if ((cX >= dm))
643+ then $Tuple3(dl, dh, df)
644+ else $Tuple3(dl, dh, unit)
645+ }
646+ }
647+
648+ let dn = {
649+ let do = dc
650+ let dp = size(do)
651+ let dq = $Tuple3(bg, unit, unit)
652+ func dr (ds,dt) = if ((dt >= dp))
653+ then ds
654+ else dd(ds, do[dt])
655+
656+ func du (ds,dt) = if ((dt >= dp))
657+ then ds
658+ else throw("List size exceeds 7")
659+
660+ du(dr(dr(dr(dr(dr(dr(dr(dq, 0), 1), 2), 3), 4), 5), 6), 7)
661+ }
662+ let dl = dn._1
663+ let di = dn._2
664+ let dj = dn._3
665+ if ((dj != unit))
666+ then $Tuple2(nil, toString(dl))
667+ else {
668+ let dm = t((dl - value(di)))
669+ throw(("D calculation error, dDiff = " + toString(dm)))
670+ }
671+ }
672+ }
673+
674+
675+
676+@Callable(aT)
677+func tradeReward (bI,bJ) = {
678+ let dv = (size(bI) == size(bJ))
679+ let dw = valueOrElse(getInteger(aW()), 0)
680+ let dx = aT.payments[0]
681+ let dy = dx.assetId
682+ let dz = dx.amount
683+ let bL = [if ((dw >= size(bI)))
684+ then true
685+ else q("Too many recipients"), if (dv)
686+ then true
687+ else q("Arguments size mismatch"), if ((dy == ag))
688+ then true
689+ else q("Wrong asset payment")]
690+ if ((bL == bL))
508691 then {
509- let ce = (size(bJ) == size(bK))
510- let cf = valueOrElse(getInteger(aJ()), 0)
511- let cg = aH.payments[0]
512- let ch = cg.assetId
513- let ci = cg.amount
514- let bM = [if ((cf >= size(bJ)))
515- then true
516- else m("Too many recipients"), if (ce)
517- then true
518- else m("Arguments size mismatch"), if ((ch == aj))
519- then true
520- else m("Wrong asset payment")]
692+ let bM = invoke(this, "tradeRewardInternal", [dz, bI, bJ, 0], nil)
521693 if ((bM == bM))
522- then {
523- let bN = invoke(this, "tradeRewardInternal", [ci, bJ, bK, 0], nil)
524- if ((bN == bN))
525- then $Tuple2(nil, bN)
526- else throw("Strict value is not equal to itself.")
527- }
694+ then $Tuple2(nil, bM)
528695 else throw("Strict value is not equal to itself.")
529696 }
530697 else throw("Strict value is not equal to itself.")
532699
533700
534701
535-@Callable(aH)
702+@Callable(aT)
536703 func claimTradingReward () = {
537- let bF = as()
538- if ((bF == bF))
539- then {
540- let aw = aH.caller
541- let cj = toString(aw)
542- let bD = ba(cj)
543- if ((bD > 0))
544- then $Tuple2([ScriptTransfer(aw, bD, aj), IntegerEntry(aI(cj), 0)], bD)
545- else m("nothing to claim")
546- }
547- else throw("Strict value is not equal to itself.")
704+ let aV = aT.caller
705+ let dA = toString(aV)
706+ let dB = bG(dA)
707+ if ((dB > 0))
708+ then $Tuple2([ScriptTransfer(aV, dB, ag), IntegerEntry(aU(dA), 0)], dB)
709+ else q("nothing to claim")
548710 }
549711
550712
551713
552-@Callable(aH)
553-func claimTradingRewardREADONLY (aw) = $Tuple2(nil, ba(aw))
714+@Callable(aT)
715+func claimTradingRewardREADONLY (aV) = $Tuple2(nil, bG(aV))
554716
555717
556-
557-@Callable(aH)
558-func suspend (ck) = {
559- let bG = aW(aH)
560- if ((bG == bG))
561- then $Tuple2([BooleanEntry(aq, ck)], ck)
562- else throw("Strict value is not equal to itself.")
563- }
564-
565-
566-@Verifier(cl)
567-func cm () = {
568- let cn = {
569- let aS = aU()
570- if ($isInstanceOf(aS, "ByteVector"))
718+@Verifier(dC)
719+func dD () = {
720+ let dE = {
721+ let bf = bh()
722+ if ($isInstanceOf(bf, "ByteVector"))
571723 then {
572- let aY = aS
573- aY
724+ let bl = bf
725+ bl
574726 }
575- else if ($isInstanceOf(aS, "Unit"))
576- then cl.senderPublicKey
727+ else if ($isInstanceOf(bf, "Unit"))
728+ then dC.senderPublicKey
577729 else throw("Match error")
578730 }
579- sigVerify(cl.bodyBytes, cl.proofs[0], cn)
731+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
580732 }
581733
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 1000
77
88 let c = 100000000
99
10-let d = toBigInt(c)
10+let d = toBigInt(0)
1111
12-let e = toBigInt(0)
12+let e = 0
1313
14-let f = 0
14+let f = 1
1515
16-let g = 1
16+let g = "WAVES"
1717
18-let h = 1000000000000000000
19-
20-let i = toBigInt(h)
21-
22-let j = "WAVES"
23-
24-func k (l) = makeString(["gwx_reward.ride:", l], " ")
18+func h (i) = valueOrElse(getInteger(this, i), 0)
2519
2620
27-func m (l) = throw(k(l))
21+func j (i) = valueOrErrorMessage(getInteger(this, i), (("mandatory this." + i) + " is not defined"))
2822
2923
30-func n (o) = valueOrElse(getInteger(this, o), 0)
24+func k (i) = valueOrElse(getString(this, i), "")
3125
3226
33-func p (o) = valueOrErrorMessage(getInteger(this, o), k((("mandatory this." + o) + " is not defined")))
27+func l (i) = valueOrErrorMessage(getString(this, i), (("mandatory this." + i) + " is not defined"))
3428
3529
36-func q (o) = valueOrElse(getString(this, o), "")
30+func m (n) = if ((n == g))
31+ then unit
32+ else fromBase58String(n)
3733
3834
39-func r (o) = valueOrErrorMessage(getString(this, o), k((("mandatory this." + o) + " is not defined")))
35+func o (p) = makeString(["gwx_reward.ride:", p], " ")
4036
4137
42-func s (t) = if ((t == j))
43- then unit
44- else fromBase58String(t)
38+func q (p) = throw(o(p))
4539
4640
47-func u (v) = if ((0 > v))
48- then -(v)
49- else v
41+func r (s) = if ((0 > s))
42+ then -(s)
43+ else s
5044
5145
52-func w (v) = if ((e > v))
53- then -(v)
54- else v
46+func t (s) = if ((d > s))
47+ then -(s)
48+ else s
5549
5650
57-let x = "%s__maxDepth"
51+let u = "%s__maxDepth"
5852
59-let y = 30
53+let v = 30
6054
61-let z = valueOrElse(getInteger(this, x), y)
55+let w = valueOrElse(getInteger(this, u), v)
6256
63-func A () = "%s%s__config__factoryAddress"
57+func x () = "%s%s__config__factoryAddress"
6458
6559
66-let B = r(A())
60+let y = l(x())
6761
68-let C = addressFromStringValue(B)
62+let z = addressFromStringValue(y)
6963
70-func D () = "%s%s__config__emissionAddress"
64+func A () = "%s%s__config__emissionAddress"
7165
7266
73-func E () = makeString(["%s", "votingEmissionContract"], a)
67+func B () = makeString(["%s", "votingEmissionContract"], a)
7468
7569
76-let F = addressFromStringValue(getStringValue(C, E()))
70+let C = addressFromStringValue(getStringValue(z, B()))
7771
78-func G (H) = makeString(["%s%s%s", "mapping", "num2user", toString(H)], a)
72+func D (E) = makeString(["%s%s%s", "mapping", "num2user", toString(E)], a)
7973
8074
81-let I = makeString(["%s%s", "referral", "programName"], a)
75+let F = makeString(["%s%s", "referral", "programName"], a)
8276
83-let J = "wxlock"
77+let G = "wxlock"
8478
85-let K = valueOrElse(getString(this, I), J)
79+let H = valueOrElse(getString(this, F), G)
8680
87-let L = makeString(["%s%s", "referral", "minGWxAmount"], a)
81+let I = makeString(["%s%s", "referral", "minGWxAmount"], a)
8882
89-let M = (500 * c)
83+let J = (500 * c)
84+
85+let K = valueOrElse(getInteger(this, I), J)
86+
87+let L = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
88+
89+let M = 50
9090
9191 let N = valueOrElse(getInteger(this, L), M)
9292
93-let O = makeString(["%s%s", "referral", "referrerRewardPermille"], a)
93+let O = makeString(["%s%s", "referral", "referralRewardPermille"], a)
9494
9595 let P = 50
9696
9797 let Q = valueOrElse(getInteger(this, O), P)
9898
99-let R = makeString(["%s%s", "referral", "referralRewardPermille"], a)
100-
101-let S = 50
102-
103-let T = valueOrElse(getInteger(this, R), S)
104-
105-func U (V) = makeString(["%s%s%s", "referrer", K, V], a)
99+func R (S) = makeString(["%s%s%s", "referrer", H, S], a)
106100
107101
108-func W (X,Y) = makeString(["%s%s%s", "unclaimedReferral", X, Y], a)
102+func T (U,V) = makeString(["%s%s%s", "unclaimedReferral", U, V], a)
109103
110104
111-let Z = r(D())
105+let W = l(A())
112106
113-let aa = addressFromStringValue(Z)
107+let X = addressFromStringValue(W)
114108
115-let ab = 1
109+let Y = 1
116110
117-let ac = 2
111+let Z = 2
118112
119-let ad = 3
113+let aa = 3
120114
121-let ae = 4
115+let ab = 4
122116
123-func af () = "%s__config"
117+func ac () = "%s__config"
124118
125119
126-func ag () = addressFromStringValue(valueOrErrorMessage(getString(this, D()), (("mandatory this." + D()) + " is not defined")))
120+func ad () = addressFromStringValue(valueOrErrorMessage(getString(this, A()), (("mandatory this." + A()) + " is not defined")))
127121
128122
129-let ah = ag()
123+let ae = ad()
130124
131-let ai = split(value(getString(ah, af())), a)[1]
125+let af = split(value(getString(ae, ac())), a)[1]
132126
133-let aj = fromBase58String(ai)
127+let ag = fromBase58String(af)
134128
135-func ak () = split(r(af()), a)
129+func ah () = split(l(ac()), a)
136130
137131
138-func al (ai,am,an,z) = makeString(["%s%s%s%d", ai, am, an, toString(z)], a)
132+func ai (af,aj,ak,w) = makeString(["%s%s%s%d", af, aj, ak, toString(w)], a)
139133
140134
141-func ao () = {
142- let ap = ak()
143- valueOrErrorMessage(addressFromString(ap[ad]), "boosting contract address is not defined")
135+func al () = {
136+ let am = ah()
137+ valueOrErrorMessage(addressFromString(am[aa]), "boosting contract address is not defined")
144138 }
145139
146140
147-let aq = "%s__suspension"
148-
149-let ar = valueOrElse(getBoolean(this, aq), false)
150-
151-func as () = if (!(ar))
152- then true
153- else m("suspended")
141+func an () = "%s%s__gwxRewardEmissionPart__startHeight"
154142
155143
156-func at () = "%s%s__gwxRewardEmissionPart__startHeight"
144+func ao () = "%s__nextUserNum"
157145
158146
159-func au () = "%s__nextUserNum"
147+func ap () = "%s%s__ratePerBlock__current"
160148
161149
162-func av (aw) = makeString(["%s%s%s__mapping__user2num", toString(aw)], a)
150+func aq () = "%s%s__gwxHoldersReward__current"
163151
164152
165-func ax () = "%s%s__ratePerBlock__current"
153+func ar () = "%s%s__gwxHoldersReward__next"
166154
167155
168-func ay () = "%s%s__gwxHoldersReward__current"
156+func as () = "%s%s__poolWeight__GWXvirtualPOOL"
169157
170158
171-func az () = "%s%s__gwxHoldersReward__next"
159+func at () = "%s__nextProcessedUser"
172160
173161
174-func aA () = "%s%s__poolWeight__GWXvirtualPOOL"
162+func au () = "%s__latestPeriod"
175163
176164
177-func aB (aC) = makeString(["%s%d", "userUnclaimed", toString(aC)], a)
165+func av () = "%s__nextPeriod"
178166
179167
180-func aD () = makeString(["%s%s", "config", "referralsContractAddress"], a)
168+func aw () = "%s__processingStage"
181169
182170
183-let aE = addressFromStringValue(r(aD()))
184-
185-func aF (aG,aH) = makeString(["%s%s%s%s", "tradingReward", "history", aG, toBase58String(aH.transactionId)], a)
171+func ax () = "%s__nextProcessedPeriod"
186172
187173
188-func aI (aw) = makeString(["%s%s", "tradingReward", aw], a)
174+func ay (az) = makeString(["%s%d", "userUnclaimed", toString(az)], a)
189175
190176
191-func aJ () = makeString(["%s", "maxRecipients"], a)
177+func aA (az) = makeString(["%s%d__nextClaimedPeriod", toString(az)], a)
192178
193179
194-func aK (aL,aG,aM,aH) = {
195- let aN = makeString(["%s%s%s%s__history", aL, aG, toBase58String(aH.transactionId)], a)
196- let aO = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aM)], a)
197- StringEntry(aN, aO)
180+func aB (az) = makeString(["%s%d__lastProcessedPeriod", toString(az)], a)
181+
182+
183+func aC (aD) = makeString(["%s%d__startHeightForPeriod", toString(aD)], a)
184+
185+
186+func aE (aD) = makeString(["%s%d__auxEmissionReward", toString(aD)], a)
187+
188+
189+func aF (aD) = makeString(["%s%d__totalAmountForPeriod", toString(aD)], a)
190+
191+
192+func aG () = "%s__lastPayoutInfo"
193+
194+
195+func aH (aD,aI,aJ) = makeString(["%d%d%d", toString(aD), toString(aI), toString(aJ)], a)
196+
197+
198+func aK (aD) = makeString(["%s%s%d__payouts__history", toString(aD)], a)
199+
200+
201+func aL (aD) = makeString(["%s%d__totalWeightForPeriod", toString(aD)], a)
202+
203+
204+func aM (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "k", toString(aD)], a)
205+
206+
207+func aN (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "b", toString(aD)], a)
208+
209+
210+func aO (aD,az) = makeString(["%s%d%s%d__paramByPeriod", toString(az), "weight", toString(aD)], a)
211+
212+
213+func aP () = makeString(["%s%s", "config", "referralsContractAddress"], a)
214+
215+
216+let aQ = addressFromStringValue(l(aP()))
217+
218+func aR (aS,aT) = makeString(["%s%s%s%s", "tradingReward", "history", aS, toBase58String(aT.transactionId)], a)
219+
220+
221+func aU (aV) = makeString(["%s%s", "tradingReward", aV], a)
222+
223+
224+func aW () = makeString(["%s", "maxRecipients"], a)
225+
226+
227+func aX (aY,aS,aZ,aT) = {
228+ let ba = makeString(["%s%s%s%s__history", aY, aS, toBase58String(aT.transactionId)], a)
229+ let bb = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aZ)], a)
230+ StringEntry(ba, bb)
198231 }
199232
200233
201-func aP () = "%s__managerPublicKey"
234+func bc () = "%s__managerPublicKey"
202235
203236
204-func aQ () = "%s__managerVaultAddress"
237+func bd () = "%s__managerVaultAddress"
205238
206239
207-func aR () = {
208- let aS = getString(aQ())
209- if ($isInstanceOf(aS, "String"))
240+func be () = {
241+ let bf = getString(bd())
242+ if ($isInstanceOf(bf, "String"))
210243 then {
211- let aT = aS
212- addressFromStringValue(aT)
244+ let bg = bf
245+ addressFromStringValue(bg)
213246 }
214247 else this
215248 }
216249
217250
218-func aU () = {
219- let aV = aR()
220- let aS = getString(aV, aP())
221- if ($isInstanceOf(aS, "String"))
251+func bh () = {
252+ let bi = be()
253+ let bf = getString(bi, bc())
254+ if ($isInstanceOf(bf, "String"))
222255 then {
223- let aT = aS
224- fromBase58String(aT)
256+ let bg = bf
257+ fromBase58String(bg)
225258 }
226- else if ($isInstanceOf(aS, "Unit"))
259+ else if ($isInstanceOf(bf, "Unit"))
227260 then unit
228261 else throw("Match error")
229262 }
230263
231264
232-func aW (aH) = {
233- let aX = throw("Permission denied")
234- let aS = aU()
235- if ($isInstanceOf(aS, "ByteVector"))
265+func bj (aT) = {
266+ let bk = throw("Permission denied")
267+ let bf = bh()
268+ if ($isInstanceOf(bf, "ByteVector"))
236269 then {
237- let aY = aS
238- if ((aH.callerPublicKey == aY))
270+ let bl = bf
271+ if ((aT.callerPublicKey == bl))
239272 then true
240- else aX
273+ else bk
241274 }
242- else if ($isInstanceOf(aS, "Unit"))
243- then if ((aH.caller == this))
275+ else if ($isInstanceOf(bf, "Unit"))
276+ then if ((aT.caller == this))
244277 then true
245- else aX
278+ else bk
246279 else throw("Match error")
247280 }
248281
249282
250-func aZ (an,aw) = {
251- let o = makeString(["%s%s%s", "mapping", "user2num", aw], a)
252- parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(an)), o), ((("User address " + aw) + " is not found in boosting contract data, key=") + o)))
283+func bm (bn,bo,aD,az) = {
284+ let bp = aB(az)
285+ let bq = aM(aD, az)
286+ let br = getInteger(bn, bq)
287+ let bs = aO(aD, az)
288+ if (isDefined(br))
289+ then {
290+ let bt = value(br)
291+ let bu = value(getInteger(bn, aN(aD, az)))
292+ let bv = ((bt * bo) + bu)
293+ if ((bv > 0))
294+ then $Tuple2((bv / b), [IntegerEntry(bp, aD), IntegerEntry(bs, bv)])
295+ else $Tuple2(0, nil)
296+ }
297+ else {
298+ let bw = getInteger(this, bp)
299+ if (if (isDefined(bw))
300+ then (aD >= value(bw))
301+ else false)
302+ then {
303+ let bx = value(bw)
304+ let bt = value(getInteger(bn, aM(bx, az)))
305+ let bu = value(getInteger(bn, aN(bx, az)))
306+ let bv = ((bt * bo) + bu)
307+ if ((bv > 0))
308+ then $Tuple2((bv / b), [IntegerEntry(bs, bv)])
309+ else $Tuple2(0, nil)
310+ }
311+ else $Tuple2(0, nil)
312+ }
253313 }
254314
255315
256-func ba (aw) = valueOrElse(getInteger(this, aI(aw)), 0)
257-
258-
259-func bb () = makeString(["%s", "rewardPerGwxIntegral"], a)
260-
261-
262-func bc () = {
263- let bd = "%s%s__gwx__total"
264- getInteger(ao(), bd)
316+func by (bn,bo,aD,az) = {
317+ let bs = aO(aD, az)
318+ let bz = getInteger(bs)
319+ let bf = bz
320+ if ($isInstanceOf(bf, "Unit"))
321+ then 0
322+ else if ($isInstanceOf(bf, "Int"))
323+ then {
324+ let bv = bf
325+ (bv / b)
326+ }
327+ else throw("Match error")
265328 }
266329
267330
268-func be (aw) = {
269- func bf (aw) = makeString(["%s%s__gwxAmountTotal", toString(aw)], a)
270-
271- getInteger(ao(), bf(aw))
331+func bA (ak,aV) = {
332+ let i = makeString(["%s%s%s", "mapping", "user2num", aV], a)
333+ parseIntValue(valueOrErrorMessage(getString(Address(fromBase58String(ak)), i), ((("User address " + aV) + " is not found in boosting contract data, key=") + i)))
272334 }
273335
274336
275-func bg () = {
276- let bh = valueOrElse({
277- let aS = getString(this, bb())
278- if ($isInstanceOf(aS, "String"))
337+func bB () = h(av())
338+
339+
340+func bC (aV) = {
341+ let am = ah()
342+ let bD = bA(am[aa], aV)
343+ let bE = getInteger(ay(bD))
344+ let bf = bE
345+ if ($isInstanceOf(bf, "Unit"))
346+ then $Tuple2(0, nil)
347+ else if ($isInstanceOf(bf, "Int"))
279348 then {
280- let aT = aS
281- parseBigInt(aT)
349+ let bF = bf
350+ $Tuple2(bF, [IntegerEntry(ay(bD), 0)])
282351 }
283- else if ($isInstanceOf(aS, "Unit"))
284- then unit
285- else throw("Match error")
286- }, e)
287- let bi = valueOrErrorMessage(getInteger(this, at()), k(("invalid " + at())))
288- let bj = valueOrErrorMessage(getInteger(aa, ax()), k(("invalid " + ax())))
289- let bk = valueOrElse(getInteger(aa, ay()), 0)
290- let bl = valueOrElse(bc(), 0)
291- let bm = toBigInt((height - bi))
292- let bn = toBigInt(bl)
293- let bo = (bh + (if ((bn == e))
294- then e
295- else fraction(bm, ((toBigInt(bj) * toBigInt(bk)) * i), (bn * d))))
296- $Tuple2([IntegerEntry(at(), height), StringEntry(bb(), toString(bo))], bo)
352+ else throw("Match error")
297353 }
298354
299355
300-func bp (aw) = makeString(["%s%s", "rewardPerGwxIntegralUserLast", toString(aw)], a)
356+func bG (aV) = valueOrElse(getInteger(this, aU(aV)), 0)
301357
302358
303-func bq (aw,br) = {
304- let bs = bg()
305- let bt = bs._1
306- let bo = bs._2
307- let bu = {
308- let aS = getString(this, bp(aw))
309- if ($isInstanceOf(aS, "String"))
359+@Callable(aT)
360+func tradeRewardInternal (bH,bI,bJ,bK) = if ((bK == size(bI)))
361+ then nil
362+ else {
363+ let bL = [if ((aT.caller == this))
364+ then true
365+ else q("Permission denied"), if ((bH >= bJ[bK]))
366+ then true
367+ else q("insufficient payment assetId")]
368+ if ((bL == bL))
310369 then {
311- let aT = aS
312- valueOrErrorMessage(parseBigInt(aT), k("invalid user last integral"))
370+ let bM = invoke(this, "tradeRewardInternal", [(bH - bJ[bK]), bI, bJ, (bK + 1)], nil)
371+ if ((bM == bM))
372+ then {
373+ let bN = aR(bI[bK], aT)
374+ let aV = addressFromStringValue(bI[bK])
375+ $Tuple2([IntegerEntry(bN, bJ[bK]), IntegerEntry(aU(bI[bK]), bJ[bK])], bM)
376+ }
377+ else throw("Strict value is not equal to itself.")
313378 }
314- else if ($isInstanceOf(aS, "Unit"))
315- then bo
316- else throw("Match error")
379+ else throw("Strict value is not equal to itself.")
317380 }
318- let bv = getString(ao(), av(aw))
319- let bw = valueOrElse(getInteger(aB(br)), 0)
320- let bx = valueOrElse(be(aw), 0)
321- let by = (toInt(fraction(toBigInt(bx), (bo - bu), i)) + bw)
322- $Tuple2(([StringEntry(bp(aw), toString(bo))] ++ bt), by)
323- }
324381
325382
326-func bz (bA) = {
327- let aw = valueOrErrorMessage(addressFromString(bA), k("invalid user address"))
328- let ap = ak()
329- let br = aZ(ap[ad], bA)
330- let bB = bq(aw, br)
331- let bC = bB._1
332- let bD = bB._2
333- $Tuple2(bD, ([IntegerEntry(aB(br), 0)] ++ bC))
334- }
335383
336-
337-@Callable(aH)
338-func refreshUserReward (bE,br) = {
339- let bF = as()
340- if ((bF == bF))
341- then {
342- let bG = if ((aH.caller == ao()))
343- then true
344- else m("permission denied")
345- if ((bG == bG))
346- then {
347- let bH = bq(Address(bE), br)
348- let bC = bH._1
349- let bD = bH._2
350- $Tuple2(([IntegerEntry(aB(br), bD)] ++ bC), bD)
351- }
352- else throw("Strict value is not equal to itself.")
353- }
384+@Callable(aT)
385+func updateReferralActivity (aV,bO) = {
386+ let bP = getString(aQ, R(aV))
387+ let bQ = if ((bP == unit))
388+ then unit
389+ else invoke(aQ, "updateReferralActivity", [H, aV, (bO >= K)], nil)
390+ if ((bQ == bQ))
391+ then $Tuple2(nil, unit)
354392 else throw("Strict value is not equal to itself.")
355393 }
356394
357395
358396
359-@Callable(aH)
360-func tradeRewardInternal (bI,bJ,bK,bL) = {
361- let bF = as()
362- if ((bF == bF))
363- then if ((bL == size(bJ)))
364- then nil
365- else {
366- let bM = [if ((aH.caller == this))
367- then true
368- else m("Permission denied"), if ((bI >= bK[bL]))
369- then true
370- else m("insufficient payment assetId")]
371- if ((bM == bM))
372- then {
373- let bN = invoke(this, "tradeRewardInternal", [(bI - bK[bL]), bJ, bK, (bL + 1)], nil)
374- if ((bN == bN))
375- then {
376- let bO = aF(bJ[bL], aH)
377- let aw = addressFromStringValue(bJ[bL])
378- $Tuple2([IntegerEntry(bO, bK[bL]), IntegerEntry(aI(bJ[bL]), bK[bL])], bN)
379- }
380- else throw("Strict value is not equal to itself.")
381- }
382- else throw("Strict value is not equal to itself.")
397+@Callable(aT)
398+func finalizeHelper () = {
399+ let bR = valueOrElse(getInteger(aw()), e)
400+ let bS = h(ax())
401+ let bT = h(at())
402+ let bU = h(au())
403+ let bV = valueOrElse(getInteger(al(), ao()), 0)
404+ let bW = aL(bS)
405+ let bX = h(aL(bS))
406+ let bo = h(aC(bS))
407+ if ((bS > bU))
408+ then $Tuple2(nil, false)
409+ else if ((bR == e))
410+ then {
411+ let bY = bm(al(), bo, bS, bT)
412+ let bZ = bY._1
413+ let ca = bY._2
414+ let cb = (bX + bZ)
415+ let cc = if (((bV - 1) > bT))
416+ then [IntegerEntry(at(), (bT + 1))]
417+ else [IntegerEntry(aw(), f), IntegerEntry(at(), 0)]
418+ $Tuple2((([IntegerEntry(bW, cb)] ++ cc) ++ ca), true)
383419 }
420+ else if ((bR == f))
421+ then {
422+ let bZ = by(al(), bo, bS, bT)
423+ let cd = fraction(h(aF(bS)), bZ, bX)
424+ let ce = fraction(h(aE(bS)), bZ, bX)
425+ let cf = (ce + cd)
426+ let bE = getInteger(ay(bT))
427+ let aV = getStringValue(al(), D(bT))
428+ let bP = getString(aQ, R(aV))
429+ let bQ = if ((bP == unit))
430+ then unit
431+ else invoke(aQ, "updateReferralActivity", [H, aV, (bZ >= K)], nil)
432+ if ((bQ == bQ))
433+ then {
434+ let cg = if (if ((bP == unit))
435+ then true
436+ else (K > bZ))
437+ then unit
438+ else {
439+ let ch = fraction(cf, N, b)
440+ let ci = fraction(cf, Q, b)
441+ invoke(aQ, "incUnclaimed", [H, aV, ch, ci], nil)
442+ }
443+ if ((cg == cg))
444+ then {
445+ let cj = [IntegerEntry(ay(bT), (valueOrElse(bE, 0) + cf))]
446+ let cc = if (((bV - 1) > bT))
447+ then [IntegerEntry(at(), (bT + 1))]
448+ else [IntegerEntry(ax(), (bS + 1)), IntegerEntry(at(), 0), DeleteEntry(aw())]
449+ $Tuple2((cj ++ cc), true)
450+ }
451+ else throw("Strict value is not equal to itself.")
452+ }
453+ else throw("Strict value is not equal to itself.")
454+ }
455+ else throw("invalid processing stage")
456+ }
457+
458+
459+
460+@Callable(aT)
461+func finalizeWrapper (ck) = {
462+ let cl = {
463+ let cm = invoke(this, "finalizeHelper", nil, nil)
464+ if ($isInstanceOf(cm, "Boolean"))
465+ then cm
466+ else throw(($getType(cm) + " couldn't be cast to Boolean"))
467+ }
468+ if ((cl == cl))
469+ then if (!(cl))
470+ then if ((ck == w))
471+ then throw("Nothing to process")
472+ else $Tuple2(nil, unit)
473+ else if ((ck > 0))
474+ then $Tuple2(nil, invoke(this, "finalizeWrapper", [(ck - 1)], nil))
475+ else $Tuple2(nil, unit)
384476 else throw("Strict value is not equal to itself.")
385477 }
386478
387479
388480
389-@Callable(aH)
390-func updateReferralActivity (aw,bP) = {
391- let bF = as()
392- if ((bF == bF))
393- then {
394- let bQ = getString(aE, U(aw))
395- let bR = if ((bQ == unit))
396- then unit
397- else invoke(aE, "updateReferralActivity", [K, aw, (bP >= N)], nil)
398- if ((bR == bR))
399- then $Tuple2(nil, unit)
400- else throw("Strict value is not equal to itself.")
401- }
402- else throw("Strict value is not equal to itself.")
403- }
481+@Callable(aT)
482+func processPendingPeriodsAndUsers () = $Tuple2(nil, invoke(this, "finalizeWrapper", [w], nil))
404483
405484
406485
407-@Callable(aH)
408-func processPendingPeriodsAndUsers () = $Tuple2(nil, m("deprecated"))
409-
410-
411-
412-@Callable(aH)
413-func claimReward () = {
414- let bF = as()
415- if ((bF == bF))
486+@Callable(aT)
487+func deposit () = {
488+ let cn = if ((aT.caller == C))
489+ then true
490+ else bj(aT)
491+ if ((cn == cn))
416492 then {
417- let ap = ak()
418- let aw = aH.caller
419- let bA = toString(aw)
420- let bS = bz(bA)
421- let aM = bS._1
422- let bC = bS._2
423- let bT = if ((aM > 0))
424- then true
425- else throw("nothing to claim")
426- if ((bT == bT))
493+ let aD = bB()
494+ let co = (height - j(an()))
495+ let cp = valueOrErrorMessage(getInteger(X, ap()), (("mandatory emission_contract." + ap()) + " is not defined"))
496+ let cq = valueOrElse(getInteger(X, aq()), 0)
497+ if ((cq == cq))
427498 then {
428- let bx = {
429- let bU = invoke(ao(), "getUserGwxAmount", [bA], nil)
430- if ($isInstanceOf(bU, "Int"))
431- then bU
432- else throw(($getType(bU) + " couldn't be cast to Int"))
433- }
434- let bQ = getString(aE, U(bA))
435- let bR = if ((bQ == unit))
436- then unit
437- else invoke(aE, "updateReferralActivity", [K, aw, (bx >= N)], nil)
438- if ((bR == bR))
499+ let cr = fraction((co * cq), cp, c)
500+ let cs = if ((cr > 0))
501+ then invoke(X, "emit", [cr], nil)
502+ else unit
503+ if ((cs == cs))
439504 then {
440- let bV = if (if ((bQ == unit))
441- then true
442- else (N > bx))
443- then unit
444- else {
445- let bW = fraction(aM, Q, b)
446- let bX = fraction(aM, T, b)
447- invoke(aE, "incUnclaimed", [K, aw, bW, bX], nil)
448- }
449- if ((bV == bV))
505+ let ct = 0
506+ let cu = aH(aD, ct, cr)
507+ let cv = {
508+ let cm = invoke(X, "gwxHoldersRewardUpdate", nil, nil)
509+ if ($isInstanceOf(cm, "Boolean"))
510+ then cm
511+ else throw(($getType(cm) + " couldn't be cast to Boolean"))
512+ }
513+ if ((cv == cv))
450514 then {
451- let bY = invoke(aa, "emit", [aM], nil)
452- if ((bY == bY))
453- then {
454- let bZ = {
455- let bU = invoke(aE, "claim", [K], nil)
456- if ($isInstanceOf(bU, "Int"))
457- then bU
458- else throw(($getType(bU) + " couldn't be cast to Int"))
459- }
460- if ((bZ == bZ))
461- then {
462- let ca = (aM + bZ)
463- $Tuple2(([ScriptTransfer(aH.caller, aM, aj), aK("claim", bA, ca, aH)] ++ bC), ca)
464- }
465- else throw("Strict value is not equal to itself.")
466- }
467- else throw("Strict value is not equal to itself.")
515+ let cw = (ct + cr)
516+ let cx = if (if ((cw == 0))
517+ then !(cv)
518+ else false)
519+ then nil
520+ else [IntegerEntry(au(), aD), IntegerEntry(aC(aD), height), IntegerEntry(aE(aD), cr), IntegerEntry(an(), height), IntegerEntry(aF(aD), ct), IntegerEntry(av(), (aD + 1)), StringEntry(aG(), cu), StringEntry(aK(aD), cu)]
521+ $Tuple2(cx, unit)
468522 }
469523 else throw("Strict value is not equal to itself.")
470524 }
471525 else throw("Strict value is not equal to itself.")
472526 }
473527 else throw("Strict value is not equal to itself.")
474528 }
475529 else throw("Strict value is not equal to itself.")
476530 }
477531
478532
479533
480-@Callable(aH)
481-func claimRewardREADONLY (cb) = {
482- let cc = bz(cb)
483- let aM = cc._1
484- let bC = cc._2
485- let cd = valueOrElse(getInteger(aE, W(K, cb)), 0)
486- let ca = (aM + cd)
487- $Tuple2(nil, ca)
488- }
489-
490-
491-
492-@Callable(aH)
493-func onEmissionForGwxStart () = {
494- let bF = as()
495- if ((bF == bF))
496- then if ((aH.caller != C))
497- then throw("permissions denied")
498- else [IntegerEntry(at(), height)]
534+@Callable(aT)
535+func claimReward () = {
536+ let am = ah()
537+ let cy = toString(aT.caller)
538+ let cz = bC(cy)
539+ let aZ = cz._1
540+ let cx = cz._2
541+ let cA = if ((aZ > 0))
542+ then true
543+ else throw("Nothing to claim")
544+ if ((cA == cA))
545+ then {
546+ let cB = 0
547+ let cC = {
548+ let cm = invoke(aQ, "claim", [H], nil)
549+ if ($isInstanceOf(cm, "Int"))
550+ then cm
551+ else throw(($getType(cm) + " couldn't be cast to Int"))
552+ }
553+ let cD = (aZ + cC)
554+ $Tuple2(([ScriptTransfer(aT.caller, cD, fromBase58String(am[Y])), aX("claim", cy, aZ, aT)] ++ cx), [cD, cB])
555+ }
499556 else throw("Strict value is not equal to itself.")
500557 }
501558
502559
503560
504-@Callable(aH)
505-func tradeReward (bJ,bK) = {
506- let bF = as()
507- if ((bF == bF))
561+@Callable(aT)
562+func claimRewardREADONLY (cy) = {
563+ let cE = bC(cy)
564+ let aZ = cE._1
565+ let cx = cE._2
566+ let cF = valueOrElse(getInteger(aQ, T(H, cy)), 0)
567+ let cD = (aZ + cF)
568+ $Tuple2(nil, cD)
569+ }
570+
571+
572+
573+@Callable(aT)
574+func latestFinalizedPeriodREADONLY (cy) = $Tuple2(nil, valueOrElse(getInteger(this, au()), -1))
575+
576+
577+
578+@Callable(aT)
579+func latestFinalizedPeriodInfoREADONLY (cy) = $Tuple2(nil, k(aG()))
580+
581+
582+
583+@Callable(aT)
584+func calcGwxParamsREADONLY (cG,cH,cI) = {
585+ let cJ = (cH + cI)
586+ let cK = -(fraction(cG, b, cI))
587+ let cL = (fraction(cG, b, cI) * cJ)
588+ $Tuple2(nil, [cK, cL, bB()])
589+ }
590+
591+
592+
593+@Callable(aT)
594+func calcGwxAmountStartREADONLY (cM,cN,cO) = {
595+ let cP = fraction(cN, c, cO)
596+ let bO = fraction(cM, cP, c)
597+ $Tuple2(nil, [bO])
598+ }
599+
600+
601+
602+@Callable(aT)
603+func onEmissionForGwxStart () = if ((aT.caller != z))
604+ then throw("permissions denied")
605+ else [IntegerEntry(an(), height)]
606+
607+
608+
609+@Callable(aT)
610+func latestPeriodEmissionRewardsREADONLY (cy) = {
611+ let aD = bB()
612+ $Tuple2(nil, [h(aE(aD))])
613+ }
614+
615+
616+
617+@Callable(aT)
618+func calcD (cQ,cR,cS,cT,cU) = {
619+ let cV = toBigInt(2)
620+ let cW = parseBigIntValue(cT)
621+ let cX = parseBigIntValue(cU)
622+ let cY = parseBigIntValue(cQ)
623+ let cZ = parseBigIntValue(cR)
624+ let da = (parseBigIntValue(cS) * cW)
625+ let bg = (cY + cZ)
626+ if ((bg == d))
627+ then $Tuple2(nil, toString(d))
628+ else {
629+ let db = (da * cV)
630+ let dc = [0, 1, 2, 3, 4, 5, 6]
631+ func dd (de,df) = {
632+ let dg = de
633+ let dh = dg._1
634+ let di = dg._2
635+ let dj = dg._3
636+ if ((dj != unit))
637+ then de
638+ else {
639+ let dk = (((dh * dh) * dh) / (((cY * cZ) * cV) * cV))
640+ let dl = (((((db * bg) / cW) + (dk * cV)) * dh) / ((((db - cW) * dh) / cW) + ((cV + toBigInt(1)) * dk)))
641+ let dm = t((dl - value(dh)))
642+ if ((cX >= dm))
643+ then $Tuple3(dl, dh, df)
644+ else $Tuple3(dl, dh, unit)
645+ }
646+ }
647+
648+ let dn = {
649+ let do = dc
650+ let dp = size(do)
651+ let dq = $Tuple3(bg, unit, unit)
652+ func dr (ds,dt) = if ((dt >= dp))
653+ then ds
654+ else dd(ds, do[dt])
655+
656+ func du (ds,dt) = if ((dt >= dp))
657+ then ds
658+ else throw("List size exceeds 7")
659+
660+ du(dr(dr(dr(dr(dr(dr(dr(dq, 0), 1), 2), 3), 4), 5), 6), 7)
661+ }
662+ let dl = dn._1
663+ let di = dn._2
664+ let dj = dn._3
665+ if ((dj != unit))
666+ then $Tuple2(nil, toString(dl))
667+ else {
668+ let dm = t((dl - value(di)))
669+ throw(("D calculation error, dDiff = " + toString(dm)))
670+ }
671+ }
672+ }
673+
674+
675+
676+@Callable(aT)
677+func tradeReward (bI,bJ) = {
678+ let dv = (size(bI) == size(bJ))
679+ let dw = valueOrElse(getInteger(aW()), 0)
680+ let dx = aT.payments[0]
681+ let dy = dx.assetId
682+ let dz = dx.amount
683+ let bL = [if ((dw >= size(bI)))
684+ then true
685+ else q("Too many recipients"), if (dv)
686+ then true
687+ else q("Arguments size mismatch"), if ((dy == ag))
688+ then true
689+ else q("Wrong asset payment")]
690+ if ((bL == bL))
508691 then {
509- let ce = (size(bJ) == size(bK))
510- let cf = valueOrElse(getInteger(aJ()), 0)
511- let cg = aH.payments[0]
512- let ch = cg.assetId
513- let ci = cg.amount
514- let bM = [if ((cf >= size(bJ)))
515- then true
516- else m("Too many recipients"), if (ce)
517- then true
518- else m("Arguments size mismatch"), if ((ch == aj))
519- then true
520- else m("Wrong asset payment")]
692+ let bM = invoke(this, "tradeRewardInternal", [dz, bI, bJ, 0], nil)
521693 if ((bM == bM))
522- then {
523- let bN = invoke(this, "tradeRewardInternal", [ci, bJ, bK, 0], nil)
524- if ((bN == bN))
525- then $Tuple2(nil, bN)
526- else throw("Strict value is not equal to itself.")
527- }
694+ then $Tuple2(nil, bM)
528695 else throw("Strict value is not equal to itself.")
529696 }
530697 else throw("Strict value is not equal to itself.")
531698 }
532699
533700
534701
535-@Callable(aH)
702+@Callable(aT)
536703 func claimTradingReward () = {
537- let bF = as()
538- if ((bF == bF))
539- then {
540- let aw = aH.caller
541- let cj = toString(aw)
542- let bD = ba(cj)
543- if ((bD > 0))
544- then $Tuple2([ScriptTransfer(aw, bD, aj), IntegerEntry(aI(cj), 0)], bD)
545- else m("nothing to claim")
546- }
547- else throw("Strict value is not equal to itself.")
704+ let aV = aT.caller
705+ let dA = toString(aV)
706+ let dB = bG(dA)
707+ if ((dB > 0))
708+ then $Tuple2([ScriptTransfer(aV, dB, ag), IntegerEntry(aU(dA), 0)], dB)
709+ else q("nothing to claim")
548710 }
549711
550712
551713
552-@Callable(aH)
553-func claimTradingRewardREADONLY (aw) = $Tuple2(nil, ba(aw))
714+@Callable(aT)
715+func claimTradingRewardREADONLY (aV) = $Tuple2(nil, bG(aV))
554716
555717
556-
557-@Callable(aH)
558-func suspend (ck) = {
559- let bG = aW(aH)
560- if ((bG == bG))
561- then $Tuple2([BooleanEntry(aq, ck)], ck)
562- else throw("Strict value is not equal to itself.")
563- }
564-
565-
566-@Verifier(cl)
567-func cm () = {
568- let cn = {
569- let aS = aU()
570- if ($isInstanceOf(aS, "ByteVector"))
718+@Verifier(dC)
719+func dD () = {
720+ let dE = {
721+ let bf = bh()
722+ if ($isInstanceOf(bf, "ByteVector"))
571723 then {
572- let aY = aS
573- aY
724+ let bl = bf
725+ bl
574726 }
575- else if ($isInstanceOf(aS, "Unit"))
576- then cl.senderPublicKey
727+ else if ($isInstanceOf(bf, "Unit"))
728+ then dC.senderPublicKey
577729 else throw("Match error")
578730 }
579- sigVerify(cl.bodyBytes, cl.proofs[0], cn)
731+ sigVerify(dC.bodyBytes, dC.proofs[0], dE)
580732 }
581733

github/deemru/w8io/026f985 
127.78 ms