tx · CQzU9r9DqQ5WQeJEyU33WSZvCsjCxJSSHZBUL2RdE8Up

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02300000 Waves

2023.03.06 10:41 [2477937] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

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

github/deemru/w8io/026f985 
78.98 ms