tx · hR4KL3FKMExdrcwZyu9Rs5HPqk5HHFkWR4eSusEQsy5

3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE:  -0.02100000 Waves

2023.06.08 18:22 [2613870] smart account 3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE > SELF 0.00000000 Waves

{ "type": 13, "id": "hR4KL3FKMExdrcwZyu9Rs5HPqk5HHFkWR4eSusEQsy5", "fee": 2100000, "feeAssetId": null, "timestamp": 1686237749114, "version": 2, "chainId": 84, "sender": "3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE", "senderPublicKey": "6t3vrhP1jCmG7CeKBmL8hUibtdP3cMXGC2XtPYEPPC5w", "proofs": [ "3iuU4a4FQvUnwKy3gHDUmDL2T1Gj5mFWhkqZwvTWqamz8LDxijKJWGJJ6GGtfpwD3bYwgkPHVLSvST3ossf5M2Az" ], "script": "base64:BgIrCAISBQoDCAEIEgMKAQgSBAoCCAQSAwoBCBIDCgEIEgUKAwgBCBIECgIIAS8ACXNlcGFyYXRvcgICX18ABU1VTFQ4AIDC1y8BB3dyYXBFcnIBA21zZwkAuQkCCQDMCAICGHZvdGluZ192ZXJpZmllZF92Mi5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEIdGhyb3dFcnIBA21zZwkAAgEJAQd3cmFwRXJyAQUDbXNnAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECG0ZhaWxlZCB0byBjYXN0IGludG8gSW50ZWdlcgEQZ2V0SW50ZWdlck9yWmVybwIHYWRkcmVzcwNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUHYWRkcmVzcwUDa2V5AAABEGdldEludGVnZXJPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQEHd3JhcEVycgEJAKwCAgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBEGdldFN0cmluZ09yRW1wdHkCB2FkZHJlc3MDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFB2FkZHJlc3MFA2tleQIAAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQEHd3JhcEVycgEJAKwCAgUDa2V5Ag8gaXMgbm90IGRlZmluZWQAE2tleUJvb3N0aW5nQ29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAhBib29zdGluZ0NvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgATa2V5RW1pc3Npb25Db250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABZrZXlBc3NldHNTdG9yZUNvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgITYXNzZXRzU3RvcmVDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAEGJvb3N0aW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE2tleUJvb3N0aW5nQ29udHJhY3QAEGVtaXNzaW9uQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE2tleUVtaXNzaW9uQ29udHJhY3QAE2Fzc2V0c1N0b3JlQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAEWtleUVtaXNzaW9uQ29uZmlnCQC5CQIJAMwIAgICJXMJAMwIAgIGY29uZmlnBQNuaWwFCXNlcGFyYXRvcgAMd3hBc3NldElkU3RyCQCRAwIJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFEGVtaXNzaW9uQ29udHJhY3QFEWtleUVtaXNzaW9uQ29uZmlnBQlzZXBhcmF0b3IAAQAJd3hBc3NldElkCQDZBAEFDHd4QXNzZXRJZFN0cgAVa2V5Vm90aW5nVGhyZXNob2xkQWRkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg92b3RpbmdUaHJlc2hvbGQJAMwIAgIDYWRkBQNuaWwFCXNlcGFyYXRvcgAYa2V5Vm90aW5nVGhyZXNob2xkUmVtb3ZlCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg92b3RpbmdUaHJlc2hvbGQJAMwIAgIGcmVtb3ZlBQNuaWwFCXNlcGFyYXRvcgAVa2V5UGVyaW9kTGVuZ3RoUmVtb3ZlCQC5CQIJAMwIAgICJXMJAMwIAgIScGVyaW9kTGVuZ3RoUmVtb3ZlBQNuaWwFCXNlcGFyYXRvcgASa2V5TWF4UGVyaW9kTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgIPbWF4UGVyaW9kTGVuZ3RoBQNuaWwFCXNlcGFyYXRvcgASa2V5TWluUGVyaW9kTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgIPbWluUGVyaW9kTGVuZ3RoBQNuaWwFCXNlcGFyYXRvcgEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIHYXNzZXRJZAVpbmRleAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhN2b3RpbmdSZXdhcmRBc3NldElkCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IBD2tleVZvdGluZ1Jld2FyZAMLdXNlckFkZHJlc3MHYXNzZXRJZAVpbmRleAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICDHZvdGluZ1Jld2FyZAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IBFGtleVRvdGFsVm90aW5nUmV3YXJkAgdhc3NldElkBWluZGV4CQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICEXRvdGFsVm90aW5nUmV3YXJkCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IAG2tleUZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICGGZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAUDbmlsBQlzZXBhcmF0b3IAGmtleU1pblN1Z2dlc3RSZW1vdmVCYWxhbmNlCQC5CQIJAMwIAgICJXMJAMwIAgIXbWluU3VnZ2VzdFJlbW92ZUJhbGFuY2UFA25pbAUJc2VwYXJhdG9yAQ9rZXlDdXJyZW50SW5kZXgBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICDGN1cnJlbnRJbmRleAkAzAgCBQdhc3NldElkBQNuaWwFCXNlcGFyYXRvcgEHa2V5Vm90ZQMHYXNzZXRJZAVpbmRleAZjYWxsZXIJALkJAgkAzAgCAgglcyVzJWQlcwkAzAgCAgR2b3RlCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAkAzAgCCQClCAEFBmNhbGxlcgUDbmlsBQlzZXBhcmF0b3IBCXZvdGVWYWx1ZQIHaW5GYXZvcglnd3hBbW91bnQJALkJAgkAzAgCAgQlcyVkCQDMCAIJAKUDAQUHaW5GYXZvcgkAzAgCCQCkAwEFCWd3eEFtb3VudAUDbmlsBQlzZXBhcmF0b3IBEGtleVN1Z2dlc3RJc3N1ZXICB2Fzc2V0SWQFaW5kZXgJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgINc3VnZ2VzdElzc3VlcgkAzAgCBQdhc3NldElkCQDMCAIJAKQDAQUFaW5kZXgFA25pbAUJc2VwYXJhdG9yAQ9rZXlDbGFpbUhpc3RvcnkDC3VzZXJBZGRyZXNzB2Fzc2V0SWQFaW5kZXgJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgdoaXN0b3J5CQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgUHYXNzZXRJZAkAzAgCCQCkAwEFBWluZGV4BQNuaWwFCXNlcGFyYXRvcgAOa2V5RmVlUGVyQmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgtmZWVQZXJCbG9jawUDbmlsBQlzZXBhcmF0b3IAC2ZlZVBlckJsb2NrCQEQZ2V0SW50ZWdlck9yRmFpbAIFBHRoaXMFDmtleUZlZVBlckJsb2NrACZrZXlNaW5XeE1pbkZvclN1Z2dlc3RBZGRBbW91bnRSZXF1aXJlZAkAuQkCCQDMCAICAiVzCQDMCAICIHd4TWluRm9yU3VnZ2VzdEFkZEFtb3VudFJlcXVpcmVkBQNuaWwFCXNlcGFyYXRvcgAja2V5V3hGb3JTdWdnZXN0UmVtb3ZlQW1vdW50UmVxdWlyZWQJALkJAgkAzAgCAgIlcwkAzAgCAiB3eEZvclN1Z2dlc3RSZW1vdmVBbW91bnRSZXF1aXJlZAUDbmlsBQlzZXBhcmF0b3IBDWtleVZvdGluZ0luZm8CB2Fzc2V0SWQFaW5kZXgJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIKdm90aW5nSW5mbwkAzAgCBQdhc3NldElkCQDMCAIJAKQDAQUFaW5kZXgFA25pbAUJc2VwYXJhdG9yAQ92b3RpbmdJbmZvVmFsdWUKDWlzUmV3YXJkRXhpc3QNcmV3YXJkQXNzZXRJZAxyZXdhcmRBbW91bnQKdm90aW5nVHlwZQZzdGF0dXMRdm90aW5nU3RhcnRIZWlnaHQPdm90aW5nRW5kSGVpZ2h0C3ZvdGVzUXVvcnVtCHZvdGVzRm9yDHZvdGVzQWdhaW5zdAkAuQkCCQDMCAICFCVzJXMlZCVzJXMlZCVkJWQlZCVkCQDMCAIJAKUDAQUNaXNSZXdhcmRFeGlzdAkAzAgCBQ1yZXdhcmRBc3NldElkCQDMCAIJAKQDAQUMcmV3YXJkQW1vdW50CQDMCAIFCnZvdGluZ1R5cGUJAMwIAgUGc3RhdHVzCQDMCAIJAKQDAQURdm90aW5nU3RhcnRIZWlnaHQJAMwIAgkApAMBBQ92b3RpbmdFbmRIZWlnaHQJAMwIAgkApAMBBQt2b3Rlc1F1b3J1bQkAzAgCCQCkAwEFCHZvdGVzRm9yCQDMCAIJAKQDAQUMdm90ZXNBZ2FpbnN0BQNuaWwFCXNlcGFyYXRvcgEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0Agt1c2VyQWRkcmVzcwx0YXJnZXRIZWlnaHQECWd3eEFtb3VudAkA/AcEBRBib29zdGluZ0NvbnRyYWN0AiBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQx0YXJnZXRIZWlnaHQFA25pbAUDbmlsCQEFYXNJbnQBBQlnd3hBbW91bnQBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzAAQHJG1hdGNoMAkAoggBCQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFzBQR0aGlzARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQTbWFuYWdlclZhdWx0QWRkcmVzcwkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBEmdldFZvdGluZ0luZm9QYXJ0cwEKdm90aW5nSW5mbwQPdm90aW5nSW5mb1BhcnRzCQC1CQIFCnZvdGluZ0luZm8FCXNlcGFyYXRvcgQQaXNSZXdhcmRFeGlzdFN0cgkAkQMCBQ92b3RpbmdJbmZvUGFydHMAAQQNaXNSZXdhcmRFeGlzdAMJAAACBRBpc1Jld2FyZEV4aXN0U3RyAgR0cnVlBgcEDXJld2FyZEFzc2V0SWQJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAIEDHJld2FyZEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwADBAp2b3RpbmdUeXBlCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAEBAZzdGF0dXMJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAUEEXZvdGluZ1N0YXJ0SGVpZ2h0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAYED3ZvdGluZ0VuZEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAHBAt2b3Rlc1F1b3J1bQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAIBAh2b3Rlc0ZvcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAJBAx2b3Rlc0FnYWluc3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ92b3RpbmdJbmZvUGFydHMACgkAnAoKBQ1pc1Jld2FyZEV4aXN0BQ1yZXdhcmRBc3NldElkBQxyZXdhcmRBbW91bnQFCnZvdGluZ1R5cGUFBnN0YXR1cwURdm90aW5nU3RhcnRIZWlnaHQFD3ZvdGluZ0VuZEhlaWdodAULdm90ZXNRdW9ydW0FCHZvdGVzRm9yBQx2b3Rlc0FnYWluc3QBEXZvdGluZ0V4aXN0Q2hlY2tzAgdhc3NldElkDGN1cnJlbnRJbmRleAQKdm90aW5nSW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4CQEHd3JhcEVycgECFXZvdGluZyBpbmZvIG5vdCBmb3VuZAQPdm90aW5nSW5mb0FycmF5CQC1CQIFCnZvdGluZ0luZm8FCXNlcGFyYXRvcgQGc3RhdHVzCQCRAwIFD3ZvdGluZ0luZm9BcnJheQAFBA92b3RpbmdFbmRIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9BcnJheQAHCQEHd3JhcEVycgECHXZvdGluZyBzdGFydCBoZWlnaHQgbm90IGZvdW5kBA1zdWdnZXN0SXNzdWVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleVN1Z2dlc3RJc3N1ZXICBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQd3cmFwRXJyAQIXdm90aW5nIGlzc3VlciBub3QgZm91bmQEBmNoZWNrcwkAzAgCAwkAAAIFBnN0YXR1cwIKaW5Qcm9ncmVzcwYJAQh0aHJvd0VycgECFW5vIHZvdGluZyBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFD3ZvdGluZ0VuZEhlaWdodAUGaGVpZ2h0BgkBCHRocm93RXJyAQIOdm90aW5nIGV4cGlyZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAlQoDBQZzdGF0dXMFD3ZvdGluZ0VuZEhlaWdodAUNc3VnZ2VzdElzc3VlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPY2FsY3VsYXRlUmV3YXJkAwV2b3Rlcgdhc3NldElkBWluZGV4BAd2b3RlS2V5CQEHa2V5Vm90ZQMFB2Fzc2V0SWQFBWluZGV4BQV2b3RlcgQIbGFzdFZvdGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQd2b3RlS2V5CQEHd3JhcEVycgECEnlvdSBoYXZlIG5vdCB2b3RlZAQNbGFzdFZvdGVQYXJ0cwkAtQkCBQhsYXN0Vm90ZQUJc2VwYXJhdG9yBAlnd3hBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ1sYXN0Vm90ZVBhcnRzAAIEDXZvdGluZ0luZm9TdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFBWluZGV4CQEHd3JhcEVycgECFXZvdGluZyBpbmZvIG5vdCBmb3VuZAQLdm90aW5nUGFydHMJARJnZXRWb3RpbmdJbmZvUGFydHMBBQ12b3RpbmdJbmZvU3RyBAh2b3Rlc0ZvcggFC3ZvdGluZ1BhcnRzAl85BAx2b3Rlc0FnYWluc3QIBQt2b3RpbmdQYXJ0cwNfMTAEFXBhcnRPZlRoZVRvdGFsVm90ZXNYOAkAawMFCWd3eEFtb3VudAUFTVVMVDgJAGQCBQh2b3Rlc0ZvcgUMdm90ZXNBZ2FpbnN0BBF0b3RhbFZvdGluZ1Jld2FyZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VG90YWxWb3RpbmdSZXdhcmQCBQdhc3NldElkBQVpbmRleAAABBF2b3RlclJld2FyZEFtb3VudAkAbgQFFXBhcnRPZlRoZVRvdGFsVm90ZXNYOAURdG90YWxWb3RpbmdSZXdhcmQFBU1VTFQ4BQVGTE9PUgURdm90ZXJSZXdhcmRBbW91bnQHAWkBCnN1Z2dlc3RBZGQDB2Fzc2V0SWQMcGVyaW9kTGVuZ3RoCmFzc2V0SW1hZ2UECXd4UGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABBB3eFBheW1lbnRBc3NldElkCQEFdmFsdWUBCAUJd3hQYXltZW50B2Fzc2V0SWQED3d4UGF5bWVudEFtb3VudAkBBXZhbHVlAQgFCXd4UGF5bWVudAZhbW91bnQED21pblBlcmlvZExlbmd0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUSa2V5TWluUGVyaW9kTGVuZ3RoBA9tYXhQZXJpb2RMZW5ndGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEFEmtleU1heFBlcmlvZExlbmd0aAQGY2hlY2tzCQDMCAIDAwkAZwIFDHBlcmlvZExlbmd0aAUPbWluUGVyaW9kTGVuZ3RoCQBnAgUPbWF4UGVyaW9kTGVuZ3RoBQxwZXJpb2RMZW5ndGgHBgkBCHRocm93RXJyAQIUaW52YWxpZCBwZXJpb2RMZW5ndGgJAMwIAgMJAGYCBQ93eFBheW1lbnRBbW91bnQJAGgCBQxwZXJpb2RMZW5ndGgFC2ZlZVBlckJsb2NrBgkBCHRocm93RXJyAQIebm90IGVub3VnaCB3eCBmb3IgZ2l2ZW4gcGVyaW9kCQDMCAIDCQBnAgUPd3hQYXltZW50QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBBSZrZXlNaW5XeE1pbkZvclN1Z2dlc3RBZGRBbW91bnRSZXF1aXJlZAYJAQh0aHJvd0VycgECIXBheW1lbnQgbGVzcyB0aGVuIG1pbiBmb3Igc3VnZ2VzdAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA9jdXJyZW50SW5kZXhLZXkJAQ9rZXlDdXJyZW50SW5kZXgBBQdhc3NldElkBAxjdXJyZW50SW5kZXgJAJ8IAQUPY3VycmVudEluZGV4S2V5BAhuZXdJbmRleAMJAQlpc0RlZmluZWQBBQxjdXJyZW50SW5kZXgJAGQCCQEFdmFsdWUBBQxjdXJyZW50SW5kZXgAAQAABAskdDA4NTgzOTIyMwMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAEEE3ZvdGluZ1Jld2FyZFBheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAQQadm90aW5nUmV3YXJkUGF5bWVudEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFE3ZvdGluZ1Jld2FyZFBheW1lbnQHYXNzZXRJZAQZdm90aW5nUmV3YXJkUGF5bWVudEFtb3VudAkBBXZhbHVlAQgFE3ZvdGluZ1Jld2FyZFBheW1lbnQGYW1vdW50CQCWCgQGBRp2b3RpbmdSZXdhcmRQYXltZW50QXNzZXRJZAUZdm90aW5nUmV3YXJkUGF5bWVudEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIFB2Fzc2V0SWQFCG5ld0luZGV4BRp2b3RpbmdSZXdhcmRQYXltZW50QXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleVRvdGFsVm90aW5nUmV3YXJkAgUHYXNzZXRJZAUIbmV3SW5kZXgFGXZvdGluZ1Jld2FyZFBheW1lbnRBbW91bnQFA25pbAkAlgoEBwIFRU1QVFkAAAUDbmlsBA1pc1Jld2FyZEV4aXN0CAULJHQwODU4MzkyMjMCXzEEDXJld2FyZEFzc2V0SWQIBQskdDA4NTgzOTIyMwJfMgQMcmV3YXJkQW1vdW50CAULJHQwODU4MzkyMjMCXzMEE3ZvdGluZ1Jld2FyZEFjdGlvbnMIBQskdDA4NTgzOTIyMwJfNAQLdm90ZXNRdW9ydW0JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRVrZXlWb3RpbmdUaHJlc2hvbGRBZGQJAQd3cmFwRXJyAQIadm90aW5nVGhyZXNob2xkQWRkIG5vdCBzZXQECnZvdGluZ0luZm8JAQ92b3RpbmdJbmZvVmFsdWUKBQ1pc1Jld2FyZEV4aXN0BQ1yZXdhcmRBc3NldElkBQxyZXdhcmRBbW91bnQCDHZlcmlmaWNhdGlvbgIKaW5Qcm9ncmVzcwUGaGVpZ2h0CQBkAgUGaGVpZ2h0BQxwZXJpb2RMZW5ndGgFC3ZvdGVzUXVvcnVtAAAAAAQYZmluYWxpemVDYWxsUmV3YXJkQW1vdW50CQELdmFsdWVPckVsc2UCCQCfCAEFG2tleUZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAAABAxidXJuV3hBbW91bnQJAGUCBQ93eFBheW1lbnRBbW91bnQFGGZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAQcYXNzZXRzU3RvcmVDcmVhdGVPclVwZGF0ZUludgkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0Ag5jcmVhdGVPclVwZGF0ZQkAzAgCBQdhc3NldElkCQDMCAIFCmFzc2V0SW1hZ2UJAMwIAgcFA25pbAUDbmlsAwkAAAIFHGFzc2V0c1N0b3JlQ3JlYXRlT3JVcGRhdGVJbnYFHGFzc2V0c1N0b3JlQ3JlYXRlT3JVcGRhdGVJbnYJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUPY3VycmVudEluZGV4S2V5BQhuZXdJbmRleAkAzAgCCQELU3RyaW5nRW50cnkCCQEQa2V5U3VnZ2VzdElzc3VlcgIFB2Fzc2V0SWQFCG5ld0luZGV4CQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFCG5ld0luZGV4BQp2b3RpbmdJbmZvCQDMCAIJAQRCdXJuAgUQd3hQYXltZW50QXNzZXRJZAUMYnVybld4QW1vdW50BQNuaWwFE3ZvdGluZ1Jld2FyZEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENc3VnZ2VzdFJlbW92ZQEHYXNzZXRJZAQOZ3d4QW1vdW50QXROb3cJARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCCQClCAEIBQFpBmNhbGxlcgUGaGVpZ2h0BBdtaW5TdWdnZXN0UmVtb3ZlQmFsYW5jZQkBEUBleHRyTmF0aXZlKDEwNTUpAQUaa2V5TWluU3VnZ2VzdFJlbW92ZUJhbGFuY2UECXd4UGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABBB3eFBheW1lbnRBc3NldElkCQEFdmFsdWUBCAUJd3hQYXltZW50B2Fzc2V0SWQED3d4UGF5bWVudEFtb3VudAkBBXZhbHVlAQgFCXd4UGF5bWVudAZhbW91bnQEBmNoZWNrcwkAzAgCAwkAZwIFDmd3eEFtb3VudEF0Tm93BRdtaW5TdWdnZXN0UmVtb3ZlQmFsYW5jZQYJAQh0aHJvd0VycgECEG5vdCBlbm91Z2ggZ1dYZXMJAMwIAgMJAGcCBQ93eFBheW1lbnRBbW91bnQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFI2tleVd4Rm9yU3VnZ2VzdFJlbW92ZUFtb3VudFJlcXVpcmVkBgkBCHRocm93RXJyAQIhcGF5bWVudCBsZXNzIHRoZW4gbWluIGZvciBzdWdnZXN0BQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MED2N1cnJlbnRJbmRleEtleQkBD2tleUN1cnJlbnRJbmRleAEFB2Fzc2V0SWQEDGN1cnJlbnRJbmRleAkAnwgBBQ9jdXJyZW50SW5kZXhLZXkECG5ld0luZGV4AwkBCWlzRGVmaW5lZAEFDGN1cnJlbnRJbmRleAkAZAIJAQV2YWx1ZQEFDGN1cnJlbnRJbmRleAABAAAEDHBlcmlvZExlbmd0aAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFFWtleVBlcmlvZExlbmd0aFJlbW92ZQkBB3dyYXBFcnIBAhpwZXJpb2RMZW5ndGhSZW1vdmUgbm90IHNldAQPdm90aW5nRW5kSGVpZ2h0CQBkAgUGaGVpZ2h0BQxwZXJpb2RMZW5ndGgEC3ZvdGVzUXVvcnVtCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUYa2V5Vm90aW5nVGhyZXNob2xkUmVtb3ZlCQEHd3JhcEVycgECHXZvdGluZ1RocmVzaG9sZFJlbW92ZSBub3Qgc2V0BAp2b3RpbmdJbmZvCQEPdm90aW5nSW5mb1ZhbHVlCgcCBUVNUFRZAAACDmRldmVyaWZpY2F0aW9uAgppblByb2dyZXNzBQZoZWlnaHQJAGQCBQZoZWlnaHQFDHBlcmlvZExlbmd0aAULdm90ZXNRdW9ydW0AAAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9jdXJyZW50SW5kZXhLZXkFCG5ld0luZGV4CQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTdWdnZXN0SXNzdWVyAgUHYXNzZXRJZAUIbmV3SW5kZXgJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUIbmV3SW5kZXgFCnZvdGluZ0luZm8FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQR2b3RlAgdhc3NldElkB2luRmF2b3IED2N1cnJlbnRJbmRleEtleQkBD2tleUN1cnJlbnRJbmRleAEFB2Fzc2V0SWQEDGN1cnJlbnRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFD2N1cnJlbnRJbmRleEtleQkBB3dyYXBFcnIBAhV2b3RpbmcgZG9lcyBub3QgZXhpc3QECnZvdGluZ0luZm8JARF2b3RpbmdFeGlzdENoZWNrcwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAMJAAACBQp2b3RpbmdJbmZvBQp2b3RpbmdJbmZvBBZjdXJyZW50Vm90aW5nRW5kSGVpZ2h0CAUKdm90aW5nSW5mbwJfMgQOZ3d4QW1vdW50QXRFbmQJARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCCQClCAEIBQFpBmNhbGxlcgUWY3VycmVudFZvdGluZ0VuZEhlaWdodAQHdm90ZUtleQkBB2tleVZvdGUDBQdhc3NldElkBQxjdXJyZW50SW5kZXgIBQFpBmNhbGxlcgQGY2hlY2tzCQDMCAIDCQAAAgkAoggBBQd2b3RlS2V5BQR1bml0BgkBCHRocm93RXJyAQIWWW91IGhhdmUgYWxyZWFkeSB2b3RlZAkAzAgCAwkAZgIFDmd3eEFtb3VudEF0RW5kAAAGCQACAQIoWW91J2xsIG5vdCBoYXZlIGdXWCBhdCB0aGUgZW5kIG9mIHZvdGluZwUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA12b3RpbmdJbmZvU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQd3cmFwRXJyAQIVdm90aW5nIGluZm8gbm90IGZvdW5kBA92b3RpbmdJbmZvUGFydHMJARJnZXRWb3RpbmdJbmZvUGFydHMBBQ12b3RpbmdJbmZvU3RyBAh2b3Rlc0ZvcggFD3ZvdGluZ0luZm9QYXJ0cwJfOQQMdm90ZXNBZ2FpbnN0CAUPdm90aW5nSW5mb1BhcnRzA18xMAQNJHQwMTI1MzQxMjY5NQMFB2luRmF2b3IJAJQKAgkAZAIFCHZvdGVzRm9yBQ5nd3hBbW91bnRBdEVuZAUMdm90ZXNBZ2FpbnN0CQCUCgIFCHZvdGVzRm9yCQBkAgUMdm90ZXNBZ2FpbnN0BQ5nd3hBbW91bnRBdEVuZAQLbmV3Vm90ZXNGb3IIBQ0kdDAxMjUzNDEyNjk1Al8xBA9uZXdWb3Rlc0FnYWluc3QIBQ0kdDAxMjUzNDEyNjk1Al8yBBJuZXdWb3RpbmdJbmZvVmFsdWUJAQ92b3RpbmdJbmZvVmFsdWUKCAUPdm90aW5nSW5mb1BhcnRzAl8xCAUPdm90aW5nSW5mb1BhcnRzAl8yCAUPdm90aW5nSW5mb1BhcnRzAl8zCAUPdm90aW5nSW5mb1BhcnRzAl80CAUPdm90aW5nSW5mb1BhcnRzAl81CAUPdm90aW5nSW5mb1BhcnRzAl82CAUPdm90aW5nSW5mb1BhcnRzAl83CAUPdm90aW5nSW5mb1BhcnRzAl84BQtuZXdWb3Rlc0ZvcgUPbmV3Vm90ZXNBZ2FpbnN0BBJ2b3RpbmdSZXdhcmRBY3Rpb24EByRtYXRjaDAJAKAIAQkBFmtleVZvdGluZ1Jld2FyZEFzc2V0SWQCBQdhc3NldElkBQxjdXJyZW50SW5kZXgDCQABAgUHJG1hdGNoMAIHQm9vbGVhbgQCcGsFByRtYXRjaDAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ9rZXlWb3RpbmdSZXdhcmQDCAUBaQZjYWxsZXIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAYFA25pbAMJAAECBQckbWF0Y2gwAgRVbml0BQNuaWwJAAIBAgtNYXRjaCBlcnJvcgkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIFB3ZvdGVLZXkJAQl2b3RlVmFsdWUCBQdpbkZhdm9yBQ5nd3hBbW91bnRBdEVuZAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAUSbmV3Vm90aW5nSW5mb1ZhbHVlBQNuaWwFEnZvdGluZ1Jld2FyZEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjYW5jZWxWb3RlAQdhc3NldElkBA9jdXJyZW50SW5kZXhLZXkJAQ9rZXlDdXJyZW50SW5kZXgBBQdhc3NldElkBAxjdXJyZW50SW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBQ9jdXJyZW50SW5kZXhLZXkJAQd3cmFwRXJyAQIVdm90aW5nIGRvZXMgbm90IGV4aXN0BAd2b3RlS2V5CQEHa2V5Vm90ZQMFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAgFAWkGY2FsbGVyBAhsYXN0Vm90ZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEFB3ZvdGVLZXkJAQd3cmFwRXJyAQISeW91IGhhdmUgbm90IHZvdGVkBA1sYXN0Vm90ZVBhcnRzCQC1CQIFCGxhc3RWb3RlBQlzZXBhcmF0b3IEB2luRmF2b3IJAJEDAgUNbGFzdFZvdGVQYXJ0cwABBAlnd3hBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ1sYXN0Vm90ZVBhcnRzAAIECnZvdGluZ0luZm8JARF2b3RpbmdFeGlzdENoZWNrcwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAMJAAACBQp2b3RpbmdJbmZvBQp2b3RpbmdJbmZvBAZjaGVja3MJAMwIAgMDCQAAAgUHaW5GYXZvcgIEdHJ1ZQYJAAACBQdpbkZhdm9yAgVmYWxzZQYJAQh0aHJvd0VycgECDGludmFsaWQgdm90ZQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA12b3RpbmdJbmZvU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQd3cmFwRXJyAQIVdm90aW5nIGluZm8gbm90IGZvdW5kBA92b3RpbmdJbmZvUGFydHMJARJnZXRWb3RpbmdJbmZvUGFydHMBBQ12b3RpbmdJbmZvU3RyBAh2b3Rlc0ZvcggFD3ZvdGluZ0luZm9QYXJ0cwJfOQQMdm90ZXNBZ2FpbnN0CAUPdm90aW5nSW5mb1BhcnRzA18xMAQNJHQwMTQyNzUxNDQzNgMJAAACBQdpbkZhdm9yAgR0cnVlCQCUCgIJAGUCBQh2b3Rlc0ZvcgUJZ3d4QW1vdW50BQx2b3Rlc0FnYWluc3QJAJQKAgUIdm90ZXNGb3IJAGUCBQx2b3Rlc0FnYWluc3QFCWd3eEFtb3VudAQLbmV3Vm90ZXNGb3IIBQ0kdDAxNDI3NTE0NDM2Al8xBA9uZXdWb3Rlc0FnYWluc3QIBQ0kdDAxNDI3NTE0NDM2Al8yBBJuZXdWb3RpbmdJbmZvVmFsdWUJAQ92b3RpbmdJbmZvVmFsdWUKCAUPdm90aW5nSW5mb1BhcnRzAl8xCAUPdm90aW5nSW5mb1BhcnRzAl8yCAUPdm90aW5nSW5mb1BhcnRzAl8zCAUPdm90aW5nSW5mb1BhcnRzAl80CAUPdm90aW5nSW5mb1BhcnRzAl81CAUPdm90aW5nSW5mb1BhcnRzAl82CAUPdm90aW5nSW5mb1BhcnRzAl83CAUPdm90aW5nSW5mb1BhcnRzAl84BQtuZXdWb3Rlc0ZvcgUPbmV3Vm90ZXNBZ2FpbnN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4BRJuZXdWb3RpbmdJbmZvVmFsdWUJAMwIAgkBC0RlbGV0ZUVudHJ5AQUHdm90ZUtleQkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5Vm90aW5nUmV3YXJkAwgFAWkGY2FsbGVyBQdhc3NldElkBQxjdXJyZW50SW5kZXgFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQhmaW5hbGl6ZQEHYXNzZXRJZAQPY3VycmVudEluZGV4S2V5CQEPa2V5Q3VycmVudEluZGV4AQUHYXNzZXRJZAQMY3VycmVudEluZGV4CQELdmFsdWVPckVsc2UCCQCfCAEFD2N1cnJlbnRJbmRleEtleQAABBJ2b3RpbmdUaHJlc2hvbGRBZGQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRVrZXlWb3RpbmdUaHJlc2hvbGRBZGQJAQd3cmFwRXJyAQIadm90aW5nVGhyZXNob2xkQWRkIG5vdCBzZXQEFXZvdGluZ1RocmVzaG9sZFJlbW92ZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFGGtleVZvdGluZ1RocmVzaG9sZFJlbW92ZQkBB3dyYXBFcnIBAh12b3RpbmdUaHJlc2hvbGRSZW1vdmUgbm90IHNldAQNdm90aW5nSW5mb1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4CQEHd3JhcEVycgECFXZvdGluZyBpbmZvIG5vdCBmb3VuZAQPdm90aW5nSW5mb1BhcnRzCQESZ2V0Vm90aW5nSW5mb1BhcnRzAQUNdm90aW5nSW5mb1N0cgQKdm90aW5nVHlwZQgFD3ZvdGluZ0luZm9QYXJ0cwJfNAQGc3RhdHVzCAUPdm90aW5nSW5mb1BhcnRzAl81BA92b3RpbmdFbmRIZWlnaHQIBQ92b3RpbmdJbmZvUGFydHMCXzcEDHZvdGluZ1F1b3J1bQgFD3ZvdGluZ0luZm9QYXJ0cwJfOAQIdm90ZXNGb3IIBQ92b3RpbmdJbmZvUGFydHMCXzkEDHZvdGVzQWdhaW5zdAgFD3ZvdGluZ0luZm9QYXJ0cwNfMTAEBmNoZWNrcwkAzAgCAwkAAAIFBnN0YXR1cwIKaW5Qcm9ncmVzcwYJAQh0aHJvd0VycgECFnZvdGluZyBub3QgaW4gcHJvZ3Jlc3MJAMwIAgMJAGcCBQZoZWlnaHQFD3ZvdGluZ0VuZEhlaWdodAYJAQh0aHJvd0VycgECE3ZvdGluZyBub3QgZmluaXNoZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQJbmV3U3RhdHVzAwkAZwIJAGQCBQh2b3Rlc0ZvcgUMdm90ZXNBZ2FpbnN0BQx2b3RpbmdRdW9ydW0CCGFjY2VwdGVkAghyZWplY3RlZAQIdmVyaWZpZWQDCQAAAgUKdm90aW5nVHlwZQIMdmVyaWZpY2F0aW9uBgcEGGZpbmFsaXplQ2FsbFJld2FyZEFjdGlvbgMJAGYCBQx2b3Rlc0FnYWluc3QFCHZvdGVzRm9yBBFzZXRWZXJpZmllZEludm9rZQkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AgtzZXRWZXJpZmllZAkAzAgCBQdhc3NldElkCQDMCAIFCHZlcmlmaWVkBQNuaWwFA25pbAMJAAACBRFzZXRWZXJpZmllZEludm9rZQURc2V0VmVyaWZpZWRJbnZva2UEGGZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAnwgBBRtrZXlGaW5hbGl6ZUNhbGxSZXdhcmRBbW91bnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFGGZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAUJd3hBc3NldElkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA25pbAQSbmV3Vm90aW5nSW5mb1ZhbHVlCQEPdm90aW5nSW5mb1ZhbHVlCggFD3ZvdGluZ0luZm9QYXJ0cwJfMQgFD3ZvdGluZ0luZm9QYXJ0cwJfMggFD3ZvdGluZ0luZm9QYXJ0cwJfMwgFD3ZvdGluZ0luZm9QYXJ0cwJfNAUJbmV3U3RhdHVzCAUPdm90aW5nSW5mb1BhcnRzAl82CAUPdm90aW5nSW5mb1BhcnRzAl83CAUPdm90aW5nSW5mb1BhcnRzAl84CAUPdm90aW5nSW5mb1BhcnRzAl85CAUPdm90aW5nSW5mb1BhcnRzA18xMAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4BRJuZXdWb3RpbmdJbmZvVmFsdWUFA25pbAUYZmluYWxpemVDYWxsUmV3YXJkQWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNsYWltUkVBRE9OTFkDB2Fzc2V0SWQFaW5kZXgOdXNlckFkZHJlc3NTdHIEC3VzZXJBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUOdXNlckFkZHJlc3NTdHIJAQd3cmFwRXJyAQIPaW52YWxpZCBhZGRyZXNzBBZ2b3RpbmdSZXdhcmRBc3NldElkU3RyCQCiCAEJARZrZXlWb3RpbmdSZXdhcmRBc3NldElkAgUHYXNzZXRJZAUFaW5kZXgEDHJld2FyZEFtb3VudAMJAQlpc0RlZmluZWQBBRZ2b3RpbmdSZXdhcmRBc3NldElkU3RyCQEPY2FsY3VsYXRlUmV3YXJkAwULdXNlckFkZHJlc3MFB2Fzc2V0SWQFBWluZGV4AAAJAJQKAgUDbmlsBQxyZXdhcmRBbW91bnQBaQEFY2xhaW0CB2Fzc2V0SWQFaW5kZXgEDWNhbGxlckFkZHJlc3MIBQFpBmNhbGxlcgQPY2xhaW1IaXN0b3J5S2V5CQEPa2V5Q2xhaW1IaXN0b3J5AwUNY2FsbGVyQWRkcmVzcwUHYXNzZXRJZAUFaW5kZXgEDGNsYWltSGlzdG9yeQkAnwgBBQ9jbGFpbUhpc3RvcnlLZXkEBmNoZWNrcwkAzAgCAwkAAAIFDGNsYWltSGlzdG9yeQUEdW5pdAYJAQh0aHJvd0VycgECD2FscmVhZHkgY2xhaW1lZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAxyZXdhcmRBbW91bnQDCQBmAgkBD2NhbGN1bGF0ZVJld2FyZAMFDWNhbGxlckFkZHJlc3MFB2Fzc2V0SWQFBWluZGV4AAAJAQ9jYWxjdWxhdGVSZXdhcmQDBQ1jYWxsZXJBZGRyZXNzBQdhc3NldElkBQVpbmRleAkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQQWdm90aW5nUmV3YXJkQXNzZXRJZFN0cgkAoggBCQEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIFB2Fzc2V0SWQFBWluZGV4BAxyZXdhcmRBY3Rpb24DCQEJaXNEZWZpbmVkAQUWdm90aW5nUmV3YXJkQXNzZXRJZFN0cgQTdm90aW5nUmV3YXJkQXNzZXRJZAkA2QQBCQEFdmFsdWUBBRZ2b3RpbmdSZXdhcmRBc3NldElkU3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDWNhbGxlckFkZHJlc3MFDHJld2FyZEFtb3VudAUTdm90aW5nUmV3YXJkQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPY2xhaW1IaXN0b3J5S2V5BQxyZXdhcmRBbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleVZvdGluZ1Jld2FyZAMFDWNhbGxlckFkZHJlc3MFB2Fzc2V0SWQFBWluZGV4BQNuaWwJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0FDHJld2FyZEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleSXVKDo=", "height": 2613870, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: NkrWMQqaWLPBDGFc7jHJkpc7UBRE4ZhxE14iidRpbbr Next: EAmYFzeoPoe26PAmNtN9n9bGCHK2exKVQhnC1HBCmjdL Diff:
OldNewDifferences
5656
5757 let z = makeString(["%s%s", "votingThreshold", "remove"], a)
5858
59-func A (B,C) = makeString(["%s%s%d", "periodLengthAdd", B, toString(C)], a)
59+let A = makeString(["%s", "periodLengthRemove"], a)
60+
61+let B = makeString(["%s", "maxPeriodLength"], a)
62+
63+let C = makeString(["%s", "minPeriodLength"], a)
64+
65+func D (E,F) = makeString(["%s%s%d", "votingRewardAssetId", E, toString(F)], a)
6066
6167
62-let D = makeString(["%s", "periodLengthRemove"], a)
63-
64-let E = makeString(["%s", "maxPeriodLength"], a)
65-
66-let F = makeString(["%s", "minPeriodLength"], a)
67-
68-func G (B,C) = makeString(["%s%s%d", "votingRewardAssetId", B, toString(C)], a)
68+func G (H,E,F) = makeString(["%s%s%s%d", "votingReward", toString(H), E, toString(F)], a)
6969
7070
71-func H (I,B,C) = makeString(["%s%s%s%d", "votingReward", toString(I), B, toString(C)], a)
71+func I (E,F) = makeString(["%s%s%d", "totalVotingReward", E, toString(F)], a)
7272
7373
74-func J (B,C) = makeString(["%s%s%d", "votingReward", B, toString(C)], a)
74+let J = makeString(["%s", "finalizeCallRewardAmount"], a)
75+
76+let K = makeString(["%s", "minSuggestRemoveBalance"], a)
77+
78+func L (E) = makeString(["%s%s", "currentIndex", E], a)
7579
7680
77-let K = makeString(["%s", "finalizeCallRewardAmount"], a)
78-
79-let L = makeString(["%s", "minSuggestRemoveBalance"], a)
80-
81-func M (B) = makeString(["%s%s", "currentIndex", B], a)
81+func M (E,F,N) = makeString(["%s%s%d%s", "vote", E, toString(F), toString(N)], a)
8282
8383
84-func N (B,C,O) = makeString(["%s%s%d%s", "vote", B, toString(C), toString(O)], a)
84+func O (P,Q) = makeString(["%s%d", toString(P), toString(Q)], a)
8585
8686
87-func P (Q,R) = makeString(["%s%d", toString(Q), toString(R)], a)
87+func R (E,F) = makeString(["%s%s%d", "suggestIssuer", E, toString(F)], a)
8888
8989
90-func S (B,C) = makeString(["%s%s%d", "suggestIssuer", B, toString(C)], a)
90+func S (H,E,F) = makeString(["%s%s%s%d", "history", toString(H), E, toString(F)], a)
9191
9292
93-func T (I,B,C) = makeString(["%s%s%s%d", "history", toString(I), B, toString(C)], a)
93+let T = makeString(["%s", "feePerBlock"], a)
94+
95+let U = m(this, T)
96+
97+let V = makeString(["%s", "wxMinForSuggestAddAmountRequired"], a)
98+
99+let W = makeString(["%s", "wxForSuggestRemoveAmountRequired"], a)
100+
101+func X (E,F) = makeString(["%s%s%d", "votingInfo", E, toString(F)], a)
94102
95103
96-let U = makeString(["%s", "feePerBlock"], a)
97-
98-let V = m(this, U)
99-
100-let W = makeString(["%s", "wxMinForSuggestAddAmountRequired"], a)
101-
102-let X = makeString(["%s", "wxForSuggestRemoveAmountRequired"], a)
103-
104-func Y (B,C) = makeString(["%s%s%d", "votingInfo", B, toString(C)], a)
104+func Y (Z,aa,ab,ac,ad,ae,af,ag,ah,ai) = makeString(["%s%s%d%s%s%d%d%d%d%d", toString(Z), aa, toString(ab), ac, ad, toString(ae), toString(af), toString(ag), toString(ah), toString(ai)], a)
105105
106106
107-func Z (aa,ab,ac,ad,ae,af,ag,ah,ai,aj) = makeString(["%s%s%s%d%s%s%d%d%d%d%d", toString(aa), ab, toString(ac), ad, ae, toString(af), toString(ag), toString(ah), toString(ai), toString(aj)], a)
108-
109-
110-func ak (I,al) = {
111- let R = invoke(s, "getUserGwxAmountAtHeightREADONLY", [I, al], nil)
112- f(R)
107+func aj (H,ak) = {
108+ let Q = invoke(s, "getUserGwxAmountAtHeightREADONLY", [H, ak], nil)
109+ f(Q)
113110 }
114111
115112
116-func am () = "%s__managerVaultAddress"
113+func al () = "%s__managerVaultAddress"
117114
118115
119-func an () = "%s__managerPublicKey"
116+func am () = "%s__managerPublicKey"
120117
121118
122-func ao () = {
123- let h = getString(am())
119+func an () = {
120+ let h = getString(al())
124121 if ($isInstanceOf(h, "String"))
125122 then {
126- let ap = h
127- addressFromStringValue(ap)
123+ let ao = h
124+ addressFromStringValue(ao)
128125 }
129126 else this
130127 }
131128
132129
133-func aq () = {
134- let ar = ao()
135- let h = getString(ar, an())
130+func ap () = {
131+ let aq = an()
132+ let h = getString(aq, am())
136133 if ($isInstanceOf(h, "String"))
137134 then {
138- let ap = h
139- fromBase58String(ap)
135+ let ao = h
136+ fromBase58String(ao)
140137 }
141138 else if ($isInstanceOf(h, "Unit"))
142139 then unit
144141 }
145142
146143
147-func as (at) = {
148- let au = split(at, a)
149- let av = au[1]
150- let aa = if ((av == "true"))
144+func ar (as) = {
145+ let at = split(as, a)
146+ let au = at[1]
147+ let Z = if ((au == "true"))
151148 then true
152149 else false
153- let ab = au[2]
154- let ac = parseIntValue(au[3])
155- let ad = au[4]
156- let ae = au[5]
157- let af = parseIntValue(au[6])
158- let ag = parseIntValue(au[7])
159- let ah = parseIntValue(au[8])
160- let ai = parseIntValue(au[9])
161- let aj = parseIntValue(au[10])
162- $Tuple10(aa, ab, ac, ad, ae, af, ag, ah, ai, aj)
150+ let aa = at[2]
151+ let ab = parseIntValue(at[3])
152+ let ac = at[4]
153+ let ad = at[5]
154+ let ae = parseIntValue(at[6])
155+ let af = parseIntValue(at[7])
156+ let ag = parseIntValue(at[8])
157+ let ah = parseIntValue(at[9])
158+ let ai = parseIntValue(at[10])
159+ $Tuple10(Z, aa, ab, ac, ad, ae, af, ag, ah, ai)
163160 }
164161
165162
166-func aw (B,ax) = {
167- let at = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
168- let ay = split(at, a)
169- let ae = ay[5]
170- let ag = valueOrErrorMessage(parseIntValue(ay[7]), c("voting start height not found"))
171- let az = valueOrErrorMessage(getString(S(B, ax)), c("voting issuer not found"))
172- let aA = [if ((ae == "inProgress"))
163+func av (E,aw) = {
164+ let as = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
165+ let ax = split(as, a)
166+ let ad = ax[5]
167+ let af = valueOrErrorMessage(parseIntValue(ax[7]), c("voting start height not found"))
168+ let ay = valueOrErrorMessage(getString(R(E, aw)), c("voting issuer not found"))
169+ let az = [if ((ad == "inProgress"))
173170 then true
174- else e("no voting in progress"), if ((ag > height))
171+ else e("no voting in progress"), if ((af > height))
175172 then true
176173 else e("voting expired")]
177- if ((aA == aA))
178- then $Tuple3(ae, ag, az)
174+ if ((az == az))
175+ then $Tuple3(ad, af, ay)
179176 else throw("Strict value is not equal to itself.")
180177 }
181178
182179
183-func aB (aC,B,C) = {
184- let aD = N(B, C, aC)
185- let aE = valueOrErrorMessage(getString(aD), c("you have not voted"))
186- let aF = split(aE, a)
187- let R = parseIntValue(aF[2])
188- let aG = valueOrErrorMessage(getString(Y(B, C)), c("voting info not found"))
189- let aH = as(aG)
190- let ai = aH._9
191- let aj = aH._10
192- let aI = fraction(R, b, (ai + aj))
193- let aJ = valueOrElse(getInteger(J(B, C)), 0)
194- let aK = fraction(aI, aJ, b, FLOOR)
195- aK
180+func aA (aB,E,F) = {
181+ let aC = M(E, F, aB)
182+ let aD = valueOrErrorMessage(getString(aC), c("you have not voted"))
183+ let aE = split(aD, a)
184+ let Q = parseIntValue(aE[2])
185+ let aF = valueOrErrorMessage(getString(X(E, F)), c("voting info not found"))
186+ let aG = ar(aF)
187+ let ah = aG._9
188+ let ai = aG._10
189+ let aH = fraction(Q, b, (ah + ai))
190+ let aI = valueOrElse(getInteger(I(E, F)), 0)
191+ let aJ = fraction(aH, aI, b, FLOOR)
192+ aJ
196193 }
197194
198195
199-@Callable(aL)
200-func suggestAdd (B,aM,aN) = {
201- let aO = aL.payments[0]
202- let aP = value(aO.assetId)
203- let aQ = value(aO.amount)
204- let aR = getIntegerValue(F)
205- let aS = getIntegerValue(E)
206- let aA = [if (if ((aM >= aR))
207- then (aS >= aM)
196+@Callable(aK)
197+func suggestAdd (E,aL,aM) = {
198+ let aN = aK.payments[0]
199+ let aO = value(aN.assetId)
200+ let aP = value(aN.amount)
201+ let aQ = getIntegerValue(C)
202+ let aR = getIntegerValue(B)
203+ let az = [if (if ((aL >= aQ))
204+ then (aR >= aL)
208205 else false)
209206 then true
210- else e("invalid periodLength"), if ((aQ > (aM * V)))
207+ else e("invalid periodLength"), if ((aP > (aL * U)))
211208 then true
212- else e("not enough wx for given period"), if ((aQ >= getIntegerValue(W)))
209+ else e("not enough wx for given period"), if ((aP >= getIntegerValue(V)))
213210 then true
214211 else e("payment less then min for suggest")]
215- if ((aA == aA))
212+ if ((az == az))
216213 then {
217- let aT = M(B)
218- let ax = getInteger(aT)
219- let aU = if (isDefined(ax))
220- then (value(ax) + 1)
214+ let aS = L(E)
215+ let aw = getInteger(aS)
216+ let aT = if (isDefined(aw))
217+ then (value(aw) + 1)
221218 else 0
222- let aV = if ((size(aL.payments) > 1))
219+ let aU = if ((size(aK.payments) > 1))
223220 then {
224- let aW = aL.payments[1]
225- let aX = toBase58String(value(aW.assetId))
226- let aY = value(aW.amount)
227- $Tuple4(true, aX, aY, [StringEntry(G(B, aU), aX), IntegerEntry(J(B, aU), aY)])
221+ let aV = aK.payments[1]
222+ let aW = toBase58String(value(aV.assetId))
223+ let aX = value(aV.amount)
224+ $Tuple4(true, aW, aX, [StringEntry(D(E, aT), aW), IntegerEntry(I(E, aT), aX)])
228225 }
229226 else $Tuple4(false, "EMPTY", 0, nil)
230- let aa = aV._1
231- let ab = aV._2
232- let ac = aV._3
233- let aZ = aV._4
234- let ah = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
235- let at = Z(aa, ab, ac, "verification", "inProgress", height, (height + aM), ah, 0, 0)
236- let ba = valueOrElse(getInteger(K), 0)
237- let bb = (aQ - ba)
238- let bc = invoke(u, "createOrUpdate", [B, aN, false], nil)
239- if ((bc == bc))
240- then ([IntegerEntry(aT, aU), StringEntry(S(B, aU), toString(aL.caller)), StringEntry(Y(B, aU), at), Burn(aP, bb)] ++ aZ)
227+ let Z = aU._1
228+ let aa = aU._2
229+ let ab = aU._3
230+ let aY = aU._4
231+ let ag = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
232+ let as = Y(Z, aa, ab, "verification", "inProgress", height, (height + aL), ag, 0, 0)
233+ let aZ = valueOrElse(getInteger(J), 0)
234+ let ba = (aP - aZ)
235+ let bb = invoke(u, "createOrUpdate", [E, aM, false], nil)
236+ if ((bb == bb))
237+ then ([IntegerEntry(aS, aT), StringEntry(R(E, aT), toString(aK.caller)), StringEntry(X(E, aT), as), Burn(aO, ba)] ++ aY)
241238 else throw("Strict value is not equal to itself.")
242239 }
243240 else throw("Strict value is not equal to itself.")
245242
246243
247244
248-@Callable(aL)
249-func suggestRemove (B) = {
250- let bd = ak(toString(aL.caller), height)
251- let be = getIntegerValue(L)
252- let aO = aL.payments[0]
253- let aP = value(aO.assetId)
254- let aQ = value(aO.amount)
255- let aA = [if ((bd >= be))
245+@Callable(aK)
246+func suggestRemove (E) = {
247+ let bc = aj(toString(aK.caller), height)
248+ let bd = getIntegerValue(K)
249+ let aN = aK.payments[0]
250+ let aO = value(aN.assetId)
251+ let aP = value(aN.amount)
252+ let az = [if ((bc >= bd))
256253 then true
257- else e("not enough gWXes"), if ((aQ >= getIntegerValue(X)))
254+ else e("not enough gWXes"), if ((aP >= getIntegerValue(W)))
258255 then true
259256 else e("payment less then min for suggest")]
260- if ((aA == aA))
257+ if ((az == az))
261258 then {
262- let aT = M(B)
263- let ax = getInteger(aT)
264- let aU = if (isDefined(ax))
265- then (value(ax) + 1)
259+ let aS = L(E)
260+ let aw = getInteger(aS)
261+ let aT = if (isDefined(aw))
262+ then (value(aw) + 1)
266263 else 0
267- let aM = valueOrErrorMessage(getInteger(D), c("periodLengthRemove not set"))
268- let ag = (height + aM)
269- let ah = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
270- let at = Z(false, "EMPTY", 0, "deverification", "inProgress", height, (height + aM), ah, 0, 0)
271-[IntegerEntry(aT, aU), StringEntry(S(B, aU), toString(aL.caller)), StringEntry(Y(B, aU), at)]
264+ let aL = valueOrErrorMessage(getInteger(A), c("periodLengthRemove not set"))
265+ let af = (height + aL)
266+ let ag = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
267+ let as = Y(false, "EMPTY", 0, "deverification", "inProgress", height, (height + aL), ag, 0, 0)
268+[IntegerEntry(aS, aT), StringEntry(R(E, aT), toString(aK.caller)), StringEntry(X(E, aT), as)]
272269 }
273270 else throw("Strict value is not equal to itself.")
274271 }
275272
276273
277274
278-@Callable(aL)
279-func vote (B,Q) = {
280- let aT = M(B)
281- let ax = valueOrErrorMessage(getInteger(aT), c("voting does not exist"))
282- let at = aw(B, ax)
283- if ((at == at))
275+@Callable(aK)
276+func vote (E,P) = {
277+ let aS = L(E)
278+ let aw = valueOrErrorMessage(getInteger(aS), c("voting does not exist"))
279+ let as = av(E, aw)
280+ if ((as == as))
284281 then {
285- let bf = at._2
286- let bg = ak(toString(aL.caller), bf)
287- let aD = N(B, ax, aL.caller)
288- let aA = [if ((getString(aD) == unit))
282+ let be = as._2
283+ let bf = aj(toString(aK.caller), be)
284+ let aC = M(E, aw, aK.caller)
285+ let az = [if ((getString(aC) == unit))
289286 then true
290- else e("You have already voted"), if ((bg > 0))
287+ else e("You have already voted"), if ((bf > 0))
291288 then true
292289 else throw("You'll not have gWX at the end of voting")]
293- if ((aA == aA))
290+ if ((az == az))
294291 then {
295- let aG = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
296- let au = as(aG)
297- let ai = au._9
298- let aj = au._10
299- let bh = if (Q)
300- then $Tuple2((ai + bg), aj)
301- else $Tuple2(ai, (aj + bg))
302- let bi = bh._1
303- let bj = bh._2
304- let bk = Z(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bi, bj)
305- let bl = {
306- let h = getBoolean(G(B, ax))
292+ let aF = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
293+ let at = ar(aF)
294+ let ah = at._9
295+ let ai = at._10
296+ let bg = if (P)
297+ then $Tuple2((ah + bf), ai)
298+ else $Tuple2(ah, (ai + bf))
299+ let bh = bg._1
300+ let bi = bg._2
301+ let bj = Y(at._1, at._2, at._3, at._4, at._5, at._6, at._7, at._8, bh, bi)
302+ let bk = {
303+ let h = getBoolean(D(E, aw))
307304 if ($isInstanceOf(h, "Boolean"))
308305 then {
309- let bm = h
310-[BooleanEntry(H(aL.caller, B, ax), true)]
306+ let bl = h
307+[BooleanEntry(G(aK.caller, E, aw), true)]
311308 }
312309 else if ($isInstanceOf(h, "Unit"))
313310 then nil
314311 else throw("Match error")
315312 }
316- ([StringEntry(aD, P(Q, bg)), StringEntry(Y(B, ax), bk)] ++ bl)
313+ ([StringEntry(aC, O(P, bf)), StringEntry(X(E, aw), bj)] ++ bk)
317314 }
318315 else throw("Strict value is not equal to itself.")
319316 }
322319
323320
324321
325-@Callable(aL)
326-func cancelVote (B) = {
327- let aT = M(B)
328- let ax = valueOrErrorMessage(getInteger(aT), c("voting does not exist"))
329- let aD = N(B, ax, aL.caller)
330- let aE = valueOrErrorMessage(getString(aD), c("you have not voted"))
331- let aF = split(aE, a)
332- let Q = aF[1]
333- let R = parseIntValue(aF[2])
334- let at = aw(B, ax)
335- if ((at == at))
322+@Callable(aK)
323+func cancelVote (E) = {
324+ let aS = L(E)
325+ let aw = valueOrErrorMessage(getInteger(aS), c("voting does not exist"))
326+ let aC = M(E, aw, aK.caller)
327+ let aD = valueOrErrorMessage(getString(aC), c("you have not voted"))
328+ let aE = split(aD, a)
329+ let P = aE[1]
330+ let Q = parseIntValue(aE[2])
331+ let as = av(E, aw)
332+ if ((as == as))
336333 then {
337- let aA = [if (if ((Q == "true"))
334+ let az = [if (if ((P == "true"))
338335 then true
339- else (Q == "false"))
336+ else (P == "false"))
340337 then true
341338 else e("invalid vote")]
342- if ((aA == aA))
339+ if ((az == az))
343340 then {
344- let aG = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
345- let au = as(aG)
346- let ai = au._9
347- let aj = au._10
348- let bn = if ((Q == "true"))
349- then $Tuple2((ai - R), aj)
350- else $Tuple2(ai, (aj - R))
351- let bi = bn._1
352- let bj = bn._2
353- let bk = Z(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bi, bj)
354-[StringEntry(Y(B, ax), bk), DeleteEntry(aD), DeleteEntry(H(aL.caller, B, ax))]
341+ let aF = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
342+ let at = ar(aF)
343+ let ah = at._9
344+ let ai = at._10
345+ let bm = if ((P == "true"))
346+ then $Tuple2((ah - Q), ai)
347+ else $Tuple2(ah, (ai - Q))
348+ let bh = bm._1
349+ let bi = bm._2
350+ let bj = Y(at._1, at._2, at._3, at._4, at._5, at._6, at._7, at._8, bh, bi)
351+[StringEntry(X(E, aw), bj), DeleteEntry(aC), DeleteEntry(G(aK.caller, E, aw))]
355352 }
356353 else throw("Strict value is not equal to itself.")
357354 }
360357
361358
362359
363-@Callable(aL)
364-func finalize (B) = {
365- let aT = M(B)
366- let ax = valueOrElse(getInteger(aT), 0)
367- let bo = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
368- let bp = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
369- let aG = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
370- let au = as(aG)
371- let ad = au._4
372- let ae = au._5
373- let ag = au._7
374- let bq = au._8
375- let ai = au._9
376- let aj = au._10
377- let aA = [if ((ae == "inProgress"))
360+@Callable(aK)
361+func finalize (E) = {
362+ let aS = L(E)
363+ let aw = valueOrElse(getInteger(aS), 0)
364+ let bn = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
365+ let bo = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
366+ let aF = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
367+ let at = ar(aF)
368+ let ac = at._4
369+ let ad = at._5
370+ let af = at._7
371+ let bp = at._8
372+ let ah = at._9
373+ let ai = at._10
374+ let az = [if ((ad == "inProgress"))
378375 then true
379- else e("voting not in progress"), if ((height >= ag))
376+ else e("voting not in progress"), if ((height >= af))
380377 then true
381378 else e("voting not finished")]
382- if ((aA == aA))
379+ if ((az == az))
383380 then {
384- let br = if (((ai + aj) >= bq))
381+ let bq = if (((ah + ai) >= bp))
385382 then "accepted"
386383 else "rejected"
387- let bs = if ((ad == "verification"))
384+ let br = if ((ac == "verification"))
388385 then true
389386 else false
390- let bt = if ((aj > ai))
387+ let bs = if ((ai > ah))
391388 then {
392- let bu = invoke(u, "setVerified", [B, bs], nil)
393- if ((bu == bu))
389+ let bt = invoke(u, "setVerified", [E, br], nil)
390+ if ((bt == bt))
394391 then {
395- let ba = valueOrElse(getInteger(K), 0)
396-[ScriptTransfer(aL.caller, ba, x)]
392+ let aZ = valueOrElse(getInteger(J), 0)
393+[ScriptTransfer(aK.caller, aZ, x)]
397394 }
398395 else throw("Strict value is not equal to itself.")
399396 }
400397 else nil
401- let bk = Z(au._1, au._2, au._3, au._4, br, au._6, au._7, au._8, au._9, au._10)
402- ([StringEntry(Y(B, ax), bk)] ++ bt)
398+ let bj = Y(at._1, at._2, at._3, at._4, bq, at._6, at._7, at._8, at._9, at._10)
399+ ([StringEntry(X(E, aw), bj)] ++ bs)
403400 }
404401 else throw("Strict value is not equal to itself.")
405402 }
406403
407404
408405
409-@Callable(aL)
410-func claimREADONLY (B,C,bv) = {
411- let I = valueOrErrorMessage(addressFromString(bv), c("invalid address"))
412- let bw = getString(G(B, C))
413- let ac = if (isDefined(bw))
414- then aB(I, B, C)
406+@Callable(aK)
407+func claimREADONLY (E,F,bu) = {
408+ let H = valueOrErrorMessage(addressFromString(bu), c("invalid address"))
409+ let bv = getString(D(E, F))
410+ let ab = if (isDefined(bv))
411+ then aA(H, E, F)
415412 else 0
416- $Tuple2(nil, ac)
413+ $Tuple2(nil, ab)
417414 }
418415
419416
420417
421-@Callable(aL)
422-func claim (B,C) = {
423- let bx = aL.caller
424- let by = T(bx, B, C)
425- let bz = getInteger(by)
426- let aA = [if ((bz == unit))
418+@Callable(aK)
419+func claim (E,F) = {
420+ let bw = aK.caller
421+ let bx = S(bw, E, F)
422+ let by = getInteger(bx)
423+ let az = [if ((by == unit))
427424 then true
428425 else e("already claimed")]
429- if ((aA == aA))
426+ if ((az == az))
430427 then {
431- let ac = if ((aB(bx, B, C) > 0))
432- then aB(bx, B, C)
428+ let ab = if ((aA(bw, E, F) > 0))
429+ then aA(bw, E, F)
433430 else e("nothing to claim")
434- let bw = getString(G(B, C))
435- let bA = if (isDefined(bw))
431+ let bv = getString(D(E, F))
432+ let bz = if (isDefined(bv))
436433 then {
437- let bB = fromBase58String(value(bw))
438-[ScriptTransfer(bx, ac, bB), IntegerEntry(by, ac), DeleteEntry(H(bx, B, C))]
434+ let bA = fromBase58String(value(bv))
435+[ScriptTransfer(bw, ab, bA), IntegerEntry(bx, ab), DeleteEntry(G(bw, E, F))]
439436 }
440437 else e("nothing to claim")
441- bA
438+ bz
442439 }
443440 else throw("Strict value is not equal to itself.")
444441 }
445442
446443
447-@Verifier(bC)
448-func bD () = {
449- let bE = {
450- let h = aq()
444+@Verifier(bB)
445+func bC () = {
446+ let bD = {
447+ let h = ap()
451448 if ($isInstanceOf(h, "ByteVector"))
452449 then {
453- let bm = h
454- bm
450+ let bl = h
451+ bl
455452 }
456453 else if ($isInstanceOf(h, "Unit"))
457- then bC.senderPublicKey
454+ then bB.senderPublicKey
458455 else throw("Match error")
459456 }
460- sigVerify(bC.bodyBytes, bC.proofs[0], bE)
457+ sigVerify(bB.bodyBytes, bB.proofs[0], bD)
461458 }
462459
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 func c (d) = makeString(["voting_verified_v2.ride:", d], " ")
99
1010
1111 func e (d) = throw(c(d))
1212
1313
1414 func f (g) = {
1515 let h = g
1616 if ($isInstanceOf(h, "Int"))
1717 then {
1818 let i = h
1919 i
2020 }
2121 else throw("Failed to cast into Integer")
2222 }
2323
2424
2525 func j (k,l) = valueOrElse(getInteger(k, l), 0)
2626
2727
2828 func m (k,l) = valueOrErrorMessage(getInteger(k, l), c((l + " is not defined")))
2929
3030
3131 func n (k,l) = valueOrElse(getString(k, l), "")
3232
3333
3434 func o (k,l) = valueOrErrorMessage(getString(k, l), c((l + " is not defined")))
3535
3636
3737 let p = makeString(["%s", "boostingContract"], a)
3838
3939 let q = makeString(["%s", "emissionContract"], a)
4040
4141 let r = makeString(["%s", "assetsStoreContract"], a)
4242
4343 let s = addressFromStringValue(getStringValue(p))
4444
4545 let t = addressFromStringValue(getStringValue(q))
4646
4747 let u = addressFromStringValue(getStringValue(r))
4848
4949 let v = makeString(["%s", "config"], a)
5050
5151 let w = split(o(t, v), a)[1]
5252
5353 let x = fromBase58String(w)
5454
5555 let y = makeString(["%s%s", "votingThreshold", "add"], a)
5656
5757 let z = makeString(["%s%s", "votingThreshold", "remove"], a)
5858
59-func A (B,C) = makeString(["%s%s%d", "periodLengthAdd", B, toString(C)], a)
59+let A = makeString(["%s", "periodLengthRemove"], a)
60+
61+let B = makeString(["%s", "maxPeriodLength"], a)
62+
63+let C = makeString(["%s", "minPeriodLength"], a)
64+
65+func D (E,F) = makeString(["%s%s%d", "votingRewardAssetId", E, toString(F)], a)
6066
6167
62-let D = makeString(["%s", "periodLengthRemove"], a)
63-
64-let E = makeString(["%s", "maxPeriodLength"], a)
65-
66-let F = makeString(["%s", "minPeriodLength"], a)
67-
68-func G (B,C) = makeString(["%s%s%d", "votingRewardAssetId", B, toString(C)], a)
68+func G (H,E,F) = makeString(["%s%s%s%d", "votingReward", toString(H), E, toString(F)], a)
6969
7070
71-func H (I,B,C) = makeString(["%s%s%s%d", "votingReward", toString(I), B, toString(C)], a)
71+func I (E,F) = makeString(["%s%s%d", "totalVotingReward", E, toString(F)], a)
7272
7373
74-func J (B,C) = makeString(["%s%s%d", "votingReward", B, toString(C)], a)
74+let J = makeString(["%s", "finalizeCallRewardAmount"], a)
75+
76+let K = makeString(["%s", "minSuggestRemoveBalance"], a)
77+
78+func L (E) = makeString(["%s%s", "currentIndex", E], a)
7579
7680
77-let K = makeString(["%s", "finalizeCallRewardAmount"], a)
78-
79-let L = makeString(["%s", "minSuggestRemoveBalance"], a)
80-
81-func M (B) = makeString(["%s%s", "currentIndex", B], a)
81+func M (E,F,N) = makeString(["%s%s%d%s", "vote", E, toString(F), toString(N)], a)
8282
8383
84-func N (B,C,O) = makeString(["%s%s%d%s", "vote", B, toString(C), toString(O)], a)
84+func O (P,Q) = makeString(["%s%d", toString(P), toString(Q)], a)
8585
8686
87-func P (Q,R) = makeString(["%s%d", toString(Q), toString(R)], a)
87+func R (E,F) = makeString(["%s%s%d", "suggestIssuer", E, toString(F)], a)
8888
8989
90-func S (B,C) = makeString(["%s%s%d", "suggestIssuer", B, toString(C)], a)
90+func S (H,E,F) = makeString(["%s%s%s%d", "history", toString(H), E, toString(F)], a)
9191
9292
93-func T (I,B,C) = makeString(["%s%s%s%d", "history", toString(I), B, toString(C)], a)
93+let T = makeString(["%s", "feePerBlock"], a)
94+
95+let U = m(this, T)
96+
97+let V = makeString(["%s", "wxMinForSuggestAddAmountRequired"], a)
98+
99+let W = makeString(["%s", "wxForSuggestRemoveAmountRequired"], a)
100+
101+func X (E,F) = makeString(["%s%s%d", "votingInfo", E, toString(F)], a)
94102
95103
96-let U = makeString(["%s", "feePerBlock"], a)
97-
98-let V = m(this, U)
99-
100-let W = makeString(["%s", "wxMinForSuggestAddAmountRequired"], a)
101-
102-let X = makeString(["%s", "wxForSuggestRemoveAmountRequired"], a)
103-
104-func Y (B,C) = makeString(["%s%s%d", "votingInfo", B, toString(C)], a)
104+func Y (Z,aa,ab,ac,ad,ae,af,ag,ah,ai) = makeString(["%s%s%d%s%s%d%d%d%d%d", toString(Z), aa, toString(ab), ac, ad, toString(ae), toString(af), toString(ag), toString(ah), toString(ai)], a)
105105
106106
107-func Z (aa,ab,ac,ad,ae,af,ag,ah,ai,aj) = makeString(["%s%s%s%d%s%s%d%d%d%d%d", toString(aa), ab, toString(ac), ad, ae, toString(af), toString(ag), toString(ah), toString(ai), toString(aj)], a)
108-
109-
110-func ak (I,al) = {
111- let R = invoke(s, "getUserGwxAmountAtHeightREADONLY", [I, al], nil)
112- f(R)
107+func aj (H,ak) = {
108+ let Q = invoke(s, "getUserGwxAmountAtHeightREADONLY", [H, ak], nil)
109+ f(Q)
113110 }
114111
115112
116-func am () = "%s__managerVaultAddress"
113+func al () = "%s__managerVaultAddress"
117114
118115
119-func an () = "%s__managerPublicKey"
116+func am () = "%s__managerPublicKey"
120117
121118
122-func ao () = {
123- let h = getString(am())
119+func an () = {
120+ let h = getString(al())
124121 if ($isInstanceOf(h, "String"))
125122 then {
126- let ap = h
127- addressFromStringValue(ap)
123+ let ao = h
124+ addressFromStringValue(ao)
128125 }
129126 else this
130127 }
131128
132129
133-func aq () = {
134- let ar = ao()
135- let h = getString(ar, an())
130+func ap () = {
131+ let aq = an()
132+ let h = getString(aq, am())
136133 if ($isInstanceOf(h, "String"))
137134 then {
138- let ap = h
139- fromBase58String(ap)
135+ let ao = h
136+ fromBase58String(ao)
140137 }
141138 else if ($isInstanceOf(h, "Unit"))
142139 then unit
143140 else throw("Match error")
144141 }
145142
146143
147-func as (at) = {
148- let au = split(at, a)
149- let av = au[1]
150- let aa = if ((av == "true"))
144+func ar (as) = {
145+ let at = split(as, a)
146+ let au = at[1]
147+ let Z = if ((au == "true"))
151148 then true
152149 else false
153- let ab = au[2]
154- let ac = parseIntValue(au[3])
155- let ad = au[4]
156- let ae = au[5]
157- let af = parseIntValue(au[6])
158- let ag = parseIntValue(au[7])
159- let ah = parseIntValue(au[8])
160- let ai = parseIntValue(au[9])
161- let aj = parseIntValue(au[10])
162- $Tuple10(aa, ab, ac, ad, ae, af, ag, ah, ai, aj)
150+ let aa = at[2]
151+ let ab = parseIntValue(at[3])
152+ let ac = at[4]
153+ let ad = at[5]
154+ let ae = parseIntValue(at[6])
155+ let af = parseIntValue(at[7])
156+ let ag = parseIntValue(at[8])
157+ let ah = parseIntValue(at[9])
158+ let ai = parseIntValue(at[10])
159+ $Tuple10(Z, aa, ab, ac, ad, ae, af, ag, ah, ai)
163160 }
164161
165162
166-func aw (B,ax) = {
167- let at = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
168- let ay = split(at, a)
169- let ae = ay[5]
170- let ag = valueOrErrorMessage(parseIntValue(ay[7]), c("voting start height not found"))
171- let az = valueOrErrorMessage(getString(S(B, ax)), c("voting issuer not found"))
172- let aA = [if ((ae == "inProgress"))
163+func av (E,aw) = {
164+ let as = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
165+ let ax = split(as, a)
166+ let ad = ax[5]
167+ let af = valueOrErrorMessage(parseIntValue(ax[7]), c("voting start height not found"))
168+ let ay = valueOrErrorMessage(getString(R(E, aw)), c("voting issuer not found"))
169+ let az = [if ((ad == "inProgress"))
173170 then true
174- else e("no voting in progress"), if ((ag > height))
171+ else e("no voting in progress"), if ((af > height))
175172 then true
176173 else e("voting expired")]
177- if ((aA == aA))
178- then $Tuple3(ae, ag, az)
174+ if ((az == az))
175+ then $Tuple3(ad, af, ay)
179176 else throw("Strict value is not equal to itself.")
180177 }
181178
182179
183-func aB (aC,B,C) = {
184- let aD = N(B, C, aC)
185- let aE = valueOrErrorMessage(getString(aD), c("you have not voted"))
186- let aF = split(aE, a)
187- let R = parseIntValue(aF[2])
188- let aG = valueOrErrorMessage(getString(Y(B, C)), c("voting info not found"))
189- let aH = as(aG)
190- let ai = aH._9
191- let aj = aH._10
192- let aI = fraction(R, b, (ai + aj))
193- let aJ = valueOrElse(getInteger(J(B, C)), 0)
194- let aK = fraction(aI, aJ, b, FLOOR)
195- aK
180+func aA (aB,E,F) = {
181+ let aC = M(E, F, aB)
182+ let aD = valueOrErrorMessage(getString(aC), c("you have not voted"))
183+ let aE = split(aD, a)
184+ let Q = parseIntValue(aE[2])
185+ let aF = valueOrErrorMessage(getString(X(E, F)), c("voting info not found"))
186+ let aG = ar(aF)
187+ let ah = aG._9
188+ let ai = aG._10
189+ let aH = fraction(Q, b, (ah + ai))
190+ let aI = valueOrElse(getInteger(I(E, F)), 0)
191+ let aJ = fraction(aH, aI, b, FLOOR)
192+ aJ
196193 }
197194
198195
199-@Callable(aL)
200-func suggestAdd (B,aM,aN) = {
201- let aO = aL.payments[0]
202- let aP = value(aO.assetId)
203- let aQ = value(aO.amount)
204- let aR = getIntegerValue(F)
205- let aS = getIntegerValue(E)
206- let aA = [if (if ((aM >= aR))
207- then (aS >= aM)
196+@Callable(aK)
197+func suggestAdd (E,aL,aM) = {
198+ let aN = aK.payments[0]
199+ let aO = value(aN.assetId)
200+ let aP = value(aN.amount)
201+ let aQ = getIntegerValue(C)
202+ let aR = getIntegerValue(B)
203+ let az = [if (if ((aL >= aQ))
204+ then (aR >= aL)
208205 else false)
209206 then true
210- else e("invalid periodLength"), if ((aQ > (aM * V)))
207+ else e("invalid periodLength"), if ((aP > (aL * U)))
211208 then true
212- else e("not enough wx for given period"), if ((aQ >= getIntegerValue(W)))
209+ else e("not enough wx for given period"), if ((aP >= getIntegerValue(V)))
213210 then true
214211 else e("payment less then min for suggest")]
215- if ((aA == aA))
212+ if ((az == az))
216213 then {
217- let aT = M(B)
218- let ax = getInteger(aT)
219- let aU = if (isDefined(ax))
220- then (value(ax) + 1)
214+ let aS = L(E)
215+ let aw = getInteger(aS)
216+ let aT = if (isDefined(aw))
217+ then (value(aw) + 1)
221218 else 0
222- let aV = if ((size(aL.payments) > 1))
219+ let aU = if ((size(aK.payments) > 1))
223220 then {
224- let aW = aL.payments[1]
225- let aX = toBase58String(value(aW.assetId))
226- let aY = value(aW.amount)
227- $Tuple4(true, aX, aY, [StringEntry(G(B, aU), aX), IntegerEntry(J(B, aU), aY)])
221+ let aV = aK.payments[1]
222+ let aW = toBase58String(value(aV.assetId))
223+ let aX = value(aV.amount)
224+ $Tuple4(true, aW, aX, [StringEntry(D(E, aT), aW), IntegerEntry(I(E, aT), aX)])
228225 }
229226 else $Tuple4(false, "EMPTY", 0, nil)
230- let aa = aV._1
231- let ab = aV._2
232- let ac = aV._3
233- let aZ = aV._4
234- let ah = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
235- let at = Z(aa, ab, ac, "verification", "inProgress", height, (height + aM), ah, 0, 0)
236- let ba = valueOrElse(getInteger(K), 0)
237- let bb = (aQ - ba)
238- let bc = invoke(u, "createOrUpdate", [B, aN, false], nil)
239- if ((bc == bc))
240- then ([IntegerEntry(aT, aU), StringEntry(S(B, aU), toString(aL.caller)), StringEntry(Y(B, aU), at), Burn(aP, bb)] ++ aZ)
227+ let Z = aU._1
228+ let aa = aU._2
229+ let ab = aU._3
230+ let aY = aU._4
231+ let ag = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
232+ let as = Y(Z, aa, ab, "verification", "inProgress", height, (height + aL), ag, 0, 0)
233+ let aZ = valueOrElse(getInteger(J), 0)
234+ let ba = (aP - aZ)
235+ let bb = invoke(u, "createOrUpdate", [E, aM, false], nil)
236+ if ((bb == bb))
237+ then ([IntegerEntry(aS, aT), StringEntry(R(E, aT), toString(aK.caller)), StringEntry(X(E, aT), as), Burn(aO, ba)] ++ aY)
241238 else throw("Strict value is not equal to itself.")
242239 }
243240 else throw("Strict value is not equal to itself.")
244241 }
245242
246243
247244
248-@Callable(aL)
249-func suggestRemove (B) = {
250- let bd = ak(toString(aL.caller), height)
251- let be = getIntegerValue(L)
252- let aO = aL.payments[0]
253- let aP = value(aO.assetId)
254- let aQ = value(aO.amount)
255- let aA = [if ((bd >= be))
245+@Callable(aK)
246+func suggestRemove (E) = {
247+ let bc = aj(toString(aK.caller), height)
248+ let bd = getIntegerValue(K)
249+ let aN = aK.payments[0]
250+ let aO = value(aN.assetId)
251+ let aP = value(aN.amount)
252+ let az = [if ((bc >= bd))
256253 then true
257- else e("not enough gWXes"), if ((aQ >= getIntegerValue(X)))
254+ else e("not enough gWXes"), if ((aP >= getIntegerValue(W)))
258255 then true
259256 else e("payment less then min for suggest")]
260- if ((aA == aA))
257+ if ((az == az))
261258 then {
262- let aT = M(B)
263- let ax = getInteger(aT)
264- let aU = if (isDefined(ax))
265- then (value(ax) + 1)
259+ let aS = L(E)
260+ let aw = getInteger(aS)
261+ let aT = if (isDefined(aw))
262+ then (value(aw) + 1)
266263 else 0
267- let aM = valueOrErrorMessage(getInteger(D), c("periodLengthRemove not set"))
268- let ag = (height + aM)
269- let ah = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
270- let at = Z(false, "EMPTY", 0, "deverification", "inProgress", height, (height + aM), ah, 0, 0)
271-[IntegerEntry(aT, aU), StringEntry(S(B, aU), toString(aL.caller)), StringEntry(Y(B, aU), at)]
264+ let aL = valueOrErrorMessage(getInteger(A), c("periodLengthRemove not set"))
265+ let af = (height + aL)
266+ let ag = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
267+ let as = Y(false, "EMPTY", 0, "deverification", "inProgress", height, (height + aL), ag, 0, 0)
268+[IntegerEntry(aS, aT), StringEntry(R(E, aT), toString(aK.caller)), StringEntry(X(E, aT), as)]
272269 }
273270 else throw("Strict value is not equal to itself.")
274271 }
275272
276273
277274
278-@Callable(aL)
279-func vote (B,Q) = {
280- let aT = M(B)
281- let ax = valueOrErrorMessage(getInteger(aT), c("voting does not exist"))
282- let at = aw(B, ax)
283- if ((at == at))
275+@Callable(aK)
276+func vote (E,P) = {
277+ let aS = L(E)
278+ let aw = valueOrErrorMessage(getInteger(aS), c("voting does not exist"))
279+ let as = av(E, aw)
280+ if ((as == as))
284281 then {
285- let bf = at._2
286- let bg = ak(toString(aL.caller), bf)
287- let aD = N(B, ax, aL.caller)
288- let aA = [if ((getString(aD) == unit))
282+ let be = as._2
283+ let bf = aj(toString(aK.caller), be)
284+ let aC = M(E, aw, aK.caller)
285+ let az = [if ((getString(aC) == unit))
289286 then true
290- else e("You have already voted"), if ((bg > 0))
287+ else e("You have already voted"), if ((bf > 0))
291288 then true
292289 else throw("You'll not have gWX at the end of voting")]
293- if ((aA == aA))
290+ if ((az == az))
294291 then {
295- let aG = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
296- let au = as(aG)
297- let ai = au._9
298- let aj = au._10
299- let bh = if (Q)
300- then $Tuple2((ai + bg), aj)
301- else $Tuple2(ai, (aj + bg))
302- let bi = bh._1
303- let bj = bh._2
304- let bk = Z(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bi, bj)
305- let bl = {
306- let h = getBoolean(G(B, ax))
292+ let aF = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
293+ let at = ar(aF)
294+ let ah = at._9
295+ let ai = at._10
296+ let bg = if (P)
297+ then $Tuple2((ah + bf), ai)
298+ else $Tuple2(ah, (ai + bf))
299+ let bh = bg._1
300+ let bi = bg._2
301+ let bj = Y(at._1, at._2, at._3, at._4, at._5, at._6, at._7, at._8, bh, bi)
302+ let bk = {
303+ let h = getBoolean(D(E, aw))
307304 if ($isInstanceOf(h, "Boolean"))
308305 then {
309- let bm = h
310-[BooleanEntry(H(aL.caller, B, ax), true)]
306+ let bl = h
307+[BooleanEntry(G(aK.caller, E, aw), true)]
311308 }
312309 else if ($isInstanceOf(h, "Unit"))
313310 then nil
314311 else throw("Match error")
315312 }
316- ([StringEntry(aD, P(Q, bg)), StringEntry(Y(B, ax), bk)] ++ bl)
313+ ([StringEntry(aC, O(P, bf)), StringEntry(X(E, aw), bj)] ++ bk)
317314 }
318315 else throw("Strict value is not equal to itself.")
319316 }
320317 else throw("Strict value is not equal to itself.")
321318 }
322319
323320
324321
325-@Callable(aL)
326-func cancelVote (B) = {
327- let aT = M(B)
328- let ax = valueOrErrorMessage(getInteger(aT), c("voting does not exist"))
329- let aD = N(B, ax, aL.caller)
330- let aE = valueOrErrorMessage(getString(aD), c("you have not voted"))
331- let aF = split(aE, a)
332- let Q = aF[1]
333- let R = parseIntValue(aF[2])
334- let at = aw(B, ax)
335- if ((at == at))
322+@Callable(aK)
323+func cancelVote (E) = {
324+ let aS = L(E)
325+ let aw = valueOrErrorMessage(getInteger(aS), c("voting does not exist"))
326+ let aC = M(E, aw, aK.caller)
327+ let aD = valueOrErrorMessage(getString(aC), c("you have not voted"))
328+ let aE = split(aD, a)
329+ let P = aE[1]
330+ let Q = parseIntValue(aE[2])
331+ let as = av(E, aw)
332+ if ((as == as))
336333 then {
337- let aA = [if (if ((Q == "true"))
334+ let az = [if (if ((P == "true"))
338335 then true
339- else (Q == "false"))
336+ else (P == "false"))
340337 then true
341338 else e("invalid vote")]
342- if ((aA == aA))
339+ if ((az == az))
343340 then {
344- let aG = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
345- let au = as(aG)
346- let ai = au._9
347- let aj = au._10
348- let bn = if ((Q == "true"))
349- then $Tuple2((ai - R), aj)
350- else $Tuple2(ai, (aj - R))
351- let bi = bn._1
352- let bj = bn._2
353- let bk = Z(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bi, bj)
354-[StringEntry(Y(B, ax), bk), DeleteEntry(aD), DeleteEntry(H(aL.caller, B, ax))]
341+ let aF = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
342+ let at = ar(aF)
343+ let ah = at._9
344+ let ai = at._10
345+ let bm = if ((P == "true"))
346+ then $Tuple2((ah - Q), ai)
347+ else $Tuple2(ah, (ai - Q))
348+ let bh = bm._1
349+ let bi = bm._2
350+ let bj = Y(at._1, at._2, at._3, at._4, at._5, at._6, at._7, at._8, bh, bi)
351+[StringEntry(X(E, aw), bj), DeleteEntry(aC), DeleteEntry(G(aK.caller, E, aw))]
355352 }
356353 else throw("Strict value is not equal to itself.")
357354 }
358355 else throw("Strict value is not equal to itself.")
359356 }
360357
361358
362359
363-@Callable(aL)
364-func finalize (B) = {
365- let aT = M(B)
366- let ax = valueOrElse(getInteger(aT), 0)
367- let bo = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
368- let bp = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
369- let aG = valueOrErrorMessage(getString(Y(B, ax)), c("voting info not found"))
370- let au = as(aG)
371- let ad = au._4
372- let ae = au._5
373- let ag = au._7
374- let bq = au._8
375- let ai = au._9
376- let aj = au._10
377- let aA = [if ((ae == "inProgress"))
360+@Callable(aK)
361+func finalize (E) = {
362+ let aS = L(E)
363+ let aw = valueOrElse(getInteger(aS), 0)
364+ let bn = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
365+ let bo = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
366+ let aF = valueOrErrorMessage(getString(X(E, aw)), c("voting info not found"))
367+ let at = ar(aF)
368+ let ac = at._4
369+ let ad = at._5
370+ let af = at._7
371+ let bp = at._8
372+ let ah = at._9
373+ let ai = at._10
374+ let az = [if ((ad == "inProgress"))
378375 then true
379- else e("voting not in progress"), if ((height >= ag))
376+ else e("voting not in progress"), if ((height >= af))
380377 then true
381378 else e("voting not finished")]
382- if ((aA == aA))
379+ if ((az == az))
383380 then {
384- let br = if (((ai + aj) >= bq))
381+ let bq = if (((ah + ai) >= bp))
385382 then "accepted"
386383 else "rejected"
387- let bs = if ((ad == "verification"))
384+ let br = if ((ac == "verification"))
388385 then true
389386 else false
390- let bt = if ((aj > ai))
387+ let bs = if ((ai > ah))
391388 then {
392- let bu = invoke(u, "setVerified", [B, bs], nil)
393- if ((bu == bu))
389+ let bt = invoke(u, "setVerified", [E, br], nil)
390+ if ((bt == bt))
394391 then {
395- let ba = valueOrElse(getInteger(K), 0)
396-[ScriptTransfer(aL.caller, ba, x)]
392+ let aZ = valueOrElse(getInteger(J), 0)
393+[ScriptTransfer(aK.caller, aZ, x)]
397394 }
398395 else throw("Strict value is not equal to itself.")
399396 }
400397 else nil
401- let bk = Z(au._1, au._2, au._3, au._4, br, au._6, au._7, au._8, au._9, au._10)
402- ([StringEntry(Y(B, ax), bk)] ++ bt)
398+ let bj = Y(at._1, at._2, at._3, at._4, bq, at._6, at._7, at._8, at._9, at._10)
399+ ([StringEntry(X(E, aw), bj)] ++ bs)
403400 }
404401 else throw("Strict value is not equal to itself.")
405402 }
406403
407404
408405
409-@Callable(aL)
410-func claimREADONLY (B,C,bv) = {
411- let I = valueOrErrorMessage(addressFromString(bv), c("invalid address"))
412- let bw = getString(G(B, C))
413- let ac = if (isDefined(bw))
414- then aB(I, B, C)
406+@Callable(aK)
407+func claimREADONLY (E,F,bu) = {
408+ let H = valueOrErrorMessage(addressFromString(bu), c("invalid address"))
409+ let bv = getString(D(E, F))
410+ let ab = if (isDefined(bv))
411+ then aA(H, E, F)
415412 else 0
416- $Tuple2(nil, ac)
413+ $Tuple2(nil, ab)
417414 }
418415
419416
420417
421-@Callable(aL)
422-func claim (B,C) = {
423- let bx = aL.caller
424- let by = T(bx, B, C)
425- let bz = getInteger(by)
426- let aA = [if ((bz == unit))
418+@Callable(aK)
419+func claim (E,F) = {
420+ let bw = aK.caller
421+ let bx = S(bw, E, F)
422+ let by = getInteger(bx)
423+ let az = [if ((by == unit))
427424 then true
428425 else e("already claimed")]
429- if ((aA == aA))
426+ if ((az == az))
430427 then {
431- let ac = if ((aB(bx, B, C) > 0))
432- then aB(bx, B, C)
428+ let ab = if ((aA(bw, E, F) > 0))
429+ then aA(bw, E, F)
433430 else e("nothing to claim")
434- let bw = getString(G(B, C))
435- let bA = if (isDefined(bw))
431+ let bv = getString(D(E, F))
432+ let bz = if (isDefined(bv))
436433 then {
437- let bB = fromBase58String(value(bw))
438-[ScriptTransfer(bx, ac, bB), IntegerEntry(by, ac), DeleteEntry(H(bx, B, C))]
434+ let bA = fromBase58String(value(bv))
435+[ScriptTransfer(bw, ab, bA), IntegerEntry(bx, ab), DeleteEntry(G(bw, E, F))]
439436 }
440437 else e("nothing to claim")
441- bA
438+ bz
442439 }
443440 else throw("Strict value is not equal to itself.")
444441 }
445442
446443
447-@Verifier(bC)
448-func bD () = {
449- let bE = {
450- let h = aq()
444+@Verifier(bB)
445+func bC () = {
446+ let bD = {
447+ let h = ap()
451448 if ($isInstanceOf(h, "ByteVector"))
452449 then {
453- let bm = h
454- bm
450+ let bl = h
451+ bl
455452 }
456453 else if ($isInstanceOf(h, "Unit"))
457- then bC.senderPublicKey
454+ then bB.senderPublicKey
458455 else throw("Match error")
459456 }
460- sigVerify(bC.bodyBytes, bC.proofs[0], bE)
457+ sigVerify(bB.bodyBytes, bB.proofs[0], bD)
461458 }
462459

github/deemru/w8io/026f985 
137.14 ms