tx · 8G2dAhiHhEbuuaAP2TdFzX1bkwfh2HycbVuLN7e8Yn2y 3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C: -0.02600000 Waves 2022.10.13 17:45 [3336166] smart account 3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C > SELF 0.00000000 Waves
{ "type": 13, "id": "8G2dAhiHhEbuuaAP2TdFzX1bkwfh2HycbVuLN7e8Yn2y", "fee": 2600000, "feeAssetId": null, "timestamp": 1665668585769, "version": 1, "sender": "3PBiotFpqjRMkkeFBccnQNUXUopy7KFez5C", "senderPublicKey": "BYLtcNg4P4UcUd6tFdxeuhyRqgkYZujzyfwdEHNmo89c", "proofs": [ "5Rk3Lv48FkiTxmvBsd1HtxTLze6kmj948egSCYwzFYJbr3PiZLfaNYZEjVK7aWvZATWVZeqRYwiTxqh5dzvMVYRw" ], "script": "base64:BgIqCAISBQoDAQgIEgASABIDCgEBEgASABIAEgMKAQgSBAoCCAESAwoBARIAWQALcmV2aXNpb25OdW0CKDZhOTRiODQxYjM4N2U1ZDRiZDhiZThmOGVkNWY4MDA1N2VmODYxODYACXNlcGFyYXRvcgICX18AA1NFUAICX18ABU1VTFQ2AMCEPQAFTVVMVDgAgMLXLwAGTVVMVFg2CQC2AgEFBU1VTFQ2AAZNVUxUWDgJALYCAQUFTVVMVDgAB01VTFRYMTgJALYCAQCAgJC7utat8A0ACldBVkVTSURTVFICBVdBVkVTAAdXQVZFU0lECQDZBAEFCldBVkVTSURTVFIACURBWU1JTExJUwCAuJkpABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAEAGElkeENvbnRyb2xDZmdBdWN0aW9uRGFwcAACABRJZHhDb250cm9sQ2ZnUnBkRGFwcAADABVJZHhDb250cm9sQ2ZnTWF0aERhcHAABAAcSWR4Q29udHJvbENmZ0xpcXVpZGF0aW9uRGFwcAAFABVJZHhDb250cm9sQ2ZnUmVzdERhcHAABgAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAABwAcSWR4Q29udHJvbENmZ05zYnRTdGFraW5nRGFwcAAIABlJZHhDb250cm9sQ2ZnTWVkaWF0b3JEYXBwAAkAHElkeENvbnRyb2xDZmdTdXJmU3Rha2luZ0RhcHAACgAgSWR4Q29udHJvbENmZ0duc2J0Q29udHJvbGxlckRhcHAACwEPZ2V0U3RyaW5nT3JGYWlsAgdhZGRyZXNzA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFB2FkZHJlc3MFA2tleQkArAICCQCsAgIJAKwCAgkArAICAgptYW5kYXRvcnkgCQClCAEFB2FkZHJlc3MCAS4FA2tleQIPIGlzIG5vdCBkZWZpbmVkARFrZXlDb250cm9sQWRkcmVzcwACHCVzJXNfX2NvbmZpZ19fY29udHJvbEFkZHJlc3MBDWtleUNvbnRyb2xDZmcAAhElc19fY29udHJvbENvbmZpZwEVa2V5R25zYnRGcm9tU3VyZkNvZWZmAAIdJXMlc19fY2ZnX19nbnNidEZyb21TdXJmQ29lZmYBFHJlYWRDb250cm9sQ2ZnT3JGYWlsAQdjb250cm9sCQC1CQIJAQ9nZXRTdHJpbmdPckZhaWwCBQdjb250cm9sCQENa2V5Q29udHJvbENmZwAFA1NFUAEYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAgpjb250cm9sQ2ZnA2lkeAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJAJEDAgUKY29udHJvbENmZwUDaWR4CQCsAgICLUNvbnRyb2wgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkApAMBBQNpZHgAD2NvbnRyb2xDb250cmFjdAkBEUBleHRyTmF0aXZlKDEwNjIpAQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQERa2V5Q29udHJvbEFkZHJlc3MAAiMzUDVCZmQ1OFBQZk52Qk0ySHk4UWZiY0RxTWVOdHpnN0tmUAAKY29udHJvbENmZwkBFHJlYWRDb250cm9sQ2ZnT3JGYWlsAQUPY29udHJvbENvbnRyYWN0AAxtYXRoQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRVJZHhDb250cm9sQ2ZnTWF0aERhcHAAEG5ldXRyaW5vQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAA9hdWN0aW9uQ29udHJhY3QJARhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwCBQpjb250cm9sQ2ZnBRhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAEmduc2J0RnJvbVN1cmZDb2VmZgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzCQEVa2V5R25zYnRGcm9tU3VyZkNvZWZmAACsAgEMa2V5Qm9uZEFzc2V0AAINYm9uZF9hc3NldF9pZAEZa2V5QXVjdGlvbkNvbnRyYWN0QWRkcmVzcwACEGF1Y3Rpb25fY29udHJhY3QBEGtleU1pbkxvY2tBbW91bnQAAhElc19fbWluTG9ja0Ftb3VudAEQa2V5U3Rha2VkQXNzZXRJZAACESVzX19zdGFrZWRBc3NldElkARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQt1c2VyQWRkcmVzcwkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgtwYXJhbUJ5VXNlcgkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAICBmFtb3VudAUDbmlsBQlzZXBhcmF0b3IBFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sBC3VzZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICC3BhcmFtQnlVc2VyCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgIFc3RhcnQFA25pbAUJc2VwYXJhdG9yASZrZXlMb2NrUGFyYW1Wb3RpbmdQb3dlckVmZmVjdGl2ZUhlaWdodAELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcGFyYW1CeVVzZXIJAMwIAgkApQgBBQt1c2VyQWRkcmVzcwkAzAgCAhF2cEVmZmVjdGl2ZUhlaWdodAUDbmlsBQlzZXBhcmF0b3IBEGtleUhpc3RvcnlSZWNvcmQDBHR5cGULdXNlckFkZHJlc3MEdHhJZAkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICB2hpc3RvcnkJAMwIAgUEdHlwZQkAzAgCCQClCAEFC3VzZXJBZGRyZXNzCQDMCAIJANgEAQUEdHhJZAUDbmlsBQlzZXBhcmF0b3IBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIRYWN0aXZlVG90YWxMb2NrZWQFA25pbAUJc2VwYXJhdG9yARJrZXlTdGF0c0xvY2tzQ291bnQACQC5CQIJAMwIAgIEJXMlcwkAzAgCAgVzdGF0cwkAzAgCAgpsb2Nrc0NvdW50BQNuaWwFCXNlcGFyYXRvcgESa2V5U3RhdHNVc2Vyc0NvdW50AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIFc3RhdHMJAMwIAgIQYWN0aXZlVXNlcnNDb3VudAUDbmlsBQlzZXBhcmF0b3IBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQl0aW1lc3RhbXAJALkJAgkAzAgCAgYlcyVzJWQJAMwIAgIFc3RhdHMJAMwIAgIPZGVwb3NpdEFtdEJ5RGF5CQDMCAIJAKQDAQUJdGltZXN0YW1wBQNuaWwFCXNlcGFyYXRvcgEYa2V5U3RhdHNEZXBvc2l0QW10VG90YWxzAAkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgVzdGF0cwkAzAgCAhBkZXBvc2l0QW10VG90YWxzBQNuaWwFCXNlcGFyYXRvcgENa2V5TmV4dFBlcmlvZAACDiVzX19uZXh0UGVyaW9kARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMAAhVzdXBwb3J0ZWRSZXdhcmRBc3NldHMBEWtleURlcG9zaXROdW1MYXN0AAkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgNkZXAJAMwIAgIHbGFzdE51bQUDbmlsBQlzZXBhcmF0b3IBG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQELdXNlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIRdXNlclJ3ZEZyb21EZXBOdW0JAMwIAgULdXNlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCCmRlcG9zaXROdW0DdGtuCQC5CQIJAMwIAgIEJXMlZAkAzAgCAhVyd2RQZXJOc2J0U3VtQnlEZXBOdW0JAMwIAgkApAMBBQpkZXBvc2l0TnVtCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBCWtleVJld2FyZAILdXNlckFkZHJlc3MDdGtuCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICA3J3ZAkAzAgCBQt1c2VyQWRkcmVzcwkAzAgCBQN0a24FA25pbAUJc2VwYXJhdG9yAQprZXlDbGFpbWVkAgt1c2VyQWRkcmVzcwN0a24JALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIDY2xtCQDMCAIFC3VzZXJBZGRyZXNzCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBF2tleU5vdERpc3RyaWJ1dGVkUmV3YXJkAQN0a24JALkJAgkAzAgCAgQlcyVzCQDMCAICDm5vdERpc3RyaWJ1dGVkCQDMCAIFA3RrbgUDbmlsBQlzZXBhcmF0b3IBBXRvWDE4AgdvcmlnVmFsCG9yaWdNdWx0CQC8AgMJALYCAQUHb3JpZ1ZhbAUHTVVMVFgxOAUIb3JpZ011bHQBDGdldEludE9yWmVybwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQxnZXRJbnRPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEMZ2V0SW50T3JGYWlsAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQR0aGlzBQNrZXkJAKwCAgkArAICAg9NYW5kYXRvcnkgdGhpcy4FA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRTdHJPckVsc2UCA2tleQpkZWZhdWx0VmFsCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQUKZGVmYXVsdFZhbAEPdG9BZGRyZXNzT3JGYWlsAQphZGRyZXNzU3RyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUKYWRkcmVzc1N0cgkArAICAiFjb3VsZG4ndCBwYXJzZSBwYXNzZWQgYWRkcmVzc1N0cj0FCmFkZHJlc3NTdHIBC3RvQXNzZXRWZWN0AQhhc3NldFN0cgMJAAACBQhhc3NldFN0cgUKV0FWRVNJRFNUUgUEdW5pdAkA2QQBBQhhc3NldFN0cgEFYXNJbnQBA3ZhbAQHJG1hdGNoMAUDdmFsAwkAAQIFByRtYXRjaDACA0ludAQGdmFsSW50BQckbWF0Y2gwBQZ2YWxJbnQJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBEmFzU3dhcFBhcmFtc1NUUlVDVAEBdgQHJG1hdGNoMAUBdgMJAAECBQckbWF0Y2gwAiMoSW50LCBJbnQsIEludCwgSW50LCBJbnQsIEludCwgSW50KQQGc3RydWN0BQckbWF0Y2gwBQZzdHJ1Y3QJAAIBAhVmYWlsIHRvIGNhc3QgaW50byBJbnQBE2Zvcm1hdEhpc3RvcnlSZWNvcmQECW9sZEFtb3VudAhvbGRTdGFydAluZXdBbW91bnQIbmV3U3RhcnQJALkJAgkAzAgCAgwlZCVkJWQlZCVkJWQJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIJAKQDAQUJb2xkQW1vdW50CQDMCAIJAKQDAQUIb2xkU3RhcnQJAMwIAgkApAMBBQluZXdBbW91bnQJAMwIAgkApAMBBQhuZXdTdGFydAUDbmlsBQlzZXBhcmF0b3IBGGZvcm1hdENsYWltSGlzdG9yeVJlY29yZAIEdXNlcg5jbGFpbWVkUmV3YXJkcwkAuQkCCQDMCAICCCVzJWQlZCVzCQDMCAIFBHVzZXIJAMwIAgkApAMBCAUJbGFzdEJsb2NrBmhlaWdodAkAzAgCCQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wCQDMCAIFDmNsYWltZWRSZXdhcmRzBQNuaWwFCXNlcGFyYXRvcgESSGlzdG9yeVJlY29yZEVudHJ5BwR0eXBlC3VzZXJBZGRyZXNzBHR4SWQJb2xkQW1vdW50CG9sZFN0YXJ0CW5ld0Ftb3VudAhuZXdTdGFydAkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDBQR0eXBlBQt1c2VyQWRkcmVzcwUEdHhJZAkBE2Zvcm1hdEhpc3RvcnlSZWNvcmQEBQlvbGRBbW91bnQFCG9sZFN0YXJ0BQluZXdBbW91bnQFCG5ld1N0YXJ0ARFDbGFpbUhpc3RvcnlFbnRyeQMLdXNlckFkZHJlc3MEdHhJZA5jbGFpbWVkUmV3YXJkcwkBC1N0cmluZ0VudHJ5AgkBEGtleUhpc3RvcnlSZWNvcmQDAgVjbGFpbQULdXNlckFkZHJlc3MFBHR4SWQJARhmb3JtYXRDbGFpbUhpc3RvcnlSZWNvcmQCCQClCAEFC3VzZXJBZGRyZXNzBQ5jbGFpbWVkUmV3YXJkcwELU3RhdHNSZXN1bHQDDnRvdGFsTG9ja2VkSW5jDGxvY2tDb3VudEluYw11c2Vyc0NvdW50SW5jBApsb2Nrc0NvdW50CQEMZ2V0SW50T3JaZXJvAQkBEmtleVN0YXRzTG9ja3NDb3VudAAECnVzZXJzQ291bnQJAQxnZXRJbnRPclplcm8BCQESa2V5U3RhdHNVc2Vyc0NvdW50AAQLdG90YWxBbW91bnQJAQxnZXRJbnRPclplcm8BCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABA50b3RhbEFtb3VudE5ldwkAZAIFC3RvdGFsQW1vdW50BQ50b3RhbExvY2tlZEluYwkAlQoDCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQESa2V5U3RhdHNMb2Nrc0NvdW50AAkAZAIFCmxvY2tzQ291bnQFDGxvY2tDb3VudEluYwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEmtleVN0YXRzVXNlcnNDb3VudAAJAGQCBQp1c2Vyc0NvdW50BQ11c2Vyc0NvdW50SW5jCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQABQ50b3RhbEFtb3VudE5ldwUDbmlsBQt0b3RhbEFtb3VudAUOdG90YWxBbW91bnROZXcBD0xvY2tQYXJhbXNFbnRyeQMLdXNlckFkZHJlc3MGYW1vdW50GnZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5TG9ja1BhcmFtVXNlckFtb3VudAEFC3VzZXJBZGRyZXNzBQZhbW91bnQJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlMb2NrUGFyYW1TdGFydEJsb2NrAQULdXNlckFkZHJlc3MFGnZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0BQNuaWwBD2dldFBhcmFtc09yRmFpbAAJAJQKAgkA2QQBCQEPZ2V0U3RyaW5nT3JGYWlsAgUEdGhpcwkBEGtleVN0YWtlZEFzc2V0SWQACQEMZ2V0SW50T3JGYWlsAQkBEGtleU1pbkxvY2tBbW91bnQAAQxpc0FjdGl2ZVVzZXIBC3VzZXJBZGRyZXNzCQBmAgkBDGdldEludE9yRWxzZQIJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MAAAAAARNnZXRVc2VyUGFyYW1zT3JVbml0AQt1c2VyQWRkcmVzcwMJAQxpc0FjdGl2ZVVzZXIBBQt1c2VyQWRkcmVzcwkAlQoDBwkBDGdldEludE9yRmFpbAEJARZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AQULdXNlckFkZHJlc3MJAQxnZXRJbnRPckZhaWwBCQEWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawEFC3VzZXJBZGRyZXNzBQR1bml0ARNnZXRVc2VyUGFyYW1zT3JGYWlsAQt1c2VyQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQETZ2V0VXNlclBhcmFtc09yVW5pdAEFC3VzZXJBZGRyZXNzCQCsAgIJAKwCAgIFVXNlciAJAKUIAQULdXNlckFkZHJlc3MCDyBpcyBub3QgZGVmaW5lZAASc3VwcG9ydGVkQXNzZXRzU3RyCQEMZ2V0U3RyT3JFbHNlAgkBGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwACAAATc3VwcG9ydGVkQXNzZXRzTGlzdAkAtQkCBRJzdXBwb3J0ZWRBc3NldHNTdHICAV8BCmNhbGNSZXdhcmQFC3VzZXJBZGRyZXNzB2Fzc2V0SWQNc3Rha2VkQW1vdW50WA5kZXBvc2l0TnVtVXNlcg5kZXBvc2l0TnVtTGFzdAQXcmV3YXJkUGVyTnNidFN1bUxhc3RLRVkJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ5kZXBvc2l0TnVtTGFzdAUHYXNzZXRJZAQKc3VtTGFzdFgxOAkApwMBCQEMZ2V0U3RyT3JFbHNlAgkBFWtleVJld2FyZFBlck5zYnRTdW1BdAIFDmRlcG9zaXROdW1MYXN0BQdhc3NldElkAgEwBApzdW1Vc2VyWDE4CQCnAwEJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bVVzZXIFB2Fzc2V0SWQCATAEEXJld2FyZER5bmFtaWNQYXJ0CQCgAwEJALwCAwkAuAICBQpzdW1MYXN0WDE4BQpzdW1Vc2VyWDE4BQ1zdGFrZWRBbW91bnRYBQdNVUxUWDE4BBNyZXdhcmRDYWNoZWRQYXJ0S0VZCQEJa2V5UmV3YXJkAgULdXNlckFkZHJlc3MFB2Fzc2V0SWQEEHJld2FyZENhY2hlZFBhcnQJAQxnZXRJbnRPckVsc2UCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZAAAJAJYKBAkAZAIFEHJld2FyZENhY2hlZFBhcnQFEXJld2FyZER5bmFtaWNQYXJ0BRByZXdhcmRDYWNoZWRQYXJ0BRFyZXdhcmREeW5hbWljUGFydAUTcmV3YXJkQ2FjaGVkUGFydEtFWQEMdG9TdGFydE9mRGF5AQl0aW1lc3RhbXAJAGgCCQBpAgUJdGltZXN0YW1wBQlEQVlNSUxMSVMFCURBWU1JTExJUwETZmluZEVsZW1lbnRQb3NpdGlvbgMDc3JjB2VsZW1lbnQDc2VwBAxlbGVtZW50U3RhcnQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAswkCBQNzcmMFB2VsZW1lbnQJAKwCAgkArAICCQCsAgICFnRoZXJlIGlzIG5vIHN1YnN0cmluZyAFB2VsZW1lbnQCBCBpbiAFA3NyYwMJAAACBQxlbGVtZW50U3RhcnQAAAAABARsZWZ0CQCvAgIFA3NyYwUMZWxlbWVudFN0YXJ0CQBlAgkAkAMBCQC1CQIFBGxlZnQFA3NlcAABABNEZXBvc2l0VG90YWxzUFJFRklYAiQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQlZCVkJWQBE3VwZGF0ZURlcG9zaXRUb3RhbHMDB2N1cnJWYWwLaWR4VG9VcGRhdGUIZGVsdGFBbXQEB2N1cnJBcnIJALUJAgUHY3VyclZhbAUDU0VQCgEOdXBkRGVwVG90QnlJZHgBA2lkeAMJAQIhPQIFA2lkeAULaWR4VG9VcGRhdGUJAJEDAgUHY3VyckFycgUDaWR4CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUHY3VyckFycgUDaWR4BQhkZWx0YUFtdAkAuQkCCQDMCAIFE0RlcG9zaXRUb3RhbHNQUkVGSVgJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQABCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAAgkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAMJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAECQDMCAIJAQ51cGREZXBUb3RCeUlkeAEABQkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAYJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAHCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEACAkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAkJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAKCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEACwkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAAwJAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQANCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEADgkAzAgCCQEOdXBkRGVwVG90QnlJZHgBAA8JAMwIAgkBDnVwZERlcFRvdEJ5SWR4AQAQCQDMCAIJAQ51cGREZXBUb3RCeUlkeAEAEQkAzAgCCQEOdXBkRGVwVG90QnlJZHgBABIFA25pbAUDU0VQARVEZXBvc2l0c1RvdGFsc0VudHJpZXMCDWRlcG9zaXRBbW91bnQKYXNzZXRJZFN0cgQKc3RhcnRPZkRheQkBDHRvU3RhcnRPZkRheQEIBQlsYXN0QmxvY2sJdGltZXN0YW1wBAhieURheUtFWQkBF2tleVN0YXRzRGVwb3NpdEFtdEJ5RGF5AQUKc3RhcnRPZkRheQQJdG90YWxzS0VZCQEYa2V5U3RhdHNEZXBvc2l0QW10VG90YWxzAAQIcG9zaXRpb24JARNmaW5kRWxlbWVudFBvc2l0aW9uAwUSc3VwcG9ydGVkQXNzZXRzU3RyBQphc3NldElkU3RyAgFfBAtkZWZhdWx0REFUQQkArAICBRNEZXBvc2l0VG90YWxzUFJFRklYAjZfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzBfXzAEDmN1cnJUb3RhbHNEQVRBCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFCXRvdGFsc0tFWQULZGVmYXVsdERBVEEEDW5ld1RvdGFsc0RBVEEJARN1cGRhdGVEZXBvc2l0VG90YWxzAwUOY3VyclRvdGFsc0RBVEEJAGQCBQhwb3NpdGlvbgABBQ1kZXBvc2l0QW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIFCXRvdGFsc0tFWQUNbmV3VG90YWxzREFUQQkAzAgCCQELU3RyaW5nRW50cnkCBQhieURheUtFWQUNbmV3VG90YWxzREFUQQUDbmlsAQ1SZXdhcmRFbnRyaWVzAwlpc05ld1VzZXILdXNlckFkZHJlc3MMc3Rha2VkQW1vdW50BA1zdGFrZWRBbW91bnRYCQC2AgEFDHN0YWtlZEFtb3VudAQbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAQULdXNlckFkZHJlc3MEDmRlcG9zaXROdW1Vc2VyCQEMZ2V0SW50T3JFbHNlAgUbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP///////////wEEDmRlcG9zaXROdW1MYXN0CQEMZ2V0SW50T3JFbHNlAgkBEWtleURlcG9zaXROdW1MYXN0AAD///////////8BCgEbZm9yRWFjaEFzc2V0Q2FjaGVVc2VyUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMTExMjExMTI1NgkBCmNhbGNSZXdhcmQFBQt1c2VyQWRkcmVzcwUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAxMTEyMTExMjU2Al8xBAZjYWNoZWQIBQ0kdDAxMTEyMTExMjU2Al8yBAdkeW5hbWljCAUNJHQwMTExMjExMTI1NgJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDExMTIxMTEyNTYCXzQJAM0IAgUFYWNjdW0JAQxJbnRlZ2VyRW50cnkCBRNyZXdhcmRDYWNoZWRQYXJ0S0VZBQtyZXdhcmRUb3RhbAMDCQAAAgUOZGVwb3NpdE51bUxhc3QA////////////AQkAAAIFDmRlcG9zaXROdW1Vc2VyAP///////////wEHBQNuaWwDAwkAAAIFDmRlcG9zaXROdW1MYXN0AP///////////wEJAGYCBQ5kZXBvc2l0TnVtVXNlcgD///////////8BBwkAAgECL2ludmFsaWQgZGVwb3NpdE51bUxhc3QgYW5kIGRlcG9zaXROdW1Vc2VyIHN0YXRlAwMJAGYCBQ5kZXBvc2l0TnVtTGFzdAD///////////8BCQBnAgUOZGVwb3NpdE51bVVzZXIA////////////AQcDBQlpc05ld1VzZXIJAMwIAgkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QFA25pbAkAzQgCCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBG2ZvckVhY2hBc3NldENhY2hlVXNlclJld2FyZAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgOQkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQkBDEludGVnZXJFbnRyeQIFG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQUOZGVwb3NpdE51bUxhc3QJAAIBCQCsAgIJAKwCAgkArAICAiR1bmNvdmVyZWQgY29uZGl0aW9uOiBkZXBvc2l0TnVtTGFzdD0JAKQDAQUOZGVwb3NpdE51bUxhc3QCECBkZXBvc2l0TnVtVXNlcj0JAKQDAQUOZGVwb3NpdE51bVVzZXIBIkluY3JlbWVudE5vdERpc3RyaWJ1dGVkUmV3YXJkRW50cnkCA3RrbglhbW91bnRJbmMEF25vdERpc3RyaWJ1dGVkUmV3YXJkS0VZCQEXa2V5Tm90RGlzdHJpYnV0ZWRSZXdhcmQBBQN0a24EFG5vdERpc3RyaWJ1dGVkUmV3YXJkCQEMZ2V0SW50T3JFbHNlAgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkAAAkAzAgCCQEMSW50ZWdlckVudHJ5AgUXbm90RGlzdHJpYnV0ZWRSZXdhcmRLRVkJAGQCBRRub3REaXN0cmlidXRlZFJld2FyZAUJYW1vdW50SW5jBQNuaWwBC3N1cmZUb0duc2J0AQdzdXJmQW10CQBpAgUHc3VyZkFtdAUSZ25zYnRGcm9tU3VyZkNvZWZmAR9tZXJnZVZvdGluZ1Bvd2VyRWZmZWN0aXZlSGVpZ2h0BBBxdWFyYW50aW5lUGVyaW9kEXZwRWZmZWN0aXZlSGVpZ2h0CXN0YWtlZEFtdAxzdGFrZWRBbXRORVcED3JlbWFpbmluZ1RvV2FpdAkAZQIFEXZwRWZmZWN0aXZlSGVpZ2h0BQZoZWlnaHQDCQBnAgAABQ9yZW1haW5pbmdUb1dhaXQJAGQCBQZoZWlnaHQFEHF1YXJhbnRpbmVQZXJpb2QEDWFscmVhZHlXYWl0ZWQJAGUCBRBxdWFyYW50aW5lUGVyaW9kBQ9yZW1haW5pbmdUb1dhaXQEA2tYOAMJAQIhPQIFDHN0YWtlZEFtdE5FVwAACQBrAwUJc3Rha2VkQW10BQVNVUxUOAUMc3Rha2VkQW10TkVXBRF2cEVmZmVjdGl2ZUhlaWdodAkAZQIJAGQCBRBxdWFyYW50aW5lUGVyaW9kBQZoZWlnaHQJAGsDBQ1hbHJlYWR5V2FpdGVkBQNrWDgFBU1VTFQ4AQptZXJnZVN0YWtlAgt1c2VyQWRkcmVzcwthbW91bnRUb0FkZAQNJHQwMTQ5MDgxNTAxOAkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDE0OTA4MTUwMTgCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDE0OTA4MTUwMTgCXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUNJHQwMTQ5MDgxNTAxOAJfMwQPc3Rha2VkQW1vdW50TkVXAwUJaXNOZXdVc2VyBQthbW91bnRUb0FkZAkAZAIFC2Ftb3VudFRvQWRkBQxzdGFrZWRBbW91bnQEEHF1YXJhbnRpbmVQZXJpb2QJAGgCAKALAA4EFHZwRWZmZWN0aXZlSGVpZ2h0TkVXAwUJaXNOZXdVc2VyCQBkAgUQcXVhcmFudGluZVBlcmlvZAUGaGVpZ2h0CQEfbWVyZ2VWb3RpbmdQb3dlckVmZmVjdGl2ZUhlaWdodAQFEHF1YXJhbnRpbmVQZXJpb2QFEXZwRWZmZWN0aXZlSGVpZ2h0BQxzdGFrZWRBbW91bnQFD3N0YWtlZEFtb3VudE5FVwkAlwoFBQlpc05ld1VzZXIFDHN0YWtlZEFtb3VudAURdnBFZmZlY3RpdmVIZWlnaHQFD3N0YWtlZEFtb3VudE5FVwUUdnBFZmZlY3RpdmVIZWlnaHRORVcBC2NvbW1vblN0YWtlAgt1c2VyQWRkcmVzcwFpBA0kdDAxNTUwNDE1NTU4CQEPZ2V0UGFyYW1zT3JGYWlsAAQNc3Rha2VkQXNzZXRJZAgFDSR0MDE1NTA0MTU1NTgCXzEEDW1pbkxvY2tBbW91bnQIBQ0kdDAxNTUwNDE1NTU4Al8yAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIVSW52YWxpZCBwYXltZW50cyBzaXplBAdwYXltZW50CQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAgFB3BheW1lbnQGYW1vdW50BBNpbnZhbGlkQXNzZXRNZXNzYWdlCQCsAgIJAKwCAgIPSW52YWxpZCBhc3NldC4gCQDYBAEFDXN0YWtlZEFzc2V0SWQCDCBpcyBleHBlY3RlZAQHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCAUHcGF5bWVudAdhc3NldElkBRNpbnZhbGlkQXNzZXRNZXNzYWdlAwkBAiE9AgUHYXNzZXRJZAUNc3Rha2VkQXNzZXRJZAkAAgEFE2ludmFsaWRBc3NldE1lc3NhZ2UEDnVzZXJBZGRyZXNzU3RyCQClCAEFC3VzZXJBZGRyZXNzBAptZXJnZWREYXRhCQEKbWVyZ2VTdGFrZQIFC3VzZXJBZGRyZXNzBQZhbW91bnQECWlzTmV3VXNlcggFCm1lcmdlZERhdGECXzEEDHN0YWtlZEFtb3VudAgFCm1lcmdlZERhdGECXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUKbWVyZ2VkRGF0YQJfMwQPc3Rha2VkQW1vdW50TkVXCAUKbWVyZ2VkRGF0YQJfNAQUdnBFZmZlY3RpdmVIZWlnaHRORVcIBQptZXJnZWREYXRhAl81AwkAZgIFDW1pbkxvY2tBbW91bnQFD3N0YWtlZEFtb3VudE5FVwkAAgEJAKwCAgITTWluIGxvY2sgYW1vdW50IGlzIAkApAMBBQ1taW5Mb2NrQW1vdW50BA0kdDAxNjM1NzE2NDU5CQELU3RhdHNSZXN1bHQDBQZhbW91bnQAAQMFCWlzTmV3VXNlcgABAAAEDHN0YXRzRW50cmllcwgFDSR0MDE2MzU3MTY0NTkCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTYzNTcxNjQ1OQJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxNjM1NzE2NDU5Al8zCQDOCAIJAM4IAgkAzggCCQDMCAIJARJIaXN0b3J5UmVjb3JkRW50cnkHAgVzdGFrZQULdXNlckFkZHJlc3MIBQFpDXRyYW5zYWN0aW9uSWQFDHN0YWtlZEFtb3VudAURdnBFZmZlY3RpdmVIZWlnaHQFD3N0YWtlZEFtb3VudE5FVwUUdnBFZmZlY3RpdmVIZWlnaHRORVcFA25pbAkBDVJld2FyZEVudHJpZXMDBQlpc05ld1VzZXIFDnVzZXJBZGRyZXNzU3RyBQxzdGFrZWRBbW91bnQJAQ9Mb2NrUGFyYW1zRW50cnkDBQt1c2VyQWRkcmVzcwUPc3Rha2VkQW1vdW50TkVXBRR2cEVmZmVjdGl2ZUhlaWdodE5FVwUMc3RhdHNFbnRyaWVzAQtjb21tb25DbGFpbQILdXNlckFkZHJlc3MBaQQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MDCQBmAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQIZcGF5bWVudHMgYXJlIG5vdCBhY2NlcHRlZAQNJHQwMTY5MzgxNzA0MwkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDE2OTM4MTcwNDMCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDE2OTM4MTcwNDMCXzIEDHN0YWtpbmdTdGFydAgFDSR0MDE2OTM4MTcwNDMCXzMEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQ51c2VyQWRkcmVzc1N0cgQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMTc0MTQxNzU1MgkBCmNhbGNSZXdhcmQFBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAxNzQxNDE3NTUyAl8xBAZjYWNoZWQIBQ0kdDAxNzQxNDE3NTUyAl8yBAdkeW5hbWljCAUNJHQwMTc0MTQxNzU1MgJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDE3NDE0MTc1NTICXzQECmNsYWltZWRLRVkJAQprZXlDbGFpbWVkAgUOdXNlckFkZHJlc3NTdHIFBWFzc2V0BA0kdDAxNzYxMjE3NjQ5BQVhY2N1bQQEZGF0YQgFDSR0MDE3NjEyMTc2NDkCXzEEEWNsYWltZWRBbXRCeUFzc2V0CAUNJHQwMTc2MTIxNzY0OQJfMgQHbmV3UGFydAkAuQkCCQDMCAIFBWFzc2V0CQDMCAIJAKQDAQULcmV3YXJkVG90YWwFA25pbAIBOgQUY2xhaW1lZEFtdEJ5QXNzZXROZXcJALkJAgkAzAgCBRFjbGFpbWVkQW10QnlBc3NldAkAzAgCBQduZXdQYXJ0BQNuaWwCAV8DCQBnAgAABQtyZXdhcmRUb3RhbAkAlAoCBQRkYXRhBRRjbGFpbWVkQW10QnlBc3NldE5ldwkAlAoCCQDNCAIJAM0IAgkAzQgCBQRkYXRhCQEOU2NyaXB0VHJhbnNmZXIDBQt1c2VyQWRkcmVzcwULcmV3YXJkVG90YWwJAQt0b0Fzc2V0VmVjdAEFBWFzc2V0CQEMSW50ZWdlckVudHJ5AgUKY2xhaW1lZEtFWQkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUKY2xhaW1lZEtFWQAABQtyZXdhcmRUb3RhbAkBDEludGVnZXJFbnRyeQIFE3Jld2FyZENhY2hlZFBhcnRLRVkAAAUUY2xhaW1lZEFtdEJ5QXNzZXROZXcEDSR0MDE4MTA5MTgyMjIKAAIkbAUTc3VwcG9ydGVkQXNzZXRzTGlzdAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBH2ZvckVhY2hBc3NldENhbGNVbmNsYWltZWRSZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkECXRyYW5zZmVycwgFDSR0MDE4MTA5MTgyMjICXzEEF2NsYWltZWRBbXRCeUFzc2V0UmVzdWx0CAUNJHQwMTgxMDkxODIyMgJfMgMJAGcCAAAJAJADAQUJdHJhbnNmZXJzCQCUCgIFA25pbAAACQCUCgIJAM0IAgkAzQgCBQl0cmFuc2ZlcnMJAQxJbnRlZ2VyRW50cnkCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkFDmRlcG9zaXROdW1MYXN0CQERQ2xhaW1IaXN0b3J5RW50cnkDBQt1c2VyQWRkcmVzcwgFAWkNdHJhbnNhY3Rpb25JZAkAsAICBRdjbGFpbWVkQW10QnlBc3NldFJlc3VsdAABCQCQAwEFCXRyYW5zZmVycwsBaQELY29uc3RydWN0b3IDDW1pbkxvY2tBbW91bnQVc3VwcG9ydGVkUmV3YXJkQXNzZXRzDXN0YWtlZEFzc2V0SWQDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhFQZXJtaXNzaW9uIGRlbmllZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleU1pbkxvY2tBbW91bnQABQ1taW5Mb2NrQW1vdW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARhrZXlTdXBwb3J0ZWRSZXdhcmRBc3NldHMABRVzdXBwb3J0ZWRSZXdhcmRBc3NldHMJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEGtleVN0YWtlZEFzc2V0SWQABQ1zdGFrZWRBc3NldElkBQNuaWwBaQEFc3Rha2UACQELY29tbW9uU3Rha2UCCAUBaQZjYWxsZXIFAWkBaQETc3Rha2VCeU9yaWdpbkNhbGxlcgAJAQtjb21tb25TdGFrZQIIBQFpDG9yaWdpbkNhbGxlcgUBaQFpAQd1bnN0YWtlAQZhbW91bnQDCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAiN1bnN0YWtlIGRvZXNuJ3QgcmVxdWlyZSBhbnkgcGF5bWVudAQLdXNlckFkZHJlc3MIBQFpBmNhbGxlcgQOdXNlckFkZHJlc3NTdHIJAKUIAQULdXNlckFkZHJlc3MEDSR0MDE5MTU2MTkyMTAJAQ9nZXRQYXJhbXNPckZhaWwABA1zdGFrZWRBc3NldElkCAUNJHQwMTkxNTYxOTIxMAJfMQQNbWluTG9ja0Ftb3VudAgFDSR0MDE5MTU2MTkyMTACXzIEDSR0MDE5MjEzMTkyOTcJARNnZXRVc2VyUGFyYW1zT3JGYWlsAQULdXNlckFkZHJlc3MECWlzTmV3VXNlcggFDSR0MDE5MjEzMTkyOTcCXzEEDHN0YWtlZEFtb3VudAgFDSR0MDE5MjEzMTkyOTcCXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUNJHQwMTkyMTMxOTI5NwJfMwQQc3dhcFBhcmFtc1NUUlVDVAkBEmFzU3dhcFBhcmFtc1NUUlVDVAEJAP0HBAUQbmV1dHJpbm9Db250cmFjdAIbc3dhcFBhcmFtc0J5VXNlclNZU1JFQURPTkxZCQDMCAIFDnVzZXJBZGRyZXNzU3RyCQDMCAIAAAUDbmlsBQNuaWwEFHN3YXBMaW1pdFNwZW50SW5Vc2RuCAUQc3dhcFBhcmFtc1NUUlVDVAJfMgQOYmxja3MyTG10UmVzZXQIBRBzd2FwUGFyYW1zU1RSVUNUAl8zAwkAZgIFFHN3YXBMaW1pdFNwZW50SW5Vc2RuAAAJAAIBCQCsAgIJAKwCAgItWW91IGhhdmUgYWxyZWFkeSBtYWRlIGEgc3dhcCBvcGVyYXRpb24uIFdhaXQgCQCkAwEJAGQCBQZoZWlnaHQFDmJsY2tzMkxtdFJlc2V0AhIgaGVpZ2h0IHRvIHVuc3Rha2UDCQBnAgAABQxzdGFrZWRBbW91bnQJAAIBAhJOb3RoaW5nIHRvIHVuc3Rha2UDCQBmAgUGYW1vdW50BQxzdGFrZWRBbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAgpSZXF1ZXN0ZWQgCQCkAwEFBmFtb3VudAISLCBidXQgc3Rha2VkIG9ubHkgCQCkAwEFDHN0YWtlZEFtb3VudAQPc3Rha2VkQW1vdW50TkVXCQBlAgUMc3Rha2VkQW1vdW50BQZhbW91bnQEDSR0MDE5OTM1MjAwOTMJAQtTdGF0c1Jlc3VsdAMJAQEtAQUGYW1vdW50AwkAAAIFBmFtb3VudAUMc3Rha2VkQW1vdW50AP///////////wEAAAMJAAACBQZhbW91bnQFDHN0YWtlZEFtb3VudAD///////////8BAAAEDHN0YXRzRW50cmllcwgFDSR0MDE5OTM1MjAwOTMCXzEEC3RvdGFsU3Rha2VkCAUNJHQwMTk5MzUyMDA5MwJfMgQOdG90YWxTdGFrZWROZXcIBQ0kdDAxOTkzNTIwMDkzAl8zCQDOCAIJAM4IAgkAzggCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFC3VzZXJBZGRyZXNzBQZhbW91bnQFDXN0YWtlZEFzc2V0SWQJAMwIAgkBEkhpc3RvcnlSZWNvcmRFbnRyeQcCB3Vuc3Rha2UFC3VzZXJBZGRyZXNzCAUBaQ10cmFuc2FjdGlvbklkBQxzdGFrZWRBbW91bnQFEXZwRWZmZWN0aXZlSGVpZ2h0BQ9zdGFrZWRBbW91bnRORVcFEXZwRWZmZWN0aXZlSGVpZ2h0BQNuaWwJAQ1SZXdhcmRFbnRyaWVzAwcFDnVzZXJBZGRyZXNzU3RyBQxzdGFrZWRBbW91bnQJAQ9Mb2NrUGFyYW1zRW50cnkDBQt1c2VyQWRkcmVzcwUPc3Rha2VkQW1vdW50TkVXBRF2cEVmZmVjdGl2ZUhlaWdodAUMc3RhdHNFbnRyaWVzAWkBB2RlcG9zaXQAAwkBAiE9AgkAkAMBCAUBaQhwYXltZW50cwABCQACAQIfZXhhY3QgMSBwYXltZW50IGlzIGFsbG93ZWQgb25seQQDcG10CQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAgFA3BtdAZhbW91bnQECnBtdEFzc2V0SWQJAQt2YWx1ZU9yRWxzZQIIBQNwbXQHYXNzZXRJZAUHV0FWRVNJRAQNcG10QXNzZXRJZFN0cgkA2AQBBQpwbXRBc3NldElkBAhwbXRNdWx0WAMJAAACBQpwbXRBc3NldElkBQdXQVZFU0lEBQZNVUxUWDgFBk1VTFRYNgQHYW1vdW50WAkAtgIBBQZhbW91bnQEC3RvdGFsU3Rha2VkCQEMZ2V0SW50T3JFbHNlAgkBF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAABAx0b3RhbFN0YWtlZFgJALYCAQULdG90YWxTdGFrZWQDCQBmAgAABQt0b3RhbFN0YWtlZAkAAgECG1RPRE86IGNhc2UgaXMgbm90IHN1cHBvcnRlZAMJAAACBQt0b3RhbFN0YWtlZAAACQEiSW5jcmVtZW50Tm90RGlzdHJpYnV0ZWRSZXdhcmRFbnRyeQIFDXBtdEFzc2V0SWRTdHIFBmFtb3VudAQQcmV3YXJkUGVyTnNidFgxOAkAvAIDBQdhbW91bnRYBQdNVUxUWDE4BQx0b3RhbFN0YWtlZFgEEWRlcG9zaXROdW1MYXN0S0VZCQERa2V5RGVwb3NpdE51bUxhc3QABA5kZXBvc2l0TnVtTGFzdAkBDGdldEludE9yRWxzZQIFEWRlcG9zaXROdW1MYXN0S0VZAP///////////wEEDWRlcG9zaXROdW1OZXcJAGQCBQ5kZXBvc2l0TnVtTGFzdAABAwkBASEBCQEIY29udGFpbnMCBRJzdXBwb3J0ZWRBc3NldHNTdHIFDXBtdEFzc2V0SWRTdHIJAAIBCQCsAgIJAKwCAgUSc3VwcG9ydGVkQXNzZXRzU3RyAhEgZG9lc24ndCBjb250YWluIAUNcG10QXNzZXRJZFN0cgoBF3JlZnJlc2hSZXdhcmRQZXJOc2J0U1VNAgVhY2N1bQluZXh0QXNzZXQEFnJld2FyZFBlck5zYnRTdW1OZXdLRVkJARVrZXlSZXdhcmRQZXJOc2J0U3VtQXQCBQ1kZXBvc2l0TnVtTmV3BQluZXh0QXNzZXQECnN1bUxhc3RTdHIJAQxnZXRTdHJPckVsc2UCCQEVa2V5UmV3YXJkUGVyTnNidFN1bUF0AgUOZGVwb3NpdE51bUxhc3QFCW5leHRBc3NldAIBMAkAzQgCBQVhY2N1bQMJAAACBQluZXh0QXNzZXQFDXBtdEFzc2V0SWRTdHIJAQtTdHJpbmdFbnRyeQIFFnJld2FyZFBlck5zYnRTdW1OZXdLRVkJAKYDAQkAtwICCQCnAwEFCnN1bUxhc3RTdHIFEHJld2FyZFBlck5zYnRYMTgJAQtTdHJpbmdFbnRyeQIFFnJld2FyZFBlck5zYnRTdW1OZXdLRVkFCnN1bUxhc3RTdHIJAM4IAgkAzQgCCgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBF3JlZnJlc2hSZXdhcmRQZXJOc2J0U1VNAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJCQEMSW50ZWdlckVudHJ5AgURZGVwb3NpdE51bUxhc3RLRVkFDWRlcG9zaXROdW1OZXcJARVEZXBvc2l0c1RvdGFsc0VudHJpZXMCBQZhbW91bnQFDXBtdEFzc2V0SWRTdHIBaQEMY2xhaW1SZXdhcmRzAAkBC2NvbW1vbkNsYWltAggFAWkGY2FsbGVyBQFpAWkBGmNsYWltUmV3YXJkc0J5T3JpZ2luQ2FsbGVyAAkBC2NvbW1vbkNsYWltAggFAWkMb3JpZ2luQ2FsbGVyBQFpAWkBGHVuY2xhaW1lZFJld2FyZHNSRUFET05MWQEOdXNlckFkZHJlc3NTdHIKARZmb3JFYWNoQXNzZXRaZXJvUmV3YXJkAgVhY2N1bQVhc3NldAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgIBMAkAzAgCAgEwBQNuaWwCAToCAV8EEnVuY2xhaW1lZFJld2FyZFN0cgMJAAACBQ51c2VyQWRkcmVzc1N0cgIACgACJGwFE3N1cHBvcnRlZEFzc2V0c0xpc3QKAAIkcwkAkAMBBQIkbAoABSRhY2MwAgAKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBFmZvckVhY2hBc3NldFplcm9SZXdhcmQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDkJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkEC3VzZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA2MikBBQ51c2VyQWRkcmVzc1N0cgQNJHQwMjI3MTcyMjgyMgkBC3ZhbHVlT3JFbHNlAgkBE2dldFVzZXJQYXJhbXNPclVuaXQBBQt1c2VyQWRkcmVzcwkAlQoDBgAAAAAECWlzTmV3VXNlcggFDSR0MDIyNzE3MjI4MjICXzEEDHN0YWtlZEFtb3VudAgFDSR0MDIyNzE3MjI4MjICXzIEDHN0YWtpbmdTdGFydAgFDSR0MDIyNzE3MjI4MjICXzMEDXN0YWtlZEFtb3VudFgJALYCAQUMc3Rha2VkQW1vdW50BBt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkJARtrZXlVc2VyUmV3YXJkRnJvbURlcG9zaXROdW0BBQ51c2VyQWRkcmVzc1N0cgQOZGVwb3NpdE51bVVzZXIJAQxnZXRJbnRPckVsc2UCBRt1c2VyUmV3YXJkRnJvbURlcG9zaXROdW1LRVkA////////////AQQOZGVwb3NpdE51bUxhc3QJAQxnZXRJbnRPckVsc2UCCQERa2V5RGVwb3NpdE51bUxhc3QAAP///////////wEKAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgVhY2N1bQVhc3NldAQNJHQwMjMxNjgyMzMwNgkBCmNhbGNSZXdhcmQFBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQFDXN0YWtlZEFtb3VudFgFDmRlcG9zaXROdW1Vc2VyBQ5kZXBvc2l0TnVtTGFzdAQLcmV3YXJkVG90YWwIBQ0kdDAyMzE2ODIzMzA2Al8xBAZjYWNoZWQIBQ0kdDAyMzE2ODIzMzA2Al8yBAdkeW5hbWljCAUNJHQwMjMxNjgyMzMwNgJfMwQTcmV3YXJkQ2FjaGVkUGFydEtFWQgFDSR0MDIzMTY4MjMzMDYCXzQEB2NsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBCmtleUNsYWltZWQCBQ51c2VyQWRkcmVzc1N0cgUFYXNzZXQAAAkArAICCQCsAgIFBWFjY3VtCQC5CQIJAMwIAgUFYXNzZXQJAMwIAgkApAMBBQtyZXdhcmRUb3RhbAkAzAgCCQCkAwEFB2NsYWltZWQFA25pbAIBOgIBXwoAAiRsBRNzdXBwb3J0ZWRBc3NldHNMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAIACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAR9mb3JFYWNoQXNzZXRDYWxjVW5jbGFpbWVkUmV3YXJkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhNMaXN0IHNpemUgZXhjZWVkcyA5CQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJCQCUCgIFA25pbAkAswICBRJ1bmNsYWltZWRSZXdhcmRTdHIAAQFpARZzdXJmU3Rha2luZ1NZU1JFQURPTkxZAhV1c2VyQWRkcmVzc1N0ck9yRW1wdHkIc3VyZkRpZmYECXN1cmZUb3RhbAkBDGdldEludE9yRWxzZQIJARdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAQSZ25zYnRGcm9tU3VyZlRvdGFsCQELc3VyZlRvR25zYnQBBQlzdXJmVG90YWwDCQAAAgUVdXNlckFkZHJlc3NTdHJPckVtcHR5AgAJAJQKAgUDbmlsCQDMCAIAAAkAzAgCBQlzdXJmVG90YWwJAMwIAgAACQDMCAIFEmduc2J0RnJvbVN1cmZUb3RhbAkAzAgCAAAJAMwIAgUGaGVpZ2h0CQDMCAIFBmhlaWdodAUDbmlsBAt1c2VyQWRkcmVzcwkBD3RvQWRkcmVzc09yRmFpbAEFFXVzZXJBZGRyZXNzU3RyT3JFbXB0eQQKbWVyZ2VkRGF0YQkBCm1lcmdlU3Rha2UCBQt1c2VyQWRkcmVzcwUIc3VyZkRpZmYECWlzTmV3VXNlcggFCm1lcmdlZERhdGECXzEEDHN0YWtlZEFtb3VudAgFCm1lcmdlZERhdGECXzIEEXZwRWZmZWN0aXZlSGVpZ2h0CAUKbWVyZ2VkRGF0YQJfMwQPc3Rha2VkQW1vdW50TkVXCAUKbWVyZ2VkRGF0YQJfNAQUdnBFZmZlY3RpdmVIZWlnaHRORVcIBQptZXJnZWREYXRhAl81BAhzdXJmVXNlcgUMc3Rha2VkQW1vdW50BBFnbnNidEZyb21TdXJmVXNlcgkBC3N1cmZUb0duc2J0AQUIc3VyZlVzZXIJAJQKAgUDbmlsCQDMCAIFCHN1cmZVc2VyCQDMCAIFCXN1cmZUb3RhbAkAzAgCBRFnbnNidEZyb21TdXJmVXNlcgkAzAgCBRJnbnNidEZyb21TdXJmVG90YWwJAMwIAgURdnBFZmZlY3RpdmVIZWlnaHQJAMwIAgUUdnBFZmZlY3RpdmVIZWlnaHRORVcFA25pbAFpARhnbnNidEZyb21TdXJmU1lTUkVBRE9OTFkBB3N1cmZBbXQJAJQKAgUDbmlsCQELc3VyZlRvR25zYnQBBQdzdXJmQW10AWkBEWNvbmZpZ1NZU1JFQURPTkxZAAQKbWluTG9ja0FtdAkBEUBleHRyTmF0aXZlKDEwNTUpAQkBEGtleU1pbkxvY2tBbW91bnQABCBzdXJmVm90aW5nUG93ZXJSZXN0cmljdGl2ZVBlcmlvZAkAaAIAoAsADgQbYnJUb1N0YXJ0U3VyZlRyYW5zZm9ybWF0aW9uALCYRgkAlAoCBQNuaWwJAMwIAgUKbWluTG9ja0FtdAkAzAgCCQBoAgUSZ25zYnRGcm9tU3VyZkNvZWZmBQVNVUxUNgkAzAgCBSBzdXJmVm90aW5nUG93ZXJSZXN0cmljdGl2ZVBlcmlvZAkAzAgCBRticlRvU3RhcnRTdXJmVHJhbnNmb3JtYXRpb24FA25pbAC7DVGK", "chainId": 87, "height": 3336166, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9PAfryBuDnVdE792YhSxTUKPZcX1n4S69ZQvwrpYxGK6 Next: DHD1i6nmxwTkbgXS851QSDfKHrxtPcGGRZPz6hzQnD48 Diff:
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = " | |
4 | + | let a = "6a94b841b387e5d4bd8be8f8ed5f80057ef86186" | |
5 | 5 | ||
6 | 6 | let b = "__" | |
7 | 7 | ||
21 | 21 | ||
22 | 22 | let j = fromBase58String(i) | |
23 | 23 | ||
24 | - | let k = | |
24 | + | let k = 86400000 | |
25 | 25 | ||
26 | - | let l = | |
26 | + | let l = 1 | |
27 | 27 | ||
28 | - | let m = | |
28 | + | let m = 2 | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = 3 | |
31 | 31 | ||
32 | - | let o = | |
32 | + | let o = 4 | |
33 | 33 | ||
34 | - | let p = | |
34 | + | let p = 5 | |
35 | 35 | ||
36 | - | let q = | |
36 | + | let q = 6 | |
37 | 37 | ||
38 | - | let r = | |
38 | + | let r = 7 | |
39 | 39 | ||
40 | - | let s = | |
40 | + | let s = 8 | |
41 | 41 | ||
42 | - | let t = | |
42 | + | let t = 9 | |
43 | 43 | ||
44 | - | let u = | |
44 | + | let u = 10 | |
45 | 45 | ||
46 | - | func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined")) | |
46 | + | let v = 11 | |
47 | + | ||
48 | + | func w (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined")) | |
47 | 49 | ||
48 | 50 | ||
49 | - | func | |
51 | + | func z () = "%s%s__config__controlAddress" | |
50 | 52 | ||
51 | 53 | ||
52 | - | func | |
54 | + | func A () = "%s__controlConfig" | |
53 | 55 | ||
54 | 56 | ||
55 | - | func | |
57 | + | func B () = "%s%s__cfg__gnsbtFromSurfCoeff" | |
56 | 58 | ||
57 | 59 | ||
58 | - | func | |
60 | + | func C (D) = split(w(D, A()), c) | |
59 | 61 | ||
60 | 62 | ||
61 | - | func | |
63 | + | func E (F,G) = valueOrErrorMessage(addressFromString(F[G]), ("Control cfg doesn't contain address at index " + toString(G))) | |
62 | 64 | ||
63 | 65 | ||
64 | - | let | |
66 | + | let H = addressFromStringValue(valueOrElse(getString(this, z()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP")) | |
65 | 67 | ||
66 | - | let | |
68 | + | let F = C(H) | |
67 | 69 | ||
68 | - | let | |
70 | + | let I = E(F, o) | |
69 | 71 | ||
70 | - | let | |
72 | + | let J = E(F, l) | |
71 | 73 | ||
72 | - | let | |
74 | + | let K = E(F, m) | |
73 | 75 | ||
74 | - | let | |
76 | + | let L = valueOrElse(getInteger(this, B()), 300) | |
75 | 77 | ||
76 | - | func | |
78 | + | func M () = "bond_asset_id" | |
77 | 79 | ||
78 | 80 | ||
79 | - | func | |
81 | + | func N () = "auction_contract" | |
80 | 82 | ||
81 | 83 | ||
82 | - | func | |
84 | + | func O () = "%s__minLockAmount" | |
83 | 85 | ||
84 | 86 | ||
85 | - | func | |
87 | + | func P () = "%s__stakedAssetId" | |
86 | 88 | ||
87 | 89 | ||
88 | - | func | |
90 | + | func Q (R) = makeString(["%s%s%s", "paramByUser", toString(R), "amount"], b) | |
89 | 91 | ||
90 | 92 | ||
91 | - | func | |
93 | + | func S (R) = makeString(["%s%s%s", "paramByUser", toString(R), "start"], b) | |
92 | 94 | ||
93 | 95 | ||
94 | - | func | |
96 | + | func T (R) = makeString(["%s%s%s", "paramByUser", toString(R), "vpEffectiveHeight"], b) | |
95 | 97 | ||
96 | 98 | ||
97 | - | func | |
99 | + | func U (V,R,W) = makeString(["%s%s%s%s", "history", V, toString(R), toBase58String(W)], b) | |
98 | 100 | ||
99 | 101 | ||
100 | - | func | |
102 | + | func X () = makeString(["%s%s", "stats", "activeTotalLocked"], b) | |
101 | 103 | ||
102 | 104 | ||
103 | - | func | |
105 | + | func Y () = makeString(["%s%s", "stats", "locksCount"], b) | |
104 | 106 | ||
105 | 107 | ||
106 | - | func | |
108 | + | func Z () = makeString(["%s%s", "stats", "activeUsersCount"], b) | |
107 | 109 | ||
108 | 110 | ||
109 | - | func | |
111 | + | func aa (ab) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ab)], b) | |
110 | 112 | ||
111 | 113 | ||
112 | - | func | |
114 | + | func ac () = makeString(["%s%s%d", "stats", "depositAmtTotals"], b) | |
113 | 115 | ||
114 | 116 | ||
115 | - | func | |
117 | + | func ad () = "%s__nextPeriod" | |
116 | 118 | ||
117 | 119 | ||
118 | - | func | |
120 | + | func ae () = "supportedRewardAssets" | |
119 | 121 | ||
120 | 122 | ||
121 | - | func | |
123 | + | func af () = makeString(["%s%s%s", "dep", "lastNum"], b) | |
122 | 124 | ||
123 | 125 | ||
124 | - | func ag ( | |
126 | + | func ag (R) = makeString(["%s%s%s", "userRwdFromDepNum", R], b) | |
125 | 127 | ||
126 | 128 | ||
127 | - | func ah ( | |
129 | + | func ah (ai,aj) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ai), aj], b) | |
128 | 130 | ||
129 | 131 | ||
130 | - | func | |
132 | + | func ak (R,aj) = makeString(["%s%s%s", "rwd", R, aj], b) | |
131 | 133 | ||
132 | 134 | ||
133 | - | func | |
135 | + | func al (R,aj) = makeString(["%s%s%s", "clm", R, aj], b) | |
134 | 136 | ||
135 | 137 | ||
136 | - | func am ( | |
138 | + | func am (aj) = makeString(["%s%s", "notDistributed", aj], b) | |
137 | 139 | ||
138 | 140 | ||
139 | - | func an ( | |
141 | + | func an (ao,ap) = fraction(toBigInt(ao), h, ap) | |
140 | 142 | ||
141 | 143 | ||
142 | - | func | |
144 | + | func aq (y) = valueOrElse(getInteger(this, y), 0) | |
143 | 145 | ||
144 | 146 | ||
145 | - | func | |
147 | + | func ar (y,as) = valueOrElse(getInteger(this, y), as) | |
146 | 148 | ||
147 | 149 | ||
148 | - | func | |
150 | + | func at (y) = valueOrErrorMessage(getInteger(this, y), (("Mandatory this." + y) + " is not defined")) | |
149 | 151 | ||
150 | 152 | ||
151 | - | func at (au) = if ((au == i)) | |
152 | - | then unit | |
153 | - | else fromBase58String(au) | |
153 | + | func au (y,as) = valueOrElse(getString(this, y), as) | |
154 | 154 | ||
155 | 155 | ||
156 | - | func av (aw) = { | |
157 | - | let ax = aw | |
158 | - | if ($isInstanceOf(ax, "Int")) | |
156 | + | func av (aw) = valueOrErrorMessage(addressFromString(aw), ("couldn't parse passed addressStr=" + aw)) | |
157 | + | ||
158 | + | ||
159 | + | func ax (ay) = if ((ay == i)) | |
160 | + | then unit | |
161 | + | else fromBase58String(ay) | |
162 | + | ||
163 | + | ||
164 | + | func az (aA) = { | |
165 | + | let aB = aA | |
166 | + | if ($isInstanceOf(aB, "Int")) | |
159 | 167 | then { | |
160 | - | let | |
161 | - | | |
168 | + | let aC = aB | |
169 | + | aC | |
162 | 170 | } | |
163 | 171 | else throw("fail to cast into Int") | |
164 | 172 | } | |
165 | 173 | ||
166 | 174 | ||
167 | - | func | |
168 | - | let | |
169 | - | if ($isInstanceOf( | |
175 | + | func aD (aE) = { | |
176 | + | let aB = aE | |
177 | + | if ($isInstanceOf(aB, "(Int, Int, Int, Int, Int, Int, Int)")) | |
170 | 178 | then { | |
171 | - | let | |
172 | - | | |
179 | + | let aF = aB | |
180 | + | aF | |
173 | 181 | } | |
174 | 182 | else throw("fail to cast into Int") | |
175 | 183 | } | |
176 | 184 | ||
177 | 185 | ||
178 | - | func | |
186 | + | func aG (aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH), toString(aI), toString(aJ), toString(aK)], b) | |
179 | 187 | ||
180 | 188 | ||
181 | - | func | |
189 | + | func aL (aM,aN) = makeString(["%s%d%d%s", aM, toString(lastBlock.height), toString(lastBlock.timestamp), aN], b) | |
182 | 190 | ||
183 | 191 | ||
184 | - | func | |
192 | + | func aO (V,R,W,aH,aI,aJ,aK) = StringEntry(U(V, R, W), aG(aH, aI, aJ, aK)) | |
185 | 193 | ||
186 | 194 | ||
187 | - | func | |
195 | + | func aP (R,W,aN) = StringEntry(U("claim", R, W), aL(toString(R), aN)) | |
188 | 196 | ||
189 | 197 | ||
190 | - | func | |
191 | - | let | |
192 | - | let | |
193 | - | let | |
194 | - | let | |
195 | - | $Tuple3([IntegerEntry( | |
198 | + | func aQ (aR,aS,aT) = { | |
199 | + | let aU = aq(Y()) | |
200 | + | let aV = aq(Z()) | |
201 | + | let aW = aq(X()) | |
202 | + | let aX = (aW + aR) | |
203 | + | $Tuple3([IntegerEntry(Y(), (aU + aS)), IntegerEntry(Z(), (aV + aT)), IntegerEntry(X(), aX)], aW, aX) | |
196 | 204 | } | |
197 | 205 | ||
198 | 206 | ||
199 | - | func | |
207 | + | func aY (R,aZ,ba) = [IntegerEntry(Q(R), aZ), IntegerEntry(S(R), ba)] | |
200 | 208 | ||
201 | 209 | ||
202 | - | func | |
210 | + | func bb () = $Tuple2(fromBase58String(w(this, P())), at(O())) | |
203 | 211 | ||
204 | 212 | ||
205 | - | func | |
213 | + | func bc (R) = (ar(Q(R), 0) > 0) | |
206 | 214 | ||
207 | 215 | ||
208 | - | func | |
209 | - | then $Tuple3(false, | |
216 | + | func bd (R) = if (bc(R)) | |
217 | + | then $Tuple3(false, at(Q(R)), at(S(R))) | |
210 | 218 | else unit | |
211 | 219 | ||
212 | 220 | ||
213 | - | func | |
221 | + | func be (R) = valueOrErrorMessage(bd(R), (("User " + toString(R)) + " is not defined")) | |
214 | 222 | ||
215 | 223 | ||
216 | - | let | |
224 | + | let bf = au(ae(), "") | |
217 | 225 | ||
218 | - | let | |
226 | + | let bg = split(bf, "_") | |
219 | 227 | ||
220 | - | func | |
221 | - | let | |
222 | - | let | |
223 | - | let | |
224 | - | let | |
225 | - | let | |
226 | - | let | |
227 | - | $Tuple4(( | |
228 | + | func bh (R,bi,bj,bk,bl) = { | |
229 | + | let bm = ah(bl, bi) | |
230 | + | let bn = parseBigIntValue(au(ah(bl, bi), "0")) | |
231 | + | let bo = parseBigIntValue(au(ah(bk, bi), "0")) | |
232 | + | let bp = toInt(fraction((bn - bo), bj, h)) | |
233 | + | let bq = ak(R, bi) | |
234 | + | let br = ar(bq, 0) | |
235 | + | $Tuple4((br + bp), br, bp, bq) | |
228 | 236 | } | |
229 | 237 | ||
230 | 238 | ||
231 | - | func bo (bp,Q,bq) = { | |
232 | - | let bf = toBigInt(bq) | |
233 | - | let br = ac(Q) | |
234 | - | let bg = an(br, -1) | |
235 | - | let bh = an(ab(), -1) | |
236 | - | func bs (bt,bu) = { | |
237 | - | let bv = bd(Q, bu, bf, bg, bh) | |
238 | - | let bw = bv._1 | |
239 | - | let bx = bv._2 | |
240 | - | let by = bv._3 | |
241 | - | let bm = bv._4 | |
242 | - | (bt :+ IntegerEntry(bm, bw)) | |
243 | - | } | |
244 | - | ||
245 | - | if (if ((bh == -1)) | |
246 | - | then (bg == -1) | |
247 | - | else false) | |
248 | - | then nil | |
249 | - | else if (if ((bh == -1)) | |
250 | - | then (bg > -1) | |
251 | - | else false) | |
252 | - | then throw("invalid depositNumLast and depositNumUser state") | |
253 | - | else if (if ((bh > -1)) | |
254 | - | then (bg >= -1) | |
255 | - | else false) | |
256 | - | then if (bp) | |
257 | - | then [IntegerEntry(br, bh)] | |
258 | - | else ({ | |
259 | - | let bz = bc | |
260 | - | let bA = size(bz) | |
261 | - | let bB = nil | |
262 | - | func bC (bD,bE) = if ((bE >= bA)) | |
263 | - | then bD | |
264 | - | else bs(bD, bz[bE]) | |
265 | - | ||
266 | - | func bF (bD,bE) = if ((bE >= bA)) | |
267 | - | then bD | |
268 | - | else throw("List size exceeds 10") | |
269 | - | ||
270 | - | bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
271 | - | } :+ IntegerEntry(br, bh)) | |
272 | - | else throw(((("uncovered condition: depositNumLast=" + toString(bh)) + " depositNumUser=") + toString(bg))) | |
273 | - | } | |
239 | + | func bs (ab) = ((ab / k) * k) | |
274 | 240 | ||
275 | 241 | ||
276 | - | func bG (af,bH) = { | |
277 | - | let bI = ai(af) | |
278 | - | let bJ = an(bI, 0) | |
279 | - | [IntegerEntry(bI, (bJ + bH))] | |
280 | - | } | |
281 | - | ||
282 | - | ||
283 | - | func bK (bL) = (bL / K) | |
284 | - | ||
285 | - | ||
286 | - | func bM (bN,bO,bP,bQ) = { | |
287 | - | let bR = (bO - height) | |
288 | - | if ((0 >= bR)) | |
289 | - | then (height + bN) | |
242 | + | func bt (bu,bv,bw) = { | |
243 | + | let bx = valueOrErrorMessage(indexOf(bu, bv), ((("there is no substring " + bv) + " in ") + bu)) | |
244 | + | if ((bx == 0)) | |
245 | + | then 0 | |
290 | 246 | else { | |
291 | - | let bS = (bN - bR) | |
292 | - | let bT = if ((bQ != 0)) | |
293 | - | then fraction(bP, e, bQ) | |
294 | - | else bO | |
295 | - | ((bN + height) - fraction(bS, bT, e)) | |
247 | + | let by = take(bu, bx) | |
248 | + | (size(split(by, bw)) - 1) | |
296 | 249 | } | |
297 | 250 | } | |
298 | 251 | ||
299 | 252 | ||
300 | - | func bU (Q,bV) = { | |
301 | - | let bW = valueOrElse(aZ(Q), $Tuple3(true, 0, 0)) | |
302 | - | let bp = bW._1 | |
303 | - | let bq = bW._2 | |
304 | - | let bO = bW._3 | |
305 | - | let bX = if (bp) | |
306 | - | then bV | |
307 | - | else (bV + bq) | |
308 | - | let bN = (1440 * 14) | |
309 | - | let bY = if (bp) | |
310 | - | then (bN + height) | |
311 | - | else bM(bN, bO, bq, bX) | |
312 | - | $Tuple5(bp, bq, bO, bX, bY) | |
253 | + | let bz = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d" | |
254 | + | ||
255 | + | func bA (bB,bC,bD) = { | |
256 | + | let bE = split(bB, c) | |
257 | + | func bF (G) = if ((G != bC)) | |
258 | + | then bE[G] | |
259 | + | else toString((parseIntValue(bE[G]) + bD)) | |
260 | + | ||
261 | + | makeString([bz, bF(1), bF(2), bF(3), bF(4), bF(5), bF(6), bF(7), bF(8), bF(9), bF(10), bF(11), bF(12), bF(13), bF(14), bF(15), bF(16), bF(17), bF(18)], c) | |
313 | 262 | } | |
314 | 263 | ||
315 | 264 | ||
316 | - | func bZ (Q,ca) = { | |
317 | - | let cb = aX() | |
318 | - | let cc = cb._1 | |
319 | - | let cd = cb._2 | |
320 | - | if ((size(ca.payments) != 1)) | |
265 | + | func bG (bH,bI) = { | |
266 | + | let bJ = bs(lastBlock.timestamp) | |
267 | + | let bK = aa(bJ) | |
268 | + | let bL = ac() | |
269 | + | let bM = bt(bf, bI, "_") | |
270 | + | let bN = (bz + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0") | |
271 | + | let bO = valueOrElse(getString(this, bL), bN) | |
272 | + | let bP = bA(bO, (bM + 1), bH) | |
273 | + | [StringEntry(bL, bP), StringEntry(bK, bP)] | |
274 | + | } | |
275 | + | ||
276 | + | ||
277 | + | func bQ (bR,R,bS) = { | |
278 | + | let bj = toBigInt(bS) | |
279 | + | let bT = ag(R) | |
280 | + | let bk = ar(bT, -1) | |
281 | + | let bl = ar(af(), -1) | |
282 | + | func bU (bV,bW) = { | |
283 | + | let bX = bh(R, bW, bj, bk, bl) | |
284 | + | let bY = bX._1 | |
285 | + | let bZ = bX._2 | |
286 | + | let ca = bX._3 | |
287 | + | let bq = bX._4 | |
288 | + | (bV :+ IntegerEntry(bq, bY)) | |
289 | + | } | |
290 | + | ||
291 | + | if (if ((bl == -1)) | |
292 | + | then (bk == -1) | |
293 | + | else false) | |
294 | + | then nil | |
295 | + | else if (if ((bl == -1)) | |
296 | + | then (bk > -1) | |
297 | + | else false) | |
298 | + | then throw("invalid depositNumLast and depositNumUser state") | |
299 | + | else if (if ((bl > -1)) | |
300 | + | then (bk >= -1) | |
301 | + | else false) | |
302 | + | then if (bR) | |
303 | + | then [IntegerEntry(bT, bl)] | |
304 | + | else ({ | |
305 | + | let cb = bg | |
306 | + | let cc = size(cb) | |
307 | + | let cd = nil | |
308 | + | func ce (cf,cg) = if ((cg >= cc)) | |
309 | + | then cf | |
310 | + | else bU(cf, cb[cg]) | |
311 | + | ||
312 | + | func ch (cf,cg) = if ((cg >= cc)) | |
313 | + | then cf | |
314 | + | else throw("List size exceeds 9") | |
315 | + | ||
316 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
317 | + | } :+ IntegerEntry(bT, bl)) | |
318 | + | else throw(((("uncovered condition: depositNumLast=" + toString(bl)) + " depositNumUser=") + toString(bk))) | |
319 | + | } | |
320 | + | ||
321 | + | ||
322 | + | func ci (aj,cj) = { | |
323 | + | let ck = am(aj) | |
324 | + | let cl = ar(ck, 0) | |
325 | + | [IntegerEntry(ck, (cl + cj))] | |
326 | + | } | |
327 | + | ||
328 | + | ||
329 | + | func cm (cn) = (cn / L) | |
330 | + | ||
331 | + | ||
332 | + | func co (cp,cq,cr,cs) = { | |
333 | + | let ct = (cq - height) | |
334 | + | if ((0 >= ct)) | |
335 | + | then (height + cp) | |
336 | + | else { | |
337 | + | let cu = (cp - ct) | |
338 | + | let cv = if ((cs != 0)) | |
339 | + | then fraction(cr, e, cs) | |
340 | + | else cq | |
341 | + | ((cp + height) - fraction(cu, cv, e)) | |
342 | + | } | |
343 | + | } | |
344 | + | ||
345 | + | ||
346 | + | func cw (R,cx) = { | |
347 | + | let cy = valueOrElse(bd(R), $Tuple3(true, 0, 0)) | |
348 | + | let bR = cy._1 | |
349 | + | let bS = cy._2 | |
350 | + | let cq = cy._3 | |
351 | + | let cz = if (bR) | |
352 | + | then cx | |
353 | + | else (cx + bS) | |
354 | + | let cp = (1440 * 14) | |
355 | + | let cA = if (bR) | |
356 | + | then (cp + height) | |
357 | + | else co(cp, cq, bS, cz) | |
358 | + | $Tuple5(bR, bS, cq, cz, cA) | |
359 | + | } | |
360 | + | ||
361 | + | ||
362 | + | func cB (R,cC) = { | |
363 | + | let cD = bb() | |
364 | + | let cE = cD._1 | |
365 | + | let cF = cD._2 | |
366 | + | if ((size(cC.payments) != 1)) | |
321 | 367 | then throw("Invalid payments size") | |
322 | 368 | else { | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | if (( | |
328 | - | then throw( | |
369 | + | let cG = cC.payments[0] | |
370 | + | let aZ = cG.amount | |
371 | + | let cH = (("Invalid asset. " + toBase58String(cE)) + " is expected") | |
372 | + | let bi = valueOrErrorMessage(cG.assetId, cH) | |
373 | + | if ((bi != cE)) | |
374 | + | then throw(cH) | |
329 | 375 | else { | |
330 | - | let | |
331 | - | let | |
332 | - | let | |
333 | - | let | |
334 | - | let | |
335 | - | let | |
336 | - | let | |
337 | - | if (( | |
338 | - | then throw(("Min lock amount is " + toString( | |
376 | + | let cI = toString(R) | |
377 | + | let cJ = cw(R, aZ) | |
378 | + | let bR = cJ._1 | |
379 | + | let bS = cJ._2 | |
380 | + | let cq = cJ._3 | |
381 | + | let cz = cJ._4 | |
382 | + | let cA = cJ._5 | |
383 | + | if ((cF > cz)) | |
384 | + | then throw(("Min lock amount is " + toString(cF))) | |
339 | 385 | else { | |
340 | - | let | |
386 | + | let cK = aQ(aZ, 1, if (bR) | |
341 | 387 | then 1 | |
342 | 388 | else 0) | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | ((([ | |
389 | + | let cL = cK._1 | |
390 | + | let cM = cK._2 | |
391 | + | let cN = cK._3 | |
392 | + | ((([aO("stake", R, cC.transactionId, bS, cq, cz, cA)] ++ bQ(bR, cI, bS)) ++ aY(R, cz, cA)) ++ cL) | |
347 | 393 | } | |
348 | 394 | } | |
349 | 395 | } | |
350 | 396 | } | |
351 | 397 | ||
352 | 398 | ||
353 | - | func | |
354 | - | let | |
355 | - | if ((size( | |
399 | + | func cO (R,cC) = { | |
400 | + | let cI = toString(R) | |
401 | + | if ((size(cC.payments) > 0)) | |
356 | 402 | then throw("payments are not accepted") | |
357 | 403 | else { | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | func | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | if ((0 >= | |
379 | - | then $Tuple2( | |
380 | - | else $Tuple2(((( | |
404 | + | let cP = valueOrElse(bd(R), $Tuple3(true, 0, 0)) | |
405 | + | let bR = cP._1 | |
406 | + | let bS = cP._2 | |
407 | + | let cQ = cP._3 | |
408 | + | let bj = toBigInt(bS) | |
409 | + | let bT = ag(cI) | |
410 | + | let bk = ar(bT, -1) | |
411 | + | let bl = ar(af(), -1) | |
412 | + | func cR (bV,bW) = { | |
413 | + | let cS = bh(cI, bW, bj, bk, bl) | |
414 | + | let bY = cS._1 | |
415 | + | let bZ = cS._2 | |
416 | + | let ca = cS._3 | |
417 | + | let bq = cS._4 | |
418 | + | let cT = al(cI, bW) | |
419 | + | let cU = bV | |
420 | + | let cV = cU._1 | |
421 | + | let cW = cU._2 | |
422 | + | let cX = makeString([bW, toString(bY)], ":") | |
423 | + | let cY = makeString([cW, cX], "_") | |
424 | + | if ((0 >= bY)) | |
425 | + | then $Tuple2(cV, cY) | |
426 | + | else $Tuple2((((cV :+ ScriptTransfer(R, bY, ax(bW))) :+ IntegerEntry(cT, (valueOrElse(getInteger(cT), 0) + bY))) :+ IntegerEntry(bq, 0)), cY) | |
381 | 427 | } | |
382 | 428 | ||
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | func | |
388 | - | then | |
389 | - | else | |
429 | + | let cZ = { | |
430 | + | let cb = bg | |
431 | + | let cc = size(cb) | |
432 | + | let cd = $Tuple2(nil, "") | |
433 | + | func ce (cf,cg) = if ((cg >= cc)) | |
434 | + | then cf | |
435 | + | else cR(cf, cb[cg]) | |
390 | 436 | ||
391 | - | func | |
392 | - | then | |
393 | - | else throw("List size exceeds | |
437 | + | func ch (cf,cg) = if ((cg >= cc)) | |
438 | + | then cf | |
439 | + | else throw("List size exceeds 9") | |
394 | 440 | ||
395 | - | | |
441 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
396 | 442 | } | |
397 | - | let | |
398 | - | let | |
399 | - | if ((0 >= size( | |
400 | - | then nil | |
401 | - | else (( | |
443 | + | let da = cZ._1 | |
444 | + | let db = cZ._2 | |
445 | + | if ((0 >= size(da))) | |
446 | + | then $Tuple2(nil, 0) | |
447 | + | else $Tuple2(((da :+ IntegerEntry(bT, bl)) :+ aP(R, cC.transactionId, drop(db, 1))), size(da)) | |
402 | 448 | } | |
403 | 449 | } | |
404 | 450 | ||
405 | 451 | ||
406 | - | @Callable( | |
407 | - | func constructor ( | |
452 | + | @Callable(cC) | |
453 | + | func constructor (cF,dc,cE) = if ((cC.caller != this)) | |
408 | 454 | then throw("Permission denied") | |
409 | - | else [IntegerEntry( | |
455 | + | else [IntegerEntry(O(), cF), StringEntry(ae(), dc), StringEntry(P(), cE)] | |
410 | 456 | ||
411 | 457 | ||
412 | 458 | ||
413 | - | @Callable( | |
414 | - | func stake () = | |
459 | + | @Callable(cC) | |
460 | + | func stake () = cB(cC.caller, cC) | |
415 | 461 | ||
416 | 462 | ||
417 | 463 | ||
418 | - | @Callable( | |
419 | - | func stakeByOriginCaller () = | |
464 | + | @Callable(cC) | |
465 | + | func stakeByOriginCaller () = cB(cC.originCaller, cC) | |
420 | 466 | ||
421 | 467 | ||
422 | 468 | ||
423 | - | @Callable( | |
424 | - | func unstake ( | |
469 | + | @Callable(cC) | |
470 | + | func unstake (aZ) = if ((size(cC.payments) != 0)) | |
425 | 471 | then throw("unstake doesn't require any payment") | |
426 | 472 | else { | |
427 | - | let | |
428 | - | let | |
429 | - | let | |
430 | - | let | |
431 | - | let | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | let | |
439 | - | if (( | |
440 | - | then throw((("You have already made a swap operation. Wait " + toString((height + | |
441 | - | else if ((0 >= | |
473 | + | let R = cC.caller | |
474 | + | let cI = toString(R) | |
475 | + | let dd = bb() | |
476 | + | let cE = dd._1 | |
477 | + | let cF = dd._2 | |
478 | + | let de = be(R) | |
479 | + | let bR = de._1 | |
480 | + | let bS = de._2 | |
481 | + | let cq = de._3 | |
482 | + | let df = aD(reentrantInvoke(J, "swapParamsByUserSYSREADONLY", [cI, 0], nil)) | |
483 | + | let dg = df._2 | |
484 | + | let dh = df._3 | |
485 | + | if ((dg > 0)) | |
486 | + | then throw((("You have already made a swap operation. Wait " + toString((height + dh))) + " height to unstake")) | |
487 | + | else if ((0 >= bS)) | |
442 | 488 | then throw("Nothing to unstake") | |
443 | - | else if (( | |
444 | - | then throw(((("Requested " + toString( | |
489 | + | else if ((aZ > bS)) | |
490 | + | then throw(((("Requested " + toString(aZ)) + ", but staked only ") + toString(bS))) | |
445 | 491 | else { | |
446 | - | let | |
447 | - | let | |
492 | + | let cz = (bS - aZ) | |
493 | + | let di = aQ(-(aZ), if ((aZ == bS)) | |
448 | 494 | then -1 | |
449 | - | else 0, if (( | |
495 | + | else 0, if ((aZ == bS)) | |
450 | 496 | then -1 | |
451 | 497 | else 0) | |
452 | - | let | |
453 | - | let | |
454 | - | let | |
455 | - | ((([ScriptTransfer( | |
498 | + | let cL = di._1 | |
499 | + | let cM = di._2 | |
500 | + | let cN = di._3 | |
501 | + | ((([ScriptTransfer(R, aZ, cE), aO("unstake", R, cC.transactionId, bS, cq, cz, cq)] ++ bQ(false, cI, bS)) ++ aY(R, cz, cq)) ++ cL) | |
456 | 502 | } | |
457 | 503 | } | |
458 | 504 | ||
459 | 505 | ||
460 | 506 | ||
461 | - | @Callable( | |
462 | - | func deposit () = if ((size( | |
507 | + | @Callable(cC) | |
508 | + | func deposit () = if ((size(cC.payments) != 1)) | |
463 | 509 | then throw("exact 1 payment is allowed only") | |
464 | 510 | else { | |
465 | - | let | |
466 | - | let | |
467 | - | let | |
468 | - | let | |
469 | - | let | |
511 | + | let dj = cC.payments[0] | |
512 | + | let aZ = dj.amount | |
513 | + | let dk = valueOrElse(dj.assetId, j) | |
514 | + | let dl = toBase58String(dk) | |
515 | + | let dm = if ((dk == j)) | |
470 | 516 | then g | |
471 | 517 | else f | |
472 | - | let | |
473 | - | let | |
474 | - | let | |
475 | - | if ((0 > | |
518 | + | let dn = toBigInt(aZ) | |
519 | + | let cM = ar(X(), 0) | |
520 | + | let do = toBigInt(cM) | |
521 | + | if ((0 > cM)) | |
476 | 522 | then throw("TODO: case is not supported") | |
477 | - | else if (( | |
478 | - | then | |
523 | + | else if ((cM == 0)) | |
524 | + | then ci(dl, aZ) | |
479 | 525 | else { | |
480 | - | let | |
481 | - | let | |
482 | - | let | |
483 | - | let | |
484 | - | if (!(contains( | |
485 | - | then throw((( | |
526 | + | let dp = fraction(dn, h, do) | |
527 | + | let dq = af() | |
528 | + | let bl = ar(dq, -1) | |
529 | + | let dr = (bl + 1) | |
530 | + | if (!(contains(bf, dl))) | |
531 | + | then throw(((bf + " doesn't contain ") + dl)) | |
486 | 532 | else { | |
487 | - | func | |
488 | - | let | |
489 | - | let | |
490 | - | ( | |
491 | - | then StringEntry( | |
492 | - | else StringEntry( | |
533 | + | func ds (bV,dt) = { | |
534 | + | let du = ah(dr, dt) | |
535 | + | let dv = au(ah(bl, dt), "0") | |
536 | + | (bV :+ (if ((dt == dl)) | |
537 | + | then StringEntry(du, toString((parseBigIntValue(dv) + dp))) | |
538 | + | else StringEntry(du, dv))) | |
493 | 539 | } | |
494 | 540 | ||
495 | - | ({ | |
496 | - | let | |
497 | - | let | |
498 | - | let | |
499 | - | func | |
500 | - | then | |
501 | - | else | |
541 | + | (({ | |
542 | + | let cb = bg | |
543 | + | let cc = size(cb) | |
544 | + | let cd = nil | |
545 | + | func ce (cf,cg) = if ((cg >= cc)) | |
546 | + | then cf | |
547 | + | else ds(cf, cb[cg]) | |
502 | 548 | ||
503 | - | func | |
504 | - | then | |
505 | - | else throw("List size exceeds | |
549 | + | func ch (cf,cg) = if ((cg >= cc)) | |
550 | + | then cf | |
551 | + | else throw("List size exceeds 9") | |
506 | 552 | ||
507 | - | | |
508 | - | } :+ IntegerEntry( | |
553 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
554 | + | } :+ IntegerEntry(dq, dr)) ++ bG(aZ, dl)) | |
509 | 555 | } | |
510 | 556 | } | |
511 | 557 | } | |
512 | 558 | ||
513 | 559 | ||
514 | 560 | ||
515 | - | @Callable( | |
516 | - | func claimRewards () = | |
561 | + | @Callable(cC) | |
562 | + | func claimRewards () = cO(cC.caller, cC) | |
517 | 563 | ||
518 | 564 | ||
519 | 565 | ||
520 | - | @Callable( | |
521 | - | func claimRewardsByOriginCaller () = | |
566 | + | @Callable(cC) | |
567 | + | func claimRewardsByOriginCaller () = cO(cC.originCaller, cC) | |
522 | 568 | ||
523 | 569 | ||
524 | 570 | ||
525 | - | @Callable( | |
526 | - | func unclaimedRewardsREADONLY ( | |
527 | - | func | |
571 | + | @Callable(cC) | |
572 | + | func unclaimedRewardsREADONLY (cI) = { | |
573 | + | func dw (bV,bW) = ((bV + makeString([bW, "0", "0"], ":")) + "_") | |
528 | 574 | ||
529 | - | let | |
575 | + | let dx = if ((cI == "")) | |
530 | 576 | then { | |
531 | - | let | |
532 | - | let | |
533 | - | let | |
534 | - | func | |
535 | - | then | |
536 | - | else | |
577 | + | let cb = bg | |
578 | + | let cc = size(cb) | |
579 | + | let cd = "" | |
580 | + | func ce (cf,cg) = if ((cg >= cc)) | |
581 | + | then cf | |
582 | + | else dw(cf, cb[cg]) | |
537 | 583 | ||
538 | - | func | |
539 | - | then | |
540 | - | else throw("List size exceeds | |
584 | + | func ch (cf,cg) = if ((cg >= cc)) | |
585 | + | then cf | |
586 | + | else throw("List size exceeds 9") | |
541 | 587 | ||
542 | - | | |
588 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
543 | 589 | } | |
544 | 590 | else { | |
545 | - | let | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | let | |
550 | - | let | |
551 | - | let | |
552 | - | let | |
553 | - | let | |
554 | - | func | |
555 | - | let | |
556 | - | let | |
557 | - | let | |
558 | - | let | |
559 | - | let | |
560 | - | let | |
561 | - | (( | |
591 | + | let R = addressFromStringValue(cI) | |
592 | + | let dy = valueOrElse(bd(R), $Tuple3(true, 0, 0)) | |
593 | + | let bR = dy._1 | |
594 | + | let bS = dy._2 | |
595 | + | let cQ = dy._3 | |
596 | + | let bj = toBigInt(bS) | |
597 | + | let bT = ag(cI) | |
598 | + | let bk = ar(bT, -1) | |
599 | + | let bl = ar(af(), -1) | |
600 | + | func cR (bV,bW) = { | |
601 | + | let dz = bh(cI, bW, bj, bk, bl) | |
602 | + | let bY = dz._1 | |
603 | + | let bZ = dz._2 | |
604 | + | let ca = dz._3 | |
605 | + | let bq = dz._4 | |
606 | + | let dA = valueOrElse(getInteger(al(cI, bW)), 0) | |
607 | + | ((bV + makeString([bW, toString(bY), toString(dA)], ":")) + "_") | |
562 | 608 | } | |
563 | 609 | ||
564 | - | let | |
565 | - | let | |
566 | - | let | |
567 | - | func | |
568 | - | then | |
569 | - | else | |
610 | + | let cb = bg | |
611 | + | let cc = size(cb) | |
612 | + | let cd = "" | |
613 | + | func ce (cf,cg) = if ((cg >= cc)) | |
614 | + | then cf | |
615 | + | else cR(cf, cb[cg]) | |
570 | 616 | ||
571 | - | func | |
572 | - | then | |
573 | - | else throw("List size exceeds | |
617 | + | func ch (cf,cg) = if ((cg >= cc)) | |
618 | + | then cf | |
619 | + | else throw("List size exceeds 9") | |
574 | 620 | ||
575 | - | | |
621 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
576 | 622 | } | |
577 | - | $Tuple2(nil, dropRight( | |
623 | + | $Tuple2(nil, dropRight(dx, 1)) | |
578 | 624 | } | |
579 | 625 | ||
580 | 626 | ||
581 | 627 | ||
582 | - | @Callable( | |
583 | - | func surfStakingSYSREADONLY ( | |
584 | - | let | |
585 | - | let | |
586 | - | if (( | |
587 | - | then $Tuple2(nil, [0, | |
628 | + | @Callable(cC) | |
629 | + | func surfStakingSYSREADONLY (dB,dC) = { | |
630 | + | let dD = ar(X(), 0) | |
631 | + | let dE = cm(dD) | |
632 | + | if ((dB == "")) | |
633 | + | then $Tuple2(nil, [0, dD, 0, dE, 0, height, height]) | |
588 | 634 | else { | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
593 | - | let | |
594 | - | let | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | $Tuple2(nil, [ | |
635 | + | let R = av(dB) | |
636 | + | let cJ = cw(R, dC) | |
637 | + | let bR = cJ._1 | |
638 | + | let bS = cJ._2 | |
639 | + | let cq = cJ._3 | |
640 | + | let cz = cJ._4 | |
641 | + | let cA = cJ._5 | |
642 | + | let dF = bS | |
643 | + | let dG = cm(dF) | |
644 | + | $Tuple2(nil, [dF, dD, dG, dE, cq, cA]) | |
599 | 645 | } | |
600 | 646 | } | |
601 | 647 | ||
602 | 648 | ||
603 | 649 | ||
604 | - | @Callable( | |
605 | - | func gnsbtFromSurfSYSREADONLY ( | |
650 | + | @Callable(cC) | |
651 | + | func gnsbtFromSurfSYSREADONLY (cn) = $Tuple2(nil, cm(cn)) | |
606 | 652 | ||
607 | 653 | ||
608 | 654 | ||
609 | - | @Callable( | |
655 | + | @Callable(cC) | |
610 | 656 | func configSYSREADONLY () = { | |
611 | - | let | |
612 | - | let | |
613 | - | let | |
614 | - | $Tuple2(nil, [ | |
657 | + | let dH = getIntegerValue(O()) | |
658 | + | let dI = (1440 * 14) | |
659 | + | let dJ = 1150000 | |
660 | + | $Tuple2(nil, [dH, (L * d), dI, dJ]) | |
615 | 661 | } | |
616 | 662 | ||
617 | 663 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 6 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | - | let a = " | |
4 | + | let a = "6a94b841b387e5d4bd8be8f8ed5f80057ef86186" | |
5 | 5 | ||
6 | 6 | let b = "__" | |
7 | 7 | ||
8 | 8 | let c = "__" | |
9 | 9 | ||
10 | 10 | let d = 1000000 | |
11 | 11 | ||
12 | 12 | let e = 100000000 | |
13 | 13 | ||
14 | 14 | let f = toBigInt(d) | |
15 | 15 | ||
16 | 16 | let g = toBigInt(e) | |
17 | 17 | ||
18 | 18 | let h = toBigInt(1000000000000000000) | |
19 | 19 | ||
20 | 20 | let i = "WAVES" | |
21 | 21 | ||
22 | 22 | let j = fromBase58String(i) | |
23 | 23 | ||
24 | - | let k = | |
24 | + | let k = 86400000 | |
25 | 25 | ||
26 | - | let l = | |
26 | + | let l = 1 | |
27 | 27 | ||
28 | - | let m = | |
28 | + | let m = 2 | |
29 | 29 | ||
30 | - | let n = | |
30 | + | let n = 3 | |
31 | 31 | ||
32 | - | let o = | |
32 | + | let o = 4 | |
33 | 33 | ||
34 | - | let p = | |
34 | + | let p = 5 | |
35 | 35 | ||
36 | - | let q = | |
36 | + | let q = 6 | |
37 | 37 | ||
38 | - | let r = | |
38 | + | let r = 7 | |
39 | 39 | ||
40 | - | let s = | |
40 | + | let s = 8 | |
41 | 41 | ||
42 | - | let t = | |
42 | + | let t = 9 | |
43 | 43 | ||
44 | - | let u = | |
44 | + | let u = 10 | |
45 | 45 | ||
46 | - | func v (w,x) = valueOrErrorMessage(getString(w, x), (((("mandatory " + toString(w)) + ".") + x) + " is not defined")) | |
46 | + | let v = 11 | |
47 | + | ||
48 | + | func w (x,y) = valueOrErrorMessage(getString(x, y), (((("mandatory " + toString(x)) + ".") + y) + " is not defined")) | |
47 | 49 | ||
48 | 50 | ||
49 | - | func | |
51 | + | func z () = "%s%s__config__controlAddress" | |
50 | 52 | ||
51 | 53 | ||
52 | - | func | |
54 | + | func A () = "%s__controlConfig" | |
53 | 55 | ||
54 | 56 | ||
55 | - | func | |
57 | + | func B () = "%s%s__cfg__gnsbtFromSurfCoeff" | |
56 | 58 | ||
57 | 59 | ||
58 | - | func | |
60 | + | func C (D) = split(w(D, A()), c) | |
59 | 61 | ||
60 | 62 | ||
61 | - | func | |
63 | + | func E (F,G) = valueOrErrorMessage(addressFromString(F[G]), ("Control cfg doesn't contain address at index " + toString(G))) | |
62 | 64 | ||
63 | 65 | ||
64 | - | let | |
66 | + | let H = addressFromStringValue(valueOrElse(getString(this, z()), "3P5Bfd58PPfNvBM2Hy8QfbcDqMeNtzg7KfP")) | |
65 | 67 | ||
66 | - | let | |
68 | + | let F = C(H) | |
67 | 69 | ||
68 | - | let | |
70 | + | let I = E(F, o) | |
69 | 71 | ||
70 | - | let | |
72 | + | let J = E(F, l) | |
71 | 73 | ||
72 | - | let | |
74 | + | let K = E(F, m) | |
73 | 75 | ||
74 | - | let | |
76 | + | let L = valueOrElse(getInteger(this, B()), 300) | |
75 | 77 | ||
76 | - | func | |
78 | + | func M () = "bond_asset_id" | |
77 | 79 | ||
78 | 80 | ||
79 | - | func | |
81 | + | func N () = "auction_contract" | |
80 | 82 | ||
81 | 83 | ||
82 | - | func | |
84 | + | func O () = "%s__minLockAmount" | |
83 | 85 | ||
84 | 86 | ||
85 | - | func | |
87 | + | func P () = "%s__stakedAssetId" | |
86 | 88 | ||
87 | 89 | ||
88 | - | func | |
90 | + | func Q (R) = makeString(["%s%s%s", "paramByUser", toString(R), "amount"], b) | |
89 | 91 | ||
90 | 92 | ||
91 | - | func | |
93 | + | func S (R) = makeString(["%s%s%s", "paramByUser", toString(R), "start"], b) | |
92 | 94 | ||
93 | 95 | ||
94 | - | func | |
96 | + | func T (R) = makeString(["%s%s%s", "paramByUser", toString(R), "vpEffectiveHeight"], b) | |
95 | 97 | ||
96 | 98 | ||
97 | - | func | |
99 | + | func U (V,R,W) = makeString(["%s%s%s%s", "history", V, toString(R), toBase58String(W)], b) | |
98 | 100 | ||
99 | 101 | ||
100 | - | func | |
102 | + | func X () = makeString(["%s%s", "stats", "activeTotalLocked"], b) | |
101 | 103 | ||
102 | 104 | ||
103 | - | func | |
105 | + | func Y () = makeString(["%s%s", "stats", "locksCount"], b) | |
104 | 106 | ||
105 | 107 | ||
106 | - | func | |
108 | + | func Z () = makeString(["%s%s", "stats", "activeUsersCount"], b) | |
107 | 109 | ||
108 | 110 | ||
109 | - | func | |
111 | + | func aa (ab) = makeString(["%s%s%d", "stats", "depositAmtByDay", toString(ab)], b) | |
110 | 112 | ||
111 | 113 | ||
112 | - | func | |
114 | + | func ac () = makeString(["%s%s%d", "stats", "depositAmtTotals"], b) | |
113 | 115 | ||
114 | 116 | ||
115 | - | func | |
117 | + | func ad () = "%s__nextPeriod" | |
116 | 118 | ||
117 | 119 | ||
118 | - | func | |
120 | + | func ae () = "supportedRewardAssets" | |
119 | 121 | ||
120 | 122 | ||
121 | - | func | |
123 | + | func af () = makeString(["%s%s%s", "dep", "lastNum"], b) | |
122 | 124 | ||
123 | 125 | ||
124 | - | func ag ( | |
126 | + | func ag (R) = makeString(["%s%s%s", "userRwdFromDepNum", R], b) | |
125 | 127 | ||
126 | 128 | ||
127 | - | func ah ( | |
129 | + | func ah (ai,aj) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(ai), aj], b) | |
128 | 130 | ||
129 | 131 | ||
130 | - | func | |
132 | + | func ak (R,aj) = makeString(["%s%s%s", "rwd", R, aj], b) | |
131 | 133 | ||
132 | 134 | ||
133 | - | func | |
135 | + | func al (R,aj) = makeString(["%s%s%s", "clm", R, aj], b) | |
134 | 136 | ||
135 | 137 | ||
136 | - | func am ( | |
138 | + | func am (aj) = makeString(["%s%s", "notDistributed", aj], b) | |
137 | 139 | ||
138 | 140 | ||
139 | - | func an ( | |
141 | + | func an (ao,ap) = fraction(toBigInt(ao), h, ap) | |
140 | 142 | ||
141 | 143 | ||
142 | - | func | |
144 | + | func aq (y) = valueOrElse(getInteger(this, y), 0) | |
143 | 145 | ||
144 | 146 | ||
145 | - | func | |
147 | + | func ar (y,as) = valueOrElse(getInteger(this, y), as) | |
146 | 148 | ||
147 | 149 | ||
148 | - | func | |
150 | + | func at (y) = valueOrErrorMessage(getInteger(this, y), (("Mandatory this." + y) + " is not defined")) | |
149 | 151 | ||
150 | 152 | ||
151 | - | func at (au) = if ((au == i)) | |
152 | - | then unit | |
153 | - | else fromBase58String(au) | |
153 | + | func au (y,as) = valueOrElse(getString(this, y), as) | |
154 | 154 | ||
155 | 155 | ||
156 | - | func av (aw) = { | |
157 | - | let ax = aw | |
158 | - | if ($isInstanceOf(ax, "Int")) | |
156 | + | func av (aw) = valueOrErrorMessage(addressFromString(aw), ("couldn't parse passed addressStr=" + aw)) | |
157 | + | ||
158 | + | ||
159 | + | func ax (ay) = if ((ay == i)) | |
160 | + | then unit | |
161 | + | else fromBase58String(ay) | |
162 | + | ||
163 | + | ||
164 | + | func az (aA) = { | |
165 | + | let aB = aA | |
166 | + | if ($isInstanceOf(aB, "Int")) | |
159 | 167 | then { | |
160 | - | let | |
161 | - | | |
168 | + | let aC = aB | |
169 | + | aC | |
162 | 170 | } | |
163 | 171 | else throw("fail to cast into Int") | |
164 | 172 | } | |
165 | 173 | ||
166 | 174 | ||
167 | - | func | |
168 | - | let | |
169 | - | if ($isInstanceOf( | |
175 | + | func aD (aE) = { | |
176 | + | let aB = aE | |
177 | + | if ($isInstanceOf(aB, "(Int, Int, Int, Int, Int, Int, Int)")) | |
170 | 178 | then { | |
171 | - | let | |
172 | - | | |
179 | + | let aF = aB | |
180 | + | aF | |
173 | 181 | } | |
174 | 182 | else throw("fail to cast into Int") | |
175 | 183 | } | |
176 | 184 | ||
177 | 185 | ||
178 | - | func | |
186 | + | func aG (aH,aI,aJ,aK) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(aH), toString(aI), toString(aJ), toString(aK)], b) | |
179 | 187 | ||
180 | 188 | ||
181 | - | func | |
189 | + | func aL (aM,aN) = makeString(["%s%d%d%s", aM, toString(lastBlock.height), toString(lastBlock.timestamp), aN], b) | |
182 | 190 | ||
183 | 191 | ||
184 | - | func | |
192 | + | func aO (V,R,W,aH,aI,aJ,aK) = StringEntry(U(V, R, W), aG(aH, aI, aJ, aK)) | |
185 | 193 | ||
186 | 194 | ||
187 | - | func | |
195 | + | func aP (R,W,aN) = StringEntry(U("claim", R, W), aL(toString(R), aN)) | |
188 | 196 | ||
189 | 197 | ||
190 | - | func | |
191 | - | let | |
192 | - | let | |
193 | - | let | |
194 | - | let | |
195 | - | $Tuple3([IntegerEntry( | |
198 | + | func aQ (aR,aS,aT) = { | |
199 | + | let aU = aq(Y()) | |
200 | + | let aV = aq(Z()) | |
201 | + | let aW = aq(X()) | |
202 | + | let aX = (aW + aR) | |
203 | + | $Tuple3([IntegerEntry(Y(), (aU + aS)), IntegerEntry(Z(), (aV + aT)), IntegerEntry(X(), aX)], aW, aX) | |
196 | 204 | } | |
197 | 205 | ||
198 | 206 | ||
199 | - | func | |
207 | + | func aY (R,aZ,ba) = [IntegerEntry(Q(R), aZ), IntegerEntry(S(R), ba)] | |
200 | 208 | ||
201 | 209 | ||
202 | - | func | |
210 | + | func bb () = $Tuple2(fromBase58String(w(this, P())), at(O())) | |
203 | 211 | ||
204 | 212 | ||
205 | - | func | |
213 | + | func bc (R) = (ar(Q(R), 0) > 0) | |
206 | 214 | ||
207 | 215 | ||
208 | - | func | |
209 | - | then $Tuple3(false, | |
216 | + | func bd (R) = if (bc(R)) | |
217 | + | then $Tuple3(false, at(Q(R)), at(S(R))) | |
210 | 218 | else unit | |
211 | 219 | ||
212 | 220 | ||
213 | - | func | |
221 | + | func be (R) = valueOrErrorMessage(bd(R), (("User " + toString(R)) + " is not defined")) | |
214 | 222 | ||
215 | 223 | ||
216 | - | let | |
224 | + | let bf = au(ae(), "") | |
217 | 225 | ||
218 | - | let | |
226 | + | let bg = split(bf, "_") | |
219 | 227 | ||
220 | - | func | |
221 | - | let | |
222 | - | let | |
223 | - | let | |
224 | - | let | |
225 | - | let | |
226 | - | let | |
227 | - | $Tuple4(( | |
228 | + | func bh (R,bi,bj,bk,bl) = { | |
229 | + | let bm = ah(bl, bi) | |
230 | + | let bn = parseBigIntValue(au(ah(bl, bi), "0")) | |
231 | + | let bo = parseBigIntValue(au(ah(bk, bi), "0")) | |
232 | + | let bp = toInt(fraction((bn - bo), bj, h)) | |
233 | + | let bq = ak(R, bi) | |
234 | + | let br = ar(bq, 0) | |
235 | + | $Tuple4((br + bp), br, bp, bq) | |
228 | 236 | } | |
229 | 237 | ||
230 | 238 | ||
231 | - | func bo (bp,Q,bq) = { | |
232 | - | let bf = toBigInt(bq) | |
233 | - | let br = ac(Q) | |
234 | - | let bg = an(br, -1) | |
235 | - | let bh = an(ab(), -1) | |
236 | - | func bs (bt,bu) = { | |
237 | - | let bv = bd(Q, bu, bf, bg, bh) | |
238 | - | let bw = bv._1 | |
239 | - | let bx = bv._2 | |
240 | - | let by = bv._3 | |
241 | - | let bm = bv._4 | |
242 | - | (bt :+ IntegerEntry(bm, bw)) | |
243 | - | } | |
244 | - | ||
245 | - | if (if ((bh == -1)) | |
246 | - | then (bg == -1) | |
247 | - | else false) | |
248 | - | then nil | |
249 | - | else if (if ((bh == -1)) | |
250 | - | then (bg > -1) | |
251 | - | else false) | |
252 | - | then throw("invalid depositNumLast and depositNumUser state") | |
253 | - | else if (if ((bh > -1)) | |
254 | - | then (bg >= -1) | |
255 | - | else false) | |
256 | - | then if (bp) | |
257 | - | then [IntegerEntry(br, bh)] | |
258 | - | else ({ | |
259 | - | let bz = bc | |
260 | - | let bA = size(bz) | |
261 | - | let bB = nil | |
262 | - | func bC (bD,bE) = if ((bE >= bA)) | |
263 | - | then bD | |
264 | - | else bs(bD, bz[bE]) | |
265 | - | ||
266 | - | func bF (bD,bE) = if ((bE >= bA)) | |
267 | - | then bD | |
268 | - | else throw("List size exceeds 10") | |
269 | - | ||
270 | - | bF(bC(bC(bC(bC(bC(bC(bC(bC(bC(bC(bB, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
271 | - | } :+ IntegerEntry(br, bh)) | |
272 | - | else throw(((("uncovered condition: depositNumLast=" + toString(bh)) + " depositNumUser=") + toString(bg))) | |
273 | - | } | |
239 | + | func bs (ab) = ((ab / k) * k) | |
274 | 240 | ||
275 | 241 | ||
276 | - | func bG (af,bH) = { | |
277 | - | let bI = ai(af) | |
278 | - | let bJ = an(bI, 0) | |
279 | - | [IntegerEntry(bI, (bJ + bH))] | |
280 | - | } | |
281 | - | ||
282 | - | ||
283 | - | func bK (bL) = (bL / K) | |
284 | - | ||
285 | - | ||
286 | - | func bM (bN,bO,bP,bQ) = { | |
287 | - | let bR = (bO - height) | |
288 | - | if ((0 >= bR)) | |
289 | - | then (height + bN) | |
242 | + | func bt (bu,bv,bw) = { | |
243 | + | let bx = valueOrErrorMessage(indexOf(bu, bv), ((("there is no substring " + bv) + " in ") + bu)) | |
244 | + | if ((bx == 0)) | |
245 | + | then 0 | |
290 | 246 | else { | |
291 | - | let bS = (bN - bR) | |
292 | - | let bT = if ((bQ != 0)) | |
293 | - | then fraction(bP, e, bQ) | |
294 | - | else bO | |
295 | - | ((bN + height) - fraction(bS, bT, e)) | |
247 | + | let by = take(bu, bx) | |
248 | + | (size(split(by, bw)) - 1) | |
296 | 249 | } | |
297 | 250 | } | |
298 | 251 | ||
299 | 252 | ||
300 | - | func bU (Q,bV) = { | |
301 | - | let bW = valueOrElse(aZ(Q), $Tuple3(true, 0, 0)) | |
302 | - | let bp = bW._1 | |
303 | - | let bq = bW._2 | |
304 | - | let bO = bW._3 | |
305 | - | let bX = if (bp) | |
306 | - | then bV | |
307 | - | else (bV + bq) | |
308 | - | let bN = (1440 * 14) | |
309 | - | let bY = if (bp) | |
310 | - | then (bN + height) | |
311 | - | else bM(bN, bO, bq, bX) | |
312 | - | $Tuple5(bp, bq, bO, bX, bY) | |
253 | + | let bz = "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d" | |
254 | + | ||
255 | + | func bA (bB,bC,bD) = { | |
256 | + | let bE = split(bB, c) | |
257 | + | func bF (G) = if ((G != bC)) | |
258 | + | then bE[G] | |
259 | + | else toString((parseIntValue(bE[G]) + bD)) | |
260 | + | ||
261 | + | makeString([bz, bF(1), bF(2), bF(3), bF(4), bF(5), bF(6), bF(7), bF(8), bF(9), bF(10), bF(11), bF(12), bF(13), bF(14), bF(15), bF(16), bF(17), bF(18)], c) | |
313 | 262 | } | |
314 | 263 | ||
315 | 264 | ||
316 | - | func bZ (Q,ca) = { | |
317 | - | let cb = aX() | |
318 | - | let cc = cb._1 | |
319 | - | let cd = cb._2 | |
320 | - | if ((size(ca.payments) != 1)) | |
265 | + | func bG (bH,bI) = { | |
266 | + | let bJ = bs(lastBlock.timestamp) | |
267 | + | let bK = aa(bJ) | |
268 | + | let bL = ac() | |
269 | + | let bM = bt(bf, bI, "_") | |
270 | + | let bN = (bz + "__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0__0") | |
271 | + | let bO = valueOrElse(getString(this, bL), bN) | |
272 | + | let bP = bA(bO, (bM + 1), bH) | |
273 | + | [StringEntry(bL, bP), StringEntry(bK, bP)] | |
274 | + | } | |
275 | + | ||
276 | + | ||
277 | + | func bQ (bR,R,bS) = { | |
278 | + | let bj = toBigInt(bS) | |
279 | + | let bT = ag(R) | |
280 | + | let bk = ar(bT, -1) | |
281 | + | let bl = ar(af(), -1) | |
282 | + | func bU (bV,bW) = { | |
283 | + | let bX = bh(R, bW, bj, bk, bl) | |
284 | + | let bY = bX._1 | |
285 | + | let bZ = bX._2 | |
286 | + | let ca = bX._3 | |
287 | + | let bq = bX._4 | |
288 | + | (bV :+ IntegerEntry(bq, bY)) | |
289 | + | } | |
290 | + | ||
291 | + | if (if ((bl == -1)) | |
292 | + | then (bk == -1) | |
293 | + | else false) | |
294 | + | then nil | |
295 | + | else if (if ((bl == -1)) | |
296 | + | then (bk > -1) | |
297 | + | else false) | |
298 | + | then throw("invalid depositNumLast and depositNumUser state") | |
299 | + | else if (if ((bl > -1)) | |
300 | + | then (bk >= -1) | |
301 | + | else false) | |
302 | + | then if (bR) | |
303 | + | then [IntegerEntry(bT, bl)] | |
304 | + | else ({ | |
305 | + | let cb = bg | |
306 | + | let cc = size(cb) | |
307 | + | let cd = nil | |
308 | + | func ce (cf,cg) = if ((cg >= cc)) | |
309 | + | then cf | |
310 | + | else bU(cf, cb[cg]) | |
311 | + | ||
312 | + | func ch (cf,cg) = if ((cg >= cc)) | |
313 | + | then cf | |
314 | + | else throw("List size exceeds 9") | |
315 | + | ||
316 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
317 | + | } :+ IntegerEntry(bT, bl)) | |
318 | + | else throw(((("uncovered condition: depositNumLast=" + toString(bl)) + " depositNumUser=") + toString(bk))) | |
319 | + | } | |
320 | + | ||
321 | + | ||
322 | + | func ci (aj,cj) = { | |
323 | + | let ck = am(aj) | |
324 | + | let cl = ar(ck, 0) | |
325 | + | [IntegerEntry(ck, (cl + cj))] | |
326 | + | } | |
327 | + | ||
328 | + | ||
329 | + | func cm (cn) = (cn / L) | |
330 | + | ||
331 | + | ||
332 | + | func co (cp,cq,cr,cs) = { | |
333 | + | let ct = (cq - height) | |
334 | + | if ((0 >= ct)) | |
335 | + | then (height + cp) | |
336 | + | else { | |
337 | + | let cu = (cp - ct) | |
338 | + | let cv = if ((cs != 0)) | |
339 | + | then fraction(cr, e, cs) | |
340 | + | else cq | |
341 | + | ((cp + height) - fraction(cu, cv, e)) | |
342 | + | } | |
343 | + | } | |
344 | + | ||
345 | + | ||
346 | + | func cw (R,cx) = { | |
347 | + | let cy = valueOrElse(bd(R), $Tuple3(true, 0, 0)) | |
348 | + | let bR = cy._1 | |
349 | + | let bS = cy._2 | |
350 | + | let cq = cy._3 | |
351 | + | let cz = if (bR) | |
352 | + | then cx | |
353 | + | else (cx + bS) | |
354 | + | let cp = (1440 * 14) | |
355 | + | let cA = if (bR) | |
356 | + | then (cp + height) | |
357 | + | else co(cp, cq, bS, cz) | |
358 | + | $Tuple5(bR, bS, cq, cz, cA) | |
359 | + | } | |
360 | + | ||
361 | + | ||
362 | + | func cB (R,cC) = { | |
363 | + | let cD = bb() | |
364 | + | let cE = cD._1 | |
365 | + | let cF = cD._2 | |
366 | + | if ((size(cC.payments) != 1)) | |
321 | 367 | then throw("Invalid payments size") | |
322 | 368 | else { | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | if (( | |
328 | - | then throw( | |
369 | + | let cG = cC.payments[0] | |
370 | + | let aZ = cG.amount | |
371 | + | let cH = (("Invalid asset. " + toBase58String(cE)) + " is expected") | |
372 | + | let bi = valueOrErrorMessage(cG.assetId, cH) | |
373 | + | if ((bi != cE)) | |
374 | + | then throw(cH) | |
329 | 375 | else { | |
330 | - | let | |
331 | - | let | |
332 | - | let | |
333 | - | let | |
334 | - | let | |
335 | - | let | |
336 | - | let | |
337 | - | if (( | |
338 | - | then throw(("Min lock amount is " + toString( | |
376 | + | let cI = toString(R) | |
377 | + | let cJ = cw(R, aZ) | |
378 | + | let bR = cJ._1 | |
379 | + | let bS = cJ._2 | |
380 | + | let cq = cJ._3 | |
381 | + | let cz = cJ._4 | |
382 | + | let cA = cJ._5 | |
383 | + | if ((cF > cz)) | |
384 | + | then throw(("Min lock amount is " + toString(cF))) | |
339 | 385 | else { | |
340 | - | let | |
386 | + | let cK = aQ(aZ, 1, if (bR) | |
341 | 387 | then 1 | |
342 | 388 | else 0) | |
343 | - | let | |
344 | - | let | |
345 | - | let | |
346 | - | ((([ | |
389 | + | let cL = cK._1 | |
390 | + | let cM = cK._2 | |
391 | + | let cN = cK._3 | |
392 | + | ((([aO("stake", R, cC.transactionId, bS, cq, cz, cA)] ++ bQ(bR, cI, bS)) ++ aY(R, cz, cA)) ++ cL) | |
347 | 393 | } | |
348 | 394 | } | |
349 | 395 | } | |
350 | 396 | } | |
351 | 397 | ||
352 | 398 | ||
353 | - | func | |
354 | - | let | |
355 | - | if ((size( | |
399 | + | func cO (R,cC) = { | |
400 | + | let cI = toString(R) | |
401 | + | if ((size(cC.payments) > 0)) | |
356 | 402 | then throw("payments are not accepted") | |
357 | 403 | else { | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | let | |
363 | - | let | |
364 | - | let | |
365 | - | let | |
366 | - | func | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | let | |
372 | - | let | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | let | |
378 | - | if ((0 >= | |
379 | - | then $Tuple2( | |
380 | - | else $Tuple2(((( | |
404 | + | let cP = valueOrElse(bd(R), $Tuple3(true, 0, 0)) | |
405 | + | let bR = cP._1 | |
406 | + | let bS = cP._2 | |
407 | + | let cQ = cP._3 | |
408 | + | let bj = toBigInt(bS) | |
409 | + | let bT = ag(cI) | |
410 | + | let bk = ar(bT, -1) | |
411 | + | let bl = ar(af(), -1) | |
412 | + | func cR (bV,bW) = { | |
413 | + | let cS = bh(cI, bW, bj, bk, bl) | |
414 | + | let bY = cS._1 | |
415 | + | let bZ = cS._2 | |
416 | + | let ca = cS._3 | |
417 | + | let bq = cS._4 | |
418 | + | let cT = al(cI, bW) | |
419 | + | let cU = bV | |
420 | + | let cV = cU._1 | |
421 | + | let cW = cU._2 | |
422 | + | let cX = makeString([bW, toString(bY)], ":") | |
423 | + | let cY = makeString([cW, cX], "_") | |
424 | + | if ((0 >= bY)) | |
425 | + | then $Tuple2(cV, cY) | |
426 | + | else $Tuple2((((cV :+ ScriptTransfer(R, bY, ax(bW))) :+ IntegerEntry(cT, (valueOrElse(getInteger(cT), 0) + bY))) :+ IntegerEntry(bq, 0)), cY) | |
381 | 427 | } | |
382 | 428 | ||
383 | - | let | |
384 | - | let | |
385 | - | let | |
386 | - | let | |
387 | - | func | |
388 | - | then | |
389 | - | else | |
429 | + | let cZ = { | |
430 | + | let cb = bg | |
431 | + | let cc = size(cb) | |
432 | + | let cd = $Tuple2(nil, "") | |
433 | + | func ce (cf,cg) = if ((cg >= cc)) | |
434 | + | then cf | |
435 | + | else cR(cf, cb[cg]) | |
390 | 436 | ||
391 | - | func | |
392 | - | then | |
393 | - | else throw("List size exceeds | |
437 | + | func ch (cf,cg) = if ((cg >= cc)) | |
438 | + | then cf | |
439 | + | else throw("List size exceeds 9") | |
394 | 440 | ||
395 | - | | |
441 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
396 | 442 | } | |
397 | - | let | |
398 | - | let | |
399 | - | if ((0 >= size( | |
400 | - | then nil | |
401 | - | else (( | |
443 | + | let da = cZ._1 | |
444 | + | let db = cZ._2 | |
445 | + | if ((0 >= size(da))) | |
446 | + | then $Tuple2(nil, 0) | |
447 | + | else $Tuple2(((da :+ IntegerEntry(bT, bl)) :+ aP(R, cC.transactionId, drop(db, 1))), size(da)) | |
402 | 448 | } | |
403 | 449 | } | |
404 | 450 | ||
405 | 451 | ||
406 | - | @Callable( | |
407 | - | func constructor ( | |
452 | + | @Callable(cC) | |
453 | + | func constructor (cF,dc,cE) = if ((cC.caller != this)) | |
408 | 454 | then throw("Permission denied") | |
409 | - | else [IntegerEntry( | |
455 | + | else [IntegerEntry(O(), cF), StringEntry(ae(), dc), StringEntry(P(), cE)] | |
410 | 456 | ||
411 | 457 | ||
412 | 458 | ||
413 | - | @Callable( | |
414 | - | func stake () = | |
459 | + | @Callable(cC) | |
460 | + | func stake () = cB(cC.caller, cC) | |
415 | 461 | ||
416 | 462 | ||
417 | 463 | ||
418 | - | @Callable( | |
419 | - | func stakeByOriginCaller () = | |
464 | + | @Callable(cC) | |
465 | + | func stakeByOriginCaller () = cB(cC.originCaller, cC) | |
420 | 466 | ||
421 | 467 | ||
422 | 468 | ||
423 | - | @Callable( | |
424 | - | func unstake ( | |
469 | + | @Callable(cC) | |
470 | + | func unstake (aZ) = if ((size(cC.payments) != 0)) | |
425 | 471 | then throw("unstake doesn't require any payment") | |
426 | 472 | else { | |
427 | - | let | |
428 | - | let | |
429 | - | let | |
430 | - | let | |
431 | - | let | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | let | |
436 | - | let | |
437 | - | let | |
438 | - | let | |
439 | - | if (( | |
440 | - | then throw((("You have already made a swap operation. Wait " + toString((height + | |
441 | - | else if ((0 >= | |
473 | + | let R = cC.caller | |
474 | + | let cI = toString(R) | |
475 | + | let dd = bb() | |
476 | + | let cE = dd._1 | |
477 | + | let cF = dd._2 | |
478 | + | let de = be(R) | |
479 | + | let bR = de._1 | |
480 | + | let bS = de._2 | |
481 | + | let cq = de._3 | |
482 | + | let df = aD(reentrantInvoke(J, "swapParamsByUserSYSREADONLY", [cI, 0], nil)) | |
483 | + | let dg = df._2 | |
484 | + | let dh = df._3 | |
485 | + | if ((dg > 0)) | |
486 | + | then throw((("You have already made a swap operation. Wait " + toString((height + dh))) + " height to unstake")) | |
487 | + | else if ((0 >= bS)) | |
442 | 488 | then throw("Nothing to unstake") | |
443 | - | else if (( | |
444 | - | then throw(((("Requested " + toString( | |
489 | + | else if ((aZ > bS)) | |
490 | + | then throw(((("Requested " + toString(aZ)) + ", but staked only ") + toString(bS))) | |
445 | 491 | else { | |
446 | - | let | |
447 | - | let | |
492 | + | let cz = (bS - aZ) | |
493 | + | let di = aQ(-(aZ), if ((aZ == bS)) | |
448 | 494 | then -1 | |
449 | - | else 0, if (( | |
495 | + | else 0, if ((aZ == bS)) | |
450 | 496 | then -1 | |
451 | 497 | else 0) | |
452 | - | let | |
453 | - | let | |
454 | - | let | |
455 | - | ((([ScriptTransfer( | |
498 | + | let cL = di._1 | |
499 | + | let cM = di._2 | |
500 | + | let cN = di._3 | |
501 | + | ((([ScriptTransfer(R, aZ, cE), aO("unstake", R, cC.transactionId, bS, cq, cz, cq)] ++ bQ(false, cI, bS)) ++ aY(R, cz, cq)) ++ cL) | |
456 | 502 | } | |
457 | 503 | } | |
458 | 504 | ||
459 | 505 | ||
460 | 506 | ||
461 | - | @Callable( | |
462 | - | func deposit () = if ((size( | |
507 | + | @Callable(cC) | |
508 | + | func deposit () = if ((size(cC.payments) != 1)) | |
463 | 509 | then throw("exact 1 payment is allowed only") | |
464 | 510 | else { | |
465 | - | let | |
466 | - | let | |
467 | - | let | |
468 | - | let | |
469 | - | let | |
511 | + | let dj = cC.payments[0] | |
512 | + | let aZ = dj.amount | |
513 | + | let dk = valueOrElse(dj.assetId, j) | |
514 | + | let dl = toBase58String(dk) | |
515 | + | let dm = if ((dk == j)) | |
470 | 516 | then g | |
471 | 517 | else f | |
472 | - | let | |
473 | - | let | |
474 | - | let | |
475 | - | if ((0 > | |
518 | + | let dn = toBigInt(aZ) | |
519 | + | let cM = ar(X(), 0) | |
520 | + | let do = toBigInt(cM) | |
521 | + | if ((0 > cM)) | |
476 | 522 | then throw("TODO: case is not supported") | |
477 | - | else if (( | |
478 | - | then | |
523 | + | else if ((cM == 0)) | |
524 | + | then ci(dl, aZ) | |
479 | 525 | else { | |
480 | - | let | |
481 | - | let | |
482 | - | let | |
483 | - | let | |
484 | - | if (!(contains( | |
485 | - | then throw((( | |
526 | + | let dp = fraction(dn, h, do) | |
527 | + | let dq = af() | |
528 | + | let bl = ar(dq, -1) | |
529 | + | let dr = (bl + 1) | |
530 | + | if (!(contains(bf, dl))) | |
531 | + | then throw(((bf + " doesn't contain ") + dl)) | |
486 | 532 | else { | |
487 | - | func | |
488 | - | let | |
489 | - | let | |
490 | - | ( | |
491 | - | then StringEntry( | |
492 | - | else StringEntry( | |
533 | + | func ds (bV,dt) = { | |
534 | + | let du = ah(dr, dt) | |
535 | + | let dv = au(ah(bl, dt), "0") | |
536 | + | (bV :+ (if ((dt == dl)) | |
537 | + | then StringEntry(du, toString((parseBigIntValue(dv) + dp))) | |
538 | + | else StringEntry(du, dv))) | |
493 | 539 | } | |
494 | 540 | ||
495 | - | ({ | |
496 | - | let | |
497 | - | let | |
498 | - | let | |
499 | - | func | |
500 | - | then | |
501 | - | else | |
541 | + | (({ | |
542 | + | let cb = bg | |
543 | + | let cc = size(cb) | |
544 | + | let cd = nil | |
545 | + | func ce (cf,cg) = if ((cg >= cc)) | |
546 | + | then cf | |
547 | + | else ds(cf, cb[cg]) | |
502 | 548 | ||
503 | - | func | |
504 | - | then | |
505 | - | else throw("List size exceeds | |
549 | + | func ch (cf,cg) = if ((cg >= cc)) | |
550 | + | then cf | |
551 | + | else throw("List size exceeds 9") | |
506 | 552 | ||
507 | - | | |
508 | - | } :+ IntegerEntry( | |
553 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
554 | + | } :+ IntegerEntry(dq, dr)) ++ bG(aZ, dl)) | |
509 | 555 | } | |
510 | 556 | } | |
511 | 557 | } | |
512 | 558 | ||
513 | 559 | ||
514 | 560 | ||
515 | - | @Callable( | |
516 | - | func claimRewards () = | |
561 | + | @Callable(cC) | |
562 | + | func claimRewards () = cO(cC.caller, cC) | |
517 | 563 | ||
518 | 564 | ||
519 | 565 | ||
520 | - | @Callable( | |
521 | - | func claimRewardsByOriginCaller () = | |
566 | + | @Callable(cC) | |
567 | + | func claimRewardsByOriginCaller () = cO(cC.originCaller, cC) | |
522 | 568 | ||
523 | 569 | ||
524 | 570 | ||
525 | - | @Callable( | |
526 | - | func unclaimedRewardsREADONLY ( | |
527 | - | func | |
571 | + | @Callable(cC) | |
572 | + | func unclaimedRewardsREADONLY (cI) = { | |
573 | + | func dw (bV,bW) = ((bV + makeString([bW, "0", "0"], ":")) + "_") | |
528 | 574 | ||
529 | - | let | |
575 | + | let dx = if ((cI == "")) | |
530 | 576 | then { | |
531 | - | let | |
532 | - | let | |
533 | - | let | |
534 | - | func | |
535 | - | then | |
536 | - | else | |
577 | + | let cb = bg | |
578 | + | let cc = size(cb) | |
579 | + | let cd = "" | |
580 | + | func ce (cf,cg) = if ((cg >= cc)) | |
581 | + | then cf | |
582 | + | else dw(cf, cb[cg]) | |
537 | 583 | ||
538 | - | func | |
539 | - | then | |
540 | - | else throw("List size exceeds | |
584 | + | func ch (cf,cg) = if ((cg >= cc)) | |
585 | + | then cf | |
586 | + | else throw("List size exceeds 9") | |
541 | 587 | ||
542 | - | | |
588 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
543 | 589 | } | |
544 | 590 | else { | |
545 | - | let | |
546 | - | let | |
547 | - | let | |
548 | - | let | |
549 | - | let | |
550 | - | let | |
551 | - | let | |
552 | - | let | |
553 | - | let | |
554 | - | func | |
555 | - | let | |
556 | - | let | |
557 | - | let | |
558 | - | let | |
559 | - | let | |
560 | - | let | |
561 | - | (( | |
591 | + | let R = addressFromStringValue(cI) | |
592 | + | let dy = valueOrElse(bd(R), $Tuple3(true, 0, 0)) | |
593 | + | let bR = dy._1 | |
594 | + | let bS = dy._2 | |
595 | + | let cQ = dy._3 | |
596 | + | let bj = toBigInt(bS) | |
597 | + | let bT = ag(cI) | |
598 | + | let bk = ar(bT, -1) | |
599 | + | let bl = ar(af(), -1) | |
600 | + | func cR (bV,bW) = { | |
601 | + | let dz = bh(cI, bW, bj, bk, bl) | |
602 | + | let bY = dz._1 | |
603 | + | let bZ = dz._2 | |
604 | + | let ca = dz._3 | |
605 | + | let bq = dz._4 | |
606 | + | let dA = valueOrElse(getInteger(al(cI, bW)), 0) | |
607 | + | ((bV + makeString([bW, toString(bY), toString(dA)], ":")) + "_") | |
562 | 608 | } | |
563 | 609 | ||
564 | - | let | |
565 | - | let | |
566 | - | let | |
567 | - | func | |
568 | - | then | |
569 | - | else | |
610 | + | let cb = bg | |
611 | + | let cc = size(cb) | |
612 | + | let cd = "" | |
613 | + | func ce (cf,cg) = if ((cg >= cc)) | |
614 | + | then cf | |
615 | + | else cR(cf, cb[cg]) | |
570 | 616 | ||
571 | - | func | |
572 | - | then | |
573 | - | else throw("List size exceeds | |
617 | + | func ch (cf,cg) = if ((cg >= cc)) | |
618 | + | then cf | |
619 | + | else throw("List size exceeds 9") | |
574 | 620 | ||
575 | - | | |
621 | + | ch(ce(ce(ce(ce(ce(ce(ce(ce(ce(cd, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9) | |
576 | 622 | } | |
577 | - | $Tuple2(nil, dropRight( | |
623 | + | $Tuple2(nil, dropRight(dx, 1)) | |
578 | 624 | } | |
579 | 625 | ||
580 | 626 | ||
581 | 627 | ||
582 | - | @Callable( | |
583 | - | func surfStakingSYSREADONLY ( | |
584 | - | let | |
585 | - | let | |
586 | - | if (( | |
587 | - | then $Tuple2(nil, [0, | |
628 | + | @Callable(cC) | |
629 | + | func surfStakingSYSREADONLY (dB,dC) = { | |
630 | + | let dD = ar(X(), 0) | |
631 | + | let dE = cm(dD) | |
632 | + | if ((dB == "")) | |
633 | + | then $Tuple2(nil, [0, dD, 0, dE, 0, height, height]) | |
588 | 634 | else { | |
589 | - | let | |
590 | - | let | |
591 | - | let | |
592 | - | let | |
593 | - | let | |
594 | - | let | |
595 | - | let | |
596 | - | let | |
597 | - | let | |
598 | - | $Tuple2(nil, [ | |
635 | + | let R = av(dB) | |
636 | + | let cJ = cw(R, dC) | |
637 | + | let bR = cJ._1 | |
638 | + | let bS = cJ._2 | |
639 | + | let cq = cJ._3 | |
640 | + | let cz = cJ._4 | |
641 | + | let cA = cJ._5 | |
642 | + | let dF = bS | |
643 | + | let dG = cm(dF) | |
644 | + | $Tuple2(nil, [dF, dD, dG, dE, cq, cA]) | |
599 | 645 | } | |
600 | 646 | } | |
601 | 647 | ||
602 | 648 | ||
603 | 649 | ||
604 | - | @Callable( | |
605 | - | func gnsbtFromSurfSYSREADONLY ( | |
650 | + | @Callable(cC) | |
651 | + | func gnsbtFromSurfSYSREADONLY (cn) = $Tuple2(nil, cm(cn)) | |
606 | 652 | ||
607 | 653 | ||
608 | 654 | ||
609 | - | @Callable( | |
655 | + | @Callable(cC) | |
610 | 656 | func configSYSREADONLY () = { | |
611 | - | let | |
612 | - | let | |
613 | - | let | |
614 | - | $Tuple2(nil, [ | |
657 | + | let dH = getIntegerValue(O()) | |
658 | + | let dI = (1440 * 14) | |
659 | + | let dJ = 1150000 | |
660 | + | $Tuple2(nil, [dH, (L * d), dI, dJ]) | |
615 | 661 | } | |
616 | 662 | ||
617 | 663 |
github/deemru/w8io/3ef1775 246.81 ms ◑