tx · 5tq82HhAAub5U8fx747UALvg3hLXamtnW4EbEXtMkR9b

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02500000 Waves

2023.08.09 15:25 [2703058] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "5tq82HhAAub5U8fx747UALvg3hLXamtnW4EbEXtMkR9b", "fee": 2500000, "feeAssetId": null, "timestamp": 1691583982522, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "SWHFkjWTusLwgL5ktJWXoeugM8PToZceb8Z1Za8pjJrdHXVqrvk1os71sor1nBfA55zfgfAkxQSSa15osPDDBfW" ], "script": "base64:BgK4LQgCEggKBggIAQEBCBIFCgMBCAISAwoBARIECgIICBIECgIICBIECgIIARIDCgEIEgMKAQgSBAoCCAESAwoBCBIAEgASBQoDCAgEEgMKAQgSAwoBCBIECgIICBIECgIICCIDU0VQIgZTQ0FMRTgiBU1VTFQ4Ig5QT09MV0VJR0hUTVVMVCIQY29udHJhY3RGaWxlbmFtZSIHU0NBTEUxOCIGTVVMVDE4IghNVUxUMThCSSILYmxvY2tzSW5EYXkiDWJsb2Nrc0luTW9udGgiB3dyYXBFcnIiA21zZyIIdGhyb3dFcnIiD2dldFN0cmluZ09yRmFpbCIHYWRkcmVzcyIDa2V5IgxnZXRJbnRPclplcm8iD2dldEludE9yRGVmYXVsdCIKZGVmYXVsdFZhbCIMZ2V0SW50T3JGYWlsIgNhYnMiA3ZhbCIOZW5zdXJlUG9zaXRpdmUiAXYiAW0iG2tleVJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcyIecmVmZXJyYWxzQ29udHJhY3RBZGRyZXNzT3JGYWlsIhZrZXlSZWZlcnJhbFByb2dyYW1OYW1lIhpyZWZlcnJhbFByb2dyYW1OYW1lRGVmYXVsdCITcmVmZXJyYWxQcm9ncmFtTmFtZSIRa2V5RmFjdG9yeUFkZHJlc3MiGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcCIZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcCIUSWR4RmFjdG9yeUNmZ0lkb0RhcHAiFUlkeEZhY3RvcnlDZmdUZWFtRGFwcCIZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcCIVSWR4RmFjdG9yeUNmZ1Jlc3REYXBwIhlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwIhRJZHhGYWN0b3J5Q2ZnRGFvRGFwcCIaSWR4RmFjdG9yeUNmZ01hcmtldGluZ0RhcHAiGklkeEZhY3RvcnlDZmdHd3hSZXdhcmREYXBwIhZJZHhGYWN0b3J5Q2ZnQmlyZHNEYXBwIg1rZXlGYWN0b3J5Q2ZnIiZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcyIKbHBBc3NldFN0ciIUa2V5RmFjdG9yeVBvb2xXZWlnaHQiD2NvbnRyYWN0QWRkcmVzcyIba2V5RmFjdG9yeVBvb2xXZWlnaHRIaXN0b3J5Igtwb29sQWRkcmVzcyIDbnVtIhhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwiFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsIgdmYWN0b3J5IhhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwiCmZhY3RvcnlDZmciGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbCIXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwiGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwiE2tleU1hbmFnZXJQdWJsaWNLZXkiFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siHWtleUJvb3N0aW5nVjJMYXN0VXBkYXRlSGVpZ2h0IhVrZXlCb29zdGluZ1YySW50ZWdyYWwiG2tleUVtaXNzaW9uRHVyYXRpb25JbkJsb2NrcyITa2V5RW1pc3Npb25FbmRCbG9jayIZa2V5TmV4dFBlcmdldEludE9yRGVmYXVsdCIfa2V5R3d4UmV3YXJkRW1pc3Npb25TdGFydEhlaWdodCINSWR4Q2ZnQXNzZXRJZCITSWR4Q2ZnTWluTG9ja0Ftb3VudCIVSWR4Q2ZnTWluTG9ja0R1cmF0aW9uIhVJZHhDZmdNYXhMb2NrRHVyYXRpb24iEklkeENmZ01hdGhDb250cmFjdCIJa2V5Q29uZmlnIhVyZWFkQ29uZmlnQXJyYXlPckZhaWwiCGNmZ0FycmF5Igdhc3NldElkIg1taW5Mb2NrQW1vdW50Ig9taW5Mb2NrRHVyYXRpb24iD21heExvY2tEdXJhdGlvbiIMbWF0aENvbnRyYWN0Ig1mb3JtYXRDb25maWdTIgxmb3JtYXRDb25maWciHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMiByRtYXRjaDAiAXMiFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQiE21hbmFnZXJWYXVsdEFkZHJlc3MiC211c3RNYW5hZ2VyIgFpIgJwZCICcGsiDUlkeExvY2tBbW91bnQiDElkeExvY2tTdGFydCIPSWR4TG9ja0R1cmF0aW9uIhpJZHhMb2NrTGFzdFVwZGF0ZVRpbWVzdGFtcCIQSWR4TG9ja0d3eEFtb3VudCIQSWR4TG9ja1d4Q2xhaW1lZCITa2V5TG9ja1BhcmFtc1JlY29yZCILdXNlckFkZHJlc3MiBHR4SWQiAWIiGnJlYWRMb2NrUGFyYW1zUmVjb3JkT3JGYWlsIhVrZXlVc2VyR3d4QW1vdW50VG90YWwiFmZvcm1hdExvY2tQYXJhbXNSZWNvcmQiBmFtb3VudCIFc3RhcnQiCGR1cmF0aW9uIglnd3hBbW91bnQiCXd4Q2xhaW1lZCIOa2V5TmV4dFVzZXJOdW0iEmtleVVzZXIyTnVtTWFwcGluZyISa2V5TnVtMlVzZXJNYXBwaW5nIhdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudCIga2V5U3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiEmtleVN0YXRzTG9ja3NDb3VudCISa2V5U3RhdHNVc2Vyc0NvdW50IiBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIHdXNlck51bSIia2V5VXNlckxwQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTCIJbHBBc3NldElkIhdrZXlVc2VyTWF4Qm9vc3RJTlRFR1JBTCIYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMIiFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwiE2tleVVzZXJCb29zdENsYWltZWQiC2tleUd3eFRvdGFsIgdrZXlWb3RlIg1hbW91bnRBc3NldElkIgxwcmljZUFzc2V0SWQiBWVwb2NoIhVrZXlTdGFydEhlaWdodEJ5RXBvY2giEWtleUN1cnJlbnRFcG9jaFVpIhVrZXlWb3RpbmdSZXN1bHRTdGFrZWQiDGxwQXNzZXRJZFN0ciIda2V5Vm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiJWtleVZvdGluZ1Jlc3VsdFN0YWtlZExhc3RVcGRhdGVIZWlnaHQiIWtleVZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdCIVa2V5Vm90ZVN0YWtlZEludGVncmFsIh1rZXlWb3RlU3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIZa2V5Vm90ZVN0YWtlZEludGVncmFsTGFzdCIPa2V5U3Rha2VkQnlVc2VyIg51c2VyQWRkcmVzc1N0ciIPZmFjdG9yeUNvbnRyYWN0IhBlbWlzc2lvbkNvbnRyYWN0Ig9zdGFraW5nQ29udHJhY3QiEWd3eFJld2FyZENvbnRyYWN0IhZscFN0YWtpbmdQb29sc0NvbnRyYWN0IhlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0IhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0Ih1rZXlWb3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIKYm9vc3RDb2VmZiIBQCIZdXNlck51bWJlckJ5QWRkcmVzc09yRmFpbCIRZ2V0R3d4QW1vdW50VG90YWwiEmdldExvY2tlZEd3eEFtb3VudCIMZnVuY3Rpb25OYW1lIhp2b3RpbmdFbWlzc2lvblJhdGVDb250cmFjdCIYbG9ja2VkVm90aW5nRW1pc3Npb25SYXRlIhRsb2NrZWRWb3RpbmdFbWlzc2lvbiIGbG9ja2VkIgxIaXN0b3J5RW50cnkiBHR5cGUiBHVzZXIiCWxvY2tTdGFydCIKaGlzdG9yeUtFWSILaGlzdG9yeURBVEEiClN0YXRzRW50cnkiDnRvdGFsTG9ja2VkSW5jIgtkdXJhdGlvbkluYyIMbG9ja0NvdW50SW5jIg11c2Vyc0NvdW50SW5jIhtsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3NLRVkiDWxvY2tzQ291bnRLRVkiDXVzZXJzQ291bnRLRVkiDnRvdGFsQW1vdW50S0VZIhhsb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MiCmxvY2tzQ291bnQiCnVzZXJzQ291bnQiC3RvdGFsQW1vdW50Ig9Mb2NrUGFyYW1zRW50cnkiImV4dHJhY3RPcHRpb25hbFBheW1lbnRBbW91bnRPckZhaWwiD2V4cGVjdGVkQXNzZXRJZCIDcG10IhVnZXRVc2VyR3d4QW1vdW50VG90YWwiGmdldFZvdGluZ0VtaXNzaW9uRXBvY2hJbmZvIg0kdDAxNDk5NTE1Mjg1Ig5jdXJyZW50RXBvY2hVaSISbGFzdEZpbmFsaXplZEVwb2NoIhdjdXJyZW50RXBvY2hTdGFydEhlaWdodCIYZ2V0UG9vbEFzc2V0c0J5THBBc3NldElkIhBpZHhBbW91bnRBc3NldElkIg9pZHhQcmljZUFzc2V0SWQiB3Bvb2xDZmciFGdldFVzZXJWb3RlRmluYWxpemVkIg0kdDAxNTk3NjE2MDU2Ig0kdDAxNjA1OTE2MTM0Igt1c2VyVm90ZUtleSIIdXNlclZvdGUiEWdldFVzZXJWb3RlU3Rha2VkIgxzdGFrZWRCeVVzZXIiFWdldFZvdGluZ1Jlc3VsdFN0YWtlZCINJHQwMTY2NzgxNjc1OCIXdm90aW5nUmVzdWx0U3Rha2VkU3RhcnQiEnZvdGluZ1Jlc3VsdFN0YWtlZCIdZ2V0Vm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiDSR0MDE3MTIwMTcyMDAiHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsUHJldiIidm90aW5nUmVzdWx0U3Rha2VkTGFzdFVwZGF0ZUhlaWdodCIcdm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaCIadm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWwiIXJlZnJlc2hWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbCIPc3Rha2VkVm90ZURlbHRhIg0kdDAxODAzNzE4MTE3IhV2b3RpbmdSZXN1bHRTdGFrZWROZXciGWdldFVzZXJWb3RlU3Rha2VkSW50ZWdyYWwiDSR0MDE4NzI4MTg4MDgiDnVzZXJWb3RlU3Rha2VkIhp1c2VyVm90ZVN0YWtlZEludGVncmFsUHJldiIedXNlclZvdGVTdGFrZWRMYXN0VXBkYXRlSGVpZ2h0Ihh1c2VyVm90ZVN0YWtlZEludGVncmFsRGgiFnVzZXJWb3RlU3Rha2VkSW50ZWdyYWwiGXJlZnJlc2hWb3RlU3Rha2VkSW50ZWdyYWwiBGVkZ2UiDSR0MDE5NTk2MTk2NzYiEXVzZXJWb3RlRmluYWxpemVkIgdhY3Rpb25zIhN2b3RpbmdSZXN1bHRBY3Rpb25zIgt2b3RlQWN0aW9ucyIbZ2V0U3Rha2VkVm90ZXNJbnRlZ3JhbHNEaWZmIg0kdDAyMDUzMDIwNjEwIh11c2VyVm90ZVN0YWtlZEludGVncmFsTGFzdEtleSIadXNlclZvdGVTdGFrZWRJbnRlZ3JhbExhc3QiIXZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdEtleSIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxMYXN0Ihp1c2VyVm90ZVN0YWtlZEludGVncmFsRGlmZiIedm90aW5nUmVzdWx0U3Rha2VkSW50ZWdyYWxEaWZmIhxyZWZyZXNoQm9vc3RFbWlzc2lvbkludGVncmFsIhJ3eEVtaXNzaW9uUGVyQmxvY2siIGJvb3N0aW5nVjJMYXN0VXBkYXRlSGVpZ2h0T3B0aW9uIhhib29zdGluZ1YySW5nZXJnYWxPcHRpb24iC2VtaXNzaW9uRW5kIgFoIgJkaCIQbGFzdFVwZGF0ZUhlaWdodCIVYm9vc3RFbWlzc2lvblBlckJsb2NrIhlib29zdEVtaXNzaW9uSW50ZWdyYWxQcmV2IhVib29zdEVtaXNzaW9uSW50ZWdyYWwiFGludGVybmFsQ2xhaW1XeEJvb3N0IghyZWFkT25seSIIRU1QVFlTVFIiCnBvb2xXZWlnaHQiDnBvb2xBZGRyZXNzU3RyIiJ1c2VyTHBCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIiB1c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbEtFWSIddXNlckJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWwiGXVzZXJCb29zdEVtaXNzaW9uSW50ZWdyYWwiDSR0MDI0MTUyMjQyOTEiG3N0YWtlZFZvdGVzSW50ZWdyYWxzQWN0aW9ucyIUdXNlclZvdGVJbnRlZ3JhbERpZmYiFnRvdGFsVm90ZXNJbnRlZ3JhbERpZmYiHXBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciCWRhdGFTdGF0ZSIFZGVidWciC2xvY2tBY3Rpb25zIg5kdXJhdGlvbk1vbnRocyIVZHVyYXRpb25Nb250aHNBbGxvd2VkIgphc3NldElkU3RyIglwbXRBbW91bnQiDm5leHRVc2VyTnVtS0VZIg51c2VySXNFeGlzdGluZyIKdXNlck51bVN0ciIHY29lZmZYOCIOZ1d4QW1vdW50U3RhcnQiDmd3eEFtb3VudFRvdGFsIhJ1c2VyR3d4QW1vdW50VG90YWwiDGd3eFJld2FyZEludiIDYXJyIhFmYWN0b3J5QWRkcmVzc1N0ciIObG9ja0Fzc2V0SWRTdHIiC21pbkR1cmF0aW9uIgttYXhEdXJhdGlvbiILY2hlY2tDYWxsZXIiD3JlZmVycmVyQWRkcmVzcyIJc2lnbmF0dXJlIg0kdDAyODI3NzI4MzQyIhFsb2NrQWN0aW9uc1Jlc3VsdCIPcmVmZXJyYWxBZGRyZXNzIgZyZWZJbnYiEXVwZGF0ZVJlZkFjdGl2aXR5Ig0kdDAyODgwMDI4ODY1Ig0kdDAyOTE3NTI5Mjc3IhJ1c2VyQm9vc3RBdmFpbGFibGUiDSR0MDI5NDA5Mjk1MTAiB3R4SWRTdHIiD3VzZXJSZWNvcmRBcnJheSIKdXNlckFtb3VudCIMbG9ja0R1cmF0aW9uIgdsb2NrRW5kIgF0IghleHBvbmVudCIOd3hXaXRoZHJhd2FibGUiCWd3eEJ1cm5lZCIMZ3d4UmVtYWluaW5nIg9sb2NrZWRHd3hBbW91bnQiDHRhcmdldEhlaWdodCICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5jAEAAWECAl9fAAFiAAgAAWMAgMLXLwABZAUBYwABZQINYm9vc3RpbmcucmlkZQABZgASAAFnAICAkLu61q3wDQABaAkAtgIBBQFnAAFpAKALAAFqAJjWAgEBawEBbAkAuQkCCQDMCAIFAWUJAMwIAgICOiAJAMwIAgUBbAUDbmlsAgABAW0BAWwJAAIBCQEBawEFAWwBAW4CAW8BcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFAW8FAXAJAQFrAQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUBcAIPIGlzIG5vdCBkZWZpbmVkAQFxAgFvAXAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBbwUBcAAAAQFyAwFvAXABcwkBC3ZhbHVlT3JFbHNlAgkAmggCBQFvBQFwBQFzAQF0AgFvAXAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQFvBQFwCQEBawEJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAXACDyBpcyBub3QgZGVmaW5lZAEBdQEBdgMJAGYCAAAFAXYJAQEtAQUBdgUBdgEBdwIBeAF5AwkAZwIFAXgAAAUBeAkBAW0BCQCsAgIJAQt2YWx1ZU9y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AQJhSgAEAmFLCQECYUcABAJhSAkAnQgCBQJhSwkBAmFnAAMJAAECBQJhSAIGU3RyaW5nBAJhSQUCYUgJANkEAQUCYUkDCQABAgUCYUgCBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgECYUwBAmFNBAJhTgkBAW0BAhFQZXJtaXNzaW9uIGRlbmllZAQCYUgJAQJhSgADCQABAgUCYUgCCkJ5dGVWZWN0b3IEAmFPBQJhSAMJAAACCAUCYU0PY2FsbGVyUHVibGljS2V5BQJhTwYFAmFOAwkAAQIFAmFIAgRVbml0AwkAAAIIBQJhTQZjYWxsZXIFBHRoaXMGBQJhTgkAAgECC01hdGNoIGVycm9yAAJhUAABAAJhUQACAAJhUgADAAJhUwAEAAJhVAAFAAJhVQAGAQJhVgICYVcCYVgJALkJAgkAzAgCAgwlcyVzJXNfX2xvY2sJAMwIAgkApQgBBQJhVwkAzAgCBAJhSAUCYVgDCQABAgUCYUgCCkJ5dGVWZWN0b3IEAmFZBQJhSAkA2AQBBQJhWQMJAAECBQJhSAIEVW5pdAIGbGVnYWN5CQACAQILTWF0Y2ggZXJyb3IFA25pbAUBYQECYVoCAmFXAmFYCQC1CQIJAQFuAgUEdGhpcwkBAmFWAgUCYVcFAmFYBQFhAQJiYQECYVcJALkJAgkAzAgCAhQlcyVzX19nd3hBbW91bnRUb3RhbAkAzAgCCQClCAEFAmFXBQNuaWwFAWEBAmJiBQJiYwJiZAJiZQJiZgJiZwkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUCYmMJAMwIAgkApAMBBQJiZAkAzAgCCQCkAwEFAmJlCQDMCAIJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAMwIAgkApAMBBQJiZgkAzAgCCQCkAwEFAmJnBQNuaWwFAWEBAmJoAAIPJXNfX25leHRVc2VyTnVtAQJiaQECYVcJALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX3VzZXIybnVtCQDMCAIFAmFXBQNuaWwFAWEBAmJqAQFYCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQFYBQNuaWwFAWEBAmJrAAIeJXMlc19fc3RhdHNfX2FjdGl2ZVRvdGFsTG9ja2VkAQJibAACJSVzJXNfX3N0YXRzX19sb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MBAmJtAAIXJXMlc19fc3RhdHNfX2xvY2tzQ291bnQBAmJuAAIdJXMlc19fc3RhdHNfX2FjdGl2ZVVzZXJzQ291bnQBAmJvAQJicAkAuQkCCQDMCAICICVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludFYyCQDMCAIJAKQDAQUCYnAFA25pbAUBYQECYnECAmJwAmJyCQC5CQIJAMwIAgIgJXMlZF9fdXNlckJvb3N0RW1pc3Npb25MYXN0SW50VjIJAMwIAgkApAMBBQJicAkAzAgCBQJicgUDbmlsBQFhAQJicwECYnAJALkJAgkAzAgCAhElcyVkX19tYXhCb29zdEludAkAzAgCCQCkAwEFAmJwBQNuaWwFAWEBAmJ0AAIYJXMlc19fbWF4Qm9vc3RJbnRfX3RvdGFsAQJidQECYnAJALkJAgkAzAgCAiQlcyVkX191c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwJAMwIAgkApAMBBQJicAUDbmlsBQFhAQJidgECYnAJALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIJAKQDAQUCYnAFA25pbAUBYQECYncAAhAlcyVzX19nd3hfX3RvdGFsAQJieAQCYnkCYnoBbwJiQQkAuQkCCQDMCAICCiVzJXMlcyVzJWQJAMwIAgIEdm90ZQkAzAgCBQJieQkAzAgCBQJiegkAzAgCCQClCAEFAW8JAMwIAgkApAMBBQJiQQUDbmlsBQFhAQJiQgECYkEJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUCYkEFA25pbAUBYQECYkMACQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQECYkQCAmJFAmJBCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICEnZvdGluZ1Jlc3VsdFN0YWtlZAkAzAgCBQJiRQkAzAgCCQCkAwEFAmJBBQNuaWwFAWEBAmJGAgJiRQJiQQkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhp2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbAkAzAgCBQJiRQkAzAgCCQCkAwEFAmJBBQNuaWwFAWEBAmJHAgJiRQJiQQkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAip2b3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCYkUJAMwIAgkApAMBBQJiQQUDbmlsBQFhAQJiSAMCYkUBbwJiQQkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICHnZvdGluZ1Jlc3VsdFN0YWtlZEludGVncmFsTGFzdAkAzAgCBQJiRQkAzAgCCQClCAEFAW8JAMwIAgkApAMBBQJiQQUDbmlsBQFhAQJiSQMCYkUBbwJiQQkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICEnZvdGVTdGFrZWRJbnRlZ3JhbAkAzAgCBQJiRQkAzAgCCQClCAEFAW8JAMwIAgkApAMBBQJiQQUDbmlsBQFhAQJiSgMCYkUBbwJiQQkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICInZvdGVTdGFrZWRJbnRlZ3JhbExhc3RVcGRhdGVIZWlnaHQJAMwIAgUCYkUJAMwIAgkApQgBBQFvCQDMCAIJAKQDAQUCYkEFA25pbAUBYQECYksDAmJFAW8CYkEJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAhZ2b3RlU3Rha2VkSW50ZWdyYWxMYXN0CQDMCAIFAmJFCQDMCAIJAKUIAQUBbwkAzAgCCQCkAwEFAmJBBQNuaWwFAWEBAmJMAgJiTQJiRQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgZzdGFrZWQJAMwIAgUCYk0JAMwIAgUCYkUFA25pbAUBYQACYk4JAQFZAAACYWMJAQFaAQUCYk4AAmJPCQECYWQBBQJhYwACYlAJAQJhZQEFAmFjAAJiUQkBAmFmAQUCYWMAAmJSCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJALkJAgkAzAgCAgIlcwkAzAgCAhZscFN0YWtpbmdQb29sc0NvbnRyYWN0BQNuaWwFAWEJAQFrAQIubHBfc3Rha2luZ19wb29scyBjb250cmFjdCBhZGRyZXNzIGlzIHVuZGVmaW5lZAkBAWsBAilpbnZhbGlkIGxwX3N0YWtpbmdfcG9vbHMgY29udHJhY3QgYWRkcmVzcwACYlMJALkJAgkAzAgCAgIlcwkAzAgCAhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQNuaWwFAWEAAmJUCQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQJiTgUCYlMAAmJVCQC5CQIJAMwIAgICJXMJAMwIAgIadm90aW5nRW1pc3Npb25SYXRlQ29udHJhY3QFA25pbAUBYQACYlYKAAJiVwkA/AcEBQJiTwIVZ2V0Qm9vc3RDb2VmZlJFQURPTkxZBQNuaWwFA25pbAMJAAECBQJiVwIDSW50BQJiVwkAAgEJAKwCAgkAAwEFAmJXAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBAmJYAQJhVwQCYUgJAJ0IAgUEdGhpcwkBAmJpAQkApQgBBQJhVwMJAAECBQJhSAIGU3RyaW5nBAJhSQUCYUgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBBQJhSQkBAWsBAhNpbnZhbGlkIHVzZXIgbnVtYmVyAwkAAQIFAmFIAgRVbml0CQEBbQECDGludmFsaWQgdXNlcgkAAgECC01hdGNoIGVycm9yAQJiWQAJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBAmJ3AAAAAQJiWgECYVcEAmNhAhJnZXRMb2NrZWRHd3hBbW91bnQEAmNiCQETdmFsdWVPckVycm9yTWVzc2FnZQIEAmFICQCdCAIFAmJUBQJiVQMJAAECBQJhSAIEVW5pdAUEdW5pdAMJAAECBQJhSAIGU3RyaW5nBAJhSQUCYUgJAKYIAQUCYUkJAAIBAgtNYXRjaCBlcnJvcgkBAWsBAiRpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiByYXRlIGFkZHJlc3MEAmNjCgACYlcJAPwHBAUCYlQFAmNhCQDMCAIJAKUIAQUCYVcFA25pbAUDbmlsAwkAAQIFAmJXAgNJbnQFAmJXCQACAQkArAICCQADAQUCYlcCGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQCY2QKAAJiVwkA/AcEBQJjYgUCY2EJAMwIAgkApQgBBQJhVwUDbmlsBQNuaWwDCQABAgUCYlcCA0ludAUCYlcJAAIBCQCsAgIJAAMBBQJiVwIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAJjZQkAlgMBCQDMCAIFAmNjCQDMCAIFAmNkBQNuaWwFAmNlAQJjZgcCY2cCY2gCYmMCY2kCYmUCYmYCYU0EAmNqCQC5CQIJAMwIAgIRJXMlcyVzJXNfX2hpc3RvcnkJAMwIAgUCY2cJAMwIAgUCY2gJAMwIAgkA2AQBCAUCYU0NdHJhbnNhY3Rpb25JZAUDbmlsBQFhBAJjawkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQgFCWxhc3RCbG9jawZoZWlnaHQJAMwIAgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAkAzAgCCQCkAwEFAmJjCQDMCAIJAKQDAQUCY2kJAMwIAgkApAMBBQJiZQkAzAgCCQCkAwEFAmJmBQNuaWwFAWEJAQtTdHJpbmdFbnRyeQIFAmNqBQJjawECY2wEAmNtAmNuAmNvAmNwBAJjcQkBAmJsAAQCY3IJAQJibQAEAmNzCQECYm4ABAJjdAkBAmJrAAQCY3UJAQFxAgUEdGhpcwUCY3EEAmN2CQEBcQIFBHRoaXMFAmNyBAJjdwkBAXECBQR0aGlzBQJjcwQCY3gJAQFxAgUEdGhpcwUCY3QJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNxCQBkAgUCY3UFAmNuCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjcgkAZAIFAmN2BQJjbwkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3MJAGQCBQJjdwUCY3AJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN0CQBkAgUCY3gFAmNtBQNuaWwBAmN5BwJhVwJhWAJiYwJiZAJiZQJiZgJiZwkAzAgCCQELU3RyaW5nRW50cnkCCQECYVYCBQJhVwUCYVgJAQJiYgUFAmJjBQJiZAUCYmUFAmJmBQJiZwUDbmlsAQJjegICYU0CY0EDCQBmAgkAkAMBCAUCYU0IcGF5bWVudHMAAQkBAW0BAhtvbmx5IG9uZSBwYXltZW50IGlzIGFsbG93ZWQDCQAAAgkAkAMBCAUCYU0IcGF5bWVudHMAAAAABAJjQgkAkQMCCAUCYU0IcGF5bWVudHMAAAMJAQIhPQIJAQV2YWx1ZQEIBQJjQgdhc3NldElkBQJjQQkBAW0BAhtpbnZhbGlkIGFzc2V0IGlkIGluIHBh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bGlkIHVzZXIgYWRkcmVzcwQCYnAJAQJiWAEFAmFXAwkAAAIFAmJwBQJicAQCZFECBWVtcHR5BAJkUgMJAQIhPQIFAmJFBQJkUQQCZFMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQJiTgkBAVIBBQJiRQkBAWsBCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUCYkUJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmJOCQEBVAEFAmRTAwUCZFAAAAkBAW0BCQCsAgICKG5vdCByZWFkb25seSBtb2RlOiB1bnN1cHBvcnRlZCBscCBhc3NldCAFAmJFBAJkVAkBAmJxAgUCYnAFAmJFBAJkVQkBAmJvAQUCYnAEAmRWCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmRUCQEBcQIFBHRoaXMFAmRVBAJkTggJAQJkRAACXzIEAmRXCQBlAgUCZE4FAmRWAwkAZgIAAAUCZFcJAQFtAQISd3JvbmcgY2FsY3VsYXRpb25zBAJkWAkBAmR2AgUCYkUFAmJNBAJkWQgFAmRYAl8xBAJkWggFAmRYAl8yBAJlYQgFAmRYAl8zBAJlYgkAawMFAmRXBQJkUgUBZAQCZWMDCQAAAgUCZWEAAAAACQBrAwUCZWIFAmRaBQJlYQQCZWQJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZFQFAmROBQNuaWwFAmRZBAJlZQkAuQkCCQDMCAIJAKQDAQUCZFYJAMwIAgkApAMBBQJkVwkAzAgCCQCkAwEFAmRSCQDMCAIJAKQDAQUCZFoJAMwIAgkApAMBBQJlYQUDbmlsAgE6CQCVCgMFAmVjBQJlZAUCZWUJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmVmAgJhTQJlZwQCZWgJAMwIAgABCQDMCAIAAwkAzAgCAAYJAMwIAgAMCQDMCAIAGAkAzAgCADAFA25pbAMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFAmVoBQJlZwkBAW0BAhBpbnZhbGlkIGR1cmF0aW9uBAJiZQkAaAIFAmVnBQFqBAJlaQkA2AQBBQJhegMJAQIhPQIJAJADAQgFAmFNCHBheW1lbnRzAAEJAQFtAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY0IJAJEDAggFAmFNCHBheW1lbnRzAAAEAmVqCAUCY0IGYW1vdW50AwkBAiE9AgUCYXoJAQV2YWx1ZQEIBQJjQgdhc3NldElkCQEBbQEJAKwCAgkArAICAh5pbnZhbGlkIGFzc2V0IGlzIGluIHBheW1lbnQgLSAFAmVpAgwgaXMgZXhwZWN0ZWQEAmVrCQECYmgABAJhVwgFAmFNBmNhbGxlcgQCYk0JAKUIAQUCYVcEAmVsCQEJaXNEZWZpbmVkAQkAoggBCQECYmkBBQJiTQQCZW0DBQJlbAkBBXZhbHVlAQkAoggBCQECYmkBBQJiTQkApAMBCQEBdAIFBHRoaXMFAmVrBAJicAkBDXBhcnNlSW50VmFsdWUBBQJlbQQCY2kFBmhlaWdodAMDCQBmAgUCYUEFAmVqCQECIT0CBQJhVwUCYlIHCQEBbQEJAKwCAgIiYW1vdW50IGlzIGxlc3MgdGhlbiBtaW5Mb2NrQW1vdW50PQkApAMBBQJhQQMJAGYCBQJhQgUCYmUJAQFtAQkArAICAi1wYXNzZWQgZHVyYXRpb24gaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYUIDCQBmAgUCYmUFAmFDCQEBbQEJAKwCAgIwcGFzc2VkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhlbiBtYXhMb2NrRHVyYXRpb249CQCkAwEFAmFDBAJlbgkAawMFAmJlBQFjBQJhQwQCZW8JAGsDBQJlagUCZW4FAWMEAmVwCQECYlkABAJkVQkBAmJvAQUCYnAEAmROCAkBAmREAAJfMgQCZXEJAQJjQwEFAmFXBAJlcgkA/QcEBQJiUQIRcmVmcmVzaFVzZXJSZXdhcmQJAMwIAggFAmFXBWJ5dGVzBQNuaWwFA25pbAMJAAACBQJlcgUCZXIEAmVzAwUCZWwFA25pbAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCZWsJAGQCBQJicAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJiaQEFAmJNBQJlbQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmoBBQJlbQUCYk0FA25pbAkAlAoCCQDOCAIJAM0IAgkAzggCCQDOCAIFAmVzCQECY3kHBQJhVwgFAmFNDXRyYW5zYWN0aW9uSWQFAmVqBQJjaQUCYmUFAmVvAAAJAQJjbAQFAmVqBQJiZQABAwUCZWwAAAABCQECY2YHAgRsb2NrBQJiTQUCZWoFAmNpBQJiZQUCZW8FAmFNCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJkVQUCZE4JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJidwAJAGQCBQJlcAUCZW8JAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiYQEFAmFXCQBkAgUCZXEFAmVvBQNuaWwFAmVvCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuEQJhTQELY29uc3RydWN0b3IGAmV0AmV1AmFBAmV2AmV3AmFEBAJleAkBAmFMAQUCYU0DCQAAAgUCZXgFAmV4CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJiaAAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQECYXcACQECYUYFBQJldQUCYUEFAmV2BQJldwUCYUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAUUABQJldAUDbmlsCQECY2wEAAAAAAAAAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU0BB2xvY2tSZWYDAmJlAmV5AmV6BAJlQQkBAmVmAgUCYU0FAmJlBAJlQggFAmVBAl8xBAJlbwgFAmVBAl8yBAJlQwkApQgBCAUCYU0GY2FsbGVyBAJlRAMDCQAAAgUCZXkCAAYJAAACBQJlegEABQR1bml0CQD8BwQFAUECCmNyZWF0ZVBhaXIJAMwIAgUBRAkAzAgCBQJleQkAzAgCBQJlQwkAzAgCBQJlegUDbmlsBQNuaWwDCQAAAgUCZUQFAmVEBAJlRQkA/AcEBQJhRAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhTQZjYWxsZXIJAMwIAgUCZW8FA25pbAUDbmlsAwkAAAIFAmVFBQJlRQkAlAoCBQJlQgUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhTQEEbG9jawECYmUEAmVGCQECZWYCBQJhTQUCYmUEAmVCCAUCZUYCXzEEAmVvCAUCZUYCXzIEAmVFCQD8BwQFAmFEAhZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5CQDMCAIJAKUIAQgFAmFNBmNhbGxlcgkAzAgCBQJlbwUDbmlsBQNuaWwDCQAAAgUCZUUFAmVFCQCUCgIFAmVCBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFNAQxjbGFpbVd4Qm9vc3QCAmJFAmJNAwkBAiE9AgUCYlAIBQJhTQZjYWxsZXIJAQFtAQIScGVybWlzc2lvbnMgZGVuaWVkBAJlRwkBAmRPAwUCYkUFAmJNBwQCZUgIBQJlRwJfMQQCZWQIBQJlRwJfMgQCZWUIBQJlRwJfMwkAlAoCBQJlZAkAzAgCBQJlSAUDbmlsAmFNARRjbGFpbVd4Qm9vc3RSRUFET05MWQICYkUCYk0EAmVJCQECZE8DBQJiRQUCYk0GBAJlSAgFAmVJAl8xBAJlZAgFAmVJAl8yBAJlZQgFAmVJAl8zCQCUCgIFA25pbAkAzAgCBQJlSAkAzAgCBQJlZQUDbmlsAmFNAQZ1bmxvY2sCAmVKAmJjBAJhVwgFAmFNBmNhbGxlcgQCYk0JAKUIAQUCYVcEAmFYCQDZBAEFAmVKBAJlSwkBAmFaAgUCYVcDCQAAAgUCZUoCAAUEdW5pdAUCYVgEAmVMCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZUsFAmFQBAJjaQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVLBQJhUQQCZU0JAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlSwUCYVIEAmVOCQBkAgUCY2kFAmVNBAJiZwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmVLBQJhVQQCYmYJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJlSwUCYVQEAmVPCQBpAgkAZQIFBmhlaWdodAUCY2kFAWkEAmVQCQC8AgMJALYCAQUCZU8JALkCAgkAtgIBCQBoAgAIBQFpBQFoCQC2AgEFAmVNBAJlUQMJAGYCBQZoZWlnaHQFAmVOCQBlAgUCZUwFAmJnCQCgAwEJALwCAwkAtgIBBQJlTAkAuAICBQFoCQB2BgkAtgIBAAUAAQUCZVAFAWYFAWYFBERPV04FAWgDCQBmAgUCYmMFAmVRCQEBbQEJAKwCAgIabWF4aW11bSBhbW91bnQgdG8gdW5sb2NrOiAJAKQDAQUCZVEEAmVSCQCWAwEJAMwIAgUCYmMJAMwIAgkAawMJAGgCBQJlTwUBaQUCZUwFAmFDBQNuaWwEAmVTCQEBdwIJAGUCBQJiZgUCZVICDGd3eFJlbWFpbmluZwQCZVQJAQJiWgEFAmFXAwkAZgIFAmVUBQJlUwkBAW0BCQCsAgICE2xvY2tlZCBnd3ggYW1vdW50OiAJAKQDAQUCZVQDCQBnAgAABQJlTAkBAW0BAhFub3RoaW5nIHRvIHVubG9jawQCZXAJAQJiWQAEAmVxCQECY0MBBQJhVwQCZXIJAP0HBAUCYlECEXJlZnJlc2hVc2VyUmV3YXJkCQDMCAIIBQJhVwVieXRlcwUDbmlsBQNuaWwDCQAAAgUCZXIFAmVyCQDOCAIJAM0IAgkAzQgCCQDOCAIJAQJjeQcFAmFXBQJhWAUCZUwFAmNpBQJlTQUCZVMJAGQCBQJiZwUCYmMJAQJjbAQJAQEtAQUCYmMAAAAAAAAJAQJjZgcCBnVubG9jawUCYk0FAmJjBQJjaQUCZU0FAmVSBQJhTQkBDlNjcmlwdFRyYW5zZmVyAwUCYVcFAmJjBQJhegkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ3AAkBAXcCCQBlAgUCZXAFAmVSAghnd3hUb3RhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJhAQUCYVcJAQF3AgkAZQIFAmVxBQJlUgISdXNlckd3eEFtb3VudFRvdGFsBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU0BE2d3eFVzZXJJbmZvUkVBRE9OTFkBAmJNBAJhVwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJNCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiZgkBAmNDAQUCYVcJAJQKAgUDbmlsCQDMCAIFAmJmBQNuaWwCYU0BF3VzZXJNYXhEdXJhdGlvblJFQURPTkxZAQJiTQkAlAoCBQNuaWwJAJQKAgIMaW5jcmVhc2VMb2NrBQJhQwJhTQEgZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0UkVBRE9OTFkCAmJNAmVVBAJhVwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEFAmJNCQEBawECFGludmFsaWQgdXNlciBhZGRyZXNzBAJiZgkBAmNDAQUCYVcJAJQKAgUDbmlsBQJiZgJhTQEQZ2V0VXNlckd3eEFtb3VudAECYk0EAmFXCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUCYk0JAQFrAQIUaW52YWxpZCB1c2VyIGFkZHJlc3MEAmJmCQECY0MBBQJhVwkAlAoCBQNuaWwFAmJmAmFNARNnZXRHd3hUb3RhbFJFQURPTkxZAAkAlAoCBQNuaWwJAQJiWQACYU0BFW9uQm9vc3RFbWlzc2lvblVwZGF0ZQAEAmV4AwkAAAIIBQJhTQZjYWxsZXIFAmJPBgkBAmFMAQUCYU0DCQAAAgUCZXgFAmV4CQECZEQACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFNARJvblN0YWtlZFZvdGVVcGRhdGUDAmJFAmJNAmRwBAJleAMJAAACCAUCYU0GY2FsbGVyBQJiUAYJAQJhTAEFAmFNAwkAAAIFAmV4BQJleAQCZHMJAQJkbwMFAmJFBQJiTQUCZHAJAJQKAgUCZHMFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYU0BHWdldFZvdGluZ1Jlc3VsdFN0YWtlZFJFQURPTkxZAQJiRQkAlAoCBQNuaWwJAQJjVAEFAmJFAmFNASVnZXRWb3RpbmdSZXN1bHRTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAQJiRQkAlAoCBQNuaWwJAQJjWAEFAmJFAmFNARxnZXRVc2VyVm90ZUZpbmFsaXplZFJFQURPTkxZAgJiRQJiTQkAlAoCBQNuaWwJAQJjTQIFAmJFBQJiTQJhTQEhZ2V0VXNlclZvdGVTdGFrZWRJbnRlZ3JhbFJFQURPTkxZAgJiRQJiTQkAlAoCBQNuaWwJAQJkaAIFAmJFBQJiTQECZVYBAmVXAAQCZVgEAmFICQECYUoAAwkAAQIFAmFIAgpCeXRlVmVjdG9yBAJhTwUCYUgFAmFPAwkAAQIFAmFIAgRVbml0CAUCZVYPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAmVWCWJvZHlCeXRlcwkAkQMCCAUCZVYGcHJvb2ZzAAAFAmVYsdncfA==", "height": 2703058, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HPqy87w685aEXfqGrxnzKVvwVTbi4BsX11xDJ3JzPRNb Next: zA6j6EDYvB3GAAWCpZvJFNXRXhhNnGpY6FZfzemuy8K Diff:
OldNewDifferences
696696 let dU = bo(bp)
697697 let dN = dD()._2
698698 let eq = cC(aW)
699- let er = invoke(bQ, "refreshUserReward", [aW.bytes], nil)
699+ let er = reentrantInvoke(bQ, "refreshUserReward", [aW.bytes], nil)
700700 if ((er == er))
701701 then {
702702 let es = if (el)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 8
77
88 let c = 100000000
99
1010 let d = c
1111
1212 let e = "boosting.ride"
1313
1414 let f = 18
1515
1616 let g = 1000000000000000000
1717
1818 let h = toBigInt(g)
1919
2020 let i = 1440
2121
2222 let j = 43800
2323
2424 func k (l) = makeString([e, ": ", l], "")
2525
2626
2727 func m (l) = throw(k(l))
2828
2929
3030 func n (o,p) = valueOrErrorMessage(getString(o, p), k((("mandatory this." + p) + " is not defined")))
3131
3232
3333 func q (o,p) = valueOrElse(getInteger(o, p), 0)
3434
3535
3636 func r (o,p,s) = valueOrElse(getInteger(o, p), s)
3737
3838
3939 func t (o,p) = valueOrErrorMessage(getInteger(o, p), k((("mandatory this." + p) + " is not defined")))
4040
4141
4242 func u (v) = if ((0 > v))
4343 then -(v)
4444 else v
4545
4646
4747 func w (x,y) = if ((x >= 0))
4848 then x
4949 else m((valueOrElse(y, "value") + " should be positive"))
5050
5151
5252 func z () = makeString(["%s%s", "config", "referralsContractAddress"], a)
5353
5454
5555 let A = addressFromStringValue(n(this, z()))
5656
5757 let B = makeString(["%s%s", "referral", "programName"], a)
5858
5959 let C = "wxlock"
6060
6161 let D = valueOrElse(getString(this, B), C)
6262
6363 func E () = "%s%s__config__factoryAddress"
6464
6565
6666 let F = 1
6767
6868 let G = 2
6969
7070 let H = 3
7171
7272 let I = 4
7373
7474 let J = 5
7575
7676 let K = 6
7777
7878 let L = 7
7979
8080 let M = 8
8181
8282 let N = 9
8383
8484 let O = 10
8585
8686 let P = 11
8787
8888 func Q () = "%s__factoryConfig"
8989
9090
9191 func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], a)
9292
9393
9494 func T (U) = makeString(["%s%s", "poolWeight", U], a)
9595
9696
9797 func V (W,X) = ((("%s%s__poolWeight__" + W) + "__") + toString(X))
9898
9999
100100 func Y () = addressFromStringValue(n(this, E()))
101101
102102
103103 func Z (aa) = split(n(aa, Q()), a)
104104
105105
106106 func ab (ac) = addressFromStringValue(ac[G])
107107
108108
109109 func ad (ac) = addressFromStringValue(ac[J])
110110
111111
112112 func ae (ac) = addressFromStringValue(ac[F])
113113
114114
115115 func af (ac) = addressFromStringValue(ac[O])
116116
117117
118118 func ag () = "%s__managerPublicKey"
119119
120120
121121 func ah () = "%s__managerVaultAddress"
122122
123123
124124 func ai () = "%s%s__ratePerBlock__current"
125125
126126
127127 func aj () = "%s%s__ratePerBlockMax__current"
128128
129129
130130 func ak () = "%s%s__emission__startBlock"
131131
132132
133133 func al () = "%s%s__boostingV2__startBlock"
134134
135135
136136 func am () = "%s%s__boostingV2__integral"
137137
138138
139139 func an () = "%s%s__emission__duration"
140140
141141
142142 func ao () = "%s%s__emission__endBlock"
143143
144144
145145 func ap () = "%s__nextPeriod"
146146
147147
148148 func aq () = "%s%s__gwxRewardEmissionPart__startHeight"
149149
150150
151151 let ar = 1
152152
153153 let as = 2
154154
155155 let at = 3
156156
157157 let au = 4
158158
159159 let av = 5
160160
161161 func aw () = "%s__config"
162162
163163
164164 func ax () = split(n(this, aw()), a)
165165
166166
167167 let ay = ax()
168168
169169 let az = fromBase58String(ay[ar])
170170
171171 let aA = valueOrErrorMessage(parseInt(ay[as]), k("invalid min lock amount"))
172172
173173 let aB = valueOrErrorMessage(parseInt(ay[at]), k("invalid min lock duration"))
174174
175175 let aC = valueOrErrorMessage(parseInt(ay[au]), k("invalid max lock duration"))
176176
177177 let aD = valueOrErrorMessage(addressFromString(ay[av]), k("invalid math contract address"))
178178
179179 func aE (az,aA,aB,aC,aD) = makeString(["%s%d%d%d%s", az, aA, aB, aC, aD], a)
180180
181181
182182 func aF (az,aA,aB,aC,aD) = aE(az, toString(aA), toString(aB), toString(aC), aD)
183183
184184
185185 func aG () = {
186186 let aH = getString(ah())
187187 if ($isInstanceOf(aH, "String"))
188188 then {
189189 let aI = aH
190190 addressFromStringValue(aI)
191191 }
192192 else this
193193 }
194194
195195
196196 func aJ () = {
197197 let aK = aG()
198198 let aH = getString(aK, ag())
199199 if ($isInstanceOf(aH, "String"))
200200 then {
201201 let aI = aH
202202 fromBase58String(aI)
203203 }
204204 else if ($isInstanceOf(aH, "Unit"))
205205 then unit
206206 else throw("Match error")
207207 }
208208
209209
210210 func aL (aM) = {
211211 let aN = m("Permission denied")
212212 let aH = aJ()
213213 if ($isInstanceOf(aH, "ByteVector"))
214214 then {
215215 let aO = aH
216216 if ((aM.callerPublicKey == aO))
217217 then true
218218 else aN
219219 }
220220 else if ($isInstanceOf(aH, "Unit"))
221221 then if ((aM.caller == this))
222222 then true
223223 else aN
224224 else throw("Match error")
225225 }
226226
227227
228228 let aP = 1
229229
230230 let aQ = 2
231231
232232 let aR = 3
233233
234234 let aS = 4
235235
236236 let aT = 5
237237
238238 let aU = 6
239239
240240 func aV (aW,aX) = makeString(["%s%s%s__lock", toString(aW), {
241241 let aH = aX
242242 if ($isInstanceOf(aH, "ByteVector"))
243243 then {
244244 let aY = aH
245245 toBase58String(aY)
246246 }
247247 else if ($isInstanceOf(aH, "Unit"))
248248 then "legacy"
249249 else throw("Match error")
250250 }], a)
251251
252252
253253 func aZ (aW,aX) = split(n(this, aV(aW, aX)), a)
254254
255255
256256 func ba (aW) = makeString(["%s%s__gwxAmountTotal", toString(aW)], a)
257257
258258
259259 func bb (bc,bd,be,bf,bg) = makeString(["%d%d%d%d%d%d%d", toString(bc), toString(bd), toString(be), toString(lastBlock.timestamp), toString(bf), toString(bg)], a)
260260
261261
262262 func bh () = "%s__nextUserNum"
263263
264264
265265 func bi (aW) = makeString(["%s%s%s__mapping__user2num", aW], a)
266266
267267
268268 func bj (X) = makeString(["%s%s%s__mapping__num2user", X], a)
269269
270270
271271 func bk () = "%s%s__stats__activeTotalLocked"
272272
273273
274274 func bl () = "%s%s__stats__locksDurationSumInBlocks"
275275
276276
277277 func bm () = "%s%s__stats__locksCount"
278278
279279
280280 func bn () = "%s%s__stats__activeUsersCount"
281281
282282
283283 func bo (bp) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bp)], a)
284284
285285
286286 func bq (bp,br) = makeString(["%s%d__userBoostEmissionLastIntV2", toString(bp), br], a)
287287
288288
289289 func bs (bp) = makeString(["%s%d__maxBoostInt", toString(bp)], a)
290290
291291
292292 func bt () = "%s%s__maxBoostInt__total"
293293
294294
295295 func bu (bp) = makeString(["%s%d__userBoostAvaliableToClaimTotal", toString(bp)], a)
296296
297297
298298 func bv (bp) = makeString(["%s%d__userBoostClaimed", toString(bp)], a)
299299
300300
301301 func bw () = "%s%s__gwx__total"
302302
303303
304304 func bx (by,bz,o,bA) = makeString(["%s%s%s%s%d", "vote", by, bz, toString(o), toString(bA)], a)
305305
306306
307307 func bB (bA) = makeString(["%s%d", "startHeight", toString(bA)], a)
308308
309309
310310 func bC () = makeString(["%s", "currentEpochUi"], a)
311311
312312
313313 func bD (bE,bA) = makeString(["%s%s%d", "votingResultStaked", bE, toString(bA)], a)
314314
315315
316316 func bF (bE,bA) = makeString(["%s%s%d", "votingResultStakedIntegral", bE, toString(bA)], a)
317317
318318
319319 func bG (bE,bA) = makeString(["%s%s%d", "votingResultStakedIntegralLastUpdateHeight", bE, toString(bA)], a)
320320
321321
322322 func bH (bE,o,bA) = makeString(["%s%s%s%d", "votingResultStakedIntegralLast", bE, toString(o), toString(bA)], a)
323323
324324
325325 func bI (bE,o,bA) = makeString(["%s%s%s%d", "voteStakedIntegral", bE, toString(o), toString(bA)], a)
326326
327327
328328 func bJ (bE,o,bA) = makeString(["%s%s%s%d", "voteStakedIntegralLastUpdateHeight", bE, toString(o), toString(bA)], a)
329329
330330
331331 func bK (bE,o,bA) = makeString(["%s%s%s%d", "voteStakedIntegralLast", bE, toString(o), toString(bA)], a)
332332
333333
334334 func bL (bM,bE) = makeString(["%s%s%s", "staked", bM, bE], a)
335335
336336
337337 let bN = Y()
338338
339339 let ac = Z(bN)
340340
341341 let bO = ad(ac)
342342
343343 let bP = ae(ac)
344344
345345 let bQ = af(ac)
346346
347347 let bR = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(makeString(["%s", "lpStakingPoolsContract"], a)), k("lp_staking_pools contract address is undefined"))), k("invalid lp_staking_pools contract address"))
348348
349349 let bS = makeString(["%s", "votingEmissionContract"], a)
350350
351351 let bT = addressFromStringValue(getStringValue(bN, bS))
352352
353353 let bU = makeString(["%s", "votingEmissionRateContract"], a)
354354
355355 let bV = {
356356 let bW = invoke(bO, "getBoostCoeffREADONLY", nil, nil)
357357 if ($isInstanceOf(bW, "Int"))
358358 then bW
359359 else throw(($getType(bW) + " couldn't be cast to Int"))
360360 }
361361
362362 func bX (aW) = {
363363 let aH = getString(this, bi(toString(aW)))
364364 if ($isInstanceOf(aH, "String"))
365365 then {
366366 let aI = aH
367367 valueOrErrorMessage(parseInt(aI), k("invalid user number"))
368368 }
369369 else if ($isInstanceOf(aH, "Unit"))
370370 then m("invalid user")
371371 else throw("Match error")
372372 }
373373
374374
375375 func bY () = valueOrElse(getInteger(this, bw()), 0)
376376
377377
378378 func bZ (aW) = {
379379 let ca = "getLockedGwxAmount"
380380 let cb = valueOrErrorMessage({
381381 let aH = getString(bT, bU)
382382 if ($isInstanceOf(aH, "Unit"))
383383 then unit
384384 else if ($isInstanceOf(aH, "String"))
385385 then {
386386 let aI = aH
387387 addressFromString(aI)
388388 }
389389 else throw("Match error")
390390 }, k("invalid voting emission rate address"))
391391 let cc = {
392392 let bW = invoke(bT, ca, [toString(aW)], nil)
393393 if ($isInstanceOf(bW, "Int"))
394394 then bW
395395 else throw(($getType(bW) + " couldn't be cast to Int"))
396396 }
397397 let cd = {
398398 let bW = invoke(cb, ca, [toString(aW)], nil)
399399 if ($isInstanceOf(bW, "Int"))
400400 then bW
401401 else throw(($getType(bW) + " couldn't be cast to Int"))
402402 }
403403 let ce = max([cc, cd])
404404 ce
405405 }
406406
407407
408408 func cf (cg,ch,bc,ci,be,bf,aM) = {
409409 let cj = makeString(["%s%s%s%s__history", cg, ch, toBase58String(aM.transactionId)], a)
410410 let ck = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(bc), toString(ci), toString(be), toString(bf)], a)
411411 StringEntry(cj, ck)
412412 }
413413
414414
415415 func cl (cm,cn,co,cp) = {
416416 let cq = bl()
417417 let cr = bm()
418418 let cs = bn()
419419 let ct = bk()
420420 let cu = q(this, cq)
421421 let cv = q(this, cr)
422422 let cw = q(this, cs)
423423 let cx = q(this, ct)
424424 [IntegerEntry(cq, (cu + cn)), IntegerEntry(cr, (cv + co)), IntegerEntry(cs, (cw + cp)), IntegerEntry(ct, (cx + cm))]
425425 }
426426
427427
428428 func cy (aW,aX,bc,bd,be,bf,bg) = [StringEntry(aV(aW, aX), bb(bc, bd, be, bf, bg))]
429429
430430
431431 func cz (aM,cA) = if ((size(aM.payments) > 1))
432432 then m("only one payment is allowed")
433433 else if ((size(aM.payments) == 0))
434434 then 0
435435 else {
436436 let cB = aM.payments[0]
437437 if ((value(cB.assetId) != cA))
438438 then m("invalid asset id in payment")
439439 else cB.amount
440440 }
441441
442442
443443 func cC (aW) = valueOrElse(getInteger(this, ba(aW)), 0)
444444
445445
446446 func cD () = {
447447 let cE = {
448448 let cF = value(getInteger(bT, bC()))
449449 let cG = (cF - 1)
450450 if ((0 > cG))
451451 then m("invalid epoch")
452452 else $Tuple2(cF, cG)
453453 }
454454 let cF = cE._1
455455 let cG = cE._2
456456 let cH = value(getInteger(bT, bB(cF)))
457457 $Tuple2(cG, cH)
458458 }
459459
460460
461461 func cI (bE) = {
462462 let cJ = 4
463463 let cK = 5
464464 let cL = {
465465 let bW = invoke(bN, "getPoolConfigByLpAssetIdREADONLY", [bE], nil)
466466 if ($isInstanceOf(bW, "List[Any]"))
467467 then bW
468468 else throw(($getType(bW) + " couldn't be cast to List[Any]"))
469469 }
470470 let by = {
471471 let bW = cL[cJ]
472472 if ($isInstanceOf(bW, "String"))
473473 then bW
474474 else throw(($getType(bW) + " couldn't be cast to String"))
475475 }
476476 let bz = {
477477 let bW = cL[cK]
478478 if ($isInstanceOf(bW, "String"))
479479 then bW
480480 else throw(($getType(bW) + " couldn't be cast to String"))
481481 }
482482 $Tuple2(by, bz)
483483 }
484484
485485
486486 func cM (bE,bM) = {
487487 let aW = addressFromStringValue(bM)
488488 let cN = cD()
489489 let cG = cN._1
490490 let cH = cN._2
491491 let cO = cI(bE)
492492 let by = cO._1
493493 let bz = cO._2
494494 let cP = bx(by, bz, aW, cG)
495495 let cQ = valueOrElse(getInteger(bT, cP), 0)
496496 cQ
497497 }
498498
499499
500500 func cR (bE,bM) = {
501501 let cS = valueOrElse(getInteger(bP, bL(bM, bE)), 0)
502502 let cQ = cM(bE, bM)
503503 if ((cS == 0))
504504 then 0
505505 else cQ
506506 }
507507
508508
509509 func cT (bE) = {
510510 let cU = cD()
511511 let cG = cU._1
512512 let cH = cU._2
513513 let cV = valueOrElse(getInteger(bT, bD(bE, cG)), 0)
514514 let cW = valueOrElse(getInteger(this, bD(bE, cG)), cV)
515515 cW
516516 }
517517
518518
519519 func cX (bE) = {
520520 let cY = cD()
521521 let cG = cY._1
522522 let cH = cY._2
523523 let cW = cT(bE)
524524 let cZ = valueOrElse(getInteger(this, bF(bE, cG)), 0)
525525 let da = valueOrElse(getInteger(this, bG(bE, cG)), cH)
526526 let db = (height - da)
527527 let dc = ((db * cW) + cZ)
528528 dc
529529 }
530530
531531
532532 func dd (bE,de) = {
533533 let df = cD()
534534 let cG = df._1
535535 let cH = df._2
536536 let cW = cT(bE)
537537 let dg = (cW + de)
538538 let dc = cX(bE)
539539 [IntegerEntry(bD(bE, cG), dg), IntegerEntry(bG(bE, cG), height), IntegerEntry(bF(bE, cG), dc)]
540540 }
541541
542542
543543 func dh (bE,bM) = {
544544 let di = cD()
545545 let cG = di._1
546546 let cH = di._2
547547 let aW = addressFromStringValue(bM)
548548 let dj = cR(bE, bM)
549549 let dk = valueOrElse(getInteger(this, bI(bE, aW, cG)), 0)
550550 let dl = valueOrElse(getInteger(this, bJ(bE, aW, cG)), cH)
551551 let dm = (height - dl)
552552 let dn = ((dm * dj) + dk)
553553 dn
554554 }
555555
556556
557557 func do (bE,bM,dp) = {
558558 let dq = cD()
559559 let cG = dq._1
560560 let cH = dq._2
561561 let aW = addressFromStringValue(bM)
562562 let dr = cM(bE, bM)
563563 let ds = if ((dr == 0))
564564 then nil
565565 else {
566566 let de = if (dp)
567567 then dr
568568 else -(dr)
569569 let dt = dd(bE, de)
570570 let dn = dh(bE, bM)
571571 let du = [IntegerEntry(bJ(bE, aW, cG), height), IntegerEntry(bI(bE, aW, cG), dn)]
572572 (dt ++ du)
573573 }
574574 ds
575575 }
576576
577577
578578 func dv (bE,bM) = {
579579 let dw = cD()
580580 let cG = dw._1
581581 let cH = dw._2
582582 let aW = addressFromStringValue(bM)
583583 let dx = bK(bE, aW, cG)
584584 let dy = valueOrElse(getInteger(this, dx), 0)
585585 let dz = bH(bE, aW, cG)
586586 let dA = valueOrElse(getInteger(this, dz), 0)
587587 let dn = dh(bE, bM)
588588 let dc = cX(bE)
589589 let dB = (dn - dy)
590590 let dC = (dc - dA)
591591 $Tuple3([IntegerEntry(dx, dn), IntegerEntry(dz, dc)], dB, dC)
592592 }
593593
594594
595595 func dD () = {
596596 let dE = t(bO, ai())
597597 let dF = getInteger(this, al())
598598 let dG = getInteger(this, am())
599599 let dH = t(bO, ao())
600600 let dI = if ((height > dH))
601601 then dH
602602 else height
603603 let dJ = {
604604 let aH = dF
605605 if ($isInstanceOf(aH, "Int"))
606606 then {
607607 let dK = aH
608608 max([(dI - dK), 0])
609609 }
610610 else if ($isInstanceOf(aH, "Unit"))
611611 then 0
612612 else throw("Match error")
613613 }
614614 let dL = ((dE * (bV - 1)) / bV)
615615 let dM = valueOrElse(dG, 0)
616616 let dN = ((dL * dJ) + dM)
617617 $Tuple2([IntegerEntry(am(), dN), IntegerEntry(al(), height)], dN)
618618 }
619619
620620
621621 func dO (bE,bM,dP) = {
622622 let aW = valueOrErrorMessage(addressFromString(bM), k("invalid user address"))
623623 let bp = bX(aW)
624624 if ((bp == bp))
625625 then {
626626 let dQ = "empty"
627627 let dR = if ((bE != dQ))
628628 then {
629629 let dS = valueOrErrorMessage(getString(bN, R(bE)), k(("unsupported lp asset " + bE)))
630630 getIntegerValue(bN, T(dS))
631631 }
632632 else if (dP)
633633 then 0
634634 else m(("not readonly mode: unsupported lp asset " + bE))
635635 let dT = bq(bp, bE)
636636 let dU = bo(bp)
637637 let dV = valueOrElse(getInteger(this, dT), q(this, dU))
638638 let dN = dD()._2
639639 let dW = (dN - dV)
640640 if ((0 > dW))
641641 then m("wrong calculations")
642642 else {
643643 let dX = dv(bE, bM)
644644 let dY = dX._1
645645 let dZ = dX._2
646646 let ea = dX._3
647647 let eb = fraction(dW, dR, d)
648648 let ec = if ((ea == 0))
649649 then 0
650650 else fraction(eb, dZ, ea)
651651 let ed = ([IntegerEntry(dT, dN)] ++ dY)
652652 let ee = makeString([toString(dV), toString(dW), toString(dR), toString(dZ), toString(ea)], ":")
653653 $Tuple3(ec, ed, ee)
654654 }
655655 }
656656 else throw("Strict value is not equal to itself.")
657657 }
658658
659659
660660 func ef (aM,eg) = {
661661 let eh = [1, 3, 6, 12, 24, 48]
662662 if (!(containsElement(eh, eg)))
663663 then m("invalid duration")
664664 else {
665665 let be = (eg * j)
666666 let ei = toBase58String(az)
667667 if ((size(aM.payments) != 1))
668668 then m("invalid payment - exact one payment must be attached")
669669 else {
670670 let cB = aM.payments[0]
671671 let ej = cB.amount
672672 if ((az != value(cB.assetId)))
673673 then m((("invalid asset is in payment - " + ei) + " is expected"))
674674 else {
675675 let ek = bh()
676676 let aW = aM.caller
677677 let bM = toString(aW)
678678 let el = isDefined(getString(bi(bM)))
679679 let em = if (el)
680680 then value(getString(bi(bM)))
681681 else toString(t(this, ek))
682682 let bp = parseIntValue(em)
683683 let ci = height
684684 if (if ((aA > ej))
685685 then (aW != bR)
686686 else false)
687687 then m(("amount is less then minLockAmount=" + toString(aA)))
688688 else if ((aB > be))
689689 then m(("passed duration is less then minLockDuration=" + toString(aB)))
690690 else if ((be > aC))
691691 then m(("passed duration is greater then maxLockDuration=" + toString(aC)))
692692 else {
693693 let en = fraction(be, c, aC)
694694 let eo = fraction(ej, en, c)
695695 let ep = bY()
696696 let dU = bo(bp)
697697 let dN = dD()._2
698698 let eq = cC(aW)
699- let er = invoke(bQ, "refreshUserReward", [aW.bytes], nil)
699+ let er = reentrantInvoke(bQ, "refreshUserReward", [aW.bytes], nil)
700700 if ((er == er))
701701 then {
702702 let es = if (el)
703703 then nil
704704 else [IntegerEntry(ek, (bp + 1)), StringEntry(bi(bM), em), StringEntry(bj(em), bM)]
705705 $Tuple2(((((es ++ cy(aW, aM.transactionId, ej, ci, be, eo, 0)) ++ cl(ej, be, 1, if (el)
706706 then 0
707707 else 1)) :+ cf("lock", bM, ej, ci, be, eo, aM)) ++ [IntegerEntry(dU, dN), IntegerEntry(bw(), (ep + eo)), IntegerEntry(ba(aW), (eq + eo))]), eo)
708708 }
709709 else throw("Strict value is not equal to itself.")
710710 }
711711 }
712712 }
713713 }
714714 }
715715
716716
717717 @Callable(aM)
718718 func constructor (et,eu,aA,ev,ew,aD) = {
719719 let ex = aL(aM)
720720 if ((ex == ex))
721721 then ([IntegerEntry(bh(), 0), StringEntry(aw(), aF(eu, aA, ev, ew, aD)), StringEntry(E(), et)] ++ cl(0, 0, 0, 0))
722722 else throw("Strict value is not equal to itself.")
723723 }
724724
725725
726726
727727 @Callable(aM)
728728 func lockRef (be,ey,ez) = {
729729 let eA = ef(aM, be)
730730 let eB = eA._1
731731 let eo = eA._2
732732 let eC = toString(aM.caller)
733733 let eD = if (if ((ey == ""))
734734 then true
735735 else (ez == base58''))
736736 then unit
737737 else invoke(A, "createPair", [D, ey, eC, ez], nil)
738738 if ((eD == eD))
739739 then {
740740 let eE = invoke(aD, "updateReferralActivity", [toString(aM.caller), eo], nil)
741741 if ((eE == eE))
742742 then $Tuple2(eB, unit)
743743 else throw("Strict value is not equal to itself.")
744744 }
745745 else throw("Strict value is not equal to itself.")
746746 }
747747
748748
749749
750750 @Callable(aM)
751751 func lock (be) = {
752752 let eF = ef(aM, be)
753753 let eB = eF._1
754754 let eo = eF._2
755755 let eE = invoke(aD, "updateReferralActivity", [toString(aM.caller), eo], nil)
756756 if ((eE == eE))
757757 then $Tuple2(eB, unit)
758758 else throw("Strict value is not equal to itself.")
759759 }
760760
761761
762762
763763 @Callable(aM)
764764 func claimWxBoost (bE,bM) = if ((bP != aM.caller))
765765 then m("permissions denied")
766766 else {
767767 let eG = dO(bE, bM, false)
768768 let eH = eG._1
769769 let ed = eG._2
770770 let ee = eG._3
771771 $Tuple2(ed, [eH])
772772 }
773773
774774
775775
776776 @Callable(aM)
777777 func claimWxBoostREADONLY (bE,bM) = {
778778 let eI = dO(bE, bM, true)
779779 let eH = eI._1
780780 let ed = eI._2
781781 let ee = eI._3
782782 $Tuple2(nil, [eH, ee])
783783 }
784784
785785
786786
787787 @Callable(aM)
788788 func unlock (eJ,bc) = {
789789 let aW = aM.caller
790790 let bM = toString(aW)
791791 let aX = fromBase58String(eJ)
792792 let eK = aZ(aW, if ((eJ == ""))
793793 then unit
794794 else aX)
795795 let eL = parseIntValue(eK[aP])
796796 let ci = parseIntValue(eK[aQ])
797797 let eM = parseIntValue(eK[aR])
798798 let eN = (ci + eM)
799799 let bg = parseIntValue(eK[aU])
800800 let bf = parseIntValue(eK[aT])
801801 let eO = ((height - ci) / i)
802802 let eP = fraction(toBigInt(eO), (toBigInt((8 * i)) * h), toBigInt(eM))
803803 let eQ = if ((height > eN))
804804 then (eL - bg)
805805 else toInt(fraction(toBigInt(eL), (h - pow(toBigInt(5), 1, eP, f, f, DOWN)), h))
806806 if ((bc > eQ))
807807 then m(("maximum amount to unlock: " + toString(eQ)))
808808 else {
809809 let eR = max([bc, fraction((eO * i), eL, aC)])
810810 let eS = w((bf - eR), "gwxRemaining")
811811 let eT = bZ(aW)
812812 if ((eT > eS))
813813 then m(("locked gwx amount: " + toString(eT)))
814814 else if ((0 >= eL))
815815 then m("nothing to unlock")
816816 else {
817817 let ep = bY()
818818 let eq = cC(aW)
819819 let er = reentrantInvoke(bQ, "refreshUserReward", [aW.bytes], nil)
820820 if ((er == er))
821821 then ((((cy(aW, aX, eL, ci, eM, eS, (bg + bc)) ++ cl(-(bc), 0, 0, 0)) :+ cf("unlock", bM, bc, ci, eM, eR, aM)) :+ ScriptTransfer(aW, bc, az)) ++ [IntegerEntry(bw(), w((ep - eR), "gwxTotal")), IntegerEntry(ba(aW), w((eq - eR), "userGwxAmountTotal"))])
822822 else throw("Strict value is not equal to itself.")
823823 }
824824 }
825825 }
826826
827827
828828
829829 @Callable(aM)
830830 func gwxUserInfoREADONLY (bM) = {
831831 let aW = valueOrErrorMessage(addressFromString(bM), k("invalid user address"))
832832 let bf = cC(aW)
833833 $Tuple2(nil, [bf])
834834 }
835835
836836
837837
838838 @Callable(aM)
839839 func userMaxDurationREADONLY (bM) = $Tuple2(nil, $Tuple2("increaseLock", aC))
840840
841841
842842
843843 @Callable(aM)
844844 func getUserGwxAmountAtHeightREADONLY (bM,eU) = {
845845 let aW = valueOrErrorMessage(addressFromString(bM), k("invalid user address"))
846846 let bf = cC(aW)
847847 $Tuple2(nil, bf)
848848 }
849849
850850
851851
852852 @Callable(aM)
853853 func getUserGwxAmount (bM) = {
854854 let aW = valueOrErrorMessage(addressFromString(bM), k("invalid user address"))
855855 let bf = cC(aW)
856856 $Tuple2(nil, bf)
857857 }
858858
859859
860860
861861 @Callable(aM)
862862 func getGwxTotalREADONLY () = $Tuple2(nil, bY())
863863
864864
865865
866866 @Callable(aM)
867867 func onBoostEmissionUpdate () = {
868868 let ex = if ((aM.caller == bO))
869869 then true
870870 else aL(aM)
871871 if ((ex == ex))
872872 then dD()
873873 else throw("Strict value is not equal to itself.")
874874 }
875875
876876
877877
878878 @Callable(aM)
879879 func onStakedVoteUpdate (bE,bM,dp) = {
880880 let ex = if ((aM.caller == bP))
881881 then true
882882 else aL(aM)
883883 if ((ex == ex))
884884 then {
885885 let ds = do(bE, bM, dp)
886886 $Tuple2(ds, unit)
887887 }
888888 else throw("Strict value is not equal to itself.")
889889 }
890890
891891
892892
893893 @Callable(aM)
894894 func getVotingResultStakedREADONLY (bE) = $Tuple2(nil, cT(bE))
895895
896896
897897
898898 @Callable(aM)
899899 func getVotingResultStakedIntegralREADONLY (bE) = $Tuple2(nil, cX(bE))
900900
901901
902902
903903 @Callable(aM)
904904 func getUserVoteFinalizedREADONLY (bE,bM) = $Tuple2(nil, cM(bE, bM))
905905
906906
907907
908908 @Callable(aM)
909909 func getUserVoteStakedIntegralREADONLY (bE,bM) = $Tuple2(nil, dh(bE, bM))
910910
911911
912912 @Verifier(eV)
913913 func eW () = {
914914 let eX = {
915915 let aH = aJ()
916916 if ($isInstanceOf(aH, "ByteVector"))
917917 then {
918918 let aO = aH
919919 aO
920920 }
921921 else if ($isInstanceOf(aH, "Unit"))
922922 then eV.senderPublicKey
923923 else throw("Match error")
924924 }
925925 sigVerify(eV.bodyBytes, eV.proofs[0], eX)
926926 }
927927

github/deemru/w8io/169f3d6 
93.52 ms