tx · 5Q4sY49apvAUgv1caA55zV47WLFUbUVcHmoAVNLppp8r

3NAfzeA3URU6oCV6HvtAiNwqGXsTs87ZpHh:  -0.02400000 Waves

2023.02.10 10:54 [2443255] smart account 3NAfzeA3URU6oCV6HvtAiNwqGXsTs87ZpHh > SELF 0.00000000 Waves

{ "type": 13, "id": "5Q4sY49apvAUgv1caA55zV47WLFUbUVcHmoAVNLppp8r", "fee": 2400000, "feeAssetId": null, "timestamp": 1676015664219, "version": 2, "chainId": 84, "sender": "3NAfzeA3URU6oCV6HvtAiNwqGXsTs87ZpHh", "senderPublicKey": "HiTi1JT7GQRqLNxg4yZhD1mV42y1Mv2AYvRx92JQRbwX", "proofs": [ "15QzAudUttPoiQacDAJmLJqGbgWm8MwFnrEdd9DdeKvgpmVEwwDhx3QpoKyjFx9QqfCgggNtNm9DhTRTPsNQtjp" ], "script": "base64:BgJWCAISBAoCAQQSBQoDCAEBEgUKAwgBARIDCgEIEgMKAQgSBAoCCAESBQoDCAEIEgUKAwgBCBIFCgMIAQgSAwoBARIDCgEBEgQKAgEBEgMKAQESBAoCAQFwAAZFVUxFUjgA1onPgQEABU1VTFQ2AMCEPQAGTVVMVFg2CQC2AgEAwIQ9AAVNVUxUOACAwtcvAAZNVUxUWDgJALYCAQCAwtcvAAdNVUxUWDEwCQC2AgEAgMivoCUABk1VTFQxMgCAoJSljR0AB01VTFRYMTYJALYCAQCAgIT+pt7hEQAGTVVMVDE4CQC2AgEAgICQu7rWrfANAANTRVACAl9fABFERUZBVUxUU1dBUEZFRU4yVwCIJwARREVGQVVMVFNXQVBGRUVXMk4AoJwBAAtCUlBST1RFQ1RFRACgjQYAB1dBVkVTSUQJANkEAQIFV0FWRVMACURBWU1JTExJUwCAuJkpARJrZXlOZXV0cmlub0Fzc2V0SWQAAhFuZXV0cmlub19hc3NldF9pZAEOa2V5TnNidEFzc2V0SWQAAg1ib25kX2Fzc2V0X2lkAQ5rZXlTdXJmQXNzZXRJZAACDXN1cmZfYXNzZXRfaWQBFWtleU1pbldhdmVzU3dhcEFtb3VudAACFW1pbl93YXZlc19zd2FwX2Ftb3VudAEYa2V5TWluTmV1dHJpbm9Td2FwQW1vdW50AAIYbWluX25ldXRyaW5vX3N3YXBfYW1vdW50ARJrZXlXYXZlc091dEZlZVBhcnQAAhV3YXZlc091dF9zd2FwX2ZlZVBhcnQBFWtleU5ldXRyaW5vT3V0RmVlUGFydAACGG5ldXRyaW5vT3V0X3N3YXBfZmVlUGFydAETa2V5U3dhcEFtb3VudEFQYXJhbQACGCVzJXNfX2NvbmZpZ19fc3dhcEFQYXJhbQETa2V5U3dhcEFtb3VudEJQYXJhbQACGCVzJXNfX2NvbmZpZ19fc3dhcEJQYXJhbQEXa2V5VXNkblN3YXBBbW91bnRBUGFyYW0AAhwlcyVzX19jb25maWdfX3VzZG5Td2FwQVBhcmFtARdrZXlVc2RuU3dhcEFtb3VudEJQYXJhbQACHCVzJXNfX2NvbmZpZ19fdXNkblN3YXBCUGFyYW0BE2tleU5zYnRMb2NrQ29udHJhY3QAAhQlc19fbnNidExvY2tDb250cmFjdAEPa2V5TWF0aENvbnRyYWN0AAIQJXNfX21hdGhDb250cmFjdAEba2V5QmFsYW5jZVdhdmVzTG9ja0ludGVydmFsAAIbYmFsYW5jZV93YXZlc19sb2NrX2ludGVydmFsAR5rZXlCYWxhbmNlTmV1dHJpbm9Mb2NrSW50ZXJ2YWwAAh5iYWxhbmNlX25ldXRyaW5vX2xvY2tfaW50ZXJ2YWwBD2Jhc2tldEFzc2V0c0tleQACGiVzJXNfX2NvbW1vbl9fYmFza2V0QXNzZXRzAQhrZXlQcmljZQACBXByaWNlARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCAgVzdGFydAUDbmlsBQNTRVABC2tleUhhbGZMaWZlAAIMJXNfX2hhbGZMaWZlARBrZXlNaW5Mb2NrQW1vdW50AAIRJXNfX21pbkxvY2tBbW91bnQBFWtleU1pbldhdmVzRm9yTnNidEJ1eQACEm1pbl93YXZlc19uc2J0X2J1eQEOa2V5TWluTnNidFNlbGwAAg1taW5fbnNidF9zZWxsARdrZXlTdGF0c0RlcG9zaXRBbXRCeURheQEJdGltZXN0YW1wCQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICBXN0YXRzCQDMCAICD2RlcG9zaXRBbXRCeURheQkAzAgCCQCkAwEFCXRpbWVzdGFtcAUDbmlsBQNTRVABDHRvU3RhcnRPZkRheQEJdGltZXN0YW1wCQBoAgkAaQIFCXRpbWVzdGFtcAUJREFZTUlMTElTBQlEQVlNSUxMSVMBD2dldFN0cmluZ09yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckZhaWwCB2FkZHJlc3MDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUHYWRkcmVzcwUDa2V5CQC5CQIJAMwIAgIKbWFuZGF0b3J5IAkAzAgCCQClCAEFB2FkZHJlc3MJAMwIAgIBLgkAzAgCBQNrZXkJAMwIAgIPIGlzIG5vdCBkZWZpbmVkBQNuaWwCAAENZ2V0Qm9vbE9yRmFpbAIHYWRkcmVzcwNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmwgCBQdhZGRyZXNzBQNrZXkJALkJAgkAzAgCAgptYW5kYXRvcnkgCQDMCAIJAKUIAQUHYWRkcmVzcwkAzAgCAgEuCQDMCAIFA2tleQkAzAgCAg8gaXMgbm90IGRlZmluZWQFA25pbAIAAQxnZXRJbnRPckVsc2UDB2FkZHJlc3MDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgUHYWRkcmVzcwUDa2V5BQpkZWZhdWx0VmFsAQxnZXRTdHJPckVsc2UDB2FkZHJlc3MDa2V5CmRlZmF1bHRWYWwJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUHYWRkcmVzcwUDa2V5BQpkZWZhdWx0VmFsARZjb252ZXJ0TmV1dHJpbm9Ub1dhdmVzAgZhbW91bnQFcHJpY2UJAGsDBQZhbW91bnQFBU1VTFQ4BQVwcmljZQEWY29udmVydFdhdmVzVG9OZXV0cmlubwIGYW1vdW50BXByaWNlCQBrAwUGYW1vdW50BQVwcmljZQUFTVVMVDgBCWFzQW55TGlzdAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIJTGlzdFtBbnldBAp2YWxBbnlMaXN0BQckbWF0Y2gwBQp2YWxBbnlMaXN0CQACAQIbZmFpbCB0byBjYXN0IGludG8gTGlzdFtBbnldAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkAAgECFWZhaWwgdG8gY2FzdCBpbnRvIEludAEIYXNTdHJpbmcBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACBlN0cmluZwQGdmFsU3RyBQckbWF0Y2gwBQZ2YWxTdHIJAAIBAhhmYWlsIHRvIGNhc3QgaW50byBTdHJpbmcBDGFzVHVwbGUySW50cwEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIKKEludCwgSW50KQQBdgUHJG1hdGNoMAUBdgkAAgECHWZhaWwgdG8gY2FzdCBpbnRvIFR1cGxlMiBpbnRzARJhc1N3YXBQYXJhbXNTVFJVQ1QBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACIyhJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQpBAZzdHJ1Y3QFByRtYXRjaDAFBnN0cnVjdAkAAgECImZhaWwgdG8gY2FzdCBpbnRvIFN3YXBQYXJhbXNTVFJVQ1QBFmFzV2l0aGRyYXdSZXN1bHRTVFJVQ1QBA3ZhbAQHJG1hdGNoMAUDdmFsAwMJAAECBQckbWF0Y2gwAjEoSW50LCBVbml0LCBJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50LCBTdHJpbmcpBgkAAQIFByRtYXRjaDACNyhJbnQsIEJ5dGVWZWN0b3IsIEludCwgSW50LCBJbnQsIEludCwgSW50LCBJbnQsIFN0cmluZykEBnN0cnVjdAUHJG1hdGNoMAUGc3RydWN0CQACAQIgZmFpbCB0byBjYXN0IGludG8gV2l0aGRyYXdSZXN1bHQBC3RvVGltZXN0YW1wAQVzdGFydAMJAGYCAAAFBXN0YXJ0AP///////////wEEByRtYXRjaDAJAO0HAQUFc3RhcnQDCQABAgUHJG1hdGNoMAIJQmxvY2tJbmZvBAVibG9jawUHJG1hdGNoMAgFBWJsb2NrCXRpbWVzdGFtcAD///////////8BAQV0b1gxOAIHb3JpZ1ZhbA1vcmlnU2NhbGVNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUGTVVMVDE4CQC2AgEFDW9yaWdTY2FsZU11bHQBB2Zyb21YMTgCA3ZhbA9yZXN1bHRTY2FsZU11bHQJAKADAQkAvAIDBQN2YWwJALYCAQUPcmVzdWx0U2NhbGVNdWx0BQZNVUxUMTgAD25NZXRyaWNJZHhQcmljZQAAABtuTWV0cmljSWR4VXNkbkxvY2tlZEJhbGFuY2UAAQAcbk1ldHJpY0lkeFdhdmVzTG9ja2VkQmFsYW5jZQACABFuTWV0cmljSWR4UmVzZXJ2ZQADABduTWV0cmljSWR4UmVzZXJ2ZUluVXNkbgAEABRuTWV0cmljSWR4VXNkblN1cHBseQAFABFuTWV0cmljSWR4U3VycGx1cwAGABhuTWV0cmljSWR4U3VycGx1c1BlcmNlbnQABwAMbk1ldHJpY0lkeEJSAAgAFG5NZXRyaWNJZHhOc2J0U3VwcGx5AAkAF25NZXRyaWNJZHhNYXhOc2J0U3VwcGx5AAoAFG5NZXRyaWNJZHhTdXJmU3VwcGx5AAsAGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAAQAYSWR4Q29udHJvbENmZ0F1Y3Rpb25EYXBwAAIAFElkeENvbnRyb2xDZmdScGREYXBwAAMAFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAEABxJZHhDb250cm9sQ2ZnTGlxdWlkYXRpb25EYXBwAAUAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAGAB1JZHhDb250cm9sQ2ZnTm9kZVJlZ2lzdHJ5RGFwcAAHABxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwAAgAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAACQAcSWR4Q29udHJvbENmZ1N1cmZTdGFraW5nRGFwcAAKACBJZHhDb250cm9sQ2ZnR25zYnRDb250cm9sbGVyRGFwcAALAAxiRnVuY0lkeFN1cmYAAAANYkZ1bmNJZHhXYXZlcwABAAxiRnVuY0lkeFVzZG4AAgAUYkZ1bmNJZHhSZXNlcnZlU3RhcnQAAwATYkZ1bmNJZHhTdXBwbHlTdGFydAAEAA9iRnVuY0lkeEJSU3RhcnQABQASYkZ1bmNJZHhSZXNlcnZlRW5kAAYAEWJGdW5jSWR4U3VwcGx5RW5kAAcADWJGdW5jSWR4QlJFbmQACAAMYkZ1bmNJZHhSZXN0AAkAEmJGdW5jSWR4V2F2ZXNQcmljZQAKARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEUcmVhZENvbnRyb2xDZmdPckZhaWwBB2NvbnRyb2wJALwJAgkBD2dldFN0cmluZ09yRmFpbAIFB2NvbnRyb2wJAQ1rZXlDb250cm9sQ2ZnAAUDU0VQARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCCmNvbnRyb2xDZmcDaWR4CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQkAkQMCBQpjb250cm9sQ2ZnBQNpZHgJAKwCAgItQ29udHJvbCBjZmcgZG9lc24ndCBjb250YWluIGFkZHJlc3MgYXQgaW5kZXggCQCkAwEFA2lkeAAPY29udHJvbENvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARFrZXlDb250cm9sQWRkcmVzcwACIzNONE5TN2Q0Sm85YTZGMTRMaUZVS0tZVmRVa2tmMmVQNFp4AApjb250cm9sQ2ZnCQEUcmVhZENvbnRyb2xDZmdPckZhaWwBBQ9jb250cm9sQ29udHJhY3QADG1hdGhDb250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFFUlkeENvbnRyb2xDZmdNYXRoRGFwcAAQbmV1dHJpbm9Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGUlkeENvbnRyb2xDZmdOZXV0cmlub0RhcHAAD2F1Y3Rpb25Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAATbGlxdWlkYXRpb25Db250cmFjdAkBGGdldENvbnRyYWN0QWRkcmVzc09yRmFpbAIFCmNvbnRyb2xDZmcFHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAAC3JwZENvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUUSWR4Q29udHJvbENmZ1JwZERhcHAAE25zYnRTdGFraW5nQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRxJZHhDb250cm9sQ2ZnTnNidFN0YWtpbmdEYXBwABNzdXJmU3Rha2luZ0NvbnRyYWN0CQEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgUKY29udHJvbENmZwUcSWR4Q29udHJvbENmZ1N1cmZTdGFraW5nRGFwcAAXZ25zYnRDb250cm9sbGVyQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBSBJZHhDb250cm9sQ2ZnR25zYnRDb250cm9sbGVyRGFwcAAVbmV1dHJpbm9Bc3NldElkU3RyaW5nCQEPZ2V0U3RyaW5nT3JGYWlsAgUQbmV1dHJpbm9Db250cmFjdAkBEmtleU5ldXRyaW5vQXNzZXRJZAAAD25ldXRyaW5vQXNzZXRJZAkA2QQBBRVuZXV0cmlub0Fzc2V0SWRTdHJpbmcADm5zYnRBc3NldElkU3RyCQERQGV4dHJOYXRpdmUoMTA1MykCBRBuZXV0cmlub0NvbnRyYWN0CQEOa2V5TnNidEFzc2V0SWQAAAtuc2J0QXNzZXRJZAkA2QQBBQ5uc2J0QXNzZXRJZFN0cgAOc3VyZkFzc2V0SWRTdHIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFD2F1Y3Rpb25Db250cmFjdAkBDmtleVN1cmZBc3NldElkAAALc3VyZkFzc2V0SWQJANkEAQUOc3VyZkFzc2V0SWRTdHIBFHJlYWRVc2RuSW5jb21lRm9yRGF5AwpzdGFraW5nQWNjE3N0YXJ0T2ZEYXlUaW1lc3RhbXAPbmV1dHJpbm9NZXRyaWNzBAthbXRCeURheUtFWQkBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQUTc3RhcnRPZkRheVRpbWVzdGFtcAQJaW5jb21lU3RyCQEMZ2V0U3RyT3JFbHNlAwUKc3Rha2luZ0FjYwULYW10QnlEYXlLRVkCCiVzJXNfXzBfXzAEC2luY29tZUFycmF5CQC1CQIFCWluY29tZVN0cgUDU0VQBAh3YXZlc0FtdAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFC2luY29tZUFycmF5AAEEB3VzZG5BbXQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQtpbmNvbWVBcnJheQACBAxjdXJyZW50UHJpY2UJAQVhc0ludAEJAJEDAgUPbmV1dHJpbm9NZXRyaWNzBQ9uTWV0cmljSWR4UHJpY2UEDndhdmVzQXNVc2RuQW10CQBrAwUId2F2ZXNBbXQFDGN1cnJlbnRQcmljZQUFTVVMVDgJAGQCBQ53YXZlc0FzVXNkbkFtdAUHdXNkbkFtdAEXY2FsY1VzZG5JbmNvbWVGb3JQZXJpb2QCCnN0YWtpbmdBY2MEZGF5cwQPbmV1dHJpbm9NZXRyaWNzCQEJYXNBbnlMaXN0AQkA/AcEBQxtYXRoQ29udHJhY3QCGmNhbGNOZXV0aW5vTWV0cmljc1JFQURPTkxZBQNuaWwFA25pbAQOY3VyclN0YXJ0T2ZEYXkJAQx0b1N0YXJ0T2ZEYXkBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQOc3RhcnRUaW1lc3RhbXAJAGUCBQ5jdXJyU3RhcnRPZkRheQkAaAIFCURBWU1JTExJUwkAZAIFBGRheXMAAQQMZW5kVGltZXN0YW1wCQBlAgUOY3VyclN0YXJ0T2ZEYXkFCURBWU1JTExJUwQPc3RhcnRVc2RuQW10VE1QCQEUcmVhZFVzZG5JbmNvbWVGb3JEYXkDBQpzdGFraW5nQWNjBQ5zdGFydFRpbWVzdGFtcAUPbmV1dHJpbm9NZXRyaWNzBAplbmRVc2RuQW10CQEUcmVhZFVzZG5JbmNvbWVGb3JEYXkDBQpzdGFraW5nQWNjBQxlbmRUaW1lc3RhbXAFD25ldXRyaW5vTWV0cmljcwQMc3RhcnRVc2RuQW10AwkAAAIFD3N0YXJ0VXNkbkFtdFRNUAAABQplbmRVc2RuQW10BQ9zdGFydFVzZG5BbXRUTVAJAGUCBQplbmRVc2RuQW10BQxzdGFydFVzZG5BbXQBB2NhbGNBcHIECnN0YWtpbmdBY2MMcGVyaW9kSW5EYXlzD2luY29tZUZvclBlcmlvZBlzdGFraW5nQXNzZXRQcmljZVRvVXNkblg2BAt0b3RhbFN0YWtlZAkBDGdldEludE9yRWxzZQMFCnN0YWtpbmdBY2MCHiVzJXNfX3N0YXRzX19hY3RpdmVUb3RhbExvY2tlZAABBBF0b3RhbFN0YWtlZEluVXNkbgkAawMFC3RvdGFsU3Rha2VkBRlzdGFraW5nQXNzZXRQcmljZVRvVXNkblg2BQVNVUxUNgMJAGYCAAAFD2luY29tZUZvclBlcmlvZAAACQBrAwkAaAIFD2luY29tZUZvclBlcmlvZAUFTVVMVDYA7QIJAGgCBRF0b3RhbFN0YWtlZEluVXNkbgUMcGVyaW9kSW5EYXlzDgFpARhyZXZlcnNlU3dhcExpbWl0UkVBRE9OTFkCA2xpbQtpc1dhdmVzU3dhcAQCQlIJAQVhc0ludAEJAJEDAgkBCWFzQW55TGlzdAEJAPwHBAUMbWF0aENvbnRyYWN0AhpjYWxjTmV1dGlub01ldHJpY3NSRUFET05MWQUDbmlsBQNuaWwFDG5NZXRyaWNJZHhCUgQFZ05zYnQDCQBnAgAABQNsaW0AAAQIYVBhcmFtWDgJALYCAQkBDGdldEludE9yRmFpbAIFDG1hdGhDb250cmFjdAMFC2lzV2F2ZXNTd2FwCQETa2V5U3dhcEFtb3VudEFQYXJhbQAJARdrZXlVc2RuU3dhcEFtb3VudEFQYXJhbQAECWJQYXJhbVgxNgkAtgIBCQEMZ2V0SW50T3JGYWlsAgUMbWF0aENvbnRyYWN0AwULaXNXYXZlc1N3YXAJARNrZXlTd2FwQW1vdW50QlBhcmFtAAkBF2tleVVzZG5Td2FwQW1vdW50QlBhcmFtAAQJbGltRGl2QVg4AwULaXNXYXZlc1N3YXAJALwCAwkAtgIBBQNsaW0FB01VTFRYMTAFCGFQYXJhbVg4CQC8AgMJALwCAwkAtgIBBQNsaW0FB01VTFRYMTAFCGFQYXJhbVg4BQZNVUxUWDYJALYCAQUCQlIEB3JldkJYMTYJALwCAwUHTVVMVFgxNgUHTVVMVFgxNgUJYlBhcmFtWDE2CQCgAwEJAHYGBQlsaW1EaXZBWDgACAUHcmV2QlgxNgAQAAYFB0NFSUxJTkcJAJQKAgUDbmlsBQVnTnNidAFpARFnbnNidEluZm9JTlRFUk5BTAMVdXNlckFkZHJlc3NTdHJPckVtcHR5G2FkZGl0aW9uYWxOc2J0VG9TdGFrZU9yWmVybxthZGRpdGlvbmFsU3VyZlRvU3Rha2VPclplcm8EEXVzZXJBZGRyZXNzT3JUaGlzAwkBAiE9AgUVdXNlckFkZHJlc3NTdHJPckVtcHR5AgAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQUEdGhpcwQMY3VycmVudFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9jb250cm9sQ29udHJhY3QJAQhrZXlQcmljZQAEEWduc2J0RnJvbU5zYnREaWZmBRthZGRpdGlvbmFsTnNidFRvU3Rha2VPclplcm8EEWduc2J0RnJvbVN1cmZEaWZmCQEFYXNJbnQBCQD8BwQFE3N1cmZTdGFraW5nQ29udHJhY3QCGGduc2J0RnJvbVN1cmZTWVNSRUFET05MWQkAzAgCBRthZGRpdGlvbmFsU3VyZlRvU3Rha2VPclplcm8FA25pbAUDbmlsBAlnTnNidERpZmYJAGQCBRFnbnNidEZyb21Oc2J0RGlmZgURZ25zYnRGcm9tU3VyZkRpZmYED3N3YXBQYXJhbXNUdXBsZQkBEmFzU3dhcFBhcmFtc1NUUlVDVAEJAPwHBAUQbmV1dHJpbm9Db250cmFjdAIbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZCQDMCAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQkAzAgCAAAFA25pbAUDbmlsBA5ibGNrczJMbXRSZXNldAgFD3N3YXBQYXJhbXNUdXBsZQJfMwQIZ25zYnRBbXQIBQ9zd2FwUGFyYW1zVHVwbGUCXzQEDWduc2J0QW10VG90YWwIBQ9zd2FwUGFyYW1zVHVwbGUCXzUEDWxpbWl0TWF4V2F2ZXMIBQ9zd2FwUGFyYW1zVHVwbGUCXzYEDGxpbWl0TWF4VXNkbggFD3N3YXBQYXJhbXNUdXBsZQJfNwQSc3dhcFBhcmFtc1R1cGxlTkVXCQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/AcEBRBuZXV0cmlub0NvbnRyYWN0Ahtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5CQDMCAIFCWdOc2J0RGlmZgUDbmlsBQNuaWwEEWJsY2tzMkxtdFJlc2V0TkVXCAUSc3dhcFBhcmFtc1R1cGxlTkVXAl8zBAtnbnNidEFtdE5FVwgFEnN3YXBQYXJhbXNUdXBsZU5FVwJfNAQQZ25zYnRBbXRUb3RhbE5FVwgFEnN3YXBQYXJhbXNUdXBsZU5FVwJfNQQQbGltaXRNYXhXYXZlc05FVwgFEnN3YXBQYXJhbXNUdXBsZU5FVwJfNgQPbGltaXRNYXhVc2RuTkVXCAUSc3dhcFBhcmFtc1R1cGxlTkVXAl83BAtuc2J0QmFsYW5jZQMJAQIhPQIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQIACQDwBwIFEXVzZXJBZGRyZXNzT3JUaGlzBQtuc2J0QXNzZXRJZAAABAtzdXJmQmFsYW5jZQMJAQIhPQIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQIACQDwBwIFEXVzZXJBZGRyZXNzT3JUaGlzBQtzdXJmQXNzZXRJZAAABA9uc2J0QmFsYW5jZURpZmYDCQBnAgUbYWRkaXRpb25hbE5zYnRUb1N0YWtlT3JaZXJvAAAFG2FkZGl0aW9uYWxOc2J0VG9TdGFrZU9yWmVybwQRbnNidFVuc3Rha2luZ0RhdGEJAQlhc0FueUxpc3QBCQD8BwQFE25zYnRTdGFraW5nQ29udHJhY3QCGG5zYnRVbnN0YWtpbmdTWVNSRUFET05MWQkAzAgCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkJAMwIAgkAaAIA////////////AQUbYWRkaXRpb25hbE5zYnRUb1N0YWtlT3JaZXJvBQNuaWwFA25pbAQRbnNidFJlY2VpdmVBbW91bnQJAQVhc0ludAEJAJEDAgURbnNidFVuc3Rha2luZ0RhdGEAAgQGcmVzdWx0CQEBLQEFEW5zYnRSZWNlaXZlQW1vdW50BQZyZXN1bHQEDm5zYnRCYWxhbmNlTmV3CQBlAgULbnNidEJhbGFuY2UFD25zYnRCYWxhbmNlRGlmZgQOc3VyZkJhbGFuY2VOZXcJAGUCBQtzdXJmQmFsYW5jZQUbYWRkaXRpb25hbFN1cmZUb1N0YWtlT3JaZXJvBAlnbnNidERhdGEJAQlhc0FueUxpc3QBCQD8BwQFF2duc2J0Q29udHJvbGxlckNvbnRyYWN0AhRnbnNidEluZm9TWVNSRUFET05MWQkAzAgCBRV1c2VyQWRkcmVzc1N0ck9yRW1wdHkJAMwIAgUbYWRkaXRpb25hbE5zYnRUb1N0YWtlT3JaZXJvCQDMCAIFG2FkZGl0aW9uYWxTdXJmVG9TdGFrZU9yWmVybwUDbmlsBQNuaWwECWduc2J0VXNlcgkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEAAAQKZ25zYnRUb3RhbAkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEAAQQIbnNidERhdGEJAQlhc0FueUxpc3QBCQCRAwIFCWduc2J0RGF0YQACBAhzdXJmRGF0YQkBCWFzQW55TGlzdAEJAJEDAgUJZ25zYnREYXRhAAMEEXZwRWZmZWN0aXZlSGVpZ2h0CQEFYXNJbnQBCQCRAwIFCWduc2J0RGF0YQAEBBR2cEVmZmVjdGl2ZUhlaWdodE5FVwkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEABQQQZ25zYnRBbXRGcm9tTnNidAkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQACBBBnbnNidEFtdEZyb21TdXJmCQEFYXNJbnQBCQCRAwIFCHN1cmZEYXRhAAIEE2duc2J0QW10RnJvbU5zYnRORVcJAGQCBRBnbnNidEFtdEZyb21Oc2J0BRFnbnNidEZyb21Oc2J0RGlmZgQTZ25zYnRBbXRGcm9tU3VyZk5FVwkAZAIFEGduc2J0QW10RnJvbVN1cmYFEWduc2J0RnJvbVN1cmZEaWZmBBJnbnNidEZyb21Oc2J0VG90YWwJAQVhc0ludAEJAJEDAgUIbnNidERhdGEAAwQSZ25zYnRGcm9tU3VyZlRvdGFsCQEFYXNJbnQBCQCRAwIFCHN1cmZEYXRhAAMEGGduc2J0RnJvbVN1cmZBY3RpdmVUb3RhbAAABBhnbnNidEZyb21TdXJmRnJvemVuVG90YWwFEmduc2J0RnJvbVN1cmZUb3RhbAQVZ25zYnRGcm9tTnNidFRvdGFsTkVXCQBkAgUSZ25zYnRGcm9tTnNidFRvdGFsBRFnbnNidEZyb21Oc2J0RGlmZgQVZ25zYnRGcm9tU3VyZlRvdGFsTkVXCQBkAgUSZ25zYnRGcm9tU3VyZlRvdGFsBRFnbnNidEZyb21TdXJmRGlmZgQbZ25zYnRGcm9tU3VyZkZyb3plblRvdGFsTkVXBRVnbnNidEZyb21TdXJmVG90YWxORVcEC3ZvdGluZ1Bvd2VyCQBrAwUQZ25zYnRBbXRGcm9tTnNidAUFTVVMVDgJAGQCBRJnbnNidEZyb21Oc2J0VG90YWwFGGduc2J0RnJvbVN1cmZBY3RpdmVUb3RhbAQOdm90aW5nUG93ZXJOZXcJAGsDBRNnbnNidEFtdEZyb21Oc2J0TkVXBQVNVUxUOAkAZAIFFWduc2J0RnJvbU5zYnRUb3RhbE5FVwUYZ25zYnRGcm9tU3VyZkFjdGl2ZVRvdGFsBA52b3RpbmdQb3dlck1heAkAawMJAGQCBRBnbnNidEFtdEZyb21Oc2J0BRBnbnNidEFtdEZyb21TdXJmBQVNVUxUOAkAZAIJAGQCBRJnbnNidEZyb21Oc2J0VG90YWwFGGduc2J0RnJvbVN1cmZBY3RpdmVUb3RhbAUYZ25zYnRGcm9tU3VyZkZyb3plblRvdGFsBBF2b3RpbmdQb3dlck1heE5ldwkAawMJAGQCBRNnbnNidEFtdEZyb21Oc2J0TkVXBRNnbnNidEFtdEZyb21TdXJmTkVXBQVNVUxUOAkAZAIJAGQCBRVnbnNidEZyb21Oc2J0VG90YWxORVcFGGduc2J0RnJvbVN1cmZBY3RpdmVUb3RhbAUbZ25zYnRGcm9tU3VyZkZyb3plblRvdGFsTkVXBA52b3RpbmdQb3dlckV0YQMJAAACBRF2cEVmZmVjdGl2ZUhlaWdodAAABQZoZWlnaHQFEXZwRWZmZWN0aXZlSGVpZ2h0BBF2b3RpbmdQb3dlckV0YU5ldwMJAAACBRR2cEVmZmVjdGl2ZUhlaWdodE5FVwAABQZoZWlnaHQFFHZwRWZmZWN0aXZlSGVpZ2h0TkVXCQCUCgIFA25pbAkAzAgCAAAJAMwIAgULbnNidEJhbGFuY2UJAMwIAgULc3VyZkJhbGFuY2UJAMwIAgUObnNidEJhbGFuY2VOZXcJAMwIAgUOc3VyZkJhbGFuY2VOZXcJAMwIAgUQZ25zYnRBbXRGcm9tTnNidAkAzAgCBRBnbnNidEFtdEZyb21TdXJmCQDMCAIFE2duc2J0QW10RnJvbU5zYnRORVcJAMwIAgUTZ25zYnRBbXRGcm9tU3VyZk5FVwkAzAgCBRJnbnNidEZyb21Oc2J0VG90YWwJAMwIAgUSZ25zYnRGcm9tU3VyZlRvdGFsCQDMCAIFFWduc2J0RnJvbU5zYnRUb3RhbE5FVwkAzAgCBRVnbnNidEZyb21TdXJmVG90YWxORVcJAMwIAgUMbGltaXRNYXhVc2RuCQDMCAIFDWxpbWl0TWF4V2F2ZXMJAMwIAgUPbGltaXRNYXhVc2RuTkVXCQDMCAIFEGxpbWl0TWF4V2F2ZXNORVcJAMwIAgUOYmxja3MyTG10UmVzZXQJAMwIAgURYmxja3MyTG10UmVzZXRORVcJAMwIAgULdm90aW5nUG93ZXIJAMwIAgUOdm90aW5nUG93ZXJOZXcJAMwIAgUOdm90aW5nUG93ZXJNYXgJAMwIAgURdm90aW5nUG93ZXJNYXhOZXcJAMwIAgUOdm90aW5nUG93ZXJFdGEJAMwIAgURdm90aW5nUG93ZXJFdGFOZXcFA25pbAFpARFnbnNidEluZm9SRUFET05MWQMVdXNlckFkZHJlc3NTdHJPckVtcHR5G2FkZGl0aW9uYWxOc2J0VG9TdGFrZU9yWmVybxthZGRpdGlvbmFsU3VyZlRvU3Rha2VPclplcm8EDWduc2J0SW5mb0RBVEEJAQlhc0FueUxpc3QBCQD8BwQFBHRoaXMCEWduc2J0SW5mb0lOVEVSTkFMCQDMCAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQkAzAgCBRthZGRpdGlvbmFsTnNidFRvU3Rha2VPclplcm8JAMwIAgUbYWRkaXRpb25hbFN1cmZUb1N0YWtlT3JaZXJvBQNuaWwFA25pbAkAlAoCBQNuaWwJALkJAgkAzAgCAjAlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAAQkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQACCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAMJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEABAkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAFCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAYJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEABwkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAICQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAkJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEACgkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQALCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAAwJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEADQkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAOCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBAA8JAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAEAkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQARCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBABIJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAEwkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAUCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBABUJAMwIAgkApAMBCQEFYXNJbnQBCQCRAwIFDWduc2J0SW5mb0RBVEEAFgkAzAgCCQCkAwEJAQVhc0ludAEJAJEDAgUNZ25zYnRJbmZvREFUQQAXCQDMCAIJAKQDAQkBBWFzSW50AQkAkQMCBQ1nbnNidEluZm9EQVRBABgFA25pbAUDU0VQAWkBFmduc2J0RWZmZWN0aXZlUkVBRE9OTFkBFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQJZ25zYnREYXRhCQEJYXNBbnlMaXN0AQkA/AcEBRdnbnNidENvbnRyb2xsZXJDb250cmFjdAIUZ25zYnRJbmZvU1lTUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5CQDMCAIAAAkAzAgCAAAFA25pbAUDbmlsBAhuc2J0RGF0YQkBCWFzQW55TGlzdAEJAJEDAgUJZ25zYnREYXRhAAIEDHVzZXJGcm9tTnNidAkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQACBA10b3RhbEZyb21Oc2J0CQEFYXNJbnQBCQCRAwIFCG5zYnREYXRhAAMEEnVzZXJNYXR1cmVGcm9tU3VyZgkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEACQQTdG90YWxNYXR1cmVGcm9tU3VyZgkBBWFzSW50AQkAkQMCBQlnbnNidERhdGEABgkAlAoCBQNuaWwJALkJAgkAzAgCAgQlZCVkCQDMCAIJAKQDAQkAZAIFDXRvdGFsRnJvbU5zYnQFE3RvdGFsTWF0dXJlRnJvbVN1cmYJAMwIAgkApAMBCQBkAgUMdXNlckZyb21Oc2J0BRJ1c2VyTWF0dXJlRnJvbVN1cmYFA25pbAUDU0VQAWkBEnJld2FyZEluZm9SRUFET05MWQEVdXNlckFkZHJlc3NTdHJPckVtcHR5BAtyZXdhcmRzRGF0YQkBCWFzQW55TGlzdAEJAPwHBAUXZ25zYnRDb250cm9sbGVyQ29udHJhY3QCF2duc2J0UmV3YXJkc1NZU1JFQURPTkxZCQDMCAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQUDbmlsBQNuaWwEC3VzZG5SZXdhcmRzCQEIYXNTdHJpbmcBCQD8BwQFC3JwZENvbnRyYWN0Ahh1bmNsYWltZWRSZXdhcmRzUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5BQNuaWwFA25pbAkAlAoCBQNuaWwJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgkBCGFzU3RyaW5nAQkAkQMCBQtyZXdhcmRzRGF0YQAACQDMCAIJAQhhc1N0cmluZwEJAJEDAgULcmV3YXJkc0RhdGEAAQkAzAgCBQt1c2RuUmV3YXJkcwUDbmlsBQNTRVABaQERbWVyZ2VOc2J0UkVBRE9OTFkCFHVzZXJBZGRyZXNzTWFuZGF0b3J5CW5ld0Ftb3VudAQIbnNidERhdGEJAQlhc0FueUxpc3QBCQD8BwQFE25zYnRTdGFraW5nQ29udHJhY3QCFm5zYnRTdGFraW5nU1lTUkVBRE9OTFkJAMwIAgUUdXNlckFkZHJlc3NNYW5kYXRvcnkJAMwIAgUJbmV3QW1vdW50BQNuaWwFA25pbAQHYW1vdW50MAkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQAABAtzdGFydEhlaWdodAMJAGcCAAAFB2Ftb3VudDAA////////////AQkBBWFzSW50AQkAkQMCBQhuc2J0RGF0YQACBA5zdGFydFRpbWVzdGFtcAkBC3RvVGltZXN0YW1wAQULc3RhcnRIZWlnaHQEDnN0YXJ0SGVpZ2h0TmV3AwkAZwIAAAUJbmV3QW1vdW50BQtzdGFydEhlaWdodAMJAGcCAAAFB2Ftb3VudDAFBmhlaWdodAQIaGFsZkxpZmUJAQxnZXRJbnRPckZhaWwCBRNuc2J0U3Rha2luZ0NvbnRyYWN0CQELa2V5SGFsZkxpZmUACQEFYXNJbnQBCQD8BwQFDG1hdGhDb250cmFjdAITbWVyZ2VTdGFrZXNSRUFET05MWQkAzAgCBQdhbW91bnQwCQDMCAIFC3N0YXJ0SGVpZ2h0CQDMCAIFCW5ld0Ftb3VudAkAzAgCBQZoZWlnaHQJAMwIAgUIaGFsZkxpZmUFA25pbAUDbmlsBBFzdGFydFRpbWVzdGFtcE5ldwkBC3RvVGltZXN0YW1wAQUOc3RhcnRIZWlnaHROZXcJAJQKAgUDbmlsCQC5CQIJAMwIAgIIJWQlZCVkJWQJAMwIAgkApAMBBQtzdGFydEhlaWdodAkAzAgCCQCkAwEFDnN0YXJ0VGltZXN0YW1wCQDMCAIJAKQDAQUOc3RhcnRIZWlnaHROZXcJAMwIAgkApAMBBRFzdGFydFRpbWVzdGFtcE5ldwUDbmlsBQNTRVABaQEbc3dhcExpbWl0Q2FsY3VsYXRvclJFQURPTkxZAxF1c2VyQWRkcmVzc1N0ck9wdAtsaW1pdFdhbnRlZAphc3NldElkU3RyBAxnTnNidEN1cnJlbnQDCQAAAgURdXNlckFkZHJlc3NTdHJPcHQCAAAACQEFYXNJbnQBCAkBEmFzU3dhcFBhcmFtc1NUUlVDVAEJAPwHBAUQbmV1dHJpbm9Db250cmFjdAIbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZCQDMCAIFEXVzZXJBZGRyZXNzU3RyT3B0CQDMCAIAAAUDbmlsBQNuaWwCXzQED2xpbWl0V2FudGVkVXNkbgMJAAACBQphc3NldElkU3RyAgVXQVZFUwkBFmNvbnZlcnRXYXZlc1RvTmV1dHJpbm8CBQtsaW1pdFdhbnRlZAkBEUBleHRyTmF0aXZlKDEwNTApAgUPY29udHJvbENvbnRyYWN0CQEIa2V5UHJpY2UABQtsaW1pdFdhbnRlZAQLZ05zYnROZWVkZWQJAQVhc0ludAEJAPwHBAUEdGhpcwIYcmV2ZXJzZVN3YXBMaW1pdFJFQURPTkxZCQDMCAIFD2xpbWl0V2FudGVkVXNkbgkAzAgCCQAAAgUKYXNzZXRJZFN0cgIFV0FWRVMFA25pbAUDbmlsBApnTnNidERlbHRhCQBlAgULZ05zYnROZWVkZWQFDGdOc2J0Q3VycmVudAkAlAoCBQNuaWwJALkJAgkAzAgCAgQlcyVzCQDMCAIJAKQDAQUMZ05zYnRDdXJyZW50CQDMCAIJAKQDAQUKZ05zYnREZWx0YQUDbmlsBQNTRVABaQEQc3dhcEluZm9SRUFET05MWQMVdXNlckFkZHJlc3NTdHJPckVtcHR5BmFtb3VudAphc3NldElkU3RyBA9uZXV0cmlub01ldHJpY3MJAQlhc0FueUxpc3QBCQD8BwQFDG1hdGhDb250cmFjdAIaY2FsY05ldXRpbm9NZXRyaWNzUkVBRE9OTFkFA25pbAUDbmlsBAVwcmljZQkBBWFzSW50AQkAkQMCBQ9uZXV0cmlub01ldHJpY3MFD25NZXRyaWNJZHhQcmljZQQPc3dhcFBhcmFtc1R1cGxlCQESYXNTd2FwUGFyYW1zU1RSVUNUAQkA/AcEBRBuZXV0cmlub0NvbnRyYWN0Ahtzd2FwUGFyYW1zQnlVc2VyU1lTUkVBRE9OTFkJAMwIAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5CQDMCAIAAAUDbmlsBQNuaWwEDmJsY2tzMkxtdFJlc2V0CAUPc3dhcFBhcmFtc1R1cGxlAl8zBA1saW1pdE1heFdhdmVzCAUPc3dhcFBhcmFtc1R1cGxlAl82BAxsaW1pdE1heFVzZG4IBQ9zd2FwUGFyYW1zVHVwbGUCXzcEB2Fzc2V0SWQJANkEAQUKYXNzZXRJZFN0cgQMYmFza2V0QXNzZXRzCQELdmFsdWVPckVsc2UCCQCdCAIFEG5ldXRyaW5vQ29udHJhY3QJAQ9iYXNrZXRBc3NldHNLZXkAAgVXQVZFUwQIc3dhcFR5cGUDCQEIY29udGFpbnMCBQxiYXNrZXRBc3NldHMFCmFzc2V0SWRTdHICC291dE5ldXRyaW5vAwkAAAIFB2Fzc2V0SWQFD25ldXRyaW5vQXNzZXRJZAIIb3V0TXVsdGkJAAIBCQCsAgICE0Nhbid0IHN3YXAgYXNzZXRJZD0FCmFzc2V0SWRTdHIEDXdpdGhkcmF3VHVwbGUJARZhc1dpdGhkcmF3UmVzdWx0U1RSVUNUAQkA/AcEBRBuZXV0cmlub0NvbnRyYWN0Ah1jYWxjV2l0aGRyYXdSZXN1bHRTWVNSRUFET05MWQkAzAgCBQhzd2FwVHlwZQkAzAgCBQZhbW91bnQJAMwIAgUFcHJpY2UJAMwIAgUKYXNzZXRJZFN0cgUDbmlsBQNuaWwEDG91dE5ldEFtb3VudAgFDXdpdGhkcmF3VHVwbGUCXzEECm91dEFzc2V0SWQIBQ13aXRoZHJhd1R1cGxlAl8yBApvdXRTdXJmQW10CAUNd2l0aGRyYXdUdXBsZQJfMwQPaW5BbXRUb1N1cmZQYXJ0CAUNd2l0aGRyYXdUdXBsZQJfNAQKdW5sZWFzZUFtdAgFDXdpdGhkcmF3VHVwbGUCXzUEDG91dEZlZUFtb3VudAgFDXdpdGhkcmF3VHVwbGUCXzYEC291dEFtdEdyb3NzCAUNd2l0aGRyYXdUdXBsZQJfNwQNd2l0aGRyYXdQcmljZQgFDXdpdGhkcmF3VHVwbGUCXzgJAJQKAgUDbmlsCQC5CQIJAMwIAgIQJWQlZCVkJWQlZCVkJWQlZAkAzAgCCQCkAwEFDG91dE5ldEFtb3VudAkAzAgCCQCkAwEFCm91dFN1cmZBbXQJAMwIAgkApAMBBQxvdXRGZWVBbW91bnQJAMwIAgkApAMBBQ13aXRoZHJhd1ByaWNlCQDMCAIJAKQDAQUOYmxja3MyTG10UmVzZXQJAMwIAgkApAMBBQ1saW1pdE1heFdhdmVzCQDMCAIJAKQDAQUMbGltaXRNYXhVc2RuCQDMCAIJAKQDAQUPaW5BbXRUb1N1cmZQYXJ0BQNuaWwFA1NFUAFpARJzd2FwSW5mb1YyUkVBRE9OTFkDFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQZhbW91bnQKYXNzZXRJZFN0cgQPbmV1dHJpbm9NZXRyaWNzCQEJYXNBbnlMaXN0AQkA/AcEBQxtYXRoQ29udHJhY3QCGmNhbGNOZXV0aW5vTWV0cmljc1JFQURPTkxZBQNuaWwFA25pbAQFcHJpY2UJAQVhc0ludAEJAJEDAgUPbmV1dHJpbm9NZXRyaWNzBQ9uTWV0cmljSWR4UHJpY2UED3N3YXBQYXJhbXNUdXBsZQkBEmFzU3dhcFBhcmFtc1NUUlVDVAEJAPwHBAUQbmV1dHJpbm9Db250cmFjdAIbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZCQDMCAIFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQkAzAgCAAAFA25pbAUDbmlsBA5ibGNrczJMbXRSZXNldAgFD3N3YXBQYXJhbXNUdXBsZQJfMwQNbGltaXRNYXhXYXZlcwgFD3N3YXBQYXJhbXNUdXBsZQJfNgQMbGltaXRNYXhVc2RuCAUPc3dhcFBhcmFtc1R1cGxlAl83BAdhc3NldElkCQDZBAEFCmFzc2V0SWRTdHIEDGJhc2tldEFzc2V0cwkBC3ZhbHVlT3JFbHNlAgkAnQgCBRBuZXV0cmlub0NvbnRyYWN0CQEPYmFza2V0QXNzZXRzS2V5AAIFV0FWRVMECHN3YXBUeXBlAwkBCGNvbnRhaW5zAgUMYmFza2V0QXNzZXRzBQphc3NldElkU3RyAgtvdXROZXV0cmlubwMJAAACBQdhc3NldElkBQ9uZXV0cmlub0Fzc2V0SWQCCG91dE11bHRpCQACAQkArAICAhNDYW4ndCBzd2FwIGFzc2V0SWQ9BQphc3NldElkU3RyBA13aXRoZHJhd1R1cGxlCQEWYXNXaXRoZHJhd1Jlc3VsdFNUUlVDVAEJAPwHBAUQbmV1dHJpbm9Db250cmFjdAIdY2FsY1dpdGhkcmF3UmVzdWx0U1lTUkVBRE9OTFkJAMwIAgUIc3dhcFR5cGUJAMwIAgUGYW1vdW50CQDMCAIFBXByaWNlCQDMCAIFCmFzc2V0SWRTdHIFA25pbAUDbmlsBAxvdXROZXRBbW91bnQIBQ13aXRoZHJhd1R1cGxlAl8xBApvdXRBc3NldElkCAUNd2l0aGRyYXdUdXBsZQJfMgQKb3V0U3VyZkFtdAgFDXdpdGhkcmF3VHVwbGUCXzMED2luQW10VG9TdXJmUGFydAgFDXdpdGhkcmF3VHVwbGUCXzQECnVubGVhc2VBbXQIBQ13aXRoZHJhd1R1cGxlAl81BAxvdXRGZWVBbW91bnQIBQ13aXRoZHJhd1R1cGxlAl82BAtvdXRBbXRHcm9zcwgFDXdpdGhkcmF3VHVwbGUCXzcEDXdpdGhkcmF3UHJpY2UIBQ13aXRoZHJhd1R1cGxlAl84BA53aXRoZHJhd0Jhc2tldAgFDXdpdGhkcmF3VHVwbGUCXzkJAJQKAgUDbmlsCQC5CQIJAMwIAgISJWQlZCVkJWQlZCVkJWQlZCVzCQDMCAIJAKQDAQUMb3V0TmV0QW1vdW50CQDMCAIJAKQDAQUKb3V0U3VyZkFtdAkAzAgCCQCkAwEFDG91dEZlZUFtb3VudAkAzAgCCQCkAwEFDXdpdGhkcmF3UHJpY2UJAMwIAgkApAMBBQ5ibGNrczJMbXRSZXNldAkAzAgCCQCkAwEFDWxpbWl0TWF4V2F2ZXMJAMwIAgkApAMBBQxsaW1pdE1heFVzZG4JAMwIAgkApAMBBQ9pbkFtdFRvU3VyZlBhcnQJAMwIAgUOd2l0aGRyYXdCYXNrZXQFA25pbAUDU0VQAWkBFnVzZG5TdGFraW5nQXByUkVBRE9OTFkBBGRheXMEB3RtcERheXMAAQQPbmV1dHJpbm9NZXRyaWNzCQEJYXNBbnlMaXN0AQkA/AcEBQxtYXRoQ29udHJhY3QCGmNhbGNOZXV0aW5vTWV0cmljc1JFQURPTkxZBQNuaWwFA25pbAQMY3VycmVudFByaWNlCQEFYXNJbnQBCQCRAwIFD25ldXRyaW5vTWV0cmljcwUPbk1ldHJpY0lkeFByaWNlBAt3YXZlc0luY29tZQkAaAIAAAUFTVVMVDgED2luY29tZUZvclBlcmlvZAkAawMFC3dhdmVzSW5jb21lBQxjdXJyZW50UHJpY2UFBU1VTFQ4BANhcHIJAQdjYWxjQXByBAULcnBkQ29udHJhY3QFB3RtcERheXMFD2luY29tZUZvclBlcmlvZAUFTVVMVDYJAJQKAgUDbmlsCQCsAgICBCVkX18JAKQDAQUDYXByAWkBFnN1cmZTdGFraW5nQXByUkVBRE9OTFkBBGRheXMEB3RtcERheXMAAwQPaW5jb21lRm9yUGVyaW9kCQEXY2FsY1VzZG5JbmNvbWVGb3JQZXJpb2QCBRNzdXJmU3Rha2luZ0NvbnRyYWN0BQd0bXBEYXlzBBFzdXJmUHJpY2VUb1VzZG5YNgCAowUEA2FwcgkBB2NhbGNBcHIEBRNzdXJmU3Rha2luZ0NvbnRyYWN0BQd0bXBEYXlzBQ9pbmNvbWVGb3JQZXJpb2QFEXN1cmZQcmljZVRvVXNkblg2CQCUCgIFA25pbAkArAICAgQlZF9fCQCkAwEFA2FwcgFpARhzdXJmU3Rha2luZ0FwclYyUkVBRE9OTFkCBGRheXMPc3VyZlVzZG5QcmljZVg2BAd0bXBEYXlzAAMED2luY29tZUZvclBlcmlvZAkBF2NhbGNVc2RuSW5jb21lRm9yUGVyaW9kAgUTc3VyZlN0YWtpbmdDb250cmFjdAUHdG1wRGF5cwQDYXByCQEHY2FsY0FwcgQFE3N1cmZTdGFraW5nQ29udHJhY3QFB3RtcERheXMFD2luY29tZUZvclBlcmlvZAUPc3VyZlVzZG5QcmljZVg2CQCUCgIFA25pbAkArAICAgQlZF9fCQCkAwEFA2FwcgFpARZuc2J0U3Rha2luZ0FwclJFQURPTkxZAQRkYXlzBAd0bXBEYXlzAAMEEW5zYnRQcmljZVRvVXNkblg2AICk6AMED2luY29tZUZvclBlcmlvZAkBF2NhbGNVc2RuSW5jb21lRm9yUGVyaW9kAgUTbnNidFN0YWtpbmdDb250cmFjdAUHdG1wRGF5cwQDYXByCQEHY2FsY0FwcgQFE25zYnRTdGFraW5nQ29udHJhY3QFB3RtcERheXMFD2luY29tZUZvclBlcmlvZAURbnNidFByaWNlVG9Vc2RuWDYJAJQKAgUDbmlsCQCsAgICBCVkX18JAKQDAQUDYXByAWkBGG5zYnRTdGFraW5nQXByVjJSRUFET05MWQIEZGF5cw9uc2J0VXNkblByaWNlWDYEB3RtcERheXMAAwQPaW5jb21lRm9yUGVyaW9kCQEXY2FsY1VzZG5JbmNvbWVGb3JQZXJpb2QCBRNuc2J0U3Rha2luZ0NvbnRyYWN0BQd0bXBEYXlzBANhcHIJAQdjYWxjQXByBAUTbnNidFN0YWtpbmdDb250cmFjdAUHdG1wRGF5cwUPaW5jb21lRm9yUGVyaW9kBQ9uc2J0VXNkblByaWNlWDYJAJQKAgUDbmlsCQCsAgICBCVkX18JAKQDAQUDYXByAB2seFg=", "height": 2443255, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C6B1me3ckcGDpGuc2g2E6HnqunrnMsdN8bCpepNqm1Di Next: 9WUGuchhMLgrzNpmgPDNhNTdtWcbxPwXKTnSg3MJ8nFh Diff:
OldNewDifferences
4040 func r () = "surf_asset_id"
4141
4242
43-func s () = "balance_lock_"
43+func s () = "min_waves_swap_amount"
4444
4545
46-func t () = (s() + "waves")
46+func t () = "min_neutrino_swap_amount"
4747
4848
49-func u () = (s() + "neutrino")
49+func u () = "wavesOut_swap_feePart"
5050
5151
52-func v () = "min_waves_swap_amount"
52+func v () = "neutrinoOut_swap_feePart"
5353
5454
55-func w () = "min_neutrino_swap_amount"
55+func w () = "%s%s__config__swapAParam"
5656
5757
58-func x () = "wavesOut_swap_feePart"
58+func x () = "%s%s__config__swapBParam"
5959
6060
61-func y () = "neutrinoOut_swap_feePart"
61+func y () = "%s%s__config__usdnSwapAParam"
6262
6363
64-func z () = "%s%s__config__swapAParam"
64+func z () = "%s%s__config__usdnSwapBParam"
6565
6666
67-func A () = "%s%s__config__swapBParam"
67+func A () = "%s__nsbtLockContract"
6868
6969
70-func B () = "%s%s__config__usdnSwapAParam"
70+func B () = "%s__mathContract"
7171
7272
73-func C () = "%s%s__config__usdnSwapBParam"
73+func C () = "balance_waves_lock_interval"
7474
7575
76-func D () = "%s__nsbtLockContract"
76+func D () = "balance_neutrino_lock_interval"
7777
7878
79-func E () = "%s__mathContract"
79+func E () = "%s%s__common__basketAssets"
8080
8181
82-func F () = "balance_waves_lock_interval"
82+func F () = "price"
8383
8484
85-func G () = "balance_neutrino_lock_interval"
85+func G (H) = makeString(["%s%s%s", "paramByUser", H, "start"], j)
8686
8787
88-func H () = "price"
88+func I () = "%s__halfLife"
8989
9090
91-func I (J) = makeString(["%s%s%s", "paramByUser", J, "start"], j)
91+func J () = "%s__minLockAmount"
9292
9393
94-func K () = "%s__halfLife"
94+func K () = "min_waves_nsbt_buy"
9595
9696
97-func L () = "%s__minLockAmount"
97+func L () = "min_nsbt_sell"
9898
9999
100-func M () = "min_waves_nsbt_buy"
100+func M (N) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(N)], j)
101101
102102
103-func N () = "min_nsbt_sell"
103+func O (N) = ((N / o) * o)
104104
105105
106-func O (P) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(P)], j)
106+func P (Q,R) = valueOrErrorMessage(getString(Q, R), makeString(["mandatory ", toString(Q), ".", R, " is not defined"], ""))
107107
108108
109-func Q (P) = ((P / o) * o)
109+func S (Q,R) = valueOrErrorMessage(getInteger(Q, R), makeString(["mandatory ", toString(Q), ".", R, " is not defined"], ""))
110110
111111
112-func R (S,T) = valueOrErrorMessage(getString(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
112+func T (Q,R) = valueOrErrorMessage(getBoolean(Q, R), makeString(["mandatory ", toString(Q), ".", R, " is not defined"], ""))
113113
114114
115-func U (S,T) = valueOrErrorMessage(getInteger(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
115+func U (Q,R,V) = valueOrElse(getInteger(Q, R), V)
116116
117117
118-func V (S,T) = valueOrErrorMessage(getBoolean(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
118+func W (Q,R,V) = valueOrElse(getString(Q, R), V)
119119
120120
121-func W (S,T,X) = valueOrElse(getInteger(S, T), X)
121+func X (Y,Z) = fraction(Y, d, Z)
122122
123123
124-func Y (S,T,X) = valueOrElse(getString(S, T), X)
124+func aa (Y,Z) = fraction(Y, Z, d)
125125
126126
127-func Z (aa,ab) = fraction(aa, d, ab)
128-
129-
130-func ac (aa,ab) = fraction(aa, ab, d)
131-
132-
133-func ad (ae) = {
134- let af = ae
135- if ($isInstanceOf(af, "List[Any]"))
127+func ab (ac) = {
128+ let ad = ac
129+ if ($isInstanceOf(ad, "List[Any]"))
136130 then {
137- let ag = af
138- ag
131+ let ae = ad
132+ ae
139133 }
140134 else throw("fail to cast into List[Any]")
141135 }
142136
143137
144-func ah (ae) = {
145- let af = ae
146- if ($isInstanceOf(af, "Int"))
138+func af (ac) = {
139+ let ad = ac
140+ if ($isInstanceOf(ad, "Int"))
147141 then {
148- let ai = af
149- ai
142+ let ag = ad
143+ ag
150144 }
151145 else throw("fail to cast into Int")
152146 }
153147
154148
155-func aj (ae) = {
156- let af = ae
157- if ($isInstanceOf(af, "String"))
149+func ah (ac) = {
150+ let ad = ac
151+ if ($isInstanceOf(ad, "String"))
158152 then {
159- let ak = af
160- ak
153+ let ai = ad
154+ ai
161155 }
162156 else throw("fail to cast into String")
163157 }
164158
165159
166-func al (ae) = {
167- let af = ae
168- if ($isInstanceOf(af, "(Int, Int)"))
160+func aj (ac) = {
161+ let ad = ac
162+ if ($isInstanceOf(ad, "(Int, Int)"))
169163 then {
170- let am = af
171- am
164+ let ak = ad
165+ ak
172166 }
173167 else throw("fail to cast into Tuple2 ints")
174168 }
175169
176170
177-func an (ae) = {
178- let af = ae
179- if ($isInstanceOf(af, "(Int, Int, Int, Int, Int, Int, Int)"))
171+func al (ac) = {
172+ let ad = ac
173+ if ($isInstanceOf(ad, "(Int, Int, Int, Int, Int, Int, Int)"))
180174 then {
181- let ao = af
182- ao
175+ let am = ad
176+ am
183177 }
184178 else throw("fail to cast into SwapParamsSTRUCT")
185179 }
186180
187181
188-func ap (ae) = {
189- let af = ae
190- if (if ($isInstanceOf(af, "(Int, Unit, Int, Int, Int, Int, Int, Int)"))
182+func an (ac) = {
183+ let ad = ac
184+ if (if ($isInstanceOf(ad, "(Int, Unit, Int, Int, Int, Int, Int, Int, String)"))
191185 then true
192- else $isInstanceOf(af, "(Int, ByteVector, Int, Int, Int, Int, Int, Int)"))
186+ else $isInstanceOf(ad, "(Int, ByteVector, Int, Int, Int, Int, Int, Int, String)"))
193187 then {
194- let ao = af
195- ao
188+ let am = ad
189+ am
196190 }
197191 else throw("fail to cast into WithdrawResult")
198192 }
199193
200194
201-func aq (ar) = if ((0 > ar))
195+func ao (ap) = if ((0 > ap))
202196 then -1
203197 else {
204- let af = blockInfoByHeight(ar)
205- if ($isInstanceOf(af, "BlockInfo"))
198+ let ad = blockInfoByHeight(ap)
199+ if ($isInstanceOf(ad, "BlockInfo"))
206200 then {
207- let as = af
208- as.timestamp
201+ let aq = ad
202+ aq.timestamp
209203 }
210204 else -1
211205 }
212206
213207
214-func at (au,av) = fraction(toBigInt(au), i, toBigInt(av))
208+func ar (as,at) = fraction(toBigInt(as), i, toBigInt(at))
215209
216210
217-func aw (ae,ax) = toInt(fraction(ae, toBigInt(ax), i))
211+func au (ac,av) = toInt(fraction(ac, toBigInt(av), i))
218212
219213
220-let ay = 0
214+let aw = 0
221215
222-let az = 1
216+let ax = 1
223217
224-let aA = 2
218+let ay = 2
225219
226-let aB = 3
220+let az = 3
227221
228-let aC = 4
222+let aA = 4
229223
230-let aD = 5
224+let aB = 5
231225
232-let aE = 6
226+let aC = 6
233227
234-let aF = 7
228+let aD = 7
235229
236-let aG = 8
230+let aE = 8
237231
238-let aH = 9
232+let aF = 9
239233
240-let aI = 10
234+let aG = 10
241235
242-let aJ = 11
236+let aH = 11
243237
244-let aK = 1
238+let aI = 1
245239
246-let aL = 2
240+let aJ = 2
247241
248-let aM = 3
242+let aK = 3
249243
250-let aN = 4
244+let aL = 4
251245
252-let aO = 5
246+let aM = 5
253247
254-let aP = 6
248+let aN = 6
255249
256-let aQ = 7
250+let aO = 7
257251
258-let aR = 8
252+let aP = 8
259253
260-let aS = 9
254+let aQ = 9
261255
262-let aT = 10
256+let aR = 10
263257
264-let aU = 11
258+let aS = 11
265259
266-let aV = 0
260+let aT = 0
267261
268-let aW = 1
262+let aU = 1
269263
270-let aX = 2
264+let aV = 2
271265
272-let aY = 3
266+let aW = 3
273267
274-let aZ = 4
268+let aX = 4
275269
276-let ba = 5
270+let aY = 5
277271
278-let bb = 6
272+let aZ = 6
279273
280-let bc = 7
274+let ba = 7
281275
282-let bd = 8
276+let bb = 8
283277
284-let be = 9
278+let bc = 9
285279
286-let bf = 10
280+let bd = 10
287281
288-func bg () = "%s%s__config__controlAddress"
282+func be () = "%s%s__config__controlAddress"
289283
290284
291-func bh () = "%s__controlConfig"
285+func bf () = "%s__controlConfig"
292286
293287
294-func bi (bj) = split_4C(R(bj, bh()), j)
288+func bg (bh) = split_4C(P(bh, bf()), j)
295289
296290
297-func bk (bl,bm) = valueOrErrorMessage(addressFromString(bl[bm]), ("Control cfg doesn't contain address at index " + toString(bm)))
291+func bi (bj,bk) = valueOrErrorMessage(addressFromString(bj[bk]), ("Control cfg doesn't contain address at index " + toString(bk)))
298292
299293
300-let bn = addressFromStringValue(valueOrElse(getString(this, bg()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
294+let bl = addressFromStringValue(valueOrElse(getString(this, be()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
301295
302-let bl = bi(bn)
296+let bj = bg(bl)
303297
304-let bo = bk(bl, aN)
298+let bm = bi(bj, aL)
305299
306-let bp = bk(bl, aK)
300+let bn = bi(bj, aI)
307301
308-let bq = bk(bl, aL)
302+let bo = bi(bj, aJ)
309303
310-let br = bk(bl, aO)
304+let bp = bi(bj, aM)
311305
312-let bs = bk(bl, aM)
306+let bq = bi(bj, aK)
313307
314-let bt = bk(bl, aR)
308+let br = bi(bj, aP)
315309
316-let bu = bk(bl, aT)
310+let bs = bi(bj, aR)
317311
318-let bv = bk(bl, aU)
312+let bt = bi(bj, aS)
319313
320-let bw = R(bp, p())
314+let bu = P(bn, p())
315+
316+let bv = fromBase58String(bu)
317+
318+let bw = getStringValue(bn, q())
321319
322320 let bx = fromBase58String(bw)
323321
324-let by = getStringValue(bp, q())
322+let by = getStringValue(bo, r())
325323
326324 let bz = fromBase58String(by)
327325
328-let bA = getStringValue(bq, r())
329-
330-let bB = fromBase58String(bA)
331-
332-func bC (bD,bE,bF) = {
333- let bG = O(bE)
334- let bH = Y(bD, bG, "%s%s__0__0")
335- let bI = split(bH, j)
336- let bJ = parseIntValue(bI[1])
337- let bK = parseIntValue(bI[2])
338- let bL = ah(bF[ay])
339- let bM = fraction(bJ, bL, d)
340- (bM + bK)
326+func bA (bB,bC,bD) = {
327+ let bE = M(bC)
328+ let bF = W(bB, bE, "%s%s__0__0")
329+ let bG = split(bF, j)
330+ let bH = parseIntValue(bG[1])
331+ let bI = parseIntValue(bG[2])
332+ let bJ = af(bD[aw])
333+ let bK = fraction(bH, bJ, d)
334+ (bK + bI)
341335 }
342336
343337
344-func bN (bD,bO) = {
345- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
346- let bP = Q(lastBlock.timestamp)
347- let bQ = (bP - (o * (bO + 1)))
348- let bR = (bP - o)
349- let bS = bC(bD, bQ, bF)
350- let bT = bC(bD, bR, bF)
351- let bU = if ((bS == 0))
352- then bT
353- else bS
354- (bT - bU)
338+func bL (bB,bM) = {
339+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
340+ let bN = O(lastBlock.timestamp)
341+ let bO = (bN - (o * (bM + 1)))
342+ let bP = (bN - o)
343+ let bQ = bA(bB, bO, bD)
344+ let bR = bA(bB, bP, bD)
345+ let bS = if ((bQ == 0))
346+ then bR
347+ else bQ
348+ (bR - bS)
355349 }
356350
357351
358-func bV (bD,bW,bX,bY) = {
359- let bZ = W(bD, "%s%s__stats__activeTotalLocked", 1)
360- let ca = fraction(bZ, bY, b)
361- if ((0 > bX))
352+func bT (bB,bU,bV,bW) = {
353+ let bX = U(bB, "%s%s__stats__activeTotalLocked", 1)
354+ let bY = fraction(bX, bW, b)
355+ if ((0 > bV))
362356 then 0
363- else fraction((bX * b), 365, (ca * bW))
357+ else fraction((bV * b), 365, (bY * bU))
364358 }
365359
366360
367-@Callable(cb)
368-func reverseSwapLimitREADONLY (cc,cd) = {
369- let ce = ah(ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))[aG])
370- let cf = if ((0 >= cc))
361+@Callable(bZ)
362+func reverseSwapLimitREADONLY (ca,cb) = {
363+ let cc = af(ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))[aE])
364+ let cd = if ((0 >= ca))
371365 then 0
372366 else {
373- let cg = toBigInt(U(bo, if (cd)
374- then z()
375- else B()))
376- let ch = toBigInt(U(bo, if (cd)
377- then A()
378- else C()))
379- let ci = if (cd)
380- then fraction(toBigInt(cc), f, cg)
381- else fraction(fraction(toBigInt(cc), f, cg), c, toBigInt(ce))
382- let cj = fraction(h, h, ch)
383- toInt(pow(ci, 8, cj, 16, 6, CEILING))
367+ let ce = toBigInt(S(bm, if (cb)
368+ then w()
369+ else y()))
370+ let cf = toBigInt(S(bm, if (cb)
371+ then x()
372+ else z()))
373+ let cg = if (cb)
374+ then fraction(toBigInt(ca), f, ce)
375+ else fraction(fraction(toBigInt(ca), f, ce), c, toBigInt(cc))
376+ let ch = fraction(h, h, cf)
377+ toInt(pow(cg, 8, ch, 16, 6, CEILING))
384378 }
385- $Tuple2(nil, cf)
379+ $Tuple2(nil, cd)
386380 }
387381
388382
389383
390-@Callable(cb)
391-func gnsbtInfoINTERNAL (ck,cl,cm) = {
392- let cn = if ((ck != ""))
393- then addressFromStringValue(ck)
384+@Callable(bZ)
385+func gnsbtInfoINTERNAL (ci,cj,ck) = {
386+ let cl = if ((ci != ""))
387+ then addressFromStringValue(ci)
394388 else this
395- let bL = getIntegerValue(bn, H())
396- let co = cl
397- let cp = ah(invoke(bu, "gnsbtFromSurfSYSREADONLY", [cm], nil))
398- let cq = (co + cp)
399- let cr = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, 0], nil))
400- let cs = cr._3
401- let ct = cr._4
402- let cu = cr._5
403- let cv = cr._6
404- let cw = cr._7
405- let cx = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, cq], nil))
406- let cy = cx._3
407- let cz = cx._4
408- let cA = cx._5
409- let cB = cx._6
410- let cC = cx._7
411- let cD = if ((ck != ""))
412- then assetBalance(cn, bz)
389+ let bJ = getIntegerValue(bl, F())
390+ let cm = cj
391+ let cn = af(invoke(bs, "gnsbtFromSurfSYSREADONLY", [ck], nil))
392+ let co = (cm + cn)
393+ let cp = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, 0], nil))
394+ let cq = cp._3
395+ let cr = cp._4
396+ let cs = cp._5
397+ let ct = cp._6
398+ let cu = cp._7
399+ let cv = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, co], nil))
400+ let cw = cv._3
401+ let cx = cv._4
402+ let cy = cv._5
403+ let cz = cv._6
404+ let cA = cv._7
405+ let cB = if ((ci != ""))
406+ then assetBalance(cl, bx)
413407 else 0
414- let cE = if ((ck != ""))
415- then assetBalance(cn, bB)
408+ let cC = if ((ci != ""))
409+ then assetBalance(cl, bz)
416410 else 0
417- let cF = if ((cl >= 0))
418- then cl
411+ let cD = if ((cj >= 0))
412+ then cj
419413 else {
420- let cG = ad(invoke(bt, "nsbtUnstakingSYSREADONLY", [ck, (-1 * cl)], nil))
421- let cH = ah(cG[2])
422- let cI = -(cH)
423- cI
414+ let cE = ab(invoke(br, "nsbtUnstakingSYSREADONLY", [ci, (-1 * cj)], nil))
415+ let cF = af(cE[2])
416+ let cG = -(cF)
417+ cG
424418 }
425- let cJ = (cD - cF)
426- let cK = (cE - cm)
427- let cL = ad(invoke(bv, "gnsbtInfoSYSREADONLY", [ck, cl, cm], nil))
428- let cM = ah(cL[0])
429- let cN = ah(cL[1])
430- let cO = ad(cL[2])
431- let cP = ad(cL[3])
432- let cQ = ah(cL[4])
433- let cR = ah(cL[5])
434- let cS = ah(cO[2])
435- let cT = ah(cP[2])
436- let cU = (cS + co)
437- let cV = (cT + cp)
438- let cW = ah(cO[3])
439- let cX = ah(cP[3])
440- let cY = 0
441- let cZ = cX
442- let da = (cW + co)
443- let db = (cX + cp)
444- let dc = db
445- let dd = fraction(cS, d, (cW + cY))
446- let de = fraction(cU, d, (da + cY))
447- let df = fraction((cS + cT), d, ((cW + cY) + cZ))
448- let dg = fraction((cU + cV), d, ((da + cY) + dc))
449- let dh = if ((cQ == 0))
419+ let cH = (cB - cD)
420+ let cI = (cC - ck)
421+ let cJ = ab(invoke(bt, "gnsbtInfoSYSREADONLY", [ci, cj, ck], nil))
422+ let cK = af(cJ[0])
423+ let cL = af(cJ[1])
424+ let cM = ab(cJ[2])
425+ let cN = ab(cJ[3])
426+ let cO = af(cJ[4])
427+ let cP = af(cJ[5])
428+ let cQ = af(cM[2])
429+ let cR = af(cN[2])
430+ let cS = (cQ + cm)
431+ let cT = (cR + cn)
432+ let cU = af(cM[3])
433+ let cV = af(cN[3])
434+ let cW = 0
435+ let cX = cV
436+ let cY = (cU + cm)
437+ let cZ = (cV + cn)
438+ let da = cZ
439+ let db = fraction(cQ, d, (cU + cW))
440+ let dc = fraction(cS, d, (cY + cW))
441+ let dd = fraction((cQ + cR), d, ((cU + cW) + cX))
442+ let de = fraction((cS + cT), d, ((cY + cW) + da))
443+ let df = if ((cO == 0))
450444 then height
451- else cQ
452- let di = if ((cR == 0))
445+ else cO
446+ let dg = if ((cP == 0))
453447 then height
454- else cR
455- $Tuple2(nil, [0, cD, cE, cJ, cK, cS, cT, cU, cV, cW, cX, da, db, cw, cv, cC, cB, cs, cy, dd, de, df, dg, dh, di])
448+ else cP
449+ $Tuple2(nil, [0, cB, cC, cH, cI, cQ, cR, cS, cT, cU, cV, cY, cZ, cu, ct, cA, cz, cq, cw, db, dc, dd, de, df, dg])
456450 }
457451
458452
459453
460-@Callable(cb)
461-func gnsbtInfoREADONLY (ck,cl,cm) = {
462- let dj = ad(invoke(this, "gnsbtInfoINTERNAL", [ck, cl, cm], nil))
463- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(ah(dj[1])), toString(ah(dj[2])), toString(ah(dj[3])), toString(ah(dj[4])), toString(ah(dj[5])), toString(ah(dj[6])), toString(ah(dj[7])), toString(ah(dj[8])), toString(ah(dj[9])), toString(ah(dj[10])), toString(ah(dj[11])), toString(ah(dj[12])), toString(ah(dj[13])), toString(ah(dj[14])), toString(ah(dj[15])), toString(ah(dj[16])), toString(ah(dj[17])), toString(ah(dj[18])), toString(ah(dj[19])), toString(ah(dj[20])), toString(ah(dj[21])), toString(ah(dj[22])), toString(ah(dj[23])), toString(ah(dj[24]))], j))
454+@Callable(bZ)
455+func gnsbtInfoREADONLY (ci,cj,ck) = {
456+ let dh = ab(invoke(this, "gnsbtInfoINTERNAL", [ci, cj, ck], nil))
457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(af(dh[1])), toString(af(dh[2])), toString(af(dh[3])), toString(af(dh[4])), toString(af(dh[5])), toString(af(dh[6])), toString(af(dh[7])), toString(af(dh[8])), toString(af(dh[9])), toString(af(dh[10])), toString(af(dh[11])), toString(af(dh[12])), toString(af(dh[13])), toString(af(dh[14])), toString(af(dh[15])), toString(af(dh[16])), toString(af(dh[17])), toString(af(dh[18])), toString(af(dh[19])), toString(af(dh[20])), toString(af(dh[21])), toString(af(dh[22])), toString(af(dh[23])), toString(af(dh[24]))], j))
464458 }
465459
466460
467461
468-@Callable(cb)
469-func gnsbtEffectiveREADONLY (ck) = {
470- let cL = ad(invoke(bv, "gnsbtInfoSYSREADONLY", [ck, 0, 0], nil))
471- let cO = ad(cL[2])
472- let dk = ah(cO[2])
473- let dl = ah(cO[3])
474- let dm = ah(cL[9])
475- let dn = ah(cL[6])
476- $Tuple2(nil, makeString(["%d%d", toString((dl + dn)), toString((dk + dm))], j))
462+@Callable(bZ)
463+func gnsbtEffectiveREADONLY (ci) = {
464+ let cJ = ab(invoke(bt, "gnsbtInfoSYSREADONLY", [ci, 0, 0], nil))
465+ let cM = ab(cJ[2])
466+ let di = af(cM[2])
467+ let dj = af(cM[3])
468+ let dk = af(cJ[9])
469+ let dl = af(cJ[6])
470+ $Tuple2(nil, makeString(["%d%d", toString((dj + dl)), toString((di + dk))], j))
477471 }
478472
479473
480474
481-@Callable(cb)
482-func rewardInfoREADONLY (ck) = {
483- let do = ad(invoke(bv, "gnsbtRewardsSYSREADONLY", [ck], nil))
484- let dp = aj(invoke(bs, "unclaimedRewardsREADONLY", [ck], nil))
485- $Tuple2(nil, makeString(["%s%s%s", aj(do[0]), aj(do[1]), dp], j))
475+@Callable(bZ)
476+func rewardInfoREADONLY (ci) = {
477+ let dm = ab(invoke(bt, "gnsbtRewardsSYSREADONLY", [ci], nil))
478+ let dn = ah(invoke(bq, "unclaimedRewardsREADONLY", [ci], nil))
479+ $Tuple2(nil, makeString(["%s%s%s", ah(dm[0]), ah(dm[1]), dn], j))
486480 }
487481
488482
489483
490-@Callable(cb)
491-func mergeNsbtREADONLY (dq,dr) = {
492- let cO = ad(invoke(bt, "nsbtStakingSYSREADONLY", [dq, dr], nil))
493- let ds = ah(cO[0])
494- let dt = if ((0 >= ds))
484+@Callable(bZ)
485+func mergeNsbtREADONLY (do,dp) = {
486+ let cM = ab(invoke(br, "nsbtStakingSYSREADONLY", [do, dp], nil))
487+ let dq = af(cM[0])
488+ let dr = if ((0 >= dq))
495489 then -1
496- else ah(cO[2])
497- let bQ = aq(dt)
498- let du = if ((0 >= dr))
499- then dt
500- else if ((0 >= ds))
490+ else af(cM[2])
491+ let bO = ao(dr)
492+ let ds = if ((0 >= dp))
493+ then dr
494+ else if ((0 >= dq))
501495 then height
502496 else {
503- let dv = U(bt, K())
504- ah(invoke(bo, "mergeStakesREADONLY", [ds, dt, dr, height, dv], nil))
497+ let dt = S(br, I())
498+ af(invoke(bm, "mergeStakesREADONLY", [dq, dr, dp, height, dt], nil))
505499 }
506- let dw = aq(du)
507- $Tuple2(nil, makeString(["%d%d%d%d", toString(dt), toString(bQ), toString(du), toString(dw)], j))
500+ let du = ao(ds)
501+ $Tuple2(nil, makeString(["%d%d%d%d", toString(dr), toString(bO), toString(ds), toString(du)], j))
508502 }
509503
510504
511505
512-@Callable(cb)
513-func swapLimitCalculatorREADONLY (dx,dy,dz) = {
514- let dA = if ((dx == ""))
506+@Callable(bZ)
507+func swapLimitCalculatorREADONLY (dv,dw,dx) = {
508+ let dy = if ((dv == ""))
515509 then 0
516- else ah(an(invoke(bp, "swapParamsByUserSYSREADONLY", [dx, 0], nil))._4)
517- let dB = if ((dz == "WAVES"))
518- then ac(dy, getIntegerValue(bn, H()))
519- else dy
520- let dC = ah(invoke(this, "reverseSwapLimitREADONLY", [dB, (dz == "WAVES")], nil))
521- let dD = (dC - dA)
522- $Tuple2(nil, makeString(["%s%s", toString(dA), toString(dD)], j))
510+ else af(al(invoke(bn, "swapParamsByUserSYSREADONLY", [dv, 0], nil))._4)
511+ let dz = if ((dx == "WAVES"))
512+ then aa(dw, getIntegerValue(bl, F()))
513+ else dw
514+ let dA = af(invoke(this, "reverseSwapLimitREADONLY", [dz, (dx == "WAVES")], nil))
515+ let dB = (dA - dy)
516+ $Tuple2(nil, makeString(["%s%s", toString(dy), toString(dB)], j))
523517 }
524518
525519
526520
527-@Callable(cb)
528-func swapInfoREADONLY (ck,aa,dz) = {
529- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
530- let ab = ah(bF[ay])
531- let cr = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, 0], nil))
532- let cs = cr._3
533- let cv = cr._6
534- let cw = cr._7
535- let dE = fromBase58String(dz)
536- let dF = if ((dE == n))
537- then "waves"
538- else if ((dE == bx))
539- then "neutrino"
540- else throw(("Can't swap assetId=" + dz))
541- let dG = ap(invoke(bp, "calcWithdrawResultSYSREADONLY", [dF, aa, ab], nil))
542- let dH = dG._1
543- let dI = dG._2
544- let dJ = dG._3
545- let dK = dG._4
546- let dL = dG._5
547- let dM = dG._6
548- let dN = dG._7
549- let dO = dG._8
550- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dH), toString(dJ), toString(dM), toString(dO), toString(cs), toString(cv), toString(cw), toString(dK)], j))
521+@Callable(bZ)
522+func swapInfoREADONLY (ci,Y,dx) = {
523+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
524+ let Z = af(bD[aw])
525+ let cp = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, 0], nil))
526+ let cq = cp._3
527+ let ct = cp._6
528+ let cu = cp._7
529+ let dC = fromBase58String(dx)
530+ let dD = valueOrElse(getString(bn, E()), "WAVES")
531+ let dE = if (contains(dD, dx))
532+ then "outNeutrino"
533+ else if ((dC == bv))
534+ then "outMulti"
535+ else throw(("Can't swap assetId=" + dx))
536+ let dF = an(invoke(bn, "calcWithdrawResultSYSREADONLY", [dE, Y, Z, dx], nil))
537+ let dG = dF._1
538+ let dH = dF._2
539+ let dI = dF._3
540+ let dJ = dF._4
541+ let dK = dF._5
542+ let dL = dF._6
543+ let dM = dF._7
544+ let dN = dF._8
545+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dG), toString(dI), toString(dL), toString(dN), toString(cq), toString(ct), toString(cu), toString(dJ)], j))
551546 }
552547
553548
554549
555-@Callable(cb)
556-func swapInfoV2READONLY (ck,aa,dz) = {
557- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
558- let ab = ah(bF[ay])
559- let cr = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, 0], nil))
560- let cs = cr._3
561- let cv = cr._6
562- let cw = cr._7
563- let dE = fromBase58String(dz)
564- let dF = if ((dE == n))
565- then "waves"
566- else if ((dE == bx))
567- then "neutrino"
568- else throw(("Can't swap assetId=" + dz))
569- let dG = ap(invoke(bp, "calcWithdrawResultSYSREADONLY", [dF, aa, ab], nil))
570- let dH = dG._1
571- let dI = dG._2
572- let dJ = dG._3
573- let dK = dG._4
574- let dL = dG._5
575- let dM = dG._6
576- let dN = dG._7
577- let dO = dG._8
578- let dP = "WAVES:6500000:15590257:78343:318181_EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc:318700:35980614:179903:170454_52nvaZGa7ahqa21ER2PAMBVjMi7wC2nWYCNmLvj8QjHx:585395:19588520:97942:170454_9JXnfooQYnahr5L1dH7YksMmWPE8TZramFycXyYxv6Ef:49418611:232038:1160:170454_AMFteLfPzPhTsFc3NfvHG7fSRUnsp3tJXPH88G1PCisT:461400:248526696:1242633:170454"
579- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%s", toString(dH), toString(dJ), toString(dM), toString(dO), toString(cs), toString(cv), toString(cw), toString(dK), dP], j))
550+@Callable(bZ)
551+func swapInfoV2READONLY (ci,Y,dx) = {
552+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
553+ let Z = af(bD[aw])
554+ let cp = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, 0], nil))
555+ let cq = cp._3
556+ let ct = cp._6
557+ let cu = cp._7
558+ let dC = fromBase58String(dx)
559+ let dD = valueOrElse(getString(bn, E()), "WAVES")
560+ let dE = if (contains(dD, dx))
561+ then "outNeutrino"
562+ else if ((dC == bv))
563+ then "outMulti"
564+ else throw(("Can't swap assetId=" + dx))
565+ let dF = an(invoke(bn, "calcWithdrawResultSYSREADONLY", [dE, Y, Z, dx], nil))
566+ let dG = dF._1
567+ let dH = dF._2
568+ let dI = dF._3
569+ let dJ = dF._4
570+ let dK = dF._5
571+ let dL = dF._6
572+ let dM = dF._7
573+ let dN = dF._8
574+ let dO = dF._9
575+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%s", toString(dG), toString(dI), toString(dL), toString(dN), toString(cq), toString(ct), toString(cu), toString(dJ), dO], j))
580576 }
581577
582578
583579
584-@Callable(cb)
585-func usdnStakingAprREADONLY (bO) = {
586- let dQ = 1
587- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
588- let bL = ah(bF[ay])
589- let dR = (0 * d)
590- let bX = fraction(dR, bL, d)
591- let dS = bV(bs, dQ, bX, b)
592- $Tuple2(nil, ("%d__" + toString(dS)))
580+@Callable(bZ)
581+func usdnStakingAprREADONLY (bM) = {
582+ let dP = 1
583+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
584+ let bJ = af(bD[aw])
585+ let dQ = (0 * d)
586+ let bV = fraction(dQ, bJ, d)
587+ let dR = bT(bq, dP, bV, b)
588+ $Tuple2(nil, ("%d__" + toString(dR)))
593589 }
594590
595591
596592
597-@Callable(cb)
598-func surfStakingAprREADONLY (bO) = {
599- let dQ = 3
600- let bX = bN(bu, dQ)
601- let dT = 86400
602- let dS = bV(bu, dQ, bX, dT)
603- $Tuple2(nil, ("%d__" + toString(dS)))
593+@Callable(bZ)
594+func surfStakingAprREADONLY (bM) = {
595+ let dP = 3
596+ let bV = bL(bs, dP)
597+ let dS = 86400
598+ let dR = bT(bs, dP, bV, dS)
599+ $Tuple2(nil, ("%d__" + toString(dR)))
604600 }
605601
606602
607603
608-@Callable(cb)
609-func surfStakingAprV2READONLY (bO,dU) = {
610- let dQ = 3
611- let bX = bN(bu, dQ)
612- let dS = bV(bu, dQ, bX, dU)
613- $Tuple2(nil, ("%d__" + toString(dS)))
604+@Callable(bZ)
605+func surfStakingAprV2READONLY (bM,dT) = {
606+ let dP = 3
607+ let bV = bL(bs, dP)
608+ let dR = bT(bs, dP, bV, dT)
609+ $Tuple2(nil, ("%d__" + toString(dR)))
614610 }
615611
616612
617613
618-@Callable(cb)
619-func nsbtStakingAprREADONLY (bO) = {
620- let dQ = 3
621- let dV = 8000000
622- let bX = bN(bt, dQ)
623- let dS = bV(bt, dQ, bX, dV)
624- $Tuple2(nil, ("%d__" + toString(dS)))
614+@Callable(bZ)
615+func nsbtStakingAprREADONLY (bM) = {
616+ let dP = 3
617+ let dU = 8000000
618+ let bV = bL(br, dP)
619+ let dR = bT(br, dP, bV, dU)
620+ $Tuple2(nil, ("%d__" + toString(dR)))
625621 }
626622
627623
628624
629-@Callable(cb)
630-func nsbtStakingAprV2READONLY (bO,dW) = {
631- let dQ = 3
632- let bX = bN(bt, dQ)
633- let dS = bV(bt, dQ, bX, dW)
634- $Tuple2(nil, ("%d__" + toString(dS)))
625+@Callable(bZ)
626+func nsbtStakingAprV2READONLY (bM,dV) = {
627+ let dP = 3
628+ let bV = bL(br, dP)
629+ let dR = bT(br, dP, bV, dV)
630+ $Tuple2(nil, ("%d__" + toString(dR)))
635631 }
636632
637633
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = 271828182
55
66 let b = 1000000
77
88 let c = toBigInt(1000000)
99
1010 let d = 100000000
1111
1212 let e = toBigInt(100000000)
1313
1414 let f = toBigInt(10000000000)
1515
1616 let g = 1000000000000
1717
1818 let h = toBigInt(10000000000000000)
1919
2020 let i = toBigInt(1000000000000000000)
2121
2222 let j = "__"
2323
2424 let k = 5000
2525
2626 let l = 20000
2727
2828 let m = 100000
2929
3030 let n = fromBase58String("WAVES")
3131
3232 let o = 86400000
3333
3434 func p () = "neutrino_asset_id"
3535
3636
3737 func q () = "bond_asset_id"
3838
3939
4040 func r () = "surf_asset_id"
4141
4242
43-func s () = "balance_lock_"
43+func s () = "min_waves_swap_amount"
4444
4545
46-func t () = (s() + "waves")
46+func t () = "min_neutrino_swap_amount"
4747
4848
49-func u () = (s() + "neutrino")
49+func u () = "wavesOut_swap_feePart"
5050
5151
52-func v () = "min_waves_swap_amount"
52+func v () = "neutrinoOut_swap_feePart"
5353
5454
55-func w () = "min_neutrino_swap_amount"
55+func w () = "%s%s__config__swapAParam"
5656
5757
58-func x () = "wavesOut_swap_feePart"
58+func x () = "%s%s__config__swapBParam"
5959
6060
61-func y () = "neutrinoOut_swap_feePart"
61+func y () = "%s%s__config__usdnSwapAParam"
6262
6363
64-func z () = "%s%s__config__swapAParam"
64+func z () = "%s%s__config__usdnSwapBParam"
6565
6666
67-func A () = "%s%s__config__swapBParam"
67+func A () = "%s__nsbtLockContract"
6868
6969
70-func B () = "%s%s__config__usdnSwapAParam"
70+func B () = "%s__mathContract"
7171
7272
73-func C () = "%s%s__config__usdnSwapBParam"
73+func C () = "balance_waves_lock_interval"
7474
7575
76-func D () = "%s__nsbtLockContract"
76+func D () = "balance_neutrino_lock_interval"
7777
7878
79-func E () = "%s__mathContract"
79+func E () = "%s%s__common__basketAssets"
8080
8181
82-func F () = "balance_waves_lock_interval"
82+func F () = "price"
8383
8484
85-func G () = "balance_neutrino_lock_interval"
85+func G (H) = makeString(["%s%s%s", "paramByUser", H, "start"], j)
8686
8787
88-func H () = "price"
88+func I () = "%s__halfLife"
8989
9090
91-func I (J) = makeString(["%s%s%s", "paramByUser", J, "start"], j)
91+func J () = "%s__minLockAmount"
9292
9393
94-func K () = "%s__halfLife"
94+func K () = "min_waves_nsbt_buy"
9595
9696
97-func L () = "%s__minLockAmount"
97+func L () = "min_nsbt_sell"
9898
9999
100-func M () = "min_waves_nsbt_buy"
100+func M (N) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(N)], j)
101101
102102
103-func N () = "min_nsbt_sell"
103+func O (N) = ((N / o) * o)
104104
105105
106-func O (P) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(P)], j)
106+func P (Q,R) = valueOrErrorMessage(getString(Q, R), makeString(["mandatory ", toString(Q), ".", R, " is not defined"], ""))
107107
108108
109-func Q (P) = ((P / o) * o)
109+func S (Q,R) = valueOrErrorMessage(getInteger(Q, R), makeString(["mandatory ", toString(Q), ".", R, " is not defined"], ""))
110110
111111
112-func R (S,T) = valueOrErrorMessage(getString(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
112+func T (Q,R) = valueOrErrorMessage(getBoolean(Q, R), makeString(["mandatory ", toString(Q), ".", R, " is not defined"], ""))
113113
114114
115-func U (S,T) = valueOrErrorMessage(getInteger(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
115+func U (Q,R,V) = valueOrElse(getInteger(Q, R), V)
116116
117117
118-func V (S,T) = valueOrErrorMessage(getBoolean(S, T), makeString(["mandatory ", toString(S), ".", T, " is not defined"], ""))
118+func W (Q,R,V) = valueOrElse(getString(Q, R), V)
119119
120120
121-func W (S,T,X) = valueOrElse(getInteger(S, T), X)
121+func X (Y,Z) = fraction(Y, d, Z)
122122
123123
124-func Y (S,T,X) = valueOrElse(getString(S, T), X)
124+func aa (Y,Z) = fraction(Y, Z, d)
125125
126126
127-func Z (aa,ab) = fraction(aa, d, ab)
128-
129-
130-func ac (aa,ab) = fraction(aa, ab, d)
131-
132-
133-func ad (ae) = {
134- let af = ae
135- if ($isInstanceOf(af, "List[Any]"))
127+func ab (ac) = {
128+ let ad = ac
129+ if ($isInstanceOf(ad, "List[Any]"))
136130 then {
137- let ag = af
138- ag
131+ let ae = ad
132+ ae
139133 }
140134 else throw("fail to cast into List[Any]")
141135 }
142136
143137
144-func ah (ae) = {
145- let af = ae
146- if ($isInstanceOf(af, "Int"))
138+func af (ac) = {
139+ let ad = ac
140+ if ($isInstanceOf(ad, "Int"))
147141 then {
148- let ai = af
149- ai
142+ let ag = ad
143+ ag
150144 }
151145 else throw("fail to cast into Int")
152146 }
153147
154148
155-func aj (ae) = {
156- let af = ae
157- if ($isInstanceOf(af, "String"))
149+func ah (ac) = {
150+ let ad = ac
151+ if ($isInstanceOf(ad, "String"))
158152 then {
159- let ak = af
160- ak
153+ let ai = ad
154+ ai
161155 }
162156 else throw("fail to cast into String")
163157 }
164158
165159
166-func al (ae) = {
167- let af = ae
168- if ($isInstanceOf(af, "(Int, Int)"))
160+func aj (ac) = {
161+ let ad = ac
162+ if ($isInstanceOf(ad, "(Int, Int)"))
169163 then {
170- let am = af
171- am
164+ let ak = ad
165+ ak
172166 }
173167 else throw("fail to cast into Tuple2 ints")
174168 }
175169
176170
177-func an (ae) = {
178- let af = ae
179- if ($isInstanceOf(af, "(Int, Int, Int, Int, Int, Int, Int)"))
171+func al (ac) = {
172+ let ad = ac
173+ if ($isInstanceOf(ad, "(Int, Int, Int, Int, Int, Int, Int)"))
180174 then {
181- let ao = af
182- ao
175+ let am = ad
176+ am
183177 }
184178 else throw("fail to cast into SwapParamsSTRUCT")
185179 }
186180
187181
188-func ap (ae) = {
189- let af = ae
190- if (if ($isInstanceOf(af, "(Int, Unit, Int, Int, Int, Int, Int, Int)"))
182+func an (ac) = {
183+ let ad = ac
184+ if (if ($isInstanceOf(ad, "(Int, Unit, Int, Int, Int, Int, Int, Int, String)"))
191185 then true
192- else $isInstanceOf(af, "(Int, ByteVector, Int, Int, Int, Int, Int, Int)"))
186+ else $isInstanceOf(ad, "(Int, ByteVector, Int, Int, Int, Int, Int, Int, String)"))
193187 then {
194- let ao = af
195- ao
188+ let am = ad
189+ am
196190 }
197191 else throw("fail to cast into WithdrawResult")
198192 }
199193
200194
201-func aq (ar) = if ((0 > ar))
195+func ao (ap) = if ((0 > ap))
202196 then -1
203197 else {
204- let af = blockInfoByHeight(ar)
205- if ($isInstanceOf(af, "BlockInfo"))
198+ let ad = blockInfoByHeight(ap)
199+ if ($isInstanceOf(ad, "BlockInfo"))
206200 then {
207- let as = af
208- as.timestamp
201+ let aq = ad
202+ aq.timestamp
209203 }
210204 else -1
211205 }
212206
213207
214-func at (au,av) = fraction(toBigInt(au), i, toBigInt(av))
208+func ar (as,at) = fraction(toBigInt(as), i, toBigInt(at))
215209
216210
217-func aw (ae,ax) = toInt(fraction(ae, toBigInt(ax), i))
211+func au (ac,av) = toInt(fraction(ac, toBigInt(av), i))
218212
219213
220-let ay = 0
214+let aw = 0
221215
222-let az = 1
216+let ax = 1
223217
224-let aA = 2
218+let ay = 2
225219
226-let aB = 3
220+let az = 3
227221
228-let aC = 4
222+let aA = 4
229223
230-let aD = 5
224+let aB = 5
231225
232-let aE = 6
226+let aC = 6
233227
234-let aF = 7
228+let aD = 7
235229
236-let aG = 8
230+let aE = 8
237231
238-let aH = 9
232+let aF = 9
239233
240-let aI = 10
234+let aG = 10
241235
242-let aJ = 11
236+let aH = 11
243237
244-let aK = 1
238+let aI = 1
245239
246-let aL = 2
240+let aJ = 2
247241
248-let aM = 3
242+let aK = 3
249243
250-let aN = 4
244+let aL = 4
251245
252-let aO = 5
246+let aM = 5
253247
254-let aP = 6
248+let aN = 6
255249
256-let aQ = 7
250+let aO = 7
257251
258-let aR = 8
252+let aP = 8
259253
260-let aS = 9
254+let aQ = 9
261255
262-let aT = 10
256+let aR = 10
263257
264-let aU = 11
258+let aS = 11
265259
266-let aV = 0
260+let aT = 0
267261
268-let aW = 1
262+let aU = 1
269263
270-let aX = 2
264+let aV = 2
271265
272-let aY = 3
266+let aW = 3
273267
274-let aZ = 4
268+let aX = 4
275269
276-let ba = 5
270+let aY = 5
277271
278-let bb = 6
272+let aZ = 6
279273
280-let bc = 7
274+let ba = 7
281275
282-let bd = 8
276+let bb = 8
283277
284-let be = 9
278+let bc = 9
285279
286-let bf = 10
280+let bd = 10
287281
288-func bg () = "%s%s__config__controlAddress"
282+func be () = "%s%s__config__controlAddress"
289283
290284
291-func bh () = "%s__controlConfig"
285+func bf () = "%s__controlConfig"
292286
293287
294-func bi (bj) = split_4C(R(bj, bh()), j)
288+func bg (bh) = split_4C(P(bh, bf()), j)
295289
296290
297-func bk (bl,bm) = valueOrErrorMessage(addressFromString(bl[bm]), ("Control cfg doesn't contain address at index " + toString(bm)))
291+func bi (bj,bk) = valueOrErrorMessage(addressFromString(bj[bk]), ("Control cfg doesn't contain address at index " + toString(bk)))
298292
299293
300-let bn = addressFromStringValue(valueOrElse(getString(this, bg()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
294+let bl = addressFromStringValue(valueOrElse(getString(this, be()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
301295
302-let bl = bi(bn)
296+let bj = bg(bl)
303297
304-let bo = bk(bl, aN)
298+let bm = bi(bj, aL)
305299
306-let bp = bk(bl, aK)
300+let bn = bi(bj, aI)
307301
308-let bq = bk(bl, aL)
302+let bo = bi(bj, aJ)
309303
310-let br = bk(bl, aO)
304+let bp = bi(bj, aM)
311305
312-let bs = bk(bl, aM)
306+let bq = bi(bj, aK)
313307
314-let bt = bk(bl, aR)
308+let br = bi(bj, aP)
315309
316-let bu = bk(bl, aT)
310+let bs = bi(bj, aR)
317311
318-let bv = bk(bl, aU)
312+let bt = bi(bj, aS)
319313
320-let bw = R(bp, p())
314+let bu = P(bn, p())
315+
316+let bv = fromBase58String(bu)
317+
318+let bw = getStringValue(bn, q())
321319
322320 let bx = fromBase58String(bw)
323321
324-let by = getStringValue(bp, q())
322+let by = getStringValue(bo, r())
325323
326324 let bz = fromBase58String(by)
327325
328-let bA = getStringValue(bq, r())
329-
330-let bB = fromBase58String(bA)
331-
332-func bC (bD,bE,bF) = {
333- let bG = O(bE)
334- let bH = Y(bD, bG, "%s%s__0__0")
335- let bI = split(bH, j)
336- let bJ = parseIntValue(bI[1])
337- let bK = parseIntValue(bI[2])
338- let bL = ah(bF[ay])
339- let bM = fraction(bJ, bL, d)
340- (bM + bK)
326+func bA (bB,bC,bD) = {
327+ let bE = M(bC)
328+ let bF = W(bB, bE, "%s%s__0__0")
329+ let bG = split(bF, j)
330+ let bH = parseIntValue(bG[1])
331+ let bI = parseIntValue(bG[2])
332+ let bJ = af(bD[aw])
333+ let bK = fraction(bH, bJ, d)
334+ (bK + bI)
341335 }
342336
343337
344-func bN (bD,bO) = {
345- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
346- let bP = Q(lastBlock.timestamp)
347- let bQ = (bP - (o * (bO + 1)))
348- let bR = (bP - o)
349- let bS = bC(bD, bQ, bF)
350- let bT = bC(bD, bR, bF)
351- let bU = if ((bS == 0))
352- then bT
353- else bS
354- (bT - bU)
338+func bL (bB,bM) = {
339+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
340+ let bN = O(lastBlock.timestamp)
341+ let bO = (bN - (o * (bM + 1)))
342+ let bP = (bN - o)
343+ let bQ = bA(bB, bO, bD)
344+ let bR = bA(bB, bP, bD)
345+ let bS = if ((bQ == 0))
346+ then bR
347+ else bQ
348+ (bR - bS)
355349 }
356350
357351
358-func bV (bD,bW,bX,bY) = {
359- let bZ = W(bD, "%s%s__stats__activeTotalLocked", 1)
360- let ca = fraction(bZ, bY, b)
361- if ((0 > bX))
352+func bT (bB,bU,bV,bW) = {
353+ let bX = U(bB, "%s%s__stats__activeTotalLocked", 1)
354+ let bY = fraction(bX, bW, b)
355+ if ((0 > bV))
362356 then 0
363- else fraction((bX * b), 365, (ca * bW))
357+ else fraction((bV * b), 365, (bY * bU))
364358 }
365359
366360
367-@Callable(cb)
368-func reverseSwapLimitREADONLY (cc,cd) = {
369- let ce = ah(ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))[aG])
370- let cf = if ((0 >= cc))
361+@Callable(bZ)
362+func reverseSwapLimitREADONLY (ca,cb) = {
363+ let cc = af(ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))[aE])
364+ let cd = if ((0 >= ca))
371365 then 0
372366 else {
373- let cg = toBigInt(U(bo, if (cd)
374- then z()
375- else B()))
376- let ch = toBigInt(U(bo, if (cd)
377- then A()
378- else C()))
379- let ci = if (cd)
380- then fraction(toBigInt(cc), f, cg)
381- else fraction(fraction(toBigInt(cc), f, cg), c, toBigInt(ce))
382- let cj = fraction(h, h, ch)
383- toInt(pow(ci, 8, cj, 16, 6, CEILING))
367+ let ce = toBigInt(S(bm, if (cb)
368+ then w()
369+ else y()))
370+ let cf = toBigInt(S(bm, if (cb)
371+ then x()
372+ else z()))
373+ let cg = if (cb)
374+ then fraction(toBigInt(ca), f, ce)
375+ else fraction(fraction(toBigInt(ca), f, ce), c, toBigInt(cc))
376+ let ch = fraction(h, h, cf)
377+ toInt(pow(cg, 8, ch, 16, 6, CEILING))
384378 }
385- $Tuple2(nil, cf)
379+ $Tuple2(nil, cd)
386380 }
387381
388382
389383
390-@Callable(cb)
391-func gnsbtInfoINTERNAL (ck,cl,cm) = {
392- let cn = if ((ck != ""))
393- then addressFromStringValue(ck)
384+@Callable(bZ)
385+func gnsbtInfoINTERNAL (ci,cj,ck) = {
386+ let cl = if ((ci != ""))
387+ then addressFromStringValue(ci)
394388 else this
395- let bL = getIntegerValue(bn, H())
396- let co = cl
397- let cp = ah(invoke(bu, "gnsbtFromSurfSYSREADONLY", [cm], nil))
398- let cq = (co + cp)
399- let cr = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, 0], nil))
400- let cs = cr._3
401- let ct = cr._4
402- let cu = cr._5
403- let cv = cr._6
404- let cw = cr._7
405- let cx = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, cq], nil))
406- let cy = cx._3
407- let cz = cx._4
408- let cA = cx._5
409- let cB = cx._6
410- let cC = cx._7
411- let cD = if ((ck != ""))
412- then assetBalance(cn, bz)
389+ let bJ = getIntegerValue(bl, F())
390+ let cm = cj
391+ let cn = af(invoke(bs, "gnsbtFromSurfSYSREADONLY", [ck], nil))
392+ let co = (cm + cn)
393+ let cp = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, 0], nil))
394+ let cq = cp._3
395+ let cr = cp._4
396+ let cs = cp._5
397+ let ct = cp._6
398+ let cu = cp._7
399+ let cv = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, co], nil))
400+ let cw = cv._3
401+ let cx = cv._4
402+ let cy = cv._5
403+ let cz = cv._6
404+ let cA = cv._7
405+ let cB = if ((ci != ""))
406+ then assetBalance(cl, bx)
413407 else 0
414- let cE = if ((ck != ""))
415- then assetBalance(cn, bB)
408+ let cC = if ((ci != ""))
409+ then assetBalance(cl, bz)
416410 else 0
417- let cF = if ((cl >= 0))
418- then cl
411+ let cD = if ((cj >= 0))
412+ then cj
419413 else {
420- let cG = ad(invoke(bt, "nsbtUnstakingSYSREADONLY", [ck, (-1 * cl)], nil))
421- let cH = ah(cG[2])
422- let cI = -(cH)
423- cI
414+ let cE = ab(invoke(br, "nsbtUnstakingSYSREADONLY", [ci, (-1 * cj)], nil))
415+ let cF = af(cE[2])
416+ let cG = -(cF)
417+ cG
424418 }
425- let cJ = (cD - cF)
426- let cK = (cE - cm)
427- let cL = ad(invoke(bv, "gnsbtInfoSYSREADONLY", [ck, cl, cm], nil))
428- let cM = ah(cL[0])
429- let cN = ah(cL[1])
430- let cO = ad(cL[2])
431- let cP = ad(cL[3])
432- let cQ = ah(cL[4])
433- let cR = ah(cL[5])
434- let cS = ah(cO[2])
435- let cT = ah(cP[2])
436- let cU = (cS + co)
437- let cV = (cT + cp)
438- let cW = ah(cO[3])
439- let cX = ah(cP[3])
440- let cY = 0
441- let cZ = cX
442- let da = (cW + co)
443- let db = (cX + cp)
444- let dc = db
445- let dd = fraction(cS, d, (cW + cY))
446- let de = fraction(cU, d, (da + cY))
447- let df = fraction((cS + cT), d, ((cW + cY) + cZ))
448- let dg = fraction((cU + cV), d, ((da + cY) + dc))
449- let dh = if ((cQ == 0))
419+ let cH = (cB - cD)
420+ let cI = (cC - ck)
421+ let cJ = ab(invoke(bt, "gnsbtInfoSYSREADONLY", [ci, cj, ck], nil))
422+ let cK = af(cJ[0])
423+ let cL = af(cJ[1])
424+ let cM = ab(cJ[2])
425+ let cN = ab(cJ[3])
426+ let cO = af(cJ[4])
427+ let cP = af(cJ[5])
428+ let cQ = af(cM[2])
429+ let cR = af(cN[2])
430+ let cS = (cQ + cm)
431+ let cT = (cR + cn)
432+ let cU = af(cM[3])
433+ let cV = af(cN[3])
434+ let cW = 0
435+ let cX = cV
436+ let cY = (cU + cm)
437+ let cZ = (cV + cn)
438+ let da = cZ
439+ let db = fraction(cQ, d, (cU + cW))
440+ let dc = fraction(cS, d, (cY + cW))
441+ let dd = fraction((cQ + cR), d, ((cU + cW) + cX))
442+ let de = fraction((cS + cT), d, ((cY + cW) + da))
443+ let df = if ((cO == 0))
450444 then height
451- else cQ
452- let di = if ((cR == 0))
445+ else cO
446+ let dg = if ((cP == 0))
453447 then height
454- else cR
455- $Tuple2(nil, [0, cD, cE, cJ, cK, cS, cT, cU, cV, cW, cX, da, db, cw, cv, cC, cB, cs, cy, dd, de, df, dg, dh, di])
448+ else cP
449+ $Tuple2(nil, [0, cB, cC, cH, cI, cQ, cR, cS, cT, cU, cV, cY, cZ, cu, ct, cA, cz, cq, cw, db, dc, dd, de, df, dg])
456450 }
457451
458452
459453
460-@Callable(cb)
461-func gnsbtInfoREADONLY (ck,cl,cm) = {
462- let dj = ad(invoke(this, "gnsbtInfoINTERNAL", [ck, cl, cm], nil))
463- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(ah(dj[1])), toString(ah(dj[2])), toString(ah(dj[3])), toString(ah(dj[4])), toString(ah(dj[5])), toString(ah(dj[6])), toString(ah(dj[7])), toString(ah(dj[8])), toString(ah(dj[9])), toString(ah(dj[10])), toString(ah(dj[11])), toString(ah(dj[12])), toString(ah(dj[13])), toString(ah(dj[14])), toString(ah(dj[15])), toString(ah(dj[16])), toString(ah(dj[17])), toString(ah(dj[18])), toString(ah(dj[19])), toString(ah(dj[20])), toString(ah(dj[21])), toString(ah(dj[22])), toString(ah(dj[23])), toString(ah(dj[24]))], j))
454+@Callable(bZ)
455+func gnsbtInfoREADONLY (ci,cj,ck) = {
456+ let dh = ab(invoke(this, "gnsbtInfoINTERNAL", [ci, cj, ck], nil))
457+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d", toString(af(dh[1])), toString(af(dh[2])), toString(af(dh[3])), toString(af(dh[4])), toString(af(dh[5])), toString(af(dh[6])), toString(af(dh[7])), toString(af(dh[8])), toString(af(dh[9])), toString(af(dh[10])), toString(af(dh[11])), toString(af(dh[12])), toString(af(dh[13])), toString(af(dh[14])), toString(af(dh[15])), toString(af(dh[16])), toString(af(dh[17])), toString(af(dh[18])), toString(af(dh[19])), toString(af(dh[20])), toString(af(dh[21])), toString(af(dh[22])), toString(af(dh[23])), toString(af(dh[24]))], j))
464458 }
465459
466460
467461
468-@Callable(cb)
469-func gnsbtEffectiveREADONLY (ck) = {
470- let cL = ad(invoke(bv, "gnsbtInfoSYSREADONLY", [ck, 0, 0], nil))
471- let cO = ad(cL[2])
472- let dk = ah(cO[2])
473- let dl = ah(cO[3])
474- let dm = ah(cL[9])
475- let dn = ah(cL[6])
476- $Tuple2(nil, makeString(["%d%d", toString((dl + dn)), toString((dk + dm))], j))
462+@Callable(bZ)
463+func gnsbtEffectiveREADONLY (ci) = {
464+ let cJ = ab(invoke(bt, "gnsbtInfoSYSREADONLY", [ci, 0, 0], nil))
465+ let cM = ab(cJ[2])
466+ let di = af(cM[2])
467+ let dj = af(cM[3])
468+ let dk = af(cJ[9])
469+ let dl = af(cJ[6])
470+ $Tuple2(nil, makeString(["%d%d", toString((dj + dl)), toString((di + dk))], j))
477471 }
478472
479473
480474
481-@Callable(cb)
482-func rewardInfoREADONLY (ck) = {
483- let do = ad(invoke(bv, "gnsbtRewardsSYSREADONLY", [ck], nil))
484- let dp = aj(invoke(bs, "unclaimedRewardsREADONLY", [ck], nil))
485- $Tuple2(nil, makeString(["%s%s%s", aj(do[0]), aj(do[1]), dp], j))
475+@Callable(bZ)
476+func rewardInfoREADONLY (ci) = {
477+ let dm = ab(invoke(bt, "gnsbtRewardsSYSREADONLY", [ci], nil))
478+ let dn = ah(invoke(bq, "unclaimedRewardsREADONLY", [ci], nil))
479+ $Tuple2(nil, makeString(["%s%s%s", ah(dm[0]), ah(dm[1]), dn], j))
486480 }
487481
488482
489483
490-@Callable(cb)
491-func mergeNsbtREADONLY (dq,dr) = {
492- let cO = ad(invoke(bt, "nsbtStakingSYSREADONLY", [dq, dr], nil))
493- let ds = ah(cO[0])
494- let dt = if ((0 >= ds))
484+@Callable(bZ)
485+func mergeNsbtREADONLY (do,dp) = {
486+ let cM = ab(invoke(br, "nsbtStakingSYSREADONLY", [do, dp], nil))
487+ let dq = af(cM[0])
488+ let dr = if ((0 >= dq))
495489 then -1
496- else ah(cO[2])
497- let bQ = aq(dt)
498- let du = if ((0 >= dr))
499- then dt
500- else if ((0 >= ds))
490+ else af(cM[2])
491+ let bO = ao(dr)
492+ let ds = if ((0 >= dp))
493+ then dr
494+ else if ((0 >= dq))
501495 then height
502496 else {
503- let dv = U(bt, K())
504- ah(invoke(bo, "mergeStakesREADONLY", [ds, dt, dr, height, dv], nil))
497+ let dt = S(br, I())
498+ af(invoke(bm, "mergeStakesREADONLY", [dq, dr, dp, height, dt], nil))
505499 }
506- let dw = aq(du)
507- $Tuple2(nil, makeString(["%d%d%d%d", toString(dt), toString(bQ), toString(du), toString(dw)], j))
500+ let du = ao(ds)
501+ $Tuple2(nil, makeString(["%d%d%d%d", toString(dr), toString(bO), toString(ds), toString(du)], j))
508502 }
509503
510504
511505
512-@Callable(cb)
513-func swapLimitCalculatorREADONLY (dx,dy,dz) = {
514- let dA = if ((dx == ""))
506+@Callable(bZ)
507+func swapLimitCalculatorREADONLY (dv,dw,dx) = {
508+ let dy = if ((dv == ""))
515509 then 0
516- else ah(an(invoke(bp, "swapParamsByUserSYSREADONLY", [dx, 0], nil))._4)
517- let dB = if ((dz == "WAVES"))
518- then ac(dy, getIntegerValue(bn, H()))
519- else dy
520- let dC = ah(invoke(this, "reverseSwapLimitREADONLY", [dB, (dz == "WAVES")], nil))
521- let dD = (dC - dA)
522- $Tuple2(nil, makeString(["%s%s", toString(dA), toString(dD)], j))
510+ else af(al(invoke(bn, "swapParamsByUserSYSREADONLY", [dv, 0], nil))._4)
511+ let dz = if ((dx == "WAVES"))
512+ then aa(dw, getIntegerValue(bl, F()))
513+ else dw
514+ let dA = af(invoke(this, "reverseSwapLimitREADONLY", [dz, (dx == "WAVES")], nil))
515+ let dB = (dA - dy)
516+ $Tuple2(nil, makeString(["%s%s", toString(dy), toString(dB)], j))
523517 }
524518
525519
526520
527-@Callable(cb)
528-func swapInfoREADONLY (ck,aa,dz) = {
529- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
530- let ab = ah(bF[ay])
531- let cr = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, 0], nil))
532- let cs = cr._3
533- let cv = cr._6
534- let cw = cr._7
535- let dE = fromBase58String(dz)
536- let dF = if ((dE == n))
537- then "waves"
538- else if ((dE == bx))
539- then "neutrino"
540- else throw(("Can't swap assetId=" + dz))
541- let dG = ap(invoke(bp, "calcWithdrawResultSYSREADONLY", [dF, aa, ab], nil))
542- let dH = dG._1
543- let dI = dG._2
544- let dJ = dG._3
545- let dK = dG._4
546- let dL = dG._5
547- let dM = dG._6
548- let dN = dG._7
549- let dO = dG._8
550- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dH), toString(dJ), toString(dM), toString(dO), toString(cs), toString(cv), toString(cw), toString(dK)], j))
521+@Callable(bZ)
522+func swapInfoREADONLY (ci,Y,dx) = {
523+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
524+ let Z = af(bD[aw])
525+ let cp = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, 0], nil))
526+ let cq = cp._3
527+ let ct = cp._6
528+ let cu = cp._7
529+ let dC = fromBase58String(dx)
530+ let dD = valueOrElse(getString(bn, E()), "WAVES")
531+ let dE = if (contains(dD, dx))
532+ then "outNeutrino"
533+ else if ((dC == bv))
534+ then "outMulti"
535+ else throw(("Can't swap assetId=" + dx))
536+ let dF = an(invoke(bn, "calcWithdrawResultSYSREADONLY", [dE, Y, Z, dx], nil))
537+ let dG = dF._1
538+ let dH = dF._2
539+ let dI = dF._3
540+ let dJ = dF._4
541+ let dK = dF._5
542+ let dL = dF._6
543+ let dM = dF._7
544+ let dN = dF._8
545+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d", toString(dG), toString(dI), toString(dL), toString(dN), toString(cq), toString(ct), toString(cu), toString(dJ)], j))
551546 }
552547
553548
554549
555-@Callable(cb)
556-func swapInfoV2READONLY (ck,aa,dz) = {
557- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
558- let ab = ah(bF[ay])
559- let cr = an(invoke(bp, "swapParamsByUserSYSREADONLY", [ck, 0], nil))
560- let cs = cr._3
561- let cv = cr._6
562- let cw = cr._7
563- let dE = fromBase58String(dz)
564- let dF = if ((dE == n))
565- then "waves"
566- else if ((dE == bx))
567- then "neutrino"
568- else throw(("Can't swap assetId=" + dz))
569- let dG = ap(invoke(bp, "calcWithdrawResultSYSREADONLY", [dF, aa, ab], nil))
570- let dH = dG._1
571- let dI = dG._2
572- let dJ = dG._3
573- let dK = dG._4
574- let dL = dG._5
575- let dM = dG._6
576- let dN = dG._7
577- let dO = dG._8
578- let dP = "WAVES:6500000:15590257:78343:318181_EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc:318700:35980614:179903:170454_52nvaZGa7ahqa21ER2PAMBVjMi7wC2nWYCNmLvj8QjHx:585395:19588520:97942:170454_9JXnfooQYnahr5L1dH7YksMmWPE8TZramFycXyYxv6Ef:49418611:232038:1160:170454_AMFteLfPzPhTsFc3NfvHG7fSRUnsp3tJXPH88G1PCisT:461400:248526696:1242633:170454"
579- $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%s", toString(dH), toString(dJ), toString(dM), toString(dO), toString(cs), toString(cv), toString(cw), toString(dK), dP], j))
550+@Callable(bZ)
551+func swapInfoV2READONLY (ci,Y,dx) = {
552+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
553+ let Z = af(bD[aw])
554+ let cp = al(invoke(bn, "swapParamsByUserSYSREADONLY", [ci, 0], nil))
555+ let cq = cp._3
556+ let ct = cp._6
557+ let cu = cp._7
558+ let dC = fromBase58String(dx)
559+ let dD = valueOrElse(getString(bn, E()), "WAVES")
560+ let dE = if (contains(dD, dx))
561+ then "outNeutrino"
562+ else if ((dC == bv))
563+ then "outMulti"
564+ else throw(("Can't swap assetId=" + dx))
565+ let dF = an(invoke(bn, "calcWithdrawResultSYSREADONLY", [dE, Y, Z, dx], nil))
566+ let dG = dF._1
567+ let dH = dF._2
568+ let dI = dF._3
569+ let dJ = dF._4
570+ let dK = dF._5
571+ let dL = dF._6
572+ let dM = dF._7
573+ let dN = dF._8
574+ let dO = dF._9
575+ $Tuple2(nil, makeString(["%d%d%d%d%d%d%d%d%s", toString(dG), toString(dI), toString(dL), toString(dN), toString(cq), toString(ct), toString(cu), toString(dJ), dO], j))
580576 }
581577
582578
583579
584-@Callable(cb)
585-func usdnStakingAprREADONLY (bO) = {
586- let dQ = 1
587- let bF = ad(invoke(bo, "calcNeutinoMetricsREADONLY", nil, nil))
588- let bL = ah(bF[ay])
589- let dR = (0 * d)
590- let bX = fraction(dR, bL, d)
591- let dS = bV(bs, dQ, bX, b)
592- $Tuple2(nil, ("%d__" + toString(dS)))
580+@Callable(bZ)
581+func usdnStakingAprREADONLY (bM) = {
582+ let dP = 1
583+ let bD = ab(invoke(bm, "calcNeutinoMetricsREADONLY", nil, nil))
584+ let bJ = af(bD[aw])
585+ let dQ = (0 * d)
586+ let bV = fraction(dQ, bJ, d)
587+ let dR = bT(bq, dP, bV, b)
588+ $Tuple2(nil, ("%d__" + toString(dR)))
593589 }
594590
595591
596592
597-@Callable(cb)
598-func surfStakingAprREADONLY (bO) = {
599- let dQ = 3
600- let bX = bN(bu, dQ)
601- let dT = 86400
602- let dS = bV(bu, dQ, bX, dT)
603- $Tuple2(nil, ("%d__" + toString(dS)))
593+@Callable(bZ)
594+func surfStakingAprREADONLY (bM) = {
595+ let dP = 3
596+ let bV = bL(bs, dP)
597+ let dS = 86400
598+ let dR = bT(bs, dP, bV, dS)
599+ $Tuple2(nil, ("%d__" + toString(dR)))
604600 }
605601
606602
607603
608-@Callable(cb)
609-func surfStakingAprV2READONLY (bO,dU) = {
610- let dQ = 3
611- let bX = bN(bu, dQ)
612- let dS = bV(bu, dQ, bX, dU)
613- $Tuple2(nil, ("%d__" + toString(dS)))
604+@Callable(bZ)
605+func surfStakingAprV2READONLY (bM,dT) = {
606+ let dP = 3
607+ let bV = bL(bs, dP)
608+ let dR = bT(bs, dP, bV, dT)
609+ $Tuple2(nil, ("%d__" + toString(dR)))
614610 }
615611
616612
617613
618-@Callable(cb)
619-func nsbtStakingAprREADONLY (bO) = {
620- let dQ = 3
621- let dV = 8000000
622- let bX = bN(bt, dQ)
623- let dS = bV(bt, dQ, bX, dV)
624- $Tuple2(nil, ("%d__" + toString(dS)))
614+@Callable(bZ)
615+func nsbtStakingAprREADONLY (bM) = {
616+ let dP = 3
617+ let dU = 8000000
618+ let bV = bL(br, dP)
619+ let dR = bT(br, dP, bV, dU)
620+ $Tuple2(nil, ("%d__" + toString(dR)))
625621 }
626622
627623
628624
629-@Callable(cb)
630-func nsbtStakingAprV2READONLY (bO,dW) = {
631- let dQ = 3
632- let bX = bN(bt, dQ)
633- let dS = bV(bt, dQ, bX, dW)
634- $Tuple2(nil, ("%d__" + toString(dS)))
625+@Callable(bZ)
626+func nsbtStakingAprV2READONLY (bM,dV) = {
627+ let dP = 3
628+ let bV = bL(br, dP)
629+ let dR = bT(br, dP, bV, dV)
630+ $Tuple2(nil, ("%d__" + toString(dR)))
635631 }
636632
637633

github/deemru/w8io/873ac7e 
233.09 ms