tx · 2pHxveMw14hmJfcJrrecmdihZba9HyQpM71PQQ5iXarT

3MqvFUCw41yjLogcBsV8xLSrYfQu55iKXAt:  -0.03000000 Waves

2023.05.04 13:13 [2562879] smart account 3MqvFUCw41yjLogcBsV8xLSrYfQu55iKXAt > SELF 0.00000000 Waves

{ "type": 13, "id": "2pHxveMw14hmJfcJrrecmdihZba9HyQpM71PQQ5iXarT", "fee": 3000000, "feeAssetId": null, "timestamp": 1683195205355, "version": 2, "chainId": 84, "sender": "3MqvFUCw41yjLogcBsV8xLSrYfQu55iKXAt", "senderPublicKey": "9TADRckYuunscUJGDH67ZaVuXftCwaXkfPixCRkLJbx5", "proofs": [ "63gCe39cVwg3ie3m6JGnG2yr97La9mJ19fAwK1Je8Bghwm5HDxnEbFiLV9e7wNPhCgNLEubbY3VzknHJJJAp3kbd" ], "script": "base64:BgJhCAISAwoBCBIDCgEIEgQKAggIEgkKBwEREREYCBgSBwoFERERGAgSBwoFAQEBCAgSABIDCgEIEgQKAggBEgQKAggBEgQKAggBEgMKAQgSBgoECAEIARIFCgMBGBgSAwoBGF0ABlNDQUxFOAAIAAVNVUxUOACAwtcvAAdTQ0FMRTE4ABIABk1VTFQxOAkAtgIBAICAkLu61q3wDQADU0VQAgJfXwAOUE9PTFdFSUdIVE1VTFQFBU1VTFQ4AAp6ZXJvQmlnSW50CQC2AgEAAAAOaWR4UG9vbEFkZHJlc3MAAQANaWR4UG9vbFN0YXR1cwACABBpZHhQb29sTFBBc3NldElkAAMADWlkeEFtdEFzc2V0SWQABAAPaWR4UHJpY2VBc3NldElkAAUADmlkeEFtdEFzc2V0RGNtAAYAEGlkeFByaWNlQXNzZXREY20ABwAOaWR4SUFtdEFzc2V0SWQACAAQaWR4SVByaWNlQXNzZXRJZAAJAA1pZHhMUEFzc2V0RGNtAAoBD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEYZ2V0U3RyaW5nQnlBZGRyZXNzT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgIJAKwCAgkArAICAgptYW5kYXRvcnkgCQClCAEFB2FkZHJlc3MCAS4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRJbnRPclplcm8CB2FkZHJlc3MDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFB2FkZHJlc3MFA2tleQAAAQxnZXRJbnRPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQCsAgIJAKwCAgIPbWFuZGF0b3J5IHRoaXMuBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEJYXNBbnlMaXN0AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAglMaXN0W0FueV0ECnZhbEFueUx5c3QFByRtYXRjaDAFCnZhbEFueUx5c3QJAAIBAhtmYWlsIHRvIGNhc3QgaW50byBMaXN0W0FueV0BBWFzSW50AQN2YWwEByRtYXRjaDAFA3ZhbAMJAAECBQckbWF0Y2gwAgNJbnQEBnZhbEludAUHJG1hdGNoMAUGdmFsSW50CQACAQIVZmFpbCB0byBjYXN0IGludG8gSW50AQhhc1N0cmluZwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAZ2YWxTdHIFByRtYXRjaDAFBnZhbFN0cgkAAgECGGZhaWwgdG8gY2FzdCBpbnRvIFN0cmluZwERa2V5RmFjdG9yeUFkZHJlc3MAAhwlcyVzX19jb25maWdfX2ZhY3RvcnlBZGRyZXNzABhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHAAAQAZSWR4RmFjdG9yeUNmZ0Jvb3N0aW5nRGFwcAACABRJZHhGYWN0b3J5Q2ZnSWRvRGFwcAADABVJZHhGYWN0b3J5Q2ZnVGVhbURhcHAABAAZSWR4RmFjdG9yeUNmZ0VtaXNzaW9uRGFwcAAFABVJZHhGYWN0b3J5Q2ZnUmVzdERhcHAABgAZSWR4RmFjdG9yeUNmZ1NsaXBwYWdlRGFwcAAHABpJZHhGYWN0b3J5Q2ZnR3d4UmV3YXJkRGFwcAAIAQ1rZXlGYWN0b3J5Q2ZnAAIRJXNfX2ZhY3RvcnlDb25maWcBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQpscEFzc2V0U3RyCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCmxwQXNzZXRTdHIJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFA1NFUAEQa2V5RmFjdG9yeUxwTGlzdAACECVzX19scFRva2Vuc0xpc3QBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQpscEFzc2V0U3RyCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAIFCmxwQXNzZXRTdHIJAMwIAgIebWFwcGluZ3NfX2xwQXNzZXQyUG9vbENvbnRyYWN0BQNuaWwFA1NFUAEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBD2NvbnRyYWN0QWRkcmVzcwkAuQkCCQDMCAICBCVzJXMJAMwIAgIKcG9vbFdlaWdodAkAzAgCBQ9jb250cmFjdEFkZHJlc3MFA25pbAUDU0VQARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBE2tleU1hbmFnZXJQdWJsaWNLZXkAAhQlc19fbWFuYWdlclB1YmxpY0tleQEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBD2dldFN0cmluZ09yRmFpbAEJARFrZXlGYWN0b3J5QWRkcmVzcwABCnJlYWRMcExpc3QACQC1CQIJAQt2YWx1ZU9yRWxzZQIJAJ0IAgkBGHJlYWRGYWN0b3J5QWRkcmVzc09yRmFpbAAJARBrZXlGYWN0b3J5THBMaXN0AAIABQNTRVABFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQdmYWN0b3J5CQC1CQIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQdmYWN0b3J5CQENa2V5RmFjdG9yeUNmZwAFA1NFUAEYZ2V0Qm9vc3RpbmdBZGRyZXNzT3JGYWlsAQRmQ2ZnCQERQGV4dHJOYXRpdmUoMTA2MikBCQCRAwIFBGZDZmcFGUlkeEZhY3RvcnlDZmdCb29zdGluZ0RhcHABGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRlJZHhGYWN0b3J5Q2ZnRW1pc3Npb25EYXBwARdnZXRTdGFraW5nQWRkcmVzc09yRmFpbAEEZkNmZwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQRmQ2ZnBRhJZHhGYWN0b3J5Q2ZnU3Rha2luZ0RhcHABGWdldEd3eFJld2FyZEFkZHJlc3NPckZhaWwBBGZDZmcJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUEZkNmZwUaSWR4RmFjdG9yeUNmZ0d3eFJld2FyZERhcHABF2dldE1hbmFnZXJBZGRyZXNzT3JGYWlsAAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBEUBleHRyTmF0aXZlKDEwNTgpAQkBFmtleU1hbmFnZXJWYXVsdEFkZHJlc3MAAQtrZXlCb29zdENmZwACCiVzX19jb25maWcBH2tleUJvb3N0aW5nTG9ja1BhcmFtVG90YWxBbW91bnQAAh4lcyVzX19zdGF0c19fYWN0aXZlVG90YWxMb2NrZWQBKGtleUJvb3N0aW5nU3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MAAiUlcyVzX19zdGF0c19fbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzARprZXlCb29zdGluZ1N0YXRzTG9ja3NDb3VudAACFyVzJXNfX3N0YXRzX19sb2Nrc0NvdW50ARprZXlCb29zdGluZ1N0YXRzVXNlcnNDb3VudAACHSVzJXNfX3N0YXRzX19hY3RpdmVVc2Vyc0NvdW50ARJrZXlVc2VyMk51bU1hcHBpbmcBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX191c2VyMm51bQkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNTRVABEmtleU51bTJVc2VyTWFwcGluZwEDbnVtCQC5CQIJAMwIAgIZJXMlcyVzX19tYXBwaW5nX19udW0ydXNlcgkAzAgCBQNudW0FA25pbAUDU0VQARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQd1c2VyTnVtCQC5CQIJAMwIAgIWJXMlZCVzX19wYXJhbUJ5VXNlck51bQkAzAgCBQd1c2VyTnVtCQDMCAICBmFtb3VudAUDbmlsBQNTRVABFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIFc3RhcnQFA25pbAUDU0VQARRrZXlMb2NrUGFyYW1EdXJhdGlvbgEHdXNlck51bQkAuQkCCQDMCAICFiVzJWQlc19fcGFyYW1CeVVzZXJOdW0JAMwIAgUHdXNlck51bQkAzAgCAghkdXJhdGlvbgUDbmlsBQNTRVABDWtleUxvY2tQYXJhbUsBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIBawUDbmlsBQNTRVABDWtleUxvY2tQYXJhbUIBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkJXNfX3BhcmFtQnlVc2VyTnVtCQDMCAIFB3VzZXJOdW0JAMwIAgIBYgUDbmlsBQNTRVABFWtleUxvY2tQYXJhbUJ5UGVyaW9kSwIHdXNlck51bQZwZXJpb2QJALkJAgkAzAgCAhclcyVkJXMlZF9fcGFyYW1CeVBlcmlvZAkAzAgCBQd1c2VyTnVtCQDMCAICAWsJAMwIAgUGcGVyaW9kBQNuaWwFA1NFUAEVa2V5TG9ja1BhcmFtQnlQZXJpb2RCAgd1c2VyTnVtBnBlcmlvZAkAuQkCCQDMCAICFyVzJWQlcyVkX19wYXJhbUJ5UGVyaW9kCQDMCAIFB3VzZXJOdW0JAMwIAgIBYgkAzAgCBQZwZXJpb2QFA25pbAUDU0VQASBrZXlVc2VyQm9vc3RFbWlzc2lvbkxhc3RJTlRFR1JBTAEHdXNlck51bQkAuQkCCQDMCAICHiVzJWRfX3VzZXJCb29zdEVtaXNzaW9uTGFzdEludAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAEXa2V5VXNlck1heEJvb3N0SU5URUdSQUwBB3VzZXJOdW0JALkJAgkAzAgCAhElcyVkX19tYXhCb29zdEludAkAzAgCBQd1c2VyTnVtBQNuaWwFA1NFUAEYa2V5VG90YWxNYXhCb29zdElOVEVHUkFMAAIYJXMlc19fbWF4Qm9vc3RJbnRfX3RvdGFsASFrZXlVc2VyQm9vc3RBdmFsYWlibGVUb0NsYWltVG90YWwBB3VzZXJOdW0JALkJAgkAzAgCAiQlcyVkX191c2VyQm9vc3RBdmFsaWFibGVUb0NsYWltVG90YWwJAMwIAgUHdXNlck51bQUDbmlsBQNTRVABE2tleVVzZXJCb29zdENsYWltZWQBB3VzZXJOdW0JALkJAgkAzAgCAhYlcyVkX191c2VyQm9vc3RDbGFpbWVkCQDMCAIFB3VzZXJOdW0FA25pbAUDU0VQARFrZXlUb3RhbENhY2hlZEd3eAACFiVzJXNfX2d3eENhY2hlZF9fdG90YWwBD2tleVN0YWtlZEJ5VXNlcgIOdXNlckFkZHJlc3NTdHIMbHBBc3NldElkU3RyCQC5CQIJAMwIAgIOJXMlcyVzX19zdGFrZWQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEOa2V5U3Rha2VkVG90YWwBDGxwQXNzZXRJZFN0cgkArAICAhclcyVzJXNfX3N0YWtlZF9fdG90YWxfXwUMbHBBc3NldElkU3RyARBrZXlDbGFpbWVkQnlVc2VyAgxscEFzc2V0SWRTdHIOdXNlckFkZHJlc3NTdHIJALkJAgkAzAgCAg8lcyVzJXNfX2NsYWltZWQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEZa2V5Q2xhaW1lZEJ5VXNlck1pblJld2FyZAIMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCQC5CQIJAMwIAgIYJXMlcyVzX19jbGFpbWVkTWluUmV3YXJkCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIFDGxwQXNzZXRJZFN0cgUDbmlsBQNTRVABG2tleUNsYWltZWRCeVVzZXJCb29zdFJld2FyZAIMbHBBc3NldElkU3RyDnVzZXJBZGRyZXNzU3RyCQC5CQIJAMwIAgIaJXMlcyVzX19jbGFpbWVkQm9vc3RSZXdhcmQJAMwIAgUOdXNlckFkZHJlc3NTdHIJAMwIAgUMbHBBc3NldElkU3RyBQNuaWwFA1NFUAEKcmVhZFN0YWtlZAILc3Rha2luZ0RhcHADa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFC3N0YWtpbmdEYXBwBQNrZXkAAAEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAIbJXMlc19fcmF0ZVBlckJsb2NrX19jdXJyZW50ASFrZXlFbWlzc2lvblJhdGVQZXJCbG9ja01heEN1cnJlbnQAAh4lcyVzX19yYXRlUGVyQmxvY2tNYXhfX2N1cnJlbnQBFWtleUVtaXNzaW9uU3RhcnRCbG9jawACGiVzJXNfX2VtaXNzaW9uX19zdGFydEJsb2NrARtrZXlFbWlzc2lvbkR1cmF0aW9uSW5CbG9ja3MAAhglcyVzX19lbWlzc2lvbl9fZHVyYXRpb24BE2tleUVtaXNzaW9uRW5kQmxvY2sAAhglcyVzX19lbWlzc2lvbl9fZW5kQmxvY2sAC2ZhY3RvcnlEYXBwCQEYcmVhZEZhY3RvcnlBZGRyZXNzT3JGYWlsAAAKZmFjdG9yeUNmZwkBFHJlYWRGYWN0b3J5Q2ZnT3JGYWlsAQULZmFjdG9yeURhcHAADGVtaXNzaW9uRGFwcAkBGGdldEVtaXNzaW9uQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcAC3N0YWtpbmdEYXBwCQEXZ2V0U3Rha2luZ0FkZHJlc3NPckZhaWwBBQpmYWN0b3J5Q2ZnAA1nd3hSZXdhcmREYXBwCQEZZ2V0R3d4UmV3YXJkQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcADGJvb3N0aW5nRGFwcAkBGGdldEJvb3N0aW5nQWRkcmVzc09yRmFpbAEFCmZhY3RvcnlDZmcBDGdldFBvb2xJbkZlZQELcG9vbEFkZHJlc3MKAAFACQD8BwQFC2ZhY3RvcnlEYXBwAhBnZXRJbkZlZVJFQURPTkxZCQDMCAIJAKUIAQULcG9vbEFkZHJlc3MFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAENZ2V0UG9vbE91dEZlZQELcG9vbEFkZHJlc3MKAAFACQD8BwQFC2ZhY3RvcnlEYXBwAhFnZXRPdXRGZWVSRUFET05MWQkAzAgCCQClCAEFC3Bvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAECBQFAAgNJbnQFAUAJAAIBCQCsAgIJAAMBBQFAAhggY291bGRuJ3QgYmUgY2FzdCB0byBJbnQBGWludGVybmFsQ3VycmVudFJld2FyZFJhdGUBCWxwQXNzZXRJZAQOcG9vbEFkZHJlc3NTdHIJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUJbHBBc3NldElkBA5wb29sV2VpZ2h0TXVsdAUFTVVMVDgECnBvb2xXZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDUwKQIFC2ZhY3RvcnlEYXBwCQEUa2V5RmFjdG9yeVBvb2xXZWlnaHQBBQ5wb29sQWRkcmVzc1N0cgQSd3hFbWlzc2lvblBlckJsb2NrCQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEea2V5RW1pc3Npb25SYXRlUGVyQmxvY2tDdXJyZW50AAQVd3hFbWlzc2lvblBlckJsb2NrTWF4CQEMZ2V0SW50T3JGYWlsAgUMZW1pc3Npb25EYXBwCQEha2V5RW1pc3Npb25SYXRlUGVyQmxvY2tNYXhDdXJyZW50AAQNYm9vc3RNYXhDb2VmZgoAAUAJAPwHBAUMZW1pc3Npb25EYXBwAhVnZXRCb29zdENvZWZmUkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQWcG9vbFd4RW1pc3Npb25QZXJCbG9jawkAaQIJAGsDBRJ3eEVtaXNzaW9uUGVyQmxvY2sFCnBvb2xXZWlnaHQFDnBvb2xXZWlnaHRNdWx0BQ1ib29zdE1heENvZWZmBBlwb29sV3hFbWlzc2lvblBlckJsb2NrTWF4CQBrAwUVd3hFbWlzc2lvblBlckJsb2NrTWF4BQpwb29sV2VpZ2h0BQ5wb29sV2VpZ2h0TXVsdAQJbWF4RmFjdG9yCQBoAgUNYm9vc3RNYXhDb2VmZgUFTVVMVDgEDXRvdGFsTHBTdGFrZWQJAQxnZXRJbnRPclplcm8CBQtzdGFraW5nRGFwcAkBDmtleVN0YWtlZFRvdGFsAQUJbHBBc3NldElkCQDMCAIFFnBvb2xXeEVtaXNzaW9uUGVyQmxvY2sJAMwIAgUJbWF4RmFjdG9yCQDMCAIFDXRvdGFsTHBTdGFrZWQFA25pbAEaY2FsY0d3eEFtb3VudFN0YXJ0UkVBRE9OTFkDCmxvY2tBbW91bnQMbG9ja0R1cmF0aW9uD21heExvY2tEdXJhdGlvbgQHY29lZmZYOAkAawMFDGxvY2tEdXJhdGlvbgUFTVVMVDgFD21heExvY2tEdXJhdGlvbgQOZ1d4QW1vdW50U3RhcnQJAGsDBQpsb2NrQW1vdW50BQdjb2VmZlg4BQVNVUxUOAkAzAgCBQ5nV3hBbW91bnRTdGFydAUDbmlsAQZnZXRLZXkDBGFkZHIDa2V5BHR5cGUDCQAAAgUEdHlwZQIGc3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1MykCBQRhZGRyBQNrZXkDCQAAAgUEdHlwZQIHaW50ZWdlcgkApAMBCQERQGV4dHJOYXRpdmUoMTA1MCkCBQRhZGRyBQNrZXkDCQAAAgUEdHlwZQIHYm9vbGVhbgkApQMBCQERQGV4dHJOYXRpdmUoMTA1MSkCBQRhZGRyBQNrZXkJAAIBAi11bmtub3duIHR5cGUuIGV4cGVjdGVkIHN0cmluZy9pbnRlZ2VyL2Jvb2xlYW4BFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABBNtYW5hZ2VyVmF1bHRBZGRyZXNzCQEXZ2V0TWFuYWdlckFkZHJlc3NPckZhaWwABAckbWF0Y2gwCQCdCAIFE21hbmFnZXJWYXVsdEFkZHJlc3MJARNrZXlNYW5hZ2VyUHVibGljS2V5AAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJANkEAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IBCWlzTWFuYWdlcgEBaQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawMJAAECBQckbWF0Y2gwAgRVbml0CQAAAggFAWkGY2FsbGVyBQR0aGlzCQACAQILTWF0Y2ggZXJyb3IBC211c3RNYW5hZ2VyAQFpAwkBCWlzTWFuYWdlcgEFAWkGCQACAQIRcGVybWlzc2lvbiBkZW5pZWQPAWkBC2NvbnN0cnVjdG9yAQ5mYWN0b3J5QWRkcmVzcwQLY2hlY2tDYWxsZXIJAQttdXN0TWFuYWdlcgEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARFrZXlGYWN0b3J5QWRkcmVzcwAFDmZhY3RvcnlBZGRyZXNzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEZY3VycmVudFJld2FyZFJhdGVSRUFET05MWQEJbHBBc3NldElkBApyZXdhcmREYXRhCQEZaW50ZXJuYWxDdXJyZW50UmV3YXJkUmF0ZQEFCWxwQXNzZXRJZAQSd3hFbWlzc2lvblBlckJsb2NrCQCRAwIFCnJld2FyZERhdGEAAAQJbWF4RmFjdG9yCQCRAwIFCnJld2FyZERhdGEAAQQNdG90YWxMcFN0YWtlZAkAkQMCBQpyZXdhcmREYXRhAAIEEnZvdGluZ1Jlc3VsdFN0YWtlZAoAAUAJAPwHBAUMYm9vc3RpbmdEYXBwAh1nZXRWb3RpbmdSZXN1bHRTdGFrZWRSRUFET05MWQkAzAgCBQlscEFzc2V0SWQFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAkAlAoCBQNuaWwJALkJAgkAzAgCAgglZCVkJWQlZAkAzAgCCQCkAwEFEnd4RW1pc3Npb25QZXJCbG9jawkAzAgCCQCkAwEFCW1heEZhY3RvcgkAzAgCCQCkAwEFDXRvdGFsTHBTdGFrZWQJAMwIAgkApAMBBRJ2b3RpbmdSZXN1bHRTdGFrZWQFA25pbAUDU0VQAWkBHWN1cnJlbnRVc2VyUmV3YXJkUmF0ZVJFQURPTkxZAglscEFzc2V0SWQLdXNlckFkZHJlc3MECnJld2FyZERhdGEJARlpbnRlcm5hbEN1cnJlbnRSZXdhcmRSYXRlAQUJbHBBc3NldElkBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAJEDAgUKcmV3YXJkRGF0YQAABAltYXhGYWN0b3IJAJEDAgUKcmV3YXJkRGF0YQABBA10b3RhbExwU3Rha2VkCQCRAwIFCnJld2FyZERhdGEAAgQObHBTdGFrZWRCeVVzZXIJAQxnZXRJbnRPclplcm8CBQtzdGFraW5nRGFwcAkBD2tleVN0YWtlZEJ5VXNlcgIFC3VzZXJBZGRyZXNzBQlscEFzc2V0SWQEDXVzZXJDbGFpbUluZm8JALUJAgkBCGFzU3RyaW5nAQkA/AcEBQtzdGFraW5nRGFwcAIPY2xhaW1XeFJFQURPTkxZCQDMCAIFCWxwQXNzZXRJZAkAzAgCBQt1c2VyQWRkcmVzcwUDbmlsBQNuaWwFA1NFUAQNbWluUmV3YXJkUGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEJAJEDAgUNdXNlckNsYWltSW5mbwAFAhxjb3VsZG4ndCBwYXJzZSBtaW5SZXdhcmRQYXJ0BA9ib29zdFJld2FyZFBhcnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFDXVzZXJDbGFpbUluZm8ABgIeY291bGRuJ3QgcGFyc2UgYm9vc3RSZXdhcmRQYXJ0BAVkZWJ1ZwkAkQMCBQ11c2VyQ2xhaW1JbmZvAAcEDWJvb3N0aW5nUG93ZXIDCQAAAgUPYm9vc3RSZXdhcmRQYXJ0AAAJAGgCAAEFBU1VTFQ4CQBrAwkAZAIFDW1pblJld2FyZFBhcnQFD2Jvb3N0UmV3YXJkUGFydAUFTVVMVDgFDW1pblJld2FyZFBhcnQJAJQKAgUDbmlsCQC5CQIJAMwIAgIMJWQlZCVkJWQlZCVzCQDMCAIJAKQDAQUSd3hFbWlzc2lvblBlckJsb2NrCQDMCAIJAKQDAQUJbWF4RmFjdG9yCQDMCAIJAKQDAQUNdG90YWxMcFN0YWtlZAkAzAgCCQCkAwEFDmxwU3Rha2VkQnlVc2VyCQDMCAIJAKQDAQUNYm9vc3RpbmdQb3dlcgkAzAgCBQVkZWJ1ZwUDbmlsBQNTRVABaQEdY2FsY0Jvb3N0QnVsa0ludGVybmFsUkVBRE9OTFkHC2N1cnJlbnRJdGVyEWRlbHRhV3hBbW91bnRCdWxrG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsaxFkZWx0YUxwQW1vdW50QnVsaxBscEFzc2V0SWRPcHRCdWxrDnVzZXJBZGRyZXNzT3B0BnJlc0FjYwMJAAACBQtjdXJyZW50SXRlcgkAkAMBBRFkZWx0YVd4QW1vdW50QnVsawkAlAoCBQNuaWwFBnJlc0FjYwQNZGVsdGFXeEFtb3VudAkAkQMCBRFkZWx0YVd4QW1vdW50QnVsawULY3VycmVudEl0ZXIEF2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzCQCRAwIFG2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzQnVsawULY3VycmVudEl0ZXIEDWRlbHRhTHBBbW91bnQJAJEDAgURZGVsdGFMcEFtb3VudEJ1bGsFC2N1cnJlbnRJdGVyBAxscEFzc2V0SWRPcHQJAJEDAgUQbHBBc3NldElkT3B0QnVsawULY3VycmVudEl0ZXIEBGluZm8KAAFACQD8BwQFBHRoaXMCEWNhbGNCb29zdFJFQURPTkxZCQDMCAIFDWRlbHRhV3hBbW91bnQJAMwIAgUXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MJAMwIAgUNZGVsdGFMcEFtb3VudAkAzAgCBQxscEFzc2V0SWRPcHQJAMwIAgUOdXNlckFkZHJlc3NPcHQFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQDcmVzCQDNCAIFBnJlc0FjYwUEaW5mbwQDaW52CgABQAkA/AcEBQR0aGlzAh1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCCQBkAgULY3VycmVudEl0ZXIAAQkAzAgCBRFkZWx0YVd4QW1vdW50QnVsawkAzAgCBRtkZWx0YUxvY2tQZXJpb2RJbkJsb2Nrc0J1bGsJAMwIAgURZGVsdGFMcEFtb3VudEJ1bGsJAMwIAgUQbHBBc3NldElkT3B0QnVsawkAzAgCBQ51c2VyQWRkcmVzc09wdAkAzAgCBQNyZXMFA25pbAUDbmlsAwkAAQIFAUACCUxpc3RbQW55XQUBQAkAAgEJAKwCAgkAAwEFAUACHiBjb3VsZG4ndCBiZSBjYXN0IHRvIExpc3RbQW55XQMJAAACBQNpbnYFA2ludgkAlAoCBQNuaWwFA2ludgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARVjYWxjQm9vc3RCdWxrUkVBRE9OTFkFDWRlbHRhV3hBbW91bnQXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MNZGVsdGFMcEFtb3VudAxscEFzc2V0SWRPcHQOdXNlckFkZHJlc3NPcHQEA3JlcwkA/AcEBQR0aGlzAh1jYWxjQm9vc3RCdWxrSW50ZXJuYWxSRUFET05MWQkAzAgCAAAJAMwIAgUNZGVsdGFXeEFtb3VudAkAzAgCBRdkZWx0YUxvY2tQZXJpb2RJbkJsb2NrcwkAzAgCBQ1kZWx0YUxwQW1vdW50CQDMCAIFDGxwQXNzZXRJZE9wdAkAzAgCBQ51c2VyQWRkcmVzc09wdAkAzAgCBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUDcmVzAWkBEWNhbGNCb29zdFJFQURPTkxZBQ1kZWx0YVd4QW1vdW50F2RlbHRhTG9ja1BlcmlvZEluQmxvY2tzDWRlbHRhTHBBbW91bnQMbHBBc3NldElkT3B0DnVzZXJBZGRyZXNzT3B0BApib29zdENvZWZmCgABQAkA/AcEBQxlbWlzc2lvbkRhcHACFWdldEJvb3N0Q29lZmZSRUFET05MWQUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAhtYXRoRGFwcAUNZ3d4UmV3YXJkRGFwcAQIRU1QVFlTVFICBWVtcHR5BBdtYXhMb2NrRHVyYXRpb25JbkJsb2NrcwkBDXBhcnNlSW50VmFsdWUBCQCRAwIJALUJAgkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFDGJvb3N0aW5nRGFwcAkBC2tleUJvb3N0Q2ZnAAUDU0VQAAQEDGxwQXNzZXRJZFN0cgMJAAACBQxscEFzc2V0SWRPcHQCAAUIRU1QVFlTVFIFDGxwQXNzZXRJZE9wdAQOdXNlckFkZHJlc3NTdHIDCQAAAgUOdXNlckFkZHJlc3NPcHQCAAUIRU1QVFlTVFIFDnVzZXJBZGRyZXNzT3B0BAp1c2VyTnVtU3RyCQELdmFsdWVPckVsc2UCCQCdCAIFDGJvb3N0aW5nRGFwcAkBEmtleVVzZXIyTnVtTWFwcGluZwEFDnVzZXJBZGRyZXNzT3B0BQhFTVBUWVNUUgQKdXNlckFtb3VudAkBC3ZhbHVlT3JFbHNlAgkAmggCBQxib29zdGluZ0RhcHAJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQUKdXNlck51bVN0cgAABAlsb2NrU3RhcnQJAQt2YWx1ZU9yRWxzZQIJAJoIAgUMYm9vc3RpbmdEYXBwCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFCnVzZXJOdW1TdHIFBmhlaWdodAQMbG9ja0R1cmF0aW9uCQELdmFsdWVPckVsc2UCCQCaCAIFDGJvb3N0aW5nRGFwcAkBFGtleUxvY2tQYXJhbUR1cmF0aW9uAQUKdXNlck51bVN0cgAABAdsb2NrRW5kCQBkAgUJbG9ja1N0YXJ0BQxsb2NrRHVyYXRpb24EEXJlbWFpbmluZ0R1cmF0aW9uCQCWAwEJAMwIAgkAZQIFB2xvY2tFbmQFBmhlaWdodAkAzAgCAAAFA25pbAQNdXNlckFtb3VudE5ldwkAZAIFCnVzZXJBbW91bnQFDWRlbHRhV3hBbW91bnQED2xvY2tEdXJhdGlvbk5ldwkAlwMBCQDMCAIJAGQCBRFyZW1haW5pbmdEdXJhdGlvbgUXZGVsdGFMb2NrUGVyaW9kSW5CbG9ja3MJAMwIAgUXbWF4TG9ja0R1cmF0aW9uSW5CbG9ja3MFA25pbAQRdXNlckN1cnJnV3hBbW91bnQJAQVhc0ludAEJAJEDAgkBCWFzQW55TGlzdAEJAPwHBAUMYm9vc3RpbmdEYXBwAhNnd3hVc2VySW5mb1JFQURPTkxZCQDMCAIFDnVzZXJBZGRyZXNzU3RyBQNuaWwFA25pbAAABBFnV3hBbW91bnRTdGFydE5ldwkAkQMCCQEaY2FsY0d3eEFtb3VudFN0YXJ0UkVBRE9OTFkDBQ11c2VyQW1vdW50TmV3BQ9sb2NrRHVyYXRpb25OZXcFF21heExvY2tEdXJhdGlvbkluQmxvY2tzAAAEDnRvdGFsQ2FjaGVkR3d4CgABQAkA/AcEBQxib29zdGluZ0RhcHACGWdldFRvdGFsQ2FjaGVkR3d4UkVBRE9OTFkFA25pbAUDbmlsAwkAAQIFAUACA0ludAUBQAkAAgEJAKwCAgkAAwEFAUACGCBjb3VsZG4ndCBiZSBjYXN0IHRvIEludAQFTVVMVDMA6AcEFHd4RW1pc3Npb25QZXJCbG9ja1gzCQBoAgkBDGdldEludE9yRmFpbAIFDGVtaXNzaW9uRGFwcAkBHmtleUVtaXNzaW9uUmF0ZVBlckJsb2NrQ3VycmVudAAFBU1VTFQzBA9zdGFrZWRCeVVzZXJLRVkJAQ9rZXlTdGFrZWRCeVVzZXICBQ51c2VyQWRkcmVzc1N0cgUMbHBBc3NldElkU3RyBA5zdGFrZWRUb3RhbEtFWQkBDmtleVN0YWtlZFRvdGFsAQUMbHBBc3NldElkU3RyBAxzdGFrZWRCeVVzZXIJAQpyZWFkU3Rha2VkAgULc3Rha2luZ0RhcHAFD3N0YWtlZEJ5VXNlcktFWQQLc3Rha2VkVG90YWwJAQpyZWFkU3Rha2VkAgULc3Rha2luZ0RhcHAFDnN0YWtlZFRvdGFsS0VZBApwb29sV2VpZ2h0AwkBAiE9AgUMbHBBc3NldElkU3RyBQhFTVBUWVNUUgQOcG9vbEFkZHJlc3NTdHIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQtmYWN0b3J5RGFwcAkBGmtleUZhY3RvcnlMcDJBc3NldHNNYXBwaW5nAQUMbHBBc3NldElkU3RyCQCsAgICFXVuc3VwcG9ydGVkIGxwIGFzc2V0IAUMbHBBc3NldElkU3RyCQERQGV4dHJOYXRpdmUoMTA1MCkCBQtmYWN0b3J5RGFwcAkBFGtleUZhY3RvcnlQb29sV2VpZ2h0AQUOcG9vbEFkZHJlc3NTdHIAAAQYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzCQBrAwUUd3hFbWlzc2lvblBlckJsb2NrWDMFCnBvb2xXZWlnaHQJAGgCBQ5QT09MV0VJR0hUTVVMVAUKYm9vc3RDb2VmZgQJd3hQZXJMcFgzAwkBAiE9AgULc3Rha2VkVG90YWwAAAkAawMFGHBvb2xXeEVtaXNzaW9uUGVyQmxvY2tYMwUFTVVMVDgFC3N0YWtlZFRvdGFsAAAEEHVzZXJXeFBlckJsb2NrWDMJAGsDBQl3eFBlckxwWDMFDHN0YWtlZEJ5VXNlcgUFTVVMVDgEF2Jvb3N0RW1pc3Npb25QZXJCbG9ja1gzCQBoAgUYcG9vbFd4RW1pc3Npb25QZXJCbG9ja1gzCQBlAgUKYm9vc3RDb2VmZgABBBZ0bXBVc2VyQm9vc3RQZXJCbG9ja1gzCQBrAwURdXNlckN1cnJnV3hBbW91bnQFF2Jvb3N0RW1pc3Npb25QZXJCbG9ja1gzBQ50b3RhbENhY2hlZEd3eAQTdXNlckJvb3N0UGVyQmxvY2tYMwkAlwMBCQDMCAIFFnRtcFVzZXJCb29zdFBlckJsb2NrWDMJAMwIAgkAaAIFEHVzZXJXeFBlckJsb2NrWDMJAGUCBQpib29zdENvZWZmAAEFA25pbAQOdXNlckJvb3N0Q29lZmYDCQAAAgUQdXNlcld4UGVyQmxvY2tYMwAACQBoAgABBQVNVUxUOAkAawMJAGQCBRN1c2VyQm9vc3RQZXJCbG9ja1gzBRB1c2VyV3hQZXJCbG9ja1gzBQVNVUxUOAUQdXNlcld4UGVyQmxvY2tYMwkAlAoCBQNuaWwJALkJAgkAzAgCAgYlZCVkJXMJAMwIAgkApAMBBRFnV3hBbW91bnRTdGFydE5ldwkAzAgCCQCkAwEFDnVzZXJCb29zdENvZWZmCQDMCAICAWQFA25pbAUDU0VQAWkBF3d4RW1pc3Npb25TdGF0c1JFQURPTkxZAAQHT05FTVVMVAkApAMBBQVNVUxUOAQDT05FAgExBBJ3eEVtaXNzaW9uUGVyQmxvY2sJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJAR5rZXlFbWlzc2lvblJhdGVQZXJCbG9ja0N1cnJlbnQABBJlbWlzc2lvblN0YXJ0QmxvY2sJAQxnZXRJbnRPckZhaWwCBQxlbWlzc2lvbkRhcHAJARVrZXlFbWlzc2lvblN0YXJ0QmxvY2sABAxwYXNzZWRCbG9ja3MDCQBmAgUSZW1pc3Npb25TdGFydEJsb2NrBQZoZWlnaHQAAAkAZQIFBmhlaWdodAUSZW1pc3Npb25TdGFydEJsb2NrBA50ZWFtRW1EdXJhdGlvbgkAaAIAoAsA7QIECXRlYW1FbU1heAkAaAIAwIjsXwUFTVVMVDgEBnRlYW1FbQMJAGYCBQxwYXNzZWRCbG9ja3MFDnRlYW1FbUR1cmF0aW9uBQl0ZWFtRW1NYXgJAGsDBQl0ZWFtRW1NYXgFDHBhc3NlZEJsb2NrcwUOdGVhbUVtRHVyYXRpb24ED3RvdGFsV3hSZWxlYXNlZAkAZAIJAGgCBRJ3eEVtaXNzaW9uUGVyQmxvY2sFDHBhc3NlZEJsb2NrcwUGdGVhbUVtBA10b3RhbFd4TG9ja2VkCQEMZ2V0SW50T3JaZXJvAgUMYm9vc3RpbmdEYXBwCQEfa2V5Qm9vc3RpbmdMb2NrUGFyYW1Ub3RhbEFtb3VudAAEGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwkBDGdldEludE9yWmVybwIFDGJvb3N0aW5nRGFwcAkBKGtleUJvb3N0aW5nU3RhdHNMb2Nrc0R1cmF0aW9uU3VtSW5CbG9ja3MABApsb2Nrc0NvdW50CQEMZ2V0SW50T3JaZXJvAgUMYm9vc3RpbmdEYXBwCQEaa2V5Qm9vc3RpbmdTdGF0c0xvY2tzQ291bnQACQCUCgIFA25pbAkAuQkCCQDMCAICCCVkJWQlZCVkCQDMCAIJAKQDAQUPdG90YWxXeFJlbGVhc2VkCQDMCAIJAKQDAQUNdG90YWxXeExvY2tlZAkAzAgCCQCkAwEFGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwkAzAgCCQCkAwEFCmxvY2tzQ291bnQFA25pbAUDU0VQAWkBEXBvb2xTdGF0c1JFQURPTkxZAQdscEFzc2V0BAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFC2ZhY3RvcnlEYXBwCQEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBQdscEFzc2V0BAZzdGF0dXMKAAFACQD8BwQFC2ZhY3RvcnlEYXBwAhVnZXRQb29sU3RhdHVzUkVBRE9OTFkJAMwIAgkApQgBBQtwb29sQWRkcmVzcwUDbmlsBQNuaWwDCQABAgUBQAIDSW50BQFACQACAQkArAICCQADAQUBQAIYIGNvdWxkbid0IGJlIGNhc3QgdG8gSW50BAN0cGwCFCVkJWQlZCVkJWQlZCVkJWQlZCVzAwkAAAIFBnN0YXR1cwAECQCUCgIFA25pbAkAuQkCCQDMCAIFA3RwbAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQCkAwEAAAkAzAgCCQClAwEHBQNuaWwFA1NFUAQDY2ZnCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwECWxwQXNzZXRJZAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQKYW10QXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFDWlkeEFtdEFzc2V0SWQEDHByaWNlQXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFD2lkeFByaWNlQXNzZXRJZAQLaUFtdEFzc2V0SWQJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhJQW10QXNzZXRJZAQNaVByaWNlQXNzZXRJZAkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeElQcmljZUFzc2V0SWQEC2FtdEFzc2V0RGNtCQENcGFyc2VJbnRWYWx1ZQEJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ5pZHhBbXRBc3NldERjbQQNcHJpY2VBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UHJpY2VBc3NldERjbQQNcG9vbExQQmFsYW5jZQgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkA7AcBBQlscEFzc2V0SWQJAKwCAgkArAICAgZBc3NldCAJANgEAQUJbHBBc3NldElkAg4gZG9lc24ndCBleGlzdAhxdWFudGl0eQQSYWNjQW10QXNzZXRCYWxhbmNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFCmFtdEFzc2V0SWQFA25pbAUDbmlsBBRhY2NQcmljZUFzc2V0QmFsYW5jZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0QWNjQmFsYW5jZVdyYXBwZXJSRUFET05MWQkAzAgCBQxwcmljZUFzc2V0SWQFA25pbAUDbmlsBApwcmljZXNMaXN0AwkAAAIFDXBvb2xMUEJhbGFuY2UAAAkAzAgCCQCmAwEFCnplcm9CaWdJbnQJAMwIAgkApgMBBQp6ZXJvQmlnSW50CQDMCAIJAKYDAQUKemVyb0JpZ0ludAUDbmlsCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIZY2FsY1ByaWNlc1dyYXBwZXJSRUFET05MWQkAzAgCBRJhY2NBbXRBc3NldEJhbGFuY2UJAMwIAgUUYWNjUHJpY2VBc3NldEJhbGFuY2UJAMwIAgUNcG9vbExQQmFsYW5jZQUDbmlsBQNuaWwECGN1clByaWNlAAAED2xwQW10QXNzZXRTaGFyZQkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCRAwIFCnByaWNlc0xpc3QAAQkAzAgCBQVNVUxUOAUDbmlsBQNuaWwEEWxwUHJpY2VBc3NldFNoYXJlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAJEDAgUKcHJpY2VzTGlzdAACCQDMCAIFBU1VTFQ4BQNuaWwFA25pbAQKcG9vbFdlaWdodAkBEUBleHRyTmF0aXZlKDEwNTApAgULZmFjdG9yeURhcHAJARRrZXlGYWN0b3J5UG9vbFdlaWdodAEJAKUIAQULcG9vbEFkZHJlc3MEBWluRmVlCQEMZ2V0UG9vbEluRmVlAQULcG9vbEFkZHJlc3MEBm91dEZlZQkBDWdldFBvb2xPdXRGZWUBBQtwb29sQWRkcmVzcwQecG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCgABQAkA/AcEBQtmYWN0b3J5RGFwcAIoaXNQb29sT25lVG9rZW5PcGVyYXRpb25zRGlzYWJsZWRSRUFET05MWQkAzAgCCQClCAEFC3Bvb2xBZGRyZXNzBQNuaWwFA25pbAMJAAECBQFAAgdCb29sZWFuBQFACQACAQkArAICCQADAQUBQAIcIGNvdWxkbid0IGJlIGNhc3QgdG8gQm9vbGVhbgQdcG9vbE9uZVRva2VuT3BlcmF0aW9uc0VuYWJsZWQJAQEhAQUecG9vbE9uZVRva2VuT3BlcmF0aW9uc0Rpc2FibGVkCQCUCgIFA25pbAkAuQkCCQDMCAIFA3RwbAkAzAgCCQCkAwEFEmFjY0FtdEFzc2V0QmFsYW5jZQkAzAgCCQCkAwEFFGFjY1ByaWNlQXNzZXRCYWxhbmNlCQDMCAIJAKQDAQUNcG9vbExQQmFsYW5jZQkAzAgCCQCkAwEFCGN1clByaWNlCQDMCAIJAKQDAQUPbHBBbXRBc3NldFNoYXJlCQDMCAIJAKQDAQURbHBQcmljZUFzc2V0U2hhcmUJAMwIAgkApAMBBQpwb29sV2VpZ2h0CQDMCAIJAKQDAQUFaW5GZWUJAMwIAgkApAMBBQZvdXRGZWUJAMwIAgkApQMBBR1wb29sT25lVG9rZW5PcGVyYXRpb25zRW5hYmxlZAUDbmlsBQNTRVABaQEkcG9vbEV2YWx1YXRlUHV0QnlBbW91bnRBc3NldFJFQURPTkxZAgdscEFzc2V0DGluQW1Bc3NldEFtdAQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUHbHBBc3NldAQDY2ZnCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwECWxwQXNzZXRJZAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQMYW1Bc3NldElkU3RyCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQJYW1Bc3NldElkCQDZBAEFDGFtQXNzZXRJZFN0cgQMcHJBc3NldElkU3RyCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAlwckFzc2V0SWQJANkEAQUMcHJBc3NldElkU3RyBAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20ECnBvb2xTdGF0dXMJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzBA1wb29sTFBCYWxhbmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BBJhY2NBbXRBc3NldEJhbGFuY2UJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUMYW1Bc3NldElkU3RyBQNuaWwFA25pbAQUYWNjUHJpY2VBc3NldEJhbGFuY2UJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUMcHJBc3NldElkU3RyBQNuaWwFA25pbAQOYW10QXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUSYWNjQW10QXNzZXRCYWxhbmNlCQDMCAIFC2FtdEFzc2V0RGNtBQNuaWwFA25pbAQQcHJpY2VBc3NldEFtdFgxOAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAhR0b1gxOFdyYXBwZXJSRUFET05MWQkAzAgCBRRhY2NQcmljZUFzc2V0QmFsYW5jZQkAzAgCBQ1wcmljZUFzc2V0RGNtBQNuaWwFA25pbAQLY3VyUHJpY2VYMTgDCQAAAgUNcG9vbExQQmFsYW5jZQAABQp6ZXJvQmlnSW50CQCnAwEJAQhhc1N0cmluZwEJAPwHBAULcG9vbEFkZHJlc3MCHmNhbGNQcmljZUJpZ0ludFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFEHByaWNlQXNzZXRBbXRYMTgJAMwIAgkApgMBBQ5hbXRBc3NldEFtdFgxOAUDbmlsBQNuaWwECGN1clByaWNlCQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQULY3VyUHJpY2VYMTgJAMwIAgUFTVVMVDgFA25pbAUDbmlsBA9pbkFtQXNzZXRBbXRYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMaW5BbUFzc2V0QW10CQDMCAIFC2FtdEFzc2V0RGNtBQNuaWwFA25pbAQPaW5QckFzc2V0QW10WDE4CQC8AgMFD2luQW1Bc3NldEFtdFgxOAULY3VyUHJpY2VYMTgFBk1VTFQxOAQMaW5QckFzc2V0QW10CQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhZmcm9tWDE4V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQUPaW5QckFzc2V0QW10WDE4CQDMCAIFDXByaWNlQXNzZXREY20FA25pbAUDbmlsBANyZXMJAPwHBAULcG9vbEFkZHJlc3MCI2VzdGltYXRlUHV0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQDMCAICAAkAzAgCAKDCHgkAzAgCBQxpbkFtQXNzZXRBbXQJAMwIAgUJYW1Bc3NldElkCQDMCAIFDGluUHJBc3NldEFtdAkAzAgCBQlwckFzc2V0SWQJAMwIAgIACQDMCAIGCQDMCAIHBQNuaWwFA25pbAQNJHQwMjI2MjcyMjk4MAQHJG1hdGNoMAUDcmVzAwMDCQABAggFByRtYXRjaDACXzECA0ludAMJAAECCAUHJG1hdGNoMAJfMwIDSW50AwkAAQIIBQckbWF0Y2gwAl80AgNJbnQDCQABAggFByRtYXRjaDACXzUCA0ludAkAAQIIBQckbWF0Y2gwAl82AgNJbnQHBwcHCQAAAgkAxgoBBQckbWF0Y2gwAA0HBAljYWxjTHBBbXQIBQckbWF0Y2gwAl8xBAxjdXJQcmljZUNhbGMIBQckbWF0Y2gwAl8zBAlhbUJhbGFuY2UIBQckbWF0Y2gwAl80BAlwckJhbGFuY2UIBQckbWF0Y2gwAl81BApscEVtaXNzaW9uCAUHJG1hdGNoMAJfNgkAlwoFBQljYWxjTHBBbXQFDGN1clByaWNlQ2FsYwUJYW1CYWxhbmNlBQlwckJhbGFuY2UFCmxwRW1pc3Npb24JAAIBAhNDb3VsZG4ndCBjYXN0IHR5cGVzBAljYWxjTHBBbXQIBQ0kdDAyMjYyNzIyOTgwAl8xBAxjdXJQcmljZUNhbGMIBQ0kdDAyMjYyNzIyOTgwAl8yBAlhbUJhbGFuY2UIBQ0kdDAyMjYyNzIyOTgwAl8zBAlwckJhbGFuY2UIBQ0kdDAyMjYyNzIyOTgwAl80BApscEVtaXNzaW9uCAUNJHQwMjI2MjcyMjk4MAJfNQkAlAoCBQNuaWwJALkJAgkAzAgCAhAlZCVkJWQlZCVkJWQlZCVkCQDMCAIJAKQDAQUJY2FsY0xwQW10CQDMCAIJAKQDAQUIY3VyUHJpY2UJAMwIAgkApAMBBQlhbUJhbGFuY2UJAMwIAgkApAMBBQlwckJhbGFuY2UJAMwIAgkApAMBBQpscEVtaXNzaW9uCQDMCAIFCnBvb2xTdGF0dXMJAMwIAgkApAMBBQxpbkFtQXNzZXRBbXQJAMwIAgkApAMBBQxpblByQXNzZXRBbXQFA25pbAUDU0VQAWkBI3Bvb2xFdmFsdWF0ZVB1dEJ5UHJpY2VBc3NldFJFQURPTkxZAgdscEFzc2V0DGluUHJBc3NldEFtdAQLcG9vbEFkZHJlc3MJARFAZXh0ck5hdGl2ZSgxMDYyKQEJARhnZXRTdHJpbmdCeUFkZHJlc3NPckZhaWwCBQtmYWN0b3J5RGFwcAkBJmtleUZhY3RvcnlMcEFzc2V0VG9Qb29sQ29udHJhY3RBZGRyZXNzAQUHbHBBc3NldAQDY2ZnCQEJYXNBbnlMaXN0AQkA/AcEBQtwb29sQWRkcmVzcwIcZ2V0UG9vbENvbmZpZ1dyYXBwZXJSRUFET05MWQUDbmlsBQNuaWwECWxwQXNzZXRJZAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUQaWR4UG9vbExQQXNzZXRJZAQMYW1Bc3NldElkU3RyCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUNaWR4QW10QXNzZXRJZAQJYW1Bc3NldElkCQDZBAEFDGFtQXNzZXRJZFN0cgQMcHJBc3NldElkU3RyCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUPaWR4UHJpY2VBc3NldElkBAlwckFzc2V0SWQJANkEAQUMcHJBc3NldElkU3RyBAthbXRBc3NldERjbQkBDXBhcnNlSW50VmFsdWUBCQEIYXNTdHJpbmcBCQCRAwIFA2NmZwUOaWR4QW10QXNzZXREY20EDXByaWNlQXNzZXREY20JAQ1wYXJzZUludFZhbHVlAQkBCGFzU3RyaW5nAQkAkQMCBQNjZmcFEGlkeFByaWNlQXNzZXREY20ECnBvb2xTdGF0dXMJAQhhc1N0cmluZwEJAJEDAgUDY2ZnBQ1pZHhQb29sU3RhdHVzBA1wb29sTFBCYWxhbmNlCAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFCWxwQXNzZXRJZAkArAICCQCsAgICBkFzc2V0IAkA2AQBBQlscEFzc2V0SWQCDiBkb2Vzbid0IGV4aXN0CHF1YW50aXR5BAxhbUJhbGFuY2VSYXcJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCHGdldEFjY0JhbGFuY2VXcmFwcGVyUkVBRE9OTFkJAMwIAgUMYW1Bc3NldElkU3RyBQNuaWwFA25pbAQMcHJCYWxhbmNlUmF3CQEFYXNJbnQBCQD8BwQFC3Bvb2xBZGRyZXNzAhxnZXRBY2NCYWxhbmNlV3JhcHBlclJFQURPTkxZCQDMCAIFDHByQXNzZXRJZFN0cgUDbmlsBQNuaWwED2FtQmFsYW5jZVJhd1gxOAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAhR0b1gxOFdyYXBwZXJSRUFET05MWQkAzAgCBQxhbUJhbGFuY2VSYXcJAMwIAgULYW10QXNzZXREY20FA25pbAUDbmlsBA9wckJhbGFuY2VSYXdYMTgJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIUdG9YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgUMcHJCYWxhbmNlUmF3CQDMCAIFDXByaWNlQXNzZXREY20FA25pbAUDbmlsBAtjdXJQcmljZVgxOAMJAAACBQ1wb29sTFBCYWxhbmNlAAAFCnplcm9CaWdJbnQJAKcDAQkBCGFzU3RyaW5nAQkA/AcEBQtwb29sQWRkcmVzcwIeY2FsY1ByaWNlQmlnSW50V3JhcHBlclJFQURPTkxZCQDMCAIJAKYDAQUPcHJCYWxhbmNlUmF3WDE4CQDMCAIJAKYDAQUPYW1CYWxhbmNlUmF3WDE4BQNuaWwFA25pbAQIY3VyUHJpY2UJAQVhc0ludAEJAPwHBAULcG9vbEFkZHJlc3MCFmZyb21YMThXcmFwcGVyUkVBRE9OTFkJAMwIAgkApgMBBQtjdXJQcmljZVgxOAkAzAgCBQVNVUxUOAUDbmlsBQNuaWwED2luUHJBc3NldEFtdFgxOAkApwMBCQEIYXNTdHJpbmcBCQD8BwQFC3Bvb2xBZGRyZXNzAhR0b1gxOFdyYXBwZXJSRUFET05MWQkAzAgCBQxpblByQXNzZXRBbXQJAMwIAgUNcHJpY2VBc3NldERjbQUDbmlsBQNuaWwED2luQW1Bc3NldEFtdFgxOAkAvAIDBQ9pblByQXNzZXRBbXRYMTgFBk1VTFQxOAULY3VyUHJpY2VYMTgEDGluQW1Bc3NldEFtdAkBBWFzSW50AQkA/AcEBQtwb29sQWRkcmVzcwIWZnJvbVgxOFdyYXBwZXJSRUFET05MWQkAzAgCCQCmAwEFD2luQW1Bc3NldEFtdFgxOAkAzAgCBQthbXRBc3NldERjbQUDbmlsBQNuaWwEA3JlcwkA/AcEBQtwb29sQWRkcmVzcwIjZXN0aW1hdGVQdXRPcGVyYXRpb25XcmFwcGVyUkVBRE9OTFkJAMwIAgIACQDMCAIAoMIeCQDMCAIFDGluQW1Bc3NldEFtdAkAzAgCBQlhbUFzc2V0SWQJAMwIAgUMaW5QckFzc2V0QW10CQDMCAIFCXByQXNzZXRJZAkAzAgCAgAJAMwIAgYJAMwIAgcFA25pbAUDbmlsBA0kdDAyNTU1MzI1OTA2BAckbWF0Y2gwBQNyZXMDAwMJAAECCAUHJG1hdGNoMAJfMQIDSW50AwkAAQIIBQckbWF0Y2gwAl8zAgNJbnQDCQABAggFByRtYXRjaDACXzQCA0ludAMJAAECCAUHJG1hdGNoMAJfNQIDSW50CQABAggFByRtYXRjaDACXzYCA0ludAcHBwcJAAACCQDGCgEFByRtYXRjaDAADQcECWNhbGNMcEFtdAgFByRtYXRjaDACXzEEDGN1clByaWNlQ2FsYwgFByRtYXRjaDACXzMECWFtQmFsYW5jZQgFByRtYXRjaDACXzQECXByQmFsYW5jZQgFByRtYXRjaDACXzUECmxwRW1pc3Npb24IBQckbWF0Y2gwAl82CQCXCgUFCWNhbGNMcEFtdAUMY3VyUHJpY2VDYWxjBQlhbUJhbGFuY2UFCXByQmFsYW5jZQUKbHBFbWlzc2lvbgkAAgECE0NvdWxkbid0IGNhc3QgdHlwZXMECWNhbGNMcEFtdAgFDSR0MDI1NTUzMjU5MDYCXzEEDGN1clByaWNlQ2FsYwgFDSR0MDI1NTUzMjU5MDYCXzIECWFtQmFsYW5jZQgFDSR0MDI1NTUzMjU5MDYCXzMECXByQmFsYW5jZQgFDSR0MDI1NTUzMjU5MDYCXzQECmxwRW1pc3Npb24IBQ0kdDAyNTU1MzI1OTA2Al81CQCUCgIFA25pbAkAuQkCCQDMCAICECVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQljYWxjTHBBbXQJAMwIAgkApAMBBQhjdXJQcmljZQkAzAgCCQCkAwEFCWFtQmFsYW5jZQkAzAgCCQCkAwEFCXByQmFsYW5jZQkAzAgCCQCkAwEFCmxwRW1pc3Npb24JAMwIAgUKcG9vbFN0YXR1cwkAzAgCCQCkAwEFDGluQW1Bc3NldEFtdAkAzAgCCQCkAwEFDGluUHJBc3NldEFtdAUDbmlsBQNTRVABaQEXcG9vbEV2YWx1YXRlR2V0UkVBRE9OTFkCEHBheW1lbnRMcEFzc2V0SWQMcGF5bWVudExwQW10BAtwb29sQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNjIpAQkBGGdldFN0cmluZ0J5QWRkcmVzc09yRmFpbAIFC2ZhY3RvcnlEYXBwCQEma2V5RmFjdG9yeUxwQXNzZXRUb1Bvb2xDb250cmFjdEFkZHJlc3MBBRBwYXltZW50THBBc3NldElkBANyZXMJAPwHBAULcG9vbEFkZHJlc3MCI2VzdGltYXRlR2V0T3BlcmF0aW9uV3JhcHBlclJFQURPTkxZCQDMCAICAAkAzAgCBRBwYXltZW50THBBc3NldElkCQDMCAIFDHBheW1lbnRMcEFtdAkAzAgCCQClCAEFC3Bvb2xBZGRyZXNzBQNuaWwFA25pbAQNJHQwMjY2MDEyNzAxOAQHJG1hdGNoMAUDcmVzAwMDCQABAggFByRtYXRjaDACXzECA0ludAMJAAECCAUHJG1hdGNoMAJfMgIDSW50AwkAAQIIBQckbWF0Y2gwAl81AgNJbnQDCQABAggFByRtYXRjaDACXzYCA0ludAMJAAECCAUHJG1hdGNoMAJfNwIDSW50AwkAAQIIBQckbWF0Y2gwAl84AgZTdHJpbmcJAAECCAUHJG1hdGNoMAJfOQIGU3RyaW5nBwcHBwcHCQAAAgkAxgoBBQckbWF0Y2gwAAoHBAhvdXRBbUFtdAgFByRtYXRjaDACXzEECG91dFByQW10CAUHJG1hdGNoMAJfMgQJYW1CYWxhbmNlCAUHJG1hdGNoMAJfNQQJcHJCYWxhbmNlCAUHJG1hdGNoMAJfNgQKbHBFbWlzc2lvbggFByRtYXRjaDACXzcECGN1clByaWNlCAUHJG1hdGNoMAJfOAQKcG9vbFN0YXR1cwgFByRtYXRjaDACXzkJAJkKBwUIb3V0QW1BbXQFCG91dFByQW10BQlhbUJhbGFuY2UFCXByQmFsYW5jZQUKbHBFbWlzc2lvbgUIY3VyUHJpY2UFCnBvb2xTdGF0dXMJAAIBAhNDb3VsZG4ndCBjYXN0IHR5cGVzBAhvdXRBbUFtdAgFDSR0MDI2NjAxMjcwMTgCXzEECG91dFByQW10CAUNJHQwMjY2MDEyNzAxOAJfMgQJYW1CYWxhbmNlCAUNJHQwMjY2MDEyNzAxOAJfMwQJcHJCYWxhbmNlCAUNJHQwMjY2MDEyNzAxOAJfNAQKbHBFbWlzc2lvbggFDSR0MDI2NjAxMjcwMTgCXzUECGN1clByaWNlCAUNJHQwMjY2MDEyNzAxOAJfNgQKcG9vbFN0YXR1cwgFDSR0MDI2NjAxMjcwMTgCXzcJAJQKAgUDbmlsCQC5CQIJAMwIAgIOJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBBQhvdXRBbUFtdAkAzAgCCQCkAwEFCG91dFByQW10CQDMCAIJAKQDAQUJYW1CYWxhbmNlCQDMCAIJAKQDAQUJcHJCYWxhbmNlCQDMCAIJAKQDAQUKbHBFbWlzc2lvbgkAzAgCBQhjdXJQcmljZQkAzAgCBQpwb29sU3RhdHVzBQNuaWwFA1NFUAFpARNnd3hVc2VySW5mb1JFQURPTkxZAQt1c2VyQWRkcmVzcwQPZ3d4VXNlckluZm9MSVNUCQEJYXNBbnlMaXN0AQkA/AcEBQxib29zdGluZ0RhcHACE2d3eFVzZXJJbmZvUkVBRE9OTFkJAMwIAgULdXNlckFkZHJlc3MFA25pbAUDbmlsBAlnd3hBbW91bnQJAQVhc0ludAEJAJEDAgUPZ3d4VXNlckluZm9MSVNUAAAJAJQKAgUDbmlsCQC5CQIJAMwIAgICJWQJAMwIAgkApAMBBQlnd3hBbW91bnQFA25pbAUDU0VQAWkBFXVuc3Rha2VBbmRHZXRPbmVUa25WMgQLcG9vbEFkZHJlc3MNdW5zdGFrZUFtb3VudApvdXRBc3NldElkDG1pbk91dEFtb3VudAQDaW52CQD8BwQJARFAZXh0ck5hdGl2ZSgxMDYyKQEFC3Bvb2xBZGRyZXNzAhV1bnN0YWtlQW5kR2V0T25lVGtuVjIJAMwIAgUNdW5zdGFrZUFtb3VudAkAzAgCBQpvdXRBc3NldElkCQDMCAIFDG1pbk91dEFtb3VudAUDbmlsBQNuaWwDCQAAAgUDaW52BQNpbnYJAJQKAgUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBE2dldEtleXNCdWxrSW50ZXJuYWwDC2N1cnJlbnRJdGVyBGtleXMGcmVzQWNjAwkAAAIFC2N1cnJlbnRJdGVyCQCQAwEFBGtleXMJAJQKAgUDbmlsBQZyZXNBY2MEAWsJALUJAgkAkQMCBQRrZXlzBQtjdXJyZW50SXRlcgICKysEBGFkZHIJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUBawAABANrZXkJAJEDAgUBawABBAR0eXBlCQCRAwIFAWsAAgQDdmFsCQEGZ2V0S2V5AwUEYWRkcgUDa2V5BQR0eXBlBANyZXMJAM0IAgUGcmVzQWNjBQN2YWwEA2ludgkA/AcEBQR0aGlzAhNnZXRLZXlzQnVsa0ludGVybmFsCQDMCAIJAGQCBQtjdXJyZW50SXRlcgABCQDMCAIFBGtleXMJAMwIAgUDcmVzBQNuaWwFA25pbAMJAAACBQNpbnYFA2ludgkAlAoCBQNuaWwFA2ludgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtnZXRLZXlzQnVsawEEa2V5cwQDcmVzCQD8BwQFBHRoaXMCE2dldEtleXNCdWxrSW50ZXJuYWwJAMwIAgAACQDMCAIFBGtleXMJAMwIAgUDbmlsBQNuaWwFA25pbAkAlAoCBQNuaWwFA3JlcwECdHgBBnZlcmlmeQAED3RhcmdldFB1YmxpY0tleQQHJG1hdGNoMAkBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQAAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAnBrBQckbWF0Y2gwBQJwawMJAAECBQckbWF0Y2gwAgRVbml0CAUCdHgPc2VuZGVyUHVibGljS2V5CQACAQILTWF0Y2ggZXJyb3IJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAFD3RhcmdldFB1YmxpY0tleSXGwXY=", "height": 2562879, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9uyTpTxW5gw1NqncDXctTCotVBvkzHNyfyBehPHZheEy Next: none Diff:
OldNewDifferences
8383 func F () = "%s%s__config__factoryAddress"
8484
8585
86-func G () = "%s__managerPublicKey"
86+let G = 1
87+
88+let H = 2
89+
90+let I = 3
91+
92+let J = 4
93+
94+let K = 5
95+
96+let L = 6
97+
98+let M = 7
99+
100+let N = 8
101+
102+func O () = "%s__factoryConfig"
87103
88104
89-func H () = "%s__pendingManagerPublicKey"
105+func P (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
90106
91107
92-let I = 1
93-
94-let J = 2
95-
96-let K = 3
97-
98-let L = 4
99-
100-let M = 5
101-
102-let N = 6
103-
104-let O = 7
105-
106-let P = 8
107-
108-func Q () = "%s__factoryConfig"
108+func R () = "%s__lpTokensList"
109109
110110
111-func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
111+func S (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
112112
113113
114-func T () = "%s__lpTokensList"
114+func T (U) = makeString(["%s%s", "poolWeight", U], e)
115115
116116
117-func U (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
117+func V () = "%s__managerVaultAddress"
118118
119119
120-func V (W) = makeString(["%s%s", "poolWeight", W], e)
120+func W () = "%s__managerPublicKey"
121121
122122
123123 func X () = addressFromStringValue(r(F()))
124124
125125
126-func Y () = split(valueOrElse(getString(X(), T()), ""), e)
126+func Y () = split(valueOrElse(getString(X(), R()), ""), e)
127127
128128
129-func Z (aa) = split(t(aa, Q()), e)
129+func Z (aa) = split(t(aa, O()), e)
130130
131131
132-func ab (ac) = addressFromStringValue(ac[J])
132+func ab (ac) = addressFromStringValue(ac[H])
133133
134134
135-func ad (ac) = addressFromStringValue(ac[M])
135+func ad (ac) = addressFromStringValue(ac[K])
136136
137137
138-func ae (ac) = addressFromStringValue(ac[I])
138+func ae (ac) = addressFromStringValue(ac[G])
139139
140140
141-func af (ac) = addressFromStringValue(ac[P])
141+func af (ac) = addressFromStringValue(ac[N])
142142
143143
144-func ag () = "%s__config"
144+func ag () = addressFromStringValue(getStringValue(V()))
145145
146146
147-func ah () = "%s%s__stats__activeTotalLocked"
147+func ah () = "%s__config"
148148
149149
150-func ai () = "%s%s__stats__locksDurationSumInBlocks"
150+func ai () = "%s%s__stats__activeTotalLocked"
151151
152152
153-func aj () = "%s%s__stats__locksCount"
153+func aj () = "%s%s__stats__locksDurationSumInBlocks"
154154
155155
156-func ak () = "%s%s__stats__activeUsersCount"
156+func ak () = "%s%s__stats__locksCount"
157157
158158
159-func al (am) = makeString(["%s%s%s__mapping__user2num", am], e)
159+func al () = "%s%s__stats__activeUsersCount"
160160
161161
162-func an (ao) = makeString(["%s%s%s__mapping__num2user", ao], e)
162+func am (an) = makeString(["%s%s%s__mapping__user2num", an], e)
163163
164164
165-func ap (aq) = makeString(["%s%d%s__paramByUserNum", aq, "amount"], e)
165+func ao (ap) = makeString(["%s%s%s__mapping__num2user", ap], e)
166166
167167
168-func ar (aq) = makeString(["%s%d%s__paramByUserNum", aq, "start"], e)
168+func aq (ar) = makeString(["%s%d%s__paramByUserNum", ar, "amount"], e)
169169
170170
171-func as (aq) = makeString(["%s%d%s__paramByUserNum", aq, "duration"], e)
171+func as (ar) = makeString(["%s%d%s__paramByUserNum", ar, "start"], e)
172172
173173
174-func at (aq) = makeString(["%s%d%s__paramByUserNum", aq, "k"], e)
174+func at (ar) = makeString(["%s%d%s__paramByUserNum", ar, "duration"], e)
175175
176176
177-func au (aq) = makeString(["%s%d%s__paramByUserNum", aq, "b"], e)
177+func au (ar) = makeString(["%s%d%s__paramByUserNum", ar, "k"], e)
178178
179179
180-func av (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "k", aw], e)
180+func av (ar) = makeString(["%s%d%s__paramByUserNum", ar, "b"], e)
181181
182182
183-func ax (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "b", aw], e)
183+func aw (ar,ax) = makeString(["%s%d%s%d__paramByPeriod", ar, "k", ax], e)
184184
185185
186-func ay (aq) = makeString(["%s%d__userBoostEmissionLastInt", aq], e)
186+func ay (ar,ax) = makeString(["%s%d%s%d__paramByPeriod", ar, "b", ax], e)
187187
188188
189-func az (aq) = makeString(["%s%d__maxBoostInt", aq], e)
189+func az (ar) = makeString(["%s%d__userBoostEmissionLastInt", ar], e)
190190
191191
192-func aA () = "%s%s__maxBoostInt__total"
192+func aA (ar) = makeString(["%s%d__maxBoostInt", ar], e)
193193
194194
195-func aB (aq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aq], e)
195+func aB () = "%s%s__maxBoostInt__total"
196196
197197
198-func aC (aq) = makeString(["%s%d__userBoostClaimed", aq], e)
198+func aC (ar) = makeString(["%s%d__userBoostAvaliableToClaimTotal", ar], e)
199199
200200
201-func aD () = "%s%s__gwxCached__total"
201+func aD (ar) = makeString(["%s%d__userBoostClaimed", ar], e)
202202
203203
204-func aE (aF,aG) = makeString(["%s%s%s__staked", aF, aG], e)
204+func aE () = "%s%s__gwxCached__total"
205205
206206
207-func aH (aG) = ("%s%s%s__staked__total__" + aG)
207+func aF (aG,aH) = makeString(["%s%s%s__staked", aG, aH], e)
208208
209209
210-func aI (aG,aF) = makeString(["%s%s%s__claimed", aF, aG], e)
210+func aI (aH) = ("%s%s%s__staked__total__" + aH)
211211
212212
213-func aJ (aG,aF) = makeString(["%s%s%s__claimedMinReward", aF, aG], e)
213+func aJ (aH,aG) = makeString(["%s%s%s__claimed", aG, aH], e)
214214
215215
216-func aK (aG,aF) = makeString(["%s%s%s__claimedBoostReward", aF, aG], e)
216+func aK (aH,aG) = makeString(["%s%s%s__claimedMinReward", aG, aH], e)
217217
218218
219-func aL (aM,s) = valueOrElse(getInteger(aM, s), 0)
219+func aL (aH,aG) = makeString(["%s%s%s__claimedBoostReward", aG, aH], e)
220220
221221
222-func aN () = "%s%s__ratePerBlock__current"
222+func aM (aN,s) = valueOrElse(getInteger(aN, s), 0)
223223
224224
225-func aO () = "%s%s__ratePerBlockMax__current"
225+func aO () = "%s%s__ratePerBlock__current"
226226
227227
228-func aP () = "%s%s__emission__startBlock"
228+func aP () = "%s%s__ratePerBlockMax__current"
229229
230230
231-func aQ () = "%s%s__emission__duration"
231+func aQ () = "%s%s__emission__startBlock"
232232
233233
234-func aR () = "%s%s__emission__endBlock"
234+func aR () = "%s%s__emission__duration"
235235
236236
237-func aS () = "%s__addonAddr"
237+func aS () = "%s%s__emission__endBlock"
238238
239239
240240 let aT = X()
243243
244244 let aV = ad(aU)
245245
246-let aM = ae(aU)
246+let aN = ae(aU)
247247
248248 let aW = af(aU)
249249
266266
267267
268268 func bc (bd) = {
269- let be = t(aT, U(bd))
269+ let be = t(aT, S(bd))
270270 let bf = b
271- let bg = getIntegerValue(aT, V(be))
272- let bh = w(aV, aN())
273- let bi = w(aV, aO())
274- let bj = 3
271+ let bg = getIntegerValue(aT, T(be))
272+ let bh = w(aV, aO())
273+ let bi = w(aV, aP())
274+ let bj = {
275+ let ba = invoke(aV, "getBoostCoeffREADONLY", nil, nil)
276+ if ($isInstanceOf(ba, "Int"))
277+ then ba
278+ else throw(($getType(ba) + " couldn't be cast to Int"))
279+ }
275280 let bk = (fraction(bh, bg, bf) / bj)
276281 let bl = fraction(bi, bg, bf)
277282 let bm = (bj * b)
278- let bn = v(aM, aH(bd))
283+ let bn = v(aN, aI(bd))
279284 [bk, bm, bn]
280285 }
281286
297302
298303
299304 func bx () = {
300- let z = getString(G())
305+ let by = ag()
306+ let z = getString(by, W())
301307 if ($isInstanceOf(z, "String"))
302308 then {
303- let by = z
304- fromBase58String(by)
305- }
306- else if ($isInstanceOf(z, "Unit"))
307- then unit
308- else throw("Match error")
309- }
310-
311-
312-func bz () = {
313- let z = getString(H())
314- if ($isInstanceOf(z, "String"))
315- then {
316- let by = z
317- fromBase58String(by)
309+ let bz = z
310+ fromBase58String(bz)
318311 }
319312 else if ($isInstanceOf(z, "Unit"))
320313 then unit
323316
324317
325318 func bA (bB) = {
326- let bC = throw("Permission denied")
327319 let z = bx()
328320 if ($isInstanceOf(z, "ByteVector"))
329321 then {
330- let bD = z
331- if ((bB.callerPublicKey == bD))
332- then true
333- else bC
322+ let bC = z
323+ (bB.callerPublicKey == bC)
334324 }
335325 else if ($isInstanceOf(z, "Unit"))
336- then if ((bB.caller == this))
337- then true
338- else bC
326+ then (bB.caller == this)
339327 else throw("Match error")
340328 }
341329
342330
331+func bD (bB) = if (bA(bB))
332+ then true
333+ else throw("permission denied")
334+
335+
343336 @Callable(bB)
344337 func constructor (bE) = {
345- let bF = bA(bB)
338+ let bF = bD(bB)
346339 if ((bF == bF))
347340 then [StringEntry(F(), bE)]
348341 else throw("Strict value is not equal to itself.")
356349 let bh = bG[0]
357350 let bm = bG[1]
358351 let bn = bG[2]
359- $Tuple2(nil, makeString(["%d%d%d", toString(bh), toString(bm), toString(bn)], e))
352+ let bH = {
353+ let ba = invoke(aX, "getVotingResultStakedREADONLY", [bd], nil)
354+ if ($isInstanceOf(ba, "Int"))
355+ then ba
356+ else throw(($getType(ba) + " couldn't be cast to Int"))
357+ }
358+ $Tuple2(nil, makeString(["%d%d%d%d", toString(bh), toString(bm), toString(bn), toString(bH)], e))
360359 }
361360
362361
363362
364363 @Callable(bB)
365-func currentUserRewardRateREADONLY (bd,am) = {
364+func currentUserRewardRateREADONLY (bd,an) = {
366365 let bG = bc(bd)
367366 let bh = bG[0]
368367 let bm = bG[1]
369368 let bn = bG[2]
370- let bH = v(aM, aE(am, bd))
371- let bI = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
372- let bJ = valueOrErrorMessage(parseInt(bI[5]), "couldn't parse minRewardPart")
373- let bK = valueOrErrorMessage(parseInt(bI[6]), "couldn't parse boostRewardPart")
374- let bL = bI[7]
375- let bM = if ((bK == 0))
369+ let bI = v(aN, aF(an, bd))
370+ let bJ = split(D(invoke(aN, "claimWxREADONLY", [bd, an], nil)), e)
371+ let bK = valueOrErrorMessage(parseInt(bJ[5]), "couldn't parse minRewardPart")
372+ let bL = valueOrErrorMessage(parseInt(bJ[6]), "couldn't parse boostRewardPart")
373+ let bM = bJ[7]
374+ let bN = if ((bL == 0))
376375 then (1 * b)
377- else fraction((bJ + bK), b, bJ)
378- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bH), toString(bM), bL], e))
376+ else fraction((bK + bL), b, bK)
377+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bI), toString(bN), bM], e))
379378 }
380379
381380
382381
383382 @Callable(bB)
384-func calcBoostBulkInternalREADONLY (bN,bO,bP,bQ,bR,bS,bT) = if ((bN == size(bO)))
385- then $Tuple2(nil, bT)
383+func calcBoostBulkInternalREADONLY (bO,bP,bQ,bR,bS,bT,bU) = if ((bO == size(bP)))
384+ then $Tuple2(nil, bU)
386385 else {
387- let bU = bO[bN]
388- let bV = bP[bN]
389- let bW = bQ[bN]
390- let bX = bR[bN]
391- let bY = {
392- let ba = invoke(this, "calcBoostREADONLY", [bU, bV, bW, bX, bS], nil)
386+ let bV = bP[bO]
387+ let bW = bQ[bO]
388+ let bX = bR[bO]
389+ let bY = bS[bO]
390+ let bZ = {
391+ let ba = invoke(this, "calcBoostREADONLY", [bV, bW, bX, bY, bT], nil)
393392 if ($isInstanceOf(ba, "String"))
394393 then ba
395394 else throw(($getType(ba) + " couldn't be cast to String"))
396395 }
397- let bZ = (bT :+ bY)
398- let ca = {
399- let ba = invoke(this, "calcBoostBulkInternalREADONLY", [(bN + 1), bO, bP, bQ, bR, bS, bZ], nil)
396+ let ca = (bU :+ bZ)
397+ let cb = {
398+ let ba = invoke(this, "calcBoostBulkInternalREADONLY", [(bO + 1), bP, bQ, bR, bS, bT, ca], nil)
400399 if ($isInstanceOf(ba, "List[Any]"))
401400 then ba
402401 else throw(($getType(ba) + " couldn't be cast to List[Any]"))
403402 }
404- if ((ca == ca))
405- then $Tuple2(nil, ca)
403+ if ((cb == cb))
404+ then $Tuple2(nil, cb)
406405 else throw("Strict value is not equal to itself.")
407406 }
408407
409408
410409
411410 @Callable(bB)
412-func calcBoostBulkREADONLY (bU,bV,bW,bX,bS) = {
413- let bZ = invoke(this, "calcBoostBulkInternalREADONLY", [0, bU, bV, bW, bX, bS, nil], nil)
414- $Tuple2(nil, bZ)
411+func calcBoostBulkREADONLY (bV,bW,bX,bY,bT) = {
412+ let ca = invoke(this, "calcBoostBulkInternalREADONLY", [0, bV, bW, bX, bY, bT, nil], nil)
413+ $Tuple2(nil, ca)
415414 }
416415
417416
418417
419418 @Callable(bB)
420-func calcBoostREADONLY (bU,bV,bW,bX,bS) = {
421- let cb = aW
422- let cc = "empty"
423- let cd = parseIntValue(split(t(aX, ag()), e)[4])
424- let aG = if ((bX == ""))
425- then cc
426- else bX
427- let aF = if ((bS == ""))
428- then cc
429- else bS
430- let ce = valueOrElse(getString(aX, al(bS)), cc)
431- let cf = valueOrElse(getInteger(aX, ap(ce)), 0)
432- let cg = valueOrElse(getInteger(aX, ar(ce)), height)
433- let bq = valueOrElse(getInteger(aX, as(ce)), 0)
434- let ch = (cg + bq)
435- let ci = max([(ch - height), 0])
436- let cj = (cf + bU)
437- let ck = min([(ci + bV), cd])
438- let cl = B(x(invoke(aX, "gwxUserInfoREADONLY", [aF], nil))[0])
439- let cm = bo(cj, ck, cd)[0]
440- let cn = x(invoke(cb, "calcGwxParamsREADONLY", [cm, height, ck], nil))
441- let co = (cm - cl)
442- let cp = B(cn[0])
443- let cq = B(cn[1])
444- let aw = toString(B(cn[2]))
445- let cr = aA()
446- let cs = ((cm * ck) / 2)
447- let ct = v(aX, cr)
448- let cu = {
419+func calcBoostREADONLY (bV,bW,bX,bY,bT) = {
420+ let cc = {
421+ let ba = invoke(aV, "getBoostCoeffREADONLY", nil, nil)
422+ if ($isInstanceOf(ba, "Int"))
423+ then ba
424+ else throw(($getType(ba) + " couldn't be cast to Int"))
425+ }
426+ let cd = aW
427+ let ce = "empty"
428+ let cf = parseIntValue(split(t(aX, ah()), e)[4])
429+ let aH = if ((bY == ""))
430+ then ce
431+ else bY
432+ let aG = if ((bT == ""))
433+ then ce
434+ else bT
435+ let cg = valueOrElse(getString(aX, am(bT)), ce)
436+ let ch = valueOrElse(getInteger(aX, aq(cg)), 0)
437+ let ci = valueOrElse(getInteger(aX, as(cg)), height)
438+ let bq = valueOrElse(getInteger(aX, at(cg)), 0)
439+ let cj = (ci + bq)
440+ let ck = max([(cj - height), 0])
441+ let cl = (ch + bV)
442+ let cm = min([(ck + bW), cf])
443+ let cn = B(x(invoke(aX, "gwxUserInfoREADONLY", [aG], nil))[0])
444+ let co = bo(cl, cm, cf)[0]
445+ let cp = {
449446 let ba = invoke(aX, "getTotalCachedGwxREADONLY", nil, nil)
450447 if ($isInstanceOf(ba, "Int"))
451448 then ba
452449 else throw(($getType(ba) + " couldn't be cast to Int"))
453450 }
454- let cv = 1000
455- let cw = (w(aV, aN()) * cv)
456- let cx = aE(aF, aG)
457- let cy = aH(aG)
458- let cz = aL(aM, cx)
459- let cA = aL(aM, cy)
460- let cB = (cz + bW)
461- let cC = (cA + bW)
462- let bg = if ((aG != cc))
451+ let cq = 1000
452+ let cr = (w(aV, aO()) * cq)
453+ let cs = aF(aG, aH)
454+ let ct = aI(aH)
455+ let cu = aM(aN, cs)
456+ let cv = aM(aN, ct)
457+ let bg = if ((aH != ce))
463458 then {
464- let be = valueOrErrorMessage(getString(aT, R(aG)), ("unsupported lp asset " + aG))
465- getIntegerValue(aT, V(be))
459+ let be = valueOrErrorMessage(getString(aT, P(aH)), ("unsupported lp asset " + aH))
460+ getIntegerValue(aT, T(be))
466461 }
467462 else 0
468- let cD = fraction(cw, bg, (f * 3))
469- let cE = if ((cC != 0))
470- then fraction(cD, b, cC)
463+ let cw = fraction(cr, bg, (f * cc))
464+ let cx = if ((cv != 0))
465+ then fraction(cw, b, cv)
471466 else 0
472- let cF = fraction(cE, cB, b)
473- let cG = (cD * 2)
474- let cH = fraction(cm, cG, (cu + co))
475- let cI = min([cH, (cF * 2)])
476- let cJ = if ((cF == 0))
467+ let cy = fraction(cx, cu, b)
468+ let cz = (cw * (cc - 1))
469+ let cA = fraction(cn, cz, cp)
470+ let cB = min([cA, (cy * (cc - 1))])
471+ let cC = if ((cy == 0))
477472 then (1 * b)
478- else fraction((cI + cF), b, cF)
479- $Tuple2(nil, makeString(["%d%d%s", toString(cm), toString(cJ), "d"], e))
473+ else fraction((cB + cy), b, cy)
474+ $Tuple2(nil, makeString(["%d%d%s", toString(co), toString(cC), "d"], e))
480475 }
481476
482477
483478
484479 @Callable(bB)
485480 func wxEmissionStatsREADONLY () = {
486- let cK = toString(b)
487- let cL = "1"
488- let bh = w(aV, aN())
489- let cM = w(aV, aP())
490- let cN = if ((cM > height))
481+ let cD = toString(b)
482+ let cE = "1"
483+ let bh = w(aV, aO())
484+ let cF = w(aV, aQ())
485+ let cG = if ((cF > height))
491486 then 0
492- else (height - cM)
493- let cO = (1440 * 365)
494- let cP = (201000000 * b)
495- let cQ = if ((cN > cO))
496- then cP
497- else fraction(cP, cN, cO)
498- let cR = ((bh * cN) + cQ)
499- let cS = v(aX, ah())
500- let cT = v(aX, ai())
501- let cU = v(aX, aj())
502- $Tuple2(nil, makeString(["%d%d%d%d", toString(cR), toString(cS), toString(cT), toString(cU)], e))
487+ else (height - cF)
488+ let cH = (1440 * 365)
489+ let cI = (201000000 * b)
490+ let cJ = if ((cG > cH))
491+ then cI
492+ else fraction(cI, cG, cH)
493+ let cK = ((bh * cG) + cJ)
494+ let cL = v(aX, ai())
495+ let cM = v(aX, aj())
496+ let cN = v(aX, ak())
497+ $Tuple2(nil, makeString(["%d%d%d%d", toString(cK), toString(cL), toString(cM), toString(cN)], e))
503498 }
504499
505500
506501
507502 @Callable(bB)
508-func poolStatsREADONLY (cV) = {
509- let aZ = addressFromStringValue(t(aT, U(cV)))
510- let cW = {
503+func poolStatsREADONLY (cO) = {
504+ let aZ = addressFromStringValue(t(aT, S(cO)))
505+ let cP = {
511506 let ba = invoke(aT, "getPoolStatusREADONLY", [toString(aZ)], nil)
512507 if ($isInstanceOf(ba, "Int"))
513508 then ba
514509 else throw(($getType(ba) + " couldn't be cast to Int"))
515510 }
516- let cX = "%d%d%d%d%d%d%d%d%d%s"
517- if ((cW == 4))
518- then $Tuple2(nil, makeString([cX, toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(false)], e))
511+ let cQ = "%d%d%d%d%d%d%d%d%d%s"
512+ if ((cP == 4))
513+ then $Tuple2(nil, makeString([cQ, toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(false)], e))
519514 else {
520- let cY = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
521- let bd = fromBase58String(D(cY[j]))
522- let cZ = D(cY[k])
523- let da = D(cY[l])
524- let db = D(cY[o])
525- let dc = D(cY[p])
526- let dd = parseIntValue(D(cY[m]))
527- let de = parseIntValue(D(cY[n]))
528- let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
529- let dg = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [cZ], nil))
530- let dh = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [da], nil))
531- let di = if ((df == 0))
515+ let cR = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
516+ let bd = fromBase58String(D(cR[j]))
517+ let cS = D(cR[k])
518+ let cT = D(cR[l])
519+ let cU = D(cR[o])
520+ let cV = D(cR[p])
521+ let cW = parseIntValue(D(cR[m]))
522+ let cX = parseIntValue(D(cR[n]))
523+ let cY = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
524+ let cZ = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [cS], nil))
525+ let da = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [cT], nil))
526+ let db = if ((cY == 0))
532527 then [toString(g), toString(g), toString(g)]
533- else x(invoke(aZ, "calcPricesWrapperREADONLY", [dg, dh, df], nil))
534- let dj = 0
535- let dk = B(invoke(aZ, "fromX18WrapperREADONLY", [di[1], b], nil))
536- let dl = B(invoke(aZ, "fromX18WrapperREADONLY", [di[2], b], nil))
537- let bg = getIntegerValue(aT, V(toString(aZ)))
538- let dm = aY(aZ)
539- let dn = bb(aZ)
540- let do = {
528+ else x(invoke(aZ, "calcPricesWrapperREADONLY", [cZ, da, cY], nil))
529+ let dc = 0
530+ let dd = B(invoke(aZ, "fromX18WrapperREADONLY", [db[1], b], nil))
531+ let de = B(invoke(aZ, "fromX18WrapperREADONLY", [db[2], b], nil))
532+ let bg = getIntegerValue(aT, T(toString(aZ)))
533+ let df = aY(aZ)
534+ let dg = bb(aZ)
535+ let dh = {
541536 let ba = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(aZ)], nil)
542537 if ($isInstanceOf(ba, "Boolean"))
543538 then ba
544539 else throw(($getType(ba) + " couldn't be cast to Boolean"))
545540 }
546- let dp = !(do)
547- $Tuple2(nil, makeString([cX, toString(dg), toString(dh), toString(df), toString(dj), toString(dk), toString(dl), toString(bg), toString(dm), toString(dn), toString(dp)], e))
541+ let di = !(dh)
542+ $Tuple2(nil, makeString([cQ, toString(cZ), toString(da), toString(cY), toString(dc), toString(dd), toString(de), toString(bg), toString(df), toString(dg), toString(di)], e))
548543 }
549544 }
550545
551546
552547
553548 @Callable(bB)
554-func poolEvaluatePutByAmountAssetREADONLY (cV,dq) = {
555- let aZ = addressFromStringValue(t(aT, U(cV)))
556- let cY = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
557- let bd = fromBase58String(D(cY[j]))
558- let dr = D(cY[k])
559- let ds = fromBase58String(dr)
560- let dt = D(cY[l])
561- let du = fromBase58String(dt)
562- let dd = parseIntValue(D(cY[m]))
563- let de = parseIntValue(D(cY[n]))
564- let dv = D(cY[i])
565- let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
566- let dg = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dr], nil))
567- let dh = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dt], nil))
568- let dw = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dg, dd], nil)))
569- let dx = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dh, de], nil)))
570- let dy = if ((df == 0))
549+func poolEvaluatePutByAmountAssetREADONLY (cO,dj) = {
550+ let aZ = addressFromStringValue(t(aT, S(cO)))
551+ let cR = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
552+ let bd = fromBase58String(D(cR[j]))
553+ let dk = D(cR[k])
554+ let dl = fromBase58String(dk)
555+ let dm = D(cR[l])
556+ let dn = fromBase58String(dm)
557+ let cW = parseIntValue(D(cR[m]))
558+ let cX = parseIntValue(D(cR[n]))
559+ let do = D(cR[i])
560+ let cY = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
561+ let cZ = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dk], nil))
562+ let da = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dm], nil))
563+ let dp = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [cZ, cW], nil)))
564+ let dq = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [da, cX], nil)))
565+ let dr = if ((cY == 0))
571566 then g
572- else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dx), toString(dw)], nil)))
573- let dj = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dy), b], nil))
574- let dz = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dq, dd], nil)))
575- let dA = fraction(dz, dy, d)
576- let dB = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dA), de], nil))
577- let bZ = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dq, ds, dB, du, "", true, false], nil)
578- let dC = {
579- let z = bZ
567+ else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dq), toString(dp)], nil)))
568+ let dc = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dr), b], nil))
569+ let ds = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dj, cW], nil)))
570+ let dt = fraction(ds, dr, d)
571+ let du = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dt), cX], nil))
572+ let ca = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dj, dl, du, dn, "", true, false], nil)
573+ let dv = {
574+ let z = ca
580575 if (if (if ($isInstanceOf(z._1, "Int"))
581576 then if ($isInstanceOf(z._3, "Int"))
582577 then if ($isInstanceOf(z._4, "Int"))
589584 then (size(z) == 13)
590585 else false)
591586 then {
592- let dD = z._1
593- let dE = z._3
594- let dF = z._4
595- let dG = z._5
596- let dH = z._6
597- $Tuple5(dD, dE, dF, dG, dH)
587+ let dw = z._1
588+ let dx = z._3
589+ let dy = z._4
590+ let dz = z._5
591+ let dA = z._6
592+ $Tuple5(dw, dx, dy, dz, dA)
598593 }
599594 else throw("Couldn't cast types")
600595 }
601- let dD = dC._1
602- let dE = dC._2
603- let dF = dC._3
604- let dG = dC._4
605- let dH = dC._5
606- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dD), toString(dj), toString(dF), toString(dG), toString(dH), dv, toString(dq), toString(dB)], e))
596+ let dw = dv._1
597+ let dx = dv._2
598+ let dy = dv._3
599+ let dz = dv._4
600+ let dA = dv._5
601+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dw), toString(dc), toString(dy), toString(dz), toString(dA), do, toString(dj), toString(du)], e))
607602 }
608603
609604
610605
611606 @Callable(bB)
612-func poolEvaluatePutByPriceAssetREADONLY (cV,dB) = {
613- let aZ = addressFromStringValue(t(aT, U(cV)))
614- let cY = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
615- let bd = fromBase58String(D(cY[j]))
616- let dr = D(cY[k])
617- let ds = fromBase58String(dr)
618- let dt = D(cY[l])
619- let du = fromBase58String(dt)
620- let dd = parseIntValue(D(cY[m]))
621- let de = parseIntValue(D(cY[n]))
622- let dv = D(cY[i])
623- let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
624- let dI = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dr], nil))
625- let dJ = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dt], nil))
626- let dK = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dI, dd], nil)))
627- let dL = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dJ, de], nil)))
628- let dy = if ((df == 0))
607+func poolEvaluatePutByPriceAssetREADONLY (cO,du) = {
608+ let aZ = addressFromStringValue(t(aT, S(cO)))
609+ let cR = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
610+ let bd = fromBase58String(D(cR[j]))
611+ let dk = D(cR[k])
612+ let dl = fromBase58String(dk)
613+ let dm = D(cR[l])
614+ let dn = fromBase58String(dm)
615+ let cW = parseIntValue(D(cR[m]))
616+ let cX = parseIntValue(D(cR[n]))
617+ let do = D(cR[i])
618+ let cY = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
619+ let dB = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dk], nil))
620+ let dC = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dm], nil))
621+ let dD = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dB, cW], nil)))
622+ let dE = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dC, cX], nil)))
623+ let dr = if ((cY == 0))
629624 then g
630- else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dL), toString(dK)], nil)))
631- let dj = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dy), b], nil))
632- let dA = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dB, de], nil)))
633- let dz = fraction(dA, d, dy)
634- let dq = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dz), dd], nil))
635- let bZ = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dq, ds, dB, du, "", true, false], nil)
636- let dM = {
637- let z = bZ
625+ else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dE), toString(dD)], nil)))
626+ let dc = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dr), b], nil))
627+ let dt = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [du, cX], nil)))
628+ let ds = fraction(dt, d, dr)
629+ let dj = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(ds), cW], nil))
630+ let ca = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dj, dl, du, dn, "", true, false], nil)
631+ let dF = {
632+ let z = ca
638633 if (if (if ($isInstanceOf(z._1, "Int"))
639634 then if ($isInstanceOf(z._3, "Int"))
640635 then if ($isInstanceOf(z._4, "Int"))
647642 then (size(z) == 13)
648643 else false)
649644 then {
650- let dD = z._1
651- let dE = z._3
652- let dF = z._4
653- let dG = z._5
654- let dH = z._6
655- $Tuple5(dD, dE, dF, dG, dH)
645+ let dw = z._1
646+ let dx = z._3
647+ let dy = z._4
648+ let dz = z._5
649+ let dA = z._6
650+ $Tuple5(dw, dx, dy, dz, dA)
656651 }
657652 else throw("Couldn't cast types")
658653 }
659- let dD = dM._1
660- let dE = dM._2
661- let dF = dM._3
662- let dG = dM._4
663- let dH = dM._5
664- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dD), toString(dj), toString(dF), toString(dG), toString(dH), dv, toString(dq), toString(dB)], e))
654+ let dw = dF._1
655+ let dx = dF._2
656+ let dy = dF._3
657+ let dz = dF._4
658+ let dA = dF._5
659+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dw), toString(dc), toString(dy), toString(dz), toString(dA), do, toString(dj), toString(du)], e))
665660 }
666661
667662
668663
669664 @Callable(bB)
670-func poolEvaluateGetREADONLY (dN,dO) = {
671- let aZ = addressFromStringValue(t(aT, U(dN)))
672- let bZ = invoke(aZ, "estimateGetOperationWrapperREADONLY", ["", dN, dO, toString(aZ)], nil)
673- let dP = {
674- let z = bZ
665+func poolEvaluateGetREADONLY (dG,dH) = {
666+ let aZ = addressFromStringValue(t(aT, S(dG)))
667+ let ca = invoke(aZ, "estimateGetOperationWrapperREADONLY", ["", dG, dH, toString(aZ)], nil)
668+ let dI = {
669+ let z = ca
675670 if (if (if ($isInstanceOf(z._1, "Int"))
676671 then if ($isInstanceOf(z._2, "Int"))
677672 then if ($isInstanceOf(z._5, "Int"))
688683 then (size(z) == 10)
689684 else false)
690685 then {
691- let dQ = z._1
692- let dR = z._2
693- let dF = z._5
694- let dG = z._6
695- let dH = z._7
696- let dj = z._8
697- let dv = z._9
698- $Tuple7(dQ, dR, dF, dG, dH, dj, dv)
686+ let dJ = z._1
687+ let dK = z._2
688+ let dy = z._5
689+ let dz = z._6
690+ let dA = z._7
691+ let dc = z._8
692+ let do = z._9
693+ $Tuple7(dJ, dK, dy, dz, dA, dc, do)
699694 }
700695 else throw("Couldn't cast types")
701696 }
702- let dQ = dP._1
703- let dR = dP._2
704- let dF = dP._3
705- let dG = dP._4
706- let dH = dP._5
707- let dj = dP._6
708- let dv = dP._7
709- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dQ), toString(dR), toString(dF), toString(dG), toString(dH), dj, dv], e))
697+ let dJ = dI._1
698+ let dK = dI._2
699+ let dy = dI._3
700+ let dz = dI._4
701+ let dA = dI._5
702+ let dc = dI._6
703+ let do = dI._7
704+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dJ), toString(dK), toString(dy), toString(dz), toString(dA), dc, do], e))
710705 }
711706
712707
713708
714709 @Callable(bB)
715-func gwxUserInfoREADONLY (am) = {
716- let dS = x(invoke(aX, "gwxUserInfoREADONLY", [am], nil))
717- let dT = B(dS[0])
718- $Tuple2(nil, makeString(["%d", toString(dT)], e))
710+func gwxUserInfoREADONLY (an) = {
711+ let dL = x(invoke(aX, "gwxUserInfoREADONLY", [an], nil))
712+ let dM = B(dL[0])
713+ $Tuple2(nil, makeString(["%d", toString(dM)], e))
719714 }
720715
721716
722717
723718 @Callable(bB)
724-func unstakeAndGetOneTknV2 (aZ,dU,dV,dW) = {
725- let ca = invoke(addressFromStringValue(aZ), "unstakeAndGetOneTknV2", [dU, dV, dW], nil)
726- if ((ca == ca))
719+func unstakeAndGetOneTknV2 (aZ,dN,dO,dP) = {
720+ let cb = invoke(addressFromStringValue(aZ), "unstakeAndGetOneTknV2", [dN, dO, dP], nil)
721+ if ((cb == cb))
727722 then $Tuple2(nil, unit)
728723 else throw("Strict value is not equal to itself.")
729724 }
731726
732727
733728 @Callable(bB)
734-func getKeysBulkInternal (bN,dX,bT) = if ((bN == size(dX)))
735- then $Tuple2(nil, bT)
729+func getKeysBulkInternal (bO,dQ,bU) = if ((bO == size(dQ)))
730+ then $Tuple2(nil, bU)
736731 else {
737- let cp = split(dX[bN], "++")
738- let bv = addressFromStringValue(cp[0])
739- let s = cp[1]
740- let bw = cp[2]
732+ let dR = split(dQ[bO], "++")
733+ let bv = addressFromStringValue(dR[0])
734+ let s = dR[1]
735+ let bw = dR[2]
741736 let y = bu(bv, s, bw)
742- let bZ = (bT :+ y)
743- let ca = invoke(this, "getKeysBulkInternal", [(bN + 1), dX, bZ], nil)
744- if ((ca == ca))
745- then $Tuple2(nil, ca)
737+ let ca = (bU :+ y)
738+ let cb = invoke(this, "getKeysBulkInternal", [(bO + 1), dQ, ca], nil)
739+ if ((cb == cb))
740+ then $Tuple2(nil, cb)
746741 else throw("Strict value is not equal to itself.")
747742 }
748743
749744
750745
751746 @Callable(bB)
752-func getKeysBulk (dX) = {
753- let bZ = invoke(this, "getKeysBulkInternal", [0, dX, nil], nil)
754- $Tuple2(nil, bZ)
747+func getKeysBulk (dQ) = {
748+ let ca = invoke(this, "getKeysBulkInternal", [0, dQ, nil], nil)
749+ $Tuple2(nil, ca)
755750 }
756751
757752
758-
759-@Callable(bB)
760-func setManager (dY) = {
761- let bF = bA(bB)
762- if ((bF == bF))
763- then {
764- let dZ = fromBase58String(dY)
765- if ((dZ == dZ))
766- then [StringEntry(H(), dY)]
767- else throw("Strict value is not equal to itself.")
768- }
769- else throw("Strict value is not equal to itself.")
770- }
771-
772-
773-
774-@Callable(bB)
775-func confirmManager () = {
776- let ea = bz()
777- let eb = if (isDefined(ea))
778- then true
779- else throw("No pending manager")
780- if ((eb == eb))
781- then {
782- let ec = if ((bB.callerPublicKey == value(ea)))
783- then true
784- else throw("You are not pending manager")
785- if ((ec == ec))
786- then [StringEntry(G(), toBase58String(value(ea))), DeleteEntry(H())]
787- else throw("Strict value is not equal to itself.")
788- }
789- else throw("Strict value is not equal to itself.")
790- }
791-
792-
793-@Verifier(ed)
794-func ee () = {
795- let ef = {
753+@Verifier(dS)
754+func dT () = {
755+ let dU = {
796756 let z = bx()
797757 if ($isInstanceOf(z, "ByteVector"))
798758 then {
799- let bD = z
800- bD
759+ let bC = z
760+ bC
801761 }
802762 else if ($isInstanceOf(z, "Unit"))
803- then ed.senderPublicKey
763+ then dS.senderPublicKey
804764 else throw("Match error")
805765 }
806- sigVerify(ed.bodyBytes, ed.proofs[0], ef)
766+ sigVerify(dS.bodyBytes, dS.proofs[0], dU)
807767 }
808768
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
86-func G () = "%s__managerPublicKey"
86+let G = 1
87+
88+let H = 2
89+
90+let I = 3
91+
92+let J = 4
93+
94+let K = 5
95+
96+let L = 6
97+
98+let M = 7
99+
100+let N = 8
101+
102+func O () = "%s__factoryConfig"
87103
88104
89-func H () = "%s__pendingManagerPublicKey"
105+func P (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
90106
91107
92-let I = 1
93-
94-let J = 2
95-
96-let K = 3
97-
98-let L = 4
99-
100-let M = 5
101-
102-let N = 6
103-
104-let O = 7
105-
106-let P = 8
107-
108-func Q () = "%s__factoryConfig"
108+func R () = "%s__lpTokensList"
109109
110110
111-func R (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
111+func S (Q) = makeString(["%s%s%s", Q, "mappings__lpAsset2PoolContract"], e)
112112
113113
114-func T () = "%s__lpTokensList"
114+func T (U) = makeString(["%s%s", "poolWeight", U], e)
115115
116116
117-func U (S) = makeString(["%s%s%s", S, "mappings__lpAsset2PoolContract"], e)
117+func V () = "%s__managerVaultAddress"
118118
119119
120-func V (W) = makeString(["%s%s", "poolWeight", W], e)
120+func W () = "%s__managerPublicKey"
121121
122122
123123 func X () = addressFromStringValue(r(F()))
124124
125125
126-func Y () = split(valueOrElse(getString(X(), T()), ""), e)
126+func Y () = split(valueOrElse(getString(X(), R()), ""), e)
127127
128128
129-func Z (aa) = split(t(aa, Q()), e)
129+func Z (aa) = split(t(aa, O()), e)
130130
131131
132-func ab (ac) = addressFromStringValue(ac[J])
132+func ab (ac) = addressFromStringValue(ac[H])
133133
134134
135-func ad (ac) = addressFromStringValue(ac[M])
135+func ad (ac) = addressFromStringValue(ac[K])
136136
137137
138-func ae (ac) = addressFromStringValue(ac[I])
138+func ae (ac) = addressFromStringValue(ac[G])
139139
140140
141-func af (ac) = addressFromStringValue(ac[P])
141+func af (ac) = addressFromStringValue(ac[N])
142142
143143
144-func ag () = "%s__config"
144+func ag () = addressFromStringValue(getStringValue(V()))
145145
146146
147-func ah () = "%s%s__stats__activeTotalLocked"
147+func ah () = "%s__config"
148148
149149
150-func ai () = "%s%s__stats__locksDurationSumInBlocks"
150+func ai () = "%s%s__stats__activeTotalLocked"
151151
152152
153-func aj () = "%s%s__stats__locksCount"
153+func aj () = "%s%s__stats__locksDurationSumInBlocks"
154154
155155
156-func ak () = "%s%s__stats__activeUsersCount"
156+func ak () = "%s%s__stats__locksCount"
157157
158158
159-func al (am) = makeString(["%s%s%s__mapping__user2num", am], e)
159+func al () = "%s%s__stats__activeUsersCount"
160160
161161
162-func an (ao) = makeString(["%s%s%s__mapping__num2user", ao], e)
162+func am (an) = makeString(["%s%s%s__mapping__user2num", an], e)
163163
164164
165-func ap (aq) = makeString(["%s%d%s__paramByUserNum", aq, "amount"], e)
165+func ao (ap) = makeString(["%s%s%s__mapping__num2user", ap], e)
166166
167167
168-func ar (aq) = makeString(["%s%d%s__paramByUserNum", aq, "start"], e)
168+func aq (ar) = makeString(["%s%d%s__paramByUserNum", ar, "amount"], e)
169169
170170
171-func as (aq) = makeString(["%s%d%s__paramByUserNum", aq, "duration"], e)
171+func as (ar) = makeString(["%s%d%s__paramByUserNum", ar, "start"], e)
172172
173173
174-func at (aq) = makeString(["%s%d%s__paramByUserNum", aq, "k"], e)
174+func at (ar) = makeString(["%s%d%s__paramByUserNum", ar, "duration"], e)
175175
176176
177-func au (aq) = makeString(["%s%d%s__paramByUserNum", aq, "b"], e)
177+func au (ar) = makeString(["%s%d%s__paramByUserNum", ar, "k"], e)
178178
179179
180-func av (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "k", aw], e)
180+func av (ar) = makeString(["%s%d%s__paramByUserNum", ar, "b"], e)
181181
182182
183-func ax (aq,aw) = makeString(["%s%d%s%d__paramByPeriod", aq, "b", aw], e)
183+func aw (ar,ax) = makeString(["%s%d%s%d__paramByPeriod", ar, "k", ax], e)
184184
185185
186-func ay (aq) = makeString(["%s%d__userBoostEmissionLastInt", aq], e)
186+func ay (ar,ax) = makeString(["%s%d%s%d__paramByPeriod", ar, "b", ax], e)
187187
188188
189-func az (aq) = makeString(["%s%d__maxBoostInt", aq], e)
189+func az (ar) = makeString(["%s%d__userBoostEmissionLastInt", ar], e)
190190
191191
192-func aA () = "%s%s__maxBoostInt__total"
192+func aA (ar) = makeString(["%s%d__maxBoostInt", ar], e)
193193
194194
195-func aB (aq) = makeString(["%s%d__userBoostAvaliableToClaimTotal", aq], e)
195+func aB () = "%s%s__maxBoostInt__total"
196196
197197
198-func aC (aq) = makeString(["%s%d__userBoostClaimed", aq], e)
198+func aC (ar) = makeString(["%s%d__userBoostAvaliableToClaimTotal", ar], e)
199199
200200
201-func aD () = "%s%s__gwxCached__total"
201+func aD (ar) = makeString(["%s%d__userBoostClaimed", ar], e)
202202
203203
204-func aE (aF,aG) = makeString(["%s%s%s__staked", aF, aG], e)
204+func aE () = "%s%s__gwxCached__total"
205205
206206
207-func aH (aG) = ("%s%s%s__staked__total__" + aG)
207+func aF (aG,aH) = makeString(["%s%s%s__staked", aG, aH], e)
208208
209209
210-func aI (aG,aF) = makeString(["%s%s%s__claimed", aF, aG], e)
210+func aI (aH) = ("%s%s%s__staked__total__" + aH)
211211
212212
213-func aJ (aG,aF) = makeString(["%s%s%s__claimedMinReward", aF, aG], e)
213+func aJ (aH,aG) = makeString(["%s%s%s__claimed", aG, aH], e)
214214
215215
216-func aK (aG,aF) = makeString(["%s%s%s__claimedBoostReward", aF, aG], e)
216+func aK (aH,aG) = makeString(["%s%s%s__claimedMinReward", aG, aH], e)
217217
218218
219-func aL (aM,s) = valueOrElse(getInteger(aM, s), 0)
219+func aL (aH,aG) = makeString(["%s%s%s__claimedBoostReward", aG, aH], e)
220220
221221
222-func aN () = "%s%s__ratePerBlock__current"
222+func aM (aN,s) = valueOrElse(getInteger(aN, s), 0)
223223
224224
225-func aO () = "%s%s__ratePerBlockMax__current"
225+func aO () = "%s%s__ratePerBlock__current"
226226
227227
228-func aP () = "%s%s__emission__startBlock"
228+func aP () = "%s%s__ratePerBlockMax__current"
229229
230230
231-func aQ () = "%s%s__emission__duration"
231+func aQ () = "%s%s__emission__startBlock"
232232
233233
234-func aR () = "%s%s__emission__endBlock"
234+func aR () = "%s%s__emission__duration"
235235
236236
237-func aS () = "%s__addonAddr"
237+func aS () = "%s%s__emission__endBlock"
238238
239239
240240 let aT = X()
241241
242242 let aU = Z(aT)
243243
244244 let aV = ad(aU)
245245
246-let aM = ae(aU)
246+let aN = ae(aU)
247247
248248 let aW = af(aU)
249249
250250 let aX = ab(aU)
251251
252252 func aY (aZ) = {
253253 let ba = invoke(aT, "getInFeeREADONLY", [toString(aZ)], nil)
254254 if ($isInstanceOf(ba, "Int"))
255255 then ba
256256 else throw(($getType(ba) + " couldn't be cast to Int"))
257257 }
258258
259259
260260 func bb (aZ) = {
261261 let ba = invoke(aT, "getOutFeeREADONLY", [toString(aZ)], nil)
262262 if ($isInstanceOf(ba, "Int"))
263263 then ba
264264 else throw(($getType(ba) + " couldn't be cast to Int"))
265265 }
266266
267267
268268 func bc (bd) = {
269- let be = t(aT, U(bd))
269+ let be = t(aT, S(bd))
270270 let bf = b
271- let bg = getIntegerValue(aT, V(be))
272- let bh = w(aV, aN())
273- let bi = w(aV, aO())
274- let bj = 3
271+ let bg = getIntegerValue(aT, T(be))
272+ let bh = w(aV, aO())
273+ let bi = w(aV, aP())
274+ let bj = {
275+ let ba = invoke(aV, "getBoostCoeffREADONLY", nil, nil)
276+ if ($isInstanceOf(ba, "Int"))
277+ then ba
278+ else throw(($getType(ba) + " couldn't be cast to Int"))
279+ }
275280 let bk = (fraction(bh, bg, bf) / bj)
276281 let bl = fraction(bi, bg, bf)
277282 let bm = (bj * b)
278- let bn = v(aM, aH(bd))
283+ let bn = v(aN, aI(bd))
279284 [bk, bm, bn]
280285 }
281286
282287
283288 func bo (bp,bq,br) = {
284289 let bs = fraction(bq, b, br)
285290 let bt = fraction(bp, bs, b)
286291 [bt]
287292 }
288293
289294
290295 func bu (bv,s,bw) = if ((bw == "string"))
291296 then getStringValue(bv, s)
292297 else if ((bw == "integer"))
293298 then toString(getIntegerValue(bv, s))
294299 else if ((bw == "boolean"))
295300 then toString(getBooleanValue(bv, s))
296301 else throw("unknown type. expected string/integer/boolean")
297302
298303
299304 func bx () = {
300- let z = getString(G())
305+ let by = ag()
306+ let z = getString(by, W())
301307 if ($isInstanceOf(z, "String"))
302308 then {
303- let by = z
304- fromBase58String(by)
305- }
306- else if ($isInstanceOf(z, "Unit"))
307- then unit
308- else throw("Match error")
309- }
310-
311-
312-func bz () = {
313- let z = getString(H())
314- if ($isInstanceOf(z, "String"))
315- then {
316- let by = z
317- fromBase58String(by)
309+ let bz = z
310+ fromBase58String(bz)
318311 }
319312 else if ($isInstanceOf(z, "Unit"))
320313 then unit
321314 else throw("Match error")
322315 }
323316
324317
325318 func bA (bB) = {
326- let bC = throw("Permission denied")
327319 let z = bx()
328320 if ($isInstanceOf(z, "ByteVector"))
329321 then {
330- let bD = z
331- if ((bB.callerPublicKey == bD))
332- then true
333- else bC
322+ let bC = z
323+ (bB.callerPublicKey == bC)
334324 }
335325 else if ($isInstanceOf(z, "Unit"))
336- then if ((bB.caller == this))
337- then true
338- else bC
326+ then (bB.caller == this)
339327 else throw("Match error")
340328 }
341329
342330
331+func bD (bB) = if (bA(bB))
332+ then true
333+ else throw("permission denied")
334+
335+
343336 @Callable(bB)
344337 func constructor (bE) = {
345- let bF = bA(bB)
338+ let bF = bD(bB)
346339 if ((bF == bF))
347340 then [StringEntry(F(), bE)]
348341 else throw("Strict value is not equal to itself.")
349342 }
350343
351344
352345
353346 @Callable(bB)
354347 func currentRewardRateREADONLY (bd) = {
355348 let bG = bc(bd)
356349 let bh = bG[0]
357350 let bm = bG[1]
358351 let bn = bG[2]
359- $Tuple2(nil, makeString(["%d%d%d", toString(bh), toString(bm), toString(bn)], e))
352+ let bH = {
353+ let ba = invoke(aX, "getVotingResultStakedREADONLY", [bd], nil)
354+ if ($isInstanceOf(ba, "Int"))
355+ then ba
356+ else throw(($getType(ba) + " couldn't be cast to Int"))
357+ }
358+ $Tuple2(nil, makeString(["%d%d%d%d", toString(bh), toString(bm), toString(bn), toString(bH)], e))
360359 }
361360
362361
363362
364363 @Callable(bB)
365-func currentUserRewardRateREADONLY (bd,am) = {
364+func currentUserRewardRateREADONLY (bd,an) = {
366365 let bG = bc(bd)
367366 let bh = bG[0]
368367 let bm = bG[1]
369368 let bn = bG[2]
370- let bH = v(aM, aE(am, bd))
371- let bI = split(D(invoke(aM, "claimWxREADONLY", [bd, am], nil)), e)
372- let bJ = valueOrErrorMessage(parseInt(bI[5]), "couldn't parse minRewardPart")
373- let bK = valueOrErrorMessage(parseInt(bI[6]), "couldn't parse boostRewardPart")
374- let bL = bI[7]
375- let bM = if ((bK == 0))
369+ let bI = v(aN, aF(an, bd))
370+ let bJ = split(D(invoke(aN, "claimWxREADONLY", [bd, an], nil)), e)
371+ let bK = valueOrErrorMessage(parseInt(bJ[5]), "couldn't parse minRewardPart")
372+ let bL = valueOrErrorMessage(parseInt(bJ[6]), "couldn't parse boostRewardPart")
373+ let bM = bJ[7]
374+ let bN = if ((bL == 0))
376375 then (1 * b)
377- else fraction((bJ + bK), b, bJ)
378- $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bH), toString(bM), bL], e))
376+ else fraction((bK + bL), b, bK)
377+ $Tuple2(nil, makeString(["%d%d%d%d%d%s", toString(bh), toString(bm), toString(bn), toString(bI), toString(bN), bM], e))
379378 }
380379
381380
382381
383382 @Callable(bB)
384-func calcBoostBulkInternalREADONLY (bN,bO,bP,bQ,bR,bS,bT) = if ((bN == size(bO)))
385- then $Tuple2(nil, bT)
383+func calcBoostBulkInternalREADONLY (bO,bP,bQ,bR,bS,bT,bU) = if ((bO == size(bP)))
384+ then $Tuple2(nil, bU)
386385 else {
387- let bU = bO[bN]
388- let bV = bP[bN]
389- let bW = bQ[bN]
390- let bX = bR[bN]
391- let bY = {
392- let ba = invoke(this, "calcBoostREADONLY", [bU, bV, bW, bX, bS], nil)
386+ let bV = bP[bO]
387+ let bW = bQ[bO]
388+ let bX = bR[bO]
389+ let bY = bS[bO]
390+ let bZ = {
391+ let ba = invoke(this, "calcBoostREADONLY", [bV, bW, bX, bY, bT], nil)
393392 if ($isInstanceOf(ba, "String"))
394393 then ba
395394 else throw(($getType(ba) + " couldn't be cast to String"))
396395 }
397- let bZ = (bT :+ bY)
398- let ca = {
399- let ba = invoke(this, "calcBoostBulkInternalREADONLY", [(bN + 1), bO, bP, bQ, bR, bS, bZ], nil)
396+ let ca = (bU :+ bZ)
397+ let cb = {
398+ let ba = invoke(this, "calcBoostBulkInternalREADONLY", [(bO + 1), bP, bQ, bR, bS, bT, ca], nil)
400399 if ($isInstanceOf(ba, "List[Any]"))
401400 then ba
402401 else throw(($getType(ba) + " couldn't be cast to List[Any]"))
403402 }
404- if ((ca == ca))
405- then $Tuple2(nil, ca)
403+ if ((cb == cb))
404+ then $Tuple2(nil, cb)
406405 else throw("Strict value is not equal to itself.")
407406 }
408407
409408
410409
411410 @Callable(bB)
412-func calcBoostBulkREADONLY (bU,bV,bW,bX,bS) = {
413- let bZ = invoke(this, "calcBoostBulkInternalREADONLY", [0, bU, bV, bW, bX, bS, nil], nil)
414- $Tuple2(nil, bZ)
411+func calcBoostBulkREADONLY (bV,bW,bX,bY,bT) = {
412+ let ca = invoke(this, "calcBoostBulkInternalREADONLY", [0, bV, bW, bX, bY, bT, nil], nil)
413+ $Tuple2(nil, ca)
415414 }
416415
417416
418417
419418 @Callable(bB)
420-func calcBoostREADONLY (bU,bV,bW,bX,bS) = {
421- let cb = aW
422- let cc = "empty"
423- let cd = parseIntValue(split(t(aX, ag()), e)[4])
424- let aG = if ((bX == ""))
425- then cc
426- else bX
427- let aF = if ((bS == ""))
428- then cc
429- else bS
430- let ce = valueOrElse(getString(aX, al(bS)), cc)
431- let cf = valueOrElse(getInteger(aX, ap(ce)), 0)
432- let cg = valueOrElse(getInteger(aX, ar(ce)), height)
433- let bq = valueOrElse(getInteger(aX, as(ce)), 0)
434- let ch = (cg + bq)
435- let ci = max([(ch - height), 0])
436- let cj = (cf + bU)
437- let ck = min([(ci + bV), cd])
438- let cl = B(x(invoke(aX, "gwxUserInfoREADONLY", [aF], nil))[0])
439- let cm = bo(cj, ck, cd)[0]
440- let cn = x(invoke(cb, "calcGwxParamsREADONLY", [cm, height, ck], nil))
441- let co = (cm - cl)
442- let cp = B(cn[0])
443- let cq = B(cn[1])
444- let aw = toString(B(cn[2]))
445- let cr = aA()
446- let cs = ((cm * ck) / 2)
447- let ct = v(aX, cr)
448- let cu = {
419+func calcBoostREADONLY (bV,bW,bX,bY,bT) = {
420+ let cc = {
421+ let ba = invoke(aV, "getBoostCoeffREADONLY", nil, nil)
422+ if ($isInstanceOf(ba, "Int"))
423+ then ba
424+ else throw(($getType(ba) + " couldn't be cast to Int"))
425+ }
426+ let cd = aW
427+ let ce = "empty"
428+ let cf = parseIntValue(split(t(aX, ah()), e)[4])
429+ let aH = if ((bY == ""))
430+ then ce
431+ else bY
432+ let aG = if ((bT == ""))
433+ then ce
434+ else bT
435+ let cg = valueOrElse(getString(aX, am(bT)), ce)
436+ let ch = valueOrElse(getInteger(aX, aq(cg)), 0)
437+ let ci = valueOrElse(getInteger(aX, as(cg)), height)
438+ let bq = valueOrElse(getInteger(aX, at(cg)), 0)
439+ let cj = (ci + bq)
440+ let ck = max([(cj - height), 0])
441+ let cl = (ch + bV)
442+ let cm = min([(ck + bW), cf])
443+ let cn = B(x(invoke(aX, "gwxUserInfoREADONLY", [aG], nil))[0])
444+ let co = bo(cl, cm, cf)[0]
445+ let cp = {
449446 let ba = invoke(aX, "getTotalCachedGwxREADONLY", nil, nil)
450447 if ($isInstanceOf(ba, "Int"))
451448 then ba
452449 else throw(($getType(ba) + " couldn't be cast to Int"))
453450 }
454- let cv = 1000
455- let cw = (w(aV, aN()) * cv)
456- let cx = aE(aF, aG)
457- let cy = aH(aG)
458- let cz = aL(aM, cx)
459- let cA = aL(aM, cy)
460- let cB = (cz + bW)
461- let cC = (cA + bW)
462- let bg = if ((aG != cc))
451+ let cq = 1000
452+ let cr = (w(aV, aO()) * cq)
453+ let cs = aF(aG, aH)
454+ let ct = aI(aH)
455+ let cu = aM(aN, cs)
456+ let cv = aM(aN, ct)
457+ let bg = if ((aH != ce))
463458 then {
464- let be = valueOrErrorMessage(getString(aT, R(aG)), ("unsupported lp asset " + aG))
465- getIntegerValue(aT, V(be))
459+ let be = valueOrErrorMessage(getString(aT, P(aH)), ("unsupported lp asset " + aH))
460+ getIntegerValue(aT, T(be))
466461 }
467462 else 0
468- let cD = fraction(cw, bg, (f * 3))
469- let cE = if ((cC != 0))
470- then fraction(cD, b, cC)
463+ let cw = fraction(cr, bg, (f * cc))
464+ let cx = if ((cv != 0))
465+ then fraction(cw, b, cv)
471466 else 0
472- let cF = fraction(cE, cB, b)
473- let cG = (cD * 2)
474- let cH = fraction(cm, cG, (cu + co))
475- let cI = min([cH, (cF * 2)])
476- let cJ = if ((cF == 0))
467+ let cy = fraction(cx, cu, b)
468+ let cz = (cw * (cc - 1))
469+ let cA = fraction(cn, cz, cp)
470+ let cB = min([cA, (cy * (cc - 1))])
471+ let cC = if ((cy == 0))
477472 then (1 * b)
478- else fraction((cI + cF), b, cF)
479- $Tuple2(nil, makeString(["%d%d%s", toString(cm), toString(cJ), "d"], e))
473+ else fraction((cB + cy), b, cy)
474+ $Tuple2(nil, makeString(["%d%d%s", toString(co), toString(cC), "d"], e))
480475 }
481476
482477
483478
484479 @Callable(bB)
485480 func wxEmissionStatsREADONLY () = {
486- let cK = toString(b)
487- let cL = "1"
488- let bh = w(aV, aN())
489- let cM = w(aV, aP())
490- let cN = if ((cM > height))
481+ let cD = toString(b)
482+ let cE = "1"
483+ let bh = w(aV, aO())
484+ let cF = w(aV, aQ())
485+ let cG = if ((cF > height))
491486 then 0
492- else (height - cM)
493- let cO = (1440 * 365)
494- let cP = (201000000 * b)
495- let cQ = if ((cN > cO))
496- then cP
497- else fraction(cP, cN, cO)
498- let cR = ((bh * cN) + cQ)
499- let cS = v(aX, ah())
500- let cT = v(aX, ai())
501- let cU = v(aX, aj())
502- $Tuple2(nil, makeString(["%d%d%d%d", toString(cR), toString(cS), toString(cT), toString(cU)], e))
487+ else (height - cF)
488+ let cH = (1440 * 365)
489+ let cI = (201000000 * b)
490+ let cJ = if ((cG > cH))
491+ then cI
492+ else fraction(cI, cG, cH)
493+ let cK = ((bh * cG) + cJ)
494+ let cL = v(aX, ai())
495+ let cM = v(aX, aj())
496+ let cN = v(aX, ak())
497+ $Tuple2(nil, makeString(["%d%d%d%d", toString(cK), toString(cL), toString(cM), toString(cN)], e))
503498 }
504499
505500
506501
507502 @Callable(bB)
508-func poolStatsREADONLY (cV) = {
509- let aZ = addressFromStringValue(t(aT, U(cV)))
510- let cW = {
503+func poolStatsREADONLY (cO) = {
504+ let aZ = addressFromStringValue(t(aT, S(cO)))
505+ let cP = {
511506 let ba = invoke(aT, "getPoolStatusREADONLY", [toString(aZ)], nil)
512507 if ($isInstanceOf(ba, "Int"))
513508 then ba
514509 else throw(($getType(ba) + " couldn't be cast to Int"))
515510 }
516- let cX = "%d%d%d%d%d%d%d%d%d%s"
517- if ((cW == 4))
518- then $Tuple2(nil, makeString([cX, toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(false)], e))
511+ let cQ = "%d%d%d%d%d%d%d%d%d%s"
512+ if ((cP == 4))
513+ then $Tuple2(nil, makeString([cQ, toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(0), toString(false)], e))
519514 else {
520- let cY = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
521- let bd = fromBase58String(D(cY[j]))
522- let cZ = D(cY[k])
523- let da = D(cY[l])
524- let db = D(cY[o])
525- let dc = D(cY[p])
526- let dd = parseIntValue(D(cY[m]))
527- let de = parseIntValue(D(cY[n]))
528- let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
529- let dg = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [cZ], nil))
530- let dh = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [da], nil))
531- let di = if ((df == 0))
515+ let cR = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
516+ let bd = fromBase58String(D(cR[j]))
517+ let cS = D(cR[k])
518+ let cT = D(cR[l])
519+ let cU = D(cR[o])
520+ let cV = D(cR[p])
521+ let cW = parseIntValue(D(cR[m]))
522+ let cX = parseIntValue(D(cR[n]))
523+ let cY = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
524+ let cZ = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [cS], nil))
525+ let da = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [cT], nil))
526+ let db = if ((cY == 0))
532527 then [toString(g), toString(g), toString(g)]
533- else x(invoke(aZ, "calcPricesWrapperREADONLY", [dg, dh, df], nil))
534- let dj = 0
535- let dk = B(invoke(aZ, "fromX18WrapperREADONLY", [di[1], b], nil))
536- let dl = B(invoke(aZ, "fromX18WrapperREADONLY", [di[2], b], nil))
537- let bg = getIntegerValue(aT, V(toString(aZ)))
538- let dm = aY(aZ)
539- let dn = bb(aZ)
540- let do = {
528+ else x(invoke(aZ, "calcPricesWrapperREADONLY", [cZ, da, cY], nil))
529+ let dc = 0
530+ let dd = B(invoke(aZ, "fromX18WrapperREADONLY", [db[1], b], nil))
531+ let de = B(invoke(aZ, "fromX18WrapperREADONLY", [db[2], b], nil))
532+ let bg = getIntegerValue(aT, T(toString(aZ)))
533+ let df = aY(aZ)
534+ let dg = bb(aZ)
535+ let dh = {
541536 let ba = invoke(aT, "isPoolOneTokenOperationsDisabledREADONLY", [toString(aZ)], nil)
542537 if ($isInstanceOf(ba, "Boolean"))
543538 then ba
544539 else throw(($getType(ba) + " couldn't be cast to Boolean"))
545540 }
546- let dp = !(do)
547- $Tuple2(nil, makeString([cX, toString(dg), toString(dh), toString(df), toString(dj), toString(dk), toString(dl), toString(bg), toString(dm), toString(dn), toString(dp)], e))
541+ let di = !(dh)
542+ $Tuple2(nil, makeString([cQ, toString(cZ), toString(da), toString(cY), toString(dc), toString(dd), toString(de), toString(bg), toString(df), toString(dg), toString(di)], e))
548543 }
549544 }
550545
551546
552547
553548 @Callable(bB)
554-func poolEvaluatePutByAmountAssetREADONLY (cV,dq) = {
555- let aZ = addressFromStringValue(t(aT, U(cV)))
556- let cY = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
557- let bd = fromBase58String(D(cY[j]))
558- let dr = D(cY[k])
559- let ds = fromBase58String(dr)
560- let dt = D(cY[l])
561- let du = fromBase58String(dt)
562- let dd = parseIntValue(D(cY[m]))
563- let de = parseIntValue(D(cY[n]))
564- let dv = D(cY[i])
565- let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
566- let dg = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dr], nil))
567- let dh = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dt], nil))
568- let dw = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dg, dd], nil)))
569- let dx = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dh, de], nil)))
570- let dy = if ((df == 0))
549+func poolEvaluatePutByAmountAssetREADONLY (cO,dj) = {
550+ let aZ = addressFromStringValue(t(aT, S(cO)))
551+ let cR = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
552+ let bd = fromBase58String(D(cR[j]))
553+ let dk = D(cR[k])
554+ let dl = fromBase58String(dk)
555+ let dm = D(cR[l])
556+ let dn = fromBase58String(dm)
557+ let cW = parseIntValue(D(cR[m]))
558+ let cX = parseIntValue(D(cR[n]))
559+ let do = D(cR[i])
560+ let cY = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
561+ let cZ = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dk], nil))
562+ let da = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dm], nil))
563+ let dp = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [cZ, cW], nil)))
564+ let dq = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [da, cX], nil)))
565+ let dr = if ((cY == 0))
571566 then g
572- else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dx), toString(dw)], nil)))
573- let dj = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dy), b], nil))
574- let dz = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dq, dd], nil)))
575- let dA = fraction(dz, dy, d)
576- let dB = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dA), de], nil))
577- let bZ = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dq, ds, dB, du, "", true, false], nil)
578- let dC = {
579- let z = bZ
567+ else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dq), toString(dp)], nil)))
568+ let dc = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dr), b], nil))
569+ let ds = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dj, cW], nil)))
570+ let dt = fraction(ds, dr, d)
571+ let du = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dt), cX], nil))
572+ let ca = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dj, dl, du, dn, "", true, false], nil)
573+ let dv = {
574+ let z = ca
580575 if (if (if ($isInstanceOf(z._1, "Int"))
581576 then if ($isInstanceOf(z._3, "Int"))
582577 then if ($isInstanceOf(z._4, "Int"))
583578 then if ($isInstanceOf(z._5, "Int"))
584579 then $isInstanceOf(z._6, "Int")
585580 else false
586581 else false
587582 else false
588583 else false)
589584 then (size(z) == 13)
590585 else false)
591586 then {
592- let dD = z._1
593- let dE = z._3
594- let dF = z._4
595- let dG = z._5
596- let dH = z._6
597- $Tuple5(dD, dE, dF, dG, dH)
587+ let dw = z._1
588+ let dx = z._3
589+ let dy = z._4
590+ let dz = z._5
591+ let dA = z._6
592+ $Tuple5(dw, dx, dy, dz, dA)
598593 }
599594 else throw("Couldn't cast types")
600595 }
601- let dD = dC._1
602- let dE = dC._2
603- let dF = dC._3
604- let dG = dC._4
605- let dH = dC._5
606- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dD), toString(dj), toString(dF), toString(dG), toString(dH), dv, toString(dq), toString(dB)], e))
596+ let dw = dv._1
597+ let dx = dv._2
598+ let dy = dv._3
599+ let dz = dv._4
600+ let dA = dv._5
601+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dw), toString(dc), toString(dy), toString(dz), toString(dA), do, toString(dj), toString(du)], e))
607602 }
608603
609604
610605
611606 @Callable(bB)
612-func poolEvaluatePutByPriceAssetREADONLY (cV,dB) = {
613- let aZ = addressFromStringValue(t(aT, U(cV)))
614- let cY = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
615- let bd = fromBase58String(D(cY[j]))
616- let dr = D(cY[k])
617- let ds = fromBase58String(dr)
618- let dt = D(cY[l])
619- let du = fromBase58String(dt)
620- let dd = parseIntValue(D(cY[m]))
621- let de = parseIntValue(D(cY[n]))
622- let dv = D(cY[i])
623- let df = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
624- let dI = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dr], nil))
625- let dJ = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dt], nil))
626- let dK = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dI, dd], nil)))
627- let dL = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dJ, de], nil)))
628- let dy = if ((df == 0))
607+func poolEvaluatePutByPriceAssetREADONLY (cO,du) = {
608+ let aZ = addressFromStringValue(t(aT, S(cO)))
609+ let cR = x(invoke(aZ, "getPoolConfigWrapperREADONLY", nil, nil))
610+ let bd = fromBase58String(D(cR[j]))
611+ let dk = D(cR[k])
612+ let dl = fromBase58String(dk)
613+ let dm = D(cR[l])
614+ let dn = fromBase58String(dm)
615+ let cW = parseIntValue(D(cR[m]))
616+ let cX = parseIntValue(D(cR[n]))
617+ let do = D(cR[i])
618+ let cY = valueOrErrorMessage(assetInfo(bd), (("Asset " + toBase58String(bd)) + " doesn't exist")).quantity
619+ let dB = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dk], nil))
620+ let dC = B(invoke(aZ, "getAccBalanceWrapperREADONLY", [dm], nil))
621+ let dD = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dB, cW], nil)))
622+ let dE = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dC, cX], nil)))
623+ let dr = if ((cY == 0))
629624 then g
630- else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dL), toString(dK)], nil)))
631- let dj = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dy), b], nil))
632- let dA = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [dB, de], nil)))
633- let dz = fraction(dA, d, dy)
634- let dq = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dz), dd], nil))
635- let bZ = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dq, ds, dB, du, "", true, false], nil)
636- let dM = {
637- let z = bZ
625+ else parseBigIntValue(D(invoke(aZ, "calcPriceBigIntWrapperREADONLY", [toString(dE), toString(dD)], nil)))
626+ let dc = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(dr), b], nil))
627+ let dt = parseBigIntValue(D(invoke(aZ, "toX18WrapperREADONLY", [du, cX], nil)))
628+ let ds = fraction(dt, d, dr)
629+ let dj = B(invoke(aZ, "fromX18WrapperREADONLY", [toString(ds), cW], nil))
630+ let ca = invoke(aZ, "estimatePutOperationWrapperREADONLY", ["", 500000, dj, dl, du, dn, "", true, false], nil)
631+ let dF = {
632+ let z = ca
638633 if (if (if ($isInstanceOf(z._1, "Int"))
639634 then if ($isInstanceOf(z._3, "Int"))
640635 then if ($isInstanceOf(z._4, "Int"))
641636 then if ($isInstanceOf(z._5, "Int"))
642637 then $isInstanceOf(z._6, "Int")
643638 else false
644639 else false
645640 else false
646641 else false)
647642 then (size(z) == 13)
648643 else false)
649644 then {
650- let dD = z._1
651- let dE = z._3
652- let dF = z._4
653- let dG = z._5
654- let dH = z._6
655- $Tuple5(dD, dE, dF, dG, dH)
645+ let dw = z._1
646+ let dx = z._3
647+ let dy = z._4
648+ let dz = z._5
649+ let dA = z._6
650+ $Tuple5(dw, dx, dy, dz, dA)
656651 }
657652 else throw("Couldn't cast types")
658653 }
659- let dD = dM._1
660- let dE = dM._2
661- let dF = dM._3
662- let dG = dM._4
663- let dH = dM._5
664- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dD), toString(dj), toString(dF), toString(dG), toString(dH), dv, toString(dq), toString(dB)], e))
654+ let dw = dF._1
655+ let dx = dF._2
656+ let dy = dF._3
657+ let dz = dF._4
658+ let dA = dF._5
659+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dw), toString(dc), toString(dy), toString(dz), toString(dA), do, toString(dj), toString(du)], e))
665660 }
666661
667662
668663
669664 @Callable(bB)
670-func poolEvaluateGetREADONLY (dN,dO) = {
671- let aZ = addressFromStringValue(t(aT, U(dN)))
672- let bZ = invoke(aZ, "estimateGetOperationWrapperREADONLY", ["", dN, dO, toString(aZ)], nil)
673- let dP = {
674- let z = bZ
665+func poolEvaluateGetREADONLY (dG,dH) = {
666+ let aZ = addressFromStringValue(t(aT, S(dG)))
667+ let ca = invoke(aZ, "estimateGetOperationWrapperREADONLY", ["", dG, dH, toString(aZ)], nil)
668+ let dI = {
669+ let z = ca
675670 if (if (if ($isInstanceOf(z._1, "Int"))
676671 then if ($isInstanceOf(z._2, "Int"))
677672 then if ($isInstanceOf(z._5, "Int"))
678673 then if ($isInstanceOf(z._6, "Int"))
679674 then if ($isInstanceOf(z._7, "Int"))
680675 then if ($isInstanceOf(z._8, "String"))
681676 then $isInstanceOf(z._9, "String")
682677 else false
683678 else false
684679 else false
685680 else false
686681 else false
687682 else false)
688683 then (size(z) == 10)
689684 else false)
690685 then {
691- let dQ = z._1
692- let dR = z._2
693- let dF = z._5
694- let dG = z._6
695- let dH = z._7
696- let dj = z._8
697- let dv = z._9
698- $Tuple7(dQ, dR, dF, dG, dH, dj, dv)
686+ let dJ = z._1
687+ let dK = z._2
688+ let dy = z._5
689+ let dz = z._6
690+ let dA = z._7
691+ let dc = z._8
692+ let do = z._9
693+ $Tuple7(dJ, dK, dy, dz, dA, dc, do)
699694 }
700695 else throw("Couldn't cast types")
701696 }
702- let dQ = dP._1
703- let dR = dP._2
704- let dF = dP._3
705- let dG = dP._4
706- let dH = dP._5
707- let dj = dP._6
708- let dv = dP._7
709- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dQ), toString(dR), toString(dF), toString(dG), toString(dH), dj, dv], e))
697+ let dJ = dI._1
698+ let dK = dI._2
699+ let dy = dI._3
700+ let dz = dI._4
701+ let dA = dI._5
702+ let dc = dI._6
703+ let do = dI._7
704+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d", toString(dJ), toString(dK), toString(dy), toString(dz), toString(dA), dc, do], e))
710705 }
711706
712707
713708
714709 @Callable(bB)
715-func gwxUserInfoREADONLY (am) = {
716- let dS = x(invoke(aX, "gwxUserInfoREADONLY", [am], nil))
717- let dT = B(dS[0])
718- $Tuple2(nil, makeString(["%d", toString(dT)], e))
710+func gwxUserInfoREADONLY (an) = {
711+ let dL = x(invoke(aX, "gwxUserInfoREADONLY", [an], nil))
712+ let dM = B(dL[0])
713+ $Tuple2(nil, makeString(["%d", toString(dM)], e))
719714 }
720715
721716
722717
723718 @Callable(bB)
724-func unstakeAndGetOneTknV2 (aZ,dU,dV,dW) = {
725- let ca = invoke(addressFromStringValue(aZ), "unstakeAndGetOneTknV2", [dU, dV, dW], nil)
726- if ((ca == ca))
719+func unstakeAndGetOneTknV2 (aZ,dN,dO,dP) = {
720+ let cb = invoke(addressFromStringValue(aZ), "unstakeAndGetOneTknV2", [dN, dO, dP], nil)
721+ if ((cb == cb))
727722 then $Tuple2(nil, unit)
728723 else throw("Strict value is not equal to itself.")
729724 }
730725
731726
732727
733728 @Callable(bB)
734-func getKeysBulkInternal (bN,dX,bT) = if ((bN == size(dX)))
735- then $Tuple2(nil, bT)
729+func getKeysBulkInternal (bO,dQ,bU) = if ((bO == size(dQ)))
730+ then $Tuple2(nil, bU)
736731 else {
737- let cp = split(dX[bN], "++")
738- let bv = addressFromStringValue(cp[0])
739- let s = cp[1]
740- let bw = cp[2]
732+ let dR = split(dQ[bO], "++")
733+ let bv = addressFromStringValue(dR[0])
734+ let s = dR[1]
735+ let bw = dR[2]
741736 let y = bu(bv, s, bw)
742- let bZ = (bT :+ y)
743- let ca = invoke(this, "getKeysBulkInternal", [(bN + 1), dX, bZ], nil)
744- if ((ca == ca))
745- then $Tuple2(nil, ca)
737+ let ca = (bU :+ y)
738+ let cb = invoke(this, "getKeysBulkInternal", [(bO + 1), dQ, ca], nil)
739+ if ((cb == cb))
740+ then $Tuple2(nil, cb)
746741 else throw("Strict value is not equal to itself.")
747742 }
748743
749744
750745
751746 @Callable(bB)
752-func getKeysBulk (dX) = {
753- let bZ = invoke(this, "getKeysBulkInternal", [0, dX, nil], nil)
754- $Tuple2(nil, bZ)
747+func getKeysBulk (dQ) = {
748+ let ca = invoke(this, "getKeysBulkInternal", [0, dQ, nil], nil)
749+ $Tuple2(nil, ca)
755750 }
756751
757752
758-
759-@Callable(bB)
760-func setManager (dY) = {
761- let bF = bA(bB)
762- if ((bF == bF))
763- then {
764- let dZ = fromBase58String(dY)
765- if ((dZ == dZ))
766- then [StringEntry(H(), dY)]
767- else throw("Strict value is not equal to itself.")
768- }
769- else throw("Strict value is not equal to itself.")
770- }
771-
772-
773-
774-@Callable(bB)
775-func confirmManager () = {
776- let ea = bz()
777- let eb = if (isDefined(ea))
778- then true
779- else throw("No pending manager")
780- if ((eb == eb))
781- then {
782- let ec = if ((bB.callerPublicKey == value(ea)))
783- then true
784- else throw("You are not pending manager")
785- if ((ec == ec))
786- then [StringEntry(G(), toBase58String(value(ea))), DeleteEntry(H())]
787- else throw("Strict value is not equal to itself.")
788- }
789- else throw("Strict value is not equal to itself.")
790- }
791-
792-
793-@Verifier(ed)
794-func ee () = {
795- let ef = {
753+@Verifier(dS)
754+func dT () = {
755+ let dU = {
796756 let z = bx()
797757 if ($isInstanceOf(z, "ByteVector"))
798758 then {
799- let bD = z
800- bD
759+ let bC = z
760+ bC
801761 }
802762 else if ($isInstanceOf(z, "Unit"))
803- then ed.senderPublicKey
763+ then dS.senderPublicKey
804764 else throw("Match error")
805765 }
806- sigVerify(ed.bodyBytes, ed.proofs[0], ef)
766+ sigVerify(dS.bodyBytes, dS.proofs[0], dU)
807767 }
808768

github/deemru/w8io/873ac7e 
243.52 ms