tx · 5AyoAL3cg9orTtSAWhefADJJa6pm59ZivBDxPcZmcsdY

3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE:  -0.02200000 Waves

2023.07.19 12:02 [2672534] smart account 3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE > SELF 0.00000000 Waves

{ "type": 13, "id": "5AyoAL3cg9orTtSAWhefADJJa6pm59ZivBDxPcZmcsdY", "fee": 2200000, "feeAssetId": null, "timestamp": 1689757390274, "version": 2, "chainId": 84, "sender": "3N1BEXuoepNEwqkbeZYKviaLQfvBQV3ibYE", "senderPublicKey": "6t3vrhP1jCmG7CeKBmL8hUibtdP3cMXGC2XtPYEPPC5w", "proofs": [ "3ymDM2pPXrvYVYdBzcJBPk4dhm5bZm9rKU3tiJN1SPnGymfH3kVB4bM6vpK46wa2WByFZgRQYhQ6ruKLiHGLWX6P" ], "script": "base64:BgIrCAISBQoDCAEIEgMKAQgSBAoCCAQSAwoBCBIDCgEIEgUKAwgBCBIECgIIATAACXNlcGFyYXRvcgICX18ABU1VTFQ4AIDC1y8BB3dyYXBFcnIBA21zZwkAuQkCCQDMCAICGHZvdGluZ192ZXJpZmllZF92Mi5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEIdGhyb3dFcnIBA21zZwkAAgEJAQd3cmFwRXJyAQUDbXNnAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECG0ZhaWxlZCB0byBjYXN0IGludG8gSW50ZWdlcgEQZ2V0SW50ZWdlck9yWmVybwIHYWRkcmVzcwNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUHYWRkcmVzcwUDa2V5AAABEGdldEludGVnZXJPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQEHd3JhcEVycgEJAKwCAgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBEGdldFN0cmluZ09yRW1wdHkCB2FkZHJlc3MDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFB2FkZHJlc3MFA2tleQIAAQ9nZXRTdHJpbmdPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUHYWRkcmVzcwUDa2V5CQEHd3JhcEVycgEJAKwCAgUDa2V5Ag8gaXMgbm90IGRlZmluZWQAE2tleUJvb3N0aW5nQ29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAhBib29zdGluZ0NvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgATa2V5RW1pc3Npb25Db250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICEGVtaXNzaW9uQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yABZrZXlBc3NldHNTdG9yZUNvbnRyYWN0CQC5CQIJAMwIAgICJXMJAMwIAgITYXNzZXRzU3RvcmVDb250cmFjdAUDbmlsBQlzZXBhcmF0b3IAEGJvb3N0aW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE2tleUJvb3N0aW5nQ29udHJhY3QAEGVtaXNzaW9uQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFE2tleUVtaXNzaW9uQ29udHJhY3QAE2Fzc2V0c1N0b3JlQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARFAZXh0ck5hdGl2ZSgxMDU4KQEFFmtleUFzc2V0c1N0b3JlQ29udHJhY3QAEWtleUVtaXNzaW9uQ29uZmlnCQC5CQIJAMwIAgICJXMJAMwIAgIGY29uZmlnBQNuaWwFCXNlcGFyYXRvcgAMd3hBc3NldElkU3RyCQCRAwIJALUJAgkBD2dldFN0cmluZ09yRmFpbAIFEGVtaXNzaW9uQ29udHJhY3QFEWtleUVtaXNzaW9uQ29uZmlnBQlzZXBhcmF0b3IAAQAJd3hBc3NldElkCQDZBAEFDHd4QXNzZXRJZFN0cgAVa2V5Vm90aW5nVGhyZXNob2xkQWRkCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg92b3RpbmdUaHJlc2hvbGQJAMwIAgIDYWRkBQNuaWwFCXNlcGFyYXRvcgAYa2V5Vm90aW5nVGhyZXNob2xkUmVtb3ZlCQC5CQIJAMwIAgIEJXMlcwkAzAgCAg92b3RpbmdUaHJlc2hvbGQJAMwIAgIGcmVtb3ZlBQNuaWwFCXNlcGFyYXRvcgAVa2V5UGVyaW9kTGVuZ3RoUmVtb3ZlCQC5CQIJAMwIAgICJXMJAMwIAgIScGVyaW9kTGVuZ3RoUmVtb3ZlBQNuaWwFCXNlcGFyYXRvcgASa2V5TWF4UGVyaW9kTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgIPbWF4UGVyaW9kTGVuZ3RoBQNuaWwFCXNlcGFyYXRvcgASa2V5TWluUGVyaW9kTGVuZ3RoCQC5CQIJAMwIAgICJXMJAMwIAgIPbWluUGVyaW9kTGVuZ3RoBQNuaWwFCXNlcGFyYXRvcgEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIHYXNzZXRJZAVpbmRleAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAhN2b3RpbmdSZXdhcmRBc3NldElkCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IBD2tleVZvdGluZ1Jld2FyZAMLdXNlckFkZHJlc3MHYXNzZXRJZAVpbmRleAkAuQkCCQDMCAICCCVzJXMlcyVkCQDMCAICDHZvdGluZ1Jld2FyZAkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IBFGtleVRvdGFsVm90aW5nUmV3YXJkAgdhc3NldElkBWluZGV4CQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICEXRvdGFsVm90aW5nUmV3YXJkCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAUDbmlsBQlzZXBhcmF0b3IAG2tleUZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAkAuQkCCQDMCAICAiVzCQDMCAICGGZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAUDbmlsBQlzZXBhcmF0b3IAGmtleU1pblN1Z2dlc3RSZW1vdmVCYWxhbmNlCQC5CQIJAMwIAgICJXMJAMwIAgIXbWluU3VnZ2VzdFJlbW92ZUJhbGFuY2UFA25pbAUJc2VwYXJhdG9yAQ9rZXlDdXJyZW50SW5kZXgBB2Fzc2V0SWQJALkJAgkAzAgCAgQlcyVzCQDMCAICDGN1cnJlbnRJbmRleAkAzAgCBQdhc3NldElkBQNuaWwFCXNlcGFyYXRvcgEHa2V5Vm90ZQMHYXNzZXRJZAVpbmRleAZjYWxsZXIJALkJAgkAzAgCAgglcyVzJWQlcwkAzAgCAgR2b3RlCQDMCAIFB2Fzc2V0SWQJAMwIAgkApAMBBQVpbmRleAkAzAgCCQClCAEFBmNhbGxlcgUDbmlsBQlzZXBhcmF0b3IBCXZvdGVWYWx1ZQIHaW5GYXZvcglnd3hBbW91bnQJALkJAgkAzAgCAgQlcyVkCQDMCAIJAKUDAQUHaW5GYXZvcgkAzAgCCQCkAwEFCWd3eEFtb3VudAUDbmlsBQlzZXBhcmF0b3IBEGtleVN1Z2dlc3RJc3N1ZXICB2Fzc2V0SWQFaW5kZXgJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgINc3VnZ2VzdElzc3VlcgkAzAgCBQdhc3NldElkCQDMCAIJAKQDAQUFaW5kZXgFA25pbAUJc2VwYXJhdG9yAQ9rZXlDbGFpbUhpc3RvcnkDC3VzZXJBZGRyZXNzB2Fzc2V0SWQFaW5kZXgJALkJAgkAzAgCAgglcyVzJXMlZAkAzAgCAgdoaXN0b3J5CQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgUHYXNzZXRJZAkAzAgCCQCkAwEFBWluZGV4BQNuaWwFCXNlcGFyYXRvcgAOa2V5RmVlUGVyQmxvY2sJALkJAgkAzAgCAgIlcwkAzAgCAgtmZWVQZXJCbG9jawUDbmlsBQlzZXBhcmF0b3IAC2ZlZVBlckJsb2NrCQEQZ2V0SW50ZWdlck9yRmFpbAIFBHRoaXMFDmtleUZlZVBlckJsb2NrACZrZXlNaW5XeE1pbkZvclN1Z2dlc3RBZGRBbW91bnRSZXF1aXJlZAkAuQkCCQDMCAICAiVzCQDMCAICIHd4TWluRm9yU3VnZ2VzdEFkZEFtb3VudFJlcXVpcmVkBQNuaWwFCXNlcGFyYXRvcgAja2V5V3hGb3JTdWdnZXN0UmVtb3ZlQW1vdW50UmVxdWlyZWQJALkJAgkAzAgCAgIlcwkAzAgCAiB3eEZvclN1Z2dlc3RSZW1vdmVBbW91bnRSZXF1aXJlZAUDbmlsBQlzZXBhcmF0b3IBDWtleVZvdGluZ0luZm8CB2Fzc2V0SWQFaW5kZXgJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIKdm90aW5nSW5mbwkAzAgCBQdhc3NldElkCQDMCAIJAKQDAQUFaW5kZXgFA25pbAUJc2VwYXJhdG9yAQ92b3RpbmdJbmZvVmFsdWUKDWlzUmV3YXJkRXhpc3QNcmV3YXJkQXNzZXRJZAxyZXdhcmRBbW91bnQKdm90aW5nVHlwZQZzdGF0dXMRdm90aW5nU3RhcnRIZWlnaHQPdm90aW5nRW5kSGVpZ2h0C3ZvdGVzUXVvcnVtCHZvdGVzRm9yDHZvdGVzQWdhaW5zdAkAuQkCCQDMCAICFCVzJXMlZCVzJXMlZCVkJWQlZCVkCQDMCAIJAKUDAQUNaXNSZXdhcmRFeGlzdAkAzAgCBQ1yZXdhcmRBc3NldElkCQDMCAIJAKQDAQUMcmV3YXJkQW1vdW50CQDMCAIFCnZvdGluZ1R5cGUJAMwIAgUGc3RhdHVzCQDMCAIJAKQDAQURdm90aW5nU3RhcnRIZWlnaHQJAMwIAgkApAMBBQ92b3RpbmdFbmRIZWlnaHQJAMwIAgkApAMBBQt2b3Rlc1F1b3J1bQkAzAgCCQCkAwEFCHZvdGVzRm9yCQDMCAIJAKQDAQUMdm90ZXNBZ2FpbnN0BQNuaWwFCXNlcGFyYXRvcgENa2V5QXNzZXRJbWFnZQEHYXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgIKYXNzZXRJbWFnZQkAzAgCBQdhc3NldElkBQNuaWwFCXNlcGFyYXRvcgEYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0Agt1c2VyQWRkcmVzcwx0YXJnZXRIZWlnaHQECWd3eEFtb3VudAkA/AcEBRBib29zdGluZ0NvbnRyYWN0AiBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQx0YXJnZXRIZWlnaHQFA25pbAUDbmlsCQEFYXNJbnQBBQlnd3hBbW91bnQBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAhclc19fbWFuYWdlclZhdWx0QWRkcmVzcwETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARxnZXRNYW5hZ2VyVmF1bHRBZGRyZXNzT3JUaGlzAAQHJG1hdGNoMAkAoggBCQEWa2V5TWFuYWdlclZhdWx0QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQERQGV4dHJOYXRpdmUoMTA2MikBBQFzBQR0aGlzARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQTbWFuYWdlclZhdWx0QWRkcmVzcwkBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBEmdldFZvdGluZ0luZm9QYXJ0cwEKdm90aW5nSW5mbwQPdm90aW5nSW5mb1BhcnRzCQC1CQIFCnZvdGluZ0luZm8FCXNlcGFyYXRvcgQQaXNSZXdhcmRFeGlzdFN0cgkAkQMCBQ92b3RpbmdJbmZvUGFydHMAAQQNaXNSZXdhcmRFeGlzdAMJAAACBRBpc1Jld2FyZEV4aXN0U3RyAgR0cnVlBgcEDXJld2FyZEFzc2V0SWQJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAIEDHJld2FyZEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwADBAp2b3RpbmdUeXBlCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAEBAZzdGF0dXMJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAUEEXZvdGluZ1N0YXJ0SGVpZ2h0CQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUPdm90aW5nSW5mb1BhcnRzAAYED3ZvdGluZ0VuZEhlaWdodAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAHBAt2b3Rlc1F1b3J1bQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAIBAh2b3Rlc0ZvcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9QYXJ0cwAJBAx2b3Rlc0FnYWluc3QJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ92b3RpbmdJbmZvUGFydHMACgkAnAoKBQ1pc1Jld2FyZEV4aXN0BQ1yZXdhcmRBc3NldElkBQxyZXdhcmRBbW91bnQFCnZvdGluZ1R5cGUFBnN0YXR1cwURdm90aW5nU3RhcnRIZWlnaHQFD3ZvdGluZ0VuZEhlaWdodAULdm90ZXNRdW9ydW0FCHZvdGVzRm9yBQx2b3Rlc0FnYWluc3QBEXZvdGluZ0V4aXN0Q2hlY2tzAgdhc3NldElkDGN1cnJlbnRJbmRleAQKdm90aW5nSW5mbwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4CQEHd3JhcEVycgECFXZvdGluZyBpbmZvIG5vdCBmb3VuZAQPdm90aW5nSW5mb0FycmF5CQC1CQIFCnZvdGluZ0luZm8FCXNlcGFyYXRvcgQGc3RhdHVzCQCRAwIFD3ZvdGluZ0luZm9BcnJheQAFBA92b3RpbmdFbmRIZWlnaHQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFD3ZvdGluZ0luZm9BcnJheQAHCQEHd3JhcEVycgECHXZvdGluZyBzdGFydCBoZWlnaHQgbm90IGZvdW5kBA1zdWdnZXN0SXNzdWVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBEGtleVN1Z2dlc3RJc3N1ZXICBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQd3cmFwRXJyAQIXdm90aW5nIGlzc3VlciBub3QgZm91bmQEBmNoZWNrcwkAzAgCAwkAAAIFBnN0YXR1cwIKaW5Qcm9ncmVzcwYJAQh0aHJvd0VycgECFW5vIHZvdGluZyBpbiBwcm9ncmVzcwkAzAgCAwkAZgIFD3ZvdGluZ0VuZEhlaWdodAUGaGVpZ2h0BgkBCHRocm93RXJyAQIOdm90aW5nIGV4cGlyZWQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwkAlQoDBQZzdGF0dXMFD3ZvdGluZ0VuZEhlaWdodAUNc3VnZ2VzdElzc3VlcgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPY2FsY3VsYXRlUmV3YXJkAwV2b3Rlcgdhc3NldElkBWluZGV4BAd2b3RlS2V5CQEHa2V5Vm90ZQMFB2Fzc2V0SWQFBWluZGV4BQV2b3RlcgQIbGFzdFZvdGUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBBQd2b3RlS2V5CQEHd3JhcEVycgECEnlvdSBoYXZlIG5vdCB2b3RlZAQNbGFzdFZvdGVQYXJ0cwkAtQkCBQhsYXN0Vm90ZQUJc2VwYXJhdG9yBAlnd3hBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQ1sYXN0Vm90ZVBhcnRzAAIEDXZvdGluZ0luZm9TdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFBWluZGV4CQEHd3JhcEVycgECFXZvdGluZyBpbmZvIG5vdCBmb3VuZAQLdm90aW5nUGFydHMJARJnZXRWb3RpbmdJbmZvUGFydHMBBQ12b3RpbmdJbmZvU3RyBAh2b3Rlc0ZvcggFC3ZvdGluZ1BhcnRzAl85BAx2b3Rlc0FnYWluc3QIBQt2b3RpbmdQYXJ0cwNfMTAEFXBhcnRPZlRoZVRvdGFsVm90ZXNYOAkAawMFCWd3eEFtb3VudAUFTVVMVDgJAGQCBQh2b3Rlc0ZvcgUMdm90ZXNBZ2FpbnN0BBF0b3RhbFZvdGluZ1Jld2FyZAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5VG90YWxWb3RpbmdSZXdhcmQCBQdhc3NldElkBQVpbmRleAAABBF2b3RlclJld2FyZEFtb3VudAkAbgQFFXBhcnRPZlRoZVRvdGFsVm90ZXNYOAURdG90YWxWb3RpbmdSZXdhcmQFBU1VTFQ4BQVGTE9PUgURdm90ZXJSZXdhcmRBbW91bnQHAWkBCnN1Z2dlc3RBZGQDB2Fzc2V0SWQMcGVyaW9kTGVuZ3RoCmFzc2V0SW1hZ2UECXd4UGF5bWVudAkAkQMCCAUBaQhwYXltZW50cwAABBB3eFBheW1lbnRBc3NldElkCQEFdmFsdWUBCAUJd3hQYXltZW50B2Fzc2V0SWQED3d4UGF5bWVudEFtb3VudAkBBXZhbHVlAQgFCXd4UGF5bWVudAZhbW91bnQED21pblBlcmlvZExlbmd0aAkBEUBleHRyTmF0aXZlKDEwNTUpAQUSa2V5TWluUGVyaW9kTGVuZ3RoBA9tYXhQZXJpb2RMZW5ndGgJARFAZXh0ck5hdGl2ZSgxMDU1KQEFEmtleU1heFBlcmlvZExlbmd0aAQPdG9rZW5Jc1ZlcmlmaWVkCgABQAkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AhJpc1ZlcmlmaWVkUkVBRE9OTFkJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EBmNoZWNrcwkAzAgCAwMJAGcCBQxwZXJpb2RMZW5ndGgFD21pblBlcmlvZExlbmd0aAkAZwIFD21heFBlcmlvZExlbmd0aAUMcGVyaW9kTGVuZ3RoBwYJAQh0aHJvd0VycgECFGludmFsaWQgcGVyaW9kTGVuZ3RoCQDMCAIDCQAAAgUPdG9rZW5Jc1ZlcmlmaWVkBwYJAQh0aHJvd0VycgECFnRva2VuIGFscmVhZHkgdmVyaWZpZWQJAMwIAgMJAGYCBQ93eFBheW1lbnRBbW91bnQJAGgCBQxwZXJpb2RMZW5ndGgFC2ZlZVBlckJsb2NrBgkBCHRocm93RXJyAQIebm90IGVub3VnaCB3eCBmb3IgZ2l2ZW4gcGVyaW9kCQDMCAIDCQBnAgUPd3hQYXltZW50QW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBBSZrZXlNaW5XeE1pbkZvclN1Z2dlc3RBZGRBbW91bnRSZXF1aXJlZAYJAQh0aHJvd0VycgECIXBheW1lbnQgbGVzcyB0aGVuIG1pbiBmb3Igc3VnZ2VzdAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA9jdXJyZW50SW5kZXhLZXkJAQ9rZXlDdXJyZW50SW5kZXgBBQdhc3NldElkBAxjdXJyZW50SW5kZXgJAJ8IAQUPY3VycmVudEluZGV4S2V5BAhuZXdJbmRleAMJAQlpc0RlZmluZWQBBQxjdXJyZW50SW5kZXgJAGQCCQEFdmFsdWUBBQxjdXJyZW50SW5kZXgAAQAABAskdDA4Nzg0OTQyNAMJAGYCCQCQAwEIBQFpCHBheW1lbnRzAAEEE3ZvdGluZ1Jld2FyZFBheW1lbnQJAJEDAggFAWkIcGF5bWVudHMAAQQadm90aW5nUmV3YXJkUGF5bWVudEFzc2V0SWQJANgEAQkBBXZhbHVlAQgFE3ZvdGluZ1Jld2FyZFBheW1lbnQHYXNzZXRJZAQZdm90aW5nUmV3YXJkUGF5bWVudEFtb3VudAkBBXZhbHVlAQgFE3ZvdGluZ1Jld2FyZFBheW1lbnQGYW1vdW50CQCWCgQGBRp2b3RpbmdSZXdhcmRQYXltZW50QXNzZXRJZAUZdm90aW5nUmV3YXJkUGF5bWVudEFtb3VudAkAzAgCCQELU3RyaW5nRW50cnkCCQEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIFB2Fzc2V0SWQFCG5ld0luZGV4BRp2b3RpbmdSZXdhcmRQYXltZW50QXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFGtleVRvdGFsVm90aW5nUmV3YXJkAgUHYXNzZXRJZAUIbmV3SW5kZXgFGXZvdGluZ1Jld2FyZFBheW1lbnRBbW91bnQFA25pbAkAlgoEBwIFRU1QVFkAAAUDbmlsBA1pc1Jld2FyZEV4aXN0CAULJHQwODc4NDk0MjQCXzEEDXJld2FyZEFzc2V0SWQIBQskdDA4Nzg0OTQyNAJfMgQMcmV3YXJkQW1vdW50CAULJHQwODc4NDk0MjQCXzMEE3ZvdGluZ1Jld2FyZEFjdGlvbnMIBQskdDA4Nzg0OTQyNAJfNAQLdm90ZXNRdW9ydW0JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRVrZXlWb3RpbmdUaHJlc2hvbGRBZGQJAQd3cmFwRXJyAQIadm90aW5nVGhyZXNob2xkQWRkIG5vdCBzZXQECnZvdGluZ0luZm8JAQ92b3RpbmdJbmZvVmFsdWUKBQ1pc1Jld2FyZEV4aXN0BQ1yZXdhcmRBc3NldElkBQxyZXdhcmRBbW91bnQCDHZlcmlmaWNhdGlvbgIKaW5Qcm9ncmVzcwUGaGVpZ2h0CQBkAgUGaGVpZ2h0BQxwZXJpb2RMZW5ndGgFC3ZvdGVzUXVvcnVtAAAAAAQYZmluYWxpemVDYWxsUmV3YXJkQW1vdW50CQERQGV4dHJOYXRpdmUoMTA1NSkBBRtrZXlGaW5hbGl6ZUNhbGxSZXdhcmRBbW91bnQEDGJ1cm5XeEFtb3VudAkAZQIFD3d4UGF5bWVudEFtb3VudAUYZmluYWxpemVDYWxsUmV3YXJkQW1vdW50CQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFD2N1cnJlbnRJbmRleEtleQUIbmV3SW5kZXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVN1Z2dlc3RJc3N1ZXICBQdhc3NldElkBQhuZXdJbmRleAkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQhuZXdJbmRleAUKdm90aW5nSW5mbwkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5QXNzZXRJbWFnZQEFB2Fzc2V0SWQFCmFzc2V0SW1hZ2UJAMwIAgkBBEJ1cm4CBRB3eFBheW1lbnRBc3NldElkBQxidXJuV3hBbW91bnQFA25pbAUTdm90aW5nUmV3YXJkQWN0aW9ucwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ1zdWdnZXN0UmVtb3ZlAQdhc3NldElkBA5nd3hBbW91bnRBdE5vdwkBGGdldFVzZXJHd3hBbW91bnRBdEhlaWdodAIJAKUIAQgFAWkGY2FsbGVyBQZoZWlnaHQEF21pblN1Z2dlc3RSZW1vdmVCYWxhbmNlCQERQGV4dHJOYXRpdmUoMTA1NSkBBRprZXlNaW5TdWdnZXN0UmVtb3ZlQmFsYW5jZQQJd3hQYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEEHd4UGF5bWVudEFzc2V0SWQJAQV2YWx1ZQEIBQl3eFBheW1lbnQHYXNzZXRJZAQPd3hQYXltZW50QW1vdW50CQEFdmFsdWUBCAUJd3hQYXltZW50BmFtb3VudAQPdG9rZW5Jc1ZlcmlmaWVkCgABQAkA/AcEBRNhc3NldHNTdG9yZUNvbnRyYWN0AhJpc1ZlcmlmaWVkUkVBRE9OTFkJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIHQm9vbGVhbgUBQAkAAgEJAKwCAgkAAwEFAUACHCBjb3VsZG4ndCBiZSBjYXN0IHRvIEJvb2xlYW4EBmNoZWNrcwkAzAgCAwUPdG9rZW5Jc1ZlcmlmaWVkBgkBCHRocm93RXJyAQISdG9rZW4gbm90IHZlcmlmaWVkCQDMCAIDCQBnAgUOZ3d4QW1vdW50QXROb3cFF21pblN1Z2dlc3RSZW1vdmVCYWxhbmNlBgkBCHRocm93RXJyAQIQbm90IGVub3VnaCBnV1hlcwkAzAgCAwkAZwIFD3d4UGF5bWVudEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQUja2V5V3hGb3JTdWdnZXN0UmVtb3ZlQW1vdW50UmVxdWlyZWQGCQEIdGhyb3dFcnIBAiFwYXltZW50IGxlc3MgdGhlbiBtaW4gZm9yIHN1Z2dlc3QFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQPY3VycmVudEluZGV4S2V5CQEPa2V5Q3VycmVudEluZGV4AQUHYXNzZXRJZAQMY3VycmVudEluZGV4CQCfCAEFD2N1cnJlbnRJbmRleEtleQQIbmV3SW5kZXgDCQEJaXNEZWZpbmVkAQUMY3VycmVudEluZGV4CQBkAgkBBXZhbHVlAQUMY3VycmVudEluZGV4AAEAAAQMcGVyaW9kTGVuZ3RoCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUVa2V5UGVyaW9kTGVuZ3RoUmVtb3ZlCQEHd3JhcEVycgECGnBlcmlvZExlbmd0aFJlbW92ZSBub3Qgc2V0BA92b3RpbmdFbmRIZWlnaHQJAGQCBQZoZWlnaHQFDHBlcmlvZExlbmd0aAQLdm90ZXNRdW9ydW0JARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBBRhrZXlWb3RpbmdUaHJlc2hvbGRSZW1vdmUJAQd3cmFwRXJyAQIddm90aW5nVGhyZXNob2xkUmVtb3ZlIG5vdCBzZXQECnZvdGluZ0luZm8JAQ92b3RpbmdJbmZvVmFsdWUKBwIFRU1QVFkAAAIOZGV2ZXJpZmljYXRpb24CCmluUHJvZ3Jlc3MFBmhlaWdodAkAZAIFBmhlaWdodAUMcGVyaW9kTGVuZ3RoBQt2b3Rlc1F1b3J1bQAAAAAEE3NldEFzc2V0SW1hZ2VBY3Rpb24EByRtYXRjaDAJAKIIAQkBDWtleUFzc2V0SW1hZ2UBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUDbmlsAwkAAQIFByRtYXRjaDACBFVuaXQEFWFzc2V0c1N0b3JlQXNzZXRJbWFnZQoAAUAJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAIUZ2V0QXNzZXRMb2dvUkVBRE9OTFkJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlBc3NldEltYWdlAQUHYXNzZXRJZAUVYXNzZXRzU3RvcmVBc3NldEltYWdlBQNuaWwJAAIBAgtNYXRjaCBlcnJvcgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ9jdXJyZW50SW5kZXhLZXkFCG5ld0luZGV4CQDMCAIJAQtTdHJpbmdFbnRyeQIJARBrZXlTdWdnZXN0SXNzdWVyAgUHYXNzZXRJZAUIbmV3SW5kZXgJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUIbmV3SW5kZXgFCnZvdGluZ0luZm8FA25pbAUTc2V0QXNzZXRJbWFnZUFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQR2b3RlAgdhc3NldElkB2luRmF2b3IED2N1cnJlbnRJbmRleEtleQkBD2tleUN1cnJlbnRJbmRleAEFB2Fzc2V0SWQEDGN1cnJlbnRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFD2N1cnJlbnRJbmRleEtleQkBB3dyYXBFcnIBAhV2b3RpbmcgZG9lcyBub3QgZXhpc3QECnZvdGluZ0luZm8JARF2b3RpbmdFeGlzdENoZWNrcwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAMJAAACBQp2b3RpbmdJbmZvBQp2b3RpbmdJbmZvBBZjdXJyZW50Vm90aW5nRW5kSGVpZ2h0CAUKdm90aW5nSW5mbwJfMgQOZ3d4QW1vdW50QXRFbmQJARhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQCCQClCAEIBQFpBmNhbGxlcgUWY3VycmVudFZvdGluZ0VuZEhlaWdodAQHdm90ZUtleQkBB2tleVZvdGUDBQdhc3NldElkBQxjdXJyZW50SW5kZXgIBQFpBmNhbGxlcgQGY2hlY2tzCQDMCAIDCQAAAgkAoggBBQd2b3RlS2V5BQR1bml0BgkBCHRocm93RXJyAQIWWW91IGhhdmUgYWxyZWFkeSB2b3RlZAkAzAgCAwkAZgIFDmd3eEFtb3VudEF0RW5kAAAGCQACAQIoWW91J2xsIG5vdCBoYXZlIGdXWCBhdCB0aGUgZW5kIG9mIHZvdGluZwUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA12b3RpbmdJbmZvU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQd3cmFwRXJyAQIVdm90aW5nIGluZm8gbm90IGZvdW5kBA92b3RpbmdJbmZvUGFydHMJARJnZXRWb3RpbmdJbmZvUGFydHMBBQ12b3RpbmdJbmZvU3RyBAh2b3Rlc0ZvcggFD3ZvdGluZ0luZm9QYXJ0cwJfOQQMdm90ZXNBZ2FpbnN0CAUPdm90aW5nSW5mb1BhcnRzA18xMAQNJHQwMTMwODAxMzI0MQMFB2luRmF2b3IJAJQKAgkAZAIFCHZvdGVzRm9yBQ5nd3hBbW91bnRBdEVuZAUMdm90ZXNBZ2FpbnN0CQCUCgIFCHZvdGVzRm9yCQBkAgUMdm90ZXNBZ2FpbnN0BQ5nd3hBbW91bnRBdEVuZAQLbmV3Vm90ZXNGb3IIBQ0kdDAxMzA4MDEzMjQxAl8xBA9uZXdWb3Rlc0FnYWluc3QIBQ0kdDAxMzA4MDEzMjQxAl8yBBJuZXdWb3RpbmdJbmZvVmFsdWUJAQ92b3RpbmdJbmZvVmFsdWUKCAUPdm90aW5nSW5mb1BhcnRzAl8xCAUPdm90aW5nSW5mb1BhcnRzAl8yCAUPdm90aW5nSW5mb1BhcnRzAl8zCAUPdm90aW5nSW5mb1BhcnRzAl80CAUPdm90aW5nSW5mb1BhcnRzAl81CAUPdm90aW5nSW5mb1BhcnRzAl82CAUPdm90aW5nSW5mb1BhcnRzAl83CAUPdm90aW5nSW5mb1BhcnRzAl84BQtuZXdWb3Rlc0ZvcgUPbmV3Vm90ZXNBZ2FpbnN0BBJ2b3RpbmdSZXdhcmRBY3Rpb24EByRtYXRjaDAJAKIIAQkBFmtleVZvdGluZ1Jld2FyZEFzc2V0SWQCBQdhc3NldElkBQxjdXJyZW50SW5kZXgDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAJwawUHJG1hdGNoMAkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5Vm90aW5nUmV3YXJkAwgFAWkGY2FsbGVyBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQl2b3RlVmFsdWUCBQdpbkZhdm9yBQ5nd3hBbW91bnRBdEVuZAUDbmlsAwkAAQIFByRtYXRjaDACBFVuaXQFA25pbAkAAgECC01hdGNoIGVycm9yCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgUHdm90ZUtleQkBCXZvdGVWYWx1ZQIFB2luRmF2b3IFDmd3eEFtb3VudEF0RW5kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4BRJuZXdWb3RpbmdJbmZvVmFsdWUFA25pbAUSdm90aW5nUmV3YXJkQWN0aW9uCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCmNhbmNlbFZvdGUBB2Fzc2V0SWQED2N1cnJlbnRJbmRleEtleQkBD2tleUN1cnJlbnRJbmRleAEFB2Fzc2V0SWQEDGN1cnJlbnRJbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFD2N1cnJlbnRJbmRleEtleQkBB3dyYXBFcnIBAhV2b3RpbmcgZG9lcyBub3QgZXhpc3QEB3ZvdGVLZXkJAQdrZXlWb3RlAwUHYXNzZXRJZAUMY3VycmVudEluZGV4CAUBaQZjYWxsZXIECGxhc3RWb3RlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUHdm90ZUtleQkBB3dyYXBFcnIBAhJ5b3UgaGF2ZSBub3Qgdm90ZWQEDWxhc3RWb3RlUGFydHMJALUJAgUIbGFzdFZvdGUFCXNlcGFyYXRvcgQHaW5GYXZvcgkAkQMCBQ1sYXN0Vm90ZVBhcnRzAAEECWd3eEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDWxhc3RWb3RlUGFydHMAAgQKdm90aW5nSW5mbwkBEXZvdGluZ0V4aXN0Q2hlY2tzAgUHYXNzZXRJZAUMY3VycmVudEluZGV4AwkAAAIFCnZvdGluZ0luZm8FCnZvdGluZ0luZm8EBmNoZWNrcwkAzAgCAwMJAAACBQdpbkZhdm9yAgR0cnVlBgkAAAIFB2luRmF2b3ICBWZhbHNlBgkBCHRocm93RXJyAQIMaW52YWxpZCB2b3RlBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDXZvdGluZ0luZm9TdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAoggBCQENa2V5Vm90aW5nSW5mbwIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAkBB3dyYXBFcnIBAhV2b3RpbmcgaW5mbyBub3QgZm91bmQED3ZvdGluZ0luZm9QYXJ0cwkBEmdldFZvdGluZ0luZm9QYXJ0cwEFDXZvdGluZ0luZm9TdHIECHZvdGVzRm9yCAUPdm90aW5nSW5mb1BhcnRzAl85BAx2b3Rlc0FnYWluc3QIBQ92b3RpbmdJbmZvUGFydHMDXzEwBA0kdDAxNDg2NjE1MDI3AwkAAAIFB2luRmF2b3ICBHRydWUJAJQKAgkAZQIFCHZvdGVzRm9yBQlnd3hBbW91bnQFDHZvdGVzQWdhaW5zdAkAlAoCBQh2b3Rlc0ZvcgkAZQIFDHZvdGVzQWdhaW5zdAUJZ3d4QW1vdW50BAtuZXdWb3Rlc0ZvcggFDSR0MDE0ODY2MTUwMjcCXzEED25ld1ZvdGVzQWdhaW5zdAgFDSR0MDE0ODY2MTUwMjcCXzIEEm5ld1ZvdGluZ0luZm9WYWx1ZQkBD3ZvdGluZ0luZm9WYWx1ZQoIBQ92b3RpbmdJbmZvUGFydHMCXzEIBQ92b3RpbmdJbmZvUGFydHMCXzIIBQ92b3RpbmdJbmZvUGFydHMCXzMIBQ92b3RpbmdJbmZvUGFydHMCXzQIBQ92b3RpbmdJbmZvUGFydHMCXzUIBQ92b3RpbmdJbmZvUGFydHMCXzYIBQ92b3RpbmdJbmZvUGFydHMCXzcIBQ92b3RpbmdJbmZvUGFydHMCXzgFC25ld1ZvdGVzRm9yBQ9uZXdWb3Rlc0FnYWluc3QJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgFEm5ld1ZvdGluZ0luZm9WYWx1ZQkAzAgCCQELRGVsZXRlRW50cnkBBQd2b3RlS2V5CQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlWb3RpbmdSZXdhcmQDCAUBaQZjYWxsZXIFB2Fzc2V0SWQFDGN1cnJlbnRJbmRleAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCGZpbmFsaXplAQdhc3NldElkBA9jdXJyZW50SW5kZXhLZXkJAQ9rZXlDdXJyZW50SW5kZXgBBQdhc3NldElkBAxjdXJyZW50SW5kZXgJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUPY3VycmVudEluZGV4S2V5AAAEEnZvdGluZ1RocmVzaG9sZEFkZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFFWtleVZvdGluZ1RocmVzaG9sZEFkZAkBB3dyYXBFcnIBAhp2b3RpbmdUaHJlc2hvbGRBZGQgbm90IHNldAQVdm90aW5nVGhyZXNob2xkUmVtb3ZlCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQUYa2V5Vm90aW5nVGhyZXNob2xkUmVtb3ZlCQEHd3JhcEVycgECHXZvdGluZ1RocmVzaG9sZFJlbW92ZSBub3Qgc2V0BA12b3RpbmdJbmZvU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBDWtleVZvdGluZ0luZm8CBQdhc3NldElkBQxjdXJyZW50SW5kZXgJAQd3cmFwRXJyAQIVdm90aW5nIGluZm8gbm90IGZvdW5kBA92b3RpbmdJbmZvUGFydHMJARJnZXRWb3RpbmdJbmZvUGFydHMBBQ12b3RpbmdJbmZvU3RyBAp2b3RpbmdUeXBlCAUPdm90aW5nSW5mb1BhcnRzAl80BAZzdGF0dXMIBQ92b3RpbmdJbmZvUGFydHMCXzUED3ZvdGluZ0VuZEhlaWdodAgFD3ZvdGluZ0luZm9QYXJ0cwJfNwQMdm90aW5nUXVvcnVtCAUPdm90aW5nSW5mb1BhcnRzAl84BAh2b3Rlc0ZvcggFD3ZvdGluZ0luZm9QYXJ0cwJfOQQMdm90ZXNBZ2FpbnN0CAUPdm90aW5nSW5mb1BhcnRzA18xMAQGY2hlY2tzCQDMCAIDCQAAAgUGc3RhdHVzAgppblByb2dyZXNzBgkBCHRocm93RXJyAQIWdm90aW5nIG5vdCBpbiBwcm9ncmVzcwkAzAgCAwkAZwIFBmhlaWdodAUPdm90aW5nRW5kSGVpZ2h0BgkBCHRocm93RXJyAQITdm90aW5nIG5vdCBmaW5pc2hlZAkAzAgCAwkBCWlzRGVmaW5lZAEJAKIIAQkBDWtleUFzc2V0SW1hZ2UBBQdhc3NldElkBgkBCHRocm93RXJyAQITYXNzZXQgaW1hZ2Ugbm90IHNldAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBA52b3RpbmdBY2NlcHRlZAMDCQBnAgkAZAIFCHZvdGVzRm9yBQx2b3Rlc0FnYWluc3QFDHZvdGluZ1F1b3J1bQkAZgIFCHZvdGVzRm9yBQx2b3Rlc0FnYWluc3QHBgcECW5ld1N0YXR1cwMFDnZvdGluZ0FjY2VwdGVkAghhY2NlcHRlZAIIcmVqZWN0ZWQECmFzc2V0SW1hZ2UJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQ1rZXlBc3NldEltYWdlAQUHYXNzZXRJZAQQaXNWb3RpbmdBY2NlcHRlZAMFDnZvdGluZ0FjY2VwdGVkBBV2b3RpbmdBY2NlcHRlZEludm9rZXMDCQAAAgUKdm90aW5nVHlwZQIMdmVyaWZpY2F0aW9uCQD8BwQFE2Fzc2V0c1N0b3JlQ29udHJhY3QCDmNyZWF0ZU9yVXBkYXRlCQDMCAIFB2Fzc2V0SWQJAMwIAgUKYXNzZXRJbWFnZQkAzAgCBgUDbmlsBQNuaWwJAPwHBAUTYXNzZXRzU3RvcmVDb250cmFjdAILc2V0VmVyaWZpZWQJAMwIAgUHYXNzZXRJZAkAzAgCBwUDbmlsBQNuaWwFFXZvdGluZ0FjY2VwdGVkSW52b2tlcwUDbmlsAwkAAAIFEGlzVm90aW5nQWNjZXB0ZWQFEGlzVm90aW5nQWNjZXB0ZWQEEm5ld1ZvdGluZ0luZm9WYWx1ZQkBD3ZvdGluZ0luZm9WYWx1ZQoIBQ92b3RpbmdJbmZvUGFydHMCXzEIBQ92b3RpbmdJbmZvUGFydHMCXzIIBQ92b3RpbmdJbmZvUGFydHMCXzMIBQ92b3RpbmdJbmZvUGFydHMCXzQFCW5ld1N0YXR1cwgFD3ZvdGluZ0luZm9QYXJ0cwJfNggFD3ZvdGluZ0luZm9QYXJ0cwJfNwgFD3ZvdGluZ0luZm9QYXJ0cwJfOAgFD3ZvdGluZ0luZm9QYXJ0cwJfOQgFD3ZvdGluZ0luZm9QYXJ0cwNfMTAEGGZpbmFsaXplQ2FsbFJld2FyZEFtb3VudAkBEUBleHRyTmF0aXZlKDEwNTUpAQUba2V5RmluYWxpemVDYWxsUmV3YXJkQW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlWb3RpbmdJbmZvAgUHYXNzZXRJZAUMY3VycmVudEluZGV4BRJuZXdWb3RpbmdJbmZvVmFsdWUJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBRhmaW5hbGl6ZUNhbGxSZXdhcmRBbW91bnQFCXd4QXNzZXRJZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNsYWltUkVBRE9OTFkDB2Fzc2V0SWQFaW5kZXgOdXNlckFkZHJlc3NTdHIEC3VzZXJBZGRyZXNzCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUOdXNlckFkZHJlc3NTdHIJAQd3cmFwRXJyAQIPaW52YWxpZCBhZGRyZXNzBBZ2b3RpbmdSZXdhcmRBc3NldElkU3RyCQCiCAEJARZrZXlWb3RpbmdSZXdhcmRBc3NldElkAgUHYXNzZXRJZAUFaW5kZXgEDHJld2FyZEFtb3VudAMJAQlpc0RlZmluZWQBBRZ2b3RpbmdSZXdhcmRBc3NldElkU3RyCQEPY2FsY3VsYXRlUmV3YXJkAwULdXNlckFkZHJlc3MFB2Fzc2V0SWQFBWluZGV4AAAJAJQKAgUDbmlsBQxyZXdhcmRBbW91bnQBaQEFY2xhaW0CB2Fzc2V0SWQFaW5kZXgEDWNhbGxlckFkZHJlc3MIBQFpBmNhbGxlcgQPY2xhaW1IaXN0b3J5S2V5CQEPa2V5Q2xhaW1IaXN0b3J5AwUNY2FsbGVyQWRkcmVzcwUHYXNzZXRJZAUFaW5kZXgEDGNsYWltSGlzdG9yeQkAnwgBBQ9jbGFpbUhpc3RvcnlLZXkEBmNoZWNrcwkAzAgCAwkAAAIFDGNsYWltSGlzdG9yeQUEdW5pdAYJAQh0aHJvd0VycgECD2FscmVhZHkgY2xhaW1lZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAxyZXdhcmRBbW91bnQDCQBmAgkBD2NhbGN1bGF0ZVJld2FyZAMFDWNhbGxlckFkZHJlc3MFB2Fzc2V0SWQFBWluZGV4AAAJAQ9jYWxjdWxhdGVSZXdhcmQDBQ1jYWxsZXJBZGRyZXNzBQdhc3NldElkBQVpbmRleAkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQQWdm90aW5nUmV3YXJkQXNzZXRJZFN0cgkAoggBCQEWa2V5Vm90aW5nUmV3YXJkQXNzZXRJZAIFB2Fzc2V0SWQFBWluZGV4BAxyZXdhcmRBY3Rpb24DCQEJaXNEZWZpbmVkAQUWdm90aW5nUmV3YXJkQXNzZXRJZFN0cgQTdm90aW5nUmV3YXJkQXNzZXRJZAkA2QQBCQEFdmFsdWUBBRZ2b3RpbmdSZXdhcmRBc3NldElkU3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFDWNhbGxlckFkZHJlc3MFDHJld2FyZEFtb3VudAUTdm90aW5nUmV3YXJkQXNzZXRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgUPY2xhaW1IaXN0b3J5S2V5BQxyZXdhcmRBbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleVZvdGluZ1Jld2FyZAMFDWNhbGxlckFkZHJlc3MFB2Fzc2V0SWQFBWluZGV4BQNuaWwJAQh0aHJvd0VycgECEG5vdGhpbmcgdG8gY2xhaW0FDHJld2FyZEFjdGlvbgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleRRvZe4=", "height": 2672534, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: SBXWQscafj5XReTv7L6NKZdz4Tf6xb747iJbTymP9Ss Next: 8ux5duFFnhV5CTJ3bKF9CsryYopAcqyfWniNtHCTvbPH Diff:
OldNewDifferences
281281 let af = (height + aM)
282282 let ag = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
283283 let at = Y(false, "EMPTY", 0, "deverification", "inProgress", height, (height + aM), ag, 0, 0)
284-[IntegerEntry(aV, aW), StringEntry(R(E, aW), toString(aL.caller)), StringEntry(X(E, aW), at)]
284+ let bg = {
285+ let h = getString(aj(E))
286+ if ($isInstanceOf(h, "String"))
287+ then {
288+ let ap = h
289+ nil
290+ }
291+ else if ($isInstanceOf(h, "Unit"))
292+ then {
293+ let bh = {
294+ let aU = invoke(u, "getAssetLogoREADONLY", [E], nil)
295+ if ($isInstanceOf(aU, "String"))
296+ then aU
297+ else throw(($getType(aU) + " couldn't be cast to String"))
298+ }
299+[StringEntry(aj(E), bh)]
300+ }
301+ else throw("Match error")
302+ }
303+ ([IntegerEntry(aV, aW), StringEntry(R(E, aW), toString(aL.caller)), StringEntry(X(E, aW), at)] ++ bg)
285304 }
286305 else throw("Strict value is not equal to itself.")
287306 }
295314 let at = aw(E, ax)
296315 if ((at == at))
297316 then {
298- let bg = at._2
299- let bh = ak(toString(aL.caller), bg)
317+ let bi = at._2
318+ let bj = ak(toString(aL.caller), bi)
300319 let aD = M(E, ax, aL.caller)
301320 let aA = [if ((getString(aD) == unit))
302321 then true
303- else e("You have already voted"), if ((bh > 0))
322+ else e("You have already voted"), if ((bj > 0))
304323 then true
305324 else throw("You'll not have gWX at the end of voting")]
306325 if ((aA == aA))
309328 let au = as(aG)
310329 let ah = au._9
311330 let ai = au._10
312- let bi = if (P)
313- then $Tuple2((ah + bh), ai)
314- else $Tuple2(ah, (ai + bh))
315- let bj = bi._1
316- let bk = bi._2
317- let bl = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bj, bk)
318- let bm = {
331+ let bk = if (P)
332+ then $Tuple2((ah + bj), ai)
333+ else $Tuple2(ah, (ai + bj))
334+ let bl = bk._1
335+ let bm = bk._2
336+ let bn = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bl, bm)
337+ let bo = {
319338 let h = getString(D(E, ax))
320339 if ($isInstanceOf(h, "String"))
321340 then {
322- let bn = h
323-[StringEntry(G(aL.caller, E, ax), O(P, bh))]
341+ let bp = h
342+[StringEntry(G(aL.caller, E, ax), O(P, bj))]
324343 }
325344 else if ($isInstanceOf(h, "Unit"))
326345 then nil
327346 else throw("Match error")
328347 }
329- ([StringEntry(aD, O(P, bh)), StringEntry(X(E, ax), bl)] ++ bm)
348+ ([StringEntry(aD, O(P, bj)), StringEntry(X(E, ax), bn)] ++ bo)
330349 }
331350 else throw("Strict value is not equal to itself.")
332351 }
358377 let au = as(aG)
359378 let ah = au._9
360379 let ai = au._10
361- let bo = if ((P == "true"))
380+ let bq = if ((P == "true"))
362381 then $Tuple2((ah - Q), ai)
363382 else $Tuple2(ah, (ai - Q))
364- let bj = bo._1
365- let bk = bo._2
366- let bl = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bj, bk)
367-[StringEntry(X(E, ax), bl), DeleteEntry(aD), DeleteEntry(G(aL.caller, E, ax))]
383+ let bl = bq._1
384+ let bm = bq._2
385+ let bn = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bl, bm)
386+[StringEntry(X(E, ax), bn), DeleteEntry(aD), DeleteEntry(G(aL.caller, E, ax))]
368387 }
369388 else throw("Strict value is not equal to itself.")
370389 }
377396 func finalize (E) = {
378397 let aV = L(E)
379398 let ax = valueOrElse(getInteger(aV), 0)
380- let bp = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
381- let bq = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
399+ let br = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
400+ let bs = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
382401 let aG = valueOrErrorMessage(getString(X(E, ax)), c("voting info not found"))
383402 let au = as(aG)
384403 let ac = au._4
385404 let ad = au._5
386405 let af = au._7
387- let br = au._8
406+ let bt = au._8
388407 let ah = au._9
389408 let ai = au._10
390409 let aA = [if ((ad == "inProgress"))
396415 else e("asset image not set")]
397416 if ((aA == aA))
398417 then {
399- let bs = if (if (((ah + ai) >= br))
418+ let bu = if (if (((ah + ai) >= bt))
400419 then (ah > ai)
401420 else false)
402421 then true
403422 else false
404- let bt = if (bs)
423+ let bv = if (bu)
405424 then "accepted"
406425 else "rejected"
407426 let aN = getStringValue(aj(E))
408- let bu = if (bs)
427+ let bw = if (bu)
409428 then {
410- let bv = if ((ac == "verification"))
429+ let bx = if ((ac == "verification"))
411430 then invoke(u, "createOrUpdate", [E, aN, true], nil)
412431 else invoke(u, "setVerified", [E, false], nil)
413- bv
432+ bx
414433 }
415434 else nil
416- if ((bu == bu))
435+ if ((bw == bw))
417436 then {
418- let bl = Y(au._1, au._2, au._3, au._4, bt, au._6, au._7, au._8, au._9, au._10)
437+ let bn = Y(au._1, au._2, au._3, au._4, bv, au._6, au._7, au._8, au._9, au._10)
419438 let bc = getIntegerValue(J)
420-[StringEntry(X(E, ax), bl), ScriptTransfer(aL.caller, bc, x)]
439+[StringEntry(X(E, ax), bn), ScriptTransfer(aL.caller, bc, x)]
421440 }
422441 else throw("Strict value is not equal to itself.")
423442 }
427446
428447
429448 @Callable(aL)
430-func claimREADONLY (E,F,bw) = {
431- let H = valueOrErrorMessage(addressFromString(bw), c("invalid address"))
432- let bx = getString(D(E, F))
433- let ab = if (isDefined(bx))
449+func claimREADONLY (E,F,by) = {
450+ let H = valueOrErrorMessage(addressFromString(by), c("invalid address"))
451+ let bz = getString(D(E, F))
452+ let ab = if (isDefined(bz))
434453 then aB(H, E, F)
435454 else 0
436455 $Tuple2(nil, ab)
440459
441460 @Callable(aL)
442461 func claim (E,F) = {
443- let by = aL.caller
444- let bz = S(by, E, F)
445- let bA = getInteger(bz)
446- let aA = [if ((bA == unit))
462+ let bA = aL.caller
463+ let bB = S(bA, E, F)
464+ let bC = getInteger(bB)
465+ let aA = [if ((bC == unit))
447466 then true
448467 else e("already claimed")]
449468 if ((aA == aA))
450469 then {
451- let ab = if ((aB(by, E, F) > 0))
452- then aB(by, E, F)
470+ let ab = if ((aB(bA, E, F) > 0))
471+ then aB(bA, E, F)
453472 else e("nothing to claim")
454- let bx = getString(D(E, F))
455- let bB = if (isDefined(bx))
473+ let bz = getString(D(E, F))
474+ let bD = if (isDefined(bz))
456475 then {
457- let bC = fromBase58String(value(bx))
458-[ScriptTransfer(by, ab, bC), IntegerEntry(bz, ab), DeleteEntry(G(by, E, F))]
476+ let bE = fromBase58String(value(bz))
477+[ScriptTransfer(bA, ab, bE), IntegerEntry(bB, ab), DeleteEntry(G(bA, E, F))]
459478 }
460479 else e("nothing to claim")
461- bB
480+ bD
462481 }
463482 else throw("Strict value is not equal to itself.")
464483 }
465484
466485
467-@Verifier(bD)
468-func bE () = {
469- let bF = {
486+@Verifier(bF)
487+func bG () = {
488+ let bH = {
470489 let h = aq()
471490 if ($isInstanceOf(h, "ByteVector"))
472491 then {
473- let bn = h
474- bn
492+ let bp = h
493+ bp
475494 }
476495 else if ($isInstanceOf(h, "Unit"))
477- then bD.senderPublicKey
496+ then bF.senderPublicKey
478497 else throw("Match error")
479498 }
480- sigVerify(bD.bodyBytes, bD.proofs[0], bF)
499+ sigVerify(bF.bodyBytes, bF.proofs[0], bH)
481500 }
482501
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
5959 let A = makeString(["%s", "periodLengthRemove"], a)
6060
6161 let B = makeString(["%s", "maxPeriodLength"], a)
6262
6363 let C = makeString(["%s", "minPeriodLength"], a)
6464
6565 func D (E,F) = makeString(["%s%s%d", "votingRewardAssetId", E, toString(F)], a)
6666
6767
6868 func G (H,E,F) = makeString(["%s%s%s%d", "votingReward", toString(H), E, toString(F)], a)
6969
7070
7171 func I (E,F) = makeString(["%s%s%d", "totalVotingReward", E, toString(F)], a)
7272
7373
7474 let J = makeString(["%s", "finalizeCallRewardAmount"], a)
7575
7676 let K = makeString(["%s", "minSuggestRemoveBalance"], a)
7777
7878 func L (E) = makeString(["%s%s", "currentIndex", E], a)
7979
8080
8181 func M (E,F,N) = makeString(["%s%s%d%s", "vote", E, toString(F), toString(N)], a)
8282
8383
8484 func O (P,Q) = makeString(["%s%d", toString(P), toString(Q)], a)
8585
8686
8787 func R (E,F) = makeString(["%s%s%d", "suggestIssuer", E, toString(F)], a)
8888
8989
9090 func S (H,E,F) = makeString(["%s%s%s%d", "history", toString(H), E, toString(F)], a)
9191
9292
9393 let T = makeString(["%s", "feePerBlock"], a)
9494
9595 let U = m(this, T)
9696
9797 let V = makeString(["%s", "wxMinForSuggestAddAmountRequired"], a)
9898
9999 let W = makeString(["%s", "wxForSuggestRemoveAmountRequired"], a)
100100
101101 func X (E,F) = makeString(["%s%s%d", "votingInfo", E, toString(F)], a)
102102
103103
104104 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
107107 func aj (E) = makeString(["%s%s", "assetImage", E], a)
108108
109109
110110 func ak (H,al) = {
111111 let Q = invoke(s, "getUserGwxAmountAtHeightREADONLY", [H, al], nil)
112112 f(Q)
113113 }
114114
115115
116116 func am () = "%s__managerVaultAddress"
117117
118118
119119 func an () = "%s__managerPublicKey"
120120
121121
122122 func ao () = {
123123 let h = getString(am())
124124 if ($isInstanceOf(h, "String"))
125125 then {
126126 let ap = h
127127 addressFromStringValue(ap)
128128 }
129129 else this
130130 }
131131
132132
133133 func aq () = {
134134 let ar = ao()
135135 let h = getString(ar, an())
136136 if ($isInstanceOf(h, "String"))
137137 then {
138138 let ap = h
139139 fromBase58String(ap)
140140 }
141141 else if ($isInstanceOf(h, "Unit"))
142142 then unit
143143 else throw("Match error")
144144 }
145145
146146
147147 func as (at) = {
148148 let au = split(at, a)
149149 let av = au[1]
150150 let Z = if ((av == "true"))
151151 then true
152152 else false
153153 let aa = au[2]
154154 let ab = parseIntValue(au[3])
155155 let ac = au[4]
156156 let ad = au[5]
157157 let ae = parseIntValue(au[6])
158158 let af = parseIntValue(au[7])
159159 let ag = parseIntValue(au[8])
160160 let ah = parseIntValue(au[9])
161161 let ai = parseIntValue(au[10])
162162 $Tuple10(Z, aa, ab, ac, ad, ae, af, ag, ah, ai)
163163 }
164164
165165
166166 func aw (E,ax) = {
167167 let at = valueOrErrorMessage(getString(X(E, ax)), c("voting info not found"))
168168 let ay = split(at, a)
169169 let ad = ay[5]
170170 let af = valueOrErrorMessage(parseIntValue(ay[7]), c("voting start height not found"))
171171 let az = valueOrErrorMessage(getString(R(E, ax)), c("voting issuer not found"))
172172 let aA = [if ((ad == "inProgress"))
173173 then true
174174 else e("no voting in progress"), if ((af > height))
175175 then true
176176 else e("voting expired")]
177177 if ((aA == aA))
178178 then $Tuple3(ad, af, az)
179179 else throw("Strict value is not equal to itself.")
180180 }
181181
182182
183183 func aB (aC,E,F) = {
184184 let aD = M(E, F, aC)
185185 let aE = valueOrErrorMessage(getString(aD), c("you have not voted"))
186186 let aF = split(aE, a)
187187 let Q = parseIntValue(aF[2])
188188 let aG = valueOrErrorMessage(getString(X(E, F)), c("voting info not found"))
189189 let aH = as(aG)
190190 let ah = aH._9
191191 let ai = aH._10
192192 let aI = fraction(Q, b, (ah + ai))
193193 let aJ = valueOrElse(getInteger(I(E, F)), 0)
194194 let aK = fraction(aI, aJ, b, FLOOR)
195195 aK
196196 }
197197
198198
199199 @Callable(aL)
200200 func suggestAdd (E,aM,aN) = {
201201 let aO = aL.payments[0]
202202 let aP = value(aO.assetId)
203203 let aQ = value(aO.amount)
204204 let aR = getIntegerValue(C)
205205 let aS = getIntegerValue(B)
206206 let aT = {
207207 let aU = invoke(u, "isVerifiedREADONLY", [E], nil)
208208 if ($isInstanceOf(aU, "Boolean"))
209209 then aU
210210 else throw(($getType(aU) + " couldn't be cast to Boolean"))
211211 }
212212 let aA = [if (if ((aM >= aR))
213213 then (aS >= aM)
214214 else false)
215215 then true
216216 else e("invalid periodLength"), if ((aT == false))
217217 then true
218218 else e("token already verified"), if ((aQ > (aM * U)))
219219 then true
220220 else e("not enough wx for given period"), if ((aQ >= getIntegerValue(V)))
221221 then true
222222 else e("payment less then min for suggest")]
223223 if ((aA == aA))
224224 then {
225225 let aV = L(E)
226226 let ax = getInteger(aV)
227227 let aW = if (isDefined(ax))
228228 then (value(ax) + 1)
229229 else 0
230230 let aX = if ((size(aL.payments) > 1))
231231 then {
232232 let aY = aL.payments[1]
233233 let aZ = toBase58String(value(aY.assetId))
234234 let ba = value(aY.amount)
235235 $Tuple4(true, aZ, ba, [StringEntry(D(E, aW), aZ), IntegerEntry(I(E, aW), ba)])
236236 }
237237 else $Tuple4(false, "EMPTY", 0, nil)
238238 let Z = aX._1
239239 let aa = aX._2
240240 let ab = aX._3
241241 let bb = aX._4
242242 let ag = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
243243 let at = Y(Z, aa, ab, "verification", "inProgress", height, (height + aM), ag, 0, 0)
244244 let bc = getIntegerValue(J)
245245 let bd = (aQ - bc)
246246 ([IntegerEntry(aV, aW), StringEntry(R(E, aW), toString(aL.caller)), StringEntry(X(E, aW), at), StringEntry(aj(E), aN), Burn(aP, bd)] ++ bb)
247247 }
248248 else throw("Strict value is not equal to itself.")
249249 }
250250
251251
252252
253253 @Callable(aL)
254254 func suggestRemove (E) = {
255255 let be = ak(toString(aL.caller), height)
256256 let bf = getIntegerValue(K)
257257 let aO = aL.payments[0]
258258 let aP = value(aO.assetId)
259259 let aQ = value(aO.amount)
260260 let aT = {
261261 let aU = invoke(u, "isVerifiedREADONLY", [E], nil)
262262 if ($isInstanceOf(aU, "Boolean"))
263263 then aU
264264 else throw(($getType(aU) + " couldn't be cast to Boolean"))
265265 }
266266 let aA = [if (aT)
267267 then true
268268 else e("token not verified"), if ((be >= bf))
269269 then true
270270 else e("not enough gWXes"), if ((aQ >= getIntegerValue(W)))
271271 then true
272272 else e("payment less then min for suggest")]
273273 if ((aA == aA))
274274 then {
275275 let aV = L(E)
276276 let ax = getInteger(aV)
277277 let aW = if (isDefined(ax))
278278 then (value(ax) + 1)
279279 else 0
280280 let aM = valueOrErrorMessage(getInteger(A), c("periodLengthRemove not set"))
281281 let af = (height + aM)
282282 let ag = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
283283 let at = Y(false, "EMPTY", 0, "deverification", "inProgress", height, (height + aM), ag, 0, 0)
284-[IntegerEntry(aV, aW), StringEntry(R(E, aW), toString(aL.caller)), StringEntry(X(E, aW), at)]
284+ let bg = {
285+ let h = getString(aj(E))
286+ if ($isInstanceOf(h, "String"))
287+ then {
288+ let ap = h
289+ nil
290+ }
291+ else if ($isInstanceOf(h, "Unit"))
292+ then {
293+ let bh = {
294+ let aU = invoke(u, "getAssetLogoREADONLY", [E], nil)
295+ if ($isInstanceOf(aU, "String"))
296+ then aU
297+ else throw(($getType(aU) + " couldn't be cast to String"))
298+ }
299+[StringEntry(aj(E), bh)]
300+ }
301+ else throw("Match error")
302+ }
303+ ([IntegerEntry(aV, aW), StringEntry(R(E, aW), toString(aL.caller)), StringEntry(X(E, aW), at)] ++ bg)
285304 }
286305 else throw("Strict value is not equal to itself.")
287306 }
288307
289308
290309
291310 @Callable(aL)
292311 func vote (E,P) = {
293312 let aV = L(E)
294313 let ax = valueOrErrorMessage(getInteger(aV), c("voting does not exist"))
295314 let at = aw(E, ax)
296315 if ((at == at))
297316 then {
298- let bg = at._2
299- let bh = ak(toString(aL.caller), bg)
317+ let bi = at._2
318+ let bj = ak(toString(aL.caller), bi)
300319 let aD = M(E, ax, aL.caller)
301320 let aA = [if ((getString(aD) == unit))
302321 then true
303- else e("You have already voted"), if ((bh > 0))
322+ else e("You have already voted"), if ((bj > 0))
304323 then true
305324 else throw("You'll not have gWX at the end of voting")]
306325 if ((aA == aA))
307326 then {
308327 let aG = valueOrErrorMessage(getString(X(E, ax)), c("voting info not found"))
309328 let au = as(aG)
310329 let ah = au._9
311330 let ai = au._10
312- let bi = if (P)
313- then $Tuple2((ah + bh), ai)
314- else $Tuple2(ah, (ai + bh))
315- let bj = bi._1
316- let bk = bi._2
317- let bl = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bj, bk)
318- let bm = {
331+ let bk = if (P)
332+ then $Tuple2((ah + bj), ai)
333+ else $Tuple2(ah, (ai + bj))
334+ let bl = bk._1
335+ let bm = bk._2
336+ let bn = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bl, bm)
337+ let bo = {
319338 let h = getString(D(E, ax))
320339 if ($isInstanceOf(h, "String"))
321340 then {
322- let bn = h
323-[StringEntry(G(aL.caller, E, ax), O(P, bh))]
341+ let bp = h
342+[StringEntry(G(aL.caller, E, ax), O(P, bj))]
324343 }
325344 else if ($isInstanceOf(h, "Unit"))
326345 then nil
327346 else throw("Match error")
328347 }
329- ([StringEntry(aD, O(P, bh)), StringEntry(X(E, ax), bl)] ++ bm)
348+ ([StringEntry(aD, O(P, bj)), StringEntry(X(E, ax), bn)] ++ bo)
330349 }
331350 else throw("Strict value is not equal to itself.")
332351 }
333352 else throw("Strict value is not equal to itself.")
334353 }
335354
336355
337356
338357 @Callable(aL)
339358 func cancelVote (E) = {
340359 let aV = L(E)
341360 let ax = valueOrErrorMessage(getInteger(aV), c("voting does not exist"))
342361 let aD = M(E, ax, aL.caller)
343362 let aE = valueOrErrorMessage(getString(aD), c("you have not voted"))
344363 let aF = split(aE, a)
345364 let P = aF[1]
346365 let Q = parseIntValue(aF[2])
347366 let at = aw(E, ax)
348367 if ((at == at))
349368 then {
350369 let aA = [if (if ((P == "true"))
351370 then true
352371 else (P == "false"))
353372 then true
354373 else e("invalid vote")]
355374 if ((aA == aA))
356375 then {
357376 let aG = valueOrErrorMessage(getString(X(E, ax)), c("voting info not found"))
358377 let au = as(aG)
359378 let ah = au._9
360379 let ai = au._10
361- let bo = if ((P == "true"))
380+ let bq = if ((P == "true"))
362381 then $Tuple2((ah - Q), ai)
363382 else $Tuple2(ah, (ai - Q))
364- let bj = bo._1
365- let bk = bo._2
366- let bl = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bj, bk)
367-[StringEntry(X(E, ax), bl), DeleteEntry(aD), DeleteEntry(G(aL.caller, E, ax))]
383+ let bl = bq._1
384+ let bm = bq._2
385+ let bn = Y(au._1, au._2, au._3, au._4, au._5, au._6, au._7, au._8, bl, bm)
386+[StringEntry(X(E, ax), bn), DeleteEntry(aD), DeleteEntry(G(aL.caller, E, ax))]
368387 }
369388 else throw("Strict value is not equal to itself.")
370389 }
371390 else throw("Strict value is not equal to itself.")
372391 }
373392
374393
375394
376395 @Callable(aL)
377396 func finalize (E) = {
378397 let aV = L(E)
379398 let ax = valueOrElse(getInteger(aV), 0)
380- let bp = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
381- let bq = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
399+ let br = valueOrErrorMessage(getInteger(y), c("votingThresholdAdd not set"))
400+ let bs = valueOrErrorMessage(getInteger(z), c("votingThresholdRemove not set"))
382401 let aG = valueOrErrorMessage(getString(X(E, ax)), c("voting info not found"))
383402 let au = as(aG)
384403 let ac = au._4
385404 let ad = au._5
386405 let af = au._7
387- let br = au._8
406+ let bt = au._8
388407 let ah = au._9
389408 let ai = au._10
390409 let aA = [if ((ad == "inProgress"))
391410 then true
392411 else e("voting not in progress"), if ((height >= af))
393412 then true
394413 else e("voting not finished"), if (isDefined(getString(aj(E))))
395414 then true
396415 else e("asset image not set")]
397416 if ((aA == aA))
398417 then {
399- let bs = if (if (((ah + ai) >= br))
418+ let bu = if (if (((ah + ai) >= bt))
400419 then (ah > ai)
401420 else false)
402421 then true
403422 else false
404- let bt = if (bs)
423+ let bv = if (bu)
405424 then "accepted"
406425 else "rejected"
407426 let aN = getStringValue(aj(E))
408- let bu = if (bs)
427+ let bw = if (bu)
409428 then {
410- let bv = if ((ac == "verification"))
429+ let bx = if ((ac == "verification"))
411430 then invoke(u, "createOrUpdate", [E, aN, true], nil)
412431 else invoke(u, "setVerified", [E, false], nil)
413- bv
432+ bx
414433 }
415434 else nil
416- if ((bu == bu))
435+ if ((bw == bw))
417436 then {
418- let bl = Y(au._1, au._2, au._3, au._4, bt, au._6, au._7, au._8, au._9, au._10)
437+ let bn = Y(au._1, au._2, au._3, au._4, bv, au._6, au._7, au._8, au._9, au._10)
419438 let bc = getIntegerValue(J)
420-[StringEntry(X(E, ax), bl), ScriptTransfer(aL.caller, bc, x)]
439+[StringEntry(X(E, ax), bn), ScriptTransfer(aL.caller, bc, x)]
421440 }
422441 else throw("Strict value is not equal to itself.")
423442 }
424443 else throw("Strict value is not equal to itself.")
425444 }
426445
427446
428447
429448 @Callable(aL)
430-func claimREADONLY (E,F,bw) = {
431- let H = valueOrErrorMessage(addressFromString(bw), c("invalid address"))
432- let bx = getString(D(E, F))
433- let ab = if (isDefined(bx))
449+func claimREADONLY (E,F,by) = {
450+ let H = valueOrErrorMessage(addressFromString(by), c("invalid address"))
451+ let bz = getString(D(E, F))
452+ let ab = if (isDefined(bz))
434453 then aB(H, E, F)
435454 else 0
436455 $Tuple2(nil, ab)
437456 }
438457
439458
440459
441460 @Callable(aL)
442461 func claim (E,F) = {
443- let by = aL.caller
444- let bz = S(by, E, F)
445- let bA = getInteger(bz)
446- let aA = [if ((bA == unit))
462+ let bA = aL.caller
463+ let bB = S(bA, E, F)
464+ let bC = getInteger(bB)
465+ let aA = [if ((bC == unit))
447466 then true
448467 else e("already claimed")]
449468 if ((aA == aA))
450469 then {
451- let ab = if ((aB(by, E, F) > 0))
452- then aB(by, E, F)
470+ let ab = if ((aB(bA, E, F) > 0))
471+ then aB(bA, E, F)
453472 else e("nothing to claim")
454- let bx = getString(D(E, F))
455- let bB = if (isDefined(bx))
473+ let bz = getString(D(E, F))
474+ let bD = if (isDefined(bz))
456475 then {
457- let bC = fromBase58String(value(bx))
458-[ScriptTransfer(by, ab, bC), IntegerEntry(bz, ab), DeleteEntry(G(by, E, F))]
476+ let bE = fromBase58String(value(bz))
477+[ScriptTransfer(bA, ab, bE), IntegerEntry(bB, ab), DeleteEntry(G(bA, E, F))]
459478 }
460479 else e("nothing to claim")
461- bB
480+ bD
462481 }
463482 else throw("Strict value is not equal to itself.")
464483 }
465484
466485
467-@Verifier(bD)
468-func bE () = {
469- let bF = {
486+@Verifier(bF)
487+func bG () = {
488+ let bH = {
470489 let h = aq()
471490 if ($isInstanceOf(h, "ByteVector"))
472491 then {
473- let bn = h
474- bn
492+ let bp = h
493+ bp
475494 }
476495 else if ($isInstanceOf(h, "Unit"))
477- then bD.senderPublicKey
496+ then bF.senderPublicKey
478497 else throw("Match error")
479498 }
480- sigVerify(bD.bodyBytes, bD.proofs[0], bF)
499+ sigVerify(bF.bodyBytes, bF.proofs[0], bH)
481500 }
482501

github/deemru/w8io/873ac7e 
80.08 ms