tx · 7Th8QPrMcZe1NZYpuFz4gFFsb6GTQDF3rHDbhsxPn5BW

3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp:  -0.03000000 Waves

2022.07.28 19:01 [2159889] smart account 3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp > SELF 0.00000000 Waves

{ "type": 13, "id": "7Th8QPrMcZe1NZYpuFz4gFFsb6GTQDF3rHDbhsxPn5BW", "fee": 3000000, "feeAssetId": null, "timestamp": 1659024077281, "version": 1, "sender": "3MsNhK6uve98J6DeqbuwGFBRh9GoHPGUFgp", "senderPublicKey": "86RHVxKovtU7yKnepY8wKsd8niDxGAsiwuA1XA1DNqrS", "proofs": [ "habRhYxWAMTUy7Jnxv1iYeW9Vw97jt1VG8pZTeyvXA1y8ttCQFNGhMeoJCLFKrJtY2iHDUTVso8Rtxxu2WW92o7" ], "script": "base64:BgJkCAISAwoBCBIDCgEIEgQKAggIEgMKAQgSCQoHARERERgIGBIHCgUREREYCBIHCgUBAQEICBIAEgMKAQgSBAoCCAESBAoCCAESBAoCCAESAwoBCBIJCgcIAQEBAQgBEgMKAQgSAFoABlNDQUxFOAAIAAVNVUxUOACAwtcvAAdTQ0FMRTE4ABIABk1VTFQxOAkAtgIBAICAkLu61q3wDQADU0VQAgJfXwAOUE9PTFdFSUdIVE1VTFQFBU1VTFQ4AAp6ZXJvQmlnSW50CQC2AgEAAAAOaWR4UG9vbEFkZHJlc3MAAQANaWR4UG9vbFN0YXR1cwACABBpZHhQb29sTFBBc3NldElkAAMADWlkeEFtdEFzc2V0SWQABAAPaWR4UHJpY2VBc3NldElkAAUADmlkeEFtdEFzc2V0RGNtAAYAEGlkeFByaWNlQXNzZXREY20ABwAOaWR4SUFtdEFzc2V0SWQACAAQaWR4SVByaWNlQXNzZXRJZAAJAA1pZHhMUEFzc2V0RGNtAAoBD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgIJAKwCAgkArAICAgptYW5kYXRvcnkgCQClCAEFB2FkZHJlc3MCAS4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRJbnRPclplcm8CB2FkZHJlc3MDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQAAAQxnZXRJbnRPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEJYXNBbnlMaXN0AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0ECnZhbEFueUx5c3QFByRtYXRjaDAFCnZhbEFueUx5c3QJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQhhc1N0cmluZwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwERa2V5RmFjdG9yeUFkZHJlc3MAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzARNrZXlNYW5hZ2VyUHVibGljS2V5AAIUJXNfX21hbmFnZXJQdWJsaWNLZXkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAIbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5ABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAQAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAACABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAADABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAABAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAFABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAABgAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAHABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAIAQ1rZXlGYWN0b3J5Q2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQpscEFzc2V0U3RyCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCmxwQXNzZXRTdHIJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFA1NFUAEQa2V5RmFjdG9yeUxwTGlzdAACECVzX19scFRva2Vuc0xpc3QBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQpscEFzc2V0U3RyCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCmxwQXNzZXRTdHIJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFA1NFUAEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBD2NvbnRyYWN0QWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIKcG9vbFdlaWdodAkAzAgCBQ9jb250cmFjdEFkZHJlc3MFA25pbAUDU0VQARhyZWFkRmFjdG9yeUFkZHJlc3NPckZhaWwACQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQkBEWtleUZhY3RvcnlBZGRyZXNzAAEKcmVhZExwTGlzdAAJALUJAgkBC3ZhbHVlT3JFbHNlAgkAnQgCCQEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAkBEGtleUZhY3RvcnlMcExpc3QAAgAFA1NFUAEUcmVhZEZhY3RvcnlDZmdPckZhaWwBB2ZhY3RvcnkJALUJAgkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFB2ZhY3RvcnkJAQ1rZXlGYWN0b3J5Q2ZnAAUDU0VQARhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwBBGZDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUEZkNmZwUZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAEYZ2V0RW1pc3Npb25BZGRyZXNzT3JGYWlsAQRmQ2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGZDZmcFGUlkeEZhY3RvcnlDZmdFbWlzc2lvbkRhcHABF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQRmQ2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGZDZmcFGElkeEZhY3RvcnlDZmdTdGFraW5nRGFwcAEZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAELa2V5Qm9vc3RDZmcAAgolc19fY29uZmlnAR9rZXlCb29zdGluZ0xvY2tQYXJhbVRvdGFsQW1vdW50AAIeJXMlc19fc3RhdHNfX2FjdGl2ZVRvdGFsTG9ja2VkAShrZXlCb29zdGluZ1N0YXRzTG9ja3NEdXJhdGlvblN1bUluQmxvY2tzAAIlJXMlc19fc3RhdHNfX2xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwEaa2V5Qm9vc3RpbmdTdGF0c0xvY2tzQ291bnQAAhclcyVzX19zdGF0c19fbG9ja3NDb3VudAEaa2V5Qm9vc3RpbmdTdGF0c1VzZXJzQ291bnQAAh0lcyVzX19zdGF0c19fYWN0aXZlVXNlcnNDb3VudAESa2V5VXNlcjJOdW1NYXBwaW5nAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fdXNlcjJudW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUDU0VQARJrZXlOdW0yVXNlck1hcHBpbmcBA251bQkAuQkCCQDMCAICGSVzJXMlc19fbWFwcGluZ19fbnVtMnVzZXIJAMwIAgUDbnVtBQNuaWwFA1NFUAEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAgZhbW91bnQFA25pbAUDU0VQARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICBXN0YXJ0BQNuaWwFA1NFUAEUa2V5TG9ja1BhcmFtRHVyYXRpb24BB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIIZHVyYXRpb24FA25pbAUDU0VQAQ1rZXlMb2NrUGFyYW1LAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICAWsFA25pbAUDU0VQAQ1rZXlMb2NrUGFyYW1CAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICAWIFA25pbAUDU0VQARVrZXlMb2NrUGFyYW1CeVBlcmlvZEsCB3VzZXJOdW0GcGVyaW9kCQC5CQIJAMwIAgIXJXMlZCVzJWRfX3BhcmFtQnlQZXJpb2QJAMwIAgUHdXNlck51bQkAzAgCAgFrCQDMCAIFBnBlcmlvZAUDbmlsBQNTRVABFWtleUxvY2tQYXJhbUJ5UGVyaW9kQgIHdXNlck51bQZwZXJpb2QJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQd1c2VyTnVtCQDMCAICAWIJAMwIAgUGcGVyaW9kBQNuaWwFA1NFUAEga2V5VXNlckJvb3N0RW1pc3Npb25MYXN0SU5URUdSQUwBB3VzZXJOdW0JALkJAgkAzAgCAh4lcyVkX191c2VyQm9vc3RFbWlzc2lvbkxhc3RJbnQJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABF2tleVVzZXJNYXhCb29zdElOVEVHUkFMAQd1c2VyTnVtCQC5CQIJAMwIAgIRJXMlZF9fbWF4Qm9vc3RJbnQJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABGGtleVRvdGFsTWF4Qm9vc3RJTlRFR1JBTAACGCVzJXNfX21heEJvb3N0SW50X190b3RhbAEha2V5VXNlckJvb3N0QXZhbGFpYmxlVG9DbGFpbVRvdGFsAQd1c2VyTnVtCQC5CQIJAMwIAgIkJXMlZF9fdXNlckJvb3N0QXZhbGlhYmxlVG9DbGFpbVRvdGFsCQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARNrZXlVc2VyQm9vc3RDbGFpbWVkAQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZF9fdXNlckJvb3N0Q2xhaW1lZAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAERa2V5VG90YWxDYWNoZWRHd3gAAhYlcyVzX19nd3hDYWNoZWRfX3RvdGFsAQ9rZXlTdGFrZWRCeVVzZXICDnVzZXJBZGRyZXNzU3RyDGxwQXNzZXRJZFN0cgkAuQkCCQDMCAICDiVzJXMlc19fc3Rha2VkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABDmtleVN0YWtlZFRvdGFsAQxscEFzc2V0SWRTdHIJAKwCAgIXJXMlcyVzX19zdGFrZWRfX3RvdGFsX18FDGxwQXNzZXRJZFN0cgEQa2V5Q2xhaW1lZEJ5VXNlcgIMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCQC5CQIJAMwIAgIPJXMlcyVzX19jbGFpbWVkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABGWtleUNsYWltZWRCeVVzZXJNaW5SZXdhcmQCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICGCVzJXMlc19fY2xhaW1lZE1pblJld2FyZAkAzAgCBQ51c2VyQWRkcmVzc1N0cgkAzAgCBQxscEFzc2V0SWRTdHIFA25pbAUDU0VQARtrZXlDbGFpbWVkQnlVc2VyQm9vc3RSZXdhcmQCDGxwQXNzZXRJZFN0cg51c2VyQWRkcmVzc1N0cgkAuQkCCQDMCAICGiVzJXMlc19fY2xhaW1lZEJvb3N0UmV3YXJkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABCnJlYWRTdGFrZWQCC3N0YWtpbmdEYXBwA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQtzdGFraW5nRGFwcAUDa2V5AAABHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAACGyVzJXNfX3JhdGVQZXJCbG9ja19fY3VycmVudAEha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50AAIeJXMlc19fcmF0ZVBlckJsb2NrTWF4X19jdXJyZW50ARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sAAholcyVzX19lbWlzc2lvbl9fc3RhcnRCbG9jawEba2V5RW1pc3Npb25EdXJhdGlvbkluQmxvY2tzAAIYJXMlc19fZW1pc3Npb25fX2R1cmF0aW9uARNrZXlFbWlzc2lvbkVuZEJsb2NrAAIYJXMlc19fZW1pc3Npb25fX2VuZEJsb2NrAQxrZXlBZGRvbkFkZHIAAg0lc19fYWRkb25BZGRyAAtmYWN0b3J5RGFwcAkBGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAACmZhY3RvcnlDZmcJARRyZWFkRmFjdG9yeUNmZ09yRmFpbAEFC2ZhY3RvcnlEYXBwAAxlbWlzc2lvbkRhcHAJARhnZXRFbWlzc2lvbkFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnAAtzdGFraW5nRGFwcAkBF2dldFN0YWtpbmdBZGRyZXNzT3JGYWlsAQUKZmFjdG9yeUNmZwANZ3d4UmV3YXJkRGFwcAkBGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnAAxib29zdGluZ0RhcHAJARhnZXRCb29zdGluZ0FkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnARlpbnRlcm5hbEN1cnJlbnRSZXdhcmRSYXRlAQlscEFzc2V0SWQEDnBvb2xBZGRyZXNzU3RyCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFCWxwQXNzZXRJZAQOcG9vbFdlaWdodE11bHQFBU1VTFQ4BApwb29sV2VpZ2h0CQERQGV4dHJOYXRpdmUoMTA1MCkCBQtmYWN0b3J5RGFwcAkBFGtleUZhY3RvcnlQb29sV2VpZ2h0AQUOcG9vbEFkZHJlc3NTdHIEEnd4RW1pc3Npb25QZXJCbG9jawkBDGdldEludE9yRmFpbAIFDGVtaXNzaW9uRGFwcAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAEFXd4RW1pc3Npb25QZXJCbG9ja01heAkBDGdldEludE9yRmFpbAIFDGVtaXNzaW9uRGFwcAkBIWtleUVtaXNzaW9uUmF0ZVBlckJsb2NrTWF4Q3VycmVudAAEDWJvb3N0TWF4Q29lZmYAAwQWcG9vbFd4RW1pc3Npb25QZXJCbG9jawkAaQIJAGsDBRJ3eEVtaXNzaW9uUGVyQmxvY2sFCnBvb2xXZWlnaHQFDnBvb2xXZWlnaHRNdWx0BQ1ib29zdE1heENvZWZmBBlwb29sV3hFbWlzc2lvblBlckJsb2NrTWF4CQBrAwUVd3hFbWlzc2lvblBlckJsb2NrTWF4BQpwb29sV2VpZ2h0BQ5wb29sV2VpZ2h0TXVsdAQJbWF4RmFjdG9yCQBoAgUNYm9vc3RNYXhDb2VmZgUFTVVMVDgEDXRvdGFsTHBTdGFrZWQJAQxnZXRJbnRPclplcm8CBQtzdGFraW5nRGFwcAkBDmtleVN0YWtlZFRvdGFsAQUJbHBBc3NldElkCQDMCAIFFnBvb2xXeEVtaXNzaW9uUGVyQmxvY2sJAMwIAgUJbWF4RmFjdG9yCQDMCAIFDXRvdGFsTHBTdGFrZWQFA25pbAEaY2FsY0d3eEFtb3VudFN0YXJ0UkVBRE9OTFkDCmxvY2tBbW91bnQMbG9ja0R1cmF0aW9uD21heExvY2tEdXJhdGlvbgQHY29lZmZYOAkAawMFDGxvY2tEdXJhdGlvbgUFTVVMVDgFD21heExvY2tEdXJhdGlvbgQOZ1d4QW1vdW50U3RhcnQJAGsDBQpsb2NrQW1vdW50BQdjb2VmZlg4BQVNVUxUOAkAzAgCBQ5nV3hBbW91bnRTdGFydAUDbmlsARZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAQHJG1hdGNoMAkAoggBCQETa2V5TWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBC211c3RNYW5hZ2VyAQFpBAJwZAkAAgECEVBlcm1pc3Npb24gZGVuaWVkBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvchABaQELY29uc3RydWN0b3IBDmZhY3RvcnlBZGRyZXNzBAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUZhY3RvcnlBZGRyZXNzAAUOZmFjdG9yeUFkZHJlc3MFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARljdXJyZW50UmV3YXJkUmF0ZVJFQURPTkxZAQlscEFzc2V0SWQECnJld2FyZERhdGEJARlpbnRlcm5hbEN1cnJlbnRSZXdhcmRSYXRlAQUJbHBBc3NldElkBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAJEDAgUKcmV3YXJkRGF0YQAABAltYXhGYWN0b3IJAJEDAgUKcmV3YXJkRGF0YQABBA10b3RhbExwU3Rha2VkCQCRAwIFCnJld2FyZERhdGEAAgkAlAoCBQNuaWwJALkJAgkAzAgCAgYlZCVkJWQJAMwIAgkApAMBBRJ3eEVtaXNzaW9uUGVyQmxvY2sJAMwIAgkApAMBBQltYXhGYWN0b3IJAMwIAgkApAMBBQ10b3RhbExwU3Rha2VkBQNuaWwFA1NFUAFpAR1jdXJyZW50VXNlclJld2FyZFJhdGVSRUFET05MWQIJbHBBc3NldElkC3VzZXJBZGRyZXNzBApyZXdhcmREYXRhCQEZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZQEFCWxwQXNzZXRJZAQSd3hFbWlzc2lvblBlckJsb2NrCQCRAwIFCnJld2FyZERhdGEAAAQJbWF4RmFjdG9yCQCRAwIFCnJld2FyZERhdGEAAQQNdG90YWxMcFN0YWtlZAkAkQMCBQpyZXdhcmREYXRhAAIEDmxwU3Rha2VkQnlVc2VyCQEMZ2V0SW50T3JaZXJvAgULc3Rha2luZ0RhcHAJAQ9rZXlTdGFrZWRCeVVzZXICBQt1c2VyQWRkcmVzcwUJbHBBc3NldElkBA11c2VyQ2xhaW1JbmZvCQC1CQIJAQhhc1N0cmluZwEJAPwHBAULc3Rha2luZ0RhcHACD2NsYWltV3hSRUFET05MWQkAzAgCBQlscEFzc2V0SWQJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDbmlsBQNTRVAEDW1pblJld2FyZFBhcnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFDXVzZXJDbGFpbUluZm8ABQIcY291bGRuJ3QgcGFyc2UgbWluUmV3YXJkUGFydAQPYm9vc3RSZXdhcmRQYXJ0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQ11c2VyQ2xhaW1JbmZvAAYCHmNvdWxkbid0IHBhcnNlIGJvb3N0UmV3YXJkUGFydAQFZGVidWcJAJEDAgUNdXNlckNsYWltSW5mbwAHBA1ib29zdGluZ1Bvd2VyAwkAAAIFD2Jvb3N0UmV3YXJkUGFydAAACQBoAgABBQVNVUxUOAkAawMJAGQCBQ1taW5SZXdhcmRQYXJ0BQ9ib29zdFJld2FyZFBhcnQFBU1VTFQ4BQ1taW5SZXdhcmRQYXJ0CQCUCgIFA25pbAkAuQkCCQDMCAICDCVkJWQlZCVkJWQlcwkAzAgCCQCkAwEFEnd4RW1pc3Npb25QZXJCbG9jawkAzAgCCQCkAwEFCW1heEZhY3RvcgkAzAgCCQCkAwEFDXRvdGFsTHBTdGFrZWQJAMwIAgkApAMBBQ5scFN0YWtlZEJ5VXNlcgkAzAgCCQCkAwEFDWJvb3N0aW5nUG93ZXIJAMwIAgUFZGVidWcFA25pbAUDU0VQAWkBFWNsYWltZWRSZXdhcmRSRUFET05MWQELdXNlckFkZHJlc3MEBmxwTGlzdAkBCnJlYWRMcExpc3QABAZwcmVmaXgCCiVzJWQlZCVkJXMKARtjbGFpbWVkUmV3YXJkQnlMcEFnZ3JlZ2F0b3ICCXJlc3VsdFN0cgZuZXh0THAEGWNsYWltZWRCeVVzZXJNaW5SZXdhcmRLRVkJARlrZXlDbGFpbWVkQnlVc2VyTWluUmV3YXJkAgUGbmV4dExwBQt1c2VyQWRkcmVzcwQbY2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkS0VZCQEba2V5Q2xhaW1lZEJ5VXNlckJvb3N0UmV3YXJkAgUGbmV4dExwBQt1c2VyQWRkcmVzcwQQbWluUmV3YXJkQ2xhaW1lZAkBC3ZhbHVlT3JFbHNlAgkAmggCBQtzdGFraW5nRGFwcAUZY2xhaW1lZEJ5VXNlck1pblJld2FyZEtFWQAABBJib29zdFJld2FyZENsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJoIAgULc3Rha2luZ0RhcHAFG2NsYWltZWRCeVVzZXJCb29zdFJld2FyZEtFWQAABAtnRmVlQ2xhaW1lZAAACQC5CQIJAMwIAgkArAICBQZwcmVmaXgFCXJlc3VsdFN0cgkAzAgCBQZuZXh0THAJAMwIAgkApAMBBRBtaW5SZXdhcmRDbGFpbWVkCQDMCAIJAKQDAQUSYm9vc3RSZXdhcmRDbGFpbWVkCQDMCAIJAKQDAQULZ0ZlZUNsYWltZWQJAMwIAgIDZW5kBQNuaWwFA1NFUAQGcmVzdWx0CgACJGwFBmxwTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzACAiVzCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARtjbGFpbWVkUmV3YXJkQnlMcEFnZ3JlZ2F0b3ICBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAJQKAgUDbmlsCQCsAgIJAKwCAgUGcmVzdWx0BQNTRVAFC3VzZXJBZGRyZXNzAWkBHWNhbGNCb29zdEJ1bGtJbnRlcm5hbFJFQURPTkxZBwtjdXJyZW50SXRlchFkZWx0YVd4QW1vdW50QnVsaxtkZWx0YUxvY2tQZXJpb2RJbkJsb2Nrc0J1bGsRZGVsdGFMcEFtb3VudEJ1bGsQbHBBc3NldElkT3B0QnVsaw51c2VyQWRkcmVzc09wdAZyZXNBY2MDCQAAAgULY3VycmVudEl0ZXIJAJADAQURZGVsdGFXeEFtb3VudEJ1bGsJAJQKAgUDbmlsBQZyZXNBY2MEDWRlbHRhV3hBbW91bnQJAJEDAgURZGVsdGFXeEFtb3VudEJ1bGsFC2N1cnJlbnRJdGVyBBdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAkQMCBRtkZWx0YUxvY2tQZXJpb2RJbkJsb2Nrc0J1bGsFC2N1cnJlbnRJdGVyBA1kZWx0YUxwQW1vdW50CQCRAwIFEWRlbHRhTHBBbW91bnRCdWxrBQtjdXJyZW50SXRlcgQMbHBBc3NldElkT3B0CQCRAwIFEGxwQXNzZXRJZE9wdEJ1bGsFC2N1cnJlbnRJdGVyBARpbmZvCgABQAkA/AcEBQR0aGlzAhFjYWxjQm9vc3RSRUFET05MWQkAzAgCBQ1kZWx0YVd4QW1vdW50CQDMCAIFF2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzCQDMCAIFDWRlbHRhTHBBbW91bnQJAMwIAgUMbHBBc3NldElkT3B0CQDMCAIFDnVzZXJBZGRyZXNzT3B0BQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBCQD8BwQFBHRoaXMCEWNhbGNCb29zdFJFQURPTkxZCQDMCAIFDWRlbHRhV3hBbW91bnQJAMwIAgUXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MJAMwIAgUNZGVsdGFMcEFtb3VudAkAzAgCBQxscEFzc2V0SWRPcHQJAMwIAgUOdXNlckFkZHJlc3NPcHQFA25pbAUDbmlsAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcEA3JlcwkAzQgCBQZyZXNBY2MFBGluZm8EA2ludgoAAUAJAPwHBAUEdGhpcwIdY2FsY0Jvb3N0QnVsa0ludGVybmFsUkVBRE9OTFkJAMwIAgkAZAIFC2N1cnJlbnRJdGVyAAEJAMwIAgURZGVsdGFXeEFtb3VudEJ1bGsJAMwIAgUbZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3NCdWxrCQDMCAIFEWRlbHRhTHBBbW91bnRCdWxrCQDMCAIFEGxwQXNzZXRJZE9wdEJ1bGsJAMwIAgUOdXNlckFkZHJlc3NPcHQJAMwIAgUDcmVzBQNuaWwFA25pbAMJAAECBQFAAglMaXN0W0FueV0FAUAJAAIBCQCsAgIJAAMBCQD8BwQFBHRoaXMCHWNhbGNCb29zdEJ1bGtJbnRlcm5hbFJFQURPTkxZCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABCQDMCAIFEWRlbHRhV3hBbW91bnRCdWxrCQDMCAIFG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsawkAzAgCBRFkZWx0YUxwQW1vdW50QnVsawkAzAgCBRBscEFzc2V0SWRPcHRCdWxrCQDMCAIFDnVzZXJBZGRyZXNzT3B0CQDMCAIFA3JlcwUDbmlsBQNuaWwCHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQNpbnYFA2ludgkAlAoCBQNuaWwFA2ludgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVjYWxjQm9vc3RCdWxrUkVBRE9OTFkFDWRlbHRhV3hBbW91bnQXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MNZGVsdGFMcEFtb3VudAxscEFzc2V0SWRPcHQOdXNlckFkZHJlc3NPcHQEA3JlcwkA/AcEBQR0aGlzAh1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCAAAJAMwIAgUNZGVsdGFXeEFtb3VudAkAzAgCBRdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAzAgCBQ1kZWx0YUxwQW1vdW50CQDMCAIFDGxwQXNzZXRJZE9wdAkAzAgCBQ51c2VyQWRkcmVzc09wdAkAzAgCBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUDcmVzAWkBEWNhbGNCb29zdFJFQURPTkxZBQ1kZWx0YVd4QW1vdW50F2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzDWRlbHRhTHBBbW91bnQMbHBBc3NldElkT3B0DnVzZXJBZGRyZXNzT3B0BAhtYXRoRGFwcAUNZ3d4UmV3YXJkRGFwcAQIRU1QVFlTVFICBWVtcHR5BBdtYXhMb2NrRHVyYXRpb25JbkJsb2NrcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFDGJvb3N0aW5nRGFwcAkBC2tleUJvb3N0Q2ZnAAUDU0VQAAQEDGxwQXNzZXRJZFN0cgMJAAACBQxscEFzc2V0SWRPcHQCAAUIRU1QVFlTVFIFDGxwQXNzZXRJZE9wdAQOdXNlckFkZHJlc3NTdHIDCQAAAgUOdXNlckFkZHJlc3NPcHQCAAUIRU1QVFlTVFIFDnVzZXJBZGRyZXNzT3B0BAp1c2VyTnVtU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFDGJvb3N0aW5nRGFwcAkBEmtleVVzZXIyTnVtTWFwcGluZwEFDnVzZXJBZGRyZXNzT3B0BQhFTVBUWVNUUgQKdXNlckFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQxib29zdGluZ0RhcHAJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQUKdXNlck51bVN0cgAABAlsb2NrU3RhcnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMYm9vc3RpbmdEYXBwCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFCnVzZXJOdW1TdHIFBmhlaWdodAQMbG9ja0R1cmF0aW9uCQELdmFsdWVPckVsc2UCCQCaCAIFDGJvb3N0aW5nRGFwcAkBFGtleUxvY2tQYXJhbUR1cmF0aW9uAQUKdXNlck51bVN0cgAABAdsb2NrRW5kCQBkAgUJbG9ja1N0YXJ0BQxsb2NrRHVyYXRpb24EEXJlbWFpbmluZ0R1cmF0aW9uCQCWAwEJAMwIAgkAZQIFB2xvY2tFbmQFBmhlaWdodAkAzAgCAAAFA25pbAQNdXNlckFtb3VudE5ldwkAZAIFCnVzZXJBbW91bnQFDWRlbHRhV3hBbW91bnQED2xvY2tEdXJhdGlvbk5ldwkAlwMBCQDMCAIJAGQCBRFyZW1haW5pbmdEdXJhdGlvbgUXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MJAMwIAgUXbWF4TG9ja0R1cmF0aW9uSW5CbG9ja3MFA25pbAQRdXNlckN1cnJnV3hBbW91bnQJAQVhc0ludAEJAJEDAgkBCWFzQW55TGlzdAEJAPwHBAUMYm9vc3RpbmdEYXBwAhNnd3hVc2VySW5mb1JFQURPTkxZCQDMCAIFDnVzZXJBZGRyZXNzU3RyBQNuaWwFA25pbAAABBFnV3hBbW91bnRTdGFydE5ldwkAkQMCCQEaY2FsY0d3eEFtb3VudFN0YXJ0UkVBRE9OTFkDBQ11c2VyQW1vdW50TmV3BQ9sb2NrRHVyYXRpb25OZXcFF21heExvY2tEdXJhdGlvbkluQmxvY2tzAAAEE2dXeFBhcmFtc1Jlc3VsdExpc3QJAQlhc0FueUxpc3QBCQD8BwQFCG1hdGhEYXBwAhVjYWxjR3d4UGFyYW1zUkVBRE9OTFkJAMwIAgURZ1d4QW1vdW50U3RhcnROZXcJAMwIAgUGaGVpZ2h0CQDMCAIFD2xvY2tEdXJhdGlvbk5ldwUDbmlsBQNuaWwEDWdXeEFtb3VudERpZmYJAGUCBRFnV3hBbW91bnRTdGFydE5ldwURdXNlckN1cnJnV3hBbW91bnQEAWsJAQVhc0ludAEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAAABAFiCQEFYXNJbnQBCQCRAwIFE2dXeFBhcmFtc1Jlc3VsdExpc3QAAQQGcGVyaW9kCQCkAwEJAQVhc0ludAEJAJEDAgUTZ1d4UGFyYW1zUmVzdWx0TGlzdAACBBh0b3RhbE1heEJvb3N0SW50ZWdyYWxLRVkJARhrZXlUb3RhbE1heEJvb3N0SU5URUdSQUwABBF0b3RhbENhY2hlZEd3eEtFWQkBEWtleVRvdGFsQ2FjaGVkR3d4AAQSdXNlck1heEJvb3N0SW50TmV3CQBpAgkAaAIFEWdXeEFtb3VudFN0YXJ0TmV3BQ9sb2NrRHVyYXRpb25OZXcAAgQQdG90YWxNYXhCb29zdEludAkBDGdldEludE9yWmVybwIFDGJvb3N0aW5nRGFwcAUYdG90YWxNYXhCb29zdEludGVncmFsS0VZBA50b3RhbENhY2hlZEd3eAkBC3ZhbHVlT3JFbHNlAgkAmggCBQxib29zdGluZ0RhcHAFEXRvdGFsQ2FjaGVkR3d4S0VZAAAEBU1VTFQzAOgHBBR3eEVtaXNzaW9uUGVyQmxvY2tYMwkAaAIJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQABQVNVUxUMwQPc3Rha2VkQnlVc2VyS0VZCQEPa2V5U3Rha2VkQnlVc2VyAgUOdXNlckFkZHJlc3NTdHIFDGxwQXNzZXRJZFN0cgQOc3Rha2VkVG90YWxLRVkJAQ5rZXlTdGFrZWRUb3RhbAEFDGxwQXNzZXRJZFN0cgQMc3Rha2VkQnlVc2VyCQEKcmVhZFN0YWtlZAIFC3N0YWtpbmdEYXBwBQ9zdGFrZWRCeVVzZXJLRVkEC3N0YWtlZFRvdGFsCQEKcmVhZFN0YWtlZAIFC3N0YWtpbmdEYXBwBQ5zdGFrZWRUb3RhbEtFWQQPc3Rha2VkQnlVc2VyTmV3CQBkAgUMc3Rha2VkQnlVc2VyBQ1kZWx0YUxwQW1vdW50BA5zdGFrZWRUb3RhbE5ldwkAZAIFC3N0YWtlZFRvdGFsBQ1kZWx0YUxwQW1vdW50BApwb29sV2VpZ2h0AwkBAiE9AgUMbHBBc3NldElkU3RyBQhFTVBUWVNUUgQOcG9vbEFkZHJlc3NTdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQtmYWN0b3J5RGFwcAkBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQUMbHBBc3NldElkU3RyCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQtmYWN0b3J5RGFwcAkBFGtleUZhY3RvcnlQb29sV2VpZ2h0AQUOcG9vbEFkZHJlc3NTdHIAAAQYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzCQBrAwUUd3hFbWlzc2lvblBlckJsb2NrWDMFCnBvb2xXZWlnaHQJAGgCBQ5QT09MV0VJR0hUTVVMVAADBAl3eFBlckxwWDMDCQECIT0CBQ5zdGFrZWRUb3RhbE5ldwAACQBrAwUYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzBQVNVUxUOAUOc3Rha2VkVG90YWxOZXcAAAQQdXNlcld4UGVyQmxvY2tYMwkAawMFCXd4UGVyTHBYMwUPc3Rha2VkQnlVc2VyTmV3BQVNVUxUOAQXYm9vc3RFbWlzc2lvblBlckJsb2NrWDMJAGgCBRhwb29sV3hFbWlzc2lvblBlckJsb2NrWDMAAgQWdG1wVXNlckJvb3N0UGVyQmxvY2tYMwkAawMFEWdXeEFtb3VudFN0YXJ0TmV3BRdib29zdEVtaXNzaW9uUGVyQmxvY2tYMwkAZAIFDnRvdGFsQ2FjaGVkR3d4BQ1nV3hBbW91bnREaWZmBBN1c2VyQm9vc3RQZXJCbG9ja1gzCQCXAwEJAMwIAgUWdG1wVXNlckJvb3N0UGVyQmxvY2tYMwkAzAgCCQBoAgUQdXNlcld4UGVyQmxvY2tYMwACBQNuaWwECmJvb3N0Q29lZmYDCQAAAgUQdXNlcld4UGVyQmxvY2tYMwAACQBoAgABBQVNVUxUOAkAawMJAGQCBRN1c2VyQm9vc3RQZXJCbG9ja1gzBRB1c2VyV3hQZXJCbG9ja1gzBQVNVUxUOAUQdXNlcld4UGVyQmxvY2tYMwkAlAoCBQNuaWwJALkJAgkAzAgCAgYlZCVkJXMJAMwIAgkApAMBBRFnV3hBbW91bnRTdGFydE5ldwkAzAgCCQCkAwEFCmJvb3N0Q29lZmYJAMwIAgIBZAUDbmlsBQNTRVABaQEXd3hFbWlzc2lvblN0YXRzUkVBRE9OTFkABAdPTkVNVUxUCQCkAwEFBU1VTFQ4BANPTkUCATEEEnd4RW1pc3Npb25QZXJCbG9jawkBDGdldEludE9yRmFpbAIFDGVtaXNzaW9uRGFwcAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAEEmVtaXNzaW9uU3RhcnRCbG9jawkBDGdldEludE9yRmFpbAIFDGVtaXNzaW9uRGFwcAkBFWtleUVtaXNzaW9uU3RhcnRCbG9jawAEDHBhc3NlZEJsb2NrcwMJAGYCBRJlbWlzc2lvblN0YXJ0QmxvY2sFBmhlaWdodAAACQBlAgUGaGVpZ2h0BRJlbWlzc2lvblN0YXJ0QmxvY2sEDnRlYW1FbUR1cmF0aW9uCQBoAgCgCwDtAgQJdGVhbUVtTWF4CQBoAgDAiOxfBQVNVUxUOAQGdGVhbUVtAwkAZgIFDHBhc3NlZEJsb2NrcwUOdGVhbUVtRHVyYXRpb24FCXRlYW1FbU1heAkAawMFCXRlYW1FbU1heAUMcGFzc2VkQmxvY2tzBQ50ZWFtRW1EdXJhdGlvbgQPdG90YWxXeFJlbGVhc2VkCQBkAgkAaAIFEnd4RW1pc3Npb25QZXJCbG9jawUMcGFzc2VkQmxvY2tzBQZ0ZWFtRW0EDXRvdGFsV3hMb2NrZWQJAQxnZXRJbnRPclplcm8CBQxib29zdGluZ0RhcHAJAR9rZXlCb29zdGluZ0xvY2tQYXJhbVRvdGFsQW1vdW50AAQYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzCQEMZ2V0SW50T3JaZXJvAgUMYm9vc3RpbmdEYXBwCQEoa2V5Qm9vc3RpbmdTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwAECmxvY2tzQ291bnQJAQxnZXRJbnRPclplcm8CBQxib29zdGluZ0RhcHAJARprZXlCb29zdGluZ1N0YXRzTG9ja3NDb3VudAAJAJQKAgUDbmlsCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBQ90b3RhbFd4UmVsZWFzZWQJAMwIAgkApAMBBQ10b3RhbFd4TG9ja2VkCQDMCAIJAKQDAQUYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzCQDMCAIJAKQDAQUKbG9ja3NDb3VudAUDbmlsBQNTRVABaQERcG9vbFN0YXRzUkVBRE9OTFkBB2xwQXNzZXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFB2xwQXNzZXQEA2NmZwkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsBAlscEFzc2V0SWQJANkEAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQECmFtdEFzc2V0SWQJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ1pZHhBbXRBc3NldElkBAxwcmljZUFzc2V0SWQJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ9pZHhQcmljZUFzc2V0SWQEC2lBbXRBc3NldElkCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUOaWR4SUFtdEFzc2V0SWQEDWlQcmljZUFzc2V0SWQJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhJUHJpY2VBc3NldElkBAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20EDXBvb2xMUEJhbGFuY2UICQETdmFsdWVPckVycm9yTWVzc2FnZQIJAOwHAQUJbHBBc3NldElkCQCsAgIJAKwCAgIGQXNzZXQgCQDYBAEFCWxwQXNzZXRJZAIOIGRvZXNuJ3QgZXhpc3QIcXVhbnRpdHkEEmFjY0FtdEFzc2V0QmFsYW5jZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQphbXRBc3NldElkBQNuaWwFA25pbAQUYWNjUHJpY2VBc3NldEJhbGFuY2UJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUMcHJpY2VBc3NldElkBQNuaWwFA25pbAQKcHJpY2VzTGlzdAMJAAACBQ1wb29sTFBCYWxhbmNlAAAJAMwIAgkApgMBBQp6ZXJvQmlnSW50CQDMCAIJAKYDAQUKemVyb0JpZ0ludAkAzAgCCQCmAwEFCnplcm9CaWdJbnQFA25pbAkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCGWNhbGNQcmljZXNXcmFwcGVyUkVBRE9OTFkJAMwIAgUSYWNjQW10QXNzZXRCYWxhbmNlCQDMCAIFFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQDMCAIFDXBvb2xMUEJhbGFuY2UFA25pbAUDbmlsBAhjdXJQcmljZQAABA9scEFtdEFzc2V0U2hhcmUJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkAkQMCBQpwcmljZXNMaXN0AAEJAMwIAgUFTVVMVDgFA25pbAUDbmlsBBFscFByaWNlQXNzZXRTaGFyZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCRAwIFCnByaWNlc0xpc3QAAgkAzAgCBQVNVUxUOAUDbmlsBQNuaWwECnBvb2xXZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC2ZhY3RvcnlEYXBwCQEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBCQClCAEFC3Bvb2xBZGRyZXNzCQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUSYWNjQW10QXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgkApAMBBQ1wb29sTFBCYWxhbmNlCQDMCAIJAKQDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQ9scEFtdEFzc2V0U2hhcmUJAMwIAgkApAMBBRFscFByaWNlQXNzZXRTaGFyZQkAzAgCCQCkAwEFCnBvb2xXZWlnaHQFA25pbAUDU0VQAWkBJHBvb2xFdmFsdWF0ZVB1dEJ5QW1vdW50QXNzZXRSRUFET05MWQIHbHBBc3NldAxpbkFtQXNzZXRBbXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFB2xwQXNzZXQEA2NmZwkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsBAlscEFzc2V0SWQJANkEAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDGFtQXNzZXRJZFN0cgUDbmlsBQNuaWwEFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDHByQXNzZXRJZFN0cgUDbmlsBQNuaWwEDmFtdEFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwEEHByaWNlQXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgUNcHJpY2VBc3NldERjbQUDbmlsBQNuaWwEC2N1clByaWNlWDE4AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAUKemVyb0JpZ0ludAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAh5jYWxjUHJpY2VCaWdJbnRXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBRBwcmljZUFzc2V0QW10WDE4CQDMCAIJAKYDAQUOYW10QXNzZXRBbXRYMTgFA25pbAUDbmlsBAhjdXJQcmljZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFC2N1clByaWNlWDE4CQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQPaW5BbUFzc2V0QW10WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDGluQW1Bc3NldEFtdAkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwED2luUHJBc3NldEFtdFgxOAkAvAIDBQ9pbkFtQXNzZXRBbXRYMTgFC2N1clByaWNlWDE4BQZNVUxUMTgEDGluUHJBc3NldEFtdAkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFD2luUHJBc3NldEFtdFgxOAkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQDcmVzCQD8BwQFC3Bvb2xBZGRyZXNzAiNlc3RpbWF0ZVB1dE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkAzAgCAgAJAMwIAgCgwh4JAMwIAgUMaW5BbUFzc2V0QW10CQDMCAIFCWFtQXNzZXRJZAkAzAgCBQxpblByQXNzZXRBbXQJAMwIAgUJcHJBc3NldElkCQDMCAICAAkAzAgCBgkAzAgCBwUDbmlsBQNuaWwEDSR0MDIyOTczMjMzMjYEByRtYXRjaDAFA3JlcwMDAwkAAQIIBQckbWF0Y2gwAl8xAgNJbnQDCQABAggFByRtYXRjaDACXzMCA0ludAMJAAECCAUHJG1hdGNoMAJfNAIDSW50AwkAAQIIBQckbWF0Y2gwAl81AgNJbnQJAAECCAUHJG1hdGNoMAJfNgIDSW50BwcHBwkAAAIJAMYKAQUHJG1hdGNoMAANBwQJY2FsY0xwQW10CAUHJG1hdGNoMAJfMQQMY3VyUHJpY2VDYWxjCAUHJG1hdGNoMAJfMwQJYW1CYWxhbmNlCAUHJG1hdGNoMAJfNAQJcHJCYWxhbmNlCAUHJG1hdGNoMAJfNQQKbHBFbWlzc2lvbggFByRtYXRjaDACXzYJAJcKBQUJY2FsY0xwQW10BQxjdXJQcmljZUNhbGMFCWFtQmFsYW5jZQUJcHJCYWxhbmNlBQpscEVtaXNzaW9uCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQJY2FsY0xwQW10CAUNJHQwMjI5NzMyMzMyNgJfMQQMY3VyUHJpY2VDYWxjCAUNJHQwMjI5NzMyMzMyNgJfMgQJYW1CYWxhbmNlCAUNJHQwMjI5NzMyMzMyNgJfMwQJcHJCYWxhbmNlCAUNJHQwMjI5NzMyMzMyNgJfNAQKbHBFbWlzc2lvbggFDSR0MDIyOTczMjMzMjYCXzUJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFCWNhbGNMcEFtdAkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCBQpwb29sU3RhdHVzCQDMCAIJAKQDAQUMaW5BbUFzc2V0QW10CQDMCAIJAKQDAQUMaW5QckFzc2V0QW10BQNuaWwFA1NFUAFpASNwb29sRXZhbHVhdGVQdXRCeVByaWNlQXNzZXRSRUFET05MWQIHbHBBc3NldAxpblByQXNzZXRBbXQEC3Bvb2xBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBCQEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgULZmFjdG9yeURhcHAJASZrZXlGYWN0b3J5THBBc3NldFRvUG9vbENvbnRyYWN0QWRkcmVzcwEFB2xwQXNzZXQEA2NmZwkBCWFzQW55TGlzdAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldFBvb2xDb25maWdXcmFwcGVyUkVBRE9OTFkFA25pbAUDbmlsBAlscEFzc2V0SWQJANkEAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFBvb2xMUEFzc2V0SWQEDGFtQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQECWFtQXNzZXRJZAkA2QQBBQxhbUFzc2V0SWRTdHIEDHByQXNzZXRJZFN0cgkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQJcHJBc3NldElkCQDZBAEFDHByQXNzZXRJZFN0cgQLYW10QXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDmlkeEFtdEFzc2V0RGNtBA1wcmljZUFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBRBpZHhQcmljZUFzc2V0RGNtBApwb29sU3RhdHVzCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4UG9vbFN0YXR1cwQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQMYW1CYWxhbmNlUmF3CQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDGFtQXNzZXRJZFN0cgUDbmlsBQNuaWwEDHByQmFsYW5jZVJhdwkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwckFzc2V0SWRTdHIFA25pbAUDbmlsBA9hbUJhbGFuY2VSYXdYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMYW1CYWxhbmNlUmF3CQDMCAIFC2FtdEFzc2V0RGNtBQNuaWwFA25pbAQPcHJCYWxhbmNlUmF3WDE4CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCFHRvWDE4V3JhcHBlclJFQURPTkxZCQDMCAIFDHByQmFsYW5jZVJhdwkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQLY3VyUHJpY2VYMTgDCQAAAgUNcG9vbExQQmFsYW5jZQAABQp6ZXJvQmlnSW50CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFD3ByQmFsYW5jZVJhd1gxOAkAzAgCCQCmAwEFD2FtQmFsYW5jZVJhd1gxOAUDbmlsBQNuaWwECGN1clByaWNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQULY3VyUHJpY2VYMTgJAMwIAgUFTVVMVDgFA25pbAUDbmlsBA9pblByQXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMaW5QckFzc2V0QW10CQDMCAIFDXByaWNlQXNzZXREY20FA25pbAUDbmlsBA9pbkFtQXNzZXRBbXRYMTgJALwCAwUPaW5QckFzc2V0QW10WDE4BQZNVUxUMTgFC2N1clByaWNlWDE4BAxpbkFtQXNzZXRBbXQJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBQ9pbkFtQXNzZXRBbXRYMTgJAMwIAgULYW10QXNzZXREY20FA25pbAUDbmlsBANyZXMJAPwHBAULcG9vbEFkZHJlc3MCI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQDMCAICAAkAzAgCAKDCHgkAzAgCBQxpbkFtQXNzZXRBbXQJAMwIAgUJYW1Bc3NldElkCQDMCAIFDGluUHJBc3NldEFtdAkAzAgCBQlwckFzc2V0SWQJAMwIAgIACQDMCAIGCQDMCAIHBQNuaWwFA25pbAQNJHQwMjU4OTkyNjI1MgQHJG1hdGNoMAUDcmVzAwMDCQABAggFByRtYXRjaDACXzECA0ludAMJAAECCAUHJG1hdGNoMAJfMwIDSW50AwkAAQIIBQckbWF0Y2gwAl80AgNJbnQDCQABAggFByRtYXRjaDACXzUCA0ludAkAAQIIBQckbWF0Y2gwAl82AgNJbnQHBwcHCQAAAgkAxgoBBQckbWF0Y2gwAA0HBAljYWxjTHBBbXQIBQckbWF0Y2gwAl8xBAxjdXJQcmljZUNhbGMIBQckbWF0Y2gwAl8zBAlhbUJhbGFuY2UIBQckbWF0Y2gwAl80BAlwckJhbGFuY2UIBQckbWF0Y2gwAl81BApscEVtaXNzaW9uCAUHJG1hdGNoMAJfNgkAlwoFBQljYWxjTHBBbXQFDGN1clByaWNlQ2FsYwUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24JAAIBAhNDb3VsZG4ndCBjYXN0IHR5cGVzBAljYWxjTHBBbXQIBQ0kdDAyNTg5OTI2MjUyAl8xBAxjdXJQcmljZUNhbGMIBQ0kdDAyNTg5OTI2MjUyAl8yBAlhbUJhbGFuY2UIBQ0kdDAyNTg5OTI2MjUyAl8zBAlwckJhbGFuY2UIBQ0kdDAyNTg5OTI2MjUyAl80BApscEVtaXNzaW9uCAUNJHQwMjU4OTkyNjI1MgJfNQkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUJY2FsY0xwQW10CQDMCAIJAKQDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgkApAMBBQxpbkFtQXNzZXRBbXQJAMwIAgkApAMBBQxpblByQXNzZXRBbXQFA25pbAUDU0VQAWkBF3Bvb2xFdmFsdWF0ZUdldFJFQURPTkxZAhBwYXltZW50THBBc3NldElkDHBheW1lbnRMcEFtdAQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUQcGF5bWVudExwQXNzZXRJZAQDcmVzCQD8BwQFC3Bvb2xBZGRyZXNzAiNlc3RpbWF0ZUdldE9wZXJhdGlvbldyYXBwZXJSRUFET05MWQkAzAgCAgAJAMwIAgUQcGF5bWVudExwQXNzZXRJZAkAzAgCBQxwYXltZW50THBBbXQJAMwIAgkApQgBBQtwb29sQWRkcmVzcwUDbmlsBQNuaWwEDSR0MDI2OTQ3MjczNjQEByRtYXRjaDAFA3JlcwMDAwkAAQIIBQckbWF0Y2gwAl8xAgNJbnQDCQABAggFByRtYXRjaDACXzICA0ludAMJAAECCAUHJG1hdGNoMAJfNQIDSW50AwkAAQIIBQckbWF0Y2gwAl82AgNJbnQDCQABAggFByRtYXRjaDACXzcCA0ludAMJAAECCAUHJG1hdGNoMAJfOAIGU3RyaW5nCQABAggFByRtYXRjaDACXzkCBlN0cmluZwcHBwcHBwkAAAIJAMYKAQUHJG1hdGNoMAAKBwQIb3V0QW1BbXQIBQckbWF0Y2gwAl8xBAhvdXRQckFtdAgFByRtYXRjaDACXzIECWFtQmFsYW5jZQgFByRtYXRjaDACXzUECXByQmFsYW5jZQgFByRtYXRjaDACXzYECmxwRW1pc3Npb24IBQckbWF0Y2gwAl83BAhjdXJQcmljZQgFByRtYXRjaDACXzgECnBvb2xTdGF0dXMIBQckbWF0Y2gwAl85CQCZCgcFCG91dEFtQW10BQhvdXRQckFtdAUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24FCGN1clByaWNlBQpwb29sU3RhdHVzCQACAQITQ291bGRuJ3QgY2FzdCB0eXBlcwQIb3V0QW1BbXQIBQ0kdDAyNjk0NzI3MzY0Al8xBAhvdXRQckFtdAgFDSR0MDI2OTQ3MjczNjQCXzIECWFtQmFsYW5jZQgFDSR0MDI2OTQ3MjczNjQCXzMECXByQmFsYW5jZQgFDSR0MDI2OTQ3MjczNjQCXzQECmxwRW1pc3Npb24IBQ0kdDAyNjk0NzI3MzY0Al81BAhjdXJQcmljZQgFDSR0MDI2OTQ3MjczNjQCXzYECnBvb2xTdGF0dXMIBQ0kdDAyNjk0NzI3MzY0Al83CQCUCgIFA25pbAkAuQkCCQDMCAICDiVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUIb3V0QW1BbXQJAMwIAgkApAMBBQhvdXRQckFtdAkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgUIY3VyUHJpY2UJAMwIAgUKcG9vbFN0YXR1cwUDbmlsBQNTRVABaQETZ3d4VXNlckluZm9SRUFET05MWQELdXNlckFkZHJlc3MED2d3eFVzZXJJbmZvTElTVAkBCWFzQW55TGlzdAEJAPwHBAUMYm9vc3RpbmdEYXBwAhNnd3hVc2VySW5mb1JFQURPTkxZCQDMCAIFC3VzZXJBZGRyZXNzBQNuaWwFA25pbAQJZ3d4QW1vdW50CQEFYXNJbnQBCQCRAwIFD2d3eFVzZXJJbmZvTElTVAAACQCUCgIFA25pbAkAuQkCCQDMCAICAiVkCQDMCAIJAKQDAQUJZ3d4QW1vdW50BQNuaWwFA1NFUAFpARN1bnN0YWtlQW5kR2V0T25lVGtuBwtwb29sQWRkcmVzcwZhbW91bnQKZXhjaFJlc3VsdAdub3RVc2VkCW91dEFtb3VudApvdXRBc3NldElkCHNsaXBwYWdlBANpbnYJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBBXZhbHVlAQkAnQgCCQERQGV4dHJOYXRpdmUoMTA2MikBBQtwb29sQWRkcmVzcwkBDGtleUFkZG9uQWRkcgACE3Vuc3Rha2VBbmRHZXRPbmVUa24JAMwIAgUGYW1vdW50CQDMCAIFCmV4Y2hSZXN1bHQJAMwIAgUHbm90VXNlZAkAzAgCBQlvdXRBbW91bnQJAMwIAgUKb3V0QXNzZXRJZAkAzAgCBQhzbGlwcGFnZQUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCnNldE1hbmFnZXIBF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAtjaGVja0NhbGxlcgkBC211c3RNYW5hZ2VyAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEFWNoZWNrTWFuYWdlclB1YmxpY0tleQkA2QQBBRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQMJAAACBRVjaGVja01hbmFnZXJQdWJsaWNLZXkFFWNoZWNrTWFuYWdlclB1YmxpY0tleQkAzAgCCQELU3RyaW5nRW50cnkCCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABRdwZW5kaW5nTWFuYWdlclB1YmxpY0tleQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDmNvbmZpcm1NYW5hZ2VyAAQCcG0JAR1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAEBWhhc1BNAwkBCWlzRGVmaW5lZAEFAnBtBgkAAgECEk5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAAIBAhtZb3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5UPSZZg==", "chainId": 84, "height": 2159889, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GrasoRecNMD6zX6jwkTDRe5mEWhQ3jrQ2Fk7LviCNEbM Next: 8MxAtLqVjF8mQbBUFdkRTyJioWQ21dhHDymQ5HUwmB4d Diff:
OldNewDifferences
234234 func aR () = "%s%s__emission__endBlock"
235235
236236
237-let aS = X()
237+func aS () = "%s__addonAddr"
238238
239-let aT = Z(aS)
240239
241-let aU = ad(aT)
240+let aT = X()
242241
243-let aM = ae(aT)
242+let aU = Z(aT)
244243
245-let aV = af(aT)
244+let aV = ad(aU)
246245
247-let aW = ab(aT)
246+let aM = ae(aU)
248247
249-func aX (aY) = {
250- let aZ = t(aS, U(aY))
251- let ba = b
252- let bb = getIntegerValue(aS, V(aZ))
253- let bc = w(aU, aN())
254- let bd = w(aU, aO())
255- let be = 3
256- let bf = (fraction(bc, bb, ba) / be)
257- let bg = fraction(bd, bb, ba)
258- let bh = (be * b)
259- let bi = v(aM, aH(aY))
260-[bf, bh, bi]
248+let aW = af(aU)
249+
250+let aX = ab(aU)
251+
252+func aY (aZ) = {
253+ let ba = t(aT, U(aZ))
254+ let bb = b
255+ let bc = getIntegerValue(aT, V(ba))
256+ let bd = w(aV, aN())
257+ let be = w(aV, aO())
258+ let bf = 3
259+ let bg = (fraction(bd, bc, bb) / bf)
260+ let bh = fraction(be, bc, bb)
261+ let bi = (bf * b)
262+ let bj = v(aM, aH(aZ))
263+[bg, bi, bj]
261264 }
262265
263266
264-func bj (bk,bl,bm) = {
265- let bn = fraction(bl, b, bm)
266- let bo = fraction(bk, bn, b)
267-[bo]
267+func bk (bl,bm,bn) = {
268+ let bo = fraction(bm, b, bn)
269+ let bp = fraction(bl, bo, b)
270+[bp]
268271 }
269272
270273
271-func bp () = {
274+func bq () = {
272275 let z = getString(G())
273276 if ($isInstanceOf(z, "String"))
274277 then {
275- let bq = z
276- fromBase58String(bq)
278+ let br = z
279+ fromBase58String(br)
277280 }
278281 else if ($isInstanceOf(z, "Unit"))
279282 then unit
281284 }
282285
283286
284-func br () = {
287+func bs () = {
285288 let z = getString(H())
286289 if ($isInstanceOf(z, "String"))
287290 then {
288- let bq = z
289- fromBase58String(bq)
291+ let br = z
292+ fromBase58String(br)
290293 }
291294 else if ($isInstanceOf(z, "Unit"))
292295 then unit
294297 }
295298
296299
297-func bs (bt) = {
298- let bu = throw("Permission denied")
299- let z = bp()
300+func bt (bu) = {
301+ let bv = throw("Permission denied")
302+ let z = bq()
300303 if ($isInstanceOf(z, "ByteVector"))
301304 then {
302- let bv = z
303- if ((bt.callerPublicKey == bv))
305+ let bw = z
306+ if ((bu.callerPublicKey == bw))
304307 then true
305- else bu
308+ else bv
306309 }
307310 else if ($isInstanceOf(z, "Unit"))
308- then if ((bt.caller == this))
311+ then if ((bu.caller == this))
309312 then true
310- else bu
313+ else bv
311314 else throw("Match error")
312315 }
313316
314317
315-@Callable(bt)
316-func constructor (bw) = {
317- let bx = bs(bt)
318- if ((bx == bx))
319- then [StringEntry(F(), bw)]
318+@Callable(bu)
319+func constructor (bx) = {
320+ let by = bt(bu)
321+ if ((by == by))
322+ then [StringEntry(F(), bx)]
320323 else throw("Strict value is not equal to itself.")
321324 }
322325
323326
324327
325-@Callable(bt)
326-func currentRewardRateREADONLY (aY) = {
327- let by = aX(aY)
328- let bc = by[0]
329- let bh = by[1]
330- let bi = by[2]
331- $Tuple2(nil, makeString(["%d%d%d", toString(bc), toString(bh), toString(bi)], e))
328+@Callable(bu)
329+func currentRewardRateREADONLY (aZ) = {
330+ let bz = aY(aZ)
331+ let bd = bz[0]
332+ let bi = bz[1]
333+ let bj = bz[2]
334+ $Tuple2(nil, makeString(["%d%d%d", toString(bd), toString(bi), toString(bj)], e))
332335 }
333336
334337
335338
336-@Callable(bt)
337-func currentUserRewardRateREADONLY (aY,am) = {
338- let by = aX(aY)
339- let bc = by[0]
340- let bh = by[1]
341- let bi = by[2]
342- let bz = v(aM, aE(am, aY))
343- let bA = split(D(invoke(aM, "claimWxREADONLY", [aY, am], nil)), e)
344- let bB = valueOrErrorMessage(parseInt(bA[5]), "couldn't parse minRewardPart")
345- let bC = valueOrErrorMessage(parseInt(bA[6]), "couldn't parse boostRewardPart")
346- let bD = bA[7]
347- let bE = if ((bC == 0))
339+@Callable(bu)
340+func currentUserRewardRateREADONLY (aZ,am) = {
341+ let bz = aY(aZ)
342+ let bd = bz[0]
343+ let bi = bz[1]
344+ let bj = bz[2]
345+ let bA = v(aM, aE(am, aZ))
346+ let bB = split(D(invoke(aM, "claimWxREADONLY", [aZ, am], nil)), e)
347+ let bC = valueOrErrorMessage(parseInt(bB[5]), "couldn't parse minRewardPart")
348+ let bD = valueOrErrorMessage(parseInt(bB[6]), "couldn't parse boostRewardPart")
349+ let bE = bB[7]
350+ let bF = if ((bD == 0))
348351 then (1 * b)
349- else fraction((bB + bC), b, bB)
350- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bc), toString(bh), toString(bi), toString(bz), toString(bE), bD], e))
352+ else fraction((bC + bD), b, bC)
353+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bd), toString(bi), toString(bj), toString(bA), toString(bF), bE], e))
351354 }
352355
353356
354357
355-@Callable(bt)
358+@Callable(bu)
356359 func claimedRewardREADONLY (am) = {
357- let bF = Y()
358- let bG = "%s%d%d%d%s"
359- func bH (bI,bJ) = {
360- let bK = aJ(bJ, am)
361- let bL = aK(bJ, am)
362- let bM = valueOrElse(getInteger(aM, bK), 0)
360+ let bG = Y()
361+ let bH = "%s%d%d%d%s"
362+ func bI (bJ,bK) = {
363+ let bL = aJ(bK, am)
364+ let bM = aK(bK, am)
363365 let bN = valueOrElse(getInteger(aM, bL), 0)
364- let bO = 0
365- makeString([(bG + bI), bJ, toString(bM), toString(bN), toString(bO), "end"], e)
366+ let bO = valueOrElse(getInteger(aM, bM), 0)
367+ let bP = 0
368+ makeString([(bH + bJ), bK, toString(bN), toString(bO), toString(bP), "end"], e)
366369 }
367370
368- let bP = {
369- let bQ = bF
370- let bR = size(bQ)
371- let bS = "%s"
372- func bT (bU,bV) = if ((bV >= bR))
373- then bU
374- else bH(bU, bQ[bV])
371+ let bQ = {
372+ let bR = bG
373+ let bS = size(bR)
374+ let bT = "%s"
375+ func bU (bV,bW) = if ((bW >= bS))
376+ then bV
377+ else bI(bV, bR[bW])
375378
376- func bW (bU,bV) = if ((bV >= bR))
377- then bU
379+ func bX (bV,bW) = if ((bW >= bS))
380+ then bV
378381 else throw("List size exceeds 10")
379382
380- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
383+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
381384 }
382- $Tuple2(nil, ((bP + e) + am))
385+ $Tuple2(nil, ((bQ + e) + am))
383386 }
384387
385388
386389
387-@Callable(bt)
388-func calcBoostBulkInternalREADONLY (bX,bY,bZ,ca,cb,cc,cd) = if ((bX == size(bY)))
389- then $Tuple2(nil, cd)
390+@Callable(bu)
391+func calcBoostBulkInternalREADONLY (bY,bZ,ca,cb,cc,cd,ce) = if ((bY == size(bZ)))
392+ then $Tuple2(nil, ce)
390393 else {
391- let ce = bY[bX]
392- let cf = bZ[bX]
393- let cg = ca[bX]
394- let ch = cb[bX]
395- let ci = {
396- let cj = invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, cc], nil)
397- if ($isInstanceOf(cj, "String"))
398- then cj
399- else throw(($getType(invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, cc], nil)) + " couldn't be cast to String"))
394+ let cf = bZ[bY]
395+ let cg = ca[bY]
396+ let ch = cb[bY]
397+ let ci = cc[bY]
398+ let cj = {
399+ let ck = invoke(this, "calcBoostREADONLY", [cf, cg, ch, ci, cd], nil)
400+ if ($isInstanceOf(ck, "String"))
401+ then ck
402+ else throw(($getType(invoke(this, "calcBoostREADONLY", [cf, cg, ch, ci, cd], nil)) + " couldn't be cast to String"))
400403 }
401- let ck = (cd :+ ci)
402- let cl = {
403- let cj = invoke(this, "calcBoostBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, ck], nil)
404- if ($isInstanceOf(cj, "List[Any]"))
405- then cj
406- else throw(($getType(invoke(this, "calcBoostBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, ck], nil)) + " couldn't be cast to List[Any]"))
404+ let cl = (ce :+ cj)
405+ let cm = {
406+ let ck = invoke(this, "calcBoostBulkInternalREADONLY", [(bY + 1), bZ, ca, cb, cc, cd, cl], nil)
407+ if ($isInstanceOf(ck, "List[Any]"))
408+ then ck
409+ else throw(($getType(invoke(this, "calcBoostBulkInternalREADONLY", [(bY + 1), bZ, ca, cb, cc, cd, cl], nil)) + " couldn't be cast to List[Any]"))
407410 }
408- if ((cl == cl))
409- then $Tuple2(nil, cl)
411+ if ((cm == cm))
412+ then $Tuple2(nil, cm)
410413 else throw("Strict value is not equal to itself.")
411414 }
412415
413416
414417
415-@Callable(bt)
416-func calcBoostBulkREADONLY (ce,cf,cg,ch,cc) = {
417- let ck = invoke(this, "calcBoostBulkInternalREADONLY", [0, ce, cf, cg, ch, cc, nil], nil)
418- $Tuple2(nil, ck)
418+@Callable(bu)
419+func calcBoostBulkREADONLY (cf,cg,ch,ci,cd) = {
420+ let cl = invoke(this, "calcBoostBulkInternalREADONLY", [0, cf, cg, ch, ci, cd, nil], nil)
421+ $Tuple2(nil, cl)
419422 }
420423
421424
422425
423-@Callable(bt)
424-func calcBoostREADONLY (ce,cf,cg,ch,cc) = {
425- let cm = aV
426- let cn = "empty"
427- let co = parseIntValue(split(t(aW, ag()), e)[4])
428- let aG = if ((ch == ""))
429- then cn
430- else ch
431- let aF = if ((cc == ""))
432- then cn
433- else cc
434- let cp = valueOrElse(getString(aW, al(cc)), cn)
435- let cq = valueOrElse(getInteger(aW, ap(cp)), 0)
436- let cr = valueOrElse(getInteger(aW, ar(cp)), height)
437- let bl = valueOrElse(getInteger(aW, as(cp)), 0)
438- let cs = (cr + bl)
439- let ct = max([(cs - height), 0])
440- let cu = (cq + ce)
441- let cv = min([(ct + cf), co])
442- let cw = B(x(invoke(aW, "gwxUserInfoREADONLY", [aF], nil))[0])
443- let cx = bj(cu, cv, co)[0]
444- let cy = x(invoke(cm, "calcGwxParamsREADONLY", [cx, height, cv], nil))
445- let cz = (cx - cw)
446- let cA = B(cy[0])
447- let cB = B(cy[1])
448- let aw = toString(B(cy[2]))
449- let cC = aA()
450- let cD = aD()
451- let cE = ((cx * cv) / 2)
452- let cF = v(aW, cC)
453- let cG = valueOrElse(getInteger(aW, cD), 0)
454- let cH = 1000
455- let cI = (w(aU, aN()) * cH)
456- let cJ = aE(aF, aG)
457- let cK = aH(aG)
458- let cL = aL(aM, cJ)
426+@Callable(bu)
427+func calcBoostREADONLY (cf,cg,ch,ci,cd) = {
428+ let cn = aW
429+ let co = "empty"
430+ let cp = parseIntValue(split(t(aX, ag()), e)[4])
431+ let aG = if ((ci == ""))
432+ then co
433+ else ci
434+ let aF = if ((cd == ""))
435+ then co
436+ else cd
437+ let cq = valueOrElse(getString(aX, al(cd)), co)
438+ let cr = valueOrElse(getInteger(aX, ap(cq)), 0)
439+ let cs = valueOrElse(getInteger(aX, ar(cq)), height)
440+ let bm = valueOrElse(getInteger(aX, as(cq)), 0)
441+ let ct = (cs + bm)
442+ let cu = max([(ct - height), 0])
443+ let cv = (cr + cf)
444+ let cw = min([(cu + cg), cp])
445+ let cx = B(x(invoke(aX, "gwxUserInfoREADONLY", [aF], nil))[0])
446+ let cy = bk(cv, cw, cp)[0]
447+ let cz = x(invoke(cn, "calcGwxParamsREADONLY", [cy, height, cw], nil))
448+ let cA = (cy - cx)
449+ let cB = B(cz[0])
450+ let cC = B(cz[1])
451+ let aw = toString(B(cz[2]))
452+ let cD = aA()
453+ let cE = aD()
454+ let cF = ((cy * cw) / 2)
455+ let cG = v(aX, cD)
456+ let cH = valueOrElse(getInteger(aX, cE), 0)
457+ let cI = 1000
458+ let cJ = (w(aV, aN()) * cI)
459+ let cK = aE(aF, aG)
460+ let cL = aH(aG)
459461 let cM = aL(aM, cK)
460- let cN = (cL + cg)
461- let cO = (cM + cg)
462- let bb = if ((aG != cn))
462+ let cN = aL(aM, cL)
463+ let cO = (cM + ch)
464+ let cP = (cN + ch)
465+ let bc = if ((aG != co))
463466 then {
464- let aZ = valueOrErrorMessage(getString(aS, R(aG)), ("unsupported lp asset " + aG))
465- getIntegerValue(aS, V(aZ))
467+ let ba = valueOrErrorMessage(getString(aT, R(aG)), ("unsupported lp asset " + aG))
468+ getIntegerValue(aT, V(ba))
466469 }
467470 else 0
468- let cP = fraction(cI, bb, (f * 3))
469- let cQ = if ((cO != 0))
470- then fraction(cP, b, cO)
471+ let cQ = fraction(cJ, bc, (f * 3))
472+ let cR = if ((cP != 0))
473+ then fraction(cQ, b, cP)
471474 else 0
472- let cR = fraction(cQ, cN, b)
473- let cS = (cP * 2)
474- let cT = fraction(cx, cS, (cG + cz))
475- let cU = min([cT, (cR * 2)])
476- let cV = if ((cR == 0))
475+ let cS = fraction(cR, cO, b)
476+ let cT = (cQ * 2)
477+ let cU = fraction(cy, cT, (cH + cA))
478+ let cV = min([cU, (cS * 2)])
479+ let cW = if ((cS == 0))
477480 then (1 * b)
478- else fraction((cU + cR), b, cR)
479- $Tuple2(nil, makeString(["%d%d%s", toString(cx), toString(cV), "d"], e))
481+ else fraction((cV + cS), b, cS)
482+ $Tuple2(nil, makeString(["%d%d%s", toString(cy), toString(cW), "d"], e))
480483 }
481484
482485
483486
484-@Callable(bt)
487+@Callable(bu)
485488 func wxEmissionStatsREADONLY () = {
486- let cW = toString(b)
487- let cX = "1"
488- let bc = w(aU, aN())
489- let cY = w(aU, aP())
490- let cZ = if ((cY > height))
489+ let cX = toString(b)
490+ let cY = "1"
491+ let bd = w(aV, aN())
492+ let cZ = w(aV, aP())
493+ let da = if ((cZ > height))
491494 then 0
492- else (height - cY)
493- let da = (1440 * 365)
494- let db = (201000000 * b)
495- let dc = if ((cZ > da))
496- then db
497- else fraction(db, cZ, da)
498- let dd = ((bc * cZ) + dc)
499- let de = v(aW, ah())
500- let df = v(aW, ai())
501- let dg = v(aW, aj())
502- $Tuple2(nil, makeString(["%d%d%d%d", toString(dd), toString(de), toString(df), toString(dg)], e))
495+ else (height - cZ)
496+ let db = (1440 * 365)
497+ let dc = (201000000 * b)
498+ let dd = if ((da > db))
499+ then dc
500+ else fraction(dc, da, db)
501+ let de = ((bd * da) + dd)
502+ let df = v(aX, ah())
503+ let dg = v(aX, ai())
504+ let dh = v(aX, aj())
505+ $Tuple2(nil, makeString(["%d%d%d%d", toString(de), toString(df), toString(dg), toString(dh)], e))
503506 }
504507
505508
506509
507-@Callable(bt)
508-func poolStatsREADONLY (dh) = {
509- let di = addressFromStringValue(t(aS, U(dh)))
510- let dj = x(invoke(di, "getPoolConfigWrapperREADONLY", nil, nil))
511- let aY = fromBase58String(D(dj[j]))
512- let dk = D(dj[k])
513- let dl = D(dj[l])
514- let dm = D(dj[o])
515- let dn = D(dj[p])
516- let do = parseIntValue(D(dj[m]))
517- let dp = parseIntValue(D(dj[n]))
518- let dq = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
519- let dr = B(invoke(di, "getAccBalanceWrapperREADONLY", [dk], nil))
520- let ds = B(invoke(di, "getAccBalanceWrapperREADONLY", [dl], nil))
521- let dt = if ((dq == 0))
510+@Callable(bu)
511+func poolStatsREADONLY (di) = {
512+ let dj = addressFromStringValue(t(aT, U(di)))
513+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
514+ let aZ = fromBase58String(D(dk[j]))
515+ let dl = D(dk[k])
516+ let dm = D(dk[l])
517+ let dn = D(dk[o])
518+ let do = D(dk[p])
519+ let dp = parseIntValue(D(dk[m]))
520+ let dq = parseIntValue(D(dk[n]))
521+ let dr = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
522+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dl], nil))
523+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dm], nil))
524+ let du = if ((dr == 0))
522525 then [toString(g), toString(g), toString(g)]
523- else x(invoke(di, "calcPricesWrapperREADONLY", [dr, ds, dq], nil))
524- let du = 0
525- let dv = B(invoke(di, "fromX18WrapperREADONLY", [dt[1], b], nil))
526- let dw = B(invoke(di, "fromX18WrapperREADONLY", [dt[2], b], nil))
527- let bb = getIntegerValue(aS, V(toString(di)))
528- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dr), toString(ds), toString(dq), toString(du), toString(dv), toString(dw), toString(bb)], e))
526+ else x(invoke(dj, "calcPricesWrapperREADONLY", [ds, dt, dr], nil))
527+ let dv = 0
528+ let dw = B(invoke(dj, "fromX18WrapperREADONLY", [du[1], b], nil))
529+ let dx = B(invoke(dj, "fromX18WrapperREADONLY", [du[2], b], nil))
530+ let bc = getIntegerValue(aT, V(toString(dj)))
531+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ds), toString(dt), toString(dr), toString(dv), toString(dw), toString(dx), toString(bc)], e))
529532 }
530533
531534
532535
533-@Callable(bt)
534-func poolEvaluatePutByAmountAssetREADONLY (dh,dx) = {
535- let di = addressFromStringValue(t(aS, U(dh)))
536- let dj = x(invoke(di, "getPoolConfigWrapperREADONLY", nil, nil))
537- let aY = fromBase58String(D(dj[j]))
538- let dy = D(dj[k])
539- let dz = fromBase58String(dy)
540- let dA = D(dj[l])
541- let dB = fromBase58String(dA)
542- let do = parseIntValue(D(dj[m]))
543- let dp = parseIntValue(D(dj[n]))
544- let dC = D(dj[i])
545- let dq = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
546- let dr = B(invoke(di, "getAccBalanceWrapperREADONLY", [dy], nil))
547- let ds = B(invoke(di, "getAccBalanceWrapperREADONLY", [dA], nil))
548- let dD = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dr, do], nil)))
549- let dE = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [ds, dp], nil)))
550- let dF = if ((dq == 0))
536+@Callable(bu)
537+func poolEvaluatePutByAmountAssetREADONLY (di,dy) = {
538+ let dj = addressFromStringValue(t(aT, U(di)))
539+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
540+ let aZ = fromBase58String(D(dk[j]))
541+ let dz = D(dk[k])
542+ let dA = fromBase58String(dz)
543+ let dB = D(dk[l])
544+ let dC = fromBase58String(dB)
545+ let dp = parseIntValue(D(dk[m]))
546+ let dq = parseIntValue(D(dk[n]))
547+ let dD = D(dk[i])
548+ let dr = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
549+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
550+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
551+ let dE = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [ds, dp], nil)))
552+ let dF = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dt, dq], nil)))
553+ let dG = if ((dr == 0))
551554 then g
552- else parseBigIntValue(D(invoke(di, "calcPriceBigIntWrapperREADONLY", [toString(dE), toString(dD)], nil)))
553- let du = B(invoke(di, "fromX18WrapperREADONLY", [toString(dF), b], nil))
554- let dG = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dx, do], nil)))
555- let dH = fraction(dG, dF, d)
556- let dI = B(invoke(di, "fromX18WrapperREADONLY", [toString(dH), dp], nil))
557- let ck = invoke(di, "estimatePutOperationWrapperREADONLY", ["", 500000, dx, dz, dI, dB, "", true, false], nil)
558- let dJ = {
559- let z = ck
555+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
556+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
557+ let dH = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dy, dp], nil)))
558+ let dI = fraction(dH, dG, d)
559+ let dJ = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dI), dq], nil))
560+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
561+ let dK = {
562+ let z = cl
560563 if (if (if ($isInstanceOf(z._1, "Int"))
561564 then if ($isInstanceOf(z._3, "Int"))
562565 then if ($isInstanceOf(z._4, "Int"))
569572 then (size(z) == 13)
570573 else false)
571574 then {
572- let dK = z._1
573- let dL = z._3
574- let dM = z._4
575- let dN = z._5
576- let dO = z._6
577- $Tuple5(dK, dL, dM, dN, dO)
575+ let dL = z._1
576+ let dM = z._3
577+ let dN = z._4
578+ let dO = z._5
579+ let dP = z._6
580+ $Tuple5(dL, dM, dN, dO, dP)
578581 }
579582 else throw("Couldn't cast types")
580583 }
581- let dK = dJ._1
582- let dL = dJ._2
583- let dM = dJ._3
584- let dN = dJ._4
585- let dO = dJ._5
586- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dK), toString(du), toString(dM), toString(dN), toString(dO), dC, toString(dx), toString(dI)], e))
584+ let dL = dK._1
585+ let dM = dK._2
586+ let dN = dK._3
587+ let dO = dK._4
588+ let dP = dK._5
589+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
587590 }
588591
589592
590593
591-@Callable(bt)
592-func poolEvaluatePutByPriceAssetREADONLY (dh,dI) = {
593- let di = addressFromStringValue(t(aS, U(dh)))
594- let dj = x(invoke(di, "getPoolConfigWrapperREADONLY", nil, nil))
595- let aY = fromBase58String(D(dj[j]))
596- let dy = D(dj[k])
597- let dz = fromBase58String(dy)
598- let dA = D(dj[l])
599- let dB = fromBase58String(dA)
600- let do = parseIntValue(D(dj[m]))
601- let dp = parseIntValue(D(dj[n]))
602- let dC = D(dj[i])
603- let dq = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
604- let dP = B(invoke(di, "getAccBalanceWrapperREADONLY", [dy], nil))
605- let dQ = B(invoke(di, "getAccBalanceWrapperREADONLY", [dA], nil))
606- let dR = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dP, do], nil)))
607- let dS = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dQ, dp], nil)))
608- let dF = if ((dq == 0))
594+@Callable(bu)
595+func poolEvaluatePutByPriceAssetREADONLY (di,dJ) = {
596+ let dj = addressFromStringValue(t(aT, U(di)))
597+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
598+ let aZ = fromBase58String(D(dk[j]))
599+ let dz = D(dk[k])
600+ let dA = fromBase58String(dz)
601+ let dB = D(dk[l])
602+ let dC = fromBase58String(dB)
603+ let dp = parseIntValue(D(dk[m]))
604+ let dq = parseIntValue(D(dk[n]))
605+ let dD = D(dk[i])
606+ let dr = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
607+ let dQ = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
608+ let dR = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
609+ let dS = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dQ, dp], nil)))
610+ let dT = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dR, dq], nil)))
611+ let dG = if ((dr == 0))
609612 then g
610- else parseBigIntValue(D(invoke(di, "calcPriceBigIntWrapperREADONLY", [toString(dS), toString(dR)], nil)))
611- let du = B(invoke(di, "fromX18WrapperREADONLY", [toString(dF), b], nil))
612- let dH = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dI, dp], nil)))
613- let dG = fraction(dH, d, dF)
614- let dx = B(invoke(di, "fromX18WrapperREADONLY", [toString(dG), do], nil))
615- let ck = invoke(di, "estimatePutOperationWrapperREADONLY", ["", 500000, dx, dz, dI, dB, "", true, false], nil)
616- let dT = {
617- let z = ck
613+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dT), toString(dS)], nil)))
614+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
615+ let dI = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dJ, dq], nil)))
616+ let dH = fraction(dI, d, dG)
617+ let dy = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dH), dp], nil))
618+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
619+ let dU = {
620+ let z = cl
618621 if (if (if ($isInstanceOf(z._1, "Int"))
619622 then if ($isInstanceOf(z._3, "Int"))
620623 then if ($isInstanceOf(z._4, "Int"))
627630 then (size(z) == 13)
628631 else false)
629632 then {
630- let dK = z._1
631- let dL = z._3
632- let dM = z._4
633- let dN = z._5
634- let dO = z._6
635- $Tuple5(dK, dL, dM, dN, dO)
633+ let dL = z._1
634+ let dM = z._3
635+ let dN = z._4
636+ let dO = z._5
637+ let dP = z._6
638+ $Tuple5(dL, dM, dN, dO, dP)
636639 }
637640 else throw("Couldn't cast types")
638641 }
639- let dK = dT._1
640- let dL = dT._2
641- let dM = dT._3
642- let dN = dT._4
643- let dO = dT._5
644- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dK), toString(du), toString(dM), toString(dN), toString(dO), dC, toString(dx), toString(dI)], e))
642+ let dL = dU._1
643+ let dM = dU._2
644+ let dN = dU._3
645+ let dO = dU._4
646+ let dP = dU._5
647+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
645648 }
646649
647650
648651
649-@Callable(bt)
650-func poolEvaluateGetREADONLY (dU,dV) = {
651- let di = addressFromStringValue(t(aS, U(dU)))
652- let ck = invoke(di, "estimateGetOperationWrapperREADONLY", ["", dU, dV, toString(di)], nil)
653- let dW = {
654- let z = ck
652+@Callable(bu)
653+func poolEvaluateGetREADONLY (dV,dW) = {
654+ let dj = addressFromStringValue(t(aT, U(dV)))
655+ let cl = invoke(dj, "estimateGetOperationWrapperREADONLY", ["", dV, dW, toString(dj)], nil)
656+ let dX = {
657+ let z = cl
655658 if (if (if ($isInstanceOf(z._1, "Int"))
656659 then if ($isInstanceOf(z._2, "Int"))
657660 then if ($isInstanceOf(z._5, "Int"))
668671 then (size(z) == 10)
669672 else false)
670673 then {
671- let dX = z._1
672- let dY = z._2
673- let dM = z._5
674- let dN = z._6
675- let dO = z._7
676- let du = z._8
677- let dC = z._9
678- $Tuple7(dX, dY, dM, dN, dO, du, dC)
674+ let dY = z._1
675+ let dZ = z._2
676+ let dN = z._5
677+ let dO = z._6
678+ let dP = z._7
679+ let dv = z._8
680+ let dD = z._9
681+ $Tuple7(dY, dZ, dN, dO, dP, dv, dD)
679682 }
680683 else throw("Couldn't cast types")
681684 }
682- let dX = dW._1
683- let dY = dW._2
684- let dM = dW._3
685- let dN = dW._4
686- let dO = dW._5
687- let du = dW._6
688- let dC = dW._7
689- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dX), toString(dY), toString(dM), toString(dN), toString(dO), du, dC], e))
685+ let dY = dX._1
686+ let dZ = dX._2
687+ let dN = dX._3
688+ let dO = dX._4
689+ let dP = dX._5
690+ let dv = dX._6
691+ let dD = dX._7
692+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dY), toString(dZ), toString(dN), toString(dO), toString(dP), dv, dD], e))
690693 }
691694
692695
693696
694-@Callable(bt)
697+@Callable(bu)
695698 func gwxUserInfoREADONLY (am) = {
696- let dZ = x(invoke(aW, "gwxUserInfoREADONLY", [am], nil))
697- let ea = B(dZ[0])
698- $Tuple2(nil, makeString(["%d", toString(ea)], e))
699+ let ea = x(invoke(aX, "gwxUserInfoREADONLY", [am], nil))
700+ let eb = B(ea[0])
701+ $Tuple2(nil, makeString(["%d", toString(eb)], e))
699702 }
700703
701704
702705
703-@Callable(bt)
704-func setManager (eb) = {
705- let bx = bs(bt)
706- if ((bx == bx))
706+@Callable(bu)
707+func unstakeAndGetOneTkn (dj,ec,ed,ee,ef,eg,eh) = {
708+ let cm = invoke(addressFromStringValue(value(getString(addressFromStringValue(dj), aS()))), "unstakeAndGetOneTkn", [ec, ed, ee, ef, eg, eh], nil)
709+ if ((cm == cm))
710+ then $Tuple2(nil, unit)
711+ else throw("Strict value is not equal to itself.")
712+ }
713+
714+
715+
716+@Callable(bu)
717+func setManager (ei) = {
718+ let by = bt(bu)
719+ if ((by == by))
707720 then {
708- let ec = fromBase58String(eb)
709- if ((ec == ec))
710- then [StringEntry(H(), eb)]
721+ let ej = fromBase58String(ei)
722+ if ((ej == ej))
723+ then [StringEntry(H(), ei)]
711724 else throw("Strict value is not equal to itself.")
712725 }
713726 else throw("Strict value is not equal to itself.")
715728
716729
717730
718-@Callable(bt)
731+@Callable(bu)
719732 func confirmManager () = {
720- let ed = br()
721- let ee = if (isDefined(ed))
733+ let ek = bs()
734+ let el = if (isDefined(ek))
722735 then true
723736 else throw("No pending manager")
724- if ((ee == ee))
737+ if ((el == el))
725738 then {
726- let ef = if ((bt.callerPublicKey == value(ed)))
739+ let em = if ((bu.callerPublicKey == value(ek)))
727740 then true
728741 else throw("You are not pending manager")
729- if ((ef == ef))
730- then [StringEntry(G(), toBase58String(value(ed))), DeleteEntry(H())]
742+ if ((em == em))
743+ then [StringEntry(G(), toBase58String(value(ek))), DeleteEntry(H())]
731744 else throw("Strict value is not equal to itself.")
732745 }
733746 else throw("Strict value is not equal to itself.")
734747 }
735748
736749
737-@Verifier(eg)
738-func eh () = {
739- let ei = {
740- let z = bp()
750+@Verifier(en)
751+func eo () = {
752+ let ep = {
753+ let z = bq()
741754 if ($isInstanceOf(z, "ByteVector"))
742755 then {
743- let bv = z
744- bv
756+ let bw = z
757+ bw
745758 }
746759 else if ($isInstanceOf(z, "Unit"))
747- then eg.senderPublicKey
760+ then en.senderPublicKey
748761 else throw("Match error")
749762 }
750- sigVerify(eg.bodyBytes, eg.proofs[0], ei)
763+ sigVerify(en.bodyBytes, en.proofs[0], ep)
751764 }
752765
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 = 1
1919
2020 let i = 2
2121
2222 let j = 3
2323
2424 let k = 4
2525
2626 let l = 5
2727
2828 let m = 6
2929
3030 let n = 7
3131
3232 let o = 8
3333
3434 let p = 9
3535
3636 let q = 10
3737
3838 func r (s) = valueOrErrorMessage(getString(s), (("mandatory this." + s) + " is not defined"))
3939
4040
4141 func t (u,s) = valueOrErrorMessage(getString(u, s), (((("mandatory " + toString(u)) + ".") + s) + " is not defined"))
4242
4343
4444 func v (u,s) = valueOrElse(getInteger(u, s), 0)
4545
4646
4747 func w (u,s) = valueOrErrorMessage(getInteger(u, s), (("mandatory this." + s) + " is not defined"))
4848
4949
5050 func x (y) = {
5151 let z = y
5252 if ($isInstanceOf(z, "List[Any]"))
5353 then {
5454 let A = z
5555 A
5656 }
5757 else throw("fail to cast into List[Any]")
5858 }
5959
6060
6161 func B (y) = {
6262 let z = y
6363 if ($isInstanceOf(z, "Int"))
6464 then {
6565 let C = z
6666 C
6767 }
6868 else throw("fail to cast into Int")
6969 }
7070
7171
7272 func D (y) = {
7373 let z = y
7474 if ($isInstanceOf(z, "String"))
7575 then {
7676 let E = z
7777 E
7878 }
7979 else throw("fail to cast into String")
8080 }
8181
8282
8383 func F () = "%s%s__config__factoryAddress"
8484
8585
8686 func G () = "%s__managerPublicKey"
8787
8888
8989 func H () = "%s__pendingManagerPublicKey"
9090
9191
9292 let I = 1
9393
9494 let J = 2
9595
9696 let K = 3
9797
9898 let L = 4
9999
100100 let M = 5
101101
102102 let N = 6
103103
104104 let O = 7
105105
106106 let P = 8
107107
108108 func Q () = "%s__factoryConfig"
109109
110110
111111 func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
112112
113113
114114 func T () = "%s__lpTokensList"
115115
116116
117117 func U (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
118118
119119
120120 func V (W) = makeString(["%s%s", "poolWeight", W], e)
121121
122122
123123 func X () = addressFromStringValue(r(F()))
124124
125125
126126 func Y () = split(valueOrElse(getString(X(), T()), ""), e)
127127
128128
129129 func Z (aa) = split(t(aa, Q()), e)
130130
131131
132132 func ab (ac) = addressFromStringValue(ac[J])
133133
134134
135135 func ad (ac) = addressFromStringValue(ac[M])
136136
137137
138138 func ae (ac) = addressFromStringValue(ac[I])
139139
140140
141141 func af (ac) = addressFromStringValue(ac[P])
142142
143143
144144 func ag () = "%s__config"
145145
146146
147147 func ah () = "%s%s__stats__activeTotalLocked"
148148
149149
150150 func ai () = "%s%s__stats__locksDurationSumInBlocks"
151151
152152
153153 func aj () = "%s%s__stats__locksCount"
154154
155155
156156 func ak () = "%s%s__stats__activeUsersCount"
157157
158158
159159 func al (am) = makeString(["%s%s%s__mapping__user2num", am], e)
160160
161161
162162 func an (ao) = makeString(["%s%s%s__mapping__num2user", ao], e)
163163
164164
165165 func ap (aq) = makeString(["%s%d%s__paramByUserNum", aq, "amount"], e)
166166
167167
168168 func ar (aq) = makeString(["%s%d%s__paramByUserNum", aq, "start"], e)
169169
170170
171171 func as (aq) = makeString(["%s%d%s__paramByUserNum", aq, "duration"], e)
172172
173173
174174 func at (aq) = makeString(["%s%d%s__paramByUserNum", aq, "k"], e)
175175
176176
177177 func au (aq) = makeString(["%s%d%s__paramByUserNum", aq, "b"], e)
178178
179179
180180 func av (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "k", aw], e)
181181
182182
183183 func ax (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "b", aw], e)
184184
185185
186186 func ay (aq) = makeString(["%s%d__userBoostEmissionLastInt", aq], e)
187187
188188
189189 func az (aq) = makeString(["%s%d__maxBoostInt", aq], e)
190190
191191
192192 func aA () = "%s%s__maxBoostInt__total"
193193
194194
195195 func aB (aq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aq], e)
196196
197197
198198 func aC (aq) = makeString(["%s%d__userBoostClaimed", aq], e)
199199
200200
201201 func aD () = "%s%s__gwxCached__total"
202202
203203
204204 func aE (aF,aG) = makeString(["%s%s%s__staked", aF, aG], e)
205205
206206
207207 func aH (aG) = ("%s%s%s__staked__total__" + aG)
208208
209209
210210 func aI (aG,aF) = makeString(["%s%s%s__claimed", aF, aG], e)
211211
212212
213213 func aJ (aG,aF) = makeString(["%s%s%s__claimedMinReward", aF, aG], e)
214214
215215
216216 func aK (aG,aF) = makeString(["%s%s%s__claimedBoostReward", aF, aG], e)
217217
218218
219219 func aL (aM,s) = valueOrElse(getInteger(aM, s), 0)
220220
221221
222222 func aN () = "%s%s__ratePerBlock__current"
223223
224224
225225 func aO () = "%s%s__ratePerBlockMax__current"
226226
227227
228228 func aP () = "%s%s__emission__startBlock"
229229
230230
231231 func aQ () = "%s%s__emission__duration"
232232
233233
234234 func aR () = "%s%s__emission__endBlock"
235235
236236
237-let aS = X()
237+func aS () = "%s__addonAddr"
238238
239-let aT = Z(aS)
240239
241-let aU = ad(aT)
240+let aT = X()
242241
243-let aM = ae(aT)
242+let aU = Z(aT)
244243
245-let aV = af(aT)
244+let aV = ad(aU)
246245
247-let aW = ab(aT)
246+let aM = ae(aU)
248247
249-func aX (aY) = {
250- let aZ = t(aS, U(aY))
251- let ba = b
252- let bb = getIntegerValue(aS, V(aZ))
253- let bc = w(aU, aN())
254- let bd = w(aU, aO())
255- let be = 3
256- let bf = (fraction(bc, bb, ba) / be)
257- let bg = fraction(bd, bb, ba)
258- let bh = (be * b)
259- let bi = v(aM, aH(aY))
260-[bf, bh, bi]
248+let aW = af(aU)
249+
250+let aX = ab(aU)
251+
252+func aY (aZ) = {
253+ let ba = t(aT, U(aZ))
254+ let bb = b
255+ let bc = getIntegerValue(aT, V(ba))
256+ let bd = w(aV, aN())
257+ let be = w(aV, aO())
258+ let bf = 3
259+ let bg = (fraction(bd, bc, bb) / bf)
260+ let bh = fraction(be, bc, bb)
261+ let bi = (bf * b)
262+ let bj = v(aM, aH(aZ))
263+[bg, bi, bj]
261264 }
262265
263266
264-func bj (bk,bl,bm) = {
265- let bn = fraction(bl, b, bm)
266- let bo = fraction(bk, bn, b)
267-[bo]
267+func bk (bl,bm,bn) = {
268+ let bo = fraction(bm, b, bn)
269+ let bp = fraction(bl, bo, b)
270+[bp]
268271 }
269272
270273
271-func bp () = {
274+func bq () = {
272275 let z = getString(G())
273276 if ($isInstanceOf(z, "String"))
274277 then {
275- let bq = z
276- fromBase58String(bq)
278+ let br = z
279+ fromBase58String(br)
277280 }
278281 else if ($isInstanceOf(z, "Unit"))
279282 then unit
280283 else throw("Match error")
281284 }
282285
283286
284-func br () = {
287+func bs () = {
285288 let z = getString(H())
286289 if ($isInstanceOf(z, "String"))
287290 then {
288- let bq = z
289- fromBase58String(bq)
291+ let br = z
292+ fromBase58String(br)
290293 }
291294 else if ($isInstanceOf(z, "Unit"))
292295 then unit
293296 else throw("Match error")
294297 }
295298
296299
297-func bs (bt) = {
298- let bu = throw("Permission denied")
299- let z = bp()
300+func bt (bu) = {
301+ let bv = throw("Permission denied")
302+ let z = bq()
300303 if ($isInstanceOf(z, "ByteVector"))
301304 then {
302- let bv = z
303- if ((bt.callerPublicKey == bv))
305+ let bw = z
306+ if ((bu.callerPublicKey == bw))
304307 then true
305- else bu
308+ else bv
306309 }
307310 else if ($isInstanceOf(z, "Unit"))
308- then if ((bt.caller == this))
311+ then if ((bu.caller == this))
309312 then true
310- else bu
313+ else bv
311314 else throw("Match error")
312315 }
313316
314317
315-@Callable(bt)
316-func constructor (bw) = {
317- let bx = bs(bt)
318- if ((bx == bx))
319- then [StringEntry(F(), bw)]
318+@Callable(bu)
319+func constructor (bx) = {
320+ let by = bt(bu)
321+ if ((by == by))
322+ then [StringEntry(F(), bx)]
320323 else throw("Strict value is not equal to itself.")
321324 }
322325
323326
324327
325-@Callable(bt)
326-func currentRewardRateREADONLY (aY) = {
327- let by = aX(aY)
328- let bc = by[0]
329- let bh = by[1]
330- let bi = by[2]
331- $Tuple2(nil, makeString(["%d%d%d", toString(bc), toString(bh), toString(bi)], e))
328+@Callable(bu)
329+func currentRewardRateREADONLY (aZ) = {
330+ let bz = aY(aZ)
331+ let bd = bz[0]
332+ let bi = bz[1]
333+ let bj = bz[2]
334+ $Tuple2(nil, makeString(["%d%d%d", toString(bd), toString(bi), toString(bj)], e))
332335 }
333336
334337
335338
336-@Callable(bt)
337-func currentUserRewardRateREADONLY (aY,am) = {
338- let by = aX(aY)
339- let bc = by[0]
340- let bh = by[1]
341- let bi = by[2]
342- let bz = v(aM, aE(am, aY))
343- let bA = split(D(invoke(aM, "claimWxREADONLY", [aY, am], nil)), e)
344- let bB = valueOrErrorMessage(parseInt(bA[5]), "couldn't parse minRewardPart")
345- let bC = valueOrErrorMessage(parseInt(bA[6]), "couldn't parse boostRewardPart")
346- let bD = bA[7]
347- let bE = if ((bC == 0))
339+@Callable(bu)
340+func currentUserRewardRateREADONLY (aZ,am) = {
341+ let bz = aY(aZ)
342+ let bd = bz[0]
343+ let bi = bz[1]
344+ let bj = bz[2]
345+ let bA = v(aM, aE(am, aZ))
346+ let bB = split(D(invoke(aM, "claimWxREADONLY", [aZ, am], nil)), e)
347+ let bC = valueOrErrorMessage(parseInt(bB[5]), "couldn't parse minRewardPart")
348+ let bD = valueOrErrorMessage(parseInt(bB[6]), "couldn't parse boostRewardPart")
349+ let bE = bB[7]
350+ let bF = if ((bD == 0))
348351 then (1 * b)
349- else fraction((bB + bC), b, bB)
350- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bc), toString(bh), toString(bi), toString(bz), toString(bE), bD], e))
352+ else fraction((bC + bD), b, bC)
353+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bd), toString(bi), toString(bj), toString(bA), toString(bF), bE], e))
351354 }
352355
353356
354357
355-@Callable(bt)
358+@Callable(bu)
356359 func claimedRewardREADONLY (am) = {
357- let bF = Y()
358- let bG = "%s%d%d%d%s"
359- func bH (bI,bJ) = {
360- let bK = aJ(bJ, am)
361- let bL = aK(bJ, am)
362- let bM = valueOrElse(getInteger(aM, bK), 0)
360+ let bG = Y()
361+ let bH = "%s%d%d%d%s"
362+ func bI (bJ,bK) = {
363+ let bL = aJ(bK, am)
364+ let bM = aK(bK, am)
363365 let bN = valueOrElse(getInteger(aM, bL), 0)
364- let bO = 0
365- makeString([(bG + bI), bJ, toString(bM), toString(bN), toString(bO), "end"], e)
366+ let bO = valueOrElse(getInteger(aM, bM), 0)
367+ let bP = 0
368+ makeString([(bH + bJ), bK, toString(bN), toString(bO), toString(bP), "end"], e)
366369 }
367370
368- let bP = {
369- let bQ = bF
370- let bR = size(bQ)
371- let bS = "%s"
372- func bT (bU,bV) = if ((bV >= bR))
373- then bU
374- else bH(bU, bQ[bV])
371+ let bQ = {
372+ let bR = bG
373+ let bS = size(bR)
374+ let bT = "%s"
375+ func bU (bV,bW) = if ((bW >= bS))
376+ then bV
377+ else bI(bV, bR[bW])
375378
376- func bW (bU,bV) = if ((bV >= bR))
377- then bU
379+ func bX (bV,bW) = if ((bW >= bS))
380+ then bV
378381 else throw("List size exceeds 10")
379382
380- bW(bT(bT(bT(bT(bT(bT(bT(bT(bT(bT(bS, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
383+ bX(bU(bU(bU(bU(bU(bU(bU(bU(bU(bU(bT, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
381384 }
382- $Tuple2(nil, ((bP + e) + am))
385+ $Tuple2(nil, ((bQ + e) + am))
383386 }
384387
385388
386389
387-@Callable(bt)
388-func calcBoostBulkInternalREADONLY (bX,bY,bZ,ca,cb,cc,cd) = if ((bX == size(bY)))
389- then $Tuple2(nil, cd)
390+@Callable(bu)
391+func calcBoostBulkInternalREADONLY (bY,bZ,ca,cb,cc,cd,ce) = if ((bY == size(bZ)))
392+ then $Tuple2(nil, ce)
390393 else {
391- let ce = bY[bX]
392- let cf = bZ[bX]
393- let cg = ca[bX]
394- let ch = cb[bX]
395- let ci = {
396- let cj = invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, cc], nil)
397- if ($isInstanceOf(cj, "String"))
398- then cj
399- else throw(($getType(invoke(this, "calcBoostREADONLY", [ce, cf, cg, ch, cc], nil)) + " couldn't be cast to String"))
394+ let cf = bZ[bY]
395+ let cg = ca[bY]
396+ let ch = cb[bY]
397+ let ci = cc[bY]
398+ let cj = {
399+ let ck = invoke(this, "calcBoostREADONLY", [cf, cg, ch, ci, cd], nil)
400+ if ($isInstanceOf(ck, "String"))
401+ then ck
402+ else throw(($getType(invoke(this, "calcBoostREADONLY", [cf, cg, ch, ci, cd], nil)) + " couldn't be cast to String"))
400403 }
401- let ck = (cd :+ ci)
402- let cl = {
403- let cj = invoke(this, "calcBoostBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, ck], nil)
404- if ($isInstanceOf(cj, "List[Any]"))
405- then cj
406- else throw(($getType(invoke(this, "calcBoostBulkInternalREADONLY", [(bX + 1), bY, bZ, ca, cb, cc, ck], nil)) + " couldn't be cast to List[Any]"))
404+ let cl = (ce :+ cj)
405+ let cm = {
406+ let ck = invoke(this, "calcBoostBulkInternalREADONLY", [(bY + 1), bZ, ca, cb, cc, cd, cl], nil)
407+ if ($isInstanceOf(ck, "List[Any]"))
408+ then ck
409+ else throw(($getType(invoke(this, "calcBoostBulkInternalREADONLY", [(bY + 1), bZ, ca, cb, cc, cd, cl], nil)) + " couldn't be cast to List[Any]"))
407410 }
408- if ((cl == cl))
409- then $Tuple2(nil, cl)
411+ if ((cm == cm))
412+ then $Tuple2(nil, cm)
410413 else throw("Strict value is not equal to itself.")
411414 }
412415
413416
414417
415-@Callable(bt)
416-func calcBoostBulkREADONLY (ce,cf,cg,ch,cc) = {
417- let ck = invoke(this, "calcBoostBulkInternalREADONLY", [0, ce, cf, cg, ch, cc, nil], nil)
418- $Tuple2(nil, ck)
418+@Callable(bu)
419+func calcBoostBulkREADONLY (cf,cg,ch,ci,cd) = {
420+ let cl = invoke(this, "calcBoostBulkInternalREADONLY", [0, cf, cg, ch, ci, cd, nil], nil)
421+ $Tuple2(nil, cl)
419422 }
420423
421424
422425
423-@Callable(bt)
424-func calcBoostREADONLY (ce,cf,cg,ch,cc) = {
425- let cm = aV
426- let cn = "empty"
427- let co = parseIntValue(split(t(aW, ag()), e)[4])
428- let aG = if ((ch == ""))
429- then cn
430- else ch
431- let aF = if ((cc == ""))
432- then cn
433- else cc
434- let cp = valueOrElse(getString(aW, al(cc)), cn)
435- let cq = valueOrElse(getInteger(aW, ap(cp)), 0)
436- let cr = valueOrElse(getInteger(aW, ar(cp)), height)
437- let bl = valueOrElse(getInteger(aW, as(cp)), 0)
438- let cs = (cr + bl)
439- let ct = max([(cs - height), 0])
440- let cu = (cq + ce)
441- let cv = min([(ct + cf), co])
442- let cw = B(x(invoke(aW, "gwxUserInfoREADONLY", [aF], nil))[0])
443- let cx = bj(cu, cv, co)[0]
444- let cy = x(invoke(cm, "calcGwxParamsREADONLY", [cx, height, cv], nil))
445- let cz = (cx - cw)
446- let cA = B(cy[0])
447- let cB = B(cy[1])
448- let aw = toString(B(cy[2]))
449- let cC = aA()
450- let cD = aD()
451- let cE = ((cx * cv) / 2)
452- let cF = v(aW, cC)
453- let cG = valueOrElse(getInteger(aW, cD), 0)
454- let cH = 1000
455- let cI = (w(aU, aN()) * cH)
456- let cJ = aE(aF, aG)
457- let cK = aH(aG)
458- let cL = aL(aM, cJ)
426+@Callable(bu)
427+func calcBoostREADONLY (cf,cg,ch,ci,cd) = {
428+ let cn = aW
429+ let co = "empty"
430+ let cp = parseIntValue(split(t(aX, ag()), e)[4])
431+ let aG = if ((ci == ""))
432+ then co
433+ else ci
434+ let aF = if ((cd == ""))
435+ then co
436+ else cd
437+ let cq = valueOrElse(getString(aX, al(cd)), co)
438+ let cr = valueOrElse(getInteger(aX, ap(cq)), 0)
439+ let cs = valueOrElse(getInteger(aX, ar(cq)), height)
440+ let bm = valueOrElse(getInteger(aX, as(cq)), 0)
441+ let ct = (cs + bm)
442+ let cu = max([(ct - height), 0])
443+ let cv = (cr + cf)
444+ let cw = min([(cu + cg), cp])
445+ let cx = B(x(invoke(aX, "gwxUserInfoREADONLY", [aF], nil))[0])
446+ let cy = bk(cv, cw, cp)[0]
447+ let cz = x(invoke(cn, "calcGwxParamsREADONLY", [cy, height, cw], nil))
448+ let cA = (cy - cx)
449+ let cB = B(cz[0])
450+ let cC = B(cz[1])
451+ let aw = toString(B(cz[2]))
452+ let cD = aA()
453+ let cE = aD()
454+ let cF = ((cy * cw) / 2)
455+ let cG = v(aX, cD)
456+ let cH = valueOrElse(getInteger(aX, cE), 0)
457+ let cI = 1000
458+ let cJ = (w(aV, aN()) * cI)
459+ let cK = aE(aF, aG)
460+ let cL = aH(aG)
459461 let cM = aL(aM, cK)
460- let cN = (cL + cg)
461- let cO = (cM + cg)
462- let bb = if ((aG != cn))
462+ let cN = aL(aM, cL)
463+ let cO = (cM + ch)
464+ let cP = (cN + ch)
465+ let bc = if ((aG != co))
463466 then {
464- let aZ = valueOrErrorMessage(getString(aS, R(aG)), ("unsupported lp asset " + aG))
465- getIntegerValue(aS, V(aZ))
467+ let ba = valueOrErrorMessage(getString(aT, R(aG)), ("unsupported lp asset " + aG))
468+ getIntegerValue(aT, V(ba))
466469 }
467470 else 0
468- let cP = fraction(cI, bb, (f * 3))
469- let cQ = if ((cO != 0))
470- then fraction(cP, b, cO)
471+ let cQ = fraction(cJ, bc, (f * 3))
472+ let cR = if ((cP != 0))
473+ then fraction(cQ, b, cP)
471474 else 0
472- let cR = fraction(cQ, cN, b)
473- let cS = (cP * 2)
474- let cT = fraction(cx, cS, (cG + cz))
475- let cU = min([cT, (cR * 2)])
476- let cV = if ((cR == 0))
475+ let cS = fraction(cR, cO, b)
476+ let cT = (cQ * 2)
477+ let cU = fraction(cy, cT, (cH + cA))
478+ let cV = min([cU, (cS * 2)])
479+ let cW = if ((cS == 0))
477480 then (1 * b)
478- else fraction((cU + cR), b, cR)
479- $Tuple2(nil, makeString(["%d%d%s", toString(cx), toString(cV), "d"], e))
481+ else fraction((cV + cS), b, cS)
482+ $Tuple2(nil, makeString(["%d%d%s", toString(cy), toString(cW), "d"], e))
480483 }
481484
482485
483486
484-@Callable(bt)
487+@Callable(bu)
485488 func wxEmissionStatsREADONLY () = {
486- let cW = toString(b)
487- let cX = "1"
488- let bc = w(aU, aN())
489- let cY = w(aU, aP())
490- let cZ = if ((cY > height))
489+ let cX = toString(b)
490+ let cY = "1"
491+ let bd = w(aV, aN())
492+ let cZ = w(aV, aP())
493+ let da = if ((cZ > height))
491494 then 0
492- else (height - cY)
493- let da = (1440 * 365)
494- let db = (201000000 * b)
495- let dc = if ((cZ > da))
496- then db
497- else fraction(db, cZ, da)
498- let dd = ((bc * cZ) + dc)
499- let de = v(aW, ah())
500- let df = v(aW, ai())
501- let dg = v(aW, aj())
502- $Tuple2(nil, makeString(["%d%d%d%d", toString(dd), toString(de), toString(df), toString(dg)], e))
495+ else (height - cZ)
496+ let db = (1440 * 365)
497+ let dc = (201000000 * b)
498+ let dd = if ((da > db))
499+ then dc
500+ else fraction(dc, da, db)
501+ let de = ((bd * da) + dd)
502+ let df = v(aX, ah())
503+ let dg = v(aX, ai())
504+ let dh = v(aX, aj())
505+ $Tuple2(nil, makeString(["%d%d%d%d", toString(de), toString(df), toString(dg), toString(dh)], e))
503506 }
504507
505508
506509
507-@Callable(bt)
508-func poolStatsREADONLY (dh) = {
509- let di = addressFromStringValue(t(aS, U(dh)))
510- let dj = x(invoke(di, "getPoolConfigWrapperREADONLY", nil, nil))
511- let aY = fromBase58String(D(dj[j]))
512- let dk = D(dj[k])
513- let dl = D(dj[l])
514- let dm = D(dj[o])
515- let dn = D(dj[p])
516- let do = parseIntValue(D(dj[m]))
517- let dp = parseIntValue(D(dj[n]))
518- let dq = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
519- let dr = B(invoke(di, "getAccBalanceWrapperREADONLY", [dk], nil))
520- let ds = B(invoke(di, "getAccBalanceWrapperREADONLY", [dl], nil))
521- let dt = if ((dq == 0))
510+@Callable(bu)
511+func poolStatsREADONLY (di) = {
512+ let dj = addressFromStringValue(t(aT, U(di)))
513+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
514+ let aZ = fromBase58String(D(dk[j]))
515+ let dl = D(dk[k])
516+ let dm = D(dk[l])
517+ let dn = D(dk[o])
518+ let do = D(dk[p])
519+ let dp = parseIntValue(D(dk[m]))
520+ let dq = parseIntValue(D(dk[n]))
521+ let dr = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
522+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dl], nil))
523+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dm], nil))
524+ let du = if ((dr == 0))
522525 then [toString(g), toString(g), toString(g)]
523- else x(invoke(di, "calcPricesWrapperREADONLY", [dr, ds, dq], nil))
524- let du = 0
525- let dv = B(invoke(di, "fromX18WrapperREADONLY", [dt[1], b], nil))
526- let dw = B(invoke(di, "fromX18WrapperREADONLY", [dt[2], b], nil))
527- let bb = getIntegerValue(aS, V(toString(di)))
528- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dr), toString(ds), toString(dq), toString(du), toString(dv), toString(dw), toString(bb)], e))
526+ else x(invoke(dj, "calcPricesWrapperREADONLY", [ds, dt, dr], nil))
527+ let dv = 0
528+ let dw = B(invoke(dj, "fromX18WrapperREADONLY", [du[1], b], nil))
529+ let dx = B(invoke(dj, "fromX18WrapperREADONLY", [du[2], b], nil))
530+ let bc = getIntegerValue(aT, V(toString(dj)))
531+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(ds), toString(dt), toString(dr), toString(dv), toString(dw), toString(dx), toString(bc)], e))
529532 }
530533
531534
532535
533-@Callable(bt)
534-func poolEvaluatePutByAmountAssetREADONLY (dh,dx) = {
535- let di = addressFromStringValue(t(aS, U(dh)))
536- let dj = x(invoke(di, "getPoolConfigWrapperREADONLY", nil, nil))
537- let aY = fromBase58String(D(dj[j]))
538- let dy = D(dj[k])
539- let dz = fromBase58String(dy)
540- let dA = D(dj[l])
541- let dB = fromBase58String(dA)
542- let do = parseIntValue(D(dj[m]))
543- let dp = parseIntValue(D(dj[n]))
544- let dC = D(dj[i])
545- let dq = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
546- let dr = B(invoke(di, "getAccBalanceWrapperREADONLY", [dy], nil))
547- let ds = B(invoke(di, "getAccBalanceWrapperREADONLY", [dA], nil))
548- let dD = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dr, do], nil)))
549- let dE = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [ds, dp], nil)))
550- let dF = if ((dq == 0))
536+@Callable(bu)
537+func poolEvaluatePutByAmountAssetREADONLY (di,dy) = {
538+ let dj = addressFromStringValue(t(aT, U(di)))
539+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
540+ let aZ = fromBase58String(D(dk[j]))
541+ let dz = D(dk[k])
542+ let dA = fromBase58String(dz)
543+ let dB = D(dk[l])
544+ let dC = fromBase58String(dB)
545+ let dp = parseIntValue(D(dk[m]))
546+ let dq = parseIntValue(D(dk[n]))
547+ let dD = D(dk[i])
548+ let dr = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
549+ let ds = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
550+ let dt = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
551+ let dE = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [ds, dp], nil)))
552+ let dF = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dt, dq], nil)))
553+ let dG = if ((dr == 0))
551554 then g
552- else parseBigIntValue(D(invoke(di, "calcPriceBigIntWrapperREADONLY", [toString(dE), toString(dD)], nil)))
553- let du = B(invoke(di, "fromX18WrapperREADONLY", [toString(dF), b], nil))
554- let dG = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dx, do], nil)))
555- let dH = fraction(dG, dF, d)
556- let dI = B(invoke(di, "fromX18WrapperREADONLY", [toString(dH), dp], nil))
557- let ck = invoke(di, "estimatePutOperationWrapperREADONLY", ["", 500000, dx, dz, dI, dB, "", true, false], nil)
558- let dJ = {
559- let z = ck
555+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dF), toString(dE)], nil)))
556+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
557+ let dH = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dy, dp], nil)))
558+ let dI = fraction(dH, dG, d)
559+ let dJ = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dI), dq], nil))
560+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
561+ let dK = {
562+ let z = cl
560563 if (if (if ($isInstanceOf(z._1, "Int"))
561564 then if ($isInstanceOf(z._3, "Int"))
562565 then if ($isInstanceOf(z._4, "Int"))
563566 then if ($isInstanceOf(z._5, "Int"))
564567 then $isInstanceOf(z._6, "Int")
565568 else false
566569 else false
567570 else false
568571 else false)
569572 then (size(z) == 13)
570573 else false)
571574 then {
572- let dK = z._1
573- let dL = z._3
574- let dM = z._4
575- let dN = z._5
576- let dO = z._6
577- $Tuple5(dK, dL, dM, dN, dO)
575+ let dL = z._1
576+ let dM = z._3
577+ let dN = z._4
578+ let dO = z._5
579+ let dP = z._6
580+ $Tuple5(dL, dM, dN, dO, dP)
578581 }
579582 else throw("Couldn't cast types")
580583 }
581- let dK = dJ._1
582- let dL = dJ._2
583- let dM = dJ._3
584- let dN = dJ._4
585- let dO = dJ._5
586- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dK), toString(du), toString(dM), toString(dN), toString(dO), dC, toString(dx), toString(dI)], e))
584+ let dL = dK._1
585+ let dM = dK._2
586+ let dN = dK._3
587+ let dO = dK._4
588+ let dP = dK._5
589+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
587590 }
588591
589592
590593
591-@Callable(bt)
592-func poolEvaluatePutByPriceAssetREADONLY (dh,dI) = {
593- let di = addressFromStringValue(t(aS, U(dh)))
594- let dj = x(invoke(di, "getPoolConfigWrapperREADONLY", nil, nil))
595- let aY = fromBase58String(D(dj[j]))
596- let dy = D(dj[k])
597- let dz = fromBase58String(dy)
598- let dA = D(dj[l])
599- let dB = fromBase58String(dA)
600- let do = parseIntValue(D(dj[m]))
601- let dp = parseIntValue(D(dj[n]))
602- let dC = D(dj[i])
603- let dq = valueOrErrorMessage(assetInfo(aY), (("Asset " + toBase58String(aY)) + " doesn't exist")).quantity
604- let dP = B(invoke(di, "getAccBalanceWrapperREADONLY", [dy], nil))
605- let dQ = B(invoke(di, "getAccBalanceWrapperREADONLY", [dA], nil))
606- let dR = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dP, do], nil)))
607- let dS = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dQ, dp], nil)))
608- let dF = if ((dq == 0))
594+@Callable(bu)
595+func poolEvaluatePutByPriceAssetREADONLY (di,dJ) = {
596+ let dj = addressFromStringValue(t(aT, U(di)))
597+ let dk = x(invoke(dj, "getPoolConfigWrapperREADONLY", nil, nil))
598+ let aZ = fromBase58String(D(dk[j]))
599+ let dz = D(dk[k])
600+ let dA = fromBase58String(dz)
601+ let dB = D(dk[l])
602+ let dC = fromBase58String(dB)
603+ let dp = parseIntValue(D(dk[m]))
604+ let dq = parseIntValue(D(dk[n]))
605+ let dD = D(dk[i])
606+ let dr = valueOrErrorMessage(assetInfo(aZ), (("Asset " + toBase58String(aZ)) + " doesn't exist")).quantity
607+ let dQ = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dz], nil))
608+ let dR = B(invoke(dj, "getAccBalanceWrapperREADONLY", [dB], nil))
609+ let dS = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dQ, dp], nil)))
610+ let dT = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dR, dq], nil)))
611+ let dG = if ((dr == 0))
609612 then g
610- else parseBigIntValue(D(invoke(di, "calcPriceBigIntWrapperREADONLY", [toString(dS), toString(dR)], nil)))
611- let du = B(invoke(di, "fromX18WrapperREADONLY", [toString(dF), b], nil))
612- let dH = parseBigIntValue(D(invoke(di, "toX18WrapperREADONLY", [dI, dp], nil)))
613- let dG = fraction(dH, d, dF)
614- let dx = B(invoke(di, "fromX18WrapperREADONLY", [toString(dG), do], nil))
615- let ck = invoke(di, "estimatePutOperationWrapperREADONLY", ["", 500000, dx, dz, dI, dB, "", true, false], nil)
616- let dT = {
617- let z = ck
613+ else parseBigIntValue(D(invoke(dj, "calcPriceBigIntWrapperREADONLY", [toString(dT), toString(dS)], nil)))
614+ let dv = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dG), b], nil))
615+ let dI = parseBigIntValue(D(invoke(dj, "toX18WrapperREADONLY", [dJ, dq], nil)))
616+ let dH = fraction(dI, d, dG)
617+ let dy = B(invoke(dj, "fromX18WrapperREADONLY", [toString(dH), dp], nil))
618+ let cl = invoke(dj, "estimatePutOperationWrapperREADONLY", ["", 500000, dy, dA, dJ, dC, "", true, false], nil)
619+ let dU = {
620+ let z = cl
618621 if (if (if ($isInstanceOf(z._1, "Int"))
619622 then if ($isInstanceOf(z._3, "Int"))
620623 then if ($isInstanceOf(z._4, "Int"))
621624 then if ($isInstanceOf(z._5, "Int"))
622625 then $isInstanceOf(z._6, "Int")
623626 else false
624627 else false
625628 else false
626629 else false)
627630 then (size(z) == 13)
628631 else false)
629632 then {
630- let dK = z._1
631- let dL = z._3
632- let dM = z._4
633- let dN = z._5
634- let dO = z._6
635- $Tuple5(dK, dL, dM, dN, dO)
633+ let dL = z._1
634+ let dM = z._3
635+ let dN = z._4
636+ let dO = z._5
637+ let dP = z._6
638+ $Tuple5(dL, dM, dN, dO, dP)
636639 }
637640 else throw("Couldn't cast types")
638641 }
639- let dK = dT._1
640- let dL = dT._2
641- let dM = dT._3
642- let dN = dT._4
643- let dO = dT._5
644- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dK), toString(du), toString(dM), toString(dN), toString(dO), dC, toString(dx), toString(dI)], e))
642+ let dL = dU._1
643+ let dM = dU._2
644+ let dN = dU._3
645+ let dO = dU._4
646+ let dP = dU._5
647+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dL), toString(dv), toString(dN), toString(dO), toString(dP), dD, toString(dy), toString(dJ)], e))
645648 }
646649
647650
648651
649-@Callable(bt)
650-func poolEvaluateGetREADONLY (dU,dV) = {
651- let di = addressFromStringValue(t(aS, U(dU)))
652- let ck = invoke(di, "estimateGetOperationWrapperREADONLY", ["", dU, dV, toString(di)], nil)
653- let dW = {
654- let z = ck
652+@Callable(bu)
653+func poolEvaluateGetREADONLY (dV,dW) = {
654+ let dj = addressFromStringValue(t(aT, U(dV)))
655+ let cl = invoke(dj, "estimateGetOperationWrapperREADONLY", ["", dV, dW, toString(dj)], nil)
656+ let dX = {
657+ let z = cl
655658 if (if (if ($isInstanceOf(z._1, "Int"))
656659 then if ($isInstanceOf(z._2, "Int"))
657660 then if ($isInstanceOf(z._5, "Int"))
658661 then if ($isInstanceOf(z._6, "Int"))
659662 then if ($isInstanceOf(z._7, "Int"))
660663 then if ($isInstanceOf(z._8, "String"))
661664 then $isInstanceOf(z._9, "String")
662665 else false
663666 else false
664667 else false
665668 else false
666669 else false
667670 else false)
668671 then (size(z) == 10)
669672 else false)
670673 then {
671- let dX = z._1
672- let dY = z._2
673- let dM = z._5
674- let dN = z._6
675- let dO = z._7
676- let du = z._8
677- let dC = z._9
678- $Tuple7(dX, dY, dM, dN, dO, du, dC)
674+ let dY = z._1
675+ let dZ = z._2
676+ let dN = z._5
677+ let dO = z._6
678+ let dP = z._7
679+ let dv = z._8
680+ let dD = z._9
681+ $Tuple7(dY, dZ, dN, dO, dP, dv, dD)
679682 }
680683 else throw("Couldn't cast types")
681684 }
682- let dX = dW._1
683- let dY = dW._2
684- let dM = dW._3
685- let dN = dW._4
686- let dO = dW._5
687- let du = dW._6
688- let dC = dW._7
689- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dX), toString(dY), toString(dM), toString(dN), toString(dO), du, dC], e))
685+ let dY = dX._1
686+ let dZ = dX._2
687+ let dN = dX._3
688+ let dO = dX._4
689+ let dP = dX._5
690+ let dv = dX._6
691+ let dD = dX._7
692+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dY), toString(dZ), toString(dN), toString(dO), toString(dP), dv, dD], e))
690693 }
691694
692695
693696
694-@Callable(bt)
697+@Callable(bu)
695698 func gwxUserInfoREADONLY (am) = {
696- let dZ = x(invoke(aW, "gwxUserInfoREADONLY", [am], nil))
697- let ea = B(dZ[0])
698- $Tuple2(nil, makeString(["%d", toString(ea)], e))
699+ let ea = x(invoke(aX, "gwxUserInfoREADONLY", [am], nil))
700+ let eb = B(ea[0])
701+ $Tuple2(nil, makeString(["%d", toString(eb)], e))
699702 }
700703
701704
702705
703-@Callable(bt)
704-func setManager (eb) = {
705- let bx = bs(bt)
706- if ((bx == bx))
706+@Callable(bu)
707+func unstakeAndGetOneTkn (dj,ec,ed,ee,ef,eg,eh) = {
708+ let cm = invoke(addressFromStringValue(value(getString(addressFromStringValue(dj), aS()))), "unstakeAndGetOneTkn", [ec, ed, ee, ef, eg, eh], nil)
709+ if ((cm == cm))
710+ then $Tuple2(nil, unit)
711+ else throw("Strict value is not equal to itself.")
712+ }
713+
714+
715+
716+@Callable(bu)
717+func setManager (ei) = {
718+ let by = bt(bu)
719+ if ((by == by))
707720 then {
708- let ec = fromBase58String(eb)
709- if ((ec == ec))
710- then [StringEntry(H(), eb)]
721+ let ej = fromBase58String(ei)
722+ if ((ej == ej))
723+ then [StringEntry(H(), ei)]
711724 else throw("Strict value is not equal to itself.")
712725 }
713726 else throw("Strict value is not equal to itself.")
714727 }
715728
716729
717730
718-@Callable(bt)
731+@Callable(bu)
719732 func confirmManager () = {
720- let ed = br()
721- let ee = if (isDefined(ed))
733+ let ek = bs()
734+ let el = if (isDefined(ek))
722735 then true
723736 else throw("No pending manager")
724- if ((ee == ee))
737+ if ((el == el))
725738 then {
726- let ef = if ((bt.callerPublicKey == value(ed)))
739+ let em = if ((bu.callerPublicKey == value(ek)))
727740 then true
728741 else throw("You are not pending manager")
729- if ((ef == ef))
730- then [StringEntry(G(), toBase58String(value(ed))), DeleteEntry(H())]
742+ if ((em == em))
743+ then [StringEntry(G(), toBase58String(value(ek))), DeleteEntry(H())]
731744 else throw("Strict value is not equal to itself.")
732745 }
733746 else throw("Strict value is not equal to itself.")
734747 }
735748
736749
737-@Verifier(eg)
738-func eh () = {
739- let ei = {
740- let z = bp()
750+@Verifier(en)
751+func eo () = {
752+ let ep = {
753+ let z = bq()
741754 if ($isInstanceOf(z, "ByteVector"))
742755 then {
743- let bv = z
744- bv
756+ let bw = z
757+ bw
745758 }
746759 else if ($isInstanceOf(z, "Unit"))
747- then eg.senderPublicKey
760+ then en.senderPublicKey
748761 else throw("Match error")
749762 }
750- sigVerify(eg.bodyBytes, eg.proofs[0], ei)
763+ sigVerify(en.bodyBytes, en.proofs[0], ep)
751764 }
752765

github/deemru/w8io/c3f4982 
169.20 ms