tx · 2aqxbZWuHHMFndQpkSuvdwNXtU2oUhxgPx9M3XKQYnbL

3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy:  -0.02200000 Waves

2023.02.15 13:40 [2450613] smart account 3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy > SELF 0.00000000 Waves

{ "type": 13, "id": "2aqxbZWuHHMFndQpkSuvdwNXtU2oUhxgPx9M3XKQYnbL", "fee": 2200000, "feeAssetId": null, "timestamp": 1676457648751, "version": 2, "chainId": 84, "sender": "3Myn55vLkduxbX3ZXfiDCZhaQsLxYp1kmCy", "senderPublicKey": "9W33iCCNfmFxUbiC6XZcH5x7f6xfwC7Jb3BoExT5q2PV", "proofs": [ "dFiaLhRNCB6SKejKvPL9nUArU7BYPArCnfRoN7MUUFXkq2NmvMouRZ3s29BqMTL3KowsuLvwsa7TdvmX564mm3v" ], "script": "base64:BgLNJAgCEggKBggIAQEBCBIFCgMBCAISAwoBARIDCgEBEgQKAggIEgQKAggIEgMKAQgSAwoBCBIECgIIARIAEgMKAQgSACIDU0VQIgZTQ0FMRTgiBU1VTFQ4Ig5QT09MV0VJR0hUTVVMVCIEc3RyZiIHYWRkcmVzcyIDa2V5IgNpb3oiA2lvZCIKZGVmYXVsdFZhbCIDaW9mIgNhYnMiA3ZhbCIDYWFsIgckbWF0Y2gwIgp2YWxBbnlMeXN0IgJhaSIGdmFsSW50IhtrZXlSZWZlcnJhbHNDb250cmFjdEFkZHJlc3MiHnJlZmVycmFsc0NvbnRyYWN0QWRkcmVzc09yRmFpbCIWa2V5UmVmZXJyYWxQcm9ncmFtTmFtZSIacmVmZXJyYWxQcm9ncmFtTmFtZURlZmF1bHQiE3JlZmVycmFsUHJvZ3JhbU5hbWUiEWtleUZhY3RvcnlBZGRyZXNzIhhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAiGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHAiFElkeEZhY3RvcnlDZmdJZG9EYXBwIhVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAiGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHAiFUlkeEZhY3RvcnlDZmdSZXN0RGFwcCIZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcCIUSWR4RmFjdG9yeUNmZ0Rhb0RhcHAiGklkeEZhY3RvcnlDZmdNYXJrZXRpbmdEYXBwIhpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcCIWSWR4RmFjdG9yeUNmZ0JpcmRzRGFwcCINa2V5RmFjdG9yeUNmZyIaa2V5RmFjdG9yeUxwMkFzc2V0c01hcHBpbmciCmxwQXNzZXRTdHIiEGtleUZhY3RvcnlMcExpc3QiJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzIhRrZXlGYWN0b3J5UG9vbFdlaWdodCIPY29udHJhY3RBZGRyZXNzIhtrZXlGYWN0b3J5UG9vbFdlaWdodEhpc3RvcnkiC3Bvb2xBZGRyZXNzIgNudW0iGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbCIKcmVhZExwTGlzdCIUcmVhZEZhY3RvcnlDZmdPckZhaWwiB2ZhY3RvcnkiGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbCIKZmFjdG9yeUNmZyIYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsIhdnZXRTdGFraW5nQWRkcmVzc09yRmFpbCIZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbCITa2V5TWFuYWdlclB1YmxpY0tleSIaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkiHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudCIha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50IhVrZXlFbWlzc2lvblN0YXJ0QmxvY2siGGtleUJvb3N0aW5nVjJTdGFydEhlaWdodCIba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzIhNrZXlFbWlzc2lvbkVuZEJsb2NrIg1rZXlOZXh0UGVyaW9kIh9rZXlHd3hSZXdhcmRFbWlzc2lvblN0YXJ0SGVpZ2h0Ig1JZHhDZmdBc3NldElkIhNJZHhDZmdNaW5Mb2NrQW1vdW50IhVJZHhDZmdNaW5Mb2NrRHVyYXRpb24iFUlkeENmZ01heExvY2tEdXJhdGlvbiISSWR4Q2ZnTWF0aENvbnRyYWN0IglrZXlDb25maWciFXJlYWRDb25maWdBcnJheU9yRmFpbCIMbWF0aENvbnRyYWN0Ig1mb3JtYXRDb25maWdTIgdhc3NldElkIg1taW5Mb2NrQW1vdW50Ig9taW5Mb2NrRHVyYXRpb24iD21heExvY2tEdXJhdGlvbiIMZm9ybWF0Q29uZmlnIhZtYW5hZ2VyUHVibGljS2V5T3JVbml0IgFzIh1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdCILbXVzdE1hbmFnZXIiAWkiAnBkIgJwayIOSWR4TG9ja1VzZXJOdW0iDUlkeExvY2tBbW91bnQiDElkeExvY2tTdGFydCIPSWR4TG9ja0R1cmF0aW9uIg1JZHhMb2NrUGFyYW1LIg1JZHhMb2NrUGFyYW1CIhNrZXlMb2NrUGFyYW1zUmVjb3JkIgt1c2VyQWRkcmVzcyIacmVhZExvY2tQYXJhbXNSZWNvcmRPckZhaWwiF2Zvcm1hdExvY2tQYXJhbXNSZWNvcmRTIgd1c2VyTnVtIgZhbW91bnQiBXN0YXJ0IghkdXJhdGlvbiIGcGFyYW1LIgZwYXJhbUIiEGxhc3RVcGRUaW1lc3RhbXAiCWd3eEFtb3VudCIWZm9ybWF0TG9ja1BhcmFtc1JlY29yZCIOa2V5TmV4dFVzZXJOdW0iEmtleVVzZXIyTnVtTWFwcGluZyISa2V5TnVtMlVzZXJNYXBwaW5nIhZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50IhZrZXlMb2NrUGFyYW1TdGFydEJsb2NrIhRrZXlMb2NrUGFyYW1EdXJhdGlvbiINa2V5TG9ja1BhcmFtSyINa2V5TG9ja1BhcmFtQiIVa2V5TG9ja1BhcmFtQnlQZXJpb2RLIgZwZXJpb2QiFWtleUxvY2tQYXJhbUJ5UGVyaW9kQiIXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQiIGtleVN0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIhJrZXlTdGF0c0xvY2tzQ291bnQiEmtleVN0YXRzVXNlcnNDb3VudCIga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiImtleVVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwiCWxwQXNzZXRJZCIXa2V5VXNlck1heEJvb3N0SU5URUdSQUwiGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTCIha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsIhNrZXlVc2VyQm9vc3RDbGFpbWVkIhFrZXlUb3RhbENhY2hlZEd3eCIba2V5VG90YWxDYWNoZWRHd3hDb3JyZWN0aXZlIg9mYWN0b3J5Q29udHJhY3QiEGVtaXNzaW9uQ29udHJhY3QiD3N0YWtpbmdDb250cmFjdCIRZ3d4UmV3YXJkQ29udHJhY3QiGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QiFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QiCmJvb3N0Q29lZmYiAUAiEWdldFRvdGFsQ2FjaGVkR3d4Igdjb3JyZWN0IhFrZXlDdXJyZW50RXBvY2hVaSIOY3VycmVudEVwb2NoVWkiDmtleVRhcmdldEVwb2NoIhF0YXJnZXRFcG9jaE9wdGlvbiIRdG90YWxDYWNoZWRHd3hSYXciFWlzQ29ycmVjdGlvbkFjdGl2YXRlZCIKY29ycmVjdGl2ZSIMSGlzdG9yeUVudHJ5IgR0eXBlIgR1c2VyIglsb2NrU3RhcnQiAWsiAWIiCmhpc3RvcnlLRVkiC2hpc3RvcnlEQVRBIgpTdGF0c0VudHJ5Ig50b3RhbExvY2tlZEluYyILZHVyYXRpb25JbmMiDGxvY2tDb3VudEluYyINdXNlcnNDb3VudEluYyIbbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzS0VZIg1sb2Nrc0NvdW50S0VZIg11c2Vyc0NvdW50S0VZIg50b3RhbEFtb3VudEtFWSIYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzIgpsb2Nrc0NvdW50Igp1c2Vyc0NvdW50Igt0b3RhbEFtb3VudCINY2FsY0d3eEFtb3VudCIEa1JhdyIEYlJhdyIBaCIFU0NBTEUiD0xvY2tQYXJhbXNFbnRyeSINdXNlckFtb3VudEtFWSINc3RhcnRCbG9ja0tFWSILZHVyYXRpb25LRVkiBGtLRVkiBGJLRVkiDGtCeVBlcmlvZEtFWSIMYkJ5UGVyaW9kS0VZIiJleHRyYWN0T3B0aW9uYWxQYXltZW50QW1vdW50T3JGYWlsIg9leHBlY3RlZEFzc2V0SWQiA3BtdCIZY2FsY1VzZXJHd3hBbW91bnRBdEhlaWdodCIMdGFyZ2V0SGVpZ2h0IgVFTVBUWSISdXNlcjJOdW1NYXBwaW5nS0VZIg1nd3hBbW91bnRDYWxjIhRjYWxjQ3VycmVudEd3eEFtb3VudCIUaW50ZXJuYWxDbGFpbVd4Qm9vc3QiDGxwQXNzZXRJZFN0ciIOdXNlckFkZHJlc3NTdHIiCHJlYWRPbmx5IhF1c2VyUmVjb3JkT3JFbXB0eSIPdXNlclJlY29yZEFycmF5Igp1c2VyTnVtU3RyIghFTVBUWVNUUiIKcG9vbFdlaWdodCIOcG9vbEFkZHJlc3NTdHIiEnd4RW1pc3Npb25QZXJCbG9jayIVYm9vc3RpbmdWMlN0YXJ0SGVpZ2h0IgtlbWlzc2lvbkVuZCICZGgiInVzZXJMcEJvb3N0RW1pc3Npb25MYXN0SW50ZWdyYWxLRVkiIHVzZXJCb29zdEVtaXNzaW9uTGFzdEludGVncmFsS0VZIh11c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRlZ3JhbCIVYm9vc3RFbWlzc2lvbkludGVncmFsIhl1c2VyQm9vc3RFbWlzc2lvbkludGVncmFsIgN1ZGgiBnVMYXN0SCIXdXNlck1heEJvb3N0SW50ZWdyYWxLRVkiGHRvdGFsTWF4Qm9vc3RJbnRlZ3JhbEtFWSIPdXNlck1heEJvb3N0SW50IhB0b3RhbE1heEJvb3N0SW50Ig0kdDAxNjc1MzE2ODkwIgh1c2VyVm90ZSIKdG90YWxWb3RlcyIhdXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsS0VZIh51c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwiHXBvb2xVc2VyQm9vc3RFbWlzc2lvbkludGVncmFsIiF1c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWxOZXciE3VzZXJCb29zdENsYWltZWRLRVkiEHVzZXJCb29zdENsYWltZWQiEnVzZXJCb29zdEF2YWlsYWJsZSIJZGF0YVN0YXRlIgVkZWJ1ZyILbG9ja0FjdGlvbnMiCGNmZ0FycmF5Igphc3NldElkU3RyIglwbXRBbW91bnQiDm5leHRVc2VyTnVtS0VZIg51c2VySXNFeGlzdGluZyIHY29lZmZYOCIOZ1d4QW1vdW50U3RhcnQiE2dXeFBhcmFtc1Jlc3VsdExpc3QiDWVtaXNzaW9uU3RhcnQiA2FyciIRZmFjdG9yeUFkZHJlc3NTdHIiDmxvY2tBc3NldElkU3RyIgttaW5EdXJhdGlvbiILbWF4RHVyYXRpb24iC2NoZWNrQ2FsbGVyIg9yZWZlcnJlckFkZHJlc3MiCXNpZ25hdHVyZSINJHQwMjI4NDIyMjkwNyIRbG9ja0FjdGlvbnNSZXN1bHQiD3JlZmVycmFsQWRkcmVzcyIGcmVmSW52IhF1cGRhdGVSZWZBY3Rpdml0eSINJHQwMjMzNjUyMzQzMCINZGVsdGFEdXJhdGlvbiIKdXNlckFtb3VudCIMbG9ja0R1cmF0aW9uIgdsb2NrRW5kIhFyZW1haW5pbmdEdXJhdGlvbiINdXNlckFtb3VudE5ldyIPbG9ja0R1cmF0aW9uTmV3Igxsb2NrU3RhcnROZXciC2N1cnJVc2VyR3d4Igdnd3hEaWZmIhd0b3RhbENhY2hlZEd3eENvcnJlY3RlZCISdXNlck1heEJvb3N0SW50TmV3IhhyZW1haW5pbmdVc2VyTWF4Qm9vc3RJbnQiE3VzZXJNYXhCb29zdEludERpZmYiDSR0MDI4NDExMjg1MTMiDSR0MDI4NjQ1Mjg3NDYiF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5IhVjaGVja01hbmFnZXJQdWJsaWNLZXkiAnBtIgVoYXNQTSIHY2hlY2tQTSICdHgiBnZlcmlmeSIPdGFyZ2V0UHVibGljS2V5cgABYQICX18AAWIACAABYwCAwtcvAAFkBQFjAQFlAgFmAWcJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQFmBQFnCQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQFnAg8gaXMgbm90IGRlZmluZWQBAWgCAWYBZwkBC3ZhbHVlT3JFbHNlAgkAmggCBQFmBQFnAAABAWkDAWYBZwFqCQELdmFsdWVPckVsc2UCCQCaCAIFAWYFAWcFAWoBAWsCAWYBZwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFAWYFAWcJAKwCAgkArAICAg9tYW5kYXRvcnkgdGhpcy4FAWcCDyBpcyBub3QgZGVmaW5lZAEBbAEBbQMJAGYCAAAFAW0JAQEtAQUBbQUBbQEBbgEBbQQBbwUBbQMJAAECBQFvAglMaXN0W0FueV0EAXAFAW8FAXAJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BAXEBAW0EAW8FAW0DCQABAgUBbwIDSW50BAFyBQFvBQFyCQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQFzAAkAuQkCCQDMCAICBCVzJXMJAMwIAgIGY29uZmlnCQDMCAICGHJlZmVycmFsc0NvbnRyYWN0QWRkcmVzcwUDbmlsBQFhAAF0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEBZQIFBHRoaXMJAQFzAAABdQkAuQkCCQDMCAICBCVzJXMJAMwIAgIIcmVmZXJyYWwJAMwIAgILcHJvZ3JhbU5hbWUFA25pbAUBYQABdgIGd3hsb2NrAAF3CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAXUFAXYBAXgAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzAAF5AAEAAXoAAgABQQADAAFCAAQAAUMABQABRAAGAAFFAAcAAUYACAABRwAJAAFIAAoAAUkACwEBSgACESVzX19mYWN0b3J5Q29uZmlnAQFLAQFMCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAUwJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAU0AAhAlc19fbHBUb2tlbnNMaXN0AQFOAQFMCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFAUwJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFAWEBAU8BAVAJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUBUAUDbmlsBQFhAQFRAgFSAVMJAKwCAgkArAICCQCsAgICEiVzJXNfX3Bvb2xXZWlnaHRfXwUBUgICX18JAKQDAQUBUwEBVAAJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQFlAgUEdGhpcwkBAXgAAQFVAAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIJAQFUAAkBAU0AAgAFAWEBAVYBAVcJALUJAgkBAWUCBQFXCQEBSgAFAWEBAVgBAVkJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUBWQUBegEBWgEBWQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQFZBQFDAQJhYQEBWQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQFZBQF5AQJhYgEBWQkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQFZBQFIAQJhYwACFCVzX19tYW5hZ2VyUHVibGljS2V5AQJhZAACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQECYWUAAhslcyVzX19yYXRlUGVyQmxvY2tfX2N1cnJlbnQBAmFmAAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50AQJhZwACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrAQJhaAACHCVzJXNfX2Jvb3N0aW5nVjJfX3N0YXJ0QmxvY2sBAmFpAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uAQJhagACGCVzJXNfX2VtaXNzaW9uX19lbmRCbG9jawECYWsAAg4lc19fbmV4dFBlcmlvZAECYWwAAiglcyVzX19nd3hSZXdhcmRFbWlzc2lvblBhcnRfX3N0YXJ0SGVpZ2h0AAJhbQABAAJhbgACAAJhbwADAAJhcAAEAAJhcQAFAQJhcgACCiVzX19jb25maWcBAmFzAAkAtQkCCQEBZQIFBHRoaXMJAQJhcgAFAWEAAmF0CQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIJAQJhcwAFAmFxAQJhdQUCYXYCYXcCYXgCYXkCYXQJALkJAgkAzAgCAgglcyVkJWQlZAkAzAgCBQJhdgkAzAgCBQJhdwkAzAgCBQJheAkAzAgCBQJheQkAzAgCBQJhdAUDbmlsBQFhAQJhegUCYXYCYXcCYXgCYXkCYXQJAQJhdQUFAmF2CQCkAwEFAmF3CQCkAwEFAmF4CQCkAwEFAmF5BQJhdAECYUEABAFvCQCiCAEJAQJhYwADCQABAgUBbwIGU3RyaW5nBAJhQgUBbwkA2QQBBQJhQgMJAAECBQFvAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBAmFDAAQBbwkAoggBCQECYWQAAwkAAQIFAW8CBlN0cmluZwQCYUIFAW8JANkEAQUCYUIDCQABAgUBbwIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQJhRAECYUUEAmFGCQACAQIRUGVybWlzc2lvbiBkZW5pZWQEAW8JAQJhQQADCQABAgUBbwIKQnl0ZVZlY3RvcgQCYUcFAW8DCQAAAggFAmFFD2NhbGxlclB1YmxpY0tleQUCYUcGBQJhRgMJAAECBQFvAgRVbml0AwkAAAIIBQJhRQZjYWxsZXIFBHRoaXMGBQJhRgkAAgECC01hdGNoIGVycm9yAAJhSAABAAJhSQACAAJhSgADAAJhSwAEAAJhTAAFAAJhTQAGAQJhTgECYU8JALkJAgkAzAgCAgolcyVzX19sb2NrCQDMCAIFAmFPBQNuaWwFAWEBAmFQAQJhTwkAtQkCCQEBZQIFBHRoaXMJAQJhTgEFAmFPBQFhAQJhUQgCYVICYVMCYVQCYVUCYVYCYVcCYVgCYVkJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIFAmFSCQDMCAIFAmFTCQDMCAIFAmFUCQDMCAIFAmFVCQDMCAIFAmFWCQDMCAIFAmFXCQDMCAIFAmFYCQDMCAIFAmFZBQNuaWwFAWEBAmFaBwJhUgJhUwJhVAJhVQJhVgJhVwJhWQkBAmFRCAUCYVIJAKQDAQUCYVMJAKQDAQUCYVQJAKQDAQUCYVUJAKQDAQUCYVYJAKQDAQUCYVcJAKQDAQgFCWxhc3RCbG9jawl0aW1lc3RhbXAJAKQDAQUCYVkBAmJhAAIPJXNfX25leHRVc2VyTnVtAQJiYgECYU8JALkJAgkAzAgCAhklcyVzJXNfX21hcHBpbmdfX3VzZXIybnVtCQDMCAIFAmFPBQNuaWwFAWEBAmJjAQFTCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQFTBQNuaWwFAWEBAmJkAQJhUgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVIJAMwIAgIGYW1vdW50BQNuaWwFAWEBAmJlAQJhUgkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUCYVIJAMwIAgIFc3RhcnQFA25pbAUBYQECYmYBAmFSCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUgkAzAgCAghkdXJhdGlvbgUDbmlsBQFhAQJiZwECYVIJALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFAmFSCQDMCAICAWsFA25pbAUBYQECYmgBAmFSCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQJhUgkAzAgCAgFiBQNuaWwFAWEBAmJpAgJhUgJiagkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFAmFSCQDMCAICAWsJAMwIAgUCYmoFA25pbAUBYQECYmsCAmFSAmJqCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUCYVIJAMwIAgIBYgkAzAgCBQJiagUDbmlsBQFhAQJibAACHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAECYm0AAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAQJibgACFyVzJXNfX3N0YXRzX19sb2Nrc0NvdW50AQJibwACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50AQJicAECYVIJALkJAgkAzAgCAiAlcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRWMgkAzAgCBQJhUgUDbmlsBQFhAQJicQICYVICYnIJALkJAgkAzAgCAiAlcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnRWMgkAzAgCBQJhUgkAzAgCBQJicgUDbmlsBQFhAQJicwECYVIJALkJAgkAzAgCAhElcyVkX19tYXhCb29zdEludAkAzAgCBQJhUgUDbmlsBQFhAQJidAACGCVzJXNfX21heEJvb3N0SW50X190b3RhbAECYnUBAmFSCQC5CQIJAMwIAgIkJXMlZF9fdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQDMCAIFAmFSBQNuaWwFAWEBAmJ2AQJhUgkAuQkCCQDMCAICFiVzJWRfX3VzZXJCb29zdENsYWltZWQJAMwIAgUCYVIFA25pbAUBYQECYncAAhYlcyVzX19nd3hDYWNoZWRfX3RvdGFsAQJieAACHCVzX19nd3hDYWNoZWRUb3RhbENvcnJlY3RpdmUAAmJ5CQEBVAAAAVkJAQFWAQUCYnkAAmJ6CQEBWgEFAVkAAmJBCQECYWEBBQFZAAJiQgkBAmFiAQUBWQACYkMJALkJAgkAzAgCAgIlcwkAzAgCAhZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQNuaWwFAWEAAmJECQERQGV4dHJOYXRpdmUoMTA2MikBCQERQGV4dHJOYXRpdmUoMTA1MykCBQJieQUCYkMAAmJFCgACYkYJAPwHBAUCYnoCFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUCYkYCA0ludAUCYkYJAAIBCQCsAgIJAAMBBQJiRgIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50AQJiRwECYkgEAmJJCQC5CQIJAMwIAgICJXMJAMwIAgIOY3VycmVudEVwb2NoVWkFA25pbAUBYQQCYkoJARFAZXh0ck5hdGl2ZSgxMDUwKQIFAmJEBQJiSQQCYksJALkJAgkAzAgCAgQlcyVzCQDMCAICKXRvdGFsQ2FjaGVkR3d4Q29ycmVjdGlvbl9fYWN0aXZhdGlvbkVwb2NoBQNuaWwFAWEEAmJMCQCaCAIFBHRoaXMFAmJLBAJiTQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYncAAAAEAmJOAwkBCWlzRGVmaW5lZAEFAmJMCQBnAgUCYkoJAQV2YWx1ZQEFAmJMBwQCYk8DAwUCYk4FAmJIBwkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQECYngAAAAAAAkAlgMBCQDMCAIAAAkAzAgCCQBkAgUCYk0FAmJPBQNuaWwBAmJQCAJiUQJiUgJhUwJiUwJhVQJiVAJiVQJhRQQCYlYJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQJiUQkAzAgCBQJiUgkAzAgCCQDYBAEIBQJhRQ10cmFuc2FjdGlvbklkBQNuaWwFAWEEAmJXCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUCYVMJAMwIAgkApAMBBQJiUwkAzAgCCQCkAwEFAmFVCQDMCAIJAKQDAQUCYlQJAMwIAgkApAMBBQJiVQUDbmlsBQFhCQELU3RyaW5nRW50cnkCBQJiVgUCYlcBAmJYBAJiWQJiWgJjYQJjYgQCY2MJAQJibQAEAmNkCQECYm4ABAJjZQkBAmJvAAQCY2YJAQJibAAEAmNnCQEBaAIFBHRoaXMFAmNjBAJjaAkBAWgCBQR0aGlzBQJjZAQCY2kJAQFoAgUEdGhpcwUCY2UEAmNqCQEBaAIFBHRoaXMFAmNmCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjYwkAZAIFAmNnBQJiWgkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY2QJAGQCBQJjaAUCY2EJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNlCQBkAgUCY2kFAmNiCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjZgkAZAIFAmNqBQJiWQUDbmlsAQJjawMCY2wCY20CY24EAmNvAOgHCQBpAgkAZAIJAGgCBQJjbAUCY24FAmNtBQJjbwECY3AIAmFPAmFSAmFTAmFUAmFVAmJUAmJVAmJqBAJjcQkBAmJkAQUCYVIEAmNyCQECYmUBBQJhUgQCY3MJAQJiZgEFAmFSBAJjdAkBAmJnAQUCYVIEAmN1CQECYmgBBQJhUgQCY3YJAQJiaQIFAmFSBQJiagQCY3cJAQJiawIFAmFSBQJiagQCYVkJAQJjawMFAmJUBQJiVQUGaGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjcQUCYVMJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNyBQJhVAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3MFAmFVCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdAUCYlQJAMwIAgkBDEludGVnZXJFbnRyeQIFAmN1BQJiVQkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY3YFAmJUCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQJjdwUCYlUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFOAQUCYU8JAQJhWgcFAmFSBQJhUwUCYVQFAmFVBQJiVAUCYlUFAmFZBQNuaWwBAmN4AgJhRQJjeQMJAGYCCQCQAwEIBQJhRQhwYXltZW50cwABCQACAQIbb25seSBvbmUgcGF5bWVudCBpcyBhbGxvd2VkAwkAAAIJAJADAQgFAmFFCHBheW1lbnRzAAAAAAQCY3oJAJEDAggFAmFFCHBheW1lbnRzAAADCQECIT0CCQEFdmFsdWUBCAUCY3oHYXNzZXRJZAUCY3kJAAIBAhtpbnZhbGlkIGFzc2V0IGlkIGluIHBheW1lbnQIBQJjegZhbW91bnQBAmNBAgJhTwJjQgQCY0MCBWVtcHR5BAJjRAkBAmJiAQUCYU8EAmFSCQELdmFsdWVPckVsc2UCCQCiCAEFAmNEBQJjQwQCYlQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmJnAQUCYVIAAAQCYlUJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBAmJoAQUCYVIAAAQCY0UJAQJjawMFAmJUBQJiVQUCY0IEAmFZAwkAZgIAAAUCY0UAAAUCY0UFAmFZAQJjRgECYU8JAQJjQQIFAmFPBQZoZWlnaHQBAmNHAwJjSAJjSQJjSgQCY0MCBUVNUFRZBAJjSwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQECYU4BBQJjSQUCY0MDCQAAAgUCY0sFAmNDCQCVCgMAAAUDbmlsAhV1c2VyUmVjb3JkOjppczo6ZW1wdHkEAmNMCQC1CQIFAmNLBQFhBAJjTQkAkQMCBQJjTAUCYUgEAmNOAgVlbXB0eQQCY08DCQECIT0CBQJjSAUCY04EAmNQCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUCYnkJAQFLAQUCY0gJAKwCAgIVdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJjSAkBEUBleHRyTmF0aXZlKDEwNTApAgUCYnkJAQFPAQUCY1ADBQJjSgAACQACAQkArAICAihub3QgcmVhZG9ubHkgbW9kZTogdW5zdXBwb3J0ZWQgbHAgYXNzZXQgBQJjSAQCY1EJAQFrAgUCYnoJAQJhZQAEAmNSCQEBawIFAmJ6CQECYWgABAJjUwkBAWsCBQJiegkBAmFqAAQCY24DCQBmAgUGaGVpZ2h0BQJjUwUCY1MFBmhlaWdodAQCY1QJAJYDAQkAzAgCCQBlAgUCY24FAmNSCQDMCAIAAAUDbmlsBAJjVQkBAmJxAgUCY00FAmNIBAJjVgkBAmJwAQUCY00EAmNXCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFAmNVCQEBaAIFBHRoaXMFAmNWBAJjWAkAaQIJAGgCCQBoAgUCY1EFAmNUCQBlAgUCYkUAAQUCYkUEAmNZCQBlAgUCY1gFAmNXBAJjWgkAawMFAmNZBQJiRQkAaAIJAGUCBQJiRQABBQJjUQQCZGEJAGUCBQJjbgUCY1oDCQBmAgAABQJjWQkAAgECEndyb25nIGNhbGN1bGF0aW9ucwQCZGIJAQJicwEFAmNNBAJkYwkBAmJ0AAQCZGQJAQFoAgUEdGhpcwUCZGIEAmRlCQEBaAIFBHRoaXMFAmRjBAJkZgoAAmJGCQD8BwQFAmJEAhNnZXRWb3RlSW5mb1JFQURPTkxZCQDMCAIFAmNICQDMCAIFAmNJBQNuaWwFA25pbAMJAAECBQJiRgIKKEludCwgSW50KQUCYkYJAAIBCQCsAgIJAAMBBQJiRgIfIGNvdWxkbid0IGJlIGNhc3QgdG8gKEludCwgSW50KQQCZGcIBQJkZgJfMQQCZGgIBQJkZgJfMgQCZGkJAQJidQEFAmNNBAJkagkBAWgCBQR0aGlzBQJkaQQCZGsJAGsDBQJjWQUCY08FAWQEAmRsAwkAAAIFAmRoAAAAAAkAawMFAmRrBQJkZwUCZGgEAmRtCQECYnYBBQJjTQQCZG4JAQFoAgUEdGhpcwUCZG0EAmRvCQBlAgUCZGwFAmRuBAJkcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUCY1UFAmNYBQNuaWwEAmRxCQC5CQIJAMwIAgkApAMBBQJjVwkAzAgCCQCkAwEFAmNZCQDMCAIJAKQDAQUCZG4JAMwIAgkApAMBBQJkbwkAzAgCCQCkAwEFAmNPCQDMCAIJAKQDAQUCY24JAMwIAgkApAMBBQJjWgkAzAgCCQCkAwEFAmRhCQDMCAIJAKQDAQUCZGcJAMwIAgkApAMBBQJkaAUDbmlsAgE6CQCVCgMFAmRsBQJkcAUCZHEBAmRyAgJhRQJhVQQCZHMJAQJhcwAEAmR0CQCRAwIFAmRzBQJhbQQCYXYJANkEAQUCZHQEAmF3CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHMFAmFuBAJheAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRzBQJhbwQCYXkJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJkcwUCYXADCQECIT0CCQCQAwEIBQJhRQhwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQCY3oJAJEDAggFAmFFCHBheW1lbnRzAAAEAmR1CAUCY3oGYW1vdW50AwkBAiE9AgUCYXYJAQV2YWx1ZQEIBQJjegdhc3NldElkCQACAQkArAICCQCsAgICHmludmFsaWQgYXNzZXQgaXMgaW4gcGF5bWVudCAtIAUCZHQCDCBpcyBleHBlY3RlZAQCZHYJAQJiYQAEAmNJCQClCAEIBQJhRQZjYWxsZXIEAmR3CQEJaXNEZWZpbmVkAQkAoggBCQECYmIBBQJjSQQCY00DBQJkdwkBBXZhbHVlAQkAoggBCQECYmIBBQJjSQkApAMBCQEBawIFBHRoaXMFAmR2BAJhUgkBDXBhcnNlSW50VmFsdWUBBQJjTQQCYlMFBmhlaWdodAQCY3IJAQJiZQEFAmNNBAJjcwkBAmJmAQUCY00EAmNxCQECYmQBBQJjTQMJAGYCBQJhdwUCZHUJAAIBCQCsAgICImFtb3VudCBpcyBsZXNzIHRoZW4gbWluTG9ja0Ftb3VudD0JAKQDAQUCYXcDCQBmAgUCYXgFAmFVCQACAQkArAICAi1wYXNzZWQgZHVyYXRpb24gaXMgbGVzcyB0aGVuIG1pbkxvY2tEdXJhdGlvbj0JAKQDAQUCYXgDCQBmAgUCYVUFAmF5CQACAQkArAICAjBwYXNzZWQgZHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAKQDAQUCYXkDAwUCZHcJAGcCCQBkAgkBAWsCBQR0aGlzBQJjcgkBAWsCBQR0aGlzBQJjcwUCYlMHCQACAQI2dGhlcmUgaXMgYW4gYWN0aXZlIGxvY2sgLSBjb25zaWRlciB0byB1c2UgaW5jcmVhc2VMb2NrAwkAZgIJAQFoAgUEdGhpcwUCY3EAAAkAAgEJAKwCAgI0dGhlcmUgYXJlIGxvY2tlZCBXWHMgLSBjb25zaWRlciB0byB1c2UgaW5jcmVhc2VMb2NrIAUCY3EEAmR4CQBrAwUCYVUFAWMFAmF5BAJkeQkAawMFAmR1BQJkeAUBYwQCZHoJAQFuAQkA/AcEBQJhdAIVY2FsY0d3eFBhcmFtc1JFQURPTkxZCQDMCAIFAmR5CQDMCAIFAmJTCQDMCAIFAmFVBQNuaWwFA25pbAQCYlQJAQFxAQkAkQMCBQJkegAABAJiVQkBAXEBCQCRAwIFAmR6AAEEAmJqCQCkAwEJAQFxAQkAkQMCBQJkegACBAJjUQkBAWsCBQJiegkBAmFlAAQCZEEJAQFrAgUCYnoJAQJhZwAEAmNTCQEBawIFAmJ6CQECYWoABAJjbgMJAGYCBQZoZWlnaHQFAmNTBQJjUwUGaGVpZ2h0BAJjVAkAlgMBCQDMCAIJAGUCBQJjbgUCZEEJAMwIAgAABQNuaWwEAmNWCQECYnABBQJjTQQCY1gJAGkCCQBoAgkAaAIFAmNRBQJjVAACAAMEAmRiCQECYnMBBQJjTQQCZGMJAQJidAAEAmRkCQBpAgkAaAIFAmR5BQJhVQACBAJkZQkBAWgCBQR0aGlzBQJkYwQCYk0JAQJiRwEHBAJkQgMFAmR3BQNuaWwJAMwIAgkBDEludGVnZXJFbnRyeQIFAmR2CQBkAgUCYVIAAQkAzAgCCQELU3RyaW5nRW50cnkCCQECYmIBBQJjSQUCY00JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmJjAQUCY00FAmNJBQNuaWwJAJQKAgkAzggCCQDNCAIJAM4IAgkAzggCBQJkQgkBAmNwCAUCY0kFAmNNBQJkdQUCYlMFAmFVBQJiVAUCYlUFAmJqCQECYlgEBQJkdQUCYVUAAQMFAmR3AAAAAQkBAmJQCAIEbG9jawUCY0kFAmR1BQJiUwUCYVUFAmJUBQJiVQUCYUUJAMwIAgkBDEludGVnZXJFbnRyeQIFAmNWBQJjWAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ3AAkAZAIFAmJNBQJkeQUDbmlsBQJkeQwCYUUBC2NvbnN0cnVjdG9yBgJkQwJkRAJhdwJkRQJkRgJhdAQCZEcJAQJhRAEFAmFFAwkAAAIFAmRHBQJkRwkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYmEAAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFyAAkBAmF6BQUCZEQFAmF3BQJkRQUCZEYFAmF0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQF4AAUCZEMFA25pbAkBAmJYBAAAAAAAAAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFFAQdsb2NrUmVmAwJhVQJkSAJkSQQCZEoJAQJkcgIFAmFFBQJhVQQCZEsIBQJkSgJfMQQCZHkIBQJkSgJfMgQCZEwJAKUIAQgFAmFFBmNhbGxlcgQCZE0DAwkAAAIFAmRIAgAGCQAAAgUCZEkBAAUEdW5pdAkA/AcEBQF0AgpjcmVhdGVQYWlyCQDMCAIFAXcJAMwIAgUCZEgJAMwIAgUCZEwJAMwIAgUCZEkFA25pbAUDbmlsAwkAAAIFAmRNBQJkTQQCZE4JAPwHBAUCYXQCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYUUGY2FsbGVyCQDMCAIFAmR5BQNuaWwFA25pbAMJAAACBQJkTgUCZE4JAJQKAgUCZEsFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4CYUUBBGxvY2sBAmFVBAJkTwkBAmRyAgUCYUUFAmFVBAJkSwgFAmRPAl8xBAJkeQgFAmRPAl8yBAJkTgkA/AcEBQJhdAIWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQkAzAgCCQClCAEIBQJhRQZjYWxsZXIJAMwIAgUCZHkFA25pbAUDbmlsAwkAAAIFAmROBQJkTgkAlAoCBQJkSwUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhRQEMaW5jcmVhc2VMb2NrAQJkUAQCZHMJAQJhcwAEAmR0CQCRAwIFAmRzBQJhbQQCYXYJANkEAQUCZHQEAmF4CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCZHMFAmFvBAJheQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmRzBQJhcAQCZHUJAQJjeAIFAmFFBQJhdgQCY0kJAKUIAQgFAmFFBmNhbGxlcgQCY0wJAQJhUAEFAmNJBAJjTQkAkQMCBQJjTAUCYUgEAmRRCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY0wFAmFJBAJiUwkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNMBQJhSgQCZFIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjTAUCYUsEAmRTCQBkAgUCYlMFAmRSBAJkVAkAlgMBCQDMCAIJAGUCBQJkUwUGaGVpZ2h0CQDMCAIAAAUDbmlsBAJkVQkAZAIFAmRRBQJkdQQCZFYJAGQCBQJkVAUCZFADCQBmAgAABQJkUAkAAgECGmR1cmF0aW9uIGlzIGxlc3MgdGhlbiB6ZXJvAwkAZgIFAmF4BQJkVgkAAgEJAKwCAgItbG9ja0R1cmF0aW9uTmV3IGlzIGxlc3MgdGhlbiBtaW5Mb2NrRHVyYXRpb249CQCkAwEFAmF4AwkAZgIFAmRWBQJheQkAAgEJAKwCAgJEZGVsdGFEdXJhdGlvbiArIGV4aXN0ZWRMb2NrRHVyYXRpb24gaXMgZ3JlYXRlciB0aGVuIG1heExvY2tEdXJhdGlvbj0JAKQDAQUCYXkEAmR4CQBrAwUCZFYFAWMFAmF5BAJkeQkAawMFAmRVBQJkeAUBYwQCZE4JAPwHBAUCYXQCFnVwZGF0ZVJlZmVycmFsQWN0aXZpdHkJAMwIAgkApQgBCAUCYUUGY2FsbGVyCQDMCAIFAmR5BQNuaWwFA25pbAMJAAACBQJkTgUCZE4EAmRXBQZoZWlnaHQEAmR6CQEBbgEJAPwHBAUCYXQCFWNhbGNHd3hQYXJhbXNSRUFET05MWQkAzAgCBQJkeQkAzAgCBQJkVwkAzAgCBQJkVgUDbmlsBQNuaWwEAmJUCQEBcQEJAJEDAgUCZHoAAAQCYlUJAQFxAQkAkQMCBQJkegABBAJiagkApAMBCQEBcQEJAJEDAgUCZHoAAgQCY1EJAQFrAgUCYnoJAQJhZQAEAmRBCQEBawIFAmJ6CQECYWcABAJjUwkBAWsCBQJiegkBAmFqAAQCY24DCQBmAgUGaGVpZ2h0BQJjUwUCY1MFBmhlaWdodAQCY1QJAJYDAQkAzAgCCQBlAgUCY24FAmRBCQDMCAIAAAUDbmlsBAJjVgkBAmJwAQUCY00EAmNXCQEBaAIFBHRoaXMFAmNWBAJjWAkAaQIJAGgCCQBoAgUCY1EFAmNUAAIAAwQCY1kJAGUCBQJjWAUCY1cDCQBmAgAABQJjWQkAAgECEndyb25nIGNhbGN1bGF0aW9ucwQCZGIJAQJicwEFAmNNBAJkYwkBAmJ0AAQCZGQJAQFoAgUEdGhpcwUCZGIEAmRlCQEBaAIFBHRoaXMFAmRjBAJkWAkBAmNGAQUCY0kEAmRZCQBlAgUCZHkFAmRYAwkAZgIAAAUCZFkJAAIBCQCsAgICGGd3eERpZmYgaXMgbGVzcyB0aGVuIDA6IAkApAMBBQJkWQQCYk0JAQJiRwEHBAJkWgkBAmJHAQYEAmRpCQECYnUBBQJjTQQCZGoJAQFoAgUEdGhpcwUCZGkEAmRsCQBrAwUCY1kFAmRYBQJkWgQCZWEJAGkCCQBoAgUCZHkFAmRWAAIEAmViCQBpAgkAaAIFAmRYBQJkVAACBAJlYwkAZQIFAmVhBQJlYgkAzggCCQDNCAIJAM4IAgkBAmNwCAUCY0kFAmNNBQJkVQUCZFcFAmRWBQJiVAUCYlUFAmJqCQECYlgEBQJkdQUCZFAAAAAACQECYlAIAgRsb2NrBQJjSQUCZHUFAmJTBQJkVgUCYlQFAmJVBQJhRQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmJ3AAkAZAIFAmJNBQJkWQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFFAQxjbGFpbVd4Qm9vc3QCAmNIAmNJAwkBAiE9AgUCYkEIBQJhRQZjYWxsZXIJAAIBAhJwZXJtaXNzaW9ucyBkZW5pZWQEAmVkCQECY0cDBQJjSAUCY0kHBAJkbwgFAmVkAl8xBAJkcAgFAmVkAl8yBAJkcQgFAmVkAl8zCQCUCgIFAmRwCQDMCAIFAmRvBQNuaWwCYUUBFGNsYWltV3hCb29zdFJFQURPTkxZAgJjSAJjSQQCZWUJAQJjRwMFAmNIBQJjSQYEAmRvCAUCZWUCXzEEAmRwCAUCZWUCXzIEAmRxCAUCZWUCXzMJAJQKAgUDbmlsCQDMCAIFAmRvCQDMCAIFAmRxBQNuaWwCYUUBBnVubG9jawECYU8EAmNMCQECYVABBQJhTwQCY00JAJEDAgUCY0wFAmFIBAJkUQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmNMBQJhSQQCYlMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJjTAUCYUoEAmRSCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCY0wFAmFLBAJkUwkAZAIFAmJTBQJkUgQCZHMJAQJhcwAEAmF2CQDZBAEJAJEDAgUCZHMFAmFtAwkAZwIFAmRTBQZoZWlnaHQJAAIBCQCsAgIJAKwCAgIFd2FpdCAJAKQDAQUCZFMCCiB0byB1bmxvY2sDCQBnAgAABQJkUQkAAgECEW5vdGhpbmcgdG8gdW5sb2NrBAJiagkBC3ZhbHVlT3JFbHNlAgkAmggCBQJhdAkBAmFrAAAACQDNCAIJAM0IAgkAzggCCQECY3AIBQJhTwUCY00AAAUCYlMFAmRSAAAAAAkApAMBBQJiagkBAmJYBAkBAS0BBQJkUQAAAAAA////////////AQkBAmJQCAIGdW5sb2NrBQJhTwUCZFEFAmJTBQJkUgAAAAAFAmFFCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQJhTwUCZFEFAmF2AmFFARNnd3hVc2VySW5mb1JFQURPTkxZAQJhTwQCYVkJAQJjRgEFAmFPCQCUCgIFA25pbAkAzAgCBQJhWQUDbmlsAmFFASBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQICYU8CY0IEAmFZCQECY0ECBQJhTwUCY0IJAJQKAgUDbmlsBQJhWQJhRQEZZ2V0VG90YWxDYWNoZWRHd3hSRUFET05MWQAJAJQKAgUDbmlsCQECYkcBBgJhRQEKc2V0TWFuYWdlcgECZWYEAmRHCQECYUQBBQJhRQMJAAACBQJkRwUCZEcEAmVnCQDZBAEFAmVmAwkAAAIFAmVnBQJlZwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQABQJlZgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFFAQ5jb25maXJtTWFuYWdlcgAEAmVoCQECYUMABAJlaQMJAQlpc0RlZmluZWQBBQJlaAYJAAIBAhJObyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZWkFAmVpBAJlagMJAAACCAUCYUUPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJlaAYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUCZWoFAmVqCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwAJANgEAQkBBXZhbHVlAQUCZWgJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFkAAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJlawECZWwABAJlbQQBbwkBAmFBAAMJAAECBQFvAgpCeXRlVmVjdG9yBAJhRwUBbwUCYUcDCQABAgUBbwIEVW5pdAgFAmVrD3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJlawlib2R5Qnl0ZXMJAJEDAggFAmVrBnByb29mcwAABQJlbTU2Dr8=", "height": 2450613, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 8Riu22NE2M5oWYCakjGFNKwJ31wB82n8CCfUQk4GJA66 Next: Exks2UkriPFqjRP5E8F3QS8vd8gYfCLqdJdYVVTQQwU1 Diff:
OldNewDifferences
138138 func ag () = "%s%s__emission__startBlock"
139139
140140
141-func ah () = "%s%s__emission__duration"
141+func ah () = "%s%s__boostingV2__startBlock"
142142
143143
144-func ai () = "%s%s__emission__endBlock"
144+func ai () = "%s%s__emission__duration"
145145
146146
147-func aj () = "%s__nextPeriod"
147+func aj () = "%s%s__emission__endBlock"
148148
149149
150-func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
150+func ak () = "%s__nextPeriod"
151151
152152
153-let al = 1
154-
155-let am = 2
156-
157-let an = 3
158-
159-let ao = 4
160-
161-let ap = 5
162-
163-func aq () = "%s__config"
153+func al () = "%s%s__gwxRewardEmissionPart__startHeight"
164154
165155
166-func ar () = split(e(this, aq()), a)
156+let am = 1
157+
158+let an = 2
159+
160+let ao = 3
161+
162+let ap = 4
163+
164+let aq = 5
165+
166+func ar () = "%s__config"
167167
168168
169-let as = addressFromStringValue(ar()[ap])
170-
171-func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
169+func as () = split(e(this, ar()), a)
172170
173171
174-func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
172+let at = addressFromStringValue(as()[aq])
173+
174+func au (av,aw,ax,ay,at) = makeString(["%s%d%d%d", av, aw, ax, ay, at], a)
175175
176176
177-func az () = {
177+func az (av,aw,ax,ay,at) = au(av, toString(aw), toString(ax), toString(ay), at)
178+
179+
180+func aA () = {
178181 let o = getString(ac())
179182 if ($isInstanceOf(o, "String"))
180183 then {
181- let aA = o
182- fromBase58String(aA)
184+ let aB = o
185+ fromBase58String(aB)
183186 }
184187 else if ($isInstanceOf(o, "Unit"))
185188 then unit
187190 }
188191
189192
190-func aB () = {
193+func aC () = {
191194 let o = getString(ad())
192195 if ($isInstanceOf(o, "String"))
193196 then {
194- let aA = o
195- fromBase58String(aA)
197+ let aB = o
198+ fromBase58String(aB)
196199 }
197200 else if ($isInstanceOf(o, "Unit"))
198201 then unit
200203 }
201204
202205
203-func aC (aD) = {
204- let aE = throw("Permission denied")
205- let o = az()
206+func aD (aE) = {
207+ let aF = throw("Permission denied")
208+ let o = aA()
206209 if ($isInstanceOf(o, "ByteVector"))
207210 then {
208- let aF = o
209- if ((aD.callerPublicKey == aF))
211+ let aG = o
212+ if ((aE.callerPublicKey == aG))
210213 then true
211- else aE
214+ else aF
212215 }
213216 else if ($isInstanceOf(o, "Unit"))
214- then if ((aD.caller == this))
217+ then if ((aE.caller == this))
215218 then true
216- else aE
219+ else aF
217220 else throw("Match error")
218221 }
219222
220223
221-let aG = 1
224+let aH = 1
222225
223-let aH = 2
226+let aI = 2
224227
225-let aI = 3
228+let aJ = 3
226229
227-let aJ = 4
230+let aK = 4
228231
229-let aK = 5
232+let aL = 5
230233
231-let aL = 6
234+let aM = 6
232235
233-func aM (aN) = makeString(["%s%s__lock", aN], a)
236+func aN (aO) = makeString(["%s%s__lock", aO], a)
234237
235238
236-func aO (aN) = split(e(this, aM(aN)), a)
239+func aP (aO) = split(e(this, aN(aO)), a)
237240
238241
239-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)
242+func aQ (aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d", aR, aS, aT, aU, aV, aW, aX, aY], a)
240243
241244
242-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))
245+func aZ (aR,aS,aT,aU,aV,aW,aY) = aQ(aR, toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(lastBlock.timestamp), toString(aY))
243246
244247
245-func aZ () = "%s__nextUserNum"
248+func ba () = "%s__nextUserNum"
246249
247250
248-func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
251+func bb (aO) = makeString(["%s%s%s__mapping__user2num", aO], a)
249252
250253
251-func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
254+func bc (S) = makeString(["%s%s%s__mapping__num2user", S], a)
252255
253256
254-func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
257+func bd (aR) = makeString(["%s%d%s__paramByUserNum", aR, "amount"], a)
255258
256259
257-func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
260+func be (aR) = makeString(["%s%d%s__paramByUserNum", aR, "start"], a)
258261
259262
260-func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
263+func bf (aR) = makeString(["%s%d%s__paramByUserNum", aR, "duration"], a)
261264
262265
263-func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
266+func bg (aR) = makeString(["%s%d%s__paramByUserNum", aR, "k"], a)
264267
265268
266-func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
269+func bh (aR) = makeString(["%s%d%s__paramByUserNum", aR, "b"], a)
267270
268271
269-func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
272+func bi (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "k", bj], a)
270273
271274
272-func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
275+func bk (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "b", bj], a)
273276
274277
275-func bk () = "%s%s__stats__activeTotalLocked"
278+func bl () = "%s%s__stats__activeTotalLocked"
276279
277280
278-func bl () = "%s%s__stats__locksDurationSumInBlocks"
281+func bm () = "%s%s__stats__locksDurationSumInBlocks"
279282
280283
281-func bm () = "%s%s__stats__locksCount"
284+func bn () = "%s%s__stats__locksCount"
282285
283286
284-func bn () = "%s%s__stats__activeUsersCount"
287+func bo () = "%s%s__stats__activeUsersCount"
285288
286289
287-func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
290+func bp (aR) = makeString(["%s%d__userBoostEmissionLastIntV2", aR], a)
288291
289292
290-func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
293+func bq (aR,br) = makeString(["%s%d__userBoostEmissionLastIntV2", aR, br], a)
291294
292295
293-func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
296+func bs (aR) = makeString(["%s%d__maxBoostInt", aR], a)
294297
295298
296-func bs () = "%s%s__maxBoostInt__total"
299+func bt () = "%s%s__maxBoostInt__total"
297300
298301
299-func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
302+func bu (aR) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aR], a)
300303
301304
302-func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
305+func bv (aR) = makeString(["%s%d__userBoostClaimed", aR], a)
303306
304307
305-func bv () = "%s%s__gwxCached__total"
308+func bw () = "%s%s__gwxCached__total"
306309
307310
308-func bw () = "%s__gwxCachedTotalCorrective"
311+func bx () = "%s__gwxCachedTotalCorrective"
309312
310313
311-let bx = T()
314+let by = T()
312315
313-let Y = V(bx)
316+let Y = V(by)
314317
315-let by = Z(Y)
318+let bz = Z(Y)
316319
317-let bz = aa(Y)
320+let bA = aa(Y)
318321
319-let bA = ab(Y)
322+let bB = ab(Y)
320323
321-func bB (bC) = {
322- let bD = makeString(["%s", "votingEmissionContract"], a)
323- let bE = addressFromStringValue(getStringValue(bx, bD))
324- let bF = makeString(["%s", "currentEpochUi"], a)
325- let bG = getIntegerValue(bE, bF)
326- let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
327- let bI = getInteger(this, bH)
328- let bJ = valueOrElse(getInteger(this, bv()), 0)
329- let bK = if (isDefined(bI))
330- then (bG >= value(bI))
324+let bC = makeString(["%s", "votingEmissionContract"], a)
325+
326+let bD = addressFromStringValue(getStringValue(by, bC))
327+
328+let bE = {
329+ let bF = invoke(bz, "getBoostCoeffREADONLY", nil, nil)
330+ if ($isInstanceOf(bF, "Int"))
331+ then bF
332+ else throw(($getType(bF) + " couldn't be cast to Int"))
333+ }
334+
335+func bG (bH) = {
336+ let bI = makeString(["%s", "currentEpochUi"], a)
337+ let bJ = getIntegerValue(bD, bI)
338+ let bK = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
339+ let bL = getInteger(this, bK)
340+ let bM = valueOrElse(getInteger(this, bw()), 0)
341+ let bN = if (isDefined(bL))
342+ then (bJ >= value(bL))
331343 else false
332- let bL = if (if (bK)
333- then bC
344+ let bO = if (if (bN)
345+ then bH
334346 else false)
335- then valueOrElse(getInteger(this, bw()), 0)
347+ then valueOrElse(getInteger(this, bx()), 0)
336348 else 0
337- max([0, (bJ + bL)])
349+ max([0, (bM + bO)])
338350 }
339351
340352
341-func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342- let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343- 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)
344- StringEntry(bS, bT)
353+func bP (bQ,bR,aS,bS,aU,bT,bU,aE) = {
354+ let bV = makeString(["%s%s%s%s__history", bQ, bR, toBase58String(aE.transactionId)], a)
355+ let bW = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aS), toString(bS), toString(aU), toString(bT), toString(bU)], a)
356+ StringEntry(bV, bW)
345357 }
346358
347359
348-func bU (bV,bW,bX,bY) = {
349- let bZ = bl()
350- let ca = bm()
351- let cb = bn()
352- let cc = bk()
353- let cd = h(this, bZ)
354- let ce = h(this, ca)
355- let cf = h(this, cb)
360+func bX (bY,bZ,ca,cb) = {
361+ let cc = bm()
362+ let cd = bn()
363+ let ce = bo()
364+ let cf = bl()
356365 let cg = h(this, cc)
357-[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
366+ let ch = h(this, cd)
367+ let ci = h(this, ce)
368+ let cj = h(this, cf)
369+[IntegerEntry(cc, (cg + bZ)), IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + bY))]
358370 }
359371
360372
361-func ch (ci,cj,ck) = {
362- let cl = 1000
363- (((ci * ck) + cj) / cl)
373+func ck (cl,cm,cn) = {
374+ let co = 1000
375+ (((cl * cn) + cm) / co)
364376 }
365377
366378
367-func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368- let cn = bc(aQ)
369- let co = bd(aQ)
370- let cp = be(aQ)
371- let cq = bf(aQ)
372- let cr = bg(aQ)
373- let cs = bh(aQ, bi)
374- let ct = bj(aQ, bi)
375- let aX = ch(bQ, bR, height)
376-[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))]
379+func cp (aO,aR,aS,aT,aU,bT,bU,bj) = {
380+ let cq = bd(aR)
381+ let cr = be(aR)
382+ let cs = bf(aR)
383+ let ct = bg(aR)
384+ let cu = bh(aR)
385+ let cv = bi(aR, bj)
386+ let cw = bk(aR, bj)
387+ let aY = ck(bT, bU, height)
388+[IntegerEntry(cq, aS), IntegerEntry(cr, aT), IntegerEntry(cs, aU), IntegerEntry(ct, bT), IntegerEntry(cu, bU), IntegerEntry(cv, bT), IntegerEntry(cw, bU), StringEntry(aN(aO), aZ(aR, aS, aT, aU, bT, bU, aY))]
377389 }
378390
379391
380-func cu (aD,cv) = if ((size(aD.payments) > 1))
392+func cx (aE,cy) = if ((size(aE.payments) > 1))
381393 then throw("only one payment is allowed")
382- else if ((size(aD.payments) == 0))
394+ else if ((size(aE.payments) == 0))
383395 then 0
384396 else {
385- let cw = aD.payments[0]
386- if ((value(cw.assetId) != cv))
397+ let cz = aE.payments[0]
398+ if ((value(cz.assetId) != cy))
387399 then throw("invalid asset id in payment")
388- else cw.amount
400+ else cz.amount
389401 }
390402
391403
392-func cx (aN,cy) = {
393- let cz = "empty"
394- let cA = ba(aN)
395- let aQ = valueOrElse(getString(cA), cz)
396- let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397- let bR = valueOrElse(getInteger(bg(aQ)), 0)
398- let cB = ch(bQ, bR, cy)
399- let aX = if ((0 > cB))
404+func cA (aO,cB) = {
405+ let cC = "empty"
406+ let cD = bb(aO)
407+ let aR = valueOrElse(getString(cD), cC)
408+ let bT = valueOrElse(getInteger(bg(aR)), 0)
409+ let bU = valueOrElse(getInteger(bh(aR)), 0)
410+ let cE = ck(bT, bU, cB)
411+ let aY = if ((0 > cE))
400412 then 0
401- else cB
402- aX
413+ else cE
414+ aY
403415 }
404416
405417
406-func cC (aN) = cx(aN, height)
418+func cF (aO) = cA(aO, height)
407419
408420
409-func cD (cE,cF,cG) = {
410- let cz = "EMPTY"
411- let cH = valueOrElse(getString(this, aM(cF)), cz)
412- if ((cH == cz))
421+func cG (cH,cI,cJ) = {
422+ let cC = "EMPTY"
423+ let cK = valueOrElse(getString(this, aN(cI)), cC)
424+ if ((cK == cC))
413425 then $Tuple3(0, nil, "userRecord::is::empty")
414426 else {
415- let cI = split(cH, a)
416- let cJ = cI[aG]
417- let cK = valueOrElse(getInteger(bA, ak()), 0)
418- let cL = "empty"
419- let cM = if ((cE != cL))
427+ let cL = split(cK, a)
428+ let cM = cL[aH]
429+ let cN = "empty"
430+ let cO = if ((cH != cN))
420431 then {
421- let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE))
422- let cO = getIntegerValue(bx, O(cN))
423- let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO)
424- $Tuple2(cP, cO)
432+ let cP = valueOrErrorMessage(getString(by, K(cH)), ("unsupported lp asset " + cH))
433+ getIntegerValue(by, O(cP))
425434 }
426- else if (cG)
427- then $Tuple2(0, 0)
428- else throw(("not readonly mode: unsupported lp asset " + cE))
429- let cQ = cM._1
430- let cR = cM._2
431- let cS = k(by, ae())
432- let cT = k(by, ag())
433- let cU = k(by, ai())
434- let ck = if ((height > cU))
435- then cU
435+ else if (cJ)
436+ then 0
437+ else throw(("not readonly mode: unsupported lp asset " + cH))
438+ let cQ = k(bz, ae())
439+ let cR = k(bz, ah())
440+ let cS = k(bz, aj())
441+ let cn = if ((height > cS))
442+ then cS
436443 else height
437- let cV = max([(ck - cT), 0])
438- let cW = bp(cJ, cE)
439- let cX = bo(cJ)
440- let cY = valueOrElse(getInteger(this, cW), h(this, cX))
441- let cZ = (((cS * cV) * 2) / 3)
442- let da = (cZ - cY)
443- let db = fraction(da, 3, (2 * cS))
444- let dc = (ck - db)
445- let dd = max([(cK - dc), 0])
446- let de = ((ck - dc) - dd)
447- if (if (if ((0 > dc))
448- then true
449- else (0 > de))
450- then true
451- else (l(((dd + de) - db)) >= 1))
452- then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de)))
453- else if ((0 > da))
454- then throw("wrong calculations")
455- else {
456- let df = br(cJ)
457- let dg = bs()
458- let dh = h(this, df)
459- let di = h(this, dg)
460- let dj = bB(true)
461- let dk = cC(cF)
462- let dl = bt(cJ)
463- let dm = h(this, dl)
464- let dn = if ((db == 0))
465- then 0
466- else fraction(da, dd, db)
467- let do = if ((db == 0))
468- then 0
469- else fraction(da, de, db)
470- let dp = fraction(dn, cQ, d)
471- let dq = fraction(do, cR, d)
472- let dr = if ((dj == 0))
473- then 0
474- else fraction(dp, dk, dj)
475- let ds = if ((dj == 0))
476- then 0
477- else fraction(dq, dk, dj)
478- let dt = (dr + ds)
479- let du = bu(cJ)
480- let dv = h(this, du)
481- let dw = (dt - dv)
482- let dx = [IntegerEntry(cW, cZ)]
483- 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)], ":")
484- $Tuple3(dt, dx, dy)
444+ let cT = max([(cn - cR), 0])
445+ let cU = bq(cM, cH)
446+ let cV = bp(cM)
447+ let cW = valueOrElse(getInteger(this, cU), h(this, cV))
448+ let cX = (((cQ * cT) * (bE - 1)) / bE)
449+ let cY = (cX - cW)
450+ let cZ = fraction(cY, bE, ((bE - 1) * cQ))
451+ let da = (cn - cZ)
452+ if ((0 > cY))
453+ then throw("wrong calculations")
454+ else {
455+ let db = bs(cM)
456+ let dc = bt()
457+ let dd = h(this, db)
458+ let de = h(this, dc)
459+ let df = {
460+ let bF = invoke(bD, "getVoteInfoREADONLY", [cH, cI], nil)
461+ if ($isInstanceOf(bF, "(Int, Int)"))
462+ then bF
463+ else throw(($getType(bF) + " couldn't be cast to (Int, Int)"))
485464 }
465+ let dg = df._1
466+ let dh = df._2
467+ let di = bu(cM)
468+ let dj = h(this, di)
469+ let dk = fraction(cY, cO, d)
470+ let dl = if ((dh == 0))
471+ then 0
472+ else fraction(dk, dg, dh)
473+ let dm = bv(cM)
474+ let dn = h(this, dm)
475+ let do = (dl - dn)
476+ let dp = [IntegerEntry(cU, cX)]
477+ let dq = makeString([toString(cW), toString(cY), toString(dn), toString(do), toString(cO), toString(cn), toString(cZ), toString(da), toString(dg), toString(dh)], ":")
478+ $Tuple3(dl, dp, dq)
479+ }
486480 }
487481 }
488482
489483
490-func dz (aD,aT) = {
491- let dA = ar()
492- let dB = dA[al]
493- let au = fromBase58String(dB)
494- let av = parseIntValue(dA[am])
495- let aw = parseIntValue(dA[an])
496- let ax = parseIntValue(dA[ao])
497- if ((size(aD.payments) != 1))
484+func dr (aE,aU) = {
485+ let ds = as()
486+ let dt = ds[am]
487+ let av = fromBase58String(dt)
488+ let aw = parseIntValue(ds[an])
489+ let ax = parseIntValue(ds[ao])
490+ let ay = parseIntValue(ds[ap])
491+ if ((size(aE.payments) != 1))
498492 then throw("invalid payment - exact one payment must be attached")
499493 else {
500- let cw = aD.payments[0]
501- let dC = cw.amount
502- if ((au != value(cw.assetId)))
503- then throw((("invalid asset is in payment - " + dB) + " is expected"))
494+ let cz = aE.payments[0]
495+ let du = cz.amount
496+ if ((av != value(cz.assetId)))
497+ then throw((("invalid asset is in payment - " + dt) + " is expected"))
504498 else {
505- let dD = aZ()
506- let cF = toString(aD.caller)
507- let dE = isDefined(getString(ba(cF)))
508- let cJ = if (dE)
509- then value(getString(ba(cF)))
510- else toString(k(this, dD))
511- let aQ = parseIntValue(cJ)
512- let bP = height
513- let co = bd(cJ)
514- let cp = be(cJ)
515- let cn = bc(cJ)
516- if ((av > dC))
517- then throw(("amount is less then minLockAmount=" + toString(av)))
518- else if ((aw > aT))
519- then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520- else if ((aT > ax))
521- then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522- else if (if (dE)
523- then ((k(this, co) + k(this, cp)) >= bP)
499+ let dv = ba()
500+ let cI = toString(aE.caller)
501+ let dw = isDefined(getString(bb(cI)))
502+ let cM = if (dw)
503+ then value(getString(bb(cI)))
504+ else toString(k(this, dv))
505+ let aR = parseIntValue(cM)
506+ let bS = height
507+ let cr = be(cM)
508+ let cs = bf(cM)
509+ let cq = bd(cM)
510+ if ((aw > du))
511+ then throw(("amount is less then minLockAmount=" + toString(aw)))
512+ else if ((ax > aU))
513+ then throw(("passed duration is less then minLockDuration=" + toString(ax)))
514+ else if ((aU > ay))
515+ then throw(("passed duration is greater then maxLockDuration=" + toString(ay)))
516+ else if (if (dw)
517+ then ((k(this, cr) + k(this, cs)) >= bS)
524518 else false)
525519 then throw("there is an active lock - consider to use increaseLock")
526- else if ((h(this, cn) > 0))
527- then throw(("there are locked WXs - consider to use increaseLock " + cn))
520+ else if ((h(this, cq) > 0))
521+ then throw(("there are locked WXs - consider to use increaseLock " + cq))
528522 else {
529- let dF = fraction(aT, c, ax)
530- let dG = fraction(dC, dF, c)
531- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532- let bQ = q(dH[0])
533- let bR = q(dH[1])
534- let bi = toString(q(dH[2]))
535- let cS = k(by, ae())
536- let cT = k(by, ag())
537- let cU = k(by, ai())
538- let ck = if ((height > cU))
539- then cU
523+ let dx = fraction(aU, c, ay)
524+ let dy = fraction(du, dx, c)
525+ let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, bS, aU], nil))
526+ let bT = q(dz[0])
527+ let bU = q(dz[1])
528+ let bj = toString(q(dz[2]))
529+ let cQ = k(bz, ae())
530+ let dA = k(bz, ag())
531+ let cS = k(bz, aj())
532+ let cn = if ((height > cS))
533+ then cS
540534 else height
541- let cV = max([(ck - cT), 0])
542- let cX = bo(cJ)
543- let cZ = (((cS * cV) * 2) / 3)
544- let df = br(cJ)
545- let dg = bs()
546- let dh = ((dG * aT) / 2)
547- let di = h(this, dg)
548- let bJ = bB(false)
549- let dI = if (dE)
535+ let cT = max([(cn - dA), 0])
536+ let cV = bp(cM)
537+ let cX = (((cQ * cT) * 2) / 3)
538+ let db = bs(cM)
539+ let dc = bt()
540+ let dd = ((dy * aU) / 2)
541+ let de = h(this, dc)
542+ let bM = bG(false)
543+ let dB = if (dw)
550544 then nil
551- else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552- $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
545+ else [IntegerEntry(dv, (aR + 1)), StringEntry(bb(cI), cM), StringEntry(bc(cM), cI)]
546+ $Tuple2(((((dB ++ cp(cI, cM, du, bS, aU, bT, bU, bj)) ++ bX(du, aU, 1, if (dw)
553547 then 0
554- else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
548+ else 1)) :+ bP("lock", cI, du, bS, aU, bT, bU, aE)) ++ [IntegerEntry(cV, cX), IntegerEntry(bw(), (bM + dy))]), dy)
555549 }
556550 }
557551 }
558552 }
559553
560554
561-@Callable(aD)
562-func constructor (dJ,dK,av,dL,dM,as) = {
563- let dN = aC(aD)
564- if ((dN == dN))
565- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
555+@Callable(aE)
556+func constructor (dC,dD,aw,dE,dF,at) = {
557+ let dG = aD(aE)
558+ if ((dG == dG))
559+ then ([IntegerEntry(ba(), 0), StringEntry(ar(), az(dD, aw, dE, dF, at)), StringEntry(x(), dC)] ++ bX(0, 0, 0, 0))
566560 else throw("Strict value is not equal to itself.")
567561 }
568562
569563
570564
571-@Callable(aD)
572-func lockRef (aT,dO,dP) = {
573- let dQ = dz(aD, aT)
574- let dR = dQ._1
575- let dG = dQ._2
576- let dS = toString(aD.caller)
577- let dT = if (if ((dO == ""))
565+@Callable(aE)
566+func lockRef (aU,dH,dI) = {
567+ let dJ = dr(aE, aU)
568+ let dK = dJ._1
569+ let dy = dJ._2
570+ let dL = toString(aE.caller)
571+ let dM = if (if ((dH == ""))
578572 then true
579- else (dP == base58''))
573+ else (dI == base58''))
580574 then unit
581- else invoke(t, "createPair", [w, dO, dS, dP], nil)
582- if ((dT == dT))
575+ else invoke(t, "createPair", [w, dH, dL, dI], nil)
576+ if ((dM == dM))
583577 then {
584- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585- if ((dU == dU))
586- then $Tuple2(dR, unit)
578+ let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil)
579+ if ((dN == dN))
580+ then $Tuple2(dK, unit)
587581 else throw("Strict value is not equal to itself.")
588582 }
589583 else throw("Strict value is not equal to itself.")
591585
592586
593587
594-@Callable(aD)
595-func lock (aT) = {
596- let dV = dz(aD, aT)
597- let dR = dV._1
598- let dG = dV._2
599- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600- if ((dU == dU))
601- then $Tuple2(dR, unit)
588+@Callable(aE)
589+func lock (aU) = {
590+ let dO = dr(aE, aU)
591+ let dK = dO._1
592+ let dy = dO._2
593+ let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil)
594+ if ((dN == dN))
595+ then $Tuple2(dK, unit)
602596 else throw("Strict value is not equal to itself.")
603597 }
604598
605599
606600
607-@Callable(aD)
608-func increaseLock (dW) = {
609- let dA = ar()
610- let dB = dA[al]
611- let au = fromBase58String(dB)
612- let aw = parseIntValue(dA[an])
613- let ax = parseIntValue(dA[ao])
614- let dC = cu(aD, au)
615- let cF = toString(aD.caller)
616- let cI = aO(cF)
617- let cJ = cI[aG]
618- let dX = parseIntValue(cI[aH])
619- let bP = parseIntValue(cI[aI])
620- let dY = parseIntValue(cI[aJ])
621- let dZ = (bP + dY)
622- let ea = max([(dZ - height), 0])
623- let eb = (dX + dC)
624- let ec = (ea + dW)
625- if ((0 > dW))
601+@Callable(aE)
602+func increaseLock (dP) = {
603+ let ds = as()
604+ let dt = ds[am]
605+ let av = fromBase58String(dt)
606+ let ax = parseIntValue(ds[ao])
607+ let ay = parseIntValue(ds[ap])
608+ let du = cx(aE, av)
609+ let cI = toString(aE.caller)
610+ let cL = aP(cI)
611+ let cM = cL[aH]
612+ let dQ = parseIntValue(cL[aI])
613+ let bS = parseIntValue(cL[aJ])
614+ let dR = parseIntValue(cL[aK])
615+ let dS = (bS + dR)
616+ let dT = max([(dS - height), 0])
617+ let dU = (dQ + du)
618+ let dV = (dT + dP)
619+ if ((0 > dP))
626620 then throw("duration is less then zero")
627- else if ((aw > ec))
628- then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629- else if ((ec > ax))
630- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
621+ else if ((ax > dV))
622+ then throw(("lockDurationNew is less then minLockDuration=" + toString(ax)))
623+ else if ((dV > ay))
624+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ay)))
631625 else {
632- let dF = fraction(ec, c, ax)
633- let dG = fraction(eb, dF, c)
634- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635- if ((dU == dU))
626+ let dx = fraction(dV, c, ay)
627+ let dy = fraction(dU, dx, c)
628+ let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil)
629+ if ((dN == dN))
636630 then {
637- let ed = height
638- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639- let bQ = q(dH[0])
640- let bR = q(dH[1])
641- let bi = toString(q(dH[2]))
642- let cS = k(by, ae())
643- let cT = k(by, ag())
644- let cU = k(by, ai())
645- let ck = if ((height > cU))
646- then cU
631+ let dW = height
632+ let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, dW, dV], nil))
633+ let bT = q(dz[0])
634+ let bU = q(dz[1])
635+ let bj = toString(q(dz[2]))
636+ let cQ = k(bz, ae())
637+ let dA = k(bz, ag())
638+ let cS = k(bz, aj())
639+ let cn = if ((height > cS))
640+ then cS
647641 else height
648- let cV = max([(ck - cT), 0])
649- let cX = bo(cJ)
650- let cY = h(this, cX)
651- let cZ = (((cS * cV) * 2) / 3)
652- let da = (cZ - cY)
653- if ((0 > da))
642+ let cT = max([(cn - dA), 0])
643+ let cV = bp(cM)
644+ let cW = h(this, cV)
645+ let cX = (((cQ * cT) * 2) / 3)
646+ let cY = (cX - cW)
647+ if ((0 > cY))
654648 then throw("wrong calculations")
655649 else {
656- let df = br(cJ)
657- let dg = bs()
658- let dh = h(this, df)
659- let di = h(this, dg)
660- let ee = cC(cF)
661- let ef = (dG - ee)
662- if ((0 > ef))
663- then throw(("gwxDiff is less then 0: " + toString(ef)))
650+ let db = bs(cM)
651+ let dc = bt()
652+ let dd = h(this, db)
653+ let de = h(this, dc)
654+ let dX = cF(cI)
655+ let dY = (dy - dX)
656+ if ((0 > dY))
657+ then throw(("gwxDiff is less then 0: " + toString(dY)))
664658 else {
665- let bJ = bB(false)
666- let dj = bB(true)
667- let dl = bt(cJ)
668- let dm = h(this, dl)
669- let dt = fraction(da, ee, dj)
670- let eg = ((dG * ec) / 2)
671- let eh = ((ee * ea) / 2)
672- let ei = (eg - eh)
673- (((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))])
659+ let bM = bG(false)
660+ let dZ = bG(true)
661+ let di = bu(cM)
662+ let dj = h(this, di)
663+ let dl = fraction(cY, dX, dZ)
664+ let ea = ((dy * dV) / 2)
665+ let eb = ((dX * dT) / 2)
666+ let ec = (ea - eb)
667+ (((cp(cI, cM, dU, dW, dV, bT, bU, bj) ++ bX(du, dP, 0, 0)) :+ bP("lock", cI, du, bS, dV, bT, bU, aE)) ++ [IntegerEntry(bw(), (bM + dY))])
674668 }
675669 }
676670 }
680674
681675
682676
683-@Callable(aD)
684-func claimWxBoost (cE,cF) = if ((bz != aD.caller))
677+@Callable(aE)
678+func claimWxBoost (cH,cI) = if ((bA != aE.caller))
685679 then throw("permissions denied")
686680 else {
687- let ej = cD(cE, cF, false)
688- let dw = ej._1
689- let dx = ej._2
690- let dy = ej._3
691- $Tuple2(dx, [dw])
681+ let ed = cG(cH, cI, false)
682+ let do = ed._1
683+ let dp = ed._2
684+ let dq = ed._3
685+ $Tuple2(dp, [do])
692686 }
693687
694688
695689
696-@Callable(aD)
697-func claimWxBoostREADONLY (cE,cF) = {
698- let ek = cD(cE, cF, true)
699- let dw = ek._1
700- let dx = ek._2
701- let dy = ek._3
702- $Tuple2(nil, [dw, dy])
690+@Callable(aE)
691+func claimWxBoostREADONLY (cH,cI) = {
692+ let ee = cG(cH, cI, true)
693+ let do = ee._1
694+ let dp = ee._2
695+ let dq = ee._3
696+ $Tuple2(nil, [do, dq])
703697 }
704698
705699
706700
707-@Callable(aD)
708-func unlock (aN) = {
709- let cI = aO(aN)
710- let cJ = cI[aG]
711- let dX = parseIntValue(cI[aH])
712- let bP = parseIntValue(cI[aI])
713- let dY = parseIntValue(cI[aJ])
714- let dZ = (bP + dY)
715- let dA = ar()
716- let au = fromBase58String(dA[al])
717- if ((dZ >= height))
718- then throw((("wait " + toString(dZ)) + " to unlock"))
719- else if ((0 >= dX))
701+@Callable(aE)
702+func unlock (aO) = {
703+ let cL = aP(aO)
704+ let cM = cL[aH]
705+ let dQ = parseIntValue(cL[aI])
706+ let bS = parseIntValue(cL[aJ])
707+ let dR = parseIntValue(cL[aK])
708+ let dS = (bS + dR)
709+ let ds = as()
710+ let av = fromBase58String(ds[am])
711+ if ((dS >= height))
712+ then throw((("wait " + toString(dS)) + " to unlock"))
713+ else if ((0 >= dQ))
720714 then throw("nothing to unlock")
721715 else {
722- let bi = valueOrElse(getInteger(as, aj()), 0)
723- (((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))
716+ let bj = valueOrElse(getInteger(at, ak()), 0)
717+ (((cp(aO, cM, 0, bS, dR, 0, 0, toString(bj)) ++ bX(-(dQ), 0, 0, -1)) :+ bP("unlock", aO, dQ, bS, dR, 0, 0, aE)) :+ ScriptTransfer(addressFromStringValue(aO), dQ, av))
724718 }
725719 }
726720
727721
728722
729-@Callable(aD)
730-func gwxUserInfoREADONLY (aN) = {
731- let aX = cC(aN)
732- $Tuple2(nil, [aX])
723+@Callable(aE)
724+func gwxUserInfoREADONLY (aO) = {
725+ let aY = cF(aO)
726+ $Tuple2(nil, [aY])
733727 }
734728
735729
736730
737-@Callable(aD)
738-func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739- let aX = cx(aN, cy)
740- $Tuple2(nil, aX)
731+@Callable(aE)
732+func getUserGwxAmountAtHeightREADONLY (aO,cB) = {
733+ let aY = cA(aO, cB)
734+ $Tuple2(nil, aY)
741735 }
742736
743737
744738
745-@Callable(aD)
746-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
739+@Callable(aE)
740+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bG(true))
747741
748742
749743
750-@Callable(aD)
751-func setManager (el) = {
752- let dN = aC(aD)
753- if ((dN == dN))
744+@Callable(aE)
745+func setManager (ef) = {
746+ let dG = aD(aE)
747+ if ((dG == dG))
754748 then {
755- let em = fromBase58String(el)
756- if ((em == em))
757- then [StringEntry(ad(), el)]
749+ let eg = fromBase58String(ef)
750+ if ((eg == eg))
751+ then [StringEntry(ad(), ef)]
758752 else throw("Strict value is not equal to itself.")
759753 }
760754 else throw("Strict value is not equal to itself.")
762756
763757
764758
765-@Callable(aD)
759+@Callable(aE)
766760 func confirmManager () = {
767- let en = aB()
768- let eo = if (isDefined(en))
761+ let eh = aC()
762+ let ei = if (isDefined(eh))
769763 then true
770764 else throw("No pending manager")
771- if ((eo == eo))
765+ if ((ei == ei))
772766 then {
773- let ep = if ((aD.callerPublicKey == value(en)))
767+ let ej = if ((aE.callerPublicKey == value(eh)))
774768 then true
775769 else throw("You are not pending manager")
776- if ((ep == ep))
777- then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
770+ if ((ej == ej))
771+ then [StringEntry(ac(), toBase58String(value(eh))), DeleteEntry(ad())]
778772 else throw("Strict value is not equal to itself.")
779773 }
780774 else throw("Strict value is not equal to itself.")
781775 }
782776
783777
784-@Verifier(eq)
785-func er () = {
786- let es = {
787- let o = az()
778+@Verifier(ek)
779+func el () = {
780+ let em = {
781+ let o = aA()
788782 if ($isInstanceOf(o, "ByteVector"))
789783 then {
790- let aF = o
791- aF
784+ let aG = o
785+ aG
792786 }
793787 else if ($isInstanceOf(o, "Unit"))
794- then eq.senderPublicKey
788+ then ek.senderPublicKey
795789 else throw("Match error")
796790 }
797- sigVerify(eq.bodyBytes, eq.proofs[0], es)
791+ sigVerify(ek.bodyBytes, ek.proofs[0], em)
798792 }
799793
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
141-func ah () = "%s%s__emission__duration"
141+func ah () = "%s%s__boostingV2__startBlock"
142142
143143
144-func ai () = "%s%s__emission__endBlock"
144+func ai () = "%s%s__emission__duration"
145145
146146
147-func aj () = "%s__nextPeriod"
147+func aj () = "%s%s__emission__endBlock"
148148
149149
150-func ak () = "%s%s__gwxRewardEmissionPart__startHeight"
150+func ak () = "%s__nextPeriod"
151151
152152
153-let al = 1
154-
155-let am = 2
156-
157-let an = 3
158-
159-let ao = 4
160-
161-let ap = 5
162-
163-func aq () = "%s__config"
153+func al () = "%s%s__gwxRewardEmissionPart__startHeight"
164154
165155
166-func ar () = split(e(this, aq()), a)
156+let am = 1
157+
158+let an = 2
159+
160+let ao = 3
161+
162+let ap = 4
163+
164+let aq = 5
165+
166+func ar () = "%s__config"
167167
168168
169-let as = addressFromStringValue(ar()[ap])
170-
171-func at (au,av,aw,ax,as) = makeString(["%s%d%d%d", au, av, aw, ax, as], a)
169+func as () = split(e(this, ar()), a)
172170
173171
174-func ay (au,av,aw,ax,as) = at(au, toString(av), toString(aw), toString(ax), as)
172+let at = addressFromStringValue(as()[aq])
173+
174+func au (av,aw,ax,ay,at) = makeString(["%s%d%d%d", av, aw, ax, ay, at], a)
175175
176176
177-func az () = {
177+func az (av,aw,ax,ay,at) = au(av, toString(aw), toString(ax), toString(ay), at)
178+
179+
180+func aA () = {
178181 let o = getString(ac())
179182 if ($isInstanceOf(o, "String"))
180183 then {
181- let aA = o
182- fromBase58String(aA)
184+ let aB = o
185+ fromBase58String(aB)
183186 }
184187 else if ($isInstanceOf(o, "Unit"))
185188 then unit
186189 else throw("Match error")
187190 }
188191
189192
190-func aB () = {
193+func aC () = {
191194 let o = getString(ad())
192195 if ($isInstanceOf(o, "String"))
193196 then {
194- let aA = o
195- fromBase58String(aA)
197+ let aB = o
198+ fromBase58String(aB)
196199 }
197200 else if ($isInstanceOf(o, "Unit"))
198201 then unit
199202 else throw("Match error")
200203 }
201204
202205
203-func aC (aD) = {
204- let aE = throw("Permission denied")
205- let o = az()
206+func aD (aE) = {
207+ let aF = throw("Permission denied")
208+ let o = aA()
206209 if ($isInstanceOf(o, "ByteVector"))
207210 then {
208- let aF = o
209- if ((aD.callerPublicKey == aF))
211+ let aG = o
212+ if ((aE.callerPublicKey == aG))
210213 then true
211- else aE
214+ else aF
212215 }
213216 else if ($isInstanceOf(o, "Unit"))
214- then if ((aD.caller == this))
217+ then if ((aE.caller == this))
215218 then true
216- else aE
219+ else aF
217220 else throw("Match error")
218221 }
219222
220223
221-let aG = 1
224+let aH = 1
222225
223-let aH = 2
226+let aI = 2
224227
225-let aI = 3
228+let aJ = 3
226229
227-let aJ = 4
230+let aK = 4
228231
229-let aK = 5
232+let aL = 5
230233
231-let aL = 6
234+let aM = 6
232235
233-func aM (aN) = makeString(["%s%s__lock", aN], a)
236+func aN (aO) = makeString(["%s%s__lock", aO], a)
234237
235238
236-func aO (aN) = split(e(this, aM(aN)), a)
239+func aP (aO) = split(e(this, aN(aO)), a)
237240
238241
239-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)
242+func aQ (aR,aS,aT,aU,aV,aW,aX,aY) = makeString(["%d%d%d%d%d%d%d%d", aR, aS, aT, aU, aV, aW, aX, aY], a)
240243
241244
242-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))
245+func aZ (aR,aS,aT,aU,aV,aW,aY) = aQ(aR, toString(aS), toString(aT), toString(aU), toString(aV), toString(aW), toString(lastBlock.timestamp), toString(aY))
243246
244247
245-func aZ () = "%s__nextUserNum"
248+func ba () = "%s__nextUserNum"
246249
247250
248-func ba (aN) = makeString(["%s%s%s__mapping__user2num", aN], a)
251+func bb (aO) = makeString(["%s%s%s__mapping__user2num", aO], a)
249252
250253
251-func bb (S) = makeString(["%s%s%s__mapping__num2user", S], a)
254+func bc (S) = makeString(["%s%s%s__mapping__num2user", S], a)
252255
253256
254-func bc (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "amount"], a)
257+func bd (aR) = makeString(["%s%d%s__paramByUserNum", aR, "amount"], a)
255258
256259
257-func bd (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "start"], a)
260+func be (aR) = makeString(["%s%d%s__paramByUserNum", aR, "start"], a)
258261
259262
260-func be (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "duration"], a)
263+func bf (aR) = makeString(["%s%d%s__paramByUserNum", aR, "duration"], a)
261264
262265
263-func bf (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "k"], a)
266+func bg (aR) = makeString(["%s%d%s__paramByUserNum", aR, "k"], a)
264267
265268
266-func bg (aQ) = makeString(["%s%d%s__paramByUserNum", aQ, "b"], a)
269+func bh (aR) = makeString(["%s%d%s__paramByUserNum", aR, "b"], a)
267270
268271
269-func bh (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "k", bi], a)
272+func bi (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "k", bj], a)
270273
271274
272-func bj (aQ,bi) = makeString(["%s%d%s%d__paramByPeriod", aQ, "b", bi], a)
275+func bk (aR,bj) = makeString(["%s%d%s%d__paramByPeriod", aR, "b", bj], a)
273276
274277
275-func bk () = "%s%s__stats__activeTotalLocked"
278+func bl () = "%s%s__stats__activeTotalLocked"
276279
277280
278-func bl () = "%s%s__stats__locksDurationSumInBlocks"
281+func bm () = "%s%s__stats__locksDurationSumInBlocks"
279282
280283
281-func bm () = "%s%s__stats__locksCount"
284+func bn () = "%s%s__stats__locksCount"
282285
283286
284-func bn () = "%s%s__stats__activeUsersCount"
287+func bo () = "%s%s__stats__activeUsersCount"
285288
286289
287-func bo (aQ) = makeString(["%s%d__userBoostEmissionLastInt", aQ], a)
290+func bp (aR) = makeString(["%s%d__userBoostEmissionLastIntV2", aR], a)
288291
289292
290-func bp (aQ,bq) = makeString(["%s%d__userBoostEmissionLastInt", aQ, bq], a)
293+func bq (aR,br) = makeString(["%s%d__userBoostEmissionLastIntV2", aR, br], a)
291294
292295
293-func br (aQ) = makeString(["%s%d__maxBoostInt", aQ], a)
296+func bs (aR) = makeString(["%s%d__maxBoostInt", aR], a)
294297
295298
296-func bs () = "%s%s__maxBoostInt__total"
299+func bt () = "%s%s__maxBoostInt__total"
297300
298301
299-func bt (aQ) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aQ], a)
302+func bu (aR) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aR], a)
300303
301304
302-func bu (aQ) = makeString(["%s%d__userBoostClaimed", aQ], a)
305+func bv (aR) = makeString(["%s%d__userBoostClaimed", aR], a)
303306
304307
305-func bv () = "%s%s__gwxCached__total"
308+func bw () = "%s%s__gwxCached__total"
306309
307310
308-func bw () = "%s__gwxCachedTotalCorrective"
311+func bx () = "%s__gwxCachedTotalCorrective"
309312
310313
311-let bx = T()
314+let by = T()
312315
313-let Y = V(bx)
316+let Y = V(by)
314317
315-let by = Z(Y)
318+let bz = Z(Y)
316319
317-let bz = aa(Y)
320+let bA = aa(Y)
318321
319-let bA = ab(Y)
322+let bB = ab(Y)
320323
321-func bB (bC) = {
322- let bD = makeString(["%s", "votingEmissionContract"], a)
323- let bE = addressFromStringValue(getStringValue(bx, bD))
324- let bF = makeString(["%s", "currentEpochUi"], a)
325- let bG = getIntegerValue(bE, bF)
326- let bH = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
327- let bI = getInteger(this, bH)
328- let bJ = valueOrElse(getInteger(this, bv()), 0)
329- let bK = if (isDefined(bI))
330- then (bG >= value(bI))
324+let bC = makeString(["%s", "votingEmissionContract"], a)
325+
326+let bD = addressFromStringValue(getStringValue(by, bC))
327+
328+let bE = {
329+ let bF = invoke(bz, "getBoostCoeffREADONLY", nil, nil)
330+ if ($isInstanceOf(bF, "Int"))
331+ then bF
332+ else throw(($getType(bF) + " couldn't be cast to Int"))
333+ }
334+
335+func bG (bH) = {
336+ let bI = makeString(["%s", "currentEpochUi"], a)
337+ let bJ = getIntegerValue(bD, bI)
338+ let bK = makeString(["%s%s", "totalCachedGwxCorrection__activationEpoch"], a)
339+ let bL = getInteger(this, bK)
340+ let bM = valueOrElse(getInteger(this, bw()), 0)
341+ let bN = if (isDefined(bL))
342+ then (bJ >= value(bL))
331343 else false
332- let bL = if (if (bK)
333- then bC
344+ let bO = if (if (bN)
345+ then bH
334346 else false)
335- then valueOrElse(getInteger(this, bw()), 0)
347+ then valueOrElse(getInteger(this, bx()), 0)
336348 else 0
337- max([0, (bJ + bL)])
349+ max([0, (bM + bO)])
338350 }
339351
340352
341-func bM (bN,bO,aR,bP,aT,bQ,bR,aD) = {
342- let bS = makeString(["%s%s%s%s__history", bN, bO, toBase58String(aD.transactionId)], a)
343- 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)
344- StringEntry(bS, bT)
353+func bP (bQ,bR,aS,bS,aU,bT,bU,aE) = {
354+ let bV = makeString(["%s%s%s%s__history", bQ, bR, toBase58String(aE.transactionId)], a)
355+ let bW = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aS), toString(bS), toString(aU), toString(bT), toString(bU)], a)
356+ StringEntry(bV, bW)
345357 }
346358
347359
348-func bU (bV,bW,bX,bY) = {
349- let bZ = bl()
350- let ca = bm()
351- let cb = bn()
352- let cc = bk()
353- let cd = h(this, bZ)
354- let ce = h(this, ca)
355- let cf = h(this, cb)
360+func bX (bY,bZ,ca,cb) = {
361+ let cc = bm()
362+ let cd = bn()
363+ let ce = bo()
364+ let cf = bl()
356365 let cg = h(this, cc)
357-[IntegerEntry(bZ, (cd + bW)), IntegerEntry(ca, (ce + bX)), IntegerEntry(cb, (cf + bY)), IntegerEntry(cc, (cg + bV))]
366+ let ch = h(this, cd)
367+ let ci = h(this, ce)
368+ let cj = h(this, cf)
369+[IntegerEntry(cc, (cg + bZ)), IntegerEntry(cd, (ch + ca)), IntegerEntry(ce, (ci + cb)), IntegerEntry(cf, (cj + bY))]
358370 }
359371
360372
361-func ch (ci,cj,ck) = {
362- let cl = 1000
363- (((ci * ck) + cj) / cl)
373+func ck (cl,cm,cn) = {
374+ let co = 1000
375+ (((cl * cn) + cm) / co)
364376 }
365377
366378
367-func cm (aN,aQ,aR,aS,aT,bQ,bR,bi) = {
368- let cn = bc(aQ)
369- let co = bd(aQ)
370- let cp = be(aQ)
371- let cq = bf(aQ)
372- let cr = bg(aQ)
373- let cs = bh(aQ, bi)
374- let ct = bj(aQ, bi)
375- let aX = ch(bQ, bR, height)
376-[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))]
379+func cp (aO,aR,aS,aT,aU,bT,bU,bj) = {
380+ let cq = bd(aR)
381+ let cr = be(aR)
382+ let cs = bf(aR)
383+ let ct = bg(aR)
384+ let cu = bh(aR)
385+ let cv = bi(aR, bj)
386+ let cw = bk(aR, bj)
387+ let aY = ck(bT, bU, height)
388+[IntegerEntry(cq, aS), IntegerEntry(cr, aT), IntegerEntry(cs, aU), IntegerEntry(ct, bT), IntegerEntry(cu, bU), IntegerEntry(cv, bT), IntegerEntry(cw, bU), StringEntry(aN(aO), aZ(aR, aS, aT, aU, bT, bU, aY))]
377389 }
378390
379391
380-func cu (aD,cv) = if ((size(aD.payments) > 1))
392+func cx (aE,cy) = if ((size(aE.payments) > 1))
381393 then throw("only one payment is allowed")
382- else if ((size(aD.payments) == 0))
394+ else if ((size(aE.payments) == 0))
383395 then 0
384396 else {
385- let cw = aD.payments[0]
386- if ((value(cw.assetId) != cv))
397+ let cz = aE.payments[0]
398+ if ((value(cz.assetId) != cy))
387399 then throw("invalid asset id in payment")
388- else cw.amount
400+ else cz.amount
389401 }
390402
391403
392-func cx (aN,cy) = {
393- let cz = "empty"
394- let cA = ba(aN)
395- let aQ = valueOrElse(getString(cA), cz)
396- let bQ = valueOrElse(getInteger(bf(aQ)), 0)
397- let bR = valueOrElse(getInteger(bg(aQ)), 0)
398- let cB = ch(bQ, bR, cy)
399- let aX = if ((0 > cB))
404+func cA (aO,cB) = {
405+ let cC = "empty"
406+ let cD = bb(aO)
407+ let aR = valueOrElse(getString(cD), cC)
408+ let bT = valueOrElse(getInteger(bg(aR)), 0)
409+ let bU = valueOrElse(getInteger(bh(aR)), 0)
410+ let cE = ck(bT, bU, cB)
411+ let aY = if ((0 > cE))
400412 then 0
401- else cB
402- aX
413+ else cE
414+ aY
403415 }
404416
405417
406-func cC (aN) = cx(aN, height)
418+func cF (aO) = cA(aO, height)
407419
408420
409-func cD (cE,cF,cG) = {
410- let cz = "EMPTY"
411- let cH = valueOrElse(getString(this, aM(cF)), cz)
412- if ((cH == cz))
421+func cG (cH,cI,cJ) = {
422+ let cC = "EMPTY"
423+ let cK = valueOrElse(getString(this, aN(cI)), cC)
424+ if ((cK == cC))
413425 then $Tuple3(0, nil, "userRecord::is::empty")
414426 else {
415- let cI = split(cH, a)
416- let cJ = cI[aG]
417- let cK = valueOrElse(getInteger(bA, ak()), 0)
418- let cL = "empty"
419- let cM = if ((cE != cL))
427+ let cL = split(cK, a)
428+ let cM = cL[aH]
429+ let cN = "empty"
430+ let cO = if ((cH != cN))
420431 then {
421- let cN = valueOrErrorMessage(getString(bx, K(cE)), ("unsupported lp asset " + cE))
422- let cO = getIntegerValue(bx, O(cN))
423- let cP = valueOrElse(getInteger(bx, Q(cN, 0)), cO)
424- $Tuple2(cP, cO)
432+ let cP = valueOrErrorMessage(getString(by, K(cH)), ("unsupported lp asset " + cH))
433+ getIntegerValue(by, O(cP))
425434 }
426- else if (cG)
427- then $Tuple2(0, 0)
428- else throw(("not readonly mode: unsupported lp asset " + cE))
429- let cQ = cM._1
430- let cR = cM._2
431- let cS = k(by, ae())
432- let cT = k(by, ag())
433- let cU = k(by, ai())
434- let ck = if ((height > cU))
435- then cU
435+ else if (cJ)
436+ then 0
437+ else throw(("not readonly mode: unsupported lp asset " + cH))
438+ let cQ = k(bz, ae())
439+ let cR = k(bz, ah())
440+ let cS = k(bz, aj())
441+ let cn = if ((height > cS))
442+ then cS
436443 else height
437- let cV = max([(ck - cT), 0])
438- let cW = bp(cJ, cE)
439- let cX = bo(cJ)
440- let cY = valueOrElse(getInteger(this, cW), h(this, cX))
441- let cZ = (((cS * cV) * 2) / 3)
442- let da = (cZ - cY)
443- let db = fraction(da, 3, (2 * cS))
444- let dc = (ck - db)
445- let dd = max([(cK - dc), 0])
446- let de = ((ck - dc) - dd)
447- if (if (if ((0 > dc))
448- then true
449- else (0 > de))
450- then true
451- else (l(((dd + de) - db)) >= 1))
452- then throw(((((((("invalid udh calc: udh=" + toString(db)) + " uLastH=") + toString(dc)) + " udh0=") + toString(dd)) + " udh1=") + toString(de)))
453- else if ((0 > da))
454- then throw("wrong calculations")
455- else {
456- let df = br(cJ)
457- let dg = bs()
458- let dh = h(this, df)
459- let di = h(this, dg)
460- let dj = bB(true)
461- let dk = cC(cF)
462- let dl = bt(cJ)
463- let dm = h(this, dl)
464- let dn = if ((db == 0))
465- then 0
466- else fraction(da, dd, db)
467- let do = if ((db == 0))
468- then 0
469- else fraction(da, de, db)
470- let dp = fraction(dn, cQ, d)
471- let dq = fraction(do, cR, d)
472- let dr = if ((dj == 0))
473- then 0
474- else fraction(dp, dk, dj)
475- let ds = if ((dj == 0))
476- then 0
477- else fraction(dq, dk, dj)
478- let dt = (dr + ds)
479- let du = bu(cJ)
480- let dv = h(this, du)
481- let dw = (dt - dv)
482- let dx = [IntegerEntry(cW, cZ)]
483- 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)], ":")
484- $Tuple3(dt, dx, dy)
444+ let cT = max([(cn - cR), 0])
445+ let cU = bq(cM, cH)
446+ let cV = bp(cM)
447+ let cW = valueOrElse(getInteger(this, cU), h(this, cV))
448+ let cX = (((cQ * cT) * (bE - 1)) / bE)
449+ let cY = (cX - cW)
450+ let cZ = fraction(cY, bE, ((bE - 1) * cQ))
451+ let da = (cn - cZ)
452+ if ((0 > cY))
453+ then throw("wrong calculations")
454+ else {
455+ let db = bs(cM)
456+ let dc = bt()
457+ let dd = h(this, db)
458+ let de = h(this, dc)
459+ let df = {
460+ let bF = invoke(bD, "getVoteInfoREADONLY", [cH, cI], nil)
461+ if ($isInstanceOf(bF, "(Int, Int)"))
462+ then bF
463+ else throw(($getType(bF) + " couldn't be cast to (Int, Int)"))
485464 }
465+ let dg = df._1
466+ let dh = df._2
467+ let di = bu(cM)
468+ let dj = h(this, di)
469+ let dk = fraction(cY, cO, d)
470+ let dl = if ((dh == 0))
471+ then 0
472+ else fraction(dk, dg, dh)
473+ let dm = bv(cM)
474+ let dn = h(this, dm)
475+ let do = (dl - dn)
476+ let dp = [IntegerEntry(cU, cX)]
477+ let dq = makeString([toString(cW), toString(cY), toString(dn), toString(do), toString(cO), toString(cn), toString(cZ), toString(da), toString(dg), toString(dh)], ":")
478+ $Tuple3(dl, dp, dq)
479+ }
486480 }
487481 }
488482
489483
490-func dz (aD,aT) = {
491- let dA = ar()
492- let dB = dA[al]
493- let au = fromBase58String(dB)
494- let av = parseIntValue(dA[am])
495- let aw = parseIntValue(dA[an])
496- let ax = parseIntValue(dA[ao])
497- if ((size(aD.payments) != 1))
484+func dr (aE,aU) = {
485+ let ds = as()
486+ let dt = ds[am]
487+ let av = fromBase58String(dt)
488+ let aw = parseIntValue(ds[an])
489+ let ax = parseIntValue(ds[ao])
490+ let ay = parseIntValue(ds[ap])
491+ if ((size(aE.payments) != 1))
498492 then throw("invalid payment - exact one payment must be attached")
499493 else {
500- let cw = aD.payments[0]
501- let dC = cw.amount
502- if ((au != value(cw.assetId)))
503- then throw((("invalid asset is in payment - " + dB) + " is expected"))
494+ let cz = aE.payments[0]
495+ let du = cz.amount
496+ if ((av != value(cz.assetId)))
497+ then throw((("invalid asset is in payment - " + dt) + " is expected"))
504498 else {
505- let dD = aZ()
506- let cF = toString(aD.caller)
507- let dE = isDefined(getString(ba(cF)))
508- let cJ = if (dE)
509- then value(getString(ba(cF)))
510- else toString(k(this, dD))
511- let aQ = parseIntValue(cJ)
512- let bP = height
513- let co = bd(cJ)
514- let cp = be(cJ)
515- let cn = bc(cJ)
516- if ((av > dC))
517- then throw(("amount is less then minLockAmount=" + toString(av)))
518- else if ((aw > aT))
519- then throw(("passed duration is less then minLockDuration=" + toString(aw)))
520- else if ((aT > ax))
521- then throw(("passed duration is greater then maxLockDuration=" + toString(ax)))
522- else if (if (dE)
523- then ((k(this, co) + k(this, cp)) >= bP)
499+ let dv = ba()
500+ let cI = toString(aE.caller)
501+ let dw = isDefined(getString(bb(cI)))
502+ let cM = if (dw)
503+ then value(getString(bb(cI)))
504+ else toString(k(this, dv))
505+ let aR = parseIntValue(cM)
506+ let bS = height
507+ let cr = be(cM)
508+ let cs = bf(cM)
509+ let cq = bd(cM)
510+ if ((aw > du))
511+ then throw(("amount is less then minLockAmount=" + toString(aw)))
512+ else if ((ax > aU))
513+ then throw(("passed duration is less then minLockDuration=" + toString(ax)))
514+ else if ((aU > ay))
515+ then throw(("passed duration is greater then maxLockDuration=" + toString(ay)))
516+ else if (if (dw)
517+ then ((k(this, cr) + k(this, cs)) >= bS)
524518 else false)
525519 then throw("there is an active lock - consider to use increaseLock")
526- else if ((h(this, cn) > 0))
527- then throw(("there are locked WXs - consider to use increaseLock " + cn))
520+ else if ((h(this, cq) > 0))
521+ then throw(("there are locked WXs - consider to use increaseLock " + cq))
528522 else {
529- let dF = fraction(aT, c, ax)
530- let dG = fraction(dC, dF, c)
531- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, bP, aT], nil))
532- let bQ = q(dH[0])
533- let bR = q(dH[1])
534- let bi = toString(q(dH[2]))
535- let cS = k(by, ae())
536- let cT = k(by, ag())
537- let cU = k(by, ai())
538- let ck = if ((height > cU))
539- then cU
523+ let dx = fraction(aU, c, ay)
524+ let dy = fraction(du, dx, c)
525+ let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, bS, aU], nil))
526+ let bT = q(dz[0])
527+ let bU = q(dz[1])
528+ let bj = toString(q(dz[2]))
529+ let cQ = k(bz, ae())
530+ let dA = k(bz, ag())
531+ let cS = k(bz, aj())
532+ let cn = if ((height > cS))
533+ then cS
540534 else height
541- let cV = max([(ck - cT), 0])
542- let cX = bo(cJ)
543- let cZ = (((cS * cV) * 2) / 3)
544- let df = br(cJ)
545- let dg = bs()
546- let dh = ((dG * aT) / 2)
547- let di = h(this, dg)
548- let bJ = bB(false)
549- let dI = if (dE)
535+ let cT = max([(cn - dA), 0])
536+ let cV = bp(cM)
537+ let cX = (((cQ * cT) * 2) / 3)
538+ let db = bs(cM)
539+ let dc = bt()
540+ let dd = ((dy * aU) / 2)
541+ let de = h(this, dc)
542+ let bM = bG(false)
543+ let dB = if (dw)
550544 then nil
551- else [IntegerEntry(dD, (aQ + 1)), StringEntry(ba(cF), cJ), StringEntry(bb(cJ), cF)]
552- $Tuple2(((((dI ++ cm(cF, cJ, dC, bP, aT, bQ, bR, bi)) ++ bU(dC, aT, 1, if (dE)
545+ else [IntegerEntry(dv, (aR + 1)), StringEntry(bb(cI), cM), StringEntry(bc(cM), cI)]
546+ $Tuple2(((((dB ++ cp(cI, cM, du, bS, aU, bT, bU, bj)) ++ bX(du, aU, 1, if (dw)
553547 then 0
554- else 1)) :+ bM("lock", cF, dC, bP, aT, bQ, bR, aD)) ++ [IntegerEntry(cX, cZ), IntegerEntry(bv(), (bJ + dG))]), dG)
548+ else 1)) :+ bP("lock", cI, du, bS, aU, bT, bU, aE)) ++ [IntegerEntry(cV, cX), IntegerEntry(bw(), (bM + dy))]), dy)
555549 }
556550 }
557551 }
558552 }
559553
560554
561-@Callable(aD)
562-func constructor (dJ,dK,av,dL,dM,as) = {
563- let dN = aC(aD)
564- if ((dN == dN))
565- then ([IntegerEntry(aZ(), 0), StringEntry(aq(), ay(dK, av, dL, dM, as)), StringEntry(x(), dJ)] ++ bU(0, 0, 0, 0))
555+@Callable(aE)
556+func constructor (dC,dD,aw,dE,dF,at) = {
557+ let dG = aD(aE)
558+ if ((dG == dG))
559+ then ([IntegerEntry(ba(), 0), StringEntry(ar(), az(dD, aw, dE, dF, at)), StringEntry(x(), dC)] ++ bX(0, 0, 0, 0))
566560 else throw("Strict value is not equal to itself.")
567561 }
568562
569563
570564
571-@Callable(aD)
572-func lockRef (aT,dO,dP) = {
573- let dQ = dz(aD, aT)
574- let dR = dQ._1
575- let dG = dQ._2
576- let dS = toString(aD.caller)
577- let dT = if (if ((dO == ""))
565+@Callable(aE)
566+func lockRef (aU,dH,dI) = {
567+ let dJ = dr(aE, aU)
568+ let dK = dJ._1
569+ let dy = dJ._2
570+ let dL = toString(aE.caller)
571+ let dM = if (if ((dH == ""))
578572 then true
579- else (dP == base58''))
573+ else (dI == base58''))
580574 then unit
581- else invoke(t, "createPair", [w, dO, dS, dP], nil)
582- if ((dT == dT))
575+ else invoke(t, "createPair", [w, dH, dL, dI], nil)
576+ if ((dM == dM))
583577 then {
584- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
585- if ((dU == dU))
586- then $Tuple2(dR, unit)
578+ let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil)
579+ if ((dN == dN))
580+ then $Tuple2(dK, unit)
587581 else throw("Strict value is not equal to itself.")
588582 }
589583 else throw("Strict value is not equal to itself.")
590584 }
591585
592586
593587
594-@Callable(aD)
595-func lock (aT) = {
596- let dV = dz(aD, aT)
597- let dR = dV._1
598- let dG = dV._2
599- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
600- if ((dU == dU))
601- then $Tuple2(dR, unit)
588+@Callable(aE)
589+func lock (aU) = {
590+ let dO = dr(aE, aU)
591+ let dK = dO._1
592+ let dy = dO._2
593+ let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil)
594+ if ((dN == dN))
595+ then $Tuple2(dK, unit)
602596 else throw("Strict value is not equal to itself.")
603597 }
604598
605599
606600
607-@Callable(aD)
608-func increaseLock (dW) = {
609- let dA = ar()
610- let dB = dA[al]
611- let au = fromBase58String(dB)
612- let aw = parseIntValue(dA[an])
613- let ax = parseIntValue(dA[ao])
614- let dC = cu(aD, au)
615- let cF = toString(aD.caller)
616- let cI = aO(cF)
617- let cJ = cI[aG]
618- let dX = parseIntValue(cI[aH])
619- let bP = parseIntValue(cI[aI])
620- let dY = parseIntValue(cI[aJ])
621- let dZ = (bP + dY)
622- let ea = max([(dZ - height), 0])
623- let eb = (dX + dC)
624- let ec = (ea + dW)
625- if ((0 > dW))
601+@Callable(aE)
602+func increaseLock (dP) = {
603+ let ds = as()
604+ let dt = ds[am]
605+ let av = fromBase58String(dt)
606+ let ax = parseIntValue(ds[ao])
607+ let ay = parseIntValue(ds[ap])
608+ let du = cx(aE, av)
609+ let cI = toString(aE.caller)
610+ let cL = aP(cI)
611+ let cM = cL[aH]
612+ let dQ = parseIntValue(cL[aI])
613+ let bS = parseIntValue(cL[aJ])
614+ let dR = parseIntValue(cL[aK])
615+ let dS = (bS + dR)
616+ let dT = max([(dS - height), 0])
617+ let dU = (dQ + du)
618+ let dV = (dT + dP)
619+ if ((0 > dP))
626620 then throw("duration is less then zero")
627- else if ((aw > ec))
628- then throw(("lockDurationNew is less then minLockDuration=" + toString(aw)))
629- else if ((ec > ax))
630- then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ax)))
621+ else if ((ax > dV))
622+ then throw(("lockDurationNew is less then minLockDuration=" + toString(ax)))
623+ else if ((dV > ay))
624+ then throw(("deltaDuration + existedLockDuration is greater then maxLockDuration=" + toString(ay)))
631625 else {
632- let dF = fraction(ec, c, ax)
633- let dG = fraction(eb, dF, c)
634- let dU = invoke(as, "updateReferralActivity", [toString(aD.caller), dG], nil)
635- if ((dU == dU))
626+ let dx = fraction(dV, c, ay)
627+ let dy = fraction(dU, dx, c)
628+ let dN = invoke(at, "updateReferralActivity", [toString(aE.caller), dy], nil)
629+ if ((dN == dN))
636630 then {
637- let ed = height
638- let dH = n(invoke(as, "calcGwxParamsREADONLY", [dG, ed, ec], nil))
639- let bQ = q(dH[0])
640- let bR = q(dH[1])
641- let bi = toString(q(dH[2]))
642- let cS = k(by, ae())
643- let cT = k(by, ag())
644- let cU = k(by, ai())
645- let ck = if ((height > cU))
646- then cU
631+ let dW = height
632+ let dz = n(invoke(at, "calcGwxParamsREADONLY", [dy, dW, dV], nil))
633+ let bT = q(dz[0])
634+ let bU = q(dz[1])
635+ let bj = toString(q(dz[2]))
636+ let cQ = k(bz, ae())
637+ let dA = k(bz, ag())
638+ let cS = k(bz, aj())
639+ let cn = if ((height > cS))
640+ then cS
647641 else height
648- let cV = max([(ck - cT), 0])
649- let cX = bo(cJ)
650- let cY = h(this, cX)
651- let cZ = (((cS * cV) * 2) / 3)
652- let da = (cZ - cY)
653- if ((0 > da))
642+ let cT = max([(cn - dA), 0])
643+ let cV = bp(cM)
644+ let cW = h(this, cV)
645+ let cX = (((cQ * cT) * 2) / 3)
646+ let cY = (cX - cW)
647+ if ((0 > cY))
654648 then throw("wrong calculations")
655649 else {
656- let df = br(cJ)
657- let dg = bs()
658- let dh = h(this, df)
659- let di = h(this, dg)
660- let ee = cC(cF)
661- let ef = (dG - ee)
662- if ((0 > ef))
663- then throw(("gwxDiff is less then 0: " + toString(ef)))
650+ let db = bs(cM)
651+ let dc = bt()
652+ let dd = h(this, db)
653+ let de = h(this, dc)
654+ let dX = cF(cI)
655+ let dY = (dy - dX)
656+ if ((0 > dY))
657+ then throw(("gwxDiff is less then 0: " + toString(dY)))
664658 else {
665- let bJ = bB(false)
666- let dj = bB(true)
667- let dl = bt(cJ)
668- let dm = h(this, dl)
669- let dt = fraction(da, ee, dj)
670- let eg = ((dG * ec) / 2)
671- let eh = ((ee * ea) / 2)
672- let ei = (eg - eh)
673- (((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))])
659+ let bM = bG(false)
660+ let dZ = bG(true)
661+ let di = bu(cM)
662+ let dj = h(this, di)
663+ let dl = fraction(cY, dX, dZ)
664+ let ea = ((dy * dV) / 2)
665+ let eb = ((dX * dT) / 2)
666+ let ec = (ea - eb)
667+ (((cp(cI, cM, dU, dW, dV, bT, bU, bj) ++ bX(du, dP, 0, 0)) :+ bP("lock", cI, du, bS, dV, bT, bU, aE)) ++ [IntegerEntry(bw(), (bM + dY))])
674668 }
675669 }
676670 }
677671 else throw("Strict value is not equal to itself.")
678672 }
679673 }
680674
681675
682676
683-@Callable(aD)
684-func claimWxBoost (cE,cF) = if ((bz != aD.caller))
677+@Callable(aE)
678+func claimWxBoost (cH,cI) = if ((bA != aE.caller))
685679 then throw("permissions denied")
686680 else {
687- let ej = cD(cE, cF, false)
688- let dw = ej._1
689- let dx = ej._2
690- let dy = ej._3
691- $Tuple2(dx, [dw])
681+ let ed = cG(cH, cI, false)
682+ let do = ed._1
683+ let dp = ed._2
684+ let dq = ed._3
685+ $Tuple2(dp, [do])
692686 }
693687
694688
695689
696-@Callable(aD)
697-func claimWxBoostREADONLY (cE,cF) = {
698- let ek = cD(cE, cF, true)
699- let dw = ek._1
700- let dx = ek._2
701- let dy = ek._3
702- $Tuple2(nil, [dw, dy])
690+@Callable(aE)
691+func claimWxBoostREADONLY (cH,cI) = {
692+ let ee = cG(cH, cI, true)
693+ let do = ee._1
694+ let dp = ee._2
695+ let dq = ee._3
696+ $Tuple2(nil, [do, dq])
703697 }
704698
705699
706700
707-@Callable(aD)
708-func unlock (aN) = {
709- let cI = aO(aN)
710- let cJ = cI[aG]
711- let dX = parseIntValue(cI[aH])
712- let bP = parseIntValue(cI[aI])
713- let dY = parseIntValue(cI[aJ])
714- let dZ = (bP + dY)
715- let dA = ar()
716- let au = fromBase58String(dA[al])
717- if ((dZ >= height))
718- then throw((("wait " + toString(dZ)) + " to unlock"))
719- else if ((0 >= dX))
701+@Callable(aE)
702+func unlock (aO) = {
703+ let cL = aP(aO)
704+ let cM = cL[aH]
705+ let dQ = parseIntValue(cL[aI])
706+ let bS = parseIntValue(cL[aJ])
707+ let dR = parseIntValue(cL[aK])
708+ let dS = (bS + dR)
709+ let ds = as()
710+ let av = fromBase58String(ds[am])
711+ if ((dS >= height))
712+ then throw((("wait " + toString(dS)) + " to unlock"))
713+ else if ((0 >= dQ))
720714 then throw("nothing to unlock")
721715 else {
722- let bi = valueOrElse(getInteger(as, aj()), 0)
723- (((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))
716+ let bj = valueOrElse(getInteger(at, ak()), 0)
717+ (((cp(aO, cM, 0, bS, dR, 0, 0, toString(bj)) ++ bX(-(dQ), 0, 0, -1)) :+ bP("unlock", aO, dQ, bS, dR, 0, 0, aE)) :+ ScriptTransfer(addressFromStringValue(aO), dQ, av))
724718 }
725719 }
726720
727721
728722
729-@Callable(aD)
730-func gwxUserInfoREADONLY (aN) = {
731- let aX = cC(aN)
732- $Tuple2(nil, [aX])
723+@Callable(aE)
724+func gwxUserInfoREADONLY (aO) = {
725+ let aY = cF(aO)
726+ $Tuple2(nil, [aY])
733727 }
734728
735729
736730
737-@Callable(aD)
738-func getUserGwxAmountAtHeightREADONLY (aN,cy) = {
739- let aX = cx(aN, cy)
740- $Tuple2(nil, aX)
731+@Callable(aE)
732+func getUserGwxAmountAtHeightREADONLY (aO,cB) = {
733+ let aY = cA(aO, cB)
734+ $Tuple2(nil, aY)
741735 }
742736
743737
744738
745-@Callable(aD)
746-func getTotalCachedGwxREADONLY () = $Tuple2(nil, bB(true))
739+@Callable(aE)
740+func getTotalCachedGwxREADONLY () = $Tuple2(nil, bG(true))
747741
748742
749743
750-@Callable(aD)
751-func setManager (el) = {
752- let dN = aC(aD)
753- if ((dN == dN))
744+@Callable(aE)
745+func setManager (ef) = {
746+ let dG = aD(aE)
747+ if ((dG == dG))
754748 then {
755- let em = fromBase58String(el)
756- if ((em == em))
757- then [StringEntry(ad(), el)]
749+ let eg = fromBase58String(ef)
750+ if ((eg == eg))
751+ then [StringEntry(ad(), ef)]
758752 else throw("Strict value is not equal to itself.")
759753 }
760754 else throw("Strict value is not equal to itself.")
761755 }
762756
763757
764758
765-@Callable(aD)
759+@Callable(aE)
766760 func confirmManager () = {
767- let en = aB()
768- let eo = if (isDefined(en))
761+ let eh = aC()
762+ let ei = if (isDefined(eh))
769763 then true
770764 else throw("No pending manager")
771- if ((eo == eo))
765+ if ((ei == ei))
772766 then {
773- let ep = if ((aD.callerPublicKey == value(en)))
767+ let ej = if ((aE.callerPublicKey == value(eh)))
774768 then true
775769 else throw("You are not pending manager")
776- if ((ep == ep))
777- then [StringEntry(ac(), toBase58String(value(en))), DeleteEntry(ad())]
770+ if ((ej == ej))
771+ then [StringEntry(ac(), toBase58String(value(eh))), DeleteEntry(ad())]
778772 else throw("Strict value is not equal to itself.")
779773 }
780774 else throw("Strict value is not equal to itself.")
781775 }
782776
783777
784-@Verifier(eq)
785-func er () = {
786- let es = {
787- let o = az()
778+@Verifier(ek)
779+func el () = {
780+ let em = {
781+ let o = aA()
788782 if ($isInstanceOf(o, "ByteVector"))
789783 then {
790- let aF = o
791- aF
784+ let aG = o
785+ aG
792786 }
793787 else if ($isInstanceOf(o, "Unit"))
794- then eq.senderPublicKey
788+ then ek.senderPublicKey
795789 else throw("Match error")
796790 }
797- sigVerify(eq.bodyBytes, eq.proofs[0], es)
791+ sigVerify(ek.bodyBytes, ek.proofs[0], em)
798792 }
799793

github/deemru/w8io/169f3d6 
275.69 ms