tx · 7sPC7WGKDVesY1h9B7tEHeV5qT3UBWHx8kyCvNanpTE4

3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz:  -0.02900000 Waves

2022.07.01 17:14 [2120689] smart account 3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz > SELF 0.00000000 Waves

{ "type": 13, "id": "7sPC7WGKDVesY1h9B7tEHeV5qT3UBWHx8kyCvNanpTE4", "fee": 2900000, "feeAssetId": null, "timestamp": 1656684856974, "version": 1, "sender": "3Mx3zmXrMcLFCafMuPtXAzR4ZPVeZYb6qLz", "senderPublicKey": "D28XoueZWsMfm8Y5pa6C5ZFuYoWgre2Wm8tzJANJgMnq", "proofs": [ "dGWQDk9WryTcvsjh5FXBwaaB68xoWuwuHtaEeRTGzprLypcthNYwanw1cL254Nw5TzwswXTz4XP223VLESWcnTh" ], "script": "base64:BgI3CAISAwoBCBIDCgEIEgMKAQgSABIAEgQKAggBEgMKAQgSBAoCCAgSBAoCCAgSAwoBCBIECgIICF0ABlNDQUxFOAAIAAVNVUxUOACAwtcvAAdTQ0FMRTE4ABIABk1VTFQxOAkAtgIBAICAkLu61q3wDQADU0VQAgJfXwAOUE9PTFdFSUdIVE1VTFQFBU1VTFQ4AAp6ZXJvQmlnSW50CQC2AgEAAAAJb25lQmlnSW50CQC2AgEAAQEJYXNBbnlMaXN0AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0ECnZhbEFueUx5c3QFByRtYXRjaDAFCnZhbEFueUx5c3QJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQhhc1N0cmluZwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEMYXNCeXRlVmVjdG9yAQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAZ2YWxCaW4FByRtYXRjaDAFBnZhbEJpbgkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJAKwCAgkArAICCQCsAgIJAKwCAgIKbWFuZGF0b3J5IAkApQgBBQdhZGRyZXNzAgEuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEMZ2V0SW50T3JaZXJvAgdhZGRyZXNzA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQdhZGRyZXNzBQNrZXkAAAEPZ2V0SW50T3JEZWZhdWx0AwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQUKZGVmYXVsdFZhbAEMZ2V0SW50T3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgICD21hbmRhdG9yeSB0aGlzLgUDa2V5Ag8gaXMgbm90IGRlZmluZWQBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CB2FkZHJlc3MDa2V5CQEFdmFsdWUBCQCoAwEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUHYWRkcmVzcwUDa2V5AgEwARxnZXRCaWdJbnRGcm9tU3RyaW5nT3JEZWZhdWx0AwdhZGRyZXNzA2tleQpkZWZhdWx0VmFsBAckbWF0Y2gwCQCdCAIFB2FkZHJlc3MFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAQV2YWx1ZQEJAKgDAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQpkZWZhdWx0VmFsCQACAQILTWF0Y2ggZXJyb3IBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQZNVUxUMTgJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFBk1VTFQxOAERa2V5RmFjdG9yeUFkZHJlc3MAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzARlrZXlWb3RpbmdFbWlzc2lvbkNvbnRyYWN0AAIaJXNfX3ZvdGluZ0VtaXNzaW9uQ29udHJhY3QAGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAABABlJZHhGYWN0b3J5Q2ZnQm9vc3RpbmdEYXBwAAIAFElkeEZhY3RvcnlDZmdJZG9EYXBwAAMAFUlkeEZhY3RvcnlDZmdUZWFtRGFwcAAEABlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwAAUAFUlkeEZhY3RvcnlDZmdSZXN0RGFwcAAGABlJZHhGYWN0b3J5Q2ZnU2xpcHBhZ2VEYXBwAAcBDWtleUZhY3RvcnlDZmcAAhElc19fZmFjdG9yeUNvbmZpZwETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEWa2V5U3RhYmxlUG9vbEFkZG9uQWRkcgACFyVzX19zdGFibGVQb29sQWRkb25BZGRyARprZXlGYWN0b3J5THAyQXNzZXRzTWFwcGluZwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABEGtleUZhY3RvcnlMcExpc3QAAhAlc19fbHBUb2tlbnNMaXN0ASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEKbHBBc3NldFN0cgkAuQkCCQDMCAICBiVzJXMlcwkAzAgCBQpscEFzc2V0U3RyCQDMCAICHm1hcHBpbmdzX19scEFzc2V0MlBvb2xDb250cmFjdAUDbmlsBQNTRVABFGtleUZhY3RvcnlQb29sV2VpZ2h0AQ9jb250cmFjdEFkZHJlc3MJALkJAgkAzAgCAgQlcyVzCQDMCAICCnBvb2xXZWlnaHQJAMwIAgUPY29udHJhY3RBZGRyZXNzBQNuaWwFA1NFUAEKcmVhZExwTGlzdAEHZmFjdG9yeQkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFB2ZhY3RvcnkJARBrZXlGYWN0b3J5THBMaXN0AAIABQNTRVABFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQdmYWN0b3J5CQC1CQIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQdmYWN0b3J5CQENa2V5RmFjdG9yeUNmZwAFA1NFUAEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQpmYWN0b3J5Q2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFCmZhY3RvcnlDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEKZmFjdG9yeUNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQpmYWN0b3J5Q2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAEha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50AAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50ARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawEba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uARNrZXlFbWlzc2lvbkVuZEJsb2NrAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQ9rZXlTdGFrZWRCeVVzZXICDnVzZXJBZGRyZXNzU3RyDGxwQXNzZXRJZFN0cgkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABDmtleVN0YWtlZFRvdGFsAQxscEFzc2V0SWRTdHIJAKwCAgIXJXMlcyVzX19zdGFrZWRfX3RvdGFsX18FDGxwQXNzZXRJZFN0cgEQa2V5Q2xhaW1lZEJ5VXNlcgIMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCQC5CQIJAMwIAgIPJXMlcyVzX19jbGFpbWVkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABGWtleUNsYWltZWRCeVVzZXJNaW5SZXdhcmQCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICGCVzJXMlc19fY2xhaW1lZE1pblJld2FyZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQARtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICGiVzJXMlc19fY2xhaW1lZEJvb3N0UmV3YXJkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABD2tleUNsYWltZWRUb3RhbAEMbHBBc3NldElkU3RyCQC5CQIJAMwIAgIWJXMlcyVzX19jbGFpbWVkX190b3RhbAkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQAQpyZWFkU3Rha2VkAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABFWtleUxhc3RUb3RhbExwQmFsYW5jZQEJbHBBc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCAgV0b3RhbAkAzAgCAgNiYWwFA25pbAUDU0VQARRrZXlMYXN0VXNlckxwQmFsYW5jZQIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgNiYWwFA25pbAUDU0VQARlrZXlUb3RhbExwQmFsYW5jZUludGVncmFsAQlscEFzc2V0SWQJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAICBXRvdGFsCQDMCAICBmJhbElOVAUDbmlsBQNTRVABGGtleVVzZXJMcEJhbGFuY2VJbnRlZ3JhbAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgZiYWxJTlQFA25pbAUDU0VQASZrZXlUb3RhbExwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodAEJbHBBc3NldElkCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCAgV0b3RhbAkAzAgCAgdsYXN0VXBkBQNuaWwFA1NFUAEla2V5VXNlckxwQmFsYW5jZUludGVncmFsTGFzdFVwZEhlaWdodAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgdsYXN0VXBkBQNuaWwFA1NFUAESa2V5V3hQZXJMcEludGVncmFsAQlscEFzc2V0SWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQlscEFzc2V0SWQJAMwIAgIGY29tbW9uCQDMCAICBWxwSW50BQNuaWwFA1NFUAEfa2V5V3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodAEJbHBBc3NldElkCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAICBmNvbW1vbgkAzAgCAgZscEludEgFA25pbAUDU0VQARBrZXlXeFRvQ2xhaW1Vc2VyAglscEFzc2V0SWQLdXNlckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQlscEFzc2V0SWQJAMwIAgULdXNlckFkZHJlc3MJAMwIAgIFbHBJbnQFA25pbAUDU0VQASNrZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAICBmxwSW50SAUDbmlsBQNTRVABCmtleVd4UGVyTHABCWxwQXNzZXRJZAkAuQkCCQDMCAICAiVzCQDMCAIFCWxwQXNzZXRJZAkAzAgCAgd3eFBlckxwBQNuaWwFA1NFUAENa2V5V3hQZXJMcFgxOAEJbHBBc3NldElkCQC5CQIJAMwIAgICJXMJAMwIAgUJbHBBc3NldElkCQDMCAICCnd4UGVyTHBYMTgFA25pbAUDU0VQARprZXlXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAIJbHBBc3NldElkC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIIJXMlcyVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAICBXVJbnRMBQNuaWwFA1NFUAEZa2V5T3BlcmF0aW9uSGlzdG9yeVJlY29yZAMEdHlwZQt1c2VyQWRkcmVzcwZ0eElkNTgJALkJAgkAzAgCAhElcyVzJXMlc19faGlzdG9yeQkAzAgCBQR0eXBlCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFBnR4SWQ1OAUDbmlsBQNTRVABE2Zvcm1hdEhpc3RvcnlSZWNvcmQEC3VzZXJBZGRyZXNzCWxwQXNzZXRJZAR0eXBlBmFtb3VudAkAuQkCCQDMCAICDCVzJXMlcyVkJWQlZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQlscEFzc2V0SWQJAMwIAgUEdHlwZQkAzAgCCQCkAwEFBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUGYW1vdW50BQNuaWwFA1NFUAEVT3BlcmF0aW9uSGlzdG9yeUVudHJ5BQR0eXBlC3VzZXJBZGRyZXNzCWxwQXNzZXRJZAZhbW91bnQEdHhJZAkBC1N0cmluZ0VudHJ5AgkBGWtleU9wZXJhdGlvbkhpc3RvcnlSZWNvcmQDBQR0eXBlBQt1c2VyQWRkcmVzcwkA2AQBBQR0eElkCQETZm9ybWF0SGlzdG9yeVJlY29yZAQFC3VzZXJBZGRyZXNzBQlscEFzc2V0SWQFBHR5cGUFBmFtb3VudAAOZmFjdG9yeUFkZHJlc3MJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzCQERa2V5RmFjdG9yeUFkZHJlc3MAAA9mYWN0b3J5Q29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEFDmZhY3RvcnlBZGRyZXNzAApmYWN0b3J5Q2ZnCQEUcmVhZEZhY3RvcnlDZmdPckZhaWwBBQ9mYWN0b3J5Q29udHJhY3QAEGVtaXNzaW9uQ29udHJhY3QJARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnABBib29zdGluZ0NvbnRyYWN0CQEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwELa2V5TmV4dFVzZXIBCWxwQXNzZXRJZAkAuQkCCQDMCAICBCVzJXMJAMwIAgUJbHBBc3NldElkCQDMCAICCG5leHRVc2VyBQNuaWwFA1NFUAEQZ2V0VXNlcnNMaXN0TmFtZQEJbHBBc3NldElkCQC5CQIJAMwIAgIFdXNlcnMJAMwIAgUJbHBBc3NldElkBQNuaWwFA1NFUAELa2V5TGlzdEhlYWQBCGxpc3ROYW1lCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCGxpc3ROYW1lCQDMCAICBGhlYWQFA25pbAUDU0VQAQtrZXlMaXN0U2l6ZQEIbGlzdE5hbWUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgUIbGlzdE5hbWUJAMwIAgIEc2l6ZQUDbmlsBQNTRVABC2tleUxpc3RQcmV2AghsaXN0TmFtZQJpZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAIFCGxpc3ROYW1lCQDMCAIFAmlkCQDMCAICBHByZXYFA25pbAUDU0VQAQtrZXlMaXN0TmV4dAIIbGlzdE5hbWUCaWQJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCBQhsaXN0TmFtZQkAzAgCBQJpZAkAzAgCAgRuZXh0BQNuaWwFA1NFUAEMY29udGFpbnNOb2RlAghsaXN0TmFtZQJpZAQKaGVhZE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQKcHJldk9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQECm5leHRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUFAmlkAwMJAAACBQJpZAkBC3ZhbHVlT3JFbHNlAgUKaGVhZE9yVW5pdAIABgkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAYJAQIhPQIFCm5leHRPclVuaXQFBHVuaXQBEWluc2VydE5vZGVBY3Rpb25zAghsaXN0TmFtZQJpZAQKaGVhZE9yVW5pdAkAnQgCBQR0aGlzCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQIbGlzdFNpemUJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUAAAQJY2hlY2tOb2RlAwkBASEBCQEMY29udGFpbnNOb2RlAgUIbGlzdE5hbWUFAmlkBgkAAgECC05vZGUgZXhpc3RzAwkAAAIFCWNoZWNrTm9kZQUJY2hlY2tOb2RlCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleUxpc3RTaXplAQUIbGlzdE5hbWUJAGQCBQhsaXN0U2l6ZQABBQNuaWwDCQECIT0CBQpoZWFkT3JVbml0BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkBBXZhbHVlAQUKaGVhZE9yVW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKaGVhZE9yVW5pdAUCaWQFA25pbAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBQJpZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFkZWxldGVOb2RlQWN0aW9ucwIIbGlzdE5hbWUCaWQECmhlYWRPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RIZWFkAQUIbGlzdE5hbWUECGxpc3RTaXplCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMJAQtrZXlMaXN0U2l6ZQEFCGxpc3ROYW1lAAAECnByZXZPclVuaXQJAJ0IAgUEdGhpcwkBC2tleUxpc3RQcmV2AgUIbGlzdE5hbWUFAmlkBApuZXh0T3JVbml0CQCdCAIFBHRoaXMJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQELa2V5TGlzdFNpemUBBQhsaXN0TmFtZQkAZQIFCGxpc3RTaXplAAEFA25pbAMDCQECIT0CBQpwcmV2T3JVbml0BQR1bml0CQECIT0CBQpuZXh0T3JVbml0BQR1bml0BwkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdE5leHQCBQhsaXN0TmFtZQkBBXZhbHVlAQUKcHJldk9yVW5pdAkBBXZhbHVlAQUKbmV4dE9yVW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAkBBXZhbHVlAQUKcHJldk9yVW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUFAmlkBQNuaWwDCQECIT0CBQpuZXh0T3JVbml0BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lCQEFdmFsdWUBBQpuZXh0T3JVbml0CQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQJpZAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQkBBXZhbHVlAQUKbmV4dE9yVW5pdAUDbmlsAwkBAiE9AgUKcHJldk9yVW5pdAUEdW5pdAkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5TGlzdFByZXYCBQhsaXN0TmFtZQUCaWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleUxpc3ROZXh0AgUIbGlzdE5hbWUJAQV2YWx1ZQEFCnByZXZPclVuaXQFA25pbAMJAAACBQJpZAkBC3ZhbHVlT3JFbHNlAgUKaGVhZE9yVW5pdAIACQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlMaXN0SGVhZAEFCGxpc3ROYW1lBQNuaWwJAAIBCQCsAgIJAKwCAgkArAICAg5pbnZhbGlkIG5vZGU6IAUIbGlzdE5hbWUCAS4FAmlkARtjYWxjV3hQZXJMcEludGVncmFsVXNlckxhc3QEDHN0YWtlZEJ5VXNlciZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybxJ3eFBlckxwSW50ZWdyYWxOZXcad3hQZXJMcEludGVncmFsVXNlckxhc3RLRVkDAwkAAAIFJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvBQp6ZXJvQmlnSW50CQC/AgIFDHN0YWtlZEJ5VXNlcgUKemVyb0JpZ0ludAcFCnplcm9CaWdJbnQDCQAAAgUMc3Rha2VkQnlVc2VyBQp6ZXJvQmlnSW50BRJ3eFBlckxwSW50ZWdyYWxOZXcDAwkAvwICBSZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwUKemVyb0JpZ0ludAkAvwICBQxzdGFrZWRCeVVzZXIFCnplcm9CaWdJbnQHCQEFdmFsdWUBCQCoAwEJAQ9nZXRTdHJpbmdPckZhaWwCBQR0aGlzBRp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQkAAgECLWNhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdDogdW5leHBlY3RlZCBzdGF0ZQEUcmVmcmVzaFBvb2xJTlRFR1JBTFMDDGxwQXNzZXRJZFN0cg5wb29sQWRkcmVzc1N0cg1scERlbHRhQW1vdW50BA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAtzdGFrZWRUb3RhbAkAtgIBCQEKcmVhZFN0YWtlZAEFDnN0YWtlZFRvdGFsS0VZBBJub25aZXJvU3Rha2VkVG90YWwDCQAAAgULc3Rha2VkVG90YWwFCnplcm9CaWdJbnQFCW9uZUJpZ0ludAULc3Rha2VkVG90YWwECnBvb2xXZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFD2ZhY3RvcnlDb250cmFjdAkBFGtleUZhY3RvcnlQb29sV2VpZ2h0AQUOcG9vbEFkZHJlc3NTdHIEEmVtaXNzaW9uU3RhcnRCbG9jawkBDGdldEludE9yRmFpbAIFEGVtaXNzaW9uQ29udHJhY3QJARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sABAVNVUxUMwDoBwQUd3hFbWlzc2lvblBlckJsb2NrWDMJAGgCCQEMZ2V0SW50T3JGYWlsAgUQZW1pc3Npb25Db250cmFjdAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAFBU1VTFQzBBhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAGsDBRR3eEVtaXNzaW9uUGVyQmxvY2tYMwUKcG9vbFdlaWdodAkAaAIFDlBPT0xXRUlHSFRNVUxUAAMEEnd4UGVyTHBJbnRlZ3JhbEtFWQkBEmtleVd4UGVyTHBJbnRlZ3JhbAEFDGxwQXNzZXRJZFN0cgQfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodEtFWQkBH2tleVd4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHQBBQxscEFzc2V0SWRTdHIECnd4UGVyTHBLRVkJAQprZXlXeFBlckxwAQUMbHBBc3NldElkU3RyBBx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0CQEPZ2V0SW50T3JEZWZhdWx0AwUEdGhpcwUfd3hQZXJMcEludGVncmFsTGFzdFVwZEhlaWdodEtFWQUSZW1pc3Npb25TdGFydEJsb2NrBA93eFBlckxwSW50ZWdyYWwJARlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAgUEdGhpcwUSd3hQZXJMcEludGVncmFsS0VZBA93eFBlckxwT3JaZXJvWDMAAAQCZGgJAJYDAQkAzAgCCQBlAgUGaGVpZ2h0BRx3eFBlckxwSW50ZWdyYWxMYXN0VXBkSGVpZ2h0CQDMCAIAAAUDbmlsBAl3eFBlckxwWDMDCQECIT0CBQ93eFBlckxwT3JaZXJvWDMAAAkAtgIBBQ93eFBlckxwT3JaZXJvWDMJALwCAwkAtgIBBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJALYCAQUFTVVMVDgFEm5vblplcm9TdGFrZWRUb3RhbAQOc3Rha2VkVG90YWxOZXcJALcCAgULc3Rha2VkVG90YWwJALYCAQUNbHBEZWx0YUFtb3VudAQVbm9uWmVyb1N0YWtlZFRvdGFsTmV3AwkAAAIFDnN0YWtlZFRvdGFsTmV3BQp6ZXJvQmlnSW50BQlvbmVCaWdJbnQFDnN0YWtlZFRvdGFsTmV3BBJ3eFBlckxwSW50ZWdyYWxOZXcJALcCAgUPd3hQZXJMcEludGVncmFsCQC5AgIFCXd4UGVyTHBYMwkAtgIBBQJkaAQMd3hQZXJMcFgzTmV3CQC6AgIJALYCAQUYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzBRVub25aZXJvU3Rha2VkVG90YWxOZXcEH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXcFBmhlaWdodAQFZGVidWcJALkJAgkAzAgCCQCmAwEFEnd4UGVyTHBJbnRlZ3JhbE5ldwkAzAgCCQCkAwEFAmRoCQDMCAIJAKYDAQUJd3hQZXJMcFgzCQDMCAIJAKYDAQULc3Rha2VkVG90YWwJAMwIAgkApAMBBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMJAMwIAgkApAMBBRR3eEVtaXNzaW9uUGVyQmxvY2tYMwkAzAgCCQCkAwEFCnBvb2xXZWlnaHQFA25pbAICOjoJAJUKAwUSd3hQZXJMcEludGVncmFsTmV3CQDMCAIJAQtTdHJpbmdFbnRyeQIFEnd4UGVyTHBJbnRlZ3JhbEtFWQkApgMBBRJ3eFBlckxwSW50ZWdyYWxOZXcJAMwIAgkBDEludGVnZXJFbnRyeQIFH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHRLRVkFH3d4UGVyTHBJbnRlZ3JhbExhc3RVcGRIZWlnaHROZXcJAMwIAgkBC1N0cmluZ0VudHJ5AgUKd3hQZXJMcEtFWQkApgMBBQx3eFBlckxwWDNOZXcFA25pbAUFZGVidWcBEHJlZnJlc2hJTlRFR1JBTFMEDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cg5wb29sQWRkcmVzc1N0cg1scERlbHRhQW1vdW50BA0kdDAxNDIxNzE0MzM5CQEUcmVmcmVzaFBvb2xJTlRFR1JBTFMDBQxscEFzc2V0SWRTdHIFDnBvb2xBZGRyZXNzU3RyBQ1scERlbHRhQW1vdW50BBJ3eFBlckxwSW50ZWdyYWxOZXcIBQ0kdDAxNDIxNzE0MzM5Al8xBBFwb29sSW50ZWdyYWxTVEFURQgFDSR0MDE0MjE3MTQzMzkCXzIECXBvb2xERUJVRwgFDSR0MDE0MjE3MTQzMzkCXzMEBU1VTFQzAOgHBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAQUPc3Rha2VkQnlVc2VyS0VZBBB3eFRvQ2xhaW1Vc2VyS0VZCQEQa2V5V3hUb0NsYWltVXNlcgIFDGxwQXNzZXRJZFN0cgUOdXNlckFkZHJlc3NTdHIEI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZCQEja2V5V3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHQCBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBBp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdEtFWQkBGmtleVd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0AgUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgQNd3hUb0NsYWltVXNlcgkBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CBQR0aGlzBRB3eFRvQ2xhaW1Vc2VyS0VZBCZ3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE9yWmVybwkBDGdldEludE9yWmVybwIFBHRoaXMFI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0S0VZBBd3eFBlckxwSW50ZWdyYWxVc2VyTGFzdAkBG2NhbGNXeFBlckxwSW50ZWdyYWxVc2VyTGFzdAQJALYCAQUMc3Rha2VkQnlVc2VyCQC2AgEFJnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0T3JaZXJvBRJ3eFBlckxwSW50ZWdyYWxOZXcFGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZBAZNVUxUMTEJAGgCBQVNVUxUOAUFTVVMVDMEEHd4VG9DbGFpbVVzZXJOZXcJAJgDAQkAzAgCCQC3AgIFDXd4VG9DbGFpbVVzZXIJALwCAwkAuAICBRJ3eFBlckxwSW50ZWdyYWxOZXcFF3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0CQC2AgEFDHN0YWtlZEJ5VXNlcgkAtgIBBQZNVUxUMTEJAMwIAgUKemVyb0JpZ0ludAUDbmlsBBp3eFBlckxwSW50ZWdyYWxVc2VyTGFzdE5ldwUSd3hQZXJMcEludGVncmFsTmV3BCN3eFBlckxwSW50ZWdyYWxVc2VyTGFzdFVwZEhlaWdodE5ldwUGaGVpZ2h0BAVkZWJ1ZwkAuQkCCQDMCAIJAKYDAQUNd3hUb0NsYWltVXNlcgkAzAgCCQCmAwEFF3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0CQDMCAIJAKQDAQUMc3Rha2VkQnlVc2VyCQDMCAIFCXBvb2xERUJVRwkAzAgCCQCkAwEFBmhlaWdodAUDbmlsAgI6OgkAlQoDBRB3eFRvQ2xhaW1Vc2VyTmV3CQDOCAIFEXBvb2xJbnRlZ3JhbFNUQVRFCQDMCAIJAQtTdHJpbmdFbnRyeQIFEHd4VG9DbGFpbVVzZXJLRVkJAKYDAQUQd3hUb0NsYWltVXNlck5ldwkAzAgCCQEMSW50ZWdlckVudHJ5AgUjd3hQZXJMcEludGVncmFsVXNlckxhc3RVcGRIZWlnaHRLRVkFI3d4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0VXBkSGVpZ2h0TmV3CQDMCAIJAQtTdHJpbmdFbnRyeQIFGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0S0VZCQCmAwEFGnd4UGVyTHBJbnRlZ3JhbFVzZXJMYXN0TmV3BQNuaWwFBWRlYnVnARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAgECEVBlcm1pc3Npb24gZGVuaWVkAQhtdXN0VGhpcwEBaQMJAAACCAUBaQZjYWxsZXIFBHRoaXMGBRVwZXJtaXNzaW9uRGVuaWVkRXJyb3IBC211c3RNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgMJAAECBQckbWF0Y2gwAgRVbml0AwkAAAIIBQFpBmNhbGxlcgUEdGhpcwYFFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAgECC01hdGNoIGVycm9yCwFpAQtjb25zdHJ1Y3RvcgERZmFjdG9yeUFkZHJlc3NTdHIEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5RmFjdG9yeUFkZHJlc3MABRFmYWN0b3J5QWRkcmVzc1N0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNvbnN0cnVjdG9yVjIBFnZvdGluZ0VtaXNzaW9uQ29udHJhY3QEBWNoZWtzCQDMCAIJAQttdXN0TWFuYWdlcgEFAWkJAMwIAgMJAQIhPQIJAKYIAQUWdm90aW5nRW1pc3Npb25Db250cmFjdAUEdW5pdAYCKGludmFsaWQgdm90aW5nIGVtaXNzaW9uIGNvbnRyYWN0IGFkZHJlc3MFA25pbAMJAAACBQVjaGVrcwUFY2hla3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QABRZ2b3RpbmdFbWlzc2lvbkNvbnRyYWN0BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQACAQISTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAIFBWhhc1BNBQVoYXNQTQQHY2hlY2tQTQMJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkJAQV2YWx1ZQEFAnBtBgkAAgECG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARNrZXlNYW5hZ2VyUHVibGljS2V5AAkA2AQBCQEFdmFsdWUBBQJwbQkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3Rha2UAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQI0aW52YWxpZCBwYXltZW50IC0gZXhhY3Qgb25lIHBheW1lbnQgbXVzdCBiZSBhdHRhY2hlZAQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAECWxwQXNzZXRJZAkBBXZhbHVlAQgFA3BtdAdhc3NldElkBAxscEFzc2V0SWRTdHIJANgEAQUJbHBBc3NldElkBAZhbW91bnQIBQNwbXQGYW1vdW50BA5wb29sQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD2ZhY3RvcnlDb250cmFjdAkBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQUMbHBBc3NldElkU3RyCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyBAljYWxsZXJTdHIJAKUIAQgFAWkGY2FsbGVyBA51c2VyQWRkcmVzc1N0cgMJAAACBQljYWxsZXJTdHIFDnBvb2xBZGRyZXNzU3RyCQClCAEIBQFpDG9yaWdpbkNhbGxlcgUJY2FsbGVyU3RyBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAQUPc3Rha2VkQnlVc2VyS0VZBAtzdGFrZWRUb3RhbAkBCnJlYWRTdGFrZWQBBQ5zdGFrZWRUb3RhbEtFWQQNJHQwMTg3NzUxODg5MgkBEHJlZnJlc2hJTlRFR1JBTFMEBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBQ5wb29sQWRkcmVzc1N0cgUGYW1vdW50BBB3eFRvQ2xhaW1Vc2VyTmV3CAUNJHQwMTg3NzUxODg5MgJfMQQNaW50ZWdyYWxTVEFURQgFDSR0MDE4Nzc1MTg4OTICXzIEBWRlYnVnCAUNJHQwMTg3NzUxODg5MgJfMwQIbGlzdE5hbWUJARBnZXRVc2Vyc0xpc3ROYW1lAQUMbHBBc3NldElkU3RyBAtsaXN0QWN0aW9ucwMJAQxjb250YWluc05vZGUCBQhsaXN0TmFtZQUOdXNlckFkZHJlc3NTdHIFA25pbAkBEWluc2VydE5vZGVBY3Rpb25zAgUIbGlzdE5hbWUFDnVzZXJBZGRyZXNzU3RyCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgUPc3Rha2VkQnlVc2VyS0VZCQBkAgUMc3Rha2VkQnlVc2VyBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIFDnN0YWtlZFRvdGFsS0VZCQBkAgULc3Rha2VkVG90YWwFBmFtb3VudAkAzAgCCQEVT3BlcmF0aW9uSGlzdG9yeUVudHJ5BQIFc3Rha2UFDnVzZXJBZGRyZXNzU3RyBQxscEFzc2V0SWRTdHIFBmFtb3VudAgFAWkNdHJhbnNhY3Rpb25JZAUDbmlsBQ1pbnRlZ3JhbFNUQVRFBQtsaXN0QWN0aW9ucwFpAQd1bnN0YWtlAgxscEFzc2V0SWRTdHIGYW1vdW50BAlscEFzc2V0SWQJANkEAQUMbHBBc3NldElkU3RyBA5wb29sQWRkcmVzc1N0cgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFD2ZhY3RvcnlDb250cmFjdAkBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQUMbHBBc3NldElkU3RyCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyBAlwb29sQWRkb24JAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFmtleVN0YWJsZVBvb2xBZGRvbkFkZHIABQ5wb29sQWRkcmVzc1N0cgQJY2FsbGVyU3RyCQClCAEIBQFpBmNhbGxlcgQOdXNlckFkZHJlc3NTdHIDAwkAAAIFCWNhbGxlclN0cgUOcG9vbEFkZHJlc3NTdHIGCQAAAgUJY2FsbGVyU3RyBQlwb29sQWRkb24JAKUIAQgFAWkMb3JpZ2luQ2FsbGVyBQljYWxsZXJTdHIED3N0YWtlZEJ5VXNlcktFWQkBD2tleVN0YWtlZEJ5VXNlcgIFDnVzZXJBZGRyZXNzU3RyBQxscEFzc2V0SWRTdHIEDnN0YWtlZFRvdGFsS0VZCQEOa2V5U3Rha2VkVG90YWwBBQxscEFzc2V0SWRTdHIEDHN0YWtlZEJ5VXNlcgkBCnJlYWRTdGFrZWQBBQ9zdGFrZWRCeVVzZXJLRVkEC3N0YWtlZFRvdGFsCQEKcmVhZFN0YWtlZAEFDnN0YWtlZFRvdGFsS0VZBA1pbnRlZ3JhbFNUQVRFCAkBEHJlZnJlc2hJTlRFR1JBTFMEBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBQ5wb29sQWRkcmVzc1N0cgkBAS0BBQZhbW91bnQCXzIECGxpc3ROYW1lCQEQZ2V0VXNlcnNMaXN0TmFtZQEFDGxwQXNzZXRJZFN0cgQLbGlzdEFjdGlvbnMDAwkBDGNvbnRhaW5zTm9kZQIFCGxpc3ROYW1lBQ51c2VyQWRkcmVzc1N0cgkAAAIFBmFtb3VudAUMc3Rha2VkQnlVc2VyBwkBEWRlbGV0ZU5vZGVBY3Rpb25zAgUIbGlzdE5hbWUFDnVzZXJBZGRyZXNzU3RyBQNuaWwEDWNsYWltZWRCeVVzZXIJARlnZXRCaWdJbnRGcm9tU3RyaW5nT3JaZXJvAgUEdGhpcwkBEGtleUNsYWltZWRCeVVzZXICBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBAtwb29sQWRkcmVzcwkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUMbHBBc3NldElkU3RyBBB3eFRvQ2xhaW1Vc2VyTmV3CAkBEHJlZnJlc2hJTlRFR1JBTFMEBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBQtwb29sQWRkcmVzcwAAAl8xBBBhdmFpbGFibGVUb0NsYWltCQC4AgIFEHd4VG9DbGFpbVVzZXJOZXcFDWNsYWltZWRCeVVzZXIEAXIDCQC/AgIFEGF2YWlsYWJsZVRvQ2xhaW0FCnplcm9CaWdJbnQJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQ51c2VyQWRkcmVzc1N0cgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUBcgUBcgMJAGYCBQZhbW91bnQFDHN0YWtlZEJ5VXNlcgkAAgECJHBhc3NlZCBhbW91bnQgaXMgbGVzcyB0aGVuIGF2YWlsYWJsZQkAzggCCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIFD3N0YWtlZEJ5VXNlcktFWQkAZQIFDHN0YWtlZEJ5VXNlcgUGYW1vdW50CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQ5zdGFrZWRUb3RhbEtFWQkAZQIFC3N0YWtlZFRvdGFsBQZhbW91bnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyBQZhbW91bnQFCWxwQXNzZXRJZAkAzAgCCQEVT3BlcmF0aW9uSGlzdG9yeUVudHJ5BQIHdW5zdGFrZQUOdXNlckFkZHJlc3NTdHIFDGxwQXNzZXRJZFN0cgUGYW1vdW50CAUBaQ10cmFuc2FjdGlvbklkBQNuaWwFDWludGVncmFsU1RBVEUFC2xpc3RBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBB2NsYWltV3gBDGxwQXNzZXRJZFN0cgQOdXNlckFkZHJlc3NTdHIJAKUIAQgFAWkGY2FsbGVyBAZyZXN1bHQJAPwHBAUEdGhpcwIPY2xhaW1XeElOVEVSTkFMCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQ51c2VyQWRkcmVzc1N0cgUDbmlsBQNuaWwJAJQKAgUDbmlsBQZyZXN1bHQBaQEPY2xhaW1XeElOVEVSTkFMAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIEC2NoZWNrQ2FsbGVyCQEIbXVzdFRoaXMBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ51c2VyQWRkcmVzc1N0cgIlY2xhaW1XeElOVEVSTkFMOiBpbnZhbGlkIHVzZXIgYWRkcmVzcwQOcG9vbEFkZHJlc3NTdHIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFDGxwQXNzZXRJZFN0cgQQY2xhaW1lZEJ5VXNlcktFWQkBEGtleUNsYWltZWRCeVVzZXICBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBA9jbGFpbWVkVG90YWxLRVkJAQ9rZXlDbGFpbWVkVG90YWwBBQxscEFzc2V0SWRTdHIEGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkJARlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkAgUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgQbY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkS0VZCQEba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkAgUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgQNY2xhaW1lZEJ5VXNlcgkBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CBQR0aGlzBRBjbGFpbWVkQnlVc2VyS0VZBBZjbGFpbWVkQnlVc2VyTWluUmV3YXJkCQEZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybwIFBHRoaXMFGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkEGGNsYWltZWRCeVVzZXJCb29zdFJld2FyZAkBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CBQR0aGlzBRtjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRLRVkEDGNsYWltZWRUb3RhbAkBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CBQR0aGlzBQ9jbGFpbWVkVG90YWxLRVkEDSR0MDIyNTkwMjI3MDIJARByZWZyZXNoSU5URUdSQUxTBAUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgUOcG9vbEFkZHJlc3NTdHIAAAQQd3hUb0NsYWltVXNlck5ldwgFDSR0MDIyNTkwMjI3MDICXzEEDWludGVncmFsU1RBVEUIBQ0kdDAyMjU5MDIyNzAyAl8yBAVkZWJ1ZwgFDSR0MDIyNTkwMjI3MDICXzMEEGF2YWlsYWJsZVRvQ2xhaW0JAJgDAQkAzAgCCQC4AgIFEHd4VG9DbGFpbVVzZXJOZXcFDWNsYWltZWRCeVVzZXIJAMwIAgUKemVyb0JpZ0ludAUDbmlsAwkAwAICBQp6ZXJvQmlnSW50BRBhdmFpbGFibGVUb0NsYWltCQACAQIQbm90aGluZyB0byBjbGFpbQQSd3hBbW91bnRCb29zdFRvdGFsCQCWAwEJAMwIAgkBBWFzSW50AQkAkQMCCQEJYXNBbnlMaXN0AQkA/AcEBRBib29zdGluZ0NvbnRyYWN0AgxjbGFpbVd4Qm9vc3QJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFDnVzZXJBZGRyZXNzU3RyBQNuaWwFA25pbAAACQDMCAIAAAUDbmlsBA1taW5SZXdhcmRQYXJ0BRBhdmFpbGFibGVUb0NsYWltBA9ib29zdFJld2FyZFBhcnQJAJkDAQkAzAgCCQC5AgIFDW1pblJld2FyZFBhcnQJALYCAQACCQDMCAIJALYCAQUSd3hBbW91bnRCb29zdFRvdGFsBQNuaWwECXd4QXNzZXRJZAkBDGFzQnl0ZVZlY3RvcgEJAJEDAgkBCWFzQW55TGlzdAEJAPwHBAUQZW1pc3Npb25Db250cmFjdAIEZW1pdAkAzAgCCQCgAwEFDW1pblJld2FyZFBhcnQFA25pbAUDbmlsAAAECWVtaXRCb29zdAkBCWFzQW55TGlzdAEJAPwHBAUQZW1pc3Npb25Db250cmFjdAIEZW1pdAkAzAgCCQCgAwEFD2Jvb3N0UmV3YXJkUGFydAUDbmlsBQNuaWwDCQAAAgUJZW1pdEJvb3N0BQllbWl0Qm9vc3QEEmNsYWltZWRCeVVzZXJWYWx1ZQkAtwICBQ1jbGFpbWVkQnlVc2VyBRBhdmFpbGFibGVUb0NsYWltBB5jbGFpbWVkQnlVc2VyTWluUmV3YXJkUGx1c1BhcnQJALcCAgUWY2xhaW1lZEJ5VXNlck1pblJld2FyZAUNbWluUmV3YXJkUGFydAQrY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkUGx1c0Jvb3N0UmV3YXJkUGFydAkAtwICBRZjbGFpbWVkQnlVc2VyTWluUmV3YXJkBQ1taW5SZXdhcmRQYXJ0BCBjbGFpbWVkVG90YWxQbHVzQXZhaWxhYmxlVG9DbGFpbQkAtwICBRZjbGFpbWVkQnlVc2VyTWluUmV3YXJkBQ1taW5SZXdhcmRQYXJ0CQDMCAIJAQtTdHJpbmdFbnRyeQIFEGNsYWltZWRCeVVzZXJLRVkJAKYDAQUSY2xhaW1lZEJ5VXNlclZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQIFGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkJAKYDAQUeY2xhaW1lZEJ5VXNlck1pblJld2FyZFBsdXNQYXJ0CQDMCAIJAQtTdHJpbmdFbnRyeQIFG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWQkApgMBBStjbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmRQbHVzQm9vc3RSZXdhcmRQYXJ0CQDMCAIJAQtTdHJpbmdFbnRyeQIFD2NsYWltZWRUb3RhbEtFWQkApgMBBSBjbGFpbWVkVG90YWxQbHVzQXZhaWxhYmxlVG9DbGFpbQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwkAoAMBBQ1taW5SZXdhcmRQYXJ0BQl3eEFzc2V0SWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwULdXNlckFkZHJlc3MJAKADAQUPYm9vc3RSZXdhcmRQYXJ0BQl3eEFzc2V0SWQJAMwIAgkBFU9wZXJhdGlvbkhpc3RvcnlFbnRyeQUCBWNsYWltBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyCQCgAwEFEGF2YWlsYWJsZVRvQ2xhaW0IBQFpDXRyYW5zYWN0aW9uSWQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ9jbGFpbVd4UkVBRE9OTFkCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgQPc3Rha2VkQnlVc2VyS0VZCQEPa2V5U3Rha2VkQnlVc2VyAgUOdXNlckFkZHJlc3NTdHIFDGxwQXNzZXRJZFN0cgQOc3Rha2VkVG90YWxLRVkJAQ5rZXlTdGFrZWRUb3RhbAEFDGxwQXNzZXRJZFN0cgQQY2xhaW1lZEJ5VXNlcktFWQkBEGtleUNsYWltZWRCeVVzZXICBQxscEFzc2V0SWRTdHIFDnVzZXJBZGRyZXNzU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAQUPc3Rha2VkQnlVc2VyS0VZBAtzdGFrZWRUb3RhbAkBCnJlYWRTdGFrZWQBBQ5zdGFrZWRUb3RhbEtFWQQNY2xhaW1lZEJ5VXNlcgkBGWdldEJpZ0ludEZyb21TdHJpbmdPclplcm8CBQR0aGlzBRBjbGFpbWVkQnlVc2VyS0VZBA5wb29sQWRkcmVzc1N0cgkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFD2ZhY3RvcnlDb250cmFjdAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUMbHBBc3NldElkU3RyBApwb29sV2VpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9mYWN0b3J5Q29udHJhY3QJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEFDnBvb2xBZGRyZXNzU3RyBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAQxnZXRJbnRPckZhaWwCBRBlbWlzc2lvbkNvbnRyYWN0CQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAQSZW1pc3Npb25TdGFydEJsb2NrCQEMZ2V0SW50T3JGYWlsAgUQZW1pc3Npb25Db250cmFjdAkBFWtleUVtaXNzaW9uU3RhcnRCbG9jawAEDHBhc3NlZEJsb2NrcwMJAGYCBRJlbWlzc2lvblN0YXJ0QmxvY2sFBmhlaWdodAAACQBlAgUGaGVpZ2h0BRJlbWlzc2lvblN0YXJ0QmxvY2sEDnBvb2xXeEVtaXNzaW9uCQBrAwkAaAIFEnd4RW1pc3Npb25QZXJCbG9jawUMcGFzc2VkQmxvY2tzBQpwb29sV2VpZ2h0BQ5QT09MV0VJR0hUTVVMVAQMdXNlcld4UmV3YXJkCQBrAwUOcG9vbFd4RW1pc3Npb24FDHN0YWtlZEJ5VXNlcgULc3Rha2VkVG90YWwEDSR0MDI1MzQ0MjU0NTYJARByZWZyZXNoSU5URUdSQUxTBAUMbHBBc3NldElkU3RyBQ51c2VyQWRkcmVzc1N0cgUOcG9vbEFkZHJlc3NTdHIAAAQQd3hUb0NsYWltVXNlck5ldwgFDSR0MDI1MzQ0MjU0NTYCXzEEDWludGVncmFsU1RBVEUIBQ0kdDAyNTM0NDI1NDU2Al8yBAVkZWJ1ZwgFDSR0MDI1MzQ0MjU0NTYCXzMEEGF2YWlsYWJsZVRvQ2xhaW0JAJgDAQkAzAgCCQC4AgIFEHd4VG9DbGFpbVVzZXJOZXcFDWNsYWltZWRCeVVzZXIJAMwIAgUKemVyb0JpZ0ludAUDbmlsBA5ib29zdEludlJlc3VsdAkBCWFzQW55TGlzdAEJAPwHBAUQYm9vc3RpbmdDb250cmFjdAIUY2xhaW1XeEJvb3N0UkVBRE9OTFkJAMwIAgUMbHBBc3NldElkU3RyCQDMCAIFDnVzZXJBZGRyZXNzU3RyBQNuaWwFA25pbAQSd3hBbW91bnRCb29zdFRvdGFsCQCWAwEJAMwIAgkBBWFzSW50AQkAkQMCBQ5ib29zdEludlJlc3VsdAAACQDMCAIAAAUDbmlsBApib29zdERlYnVnCQEIYXNTdHJpbmcBCQCRAwIFDmJvb3N0SW52UmVzdWx0AAEEDW1pblJld2FyZFBhcnQFEGF2YWlsYWJsZVRvQ2xhaW0ED2Jvb3N0UmV3YXJkUGFydAkAmQMBCQDMCAIJALkCAgUNbWluUmV3YXJkUGFydAkAtgIBAAIJAMwIAgkAtgIBBRJ3eEFtb3VudEJvb3N0VG90YWwFA25pbAQLdG90YWxSZXdhcmQJALcCAgUNbWluUmV3YXJkUGFydAUPYm9vc3RSZXdhcmRQYXJ0CQCUCgIFA25pbAkAuQkCCQDMCAICDiVzJXMlZCVkJWQlZCVzCQDMCAIFDGxwQXNzZXRJZFN0cgkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCCQCmAwEFC3RvdGFsUmV3YXJkCQDMCAIJAKYDAQUNY2xhaW1lZEJ5VXNlcgkAzAgCCQCmAwEFDW1pblJld2FyZFBhcnQJAMwIAgkApgMBBQ9ib29zdFJld2FyZFBhcnQJAMwIAgkArAICCQCsAgIJAKwCAgkArAICBQVkZWJ1ZwICOjoJAKQDAQUMdXNlcld4UmV3YXJkAgk6OkJPT1NUOjoFCmJvb3N0RGVidWcFA25pbAUDU0VQAWkBEnVzZXJzTGlzdFRyYXZlcnNhbAEJbHBBc3NldElkBAtjaGVja0NhbGxlcgMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBGWtleVZvdGluZ0VtaXNzaW9uQ29udHJhY3QAAgAGCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQIbGlzdE5hbWUJARBnZXRVc2Vyc0xpc3ROYW1lAQUJbHBBc3NldElkBAp1c2VyT3JVbml0CQCiCAEJAQtrZXlOZXh0VXNlcgEFCWxwQXNzZXRJZAQKaGVhZE9yVW5pdAkAoggBCQELa2V5TGlzdEhlYWQBBQhsaXN0TmFtZQQHJG1hdGNoMAUKdXNlck9yVW5pdAMJAAECBQckbWF0Y2gwAgRVbml0BAckbWF0Y2gxBQpoZWFkT3JVbml0AwkAAQIFByRtYXRjaDECBFVuaXQJAJQKAgUDbmlsBwMJAAECBQckbWF0Y2gxAgZTdHJpbmcEBGhlYWQFByRtYXRjaDEJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5TmV4dFVzZXIBBQlscEFzc2V0SWQFBGhlYWQFA25pbAYJAAIBAgtNYXRjaCBlcnJvcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEC3VzZXJBZGRyZXNzBQckbWF0Y2gwBA1jbGFpbWVkQnlVc2VyCQEZZ2V0QmlnSW50RnJvbVN0cmluZ09yWmVybwIFBHRoaXMJARBrZXlDbGFpbWVkQnlVc2VyAgUJbHBBc3NldElkBQt1c2VyQWRkcmVzcwQLcG9vbEFkZHJlc3MJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQ9mYWN0b3J5Q29udHJhY3QJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFCWxwQXNzZXRJZAQQd3hUb0NsYWltVXNlck5ldwgJARByZWZyZXNoSU5URUdSQUxTBAUJbHBBc3NldElkBQt1c2VyQWRkcmVzcwULcG9vbEFkZHJlc3MAAAJfMQQQYXZhaWxhYmxlVG9DbGFpbQkAuAICBRB3eFRvQ2xhaW1Vc2VyTmV3BQ1jbGFpbWVkQnlVc2VyBAFyAwkAvwICBRBhdmFpbGFibGVUb0NsYWltBQp6ZXJvQmlnSW50CQD8BwQFBHRoaXMCD2NsYWltV3hJTlRFUk5BTAkAzAgCBQlscEFzc2V0SWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDbmlsBQR1bml0AwkAAAIFAXIFAXIEDm5leHRVc2VyT3JVbml0CQCiCAEJAQtrZXlMaXN0TmV4dAIFCGxpc3ROYW1lBQt1c2VyQWRkcmVzcwQHJG1hdGNoMQUObmV4dFVzZXJPclVuaXQDCQABAgUHJG1hdGNoMQIEVW5pdAkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlOZXh0VXNlcgEFCWxwQXNzZXRJZAUDbmlsBwMJAAECBQckbWF0Y2gxAgZTdHJpbmcECG5leHRVc2VyBQckbWF0Y2gxCQCUCgIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleU5leHRVc2VyAQUJbHBBc3NldElkBQhuZXh0VXNlcgUDbmlsBgkAAgECC01hdGNoIGVycm9yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQILTWF0Y2ggZXJyb3IJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOb25Nb2RpZnlXZWlnaHQCDGxwQXNzZXRJZFN0cg5wb29sQWRkcmVzc1N0cgMJAQIhPQIIBQFpBmNhbGxlcgUPZmFjdG9yeUNvbnRyYWN0CQACAQIScGVybWlzc2lvbnMgZGVuaWVkBA0kdDAyNzgwNzI3OTE3CQEUcmVmcmVzaFBvb2xJTlRFR1JBTFMDBQxscEFzc2V0SWRTdHIFDnBvb2xBZGRyZXNzU3RyAAAEEnd4UGVyTHBJbnRlZ3JhbE5ldwgFDSR0MDI3ODA3Mjc5MTcCXzEEEXBvb2xJbnRlZ3JhbFNUQVRFCAUNJHQwMjc4MDcyNzkxNwJfMgQJcG9vbERFQlVHCAUNJHQwMjc4MDcyNzkxNwJfMwURcG9vbEludGVncmFsU1RBVEUBAnR4AQZ2ZXJpZnkABA90YXJnZXRQdWJsaWNLZXkEByRtYXRjaDAJARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAJwawUHJG1hdGNoMAUCcGsDCQABAgUHJG1hdGNoMAIEVW5pdAgFAnR4D3NlbmRlclB1YmxpY0tleQkAAgECC01hdGNoIGVycm9yCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAABQ90YXJnZXRQdWJsaWNLZXn9mf+Q", "chainId": 84, "height": 2120689, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HVd3EkU4EtN3uSgoEeaoGs9jwfyGoPzhTsBR5cR96Bf8 Next: 2mZgu1Cjhs5Cj2gYCuR9ChbfZfn85ieLWKzf7dw89and Diff:
OldNewDifferences
1717
1818 let h = toBigInt(1)
1919
20-let i = "migrator"
21-
22-func j (k) = {
23- let l = k
24- if ($isInstanceOf(l, "List[Any]"))
20+func i (j) = {
21+ let k = j
22+ if ($isInstanceOf(k, "List[Any]"))
2523 then {
26- let m = l
27- m
24+ let l = k
25+ l
2826 }
2927 else throw("fail to cast into List[Any]")
3028 }
3129
3230
33-func n (k) = {
34- let l = k
35- if ($isInstanceOf(l, "Int"))
31+func m (j) = {
32+ let k = j
33+ if ($isInstanceOf(k, "Int"))
3634 then {
37- let o = l
38- o
35+ let n = k
36+ n
3937 }
4038 else throw("fail to cast into Int")
4139 }
4240
4341
44-func p (k) = {
45- let l = k
46- if ($isInstanceOf(l, "String"))
42+func o (j) = {
43+ let k = j
44+ if ($isInstanceOf(k, "String"))
4745 then {
48- let q = l
49- q
46+ let p = k
47+ p
5048 }
5149 else throw("fail to cast into Int")
5250 }
5351
5452
55-func r (k) = {
56- let l = k
57- if ($isInstanceOf(l, "ByteVector"))
53+func q (j) = {
54+ let k = j
55+ if ($isInstanceOf(k, "ByteVector"))
5856 then {
59- let s = l
60- s
57+ let r = k
58+ r
6159 }
6260 else throw("fail to cast into Int")
6361 }
6462
6563
66-func t (u,v) = valueOrErrorMessage(getString(u, v), (("mandatory this." + v) + " is not defined"))
64+func s (t,u) = valueOrErrorMessage(getString(t, u), (("mandatory this." + u) + " is not defined"))
6765
6866
69-func w (u,v) = valueOrErrorMessage(getString(u, v), (((("mandatory " + toString(u)) + ".") + v) + " is not defined"))
67+func v (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
7068
7169
72-func x (u,v) = valueOrElse(getInteger(u, v), 0)
70+func w (t,u) = valueOrElse(getInteger(t, u), 0)
7371
7472
75-func y (u,v,z) = valueOrElse(getInteger(u, v), z)
73+func x (t,u,y) = valueOrElse(getInteger(t, u), y)
7674
7775
78-func A (u,v) = valueOrErrorMessage(getInteger(u, v), (("mandatory this." + v) + " is not defined"))
76+func z (t,u) = valueOrErrorMessage(getInteger(t, u), (("mandatory this." + u) + " is not defined"))
7977
8078
81-func B (u,v) = value(parseBigInt(valueOrElse(getString(u, v), "0")))
79+func A (t,u) = value(parseBigInt(valueOrElse(getString(t, u), "0")))
8280
8381
84-func C (u,v,z) = {
85- let l = getString(u, v)
86- if ($isInstanceOf(l, "String"))
82+func B (t,u,y) = {
83+ let k = getString(t, u)
84+ if ($isInstanceOf(k, "String"))
8785 then {
88- let D = l
89- value(parseBigInt(D))
86+ let C = k
87+ value(parseBigInt(C))
9088 }
91- else if ($isInstanceOf(l, "Unit"))
92- then z
89+ else if ($isInstanceOf(k, "Unit"))
90+ then y
9391 else throw("Match error")
9492 }
9593
9694
97-func E (F,G) = fraction(toBigInt(F), d, toBigInt(G))
95+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
9896
9997
100-func H (k,I) = toInt(fraction(k, toBigInt(I), d))
98+func G (j,H) = toInt(fraction(j, toBigInt(H), d))
10199
102100
103-func J () = "%s%s__config__factoryAddress"
101+func I () = "%s%s__config__factoryAddress"
104102
105103
106-func K () = "%s__votingEmissionContract"
104+func J () = "%s__votingEmissionContract"
107105
108106
109-let L = 1
107+let K = 1
110108
111-let M = 2
109+let L = 2
112110
113-let N = 3
111+let M = 3
114112
115-let O = 4
113+let N = 4
116114
117-let P = 5
115+let O = 5
118116
119-let Q = 6
117+let P = 6
120118
121-let R = 7
119+let Q = 7
122120
123-func S () = "%s__factoryConfig"
121+func R () = "%s__factoryConfig"
124122
125123
126-func T () = "%s__managerPublicKey"
124+func S () = "%s__managerPublicKey"
127125
128126
129-func U () = "%s__pendingManagerPublicKey"
127+func T () = "%s__pendingManagerPublicKey"
130128
131129
132-func V () = "%s__stablePoolAddonAddr"
130+func U () = "%s__stablePoolAddonAddr"
133131
134132
135-func W (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
133+func V (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
136134
137135
138-func Y () = "%s__lpTokensList"
136+func X () = "%s__lpTokensList"
139137
140138
141-func Z (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
139+func Y (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
142140
143141
144-func aa (ab) = makeString(["%s%s", "poolWeight", ab], e)
142+func Z (aa) = makeString(["%s%s", "poolWeight", aa], e)
145143
146144
147-func ac (ad) = split(valueOrElse(getString(ad, Y()), ""), e)
145+func ab (ac) = split(valueOrElse(getString(ac, X()), ""), e)
148146
149147
150-func ae (ad) = split(w(ad, S()), e)
148+func ad (ac) = split(v(ac, R()), e)
151149
152150
153-func af (ag) = addressFromStringValue(ag[M])
151+func ae (af) = addressFromStringValue(af[L])
154152
155153
156-func ah (ag) = addressFromStringValue(ag[P])
154+func ag (af) = addressFromStringValue(af[O])
157155
158156
159-func ai (ag) = addressFromStringValue(ag[L])
157+func ah (af) = addressFromStringValue(af[K])
160158
161159
162-func aj () = "%s%s__ratePerBlock__current"
160+func ai () = "%s%s__ratePerBlock__current"
163161
164162
165-func ak () = "%s%s__ratePerBlockMax__current"
163+func aj () = "%s%s__ratePerBlockMax__current"
166164
167165
168-func al () = "%s%s__emission__startBlock"
166+func ak () = "%s%s__emission__startBlock"
169167
170168
171-func am () = "%s%s__emission__duration"
169+func al () = "%s%s__emission__duration"
172170
173171
174-func an () = "%s%s__emission__endBlock"
172+func am () = "%s%s__emission__endBlock"
175173
176174
177-func ao (ap,aq) = makeString(["%s%s%s__staked", ap, aq], e)
175+func an (ao,ap) = makeString(["%s%s%s__staked", ao, ap], e)
178176
179177
180-func ar (aq) = ("%s%s%s__staked__total__" + aq)
178+func aq (ap) = ("%s%s%s__staked__total__" + ap)
181179
182180
183-func as (aq,ap) = makeString(["%s%s%s__claimed", ap, aq], e)
181+func ar (ap,ao) = makeString(["%s%s%s__claimed", ao, ap], e)
184182
185183
186-func at (aq,ap) = makeString(["%s%s%s__claimedMinReward", ap, aq], e)
184+func as (ap,ao) = makeString(["%s%s%s__claimedMinReward", ao, ap], e)
187185
188186
189-func au (aq,ap) = makeString(["%s%s%s__claimedBoostReward", ap, aq], e)
187+func at (ap,ao) = makeString(["%s%s%s__claimedBoostReward", ao, ap], e)
190188
191189
192-func av (aq) = makeString(["%s%s%s__claimed__total", aq], e)
190+func au (ap) = makeString(["%s%s%s__claimed__total", ap], e)
193191
194192
195-func aw (v) = valueOrElse(getInteger(this, v), 0)
193+func av (u) = valueOrElse(getInteger(this, u), 0)
196194
197195
198-func ax (ay) = makeString(["%s%s%s", ay, "total", "bal"], e)
196+func aw (ax) = makeString(["%s%s%s", ax, "total", "bal"], e)
199197
200198
201-func az (ay,aA) = makeString(["%s%s%s", ay, aA, "bal"], e)
199+func ay (ax,az) = makeString(["%s%s%s", ax, az, "bal"], e)
202200
203201
204-func aB (ay) = makeString(["%s%s%s", ay, "total", "balINT"], e)
202+func aA (ax) = makeString(["%s%s%s", ax, "total", "balINT"], e)
205203
206204
207-func aC (ay,aA) = makeString(["%s%s%s", ay, aA, "balINT"], e)
205+func aB (ax,az) = makeString(["%s%s%s", ax, az, "balINT"], e)
208206
209207
210-func aD (ay) = makeString(["%s%s%s", ay, "total", "lastUpd"], e)
208+func aC (ax) = makeString(["%s%s%s", ax, "total", "lastUpd"], e)
211209
212210
213-func aE (ay,aA) = makeString(["%s%s%s", ay, aA, "lastUpd"], e)
211+func aD (ax,az) = makeString(["%s%s%s", ax, az, "lastUpd"], e)
214212
215213
216-func aF (ay) = makeString(["%s%s%s%s", ay, "common", "lpInt"], e)
214+func aE (ax) = makeString(["%s%s%s%s", ax, "common", "lpInt"], e)
217215
218216
219-func aG (ay) = makeString(["%s%s%s%s", ay, "common", "lpIntH"], e)
217+func aF (ax) = makeString(["%s%s%s%s", ax, "common", "lpIntH"], e)
220218
221219
222-func aH (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpInt"], e)
220+func aG (ax,az) = makeString(["%s%s%s%s", ax, az, "lpInt"], e)
223221
224222
225-func aI (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpIntH"], e)
223+func aH (ax,az) = makeString(["%s%s%s%s", ax, az, "lpIntH"], e)
226224
227225
228-func aJ (ay) = makeString(["%s", ay, "wxPerLp"], e)
226+func aI (ax) = makeString(["%s", ax, "wxPerLp"], e)
229227
230228
231-func aK (ay) = makeString(["%s", ay, "wxPerLpX18"], e)
229+func aJ (ax) = makeString(["%s", ax, "wxPerLpX18"], e)
232230
233231
234-func aL (ay,aA) = makeString(["%s%s%s%s", ay, aA, "uIntL"], e)
232+func aK (ax,az) = makeString(["%s%s%s%s", ax, az, "uIntL"], e)
235233
236234
237-func aM (aN,aA,aO) = makeString(["%s%s%s%s__history", aN, aA, aO], e)
235+func aL (aM,az,aN) = makeString(["%s%s%s%s__history", aM, az, aN], e)
238236
239237
240-func aP (aA,ay,aN,aQ) = makeString(["%s%s%s%d%d%d", aA, ay, aN, toString(height), toString(lastBlock.timestamp), toString(aQ)], e)
238+func aO (az,ax,aM,aP) = makeString(["%s%s%s%d%d%d", az, ax, aM, toString(height), toString(lastBlock.timestamp), toString(aP)], e)
241239
242240
243-func aR (aN,aA,ay,aQ,aS) = StringEntry(aM(aN, aA, toBase58String(aS)), aP(aA, ay, aN, aQ))
241+func aQ (aM,az,ax,aP,aR) = StringEntry(aL(aM, az, toBase58String(aR)), aO(az, ax, aM, aP))
244242
245243
246-let aT = t(this, J())
244+let aS = s(this, I())
247245
248-let aU = addressFromStringValue(aT)
246+let aT = addressFromStringValue(aS)
249247
250-let ag = ae(aU)
248+let af = ad(aT)
251249
252-let aV = ah(ag)
250+let aU = ag(af)
253251
254-let aW = af(ag)
252+let aV = ae(af)
255253
256-func aX (ay) = makeString(["%s%s", ay, "nextUser"], e)
254+func aW (ax) = makeString(["%s%s", ax, "nextUser"], e)
257255
258256
259-func aY (ay) = makeString(["users", ay], e)
257+func aX (ax) = makeString(["users", ax], e)
260258
261259
262-func aZ (ba) = makeString(["%s%s%s", ba, "head"], e)
260+func aY (aZ) = makeString(["%s%s%s", aZ, "head"], e)
263261
264262
265-func bb (ba) = makeString(["%s%s%s", ba, "size"], e)
263+func ba (aZ) = makeString(["%s%s%s", aZ, "size"], e)
266264
267265
268-func bc (ba,bd) = makeString(["%s%s%s%s", ba, bd, "prev"], e)
266+func bb (aZ,bc) = makeString(["%s%s%s%s", aZ, bc, "prev"], e)
269267
270268
271-func be (ba,bd) = makeString(["%s%s%s%s", ba, bd, "next"], e)
269+func bd (aZ,bc) = makeString(["%s%s%s%s", aZ, bc, "next"], e)
272270
273271
274-func bf (ba,bd) = {
275- let bg = getString(this, aZ(ba))
276- let bh = getString(this, bc(ba, bd))
277- let bi = getString(this, be(ba, bd))
278- if (if ((bd == valueOrElse(bg, "")))
272+func be (aZ,bc) = {
273+ let bf = getString(this, aY(aZ))
274+ let bg = getString(this, bb(aZ, bc))
275+ let bh = getString(this, bd(aZ, bc))
276+ if (if ((bc == valueOrElse(bf, "")))
279277 then true
280- else (bh != unit))
278+ else (bg != unit))
281279 then true
282- else (bi != unit)
280+ else (bh != unit)
283281 }
284282
285283
286-func bj (ba,bd) = {
287- let bg = getString(this, aZ(ba))
288- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
289- let bl = if (!(bf(ba, bd)))
284+func bi (aZ,bc) = {
285+ let bf = getString(this, aY(aZ))
286+ let bj = valueOrElse(getInteger(this, ba(aZ)), 0)
287+ let bk = if (!(be(aZ, bc)))
290288 then true
291289 else throw("Node exists")
292- if ((bl == bl))
293- then (([IntegerEntry(bb(ba), (bk + 1))] ++ (if ((bg != unit))
294- then [StringEntry(be(ba, bd), value(bg)), StringEntry(bc(ba, value(bg)), bd)]
295- else nil)) ++ [StringEntry(aZ(ba), bd)])
290+ if ((bk == bk))
291+ then (([IntegerEntry(ba(aZ), (bj + 1))] ++ (if ((bf != unit))
292+ then [StringEntry(bd(aZ, bc), value(bf)), StringEntry(bb(aZ, value(bf)), bc)]
293+ else nil)) ++ [StringEntry(aY(aZ), bc)])
296294 else throw("Strict value is not equal to itself.")
297295 }
298296
299297
300-func bm (ba,bd) = {
301- let bg = getString(this, aZ(ba))
302- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
303- let bh = getString(this, bc(ba, bd))
304- let bi = getString(this, be(ba, bd))
305- ([IntegerEntry(bb(ba), (bk - 1))] ++ (if (if ((bh != unit))
306- then (bi != unit)
298+func bl (aZ,bc) = {
299+ let bf = getString(this, aY(aZ))
300+ let bj = valueOrElse(getInteger(this, ba(aZ)), 0)
301+ let bg = getString(this, bb(aZ, bc))
302+ let bh = getString(this, bd(aZ, bc))
303+ ([IntegerEntry(ba(aZ), (bj - 1))] ++ (if (if ((bg != unit))
304+ then (bh != unit)
307305 else false)
308- then [StringEntry(be(ba, value(bh)), value(bi)), StringEntry(bc(ba, value(bi)), value(bh)), DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, bd))]
309- else if ((bi != unit))
310- then [StringEntry(aZ(ba), value(bi)), DeleteEntry(be(ba, bd)), DeleteEntry(bc(ba, value(bi)))]
311- else if ((bh != unit))
312- then [DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, value(bh)))]
313- else if ((bd == valueOrElse(bg, "")))
314- then [DeleteEntry(aZ(ba))]
315- else throw(((("invalid node: " + ba) + ".") + bd))))
306+ then [StringEntry(bd(aZ, value(bg)), value(bh)), StringEntry(bb(aZ, value(bh)), value(bg)), DeleteEntry(bb(aZ, bc)), DeleteEntry(bd(aZ, bc))]
307+ else if ((bh != unit))
308+ then [StringEntry(aY(aZ), value(bh)), DeleteEntry(bd(aZ, bc)), DeleteEntry(bb(aZ, value(bh)))]
309+ else if ((bg != unit))
310+ then [DeleteEntry(bb(aZ, bc)), DeleteEntry(bd(aZ, value(bg)))]
311+ else if ((bc == valueOrElse(bf, "")))
312+ then [DeleteEntry(aY(aZ))]
313+ else throw(((("invalid node: " + aZ) + ".") + bc))))
316314 }
317315
318316
319-func bn (bo,bp,bq,br) = if (if ((bp == g))
320- then (bo > g)
317+func bm (bn,bo,bp,bq) = if (if ((bo == g))
318+ then (bn > g)
321319 else false)
322320 then g
323- else if ((bo == g))
324- then bq
325- else if (if ((bp > g))
326- then (bo > g)
321+ else if ((bn == g))
322+ then bp
323+ else if (if ((bo > g))
324+ then (bn > g)
327325 else false)
328- then value(parseBigInt(t(this, br)))
326+ then value(parseBigInt(s(this, bq)))
329327 else throw("calcWxPerLpIntegralUserLast: unexpected state")
330328
331329
332-func bs (aq,bt,bu) = {
333- let bv = ar(aq)
334- let bw = toBigInt(aw(bv))
335- let bx = if ((bw == g))
330+func br (ap,bs,bt) = {
331+ let bu = aq(ap)
332+ let bv = toBigInt(av(bu))
333+ let bw = if ((bv == g))
336334 then h
337- else bw
338- let by = getIntegerValue(aU, aa(bt))
339- let bz = A(aV, al())
340- let bA = 1000
341- let bB = (A(aV, aj()) * bA)
342- let bC = fraction(bB, by, (f * 3))
343- let bD = aF(aq)
344- let bE = aG(aq)
345- let bF = aJ(aq)
346- let bG = y(this, bE, bz)
347- let bH = B(this, bD)
348- let bI = 0
349- let bJ = max([(height - bG), 0])
350- let bK = if ((bI != 0))
351- then toBigInt(bI)
352- else fraction(toBigInt(bC), toBigInt(b), bx)
353- let bL = (bw + toBigInt(bu))
354- let bM = if ((bL == g))
335+ else bv
336+ let bx = getIntegerValue(aT, Z(bs))
337+ let by = z(aU, ak())
338+ let bz = 1000
339+ let bA = (z(aU, ai()) * bz)
340+ let bB = fraction(bA, bx, (f * 3))
341+ let bC = aE(ap)
342+ let bD = aF(ap)
343+ let bE = aI(ap)
344+ let bF = x(this, bD, by)
345+ let bG = A(this, bC)
346+ let bH = 0
347+ let bI = max([(height - bF), 0])
348+ let bJ = if ((bH != 0))
349+ then toBigInt(bH)
350+ else fraction(toBigInt(bB), toBigInt(b), bw)
351+ let bK = (bv + toBigInt(bt))
352+ let bL = if ((bK == g))
355353 then h
356- else bL
357- let bq = (bH + (bK * toBigInt(bJ)))
358- let bN = (toBigInt(bC) / bM)
359- let bO = height
360- let bP = makeString([toString(bq), toString(bJ), toString(bK), toString(bw), toString(bC), toString(bB), toString(by)], "::")
361- $Tuple3(bq, [StringEntry(bD, toString(bq)), IntegerEntry(bE, bO), StringEntry(bF, toString(bN))], bP)
354+ else bK
355+ let bp = (bG + (bJ * toBigInt(bI)))
356+ let bM = (toBigInt(bB) / bL)
357+ let bN = height
358+ let bO = makeString([toString(bp), toString(bI), toString(bJ), toString(bv), toString(bB), toString(bA), toString(bx)], "::")
359+ $Tuple3(bp, [StringEntry(bC, toString(bp)), IntegerEntry(bD, bN), StringEntry(bE, toString(bM))], bO)
362360 }
363361
364362
365-func bQ (aq,ap,bt,bu) = {
366- let bR = bs(aq, bt, bu)
367- let bq = bR._1
368- let bS = bR._2
369- let bT = bR._3
370- let bA = 1000
371- let bU = ao(ap, aq)
372- let bo = aw(bU)
373- let bV = aH(aq, ap)
374- let bW = aI(aq, ap)
375- let br = aL(aq, ap)
376- let bX = B(this, bV)
377- let bp = x(this, bW)
378- let bY = bn(toBigInt(bo), toBigInt(bp), bq, br)
379- let bZ = (b * bA)
380- let ca = max([(bX + fraction((bq - bY), toBigInt(bo), toBigInt(bZ))), g])
381- let cb = bq
382- let cc = height
383- let bP = makeString([toString(bX), toString(bY), toString(bo), bT, toString(height)], "::")
384- $Tuple3(ca, (bS ++ [StringEntry(bV, toString(ca)), IntegerEntry(bW, cc), StringEntry(br, toString(cb))]), bP)
363+func bP (ap,ao,bs,bt) = {
364+ let bQ = br(ap, bs, bt)
365+ let bp = bQ._1
366+ let bR = bQ._2
367+ let bS = bQ._3
368+ let bz = 1000
369+ let bT = an(ao, ap)
370+ let bn = av(bT)
371+ let bU = aG(ap, ao)
372+ let bV = aH(ap, ao)
373+ let bq = aK(ap, ao)
374+ let bW = A(this, bU)
375+ let bo = w(this, bV)
376+ let bX = bm(toBigInt(bn), toBigInt(bo), bp, bq)
377+ let bY = (b * bz)
378+ let bZ = max([(bW + fraction((bp - bX), toBigInt(bn), toBigInt(bY))), g])
379+ let ca = bp
380+ let cb = height
381+ let bO = makeString([toString(bW), toString(bX), toString(bn), bS, toString(height)], "::")
382+ $Tuple3(bZ, (bR ++ [StringEntry(bU, toString(bZ)), IntegerEntry(bV, cb), StringEntry(bq, toString(ca))]), bO)
385383 }
386384
387385
388-func cd () = {
389- let l = getString(T())
390- if ($isInstanceOf(l, "String"))
386+func cc () = {
387+ let k = getString(S())
388+ if ($isInstanceOf(k, "String"))
391389 then {
392- let D = l
393- fromBase58String(D)
390+ let C = k
391+ fromBase58String(C)
394392 }
395- else if ($isInstanceOf(l, "Unit"))
393+ else if ($isInstanceOf(k, "Unit"))
396394 then unit
397395 else throw("Match error")
398396 }
399397
400398
401-func ce () = {
402- let l = getString(U())
403- if ($isInstanceOf(l, "String"))
399+func cd () = {
400+ let k = getString(T())
401+ if ($isInstanceOf(k, "String"))
404402 then {
405- let D = l
406- fromBase58String(D)
403+ let C = k
404+ fromBase58String(C)
407405 }
408- else if ($isInstanceOf(l, "Unit"))
406+ else if ($isInstanceOf(k, "Unit"))
409407 then unit
410408 else throw("Match error")
411409 }
412410
413411
414-let cf = throw("Permission denied")
412+let ce = throw("Permission denied")
415413
416-func cg (ch) = if ((ch.caller == this))
414+func cf (cg) = if ((cg.caller == this))
417415 then true
418- else cf
416+ else ce
419417
420418
421-func ci (ch) = {
422- let l = cd()
423- if ($isInstanceOf(l, "ByteVector"))
419+func ch (cg) = {
420+ let k = cc()
421+ if ($isInstanceOf(k, "ByteVector"))
424422 then {
425- let cj = l
426- if ((ch.callerPublicKey == cj))
423+ let ci = k
424+ if ((cg.callerPublicKey == ci))
427425 then true
428- else cf
426+ else ce
429427 }
430- else if ($isInstanceOf(l, "Unit"))
431- then if ((ch.caller == this))
428+ else if ($isInstanceOf(k, "Unit"))
429+ then if ((cg.caller == this))
432430 then true
433- else cf
431+ else ce
434432 else throw("Match error")
435433 }
436434
437435
438-@Callable(ch)
439-func constructor (ck) = {
440- let cl = ci(ch)
441- if ((cl == cl))
442- then [StringEntry(J(), ck)]
436+@Callable(cg)
437+func constructor (cj) = {
438+ let ck = ch(cg)
439+ if ((ck == ck))
440+ then [StringEntry(I(), cj)]
443441 else throw("Strict value is not equal to itself.")
444442 }
445443
446444
447445
448-@Callable(ch)
449-func constructorV2 (cm) = {
450- let cn = [ci(ch), if ((addressFromString(cm) != unit))
446+@Callable(cg)
447+func constructorV2 (cl) = {
448+ let cm = [ch(cg), if ((addressFromString(cl) != unit))
451449 then true
452450 else "invalid voting emission contract address"]
453- if ((cn == cn))
454- then [StringEntry(K(), cm)]
451+ if ((cm == cm))
452+ then [StringEntry(J(), cl)]
455453 else throw("Strict value is not equal to itself.")
456454 }
457455
458456
459457
460-@Callable(ch)
461-func setManager (co) = {
462- let cl = ci(ch)
463- if ((cl == cl))
458+@Callable(cg)
459+func setManager (cn) = {
460+ let ck = ch(cg)
461+ if ((ck == ck))
464462 then {
465- let cp = fromBase58String(co)
466- if ((cp == cp))
467- then [StringEntry(U(), co)]
463+ let co = fromBase58String(cn)
464+ if ((co == co))
465+ then [StringEntry(T(), cn)]
468466 else throw("Strict value is not equal to itself.")
469467 }
470468 else throw("Strict value is not equal to itself.")
472470
473471
474472
475-@Callable(ch)
473+@Callable(cg)
476474 func confirmManager () = {
477- let cq = ce()
478- let cr = if (isDefined(cq))
475+ let cp = cd()
476+ let cq = if (isDefined(cp))
479477 then true
480478 else throw("No pending manager")
481- if ((cr == cr))
479+ if ((cq == cq))
482480 then {
483- let cs = if ((ch.callerPublicKey == value(cq)))
481+ let cr = if ((cg.callerPublicKey == value(cp)))
484482 then true
485483 else throw("You are not pending manager")
486- if ((cs == cs))
487- then [StringEntry(T(), toBase58String(value(cq))), DeleteEntry(U())]
484+ if ((cr == cr))
485+ then [StringEntry(S(), toBase58String(value(cp))), DeleteEntry(T())]
488486 else throw("Strict value is not equal to itself.")
489487 }
490488 else throw("Strict value is not equal to itself.")
492490
493491
494492
495-@Callable(ch)
496-func stake () = {
497- let ct = if ((getBinary(this, i) != unit))
498- then throw("maintenance")
493+@Callable(cg)
494+func stake () = if ((size(cg.payments) != 1))
495+ then throw("invalid payment - exact one payment must be attached")
496+ else {
497+ let cs = cg.payments[0]
498+ let ax = value(cs.assetId)
499+ let ap = toBase58String(ax)
500+ let aP = cs.amount
501+ let bs = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
502+ let ct = toString(cg.caller)
503+ let ao = if ((ct == bs))
504+ then toString(cg.originCaller)
505+ else ct
506+ let bT = an(ao, ap)
507+ let bu = aq(ap)
508+ let bn = av(bT)
509+ let bv = av(bu)
510+ let cu = bP(ap, ao, bs, aP)
511+ let bZ = cu._1
512+ let cv = cu._2
513+ let bO = cu._3
514+ let aZ = aX(ap)
515+ let cw = if (be(aZ, ao))
516+ then nil
517+ else bi(aZ, ao)
518+ (([IntegerEntry(bT, (bn + aP)), IntegerEntry(bu, (bv + aP)), aQ("stake", ao, ap, aP, cg.transactionId)] ++ cv) ++ cw)
519+ }
520+
521+
522+
523+@Callable(cg)
524+func unstake (ap,aP) = {
525+ let ax = fromBase58String(ap)
526+ let bs = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
527+ let cx = valueOrElse(getString(this, U()), bs)
528+ let ct = toString(cg.caller)
529+ let ao = if (if ((ct == bs))
530+ then true
531+ else (ct == cx))
532+ then toString(cg.originCaller)
533+ else ct
534+ let bT = an(ao, ap)
535+ let bu = aq(ap)
536+ let bn = av(bT)
537+ let bv = av(bu)
538+ let cv = bP(ap, ao, bs, -(aP))._2
539+ let aZ = aX(ap)
540+ let cw = if (if (be(aZ, ao))
541+ then (aP == bn)
542+ else false)
543+ then bl(aZ, ao)
544+ else nil
545+ let cy = A(this, ar(ap, ao))
546+ let cz = v(aT, Y(ap))
547+ let bZ = bP(ap, ao, cz, 0)._1
548+ let cA = (bZ - cy)
549+ let cB = if ((cA > g))
550+ then invoke(this, "claimWxINTERNAL", [ap, ao], nil)
499551 else unit
500- if ((ct == ct))
501- then if ((size(ch.payments) != 1))
502- then throw("invalid payment - exact one payment must be attached")
503- else {
504- let cu = ch.payments[0]
505- let ay = value(cu.assetId)
506- let aq = toBase58String(ay)
507- let aQ = cu.amount
508- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
509- let cv = toString(ch.caller)
510- let ap = if ((cv == bt))
511- then toString(ch.originCaller)
512- else cv
513- let bU = ao(ap, aq)
514- let bv = ar(aq)
515- let bo = aw(bU)
516- let bw = aw(bv)
517- let cw = bQ(aq, ap, bt, aQ)
518- let ca = cw._1
519- let cx = cw._2
520- let bP = cw._3
521- let ba = aY(aq)
522- let cy = if (bf(ba, ap))
523- then nil
524- else bj(ba, ap)
525- (([IntegerEntry(bU, (bo + aQ)), IntegerEntry(bv, (bw + aQ)), aR("stake", ap, aq, aQ, ch.transactionId)] ++ cx) ++ cy)
526- }
552+ if ((cB == cB))
553+ then if ((aP > bn))
554+ then throw("passed amount is less then available")
555+ else (([IntegerEntry(bT, (bn - aP)), IntegerEntry(bu, (bv - aP)), ScriptTransfer(cg.caller, aP, ax), aQ("unstake", ao, ap, aP, cg.transactionId)] ++ cv) ++ cw)
527556 else throw("Strict value is not equal to itself.")
528557 }
529558
530559
531560
532-@Callable(ch)
533-func unstake (aq,aQ) = {
534- let ct = if ((getBinary(this, i) != unit))
535- then throw("maintenance")
536- else unit
537- if ((ct == ct))
538- then {
539- let ay = fromBase58String(aq)
540- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
541- let cz = valueOrElse(getString(this, V()), bt)
542- let cv = toString(ch.caller)
543- let ap = if (if ((cv == bt))
544- then true
545- else (cv == cz))
546- then toString(ch.originCaller)
547- else cv
548- let bU = ao(ap, aq)
549- let bv = ar(aq)
550- let bo = aw(bU)
551- let bw = aw(bv)
552- let cx = bQ(aq, ap, bt, -(aQ))._2
553- let ba = aY(aq)
554- let cy = if (if (bf(ba, ap))
555- then (aQ == bo)
556- else false)
557- then bm(ba, ap)
558- else nil
559- let cA = B(this, as(aq, ap))
560- let cB = w(aU, Z(aq))
561- let ca = bQ(aq, ap, cB, 0)._1
562- let cC = (ca - cA)
563- let cD = if ((cC > g))
564- then invoke(this, "claimWxINTERNAL", [aq, ap], nil)
565- else unit
566- if ((cD == cD))
567- then if ((aQ > bo))
568- then throw("passed amount is less then available")
569- else (([IntegerEntry(bU, (bo - aQ)), IntegerEntry(bv, (bw - aQ)), ScriptTransfer(ch.caller, aQ, ay), aR("unstake", ap, aq, aQ, ch.transactionId)] ++ cx) ++ cy)
570- else throw("Strict value is not equal to itself.")
571- }
572- else throw("Strict value is not equal to itself.")
561+@Callable(cg)
562+func claimWx (ap) = {
563+ let ao = toString(cg.caller)
564+ let cC = invoke(this, "claimWxINTERNAL", [ap, ao], nil)
565+ $Tuple2(nil, cC)
573566 }
574567
575568
576569
577-@Callable(ch)
578-func claimWx (aq) = {
579- let ap = toString(ch.caller)
580- let cE = invoke(this, "claimWxINTERNAL", [aq, ap], nil)
581- $Tuple2(nil, cE)
582- }
583-
584-
585-
586-@Callable(ch)
587-func claimWxINTERNAL (aq,ap) = {
588- let cl = cg(ch)
589- if ((cl == cl))
570+@Callable(cg)
571+func claimWxINTERNAL (ap,ao) = {
572+ let ck = cf(cg)
573+ if ((ck == ck))
590574 then {
591- let aA = valueOrErrorMessage(addressFromString(ap), "claimWxINTERNAL: invalid user address")
592- let bt = w(aU, Z(aq))
593- let cF = as(aq, ap)
594- let cG = av(aq)
595- let cH = at(aq, ap)
596- let cI = au(aq, ap)
597- let cA = B(this, cF)
598- let cJ = B(this, cH)
599- let cK = B(this, cI)
600- let cL = B(this, cG)
601- let cM = bQ(aq, ap, bt, 0)
602- let ca = cM._1
603- let cx = cM._2
604- let bP = cM._3
605- let cC = max([(ca - cA), g])
606- if ((g >= cC))
575+ let az = valueOrErrorMessage(addressFromString(ao), "claimWxINTERNAL: invalid user address")
576+ let bs = v(aT, Y(ap))
577+ let cD = ar(ap, ao)
578+ let cE = au(ap)
579+ let cF = as(ap, ao)
580+ let cG = at(ap, ao)
581+ let cy = A(this, cD)
582+ let cH = A(this, cF)
583+ let cI = A(this, cG)
584+ let cJ = A(this, cE)
585+ let cK = bP(ap, ao, bs, 0)
586+ let bZ = cK._1
587+ let cv = cK._2
588+ let bO = cK._3
589+ let cA = max([(bZ - cy), g])
590+ if ((g >= cA))
607591 then throw("nothing to claim")
608592 else {
609- let cN = max([n(j(invoke(aW, "claimWxBoost", [aq, ap], nil))[0]), 0])
610- let cO = cC
611- let cP = min([(cO * toBigInt(2)), toBigInt(cN)])
612- let cQ = r(j(invoke(aV, "emit", [toInt(cO)], nil))[0])
613- let cR = j(invoke(aV, "emit", [toInt(cP)], nil))
614- if ((cR == cR))
593+ let cL = max([m(i(invoke(aV, "claimWxBoost", [ap, ao], nil))[0]), 0])
594+ let cM = cA
595+ let cN = min([(cM * toBigInt(2)), toBigInt(cL)])
596+ let cO = q(i(invoke(aU, "emit", [toInt(cM)], nil))[0])
597+ let cP = i(invoke(aU, "emit", [toInt(cN)], nil))
598+ if ((cP == cP))
615599 then {
616- let cS = (cA + cC)
617- let cT = (cJ + cO)
618- let cU = (cJ + cO)
619- let cV = (cJ + cO)
620-[StringEntry(cF, toString(cS)), StringEntry(cH, toString(cT)), StringEntry(cI, toString(cU)), StringEntry(cG, toString(cV)), ScriptTransfer(aA, toInt(cO), cQ), ScriptTransfer(aA, toInt(cP), cQ), aR("claim", ap, aq, toInt(cC), ch.transactionId)]
600+ let cQ = (cy + cA)
601+ let cR = (cH + cM)
602+ let cS = (cH + cM)
603+ let cT = (cH + cM)
604+[StringEntry(cD, toString(cQ)), StringEntry(cF, toString(cR)), StringEntry(cG, toString(cS)), StringEntry(cE, toString(cT)), ScriptTransfer(az, toInt(cM), cO), ScriptTransfer(az, toInt(cN), cO), aQ("claim", ao, ap, toInt(cA), cg.transactionId)]
621605 }
622606 else throw("Strict value is not equal to itself.")
623607 }
627611
628612
629613
630-@Callable(ch)
631-func claimWxREADONLY (aq,ap) = {
632- let bU = ao(ap, aq)
633- let bv = ar(aq)
634- let cF = as(aq, ap)
635- let bo = aw(bU)
636- let bw = aw(bv)
637- let cA = B(this, cF)
638- let bt = w(aU, Z(aq))
639- let by = getIntegerValue(aU, aa(bt))
640- let cW = A(aV, aj())
641- let bz = A(aV, al())
642- let cX = if ((bz > height))
614+@Callable(cg)
615+func claimWxREADONLY (ap,ao) = {
616+ let bT = an(ao, ap)
617+ let bu = aq(ap)
618+ let cD = ar(ap, ao)
619+ let bn = av(bT)
620+ let bv = av(bu)
621+ let cy = A(this, cD)
622+ let bs = v(aT, Y(ap))
623+ let bx = getIntegerValue(aT, Z(bs))
624+ let cU = z(aU, ai())
625+ let by = z(aU, ak())
626+ let cV = if ((by > height))
643627 then 0
644- else (height - bz)
645- let cY = fraction((cW * cX), by, f)
646- let cZ = fraction(cY, bo, bw)
647- let da = bQ(aq, ap, bt, 0)
648- let ca = da._1
649- let cx = da._2
650- let bP = da._3
651- let cC = max([(ca - cA), g])
652- let db = j(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
653- let cN = max([n(db[0]), 0])
654- let dc = p(db[1])
655- let cO = cC
656- let cP = min([(cO * toBigInt(2)), toBigInt(cN)])
657- let dd = (cO + cP)
658- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(dd), toString(cA), toString(cO), toString(cP), ((((bP + "::") + toString(cZ)) + "::BOOST::") + dc)], e))
628+ else (height - by)
629+ let cW = fraction((cU * cV), bx, f)
630+ let cX = fraction(cW, bn, bv)
631+ let cY = bP(ap, ao, bs, 0)
632+ let bZ = cY._1
633+ let cv = cY._2
634+ let bO = cY._3
635+ let cA = max([(bZ - cy), g])
636+ let cZ = i(invoke(aV, "claimWxBoostREADONLY", [ap, ao], nil))
637+ let cL = max([m(cZ[0]), 0])
638+ let da = o(cZ[1])
639+ let cM = cA
640+ let cN = min([(cM * toBigInt(2)), toBigInt(cL)])
641+ let db = (cM + cN)
642+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ap, ao, toString(db), toString(cy), toString(cM), toString(cN), ((((bO + "::") + toString(cX)) + "::BOOST::") + da)], e))
659643 }
660644
661645
662646
663-@Callable(ch)
664-func usersListTraversal (ay) = {
665- let cl = if ((toBase58String(ch.caller.bytes) == valueOrElse(getString(this, K()), "")))
647+@Callable(cg)
648+func usersListTraversal (ax) = {
649+ let ck = if ((toBase58String(cg.caller.bytes) == valueOrElse(getString(this, J()), "")))
666650 then true
667- else ci(ch)
668- if ((cl == cl))
651+ else ch(cg)
652+ if ((ck == ck))
669653 then {
670- let ba = aY(ay)
671- let de = getString(aX(ay))
672- let bg = getString(aZ(ba))
673- let l = de
674- if ($isInstanceOf(l, "Unit"))
654+ let aZ = aX(ax)
655+ let dc = getString(aW(ax))
656+ let bf = getString(aY(aZ))
657+ let k = dc
658+ if ($isInstanceOf(k, "Unit"))
675659 then {
676- let df = bg
677- if ($isInstanceOf(df, "Unit"))
660+ let dd = bf
661+ if ($isInstanceOf(dd, "Unit"))
678662 then $Tuple2(nil, false)
679- else if ($isInstanceOf(df, "String"))
663+ else if ($isInstanceOf(dd, "String"))
680664 then {
681- let dg = df
682- $Tuple2([StringEntry(aX(ay), dg)], true)
665+ let de = dd
666+ $Tuple2([StringEntry(aW(ax), de)], true)
683667 }
684668 else throw("Match error")
685669 }
686- else if ($isInstanceOf(l, "String"))
670+ else if ($isInstanceOf(k, "String"))
687671 then {
688- let aA = l
689- let cA = B(this, as(ay, aA))
690- let cB = w(aU, Z(ay))
691- let ca = bQ(ay, aA, cB, 0)._1
692- let cC = (ca - cA)
693- let cD = if ((cC > g))
694- then invoke(this, "claimWxINTERNAL", [ay, aA], nil)
672+ let az = k
673+ let cy = A(this, ar(ax, az))
674+ let cz = v(aT, Y(ax))
675+ let bZ = bP(ax, az, cz, 0)._1
676+ let cA = (bZ - cy)
677+ let cB = if ((cA > g))
678+ then invoke(this, "claimWxINTERNAL", [ax, az], nil)
695679 else unit
696- if ((cD == cD))
680+ if ((cB == cB))
697681 then {
698- let dh = getString(be(ba, aA))
699- let df = dh
700- if ($isInstanceOf(df, "Unit"))
701- then $Tuple2([DeleteEntry(aX(ay))], false)
702- else if ($isInstanceOf(df, "String"))
682+ let df = getString(bd(aZ, az))
683+ let dd = df
684+ if ($isInstanceOf(dd, "Unit"))
685+ then $Tuple2([DeleteEntry(aW(ax))], false)
686+ else if ($isInstanceOf(dd, "String"))
703687 then {
704- let di = df
705- $Tuple2([StringEntry(aX(ay), di)], true)
688+ let dg = dd
689+ $Tuple2([StringEntry(aW(ax), dg)], true)
706690 }
707691 else throw("Match error")
708692 }
715699
716700
717701
718-@Callable(ch)
719-func onModifyWeight (aq,bt) = if ((ch.caller != aU))
702+@Callable(cg)
703+func onModifyWeight (ap,bs) = if ((cg.caller != aT))
720704 then throw("permissions denied")
721705 else {
722- let dj = bs(aq, bt, 0)
723- let bq = dj._1
724- let bS = dj._2
725- let bT = dj._3
726- bS
706+ let dh = br(ap, bs, 0)
707+ let bp = dh._1
708+ let bR = dh._2
709+ let bS = dh._3
710+ bR
727711 }
728712
729713
730-
731-@Callable(ch)
732-func setMigrator (cj) = if ((cj == ""))
733- then [DeleteEntry(i)]
734- else [BinaryEntry(i, fromBase58String(cj))]
735-
736-
737-@Verifier(dk)
738-func dl () = {
739- let dm = {
740- let l = cd()
741- if ($isInstanceOf(l, "ByteVector"))
714+@Verifier(di)
715+func dj () = {
716+ let dk = {
717+ let k = cc()
718+ if ($isInstanceOf(k, "ByteVector"))
742719 then {
743- let cj = l
744- cj
720+ let ci = k
721+ ci
745722 }
746- else if ($isInstanceOf(l, "Unit"))
747- then dk.senderPublicKey
723+ else if ($isInstanceOf(k, "Unit"))
724+ then di.senderPublicKey
748725 else throw("Match error")
749726 }
750- if (sigVerify(dk.bodyBytes, dk.proofs[0], dm))
751- then true
752- else sigVerify(dk.bodyBytes, dk.proofs[0], getBinaryValue(this, i))
727+ sigVerify(di.bodyBytes, di.proofs[0], dk)
753728 }
754729
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 8
55
66 let b = 100000000
77
88 let c = 18
99
1010 let d = toBigInt(1000000000000000000)
1111
1212 let e = "__"
1313
1414 let f = b
1515
1616 let g = toBigInt(0)
1717
1818 let h = toBigInt(1)
1919
20-let i = "migrator"
21-
22-func j (k) = {
23- let l = k
24- if ($isInstanceOf(l, "List[Any]"))
20+func i (j) = {
21+ let k = j
22+ if ($isInstanceOf(k, "List[Any]"))
2523 then {
26- let m = l
27- m
24+ let l = k
25+ l
2826 }
2927 else throw("fail to cast into List[Any]")
3028 }
3129
3230
33-func n (k) = {
34- let l = k
35- if ($isInstanceOf(l, "Int"))
31+func m (j) = {
32+ let k = j
33+ if ($isInstanceOf(k, "Int"))
3634 then {
37- let o = l
38- o
35+ let n = k
36+ n
3937 }
4038 else throw("fail to cast into Int")
4139 }
4240
4341
44-func p (k) = {
45- let l = k
46- if ($isInstanceOf(l, "String"))
42+func o (j) = {
43+ let k = j
44+ if ($isInstanceOf(k, "String"))
4745 then {
48- let q = l
49- q
46+ let p = k
47+ p
5048 }
5149 else throw("fail to cast into Int")
5250 }
5351
5452
55-func r (k) = {
56- let l = k
57- if ($isInstanceOf(l, "ByteVector"))
53+func q (j) = {
54+ let k = j
55+ if ($isInstanceOf(k, "ByteVector"))
5856 then {
59- let s = l
60- s
57+ let r = k
58+ r
6159 }
6260 else throw("fail to cast into Int")
6361 }
6462
6563
66-func t (u,v) = valueOrErrorMessage(getString(u, v), (("mandatory this." + v) + " is not defined"))
64+func s (t,u) = valueOrErrorMessage(getString(t, u), (("mandatory this." + u) + " is not defined"))
6765
6866
69-func w (u,v) = valueOrErrorMessage(getString(u, v), (((("mandatory " + toString(u)) + ".") + v) + " is not defined"))
67+func v (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
7068
7169
72-func x (u,v) = valueOrElse(getInteger(u, v), 0)
70+func w (t,u) = valueOrElse(getInteger(t, u), 0)
7371
7472
75-func y (u,v,z) = valueOrElse(getInteger(u, v), z)
73+func x (t,u,y) = valueOrElse(getInteger(t, u), y)
7674
7775
78-func A (u,v) = valueOrErrorMessage(getInteger(u, v), (("mandatory this." + v) + " is not defined"))
76+func z (t,u) = valueOrErrorMessage(getInteger(t, u), (("mandatory this." + u) + " is not defined"))
7977
8078
81-func B (u,v) = value(parseBigInt(valueOrElse(getString(u, v), "0")))
79+func A (t,u) = value(parseBigInt(valueOrElse(getString(t, u), "0")))
8280
8381
84-func C (u,v,z) = {
85- let l = getString(u, v)
86- if ($isInstanceOf(l, "String"))
82+func B (t,u,y) = {
83+ let k = getString(t, u)
84+ if ($isInstanceOf(k, "String"))
8785 then {
88- let D = l
89- value(parseBigInt(D))
86+ let C = k
87+ value(parseBigInt(C))
9088 }
91- else if ($isInstanceOf(l, "Unit"))
92- then z
89+ else if ($isInstanceOf(k, "Unit"))
90+ then y
9391 else throw("Match error")
9492 }
9593
9694
97-func E (F,G) = fraction(toBigInt(F), d, toBigInt(G))
95+func D (E,F) = fraction(toBigInt(E), d, toBigInt(F))
9896
9997
100-func H (k,I) = toInt(fraction(k, toBigInt(I), d))
98+func G (j,H) = toInt(fraction(j, toBigInt(H), d))
10199
102100
103-func J () = "%s%s__config__factoryAddress"
101+func I () = "%s%s__config__factoryAddress"
104102
105103
106-func K () = "%s__votingEmissionContract"
104+func J () = "%s__votingEmissionContract"
107105
108106
109-let L = 1
107+let K = 1
110108
111-let M = 2
109+let L = 2
112110
113-let N = 3
111+let M = 3
114112
115-let O = 4
113+let N = 4
116114
117-let P = 5
115+let O = 5
118116
119-let Q = 6
117+let P = 6
120118
121-let R = 7
119+let Q = 7
122120
123-func S () = "%s__factoryConfig"
121+func R () = "%s__factoryConfig"
124122
125123
126-func T () = "%s__managerPublicKey"
124+func S () = "%s__managerPublicKey"
127125
128126
129-func U () = "%s__pendingManagerPublicKey"
127+func T () = "%s__pendingManagerPublicKey"
130128
131129
132-func V () = "%s__stablePoolAddonAddr"
130+func U () = "%s__stablePoolAddonAddr"
133131
134132
135-func W (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
133+func V (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
136134
137135
138-func Y () = "%s__lpTokensList"
136+func X () = "%s__lpTokensList"
139137
140138
141-func Z (X) = makeString(["%s%s%s", X, "mappings__lpAsset2PoolContract"], e)
139+func Y (W) = makeString(["%s%s%s", W, "mappings__lpAsset2PoolContract"], e)
142140
143141
144-func aa (ab) = makeString(["%s%s", "poolWeight", ab], e)
142+func Z (aa) = makeString(["%s%s", "poolWeight", aa], e)
145143
146144
147-func ac (ad) = split(valueOrElse(getString(ad, Y()), ""), e)
145+func ab (ac) = split(valueOrElse(getString(ac, X()), ""), e)
148146
149147
150-func ae (ad) = split(w(ad, S()), e)
148+func ad (ac) = split(v(ac, R()), e)
151149
152150
153-func af (ag) = addressFromStringValue(ag[M])
151+func ae (af) = addressFromStringValue(af[L])
154152
155153
156-func ah (ag) = addressFromStringValue(ag[P])
154+func ag (af) = addressFromStringValue(af[O])
157155
158156
159-func ai (ag) = addressFromStringValue(ag[L])
157+func ah (af) = addressFromStringValue(af[K])
160158
161159
162-func aj () = "%s%s__ratePerBlock__current"
160+func ai () = "%s%s__ratePerBlock__current"
163161
164162
165-func ak () = "%s%s__ratePerBlockMax__current"
163+func aj () = "%s%s__ratePerBlockMax__current"
166164
167165
168-func al () = "%s%s__emission__startBlock"
166+func ak () = "%s%s__emission__startBlock"
169167
170168
171-func am () = "%s%s__emission__duration"
169+func al () = "%s%s__emission__duration"
172170
173171
174-func an () = "%s%s__emission__endBlock"
172+func am () = "%s%s__emission__endBlock"
175173
176174
177-func ao (ap,aq) = makeString(["%s%s%s__staked", ap, aq], e)
175+func an (ao,ap) = makeString(["%s%s%s__staked", ao, ap], e)
178176
179177
180-func ar (aq) = ("%s%s%s__staked__total__" + aq)
178+func aq (ap) = ("%s%s%s__staked__total__" + ap)
181179
182180
183-func as (aq,ap) = makeString(["%s%s%s__claimed", ap, aq], e)
181+func ar (ap,ao) = makeString(["%s%s%s__claimed", ao, ap], e)
184182
185183
186-func at (aq,ap) = makeString(["%s%s%s__claimedMinReward", ap, aq], e)
184+func as (ap,ao) = makeString(["%s%s%s__claimedMinReward", ao, ap], e)
187185
188186
189-func au (aq,ap) = makeString(["%s%s%s__claimedBoostReward", ap, aq], e)
187+func at (ap,ao) = makeString(["%s%s%s__claimedBoostReward", ao, ap], e)
190188
191189
192-func av (aq) = makeString(["%s%s%s__claimed__total", aq], e)
190+func au (ap) = makeString(["%s%s%s__claimed__total", ap], e)
193191
194192
195-func aw (v) = valueOrElse(getInteger(this, v), 0)
193+func av (u) = valueOrElse(getInteger(this, u), 0)
196194
197195
198-func ax (ay) = makeString(["%s%s%s", ay, "total", "bal"], e)
196+func aw (ax) = makeString(["%s%s%s", ax, "total", "bal"], e)
199197
200198
201-func az (ay,aA) = makeString(["%s%s%s", ay, aA, "bal"], e)
199+func ay (ax,az) = makeString(["%s%s%s", ax, az, "bal"], e)
202200
203201
204-func aB (ay) = makeString(["%s%s%s", ay, "total", "balINT"], e)
202+func aA (ax) = makeString(["%s%s%s", ax, "total", "balINT"], e)
205203
206204
207-func aC (ay,aA) = makeString(["%s%s%s", ay, aA, "balINT"], e)
205+func aB (ax,az) = makeString(["%s%s%s", ax, az, "balINT"], e)
208206
209207
210-func aD (ay) = makeString(["%s%s%s", ay, "total", "lastUpd"], e)
208+func aC (ax) = makeString(["%s%s%s", ax, "total", "lastUpd"], e)
211209
212210
213-func aE (ay,aA) = makeString(["%s%s%s", ay, aA, "lastUpd"], e)
211+func aD (ax,az) = makeString(["%s%s%s", ax, az, "lastUpd"], e)
214212
215213
216-func aF (ay) = makeString(["%s%s%s%s", ay, "common", "lpInt"], e)
214+func aE (ax) = makeString(["%s%s%s%s", ax, "common", "lpInt"], e)
217215
218216
219-func aG (ay) = makeString(["%s%s%s%s", ay, "common", "lpIntH"], e)
217+func aF (ax) = makeString(["%s%s%s%s", ax, "common", "lpIntH"], e)
220218
221219
222-func aH (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpInt"], e)
220+func aG (ax,az) = makeString(["%s%s%s%s", ax, az, "lpInt"], e)
223221
224222
225-func aI (ay,aA) = makeString(["%s%s%s%s", ay, aA, "lpIntH"], e)
223+func aH (ax,az) = makeString(["%s%s%s%s", ax, az, "lpIntH"], e)
226224
227225
228-func aJ (ay) = makeString(["%s", ay, "wxPerLp"], e)
226+func aI (ax) = makeString(["%s", ax, "wxPerLp"], e)
229227
230228
231-func aK (ay) = makeString(["%s", ay, "wxPerLpX18"], e)
229+func aJ (ax) = makeString(["%s", ax, "wxPerLpX18"], e)
232230
233231
234-func aL (ay,aA) = makeString(["%s%s%s%s", ay, aA, "uIntL"], e)
232+func aK (ax,az) = makeString(["%s%s%s%s", ax, az, "uIntL"], e)
235233
236234
237-func aM (aN,aA,aO) = makeString(["%s%s%s%s__history", aN, aA, aO], e)
235+func aL (aM,az,aN) = makeString(["%s%s%s%s__history", aM, az, aN], e)
238236
239237
240-func aP (aA,ay,aN,aQ) = makeString(["%s%s%s%d%d%d", aA, ay, aN, toString(height), toString(lastBlock.timestamp), toString(aQ)], e)
238+func aO (az,ax,aM,aP) = makeString(["%s%s%s%d%d%d", az, ax, aM, toString(height), toString(lastBlock.timestamp), toString(aP)], e)
241239
242240
243-func aR (aN,aA,ay,aQ,aS) = StringEntry(aM(aN, aA, toBase58String(aS)), aP(aA, ay, aN, aQ))
241+func aQ (aM,az,ax,aP,aR) = StringEntry(aL(aM, az, toBase58String(aR)), aO(az, ax, aM, aP))
244242
245243
246-let aT = t(this, J())
244+let aS = s(this, I())
247245
248-let aU = addressFromStringValue(aT)
246+let aT = addressFromStringValue(aS)
249247
250-let ag = ae(aU)
248+let af = ad(aT)
251249
252-let aV = ah(ag)
250+let aU = ag(af)
253251
254-let aW = af(ag)
252+let aV = ae(af)
255253
256-func aX (ay) = makeString(["%s%s", ay, "nextUser"], e)
254+func aW (ax) = makeString(["%s%s", ax, "nextUser"], e)
257255
258256
259-func aY (ay) = makeString(["users", ay], e)
257+func aX (ax) = makeString(["users", ax], e)
260258
261259
262-func aZ (ba) = makeString(["%s%s%s", ba, "head"], e)
260+func aY (aZ) = makeString(["%s%s%s", aZ, "head"], e)
263261
264262
265-func bb (ba) = makeString(["%s%s%s", ba, "size"], e)
263+func ba (aZ) = makeString(["%s%s%s", aZ, "size"], e)
266264
267265
268-func bc (ba,bd) = makeString(["%s%s%s%s", ba, bd, "prev"], e)
266+func bb (aZ,bc) = makeString(["%s%s%s%s", aZ, bc, "prev"], e)
269267
270268
271-func be (ba,bd) = makeString(["%s%s%s%s", ba, bd, "next"], e)
269+func bd (aZ,bc) = makeString(["%s%s%s%s", aZ, bc, "next"], e)
272270
273271
274-func bf (ba,bd) = {
275- let bg = getString(this, aZ(ba))
276- let bh = getString(this, bc(ba, bd))
277- let bi = getString(this, be(ba, bd))
278- if (if ((bd == valueOrElse(bg, "")))
272+func be (aZ,bc) = {
273+ let bf = getString(this, aY(aZ))
274+ let bg = getString(this, bb(aZ, bc))
275+ let bh = getString(this, bd(aZ, bc))
276+ if (if ((bc == valueOrElse(bf, "")))
279277 then true
280- else (bh != unit))
278+ else (bg != unit))
281279 then true
282- else (bi != unit)
280+ else (bh != unit)
283281 }
284282
285283
286-func bj (ba,bd) = {
287- let bg = getString(this, aZ(ba))
288- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
289- let bl = if (!(bf(ba, bd)))
284+func bi (aZ,bc) = {
285+ let bf = getString(this, aY(aZ))
286+ let bj = valueOrElse(getInteger(this, ba(aZ)), 0)
287+ let bk = if (!(be(aZ, bc)))
290288 then true
291289 else throw("Node exists")
292- if ((bl == bl))
293- then (([IntegerEntry(bb(ba), (bk + 1))] ++ (if ((bg != unit))
294- then [StringEntry(be(ba, bd), value(bg)), StringEntry(bc(ba, value(bg)), bd)]
295- else nil)) ++ [StringEntry(aZ(ba), bd)])
290+ if ((bk == bk))
291+ then (([IntegerEntry(ba(aZ), (bj + 1))] ++ (if ((bf != unit))
292+ then [StringEntry(bd(aZ, bc), value(bf)), StringEntry(bb(aZ, value(bf)), bc)]
293+ else nil)) ++ [StringEntry(aY(aZ), bc)])
296294 else throw("Strict value is not equal to itself.")
297295 }
298296
299297
300-func bm (ba,bd) = {
301- let bg = getString(this, aZ(ba))
302- let bk = valueOrElse(getInteger(this, bb(ba)), 0)
303- let bh = getString(this, bc(ba, bd))
304- let bi = getString(this, be(ba, bd))
305- ([IntegerEntry(bb(ba), (bk - 1))] ++ (if (if ((bh != unit))
306- then (bi != unit)
298+func bl (aZ,bc) = {
299+ let bf = getString(this, aY(aZ))
300+ let bj = valueOrElse(getInteger(this, ba(aZ)), 0)
301+ let bg = getString(this, bb(aZ, bc))
302+ let bh = getString(this, bd(aZ, bc))
303+ ([IntegerEntry(ba(aZ), (bj - 1))] ++ (if (if ((bg != unit))
304+ then (bh != unit)
307305 else false)
308- then [StringEntry(be(ba, value(bh)), value(bi)), StringEntry(bc(ba, value(bi)), value(bh)), DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, bd))]
309- else if ((bi != unit))
310- then [StringEntry(aZ(ba), value(bi)), DeleteEntry(be(ba, bd)), DeleteEntry(bc(ba, value(bi)))]
311- else if ((bh != unit))
312- then [DeleteEntry(bc(ba, bd)), DeleteEntry(be(ba, value(bh)))]
313- else if ((bd == valueOrElse(bg, "")))
314- then [DeleteEntry(aZ(ba))]
315- else throw(((("invalid node: " + ba) + ".") + bd))))
306+ then [StringEntry(bd(aZ, value(bg)), value(bh)), StringEntry(bb(aZ, value(bh)), value(bg)), DeleteEntry(bb(aZ, bc)), DeleteEntry(bd(aZ, bc))]
307+ else if ((bh != unit))
308+ then [StringEntry(aY(aZ), value(bh)), DeleteEntry(bd(aZ, bc)), DeleteEntry(bb(aZ, value(bh)))]
309+ else if ((bg != unit))
310+ then [DeleteEntry(bb(aZ, bc)), DeleteEntry(bd(aZ, value(bg)))]
311+ else if ((bc == valueOrElse(bf, "")))
312+ then [DeleteEntry(aY(aZ))]
313+ else throw(((("invalid node: " + aZ) + ".") + bc))))
316314 }
317315
318316
319-func bn (bo,bp,bq,br) = if (if ((bp == g))
320- then (bo > g)
317+func bm (bn,bo,bp,bq) = if (if ((bo == g))
318+ then (bn > g)
321319 else false)
322320 then g
323- else if ((bo == g))
324- then bq
325- else if (if ((bp > g))
326- then (bo > g)
321+ else if ((bn == g))
322+ then bp
323+ else if (if ((bo > g))
324+ then (bn > g)
327325 else false)
328- then value(parseBigInt(t(this, br)))
326+ then value(parseBigInt(s(this, bq)))
329327 else throw("calcWxPerLpIntegralUserLast: unexpected state")
330328
331329
332-func bs (aq,bt,bu) = {
333- let bv = ar(aq)
334- let bw = toBigInt(aw(bv))
335- let bx = if ((bw == g))
330+func br (ap,bs,bt) = {
331+ let bu = aq(ap)
332+ let bv = toBigInt(av(bu))
333+ let bw = if ((bv == g))
336334 then h
337- else bw
338- let by = getIntegerValue(aU, aa(bt))
339- let bz = A(aV, al())
340- let bA = 1000
341- let bB = (A(aV, aj()) * bA)
342- let bC = fraction(bB, by, (f * 3))
343- let bD = aF(aq)
344- let bE = aG(aq)
345- let bF = aJ(aq)
346- let bG = y(this, bE, bz)
347- let bH = B(this, bD)
348- let bI = 0
349- let bJ = max([(height - bG), 0])
350- let bK = if ((bI != 0))
351- then toBigInt(bI)
352- else fraction(toBigInt(bC), toBigInt(b), bx)
353- let bL = (bw + toBigInt(bu))
354- let bM = if ((bL == g))
335+ else bv
336+ let bx = getIntegerValue(aT, Z(bs))
337+ let by = z(aU, ak())
338+ let bz = 1000
339+ let bA = (z(aU, ai()) * bz)
340+ let bB = fraction(bA, bx, (f * 3))
341+ let bC = aE(ap)
342+ let bD = aF(ap)
343+ let bE = aI(ap)
344+ let bF = x(this, bD, by)
345+ let bG = A(this, bC)
346+ let bH = 0
347+ let bI = max([(height - bF), 0])
348+ let bJ = if ((bH != 0))
349+ then toBigInt(bH)
350+ else fraction(toBigInt(bB), toBigInt(b), bw)
351+ let bK = (bv + toBigInt(bt))
352+ let bL = if ((bK == g))
355353 then h
356- else bL
357- let bq = (bH + (bK * toBigInt(bJ)))
358- let bN = (toBigInt(bC) / bM)
359- let bO = height
360- let bP = makeString([toString(bq), toString(bJ), toString(bK), toString(bw), toString(bC), toString(bB), toString(by)], "::")
361- $Tuple3(bq, [StringEntry(bD, toString(bq)), IntegerEntry(bE, bO), StringEntry(bF, toString(bN))], bP)
354+ else bK
355+ let bp = (bG + (bJ * toBigInt(bI)))
356+ let bM = (toBigInt(bB) / bL)
357+ let bN = height
358+ let bO = makeString([toString(bp), toString(bI), toString(bJ), toString(bv), toString(bB), toString(bA), toString(bx)], "::")
359+ $Tuple3(bp, [StringEntry(bC, toString(bp)), IntegerEntry(bD, bN), StringEntry(bE, toString(bM))], bO)
362360 }
363361
364362
365-func bQ (aq,ap,bt,bu) = {
366- let bR = bs(aq, bt, bu)
367- let bq = bR._1
368- let bS = bR._2
369- let bT = bR._3
370- let bA = 1000
371- let bU = ao(ap, aq)
372- let bo = aw(bU)
373- let bV = aH(aq, ap)
374- let bW = aI(aq, ap)
375- let br = aL(aq, ap)
376- let bX = B(this, bV)
377- let bp = x(this, bW)
378- let bY = bn(toBigInt(bo), toBigInt(bp), bq, br)
379- let bZ = (b * bA)
380- let ca = max([(bX + fraction((bq - bY), toBigInt(bo), toBigInt(bZ))), g])
381- let cb = bq
382- let cc = height
383- let bP = makeString([toString(bX), toString(bY), toString(bo), bT, toString(height)], "::")
384- $Tuple3(ca, (bS ++ [StringEntry(bV, toString(ca)), IntegerEntry(bW, cc), StringEntry(br, toString(cb))]), bP)
363+func bP (ap,ao,bs,bt) = {
364+ let bQ = br(ap, bs, bt)
365+ let bp = bQ._1
366+ let bR = bQ._2
367+ let bS = bQ._3
368+ let bz = 1000
369+ let bT = an(ao, ap)
370+ let bn = av(bT)
371+ let bU = aG(ap, ao)
372+ let bV = aH(ap, ao)
373+ let bq = aK(ap, ao)
374+ let bW = A(this, bU)
375+ let bo = w(this, bV)
376+ let bX = bm(toBigInt(bn), toBigInt(bo), bp, bq)
377+ let bY = (b * bz)
378+ let bZ = max([(bW + fraction((bp - bX), toBigInt(bn), toBigInt(bY))), g])
379+ let ca = bp
380+ let cb = height
381+ let bO = makeString([toString(bW), toString(bX), toString(bn), bS, toString(height)], "::")
382+ $Tuple3(bZ, (bR ++ [StringEntry(bU, toString(bZ)), IntegerEntry(bV, cb), StringEntry(bq, toString(ca))]), bO)
385383 }
386384
387385
388-func cd () = {
389- let l = getString(T())
390- if ($isInstanceOf(l, "String"))
386+func cc () = {
387+ let k = getString(S())
388+ if ($isInstanceOf(k, "String"))
391389 then {
392- let D = l
393- fromBase58String(D)
390+ let C = k
391+ fromBase58String(C)
394392 }
395- else if ($isInstanceOf(l, "Unit"))
393+ else if ($isInstanceOf(k, "Unit"))
396394 then unit
397395 else throw("Match error")
398396 }
399397
400398
401-func ce () = {
402- let l = getString(U())
403- if ($isInstanceOf(l, "String"))
399+func cd () = {
400+ let k = getString(T())
401+ if ($isInstanceOf(k, "String"))
404402 then {
405- let D = l
406- fromBase58String(D)
403+ let C = k
404+ fromBase58String(C)
407405 }
408- else if ($isInstanceOf(l, "Unit"))
406+ else if ($isInstanceOf(k, "Unit"))
409407 then unit
410408 else throw("Match error")
411409 }
412410
413411
414-let cf = throw("Permission denied")
412+let ce = throw("Permission denied")
415413
416-func cg (ch) = if ((ch.caller == this))
414+func cf (cg) = if ((cg.caller == this))
417415 then true
418- else cf
416+ else ce
419417
420418
421-func ci (ch) = {
422- let l = cd()
423- if ($isInstanceOf(l, "ByteVector"))
419+func ch (cg) = {
420+ let k = cc()
421+ if ($isInstanceOf(k, "ByteVector"))
424422 then {
425- let cj = l
426- if ((ch.callerPublicKey == cj))
423+ let ci = k
424+ if ((cg.callerPublicKey == ci))
427425 then true
428- else cf
426+ else ce
429427 }
430- else if ($isInstanceOf(l, "Unit"))
431- then if ((ch.caller == this))
428+ else if ($isInstanceOf(k, "Unit"))
429+ then if ((cg.caller == this))
432430 then true
433- else cf
431+ else ce
434432 else throw("Match error")
435433 }
436434
437435
438-@Callable(ch)
439-func constructor (ck) = {
440- let cl = ci(ch)
441- if ((cl == cl))
442- then [StringEntry(J(), ck)]
436+@Callable(cg)
437+func constructor (cj) = {
438+ let ck = ch(cg)
439+ if ((ck == ck))
440+ then [StringEntry(I(), cj)]
443441 else throw("Strict value is not equal to itself.")
444442 }
445443
446444
447445
448-@Callable(ch)
449-func constructorV2 (cm) = {
450- let cn = [ci(ch), if ((addressFromString(cm) != unit))
446+@Callable(cg)
447+func constructorV2 (cl) = {
448+ let cm = [ch(cg), if ((addressFromString(cl) != unit))
451449 then true
452450 else "invalid voting emission contract address"]
453- if ((cn == cn))
454- then [StringEntry(K(), cm)]
451+ if ((cm == cm))
452+ then [StringEntry(J(), cl)]
455453 else throw("Strict value is not equal to itself.")
456454 }
457455
458456
459457
460-@Callable(ch)
461-func setManager (co) = {
462- let cl = ci(ch)
463- if ((cl == cl))
458+@Callable(cg)
459+func setManager (cn) = {
460+ let ck = ch(cg)
461+ if ((ck == ck))
464462 then {
465- let cp = fromBase58String(co)
466- if ((cp == cp))
467- then [StringEntry(U(), co)]
463+ let co = fromBase58String(cn)
464+ if ((co == co))
465+ then [StringEntry(T(), cn)]
468466 else throw("Strict value is not equal to itself.")
469467 }
470468 else throw("Strict value is not equal to itself.")
471469 }
472470
473471
474472
475-@Callable(ch)
473+@Callable(cg)
476474 func confirmManager () = {
477- let cq = ce()
478- let cr = if (isDefined(cq))
475+ let cp = cd()
476+ let cq = if (isDefined(cp))
479477 then true
480478 else throw("No pending manager")
481- if ((cr == cr))
479+ if ((cq == cq))
482480 then {
483- let cs = if ((ch.callerPublicKey == value(cq)))
481+ let cr = if ((cg.callerPublicKey == value(cp)))
484482 then true
485483 else throw("You are not pending manager")
486- if ((cs == cs))
487- then [StringEntry(T(), toBase58String(value(cq))), DeleteEntry(U())]
484+ if ((cr == cr))
485+ then [StringEntry(S(), toBase58String(value(cp))), DeleteEntry(T())]
488486 else throw("Strict value is not equal to itself.")
489487 }
490488 else throw("Strict value is not equal to itself.")
491489 }
492490
493491
494492
495-@Callable(ch)
496-func stake () = {
497- let ct = if ((getBinary(this, i) != unit))
498- then throw("maintenance")
493+@Callable(cg)
494+func stake () = if ((size(cg.payments) != 1))
495+ then throw("invalid payment - exact one payment must be attached")
496+ else {
497+ let cs = cg.payments[0]
498+ let ax = value(cs.assetId)
499+ let ap = toBase58String(ax)
500+ let aP = cs.amount
501+ let bs = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
502+ let ct = toString(cg.caller)
503+ let ao = if ((ct == bs))
504+ then toString(cg.originCaller)
505+ else ct
506+ let bT = an(ao, ap)
507+ let bu = aq(ap)
508+ let bn = av(bT)
509+ let bv = av(bu)
510+ let cu = bP(ap, ao, bs, aP)
511+ let bZ = cu._1
512+ let cv = cu._2
513+ let bO = cu._3
514+ let aZ = aX(ap)
515+ let cw = if (be(aZ, ao))
516+ then nil
517+ else bi(aZ, ao)
518+ (([IntegerEntry(bT, (bn + aP)), IntegerEntry(bu, (bv + aP)), aQ("stake", ao, ap, aP, cg.transactionId)] ++ cv) ++ cw)
519+ }
520+
521+
522+
523+@Callable(cg)
524+func unstake (ap,aP) = {
525+ let ax = fromBase58String(ap)
526+ let bs = valueOrErrorMessage(getString(aT, V(ap)), ("unsupported lp asset " + ap))
527+ let cx = valueOrElse(getString(this, U()), bs)
528+ let ct = toString(cg.caller)
529+ let ao = if (if ((ct == bs))
530+ then true
531+ else (ct == cx))
532+ then toString(cg.originCaller)
533+ else ct
534+ let bT = an(ao, ap)
535+ let bu = aq(ap)
536+ let bn = av(bT)
537+ let bv = av(bu)
538+ let cv = bP(ap, ao, bs, -(aP))._2
539+ let aZ = aX(ap)
540+ let cw = if (if (be(aZ, ao))
541+ then (aP == bn)
542+ else false)
543+ then bl(aZ, ao)
544+ else nil
545+ let cy = A(this, ar(ap, ao))
546+ let cz = v(aT, Y(ap))
547+ let bZ = bP(ap, ao, cz, 0)._1
548+ let cA = (bZ - cy)
549+ let cB = if ((cA > g))
550+ then invoke(this, "claimWxINTERNAL", [ap, ao], nil)
499551 else unit
500- if ((ct == ct))
501- then if ((size(ch.payments) != 1))
502- then throw("invalid payment - exact one payment must be attached")
503- else {
504- let cu = ch.payments[0]
505- let ay = value(cu.assetId)
506- let aq = toBase58String(ay)
507- let aQ = cu.amount
508- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
509- let cv = toString(ch.caller)
510- let ap = if ((cv == bt))
511- then toString(ch.originCaller)
512- else cv
513- let bU = ao(ap, aq)
514- let bv = ar(aq)
515- let bo = aw(bU)
516- let bw = aw(bv)
517- let cw = bQ(aq, ap, bt, aQ)
518- let ca = cw._1
519- let cx = cw._2
520- let bP = cw._3
521- let ba = aY(aq)
522- let cy = if (bf(ba, ap))
523- then nil
524- else bj(ba, ap)
525- (([IntegerEntry(bU, (bo + aQ)), IntegerEntry(bv, (bw + aQ)), aR("stake", ap, aq, aQ, ch.transactionId)] ++ cx) ++ cy)
526- }
552+ if ((cB == cB))
553+ then if ((aP > bn))
554+ then throw("passed amount is less then available")
555+ else (([IntegerEntry(bT, (bn - aP)), IntegerEntry(bu, (bv - aP)), ScriptTransfer(cg.caller, aP, ax), aQ("unstake", ao, ap, aP, cg.transactionId)] ++ cv) ++ cw)
527556 else throw("Strict value is not equal to itself.")
528557 }
529558
530559
531560
532-@Callable(ch)
533-func unstake (aq,aQ) = {
534- let ct = if ((getBinary(this, i) != unit))
535- then throw("maintenance")
536- else unit
537- if ((ct == ct))
538- then {
539- let ay = fromBase58String(aq)
540- let bt = valueOrErrorMessage(getString(aU, W(aq)), ("unsupported lp asset " + aq))
541- let cz = valueOrElse(getString(this, V()), bt)
542- let cv = toString(ch.caller)
543- let ap = if (if ((cv == bt))
544- then true
545- else (cv == cz))
546- then toString(ch.originCaller)
547- else cv
548- let bU = ao(ap, aq)
549- let bv = ar(aq)
550- let bo = aw(bU)
551- let bw = aw(bv)
552- let cx = bQ(aq, ap, bt, -(aQ))._2
553- let ba = aY(aq)
554- let cy = if (if (bf(ba, ap))
555- then (aQ == bo)
556- else false)
557- then bm(ba, ap)
558- else nil
559- let cA = B(this, as(aq, ap))
560- let cB = w(aU, Z(aq))
561- let ca = bQ(aq, ap, cB, 0)._1
562- let cC = (ca - cA)
563- let cD = if ((cC > g))
564- then invoke(this, "claimWxINTERNAL", [aq, ap], nil)
565- else unit
566- if ((cD == cD))
567- then if ((aQ > bo))
568- then throw("passed amount is less then available")
569- else (([IntegerEntry(bU, (bo - aQ)), IntegerEntry(bv, (bw - aQ)), ScriptTransfer(ch.caller, aQ, ay), aR("unstake", ap, aq, aQ, ch.transactionId)] ++ cx) ++ cy)
570- else throw("Strict value is not equal to itself.")
571- }
572- else throw("Strict value is not equal to itself.")
561+@Callable(cg)
562+func claimWx (ap) = {
563+ let ao = toString(cg.caller)
564+ let cC = invoke(this, "claimWxINTERNAL", [ap, ao], nil)
565+ $Tuple2(nil, cC)
573566 }
574567
575568
576569
577-@Callable(ch)
578-func claimWx (aq) = {
579- let ap = toString(ch.caller)
580- let cE = invoke(this, "claimWxINTERNAL", [aq, ap], nil)
581- $Tuple2(nil, cE)
582- }
583-
584-
585-
586-@Callable(ch)
587-func claimWxINTERNAL (aq,ap) = {
588- let cl = cg(ch)
589- if ((cl == cl))
570+@Callable(cg)
571+func claimWxINTERNAL (ap,ao) = {
572+ let ck = cf(cg)
573+ if ((ck == ck))
590574 then {
591- let aA = valueOrErrorMessage(addressFromString(ap), "claimWxINTERNAL: invalid user address")
592- let bt = w(aU, Z(aq))
593- let cF = as(aq, ap)
594- let cG = av(aq)
595- let cH = at(aq, ap)
596- let cI = au(aq, ap)
597- let cA = B(this, cF)
598- let cJ = B(this, cH)
599- let cK = B(this, cI)
600- let cL = B(this, cG)
601- let cM = bQ(aq, ap, bt, 0)
602- let ca = cM._1
603- let cx = cM._2
604- let bP = cM._3
605- let cC = max([(ca - cA), g])
606- if ((g >= cC))
575+ let az = valueOrErrorMessage(addressFromString(ao), "claimWxINTERNAL: invalid user address")
576+ let bs = v(aT, Y(ap))
577+ let cD = ar(ap, ao)
578+ let cE = au(ap)
579+ let cF = as(ap, ao)
580+ let cG = at(ap, ao)
581+ let cy = A(this, cD)
582+ let cH = A(this, cF)
583+ let cI = A(this, cG)
584+ let cJ = A(this, cE)
585+ let cK = bP(ap, ao, bs, 0)
586+ let bZ = cK._1
587+ let cv = cK._2
588+ let bO = cK._3
589+ let cA = max([(bZ - cy), g])
590+ if ((g >= cA))
607591 then throw("nothing to claim")
608592 else {
609- let cN = max([n(j(invoke(aW, "claimWxBoost", [aq, ap], nil))[0]), 0])
610- let cO = cC
611- let cP = min([(cO * toBigInt(2)), toBigInt(cN)])
612- let cQ = r(j(invoke(aV, "emit", [toInt(cO)], nil))[0])
613- let cR = j(invoke(aV, "emit", [toInt(cP)], nil))
614- if ((cR == cR))
593+ let cL = max([m(i(invoke(aV, "claimWxBoost", [ap, ao], nil))[0]), 0])
594+ let cM = cA
595+ let cN = min([(cM * toBigInt(2)), toBigInt(cL)])
596+ let cO = q(i(invoke(aU, "emit", [toInt(cM)], nil))[0])
597+ let cP = i(invoke(aU, "emit", [toInt(cN)], nil))
598+ if ((cP == cP))
615599 then {
616- let cS = (cA + cC)
617- let cT = (cJ + cO)
618- let cU = (cJ + cO)
619- let cV = (cJ + cO)
620-[StringEntry(cF, toString(cS)), StringEntry(cH, toString(cT)), StringEntry(cI, toString(cU)), StringEntry(cG, toString(cV)), ScriptTransfer(aA, toInt(cO), cQ), ScriptTransfer(aA, toInt(cP), cQ), aR("claim", ap, aq, toInt(cC), ch.transactionId)]
600+ let cQ = (cy + cA)
601+ let cR = (cH + cM)
602+ let cS = (cH + cM)
603+ let cT = (cH + cM)
604+[StringEntry(cD, toString(cQ)), StringEntry(cF, toString(cR)), StringEntry(cG, toString(cS)), StringEntry(cE, toString(cT)), ScriptTransfer(az, toInt(cM), cO), ScriptTransfer(az, toInt(cN), cO), aQ("claim", ao, ap, toInt(cA), cg.transactionId)]
621605 }
622606 else throw("Strict value is not equal to itself.")
623607 }
624608 }
625609 else throw("Strict value is not equal to itself.")
626610 }
627611
628612
629613
630-@Callable(ch)
631-func claimWxREADONLY (aq,ap) = {
632- let bU = ao(ap, aq)
633- let bv = ar(aq)
634- let cF = as(aq, ap)
635- let bo = aw(bU)
636- let bw = aw(bv)
637- let cA = B(this, cF)
638- let bt = w(aU, Z(aq))
639- let by = getIntegerValue(aU, aa(bt))
640- let cW = A(aV, aj())
641- let bz = A(aV, al())
642- let cX = if ((bz > height))
614+@Callable(cg)
615+func claimWxREADONLY (ap,ao) = {
616+ let bT = an(ao, ap)
617+ let bu = aq(ap)
618+ let cD = ar(ap, ao)
619+ let bn = av(bT)
620+ let bv = av(bu)
621+ let cy = A(this, cD)
622+ let bs = v(aT, Y(ap))
623+ let bx = getIntegerValue(aT, Z(bs))
624+ let cU = z(aU, ai())
625+ let by = z(aU, ak())
626+ let cV = if ((by > height))
643627 then 0
644- else (height - bz)
645- let cY = fraction((cW * cX), by, f)
646- let cZ = fraction(cY, bo, bw)
647- let da = bQ(aq, ap, bt, 0)
648- let ca = da._1
649- let cx = da._2
650- let bP = da._3
651- let cC = max([(ca - cA), g])
652- let db = j(invoke(aW, "claimWxBoostREADONLY", [aq, ap], nil))
653- let cN = max([n(db[0]), 0])
654- let dc = p(db[1])
655- let cO = cC
656- let cP = min([(cO * toBigInt(2)), toBigInt(cN)])
657- let dd = (cO + cP)
658- $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", aq, ap, toString(dd), toString(cA), toString(cO), toString(cP), ((((bP + "::") + toString(cZ)) + "::BOOST::") + dc)], e))
628+ else (height - by)
629+ let cW = fraction((cU * cV), bx, f)
630+ let cX = fraction(cW, bn, bv)
631+ let cY = bP(ap, ao, bs, 0)
632+ let bZ = cY._1
633+ let cv = cY._2
634+ let bO = cY._3
635+ let cA = max([(bZ - cy), g])
636+ let cZ = i(invoke(aV, "claimWxBoostREADONLY", [ap, ao], nil))
637+ let cL = max([m(cZ[0]), 0])
638+ let da = o(cZ[1])
639+ let cM = cA
640+ let cN = min([(cM * toBigInt(2)), toBigInt(cL)])
641+ let db = (cM + cN)
642+ $Tuple2(nil, makeString(["%s%s%d%d%d%d%s", ap, ao, toString(db), toString(cy), toString(cM), toString(cN), ((((bO + "::") + toString(cX)) + "::BOOST::") + da)], e))
659643 }
660644
661645
662646
663-@Callable(ch)
664-func usersListTraversal (ay) = {
665- let cl = if ((toBase58String(ch.caller.bytes) == valueOrElse(getString(this, K()), "")))
647+@Callable(cg)
648+func usersListTraversal (ax) = {
649+ let ck = if ((toBase58String(cg.caller.bytes) == valueOrElse(getString(this, J()), "")))
666650 then true
667- else ci(ch)
668- if ((cl == cl))
651+ else ch(cg)
652+ if ((ck == ck))
669653 then {
670- let ba = aY(ay)
671- let de = getString(aX(ay))
672- let bg = getString(aZ(ba))
673- let l = de
674- if ($isInstanceOf(l, "Unit"))
654+ let aZ = aX(ax)
655+ let dc = getString(aW(ax))
656+ let bf = getString(aY(aZ))
657+ let k = dc
658+ if ($isInstanceOf(k, "Unit"))
675659 then {
676- let df = bg
677- if ($isInstanceOf(df, "Unit"))
660+ let dd = bf
661+ if ($isInstanceOf(dd, "Unit"))
678662 then $Tuple2(nil, false)
679- else if ($isInstanceOf(df, "String"))
663+ else if ($isInstanceOf(dd, "String"))
680664 then {
681- let dg = df
682- $Tuple2([StringEntry(aX(ay), dg)], true)
665+ let de = dd
666+ $Tuple2([StringEntry(aW(ax), de)], true)
683667 }
684668 else throw("Match error")
685669 }
686- else if ($isInstanceOf(l, "String"))
670+ else if ($isInstanceOf(k, "String"))
687671 then {
688- let aA = l
689- let cA = B(this, as(ay, aA))
690- let cB = w(aU, Z(ay))
691- let ca = bQ(ay, aA, cB, 0)._1
692- let cC = (ca - cA)
693- let cD = if ((cC > g))
694- then invoke(this, "claimWxINTERNAL", [ay, aA], nil)
672+ let az = k
673+ let cy = A(this, ar(ax, az))
674+ let cz = v(aT, Y(ax))
675+ let bZ = bP(ax, az, cz, 0)._1
676+ let cA = (bZ - cy)
677+ let cB = if ((cA > g))
678+ then invoke(this, "claimWxINTERNAL", [ax, az], nil)
695679 else unit
696- if ((cD == cD))
680+ if ((cB == cB))
697681 then {
698- let dh = getString(be(ba, aA))
699- let df = dh
700- if ($isInstanceOf(df, "Unit"))
701- then $Tuple2([DeleteEntry(aX(ay))], false)
702- else if ($isInstanceOf(df, "String"))
682+ let df = getString(bd(aZ, az))
683+ let dd = df
684+ if ($isInstanceOf(dd, "Unit"))
685+ then $Tuple2([DeleteEntry(aW(ax))], false)
686+ else if ($isInstanceOf(dd, "String"))
703687 then {
704- let di = df
705- $Tuple2([StringEntry(aX(ay), di)], true)
688+ let dg = dd
689+ $Tuple2([StringEntry(aW(ax), dg)], true)
706690 }
707691 else throw("Match error")
708692 }
709693 else throw("Strict value is not equal to itself.")
710694 }
711695 else throw("Match error")
712696 }
713697 else throw("Strict value is not equal to itself.")
714698 }
715699
716700
717701
718-@Callable(ch)
719-func onModifyWeight (aq,bt) = if ((ch.caller != aU))
702+@Callable(cg)
703+func onModifyWeight (ap,bs) = if ((cg.caller != aT))
720704 then throw("permissions denied")
721705 else {
722- let dj = bs(aq, bt, 0)
723- let bq = dj._1
724- let bS = dj._2
725- let bT = dj._3
726- bS
706+ let dh = br(ap, bs, 0)
707+ let bp = dh._1
708+ let bR = dh._2
709+ let bS = dh._3
710+ bR
727711 }
728712
729713
730-
731-@Callable(ch)
732-func setMigrator (cj) = if ((cj == ""))
733- then [DeleteEntry(i)]
734- else [BinaryEntry(i, fromBase58String(cj))]
735-
736-
737-@Verifier(dk)
738-func dl () = {
739- let dm = {
740- let l = cd()
741- if ($isInstanceOf(l, "ByteVector"))
714+@Verifier(di)
715+func dj () = {
716+ let dk = {
717+ let k = cc()
718+ if ($isInstanceOf(k, "ByteVector"))
742719 then {
743- let cj = l
744- cj
720+ let ci = k
721+ ci
745722 }
746- else if ($isInstanceOf(l, "Unit"))
747- then dk.senderPublicKey
723+ else if ($isInstanceOf(k, "Unit"))
724+ then di.senderPublicKey
748725 else throw("Match error")
749726 }
750- if (sigVerify(dk.bodyBytes, dk.proofs[0], dm))
751- then true
752- else sigVerify(dk.bodyBytes, dk.proofs[0], getBinaryValue(this, i))
727+ sigVerify(di.bodyBytes, di.proofs[0], dk)
753728 }
754729

github/deemru/w8io/fabc49c 
500.33 ms