tx · Fmq3f769Gn6iZyt4KY2xi4v8d4TrrVyisWEBRf6ZWYz1

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02300000 Waves

2023.01.10 13:41 [2398740] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

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

github/deemru/w8io/c3f4982 
98.46 ms