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