tx · 5WZLzSkU8YrnK71Knck2rbhg9tvQ6AogkthRYwJDCu3t 3PQtGwmFsbKygGi8wPfUxz4bTUNgYodK3je: -0.01800000 Waves 2024.02.27 14:50 [4060412] smart account 3PQtGwmFsbKygGi8wPfUxz4bTUNgYodK3je > SELF 0.00000000 Waves
{ "type": 13, "id": "5WZLzSkU8YrnK71Knck2rbhg9tvQ6AogkthRYwJDCu3t", "fee": 1800000, "feeAssetId": null, "timestamp": 1709034583259, "version": 2, "chainId": 87, "sender": "3PQtGwmFsbKygGi8wPfUxz4bTUNgYodK3je", "senderPublicKey": "CtYpnoMZ1pX6F6Mo3Ghxuk2tz2wd4zwyxZPvELGU1pQK", "proofs": [ "38Fnk5buaLTRxmeYJ4jE7G2btzrqZ9uxTicE4TZADy6RcDK78necc3Ax6MTLgVsXHvpRLBajCr7WDKAJBh1xpEGE" ], "script": "base64:BwIoCAISBAoCAhgSBgoEAgIBARIECgICGBIECgICGBIECgICGBIECgICGDUAB2NoYWluSWQJAMkBAgkAygECCAUEdGhpcwVieXRlcwABAAEACGNoYWluSWRSAQFSAAhjaGFpbklkVAEBVAAIY2hhaW5JZFcBAVcAA1NFUAICX18ABVdBVkVTAgVXQVZFUwAQY29udHJhY3RGaWxlbmFtZQIVd3hkYW9fY2FsY3VsYXRvci5yaWRlAAVtdWx0OACAwtcvAAZtdWx0MTgJALYCAQCAgJC7utat8A0ADXdhdmVzRGVjaW1hbHMACAAMdXNkdERlY2ltYWxzAAYBBXRvWDE4AgdvcmlnVmFsDW9yaWdTY2FsZU11bHQJALwCAwkAtgIBBQdvcmlnVmFsBQZtdWx0MTgJALYCAQUNb3JpZ1NjYWxlTXVsdAEHZnJvbVgxOAIDdmFsD3Jlc3VsdFNjYWxlTXVsdAkAoAMBCQC8AgMFA3ZhbAkAtgIBBQ9yZXN1bHRTY2FsZU11bHQFBm11bHQxOAEHd3JhcEVycgEBcwkArAICCQCsAgIFEGNvbnRyYWN0RmlsZW5hbWUCAjogBQFzAQh0aHJvd0VycgEBcwkAAgEJAQd3cmFwRXJyAQUBcwERa2V5RmFjdG9yeUFkZHJlc3MAAhIlc19fZmFjdG9yeUFkZHJlc3MBDmZhY3RvcnlBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAckbWF0Y2gwCQCdCAIFBHRoaXMJARFrZXlGYWN0b3J5QWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yCQEHd3JhcEVycgECF2ludmFsaWQgZmFjdG9yeSBhZGRyZXNzAQtvbmx5QWRkcmVzcwIBaQdhZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUHYWRkcmVzcwYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAQhvbmx5VGhpcwEBaQkBC29ubHlBZGRyZXNzAgUBaQUEdGhpcwELb25seUZhY3RvcnkBAWkJAQtvbmx5QWRkcmVzcwIFAWkJAQ5mYWN0b3J5QWRkcmVzcwAACXd4QXNzZXRJZAMJAAACBQdjaGFpbklkBQhjaGFpbklkVwEgkwEcq6nHbiVXzmaecba9qmv4POhYCyru2aBOuzzcFLEDCQAAAgUHY2hhaW5JZAUIY2hhaW5JZFQBIMZSHoFO6m7jPMCXsA5fLPJq6e2dsobRmkJ4qGB9PhuxCQEIdGhyb3dFcnIBAhBpbnZhbGlkIGNoYWluIGlkARBrZXlDdXJyZW50UGVyaW9kAAkAuQkCCQDMCAICAiVzCQDMCAICDWN1cnJlbnRQZXJpb2QFA25pbAUDU0VQARZrZXlTdGFydEhlaWdodEJ5UGVyaW9kAQZwZXJpb2QJALkJAgkAzAgCAgQlcyVkCQDMCAICC3N0YXJ0SGVpZ2h0CQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEPa2V5UGVyaW9kTGVuZ3RoAAkAuQkCCQDMCAICAiVzCQDMCAICDHBlcmlvZExlbmd0aAUDbmlsBQNTRVABGGtleVRyZWFzdXJ5VmFsdWVCeVBlcmlvZAEGcGVyaW9kCQC5CQIJAMwIAgIEJXMlZAkAzAgCAg10cmVhc3VyeVZhbHVlCQDMCAIJAKQDAQUGcGVyaW9kBQNuaWwFA1NFUAEUa2V5TG9ja0dsb2JhbENvdW50ZXIACQC5CQIJAMwIAgICJXMJAMwIAgIRbG9ja0dsb2JhbENvdW50ZXIFA25pbAUDU0VQAQ9rZXlMb2NrRHVyYXRpb24ACQC5CQIJAMwIAgICJXMJAMwIAgIMbG9ja0R1cmF0aW9uBQNuaWwFA1NFUAEHa2V5TG9jawILdXNlckFkZHJlc3MHY291bnRlcgkAuQkCCQDMCAICBiVzJXMlZAkAzAgCAgRsb2NrCQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgkApAMBBQdjb3VudGVyBQNuaWwFA1NFUAEMa2V5U2tpblRvdGFsAQ90cmVhc3VyeUFkZHJlc3MJAKwCAgILc2tpbl90b3RhbF8JAKUIAQUPdHJlYXN1cnlBZGRyZXNzARVrZXlQb3dlckNvbmZpZ0FkZHJlc3MAAhYlc19fcG93ZXJDb25maWdBZGRyZXNzARJwb3dlckNvbmZpZ0FkZHJlc3MACQETdmFsdWVPckVycm9yTWVzc2FnZQIEByRtYXRjaDAJAJ0IAgkBDmZhY3RvcnlBZGRyZXNzAAkBFWtleVBvd2VyQ29uZmlnQWRkcmVzcwADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQCmCAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yCQEHd3JhcEVycgECHGludmFsaWQgcG93ZXIgY29uZmlnIGFkZHJlc3MBD2tleVBvd2VyQXNzZXRJZAACDHBvd2VyQXNzZXRJZAEPZ2V0UG93ZXJBc3NldElkAAkA2QQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBEnBvd2VyQ29uZmlnQWRkcmVzcwAJAQ9rZXlQb3dlckFzc2V0SWQACQEHd3JhcEVycgECFmludmFsaWQgcG93ZXIgYXNzZXQgaWQBF2tleVBvd2VyQ29udHJhY3RBZGRyZXNzAAIYJXNfX3Bvd2VyQ29udHJhY3RBZGRyZXNzARRwb3dlckNvbnRyYWN0QWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQHJG1hdGNoMAkAnQgCCQEOZmFjdG9yeUFkZHJlc3MACQEXa2V5UG93ZXJDb250cmFjdEFkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgkBB3dyYXBFcnIBAh5pbnZhbGlkIHBvd2VyIGNvbnRyYWN0IGFkZHJlc3MBDmtleUxvY2tBZGRyZXNzAAIPJXNfX2xvY2tBZGRyZXNzAQtsb2NrQWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQHJG1hdGNoMAkAnQgCCQEOZmFjdG9yeUFkZHJlc3MACQEOa2V5TG9ja0FkZHJlc3MAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkApggBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgkBB3dyYXBFcnIBAh1pbnZhbGlkIGxvY2sgY29udHJhY3QgYWRkcmVzcwEWa2V5UG9vbHNGYWN0b3J5QWRkcmVzcwACFyVzX19wb29sc0ZhY3RvcnlBZGRyZXNzARZnZXRQb29sc0ZhY3RvcnlBZGRyZXNzAAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBAckbWF0Y2gwCQCdCAIJAQ5mYWN0b3J5QWRkcmVzcwAJARZrZXlQb29sc0ZhY3RvcnlBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IJAQd3cmFwRXJyAQIdaW52YWxpZCBwb29scyBmYWN0b3J5IGFkZHJlc3MBEmtleVRyZWFzdXJ5QWRkcmVzcwACEyVzX190cmVhc3VyeUFkZHJlc3MBEmdldFRyZWFzdXJ5QWRkcmVzcwAJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgQHJG1hdGNoMAkAnQgCCQEOZmFjdG9yeUFkZHJlc3MACQESa2V5VHJlYXN1cnlBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAKYIAQUBcwMJAAECBQckbWF0Y2gwAgRVbml0BQR1bml0CQACAQILTWF0Y2ggZXJyb3IJAQd3cmFwRXJyAQIYaW52YWxpZCB0cmVhc3VyeSBhZGRyZXNzAQlrZXlBc3NldHMAAgolc19fYXNzZXRzAQxnZXRBc3NldHNTdHIACQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgkBDmZhY3RvcnlBZGRyZXNzAAkBCWtleUFzc2V0cwAJAQd3cmFwRXJyAQIOaW52YWxpZCBhc3NldHMBDGtleUxwQXNzZXRJZAACDSVzX19scEFzc2V0SWQBDGdldExwQXNzZXRJZAAJANkEAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQ5mYWN0b3J5QWRkcmVzcwAJAQxrZXlMcEFzc2V0SWQACQEHd3JhcEVycgECE2ludmFsaWQgbHAgYXNzZXQgaWQBEmdldEFzc2V0SW5mb09yRmFpbAEHYXNzZXRJZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDsBwEFB2Fzc2V0SWQJAQd3cmFwRXJyAQISaW52YWxpZCBhc3NldCBpbmZvAQpsb2NrRm9ybWF0BQRmcm9tAnRvB2Fzc2V0SWQGYW1vdW50DWxwQXNzZXRBbW91bnQJALkJAgkAzAgCAgolZCVkJXMlZCVkCQDMCAIJAKQDAQUEZnJvbQkAzAgCCQCkAwEFAnRvCQDMCAIJANgEAQUHYXNzZXRJZAkAzAgCCQCkAwEFBmFtb3VudAkAzAgCCQCkAwEFDWxwQXNzZXRBbW91bnQFA25pbAUDU0VQAQlsb2NrUGFyc2UBAXMEBXBhcnRzCQC1CQIFAXMFA1NFUAkAlgoECQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwABCQEHd3JhcEVycgECKWVycm9yIGR1cmluZyBwcm9jZXNzaW5nIGxvY2sgc3RhcnQgaGVpZ2h0CQETdmFsdWVPckVycm9yTWVzc2FnZQIJALYJAQkAkQMCBQVwYXJ0cwACCQEHd3JhcEVycgECJ2Vycm9yIGR1cmluZyBwcm9jZXNzaW5nIGxvY2sgZW5kIGhlaWdodAkA2QQBCQCRAwIFBXBhcnRzAAMJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAtgkBCQCRAwIFBXBhcnRzAAQJAQd3cmFwRXJyAQIjZXJyb3IgZHVyaW5nIHByb2Nlc3NpbmcgbG9jayBhbW91bnQBEWdldEFzc2V0c0JhbGFuY2VzAg10YXJnZXRBZGRyZXNzC2Fzc2V0SWRMaXN0CgEDbWFwAgNhY2MObmV4dEFzc2V0SWRTdHIEB2JhbGFuY2UDCQAAAgUObmV4dEFzc2V0SWRTdHIFBVdBVkVTCQEFdG9YMTgCCAkA7wcBBQ10YXJnZXRBZGRyZXNzCWF2YWlsYWJsZQkAbAYACgAABQ13YXZlc0RlY2ltYWxzAAAAAAUERE9XTgQHYXNzZXRJZAkA2QQBBQ5uZXh0QXNzZXRJZFN0cgQNYXNzZXREZWNpbWFscwgJARJnZXRBc3NldEluZm9PckZhaWwBBQdhc3NldElkCGRlY2ltYWxzCQEFdG9YMTgCCQDwBwIFDXRhcmdldEFkZHJlc3MFB2Fzc2V0SWQJAGwGAAoAAAUNYXNzZXREZWNpbWFscwAAAAAFBERPV04JAM0IAgUDYWNjBQdiYWxhbmNlCgACJGwFC2Fzc2V0SWRMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtYXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoBD2dldEFzc2V0c1ByaWNlcwITcG9vbHNGYWN0b3J5QWRkcmVzcwthc3NldElkTGlzdAMJAAACBQdjaGFpbklkBQhjaGFpbklkVwQTd2F2ZXNVc2R0QWRkcmVzc1N0cgIjM1BLZnJ1cEV5ZFUyblpBZ2hWalpBZnZDd01Ca3p1UjFGNTIEDndhdmVzVXNkdFByaWNlCQCnAwEKAAFACQD8BwQFE3Bvb2xzRmFjdG9yeUFkZHJlc3MCCGdldFByaWNlCQDMCAIFE3dhdmVzVXNkdEFkZHJlc3NTdHIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQSd2F2ZXNYdG5BZGRyZXNzU3RyAiMzUFBaV2dGTlJLSEx2TTUxcHdTOTM0QzhWWjdkMkY0WjU4ZwQNd2F2ZXNYdG5QcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRJ3YXZlc1h0bkFkZHJlc3NTdHIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwQMeHRuVXNkdFByaWNlCQC8AgMFDndhdmVzVXNkdFByaWNlBQZtdWx0MTgFDXdhdmVzWHRuUHJpY2UKAQNtYXACA2FjYwtuZXh0QXNzZXRJZAQFcHJpY2UEByRtYXRjaDAFC25leHRBc3NldElkAwkAAAICLDJ0aHNBQ3VIbXpETXVOZXpQTTMyd2c5YTNCd1V6QldEZVNLYWtnejNjdzIxBQckbWF0Y2gwBBJwd3JXYXZlc0FkZHJlc3NTdHICIzNQRGk3UXE4cExRWXZ0S3lUZlF1cXFQVVd5aG9ZYlU5NTd0BA1wd3JXYXZlc1ByaWNlCQCnAwEKAAFACQD8BwQFE3Bvb2xzRmFjdG9yeUFkZHJlc3MCCGdldFByaWNlCQDMCAIFEnB3cldhdmVzQWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQC8AgMFDXB3cldhdmVzUHJpY2UFDndhdmVzVXNkdFByaWNlBQZtdWx0MTgDCQAAAgIsQXRxdjU5RVl6akZHdWl0S1ZuTVJrNkg4RnVram9WM2t0UG9yYkV5czI1b24FByRtYXRjaDAEEXd4V2F2ZXNBZGRyZXNzU3RyAiMzUEZ6YUgyZ2hwd0FOSEZnamV2YTgzTjF5eHpFckVMeDJlaAQMd3hXYXZlc1ByaWNlCQCnAwEKAAFACQD8BwQFE3Bvb2xzRmFjdG9yeUFkZHJlc3MCCGdldFByaWNlCQDMCAIFEXd4V2F2ZXNBZGRyZXNzU3RyBQNuaWwFA25pbAMJAAECBQFAAgZTdHJpbmcFAUAJAAIBCQCsAgIJAAMBBQFAAhsgY291bGRuJ3QgYmUgY2FzdCB0byBTdHJpbmcJALwCAwUMd3hXYXZlc1ByaWNlBQ53YXZlc1VzZHRQcmljZQUGbXVsdDE4AwkAAAICLDM0TjlZY0VFVExXbjkzcVlRNjRFc1AxeDg5dFNydUpVNDRSckVNU1hYRVBKBQckbWF0Y2gwBBZ3YXZlc1VzZHR3eGdBZGRyZXNzU3RyAiMzUEtNVlo3a1FlYVJFYWpZaThZYzI1Um82bWNOdzVENlFTYQQRd2F2ZXNVc2R0d3hnUHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgUWd2F2ZXNVc2R0d3hnQWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQC8AgMFDndhdmVzVXNkdFByaWNlBQZtdWx0MTgFEXdhdmVzVXNkdHd4Z1ByaWNlAwkAAAICLDZYdEhqcFhiczlSUkpQMlNyOUdVeVZxekFDY2J5OVRrVGhIWG5qVkM1Q0RKBQckbWF0Y2gwBBZ3YXZlc1VzZGN3eGdBZGRyZXNzU3RyAiMzUDNnM2VpcGZHMk5aS0tRRThEWlh0MkU5dFJKcWlpOWpjWAQRd2F2ZXNVc2Rjd3hnUHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgUWd2F2ZXNVc2Rjd3hnQWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQC8AgMFDndhdmVzVXNkdFByaWNlBQZtdWx0MTgFEXdhdmVzVXNkY3d4Z1ByaWNlAwkAAAICLEhaazFtYmZ1SnBteFUxRnM0QVg1TVdMVll0Y3RzTmNnNmUyQzZWS3FLOHprBQckbWF0Y2gwBBNsdGN3eGdYdG5BZGRyZXNzU3RyAiMzUDk0d3Z1NWdBN1ZoalBnQUIzdHdhZXFkd0hDd05LMnZzbgQObHRjd3hnWHRuUHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgUTbHRjd3hnWHRuQWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQC8AgMFDmx0Y3d4Z1h0blByaWNlBQx4dG5Vc2R0UHJpY2UFBm11bHQxOAMJAAACAiw0NzRqVGVZeDJyMlZhMzU3OTR0Q1NjQVhXSkc5aFUySGNneHpNb3dhWlVudQUHJG1hdGNoMAQVZXRod3hnV2F2ZXNBZGRyZXNzU3RyAiMzUDNYR1RONnMyOTJnOWl3WWhzM1RFcUpxSGlmZlFZb2p1RQQQZXRod3hnV2F2ZXNQcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRVldGh3eGdXYXZlc0FkZHJlc3NTdHIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwkAvAIDBRBldGh3eGdXYXZlc1ByaWNlBQ53YXZlc1VzZHRQcmljZQUGbXVsdDE4AwkAAAICLDhMUVc4ZjdQNWQ1UFpNN0d0WkVCZ2FxUlBHU3pTM0RmUHVpWHJVUko0QUpTBQckbWF0Y2gwBBNidGN3eGdYdG5BZGRyZXNzU3RyAiMzUENCV0RUQTZqckZzd2Q3Z1FnYUUzWGs3Z0xNNVJLb2Z2cAQOYnRjd3hnWHRuUHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgUTYnRjd3hnWHRuQWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nCQC8AgMFDmJ0Y3d4Z1h0blByaWNlBQx4dG5Vc2R0UHJpY2UFBm11bHQxOAkBCHRocm93RXJyAQIQaW52YWxpZCBhc3NldCBpZAkAzQgCBQNhY2MFBXByaWNlCgACJGwFC2Fzc2V0SWRMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtYXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoDCQAAAgUHY2hhaW5JZAUIY2hhaW5JZFQKAQNtYXACA2FjYwtuZXh0QXNzZXRJZAQFcHJpY2UEByRtYXRjaDAFC25leHRBc3NldElkAwkAAAICLEVNQU1MeERudjN4aXo4UlhnOEJ0ajMzamNFdzN3TGN6TDNKS1lZbXV1YnBjBQckbWF0Y2gwBBB3eFVzZHRBZGRyZXNzU3RyAiMzTXJVTFFSTGM1MkdXckpGMXRNY0FtNE03OGZQZTU3bzlLdAQLd3hVc2R0UHJpY2UJAKcDAQoAAUAJAPwHBAUTcG9vbHNGYWN0b3J5QWRkcmVzcwIIZ2V0UHJpY2UJAMwIAgUQd3hVc2R0QWRkcmVzc1N0cgUDbmlsBQNuaWwDCQABAgUBQAIGU3RyaW5nBQFACQACAQkArAICCQADAQUBQAIbIGNvdWxkbid0IGJlIGNhc3QgdG8gU3RyaW5nBQt3eFVzZHRQcmljZQMJAAACAixBN0tzaDdmWHlxbTFLaEtBaUszYkFCMmFpUFNpdFFRRjZ2MXB5dTlTUzNGUgUHJG1hdGNoMAQSdXNkY1VzZHRBZGRyZXNzU3RyAiMzTXpLU2RUSDJqRmJ5cExzb05mckg3UWdrelNieDNFWXdDQQQNdXNkY1VzZHRQcmljZQkApwMBCgABQAkA/AcEBRNwb29sc0ZhY3RvcnlBZGRyZXNzAghnZXRQcmljZQkAzAgCBRJ1c2RjVXNkdEFkZHJlc3NTdHIFA25pbAUDbmlsAwkAAQIFAUACBlN0cmluZwUBQAkAAgEJAKwCAgkAAwEFAUACGyBjb3VsZG4ndCBiZSBjYXN0IHRvIFN0cmluZwUNdXNkY1VzZHRQcmljZQMJAAACAiw4UTZTRTJBTmVidWZ3OEp1UGpKVlJqWkQ2ZHJEOGloak5qTTh4YUdVU2ZkUgUHJG1hdGNoMAQFcHJpY2UJAQV0b1gxOAIAgKPDRwkAbAYACgAABQx1c2R0RGVjaW1hbHMAAAAABQRET1dOBQVwcmljZQkBCHRocm93RXJyAQIQaW52YWxpZCBhc3NldCBpZAkAzQgCBQNhY2MFBXByaWNlCgACJGwFC2Fzc2V0SWRMaXN0CgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtYXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoJAQh0aHJvd0VycgECEGludmFsaWQgY2hhaW4gaWQBEWNhbGNUcmVhc3VyeVZhbHVlAAQPdHJlYXN1cnlBZGRyZXNzCQESZ2V0VHJlYXN1cnlBZGRyZXNzAAQTcG9vbHNGYWN0b3J5QWRkcmVzcwkBFmdldFBvb2xzRmFjdG9yeUFkZHJlc3MABAlhc3NldHNTdHIJALUJAgkBDGdldEFzc2V0c1N0cgAFA1NFUAQOYXNzZXRzQmFsYW5jZXMJARFnZXRBc3NldHNCYWxhbmNlcwIFD3RyZWFzdXJ5QWRkcmVzcwUJYXNzZXRzU3RyBAxhc3NldHNQcmljZXMJAQ9nZXRBc3NldHNQcmljZXMCBRNwb29sc0ZhY3RvcnlBZGRyZXNzBQlhc3NldHNTdHIKAQZyZWR1Y2UCA2FjYw5uZXh0QXNzZXRJZFN0cgQHYXNzZXRJZAkA2QQBBQ5uZXh0QXNzZXRJZFN0cgQFaW5kZXgJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAzwgCBQlhc3NldHNTdHIFDm5leHRBc3NldElkU3RyCQEHd3JhcEVycgECEGludmFsaWQgYXNzZXQgaWQEB2JhbGFuY2UJAJEDAgUOYXNzZXRzQmFsYW5jZXMFBWluZGV4BAVwcmljZQkAkQMCBQxhc3NldHNQcmljZXMFBWluZGV4BAphc3NldFZhbHVlCQC8AgMFB2JhbGFuY2UFBXByaWNlBQZtdWx0MTgJALcCAgUDYWNjBQphc3NldFZhbHVlBA10cmVhc3VyeVZhbHVlCgACJGwFCWFzc2V0c1N0cgoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJALYCAQAACgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQZyZWR1Y2UCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFExpc3Qgc2l6ZSBleGNlZWRzIDEwCQEFJGYwXzICCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECCQEFJGYwXzECBQUkYWNjMAAAAAEAAgADAAQABQAGAAcACAAJAAoFDXRyZWFzdXJ5VmFsdWUBEmNhbGNSZXdhcmRzQW5kTG9jawINcGF5bWVudEFtb3VudBF1c2VyQWRkcmVzc09wdGlvbgQJYXNzZXRzU3RyCQC1CQIJAQxnZXRBc3NldHNTdHIABQNTRVAEDXd4ZGFvUXVhbnRpdHkICQESZ2V0QXNzZXRJbmZvT3JGYWlsAQkBDGdldExwQXNzZXRJZAAIcXVhbnRpdHkDCQAAAgUNd3hkYW9RdWFudGl0eQUNd3hkYW9RdWFudGl0eQQOYXNzZXRzQmFsYW5jZXMJARFnZXRBc3NldHNCYWxhbmNlcwIJAQ5mYWN0b3J5QWRkcmVzcwAFCWFzc2V0c1N0cgoBA21hcAIDYWNjDm5leHRBc3NldElkU3RyBAdhc3NldElkCQDZBAEFDm5leHRBc3NldElkU3RyBAVpbmRleAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQDPCAIFCWFzc2V0c1N0cgUObmV4dEFzc2V0SWRTdHIJAQd3cmFwRXJyAQIVaW52YWxpZCBhc3NldCBiYWxhbmNlBA1hc3NldERlY2ltYWxzCAkBEmdldEFzc2V0SW5mb09yRmFpbAEFB2Fzc2V0SWQIZGVjaW1hbHMEB2JhbGFuY2UJAQdmcm9tWDE4AgkAkQMCBQ5hc3NldHNCYWxhbmNlcwUFaW5kZXgJAGwGAAoAAAUNYXNzZXREZWNpbWFscwAAAAAFBERPV04EBmFtb3VudAkAawMFB2JhbGFuY2UFDXBheW1lbnRBbW91bnQFDXd4ZGFvUXVhbnRpdHkDCQBmAgUGYW1vdW50AAAEBGxvY2sDCQAAAgURdXNlckFkZHJlc3NPcHRpb24FBHVuaXQFBHVuaXQJAPwHBAUEdGhpcwIMbG9ja0ludGVybmFsCQDMCAIICQEFdmFsdWUBBRF1c2VyQWRkcmVzc09wdGlvbgVieXRlcwkAzAgCBQdhc3NldElkCQDMCAIFBmFtb3VudAkAzAgCBQ1wYXltZW50QW1vdW50BQNuaWwFA25pbAMJAAACBQRsb2NrBQRsb2NrCQCUCgIJAM0IAggFA2FjYwJfMQUHYXNzZXRJZAkAzQgCCAUDYWNjAl8yBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4FA2FjYwoAAiRsBQlhc3NldHNTdHIKAAIkcwkAkAMBBQIkbAoABSRhY2MwCQCUCgIFA25pbAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQNtYXACBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDYJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BCWNhbGNQcmljZQAEE3Bvb2xzRmFjdG9yeUFkZHJlc3MJARZnZXRQb29sc0ZhY3RvcnlBZGRyZXNzAAQNY3VycmVudFBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIJAQ5mYWN0b3J5QWRkcmVzcwAJARBrZXlDdXJyZW50UGVyaW9kAAkBB3dyYXBFcnIBAhZpbnZhbGlkIGN1cnJlbnQgcGVyaW9kBBJzdGFydFRyZWFzdXJ5VmFsdWUJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCCQEOZmFjdG9yeUFkZHJlc3MACQEYa2V5VHJlYXN1cnlWYWx1ZUJ5UGVyaW9kAQUNY3VycmVudFBlcmlvZAkBB3dyYXBFcnIBCQCsAgICImludmFsaWQgdHJlYXN1cnkgdmFsdWUgZm9yIHBlcmlvZCAJAKQDAQUNY3VycmVudFBlcmlvZAQNdHJlYXN1cnlWYWx1ZQkBB2Zyb21YMTgCCQERY2FsY1RyZWFzdXJ5VmFsdWUACQBsBgAKAAAFDHVzZHREZWNpbWFscwAAAAAFBERPV04EEXRyZWFzdXJ5VmFsdWVEaWZmCQBlAgUNdHJlYXN1cnlWYWx1ZQUSc3RhcnRUcmVhc3VyeVZhbHVlBBR0cmVhc3VyeVZhbHVlRGlmZlgxOAkBBXRvWDE4AgURdHJlYXN1cnlWYWx1ZURpZmYJAGwGAAoAAAUMdXNkdERlY2ltYWxzAAAAAAUERE9XTgQKcHdyQXNzZXRJZAkBD2dldFBvd2VyQXNzZXRJZAAEB3B3ckluZm8JARJnZXRBc3NldEluZm9PckZhaWwBBQpwd3JBc3NldElkBAtwd3JQcmljZVgxOAkAkQMCCQEPZ2V0QXNzZXRzUHJpY2VzAgUTcG9vbHNGYWN0b3J5QWRkcmVzcwkAzAgCCQDYBAEFCnB3ckFzc2V0SWQFA25pbAAABAhwd3JQcmljZQMJAL8CAgULcHdyUHJpY2VYMTgJALYCAQAACQEHZnJvbVgxOAIFC3B3clByaWNlWDE4CQBsBgAKAAAFDHVzZHREZWNpbWFscwAAAAAFBERPV04JAQh0aHJvd0VycgECEWludmFsaWQgUFdSIHByaWNlBA90cmVhc3VyeUFkZHJlc3MJARJnZXRUcmVhc3VyeUFkZHJlc3MABAlza2luVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJoIAgkBFHBvd2VyQ29udHJhY3RBZGRyZXNzAAkBDGtleVNraW5Ub3RhbAEFD3RyZWFzdXJ5QWRkcmVzcwAABAl3eGRhb0luZm8JARJnZXRBc3NldEluZm9PckZhaWwBCQEMZ2V0THBBc3NldElkAAQMcHdyUmVtYWluaW5nCQBpAggFCXd4ZGFvSW5mbwhxdWFudGl0eQBkBAlwd3JBbW91bnQJAGQCBQlza2luVG90YWwFDHB3clJlbWFpbmluZwQMcHdyQW1vdW50WDE4CQEFdG9YMTgCBQlwd3JBbW91bnQJAGwGAAoAAAgFB3B3ckluZm8IZGVjaW1hbHMAAAAABQRET1dOBBpmYWN0b3J5QWRkcmVzc1d4QmFsYW5jZVgxOAkAkQMCCQERZ2V0QXNzZXRzQmFsYW5jZXMCCQEOZmFjdG9yeUFkZHJlc3MACQDMCAIJANgEAQUJd3hBc3NldElkBQNuaWwAAAQXZmFjdG9yeUFkZHJlc3NXeEJhbGFuY2UJAQdmcm9tWDE4AgUaZmFjdG9yeUFkZHJlc3NXeEJhbGFuY2VYMTgJAGwGAAoAAAUMdXNkdERlY2ltYWxzAAAAAAUERE9XTgQKd3hQcmljZVgxOAkAkQMCCQEPZ2V0QXNzZXRzUHJpY2VzAgUTcG9vbHNGYWN0b3J5QWRkcmVzcwkAzAgCCQDYBAEFCXd4QXNzZXRJZAUDbmlsAAAEB3d4UHJpY2UDCQC/AgIFCnd4UHJpY2VYMTgJALYCAQAACQEHZnJvbVgxOAIFCnd4UHJpY2VYMTgJAGwGAAoAAAUMdXNkdERlY2ltYWxzAAAAAAUERE9XTgkBCHRocm93RXJyAQIQaW52YWxpZCB3eCBwcmljZQQNd3hkYW9RdWFudGl0eQgFCXd4ZGFvSW5mbwhxdWFudGl0eQQQd3hkYW9RdWFudGl0eVgxOAkBBXRvWDE4AgUNd3hkYW9RdWFudGl0eQkAbAYACgAACAUJd3hkYW9JbmZvCGRlY2ltYWxzAAAAAAUERE9XTgQNd3hEYW9QcmljZVgxOAkAugICCQC3AgIJALcCAgULcHdyUHJpY2VYMTgJALwCAwkAuQICBRpmYWN0b3J5QWRkcmVzc1d4QmFsYW5jZVgxOAkAtgIBAGQFCnd4UHJpY2VYMTgFEHd4ZGFvUXVhbnRpdHlYMTgJALwCAwkAmAMBCQDMCAIFFHRyZWFzdXJ5VmFsdWVEaWZmWDE4CQDMCAIJALYCAQAABQNuaWwJALkCAgkAtgIBAAIFBm11bHQxOAkAuQICCQC2AgEACgUMcHdyQW1vdW50WDE4CQC2AgEAZAQKd3hEYW9QcmljZQkBB2Zyb21YMTgCBQ13eERhb1ByaWNlWDE4CQBsBgAKAAAFDHVzZHREZWNpbWFscwAAAAAFBERPV04EDXJld2FyZHNQcmljZXMJARJjYWxjUmV3YXJkc0FuZExvY2sCCQBsBgAKAAAIBQl3eGRhb0luZm8IZGVjaW1hbHMAAAAABQRET1dOBQR1bml0CQCUCgIJAMwIAgUKd3hEYW9QcmljZQkAzAgCBQ1yZXdhcmRzUHJpY2VzBQNuaWwJAMwIAgkAzAgCAgp3eERhb1ByaWNlCQDMCAIFCnd4RGFvUHJpY2UFA25pbAkAzAgCCQDMCAICCHB3clByaWNlCQDMCAIFCHB3clByaWNlBQNuaWwJAMwIAgkAzAgCAhdmYWN0b3J5QWRkcmVzc1d4QmFsYW5jZQkAzAgCBRdmYWN0b3J5QWRkcmVzc1d4QmFsYW5jZQUDbmlsCQDMCAIJAMwIAgIHd3hQcmljZQkAzAgCBQd3eFByaWNlBQNuaWwJAMwIAgkAzAgCAg13eGRhb1F1YW50aXR5CQDMCAIFDXd4ZGFvUXVhbnRpdHkFA25pbAkAzAgCCQDMCAICEXRyZWFzdXJ5VmFsdWVEaWZmCQDMCAIFEXRyZWFzdXJ5VmFsdWVEaWZmBQNuaWwJAMwIAgkAzAgCAglwd3JBbW91bnQJAMwIAgUJcHdyQW1vdW50BQNuaWwJAMwIAgkAzAgCAglza2luVG90YWwJAMwIAgUJc2tpblRvdGFsBQNuaWwJAMwIAgkAzAgCAgxwd3JSZW1haW5pbmcJAMwIAgUMcHdyUmVtYWluaW5nBQNuaWwFA25pbAYBaQEEc3dhcAIPY2FsbGVyUHVibGljS2V5BGFyZ3MEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQLdXNlckFkZHJlc3MJAKcIAQUPY2FsbGVyUHVibGljS2V5BAdwYXltZW50AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAQkAkQMCCAUBaQhwYXltZW50cwAACQEIdGhyb3dFcnIBAhUxIHBheW1lbnQgaXMgcmVxdWlyZWQEA2VycgkBB3dyYXBFcnIBAhhpbnZhbGlkIHBheW1lbnQgYXNzZXQgaWQEDnBheW1lbnRBc3NldElkAwkAAAIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAggFB3BheW1lbnQHYXNzZXRJZAUDZXJyCQEMZ2V0THBBc3NldElkAAkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAkBCHRocm93RXJyAQUDZXJyBAhwd3JQcmljZQBkBAlwd3JBbW91bnQJAGkCCAUHcGF5bWVudAZhbW91bnQFCHB3clByaWNlBAdyZXdhcmRzCQESY2FsY1Jld2FyZHNBbmRMb2NrAggFB3BheW1lbnQGYW1vdW50BQt1c2VyQWRkcmVzcwMJAAACBQdyZXdhcmRzBQdyZXdhcmRzBBRhZGRpdGlvbmFsTG9ja1JvdW5kcwAABA5mYWN0b3J5QWN0aW9ucwkAzAgCCQD8BwQJAQ5mYWN0b3J5QWRkcmVzcwACIGNvbW1pdEFmdGVyU3RhcnRXaXRoTG9ja1JvdW5kRm9yCQDMCAIJAKUIAQkBFHBvd2VyQ29udHJhY3RBZGRyZXNzAAkAzAgCCQClCAEJARJnZXRUcmVhc3VyeUFkZHJlc3MACQDMCAIJAKUIAQULdXNlckFkZHJlc3MJAMwIAgUUYWRkaXRpb25hbExvY2tSb3VuZHMJAMwIAgkBD2dldFBvd2VyQXNzZXRJZAAJAMwIAgUJcHdyQW1vdW50BQNuaWwFA25pbAUDbmlsCQCUCgIJAMwIAgkBBEJ1cm4CBQ5wYXltZW50QXNzZXRJZAgFB3BheW1lbnQGYW1vdW50BQNuaWwFDmZhY3RvcnlBY3Rpb25zCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDGxvY2tJbnRlcm5hbAQQdXNlckFkZHJlc3NCeXRlcwdhc3NldElkBmFtb3VudA1scEFzc2V0QW1vdW50BAtjaGVja0NhbGxlcgkBCG9ubHlUaGlzAQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEC3VzZXJBZGRyZXNzCQEHQWRkcmVzcwEFEHVzZXJBZGRyZXNzQnl0ZXMEEWxvY2tHbG9iYWxDb3VudGVyCQELdmFsdWVPckVsc2UCCQCaCAIJAQ5mYWN0b3J5QWRkcmVzcwAJARRrZXlMb2NrR2xvYmFsQ291bnRlcgAAAAQMbG9ja0R1cmF0aW9uCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgkBDmZhY3RvcnlBZGRyZXNzAAkBD2tleUxvY2tEdXJhdGlvbgAJAQd3cmFwRXJyAQIVaW52YWxpZCBsb2NrIGR1cmF0aW9uBAlnZXRBc3NldHMJAPwHBAkBDmZhY3RvcnlBZGRyZXNzAAINdHJhbnNmZXJBc3NldAkAzAgCCAkBC2xvY2tBZGRyZXNzAAVieXRlcwkAzAgCBQZhbW91bnQJAMwIAgUHYXNzZXRJZAUDbmlsBQNuaWwDCQAAAgUJZ2V0QXNzZXRzBQlnZXRBc3NldHMEDmZhY3RvcnlBY3Rpb25zCQDMCAIJAPwHBAkBDmZhY3RvcnlBZGRyZXNzAAILc3RyaW5nRW50cnkJAMwIAgkBB2tleUxvY2sCBQt1c2VyQWRkcmVzcwURbG9ja0dsb2JhbENvdW50ZXIJAMwIAgkBCmxvY2tGb3JtYXQFBQZoZWlnaHQJAGQCBQZoZWlnaHQFDGxvY2tEdXJhdGlvbgUHYXNzZXRJZAUGYW1vdW50BQ1scEFzc2V0QW1vdW50BQNuaWwFA25pbAkAzAgCCQD8BwQJAQ5mYWN0b3J5QWRkcmVzcwACDGludGVnZXJFbnRyeQkAzAgCCQEUa2V5TG9ja0dsb2JhbENvdW50ZXIACQDMCAIJAGQCBRFsb2NrR2xvYmFsQ291bnRlcgABBQNuaWwFA25pbAUDbmlsCQCUCgIFA25pbAUOZmFjdG9yeUFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEGdW5sb2NrAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBAt1c2VyQWRkcmVzcwkApwgBBQ9jYWxsZXJQdWJsaWNLZXkKAQRmb2xkAgNhY2MEbmV4dAQHY291bnRlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQC2CQEFBG5leHQJAQd3cmFwRXJyAQIPaW52YWxpZCBjb3VudGVyBA0kdDAxNzYzOTE3ODQ4CQEJbG9ja1BhcnNlAQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIJAQ5mYWN0b3J5QWRkcmVzcwAJAQdrZXlMb2NrAgULdXNlckFkZHJlc3MFB2NvdW50ZXIJAQd3cmFwRXJyAQkArAICAg5pbnZhbGlkIGxvY2s6IAkBB2tleUxvY2sCBQt1c2VyQWRkcmVzcwUHY291bnRlcgQEZnJvbQgFDSR0MDE3NjM5MTc4NDgCXzEEAnRvCAUNJHQwMTc2MzkxNzg0OAJfMgQHYXNzZXRJZAgFDSR0MDE3NjM5MTc4NDgCXzMEBmFtb3VudAgFDSR0MDE3NjM5MTc4NDgCXzQEBnJlc3VsdAMJAGYCBQZoZWlnaHQFAnRvCQDMCAIJAPwHBAkBC2xvY2tBZGRyZXNzAAINdHJhbnNmZXJBc3NldAkAzAgCCAULdXNlckFkZHJlc3MFYnl0ZXMJAMwIAgUGYW1vdW50CQDMCAIFB2Fzc2V0SWQFA25pbAUDbmlsCQDMCAIJAPwHBAkBDmZhY3RvcnlBZGRyZXNzAAILZGVsZXRlRW50cnkJAMwIAgkBB2tleUxvY2sCBQt1c2VyQWRkcmVzcwUHY291bnRlcgUDbmlsBQNuaWwFA25pbAkBCHRocm93RXJyAQIOaW52YWxpZCBoZWlnaHQJAM0IAgUDYWNjBQZyZXN1bHQEBnJlc3VsdAoAAiRsBQRhcmdzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQRmb2xkAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAzMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgkAlAoCBQNuaWwFBnJlc3VsdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQVwcmljZQIPY2FsbGVyUHVibGljS2V5BGFyZ3MEC2NoZWNrQ2FsbGVyCQELb25seUZhY3RvcnkBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgkAlAoCBQNuaWwICQEJY2FsY1ByaWNlAAJfMQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpwcmljZURlYnVnAg9jYWxsZXJQdWJsaWNLZXkEYXJncwQLY2hlY2tDYWxsZXIJAQtvbmx5RmFjdG9yeQEFAWkDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyCQCUCgIFA25pbAgJAQljYWxjUHJpY2UAAl8yCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBEGdldFRyZWFzdXJ5VmFsdWUCD2NhbGxlclB1YmxpY0tleQRhcmdzBAtjaGVja0NhbGxlcgkBC29ubHlGYWN0b3J5AQUBaQMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEDXRyZWFzdXJ5VmFsdWUJAQdmcm9tWDE4AgkBEWNhbGNUcmVhc3VyeVZhbHVlAAkAbAYACgAABQx1c2R0RGVjaW1hbHMAAAAABQRET1dOCQCUCgIFA25pbAUNdHJlYXN1cnlWYWx1ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQADCQAAAgUHY2hhaW5JZAUIY2hhaW5JZFQGCQAAAgUHY2hhaW5JZAUIY2hhaW5JZFKLtctf", "height": 4060412, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 7 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = take(drop(this.bytes, 1), 1) | |
5 | + | ||
6 | + | let b = base58'2R' | |
7 | + | ||
8 | + | let c = base58'2T' | |
9 | + | ||
10 | + | let d = base58'2W' | |
11 | + | ||
12 | + | let e = "__" | |
13 | + | ||
14 | + | let f = "WAVES" | |
15 | + | ||
16 | + | let g = "wxdao_calculator.ride" | |
17 | + | ||
18 | + | let h = 100000000 | |
19 | + | ||
20 | + | let i = toBigInt(1000000000000000000) | |
21 | + | ||
22 | + | let j = 8 | |
23 | + | ||
24 | + | let k = 6 | |
25 | + | ||
26 | + | func l (m,n) = fraction(toBigInt(m), i, toBigInt(n)) | |
27 | + | ||
28 | + | ||
29 | + | func o (p,q) = toInt(fraction(p, toBigInt(q), i)) | |
30 | + | ||
31 | + | ||
32 | + | func r (s) = ((g + ": ") + s) | |
33 | + | ||
34 | + | ||
35 | + | func t (s) = throw(r(s)) | |
36 | + | ||
37 | + | ||
38 | + | func u () = "%s__factoryAddress" | |
39 | + | ||
40 | + | ||
41 | + | func v () = valueOrErrorMessage({ | |
42 | + | let w = getString(this, u()) | |
43 | + | if ($isInstanceOf(w, "String")) | |
44 | + | then { | |
45 | + | let s = w | |
46 | + | addressFromString(s) | |
47 | + | } | |
48 | + | else if ($isInstanceOf(w, "Unit")) | |
49 | + | then unit | |
50 | + | else throw("Match error") | |
51 | + | }, r("invalid factory address")) | |
52 | + | ||
53 | + | ||
54 | + | func x (y,z) = if ((y.caller == z)) | |
55 | + | then true | |
56 | + | else t("permission denied") | |
57 | + | ||
58 | + | ||
59 | + | func A (y) = x(y, this) | |
60 | + | ||
61 | + | ||
62 | + | func B (y) = x(y, v()) | |
63 | + | ||
64 | + | ||
65 | + | let C = if ((a == d)) | |
66 | + | then base58'Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on' | |
67 | + | else if ((a == c)) | |
68 | + | then base58'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc' | |
69 | + | else t("invalid chain id") | |
70 | + | ||
71 | + | func D () = makeString(["%s", "currentPeriod"], e) | |
72 | + | ||
73 | + | ||
74 | + | func E (F) = makeString(["%s%d", "startHeight", toString(F)], e) | |
75 | + | ||
76 | + | ||
77 | + | func G () = makeString(["%s", "periodLength"], e) | |
78 | + | ||
79 | + | ||
80 | + | func H (F) = makeString(["%s%d", "treasuryValue", toString(F)], e) | |
81 | + | ||
82 | + | ||
83 | + | func I () = makeString(["%s", "lockGlobalCounter"], e) | |
84 | + | ||
85 | + | ||
86 | + | func J () = makeString(["%s", "lockDuration"], e) | |
87 | + | ||
88 | + | ||
89 | + | func K (L,M) = makeString(["%s%s%d", "lock", toString(L), toString(M)], e) | |
90 | + | ||
91 | + | ||
92 | + | func N (O) = ("skin_total_" + toString(O)) | |
93 | + | ||
94 | + | ||
95 | + | func P () = "%s__powerConfigAddress" | |
96 | + | ||
97 | + | ||
98 | + | func Q () = valueOrErrorMessage({ | |
99 | + | let w = getString(v(), P()) | |
100 | + | if ($isInstanceOf(w, "String")) | |
101 | + | then { | |
102 | + | let s = w | |
103 | + | addressFromString(s) | |
104 | + | } | |
105 | + | else if ($isInstanceOf(w, "Unit")) | |
106 | + | then unit | |
107 | + | else throw("Match error") | |
108 | + | }, r("invalid power config address")) | |
109 | + | ||
110 | + | ||
111 | + | func R () = "powerAssetId" | |
112 | + | ||
113 | + | ||
114 | + | func S () = fromBase58String(valueOrErrorMessage(getString(Q(), R()), r("invalid power asset id"))) | |
115 | + | ||
116 | + | ||
117 | + | func T () = "%s__powerContractAddress" | |
118 | + | ||
119 | + | ||
120 | + | func U () = valueOrErrorMessage({ | |
121 | + | let w = getString(v(), T()) | |
122 | + | if ($isInstanceOf(w, "String")) | |
123 | + | then { | |
124 | + | let s = w | |
125 | + | addressFromString(s) | |
126 | + | } | |
127 | + | else if ($isInstanceOf(w, "Unit")) | |
128 | + | then unit | |
129 | + | else throw("Match error") | |
130 | + | }, r("invalid power contract address")) | |
131 | + | ||
132 | + | ||
133 | + | func V () = "%s__lockAddress" | |
134 | + | ||
135 | + | ||
136 | + | func W () = valueOrErrorMessage({ | |
137 | + | let w = getString(v(), V()) | |
138 | + | if ($isInstanceOf(w, "String")) | |
139 | + | then { | |
140 | + | let s = w | |
141 | + | addressFromString(s) | |
142 | + | } | |
143 | + | else if ($isInstanceOf(w, "Unit")) | |
144 | + | then unit | |
145 | + | else throw("Match error") | |
146 | + | }, r("invalid lock contract address")) | |
147 | + | ||
148 | + | ||
149 | + | func X () = "%s__poolsFactoryAddress" | |
150 | + | ||
151 | + | ||
152 | + | func Y () = valueOrErrorMessage({ | |
153 | + | let w = getString(v(), X()) | |
154 | + | if ($isInstanceOf(w, "String")) | |
155 | + | then { | |
156 | + | let s = w | |
157 | + | addressFromString(s) | |
158 | + | } | |
159 | + | else if ($isInstanceOf(w, "Unit")) | |
160 | + | then unit | |
161 | + | else throw("Match error") | |
162 | + | }, r("invalid pools factory address")) | |
163 | + | ||
164 | + | ||
165 | + | func Z () = "%s__treasuryAddress" | |
166 | + | ||
167 | + | ||
168 | + | func aa () = valueOrErrorMessage({ | |
169 | + | let w = getString(v(), Z()) | |
170 | + | if ($isInstanceOf(w, "String")) | |
171 | + | then { | |
172 | + | let s = w | |
173 | + | addressFromString(s) | |
174 | + | } | |
175 | + | else if ($isInstanceOf(w, "Unit")) | |
176 | + | then unit | |
177 | + | else throw("Match error") | |
178 | + | }, r("invalid treasury address")) | |
179 | + | ||
180 | + | ||
181 | + | func ab () = "%s__assets" | |
182 | + | ||
183 | + | ||
184 | + | func ac () = valueOrErrorMessage(getString(v(), ab()), r("invalid assets")) | |
185 | + | ||
186 | + | ||
187 | + | func ad () = "%s__lpAssetId" | |
188 | + | ||
189 | + | ||
190 | + | func ae () = fromBase58String(valueOrErrorMessage(getString(v(), ad()), r("invalid lp asset id"))) | |
191 | + | ||
192 | + | ||
193 | + | func af (ag) = valueOrErrorMessage(assetInfo(ag), r("invalid asset info")) | |
194 | + | ||
195 | + | ||
196 | + | func ah (ai,aj,ag,ak,al) = makeString(["%d%d%s%d%d", toString(ai), toString(aj), toBase58String(ag), toString(ak), toString(al)], e) | |
197 | + | ||
198 | + | ||
199 | + | func am (s) = { | |
200 | + | let an = split(s, e) | |
201 | + | $Tuple4(valueOrErrorMessage(parseInt(an[1]), r("error during processing lock start height")), valueOrErrorMessage(parseInt(an[2]), r("error during processing lock end height")), fromBase58String(an[3]), valueOrErrorMessage(parseInt(an[4]), r("error during processing lock amount"))) | |
202 | + | } | |
203 | + | ||
204 | + | ||
205 | + | func ao (ap,aq) = { | |
206 | + | func ar (as,at) = { | |
207 | + | let au = if ((at == f)) | |
208 | + | then l(wavesBalance(ap).available, pow(10, 0, j, 0, 0, DOWN)) | |
209 | + | else { | |
210 | + | let ag = fromBase58String(at) | |
211 | + | let av = af(ag).decimals | |
212 | + | l(assetBalance(ap, ag), pow(10, 0, av, 0, 0, DOWN)) | |
213 | + | } | |
214 | + | (as :+ au) | |
215 | + | } | |
216 | + | ||
217 | + | let aw = aq | |
218 | + | let ax = size(aw) | |
219 | + | let ay = nil | |
220 | + | func az (aA,aB) = if ((aB >= ax)) | |
221 | + | then aA | |
222 | + | else ar(aA, aw[aB]) | |
223 | + | ||
224 | + | func aC (aA,aB) = if ((aB >= ax)) | |
225 | + | then aA | |
226 | + | else throw("List size exceeds 10") | |
227 | + | ||
228 | + | aC(az(az(az(az(az(az(az(az(az(az(ay, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
229 | + | } | |
230 | + | ||
231 | + | ||
232 | + | func aD (aE,aq) = if ((a == d)) | |
233 | + | then { | |
234 | + | let aF = "3PKfrupEydU2nZAghVjZAfvCwMBkzuR1F52" | |
235 | + | let aG = parseBigIntValue({ | |
236 | + | let aH = invoke(aE, "getPrice", [aF], nil) | |
237 | + | if ($isInstanceOf(aH, "String")) | |
238 | + | then aH | |
239 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
240 | + | }) | |
241 | + | let aI = "3PPZWgFNRKHLvM51pwS934C8VZ7d2F4Z58g" | |
242 | + | let aJ = parseBigIntValue({ | |
243 | + | let aH = invoke(aE, "getPrice", [aI], nil) | |
244 | + | if ($isInstanceOf(aH, "String")) | |
245 | + | then aH | |
246 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
247 | + | }) | |
248 | + | let aK = fraction(aG, i, aJ) | |
249 | + | func ar (as,aL) = { | |
250 | + | let aM = { | |
251 | + | let w = aL | |
252 | + | if (("2thsACuHmzDMuNezPM32wg9a3BwUzBWDeSKakgz3cw21" == w)) | |
253 | + | then { | |
254 | + | let aN = "3PDi7Qq8pLQYvtKyTfQuqqPUWyhoYbU957t" | |
255 | + | let aO = parseBigIntValue({ | |
256 | + | let aH = invoke(aE, "getPrice", [aN], nil) | |
257 | + | if ($isInstanceOf(aH, "String")) | |
258 | + | then aH | |
259 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
260 | + | }) | |
261 | + | fraction(aO, aG, i) | |
262 | + | } | |
263 | + | else if (("Atqv59EYzjFGuitKVnMRk6H8FukjoV3ktPorbEys25on" == w)) | |
264 | + | then { | |
265 | + | let aP = "3PFzaH2ghpwANHFgjeva83N1yxzErELx2eh" | |
266 | + | let aQ = parseBigIntValue({ | |
267 | + | let aH = invoke(aE, "getPrice", [aP], nil) | |
268 | + | if ($isInstanceOf(aH, "String")) | |
269 | + | then aH | |
270 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
271 | + | }) | |
272 | + | fraction(aQ, aG, i) | |
273 | + | } | |
274 | + | else if (("34N9YcEETLWn93qYQ64EsP1x89tSruJU44RrEMSXXEPJ" == w)) | |
275 | + | then { | |
276 | + | let aR = "3PKMVZ7kQeaREajYi8Yc25Ro6mcNw5D6QSa" | |
277 | + | let aS = parseBigIntValue({ | |
278 | + | let aH = invoke(aE, "getPrice", [aR], nil) | |
279 | + | if ($isInstanceOf(aH, "String")) | |
280 | + | then aH | |
281 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
282 | + | }) | |
283 | + | fraction(aG, i, aS) | |
284 | + | } | |
285 | + | else if (("6XtHjpXbs9RRJP2Sr9GUyVqzACcby9TkThHXnjVC5CDJ" == w)) | |
286 | + | then { | |
287 | + | let aT = "3P3g3eipfG2NZKKQE8DZXt2E9tRJqii9jcX" | |
288 | + | let aU = parseBigIntValue({ | |
289 | + | let aH = invoke(aE, "getPrice", [aT], nil) | |
290 | + | if ($isInstanceOf(aH, "String")) | |
291 | + | then aH | |
292 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
293 | + | }) | |
294 | + | fraction(aG, i, aU) | |
295 | + | } | |
296 | + | else if (("HZk1mbfuJpmxU1Fs4AX5MWLVYtctsNcg6e2C6VKqK8zk" == w)) | |
297 | + | then { | |
298 | + | let aV = "3P94wvu5gA7VhjPgAB3twaeqdwHCwNK2vsn" | |
299 | + | let aW = parseBigIntValue({ | |
300 | + | let aH = invoke(aE, "getPrice", [aV], nil) | |
301 | + | if ($isInstanceOf(aH, "String")) | |
302 | + | then aH | |
303 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
304 | + | }) | |
305 | + | fraction(aW, aK, i) | |
306 | + | } | |
307 | + | else if (("474jTeYx2r2Va35794tCScAXWJG9hU2HcgxzMowaZUnu" == w)) | |
308 | + | then { | |
309 | + | let aX = "3P3XGTN6s292g9iwYhs3TEqJqHiffQYojuE" | |
310 | + | let aY = parseBigIntValue({ | |
311 | + | let aH = invoke(aE, "getPrice", [aX], nil) | |
312 | + | if ($isInstanceOf(aH, "String")) | |
313 | + | then aH | |
314 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
315 | + | }) | |
316 | + | fraction(aY, aG, i) | |
317 | + | } | |
318 | + | else if (("8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS" == w)) | |
319 | + | then { | |
320 | + | let aZ = "3PCBWDTA6jrFswd7gQgaE3Xk7gLM5RKofvp" | |
321 | + | let ba = parseBigIntValue({ | |
322 | + | let aH = invoke(aE, "getPrice", [aZ], nil) | |
323 | + | if ($isInstanceOf(aH, "String")) | |
324 | + | then aH | |
325 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
326 | + | }) | |
327 | + | fraction(ba, aK, i) | |
328 | + | } | |
329 | + | else t("invalid asset id") | |
330 | + | } | |
331 | + | (as :+ aM) | |
332 | + | } | |
333 | + | ||
334 | + | let aw = aq | |
335 | + | let ax = size(aw) | |
336 | + | let ay = nil | |
337 | + | func az (aA,aB) = if ((aB >= ax)) | |
338 | + | then aA | |
339 | + | else ar(aA, aw[aB]) | |
340 | + | ||
341 | + | func aC (aA,aB) = if ((aB >= ax)) | |
342 | + | then aA | |
343 | + | else throw("List size exceeds 10") | |
344 | + | ||
345 | + | aC(az(az(az(az(az(az(az(az(az(az(ay, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
346 | + | } | |
347 | + | else if ((a == c)) | |
348 | + | then { | |
349 | + | func ar (as,aL) = { | |
350 | + | let aM = { | |
351 | + | let w = aL | |
352 | + | if (("EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc" == w)) | |
353 | + | then { | |
354 | + | let bb = "3MrULQRLc52GWrJF1tMcAm4M78fPe57o9Kt" | |
355 | + | let bc = parseBigIntValue({ | |
356 | + | let aH = invoke(aE, "getPrice", [bb], nil) | |
357 | + | if ($isInstanceOf(aH, "String")) | |
358 | + | then aH | |
359 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
360 | + | }) | |
361 | + | bc | |
362 | + | } | |
363 | + | else if (("A7Ksh7fXyqm1KhKAiK3bAB2aiPSitQQF6v1pyu9SS3FR" == w)) | |
364 | + | then { | |
365 | + | let bd = "3MzKSdTH2jFbypLsoNfrH7QgkzSbx3EYwCA" | |
366 | + | let be = parseBigIntValue({ | |
367 | + | let aH = invoke(aE, "getPrice", [bd], nil) | |
368 | + | if ($isInstanceOf(aH, "String")) | |
369 | + | then aH | |
370 | + | else throw(($getType(aH) + " couldn't be cast to String")) | |
371 | + | }) | |
372 | + | be | |
373 | + | } | |
374 | + | else if (("8Q6SE2ANebufw8JuPjJVRjZD6drD8ihjNjM8xaGUSfdR" == w)) | |
375 | + | then { | |
376 | + | let aM = l(150000000, pow(10, 0, k, 0, 0, DOWN)) | |
377 | + | aM | |
378 | + | } | |
379 | + | else t("invalid asset id") | |
380 | + | } | |
381 | + | (as :+ aM) | |
382 | + | } | |
383 | + | ||
384 | + | let aw = aq | |
385 | + | let ax = size(aw) | |
386 | + | let ay = nil | |
387 | + | func az (aA,aB) = if ((aB >= ax)) | |
388 | + | then aA | |
389 | + | else ar(aA, aw[aB]) | |
390 | + | ||
391 | + | func aC (aA,aB) = if ((aB >= ax)) | |
392 | + | then aA | |
393 | + | else throw("List size exceeds 10") | |
394 | + | ||
395 | + | aC(az(az(az(az(az(az(az(az(az(az(ay, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
396 | + | } | |
397 | + | else t("invalid chain id") | |
398 | + | ||
399 | + | ||
400 | + | func bf () = { | |
401 | + | let O = aa() | |
402 | + | let aE = Y() | |
403 | + | let bg = split(ac(), e) | |
404 | + | let bh = ao(O, bg) | |
405 | + | let bi = aD(aE, bg) | |
406 | + | func bj (as,at) = { | |
407 | + | let ag = fromBase58String(at) | |
408 | + | let bk = valueOrErrorMessage(indexOf(bg, at), r("invalid asset id")) | |
409 | + | let au = bh[bk] | |
410 | + | let aM = bi[bk] | |
411 | + | let bl = fraction(au, aM, i) | |
412 | + | (as + bl) | |
413 | + | } | |
414 | + | ||
415 | + | let bm = { | |
416 | + | let aw = bg | |
417 | + | let ax = size(aw) | |
418 | + | let ay = toBigInt(0) | |
419 | + | func az (aA,aB) = if ((aB >= ax)) | |
420 | + | then aA | |
421 | + | else bj(aA, aw[aB]) | |
422 | + | ||
423 | + | func aC (aA,aB) = if ((aB >= ax)) | |
424 | + | then aA | |
425 | + | else throw("List size exceeds 10") | |
426 | + | ||
427 | + | aC(az(az(az(az(az(az(az(az(az(az(ay, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
428 | + | } | |
429 | + | bm | |
430 | + | } | |
431 | + | ||
432 | + | ||
433 | + | func bn (bo,bp) = { | |
434 | + | let bg = split(ac(), e) | |
435 | + | let bq = af(ae()).quantity | |
436 | + | if ((bq == bq)) | |
437 | + | then { | |
438 | + | let bh = ao(v(), bg) | |
439 | + | func ar (as,at) = { | |
440 | + | let ag = fromBase58String(at) | |
441 | + | let bk = valueOrErrorMessage(indexOf(bg, at), r("invalid asset balance")) | |
442 | + | let av = af(ag).decimals | |
443 | + | let au = o(bh[bk], pow(10, 0, av, 0, 0, DOWN)) | |
444 | + | let ak = fraction(au, bo, bq) | |
445 | + | if ((ak > 0)) | |
446 | + | then { | |
447 | + | let br = if ((bp == unit)) | |
448 | + | then unit | |
449 | + | else invoke(this, "lockInternal", [value(bp).bytes, ag, ak, bo], nil) | |
450 | + | if ((br == br)) | |
451 | + | then $Tuple2((as._1 :+ ag), (as._2 :+ ak)) | |
452 | + | else throw("Strict value is not equal to itself.") | |
453 | + | } | |
454 | + | else as | |
455 | + | } | |
456 | + | ||
457 | + | let aw = bg | |
458 | + | let ax = size(aw) | |
459 | + | let ay = $Tuple2(nil, nil) | |
460 | + | func az (aA,aB) = if ((aB >= ax)) | |
461 | + | then aA | |
462 | + | else ar(aA, aw[aB]) | |
463 | + | ||
464 | + | func aC (aA,aB) = if ((aB >= ax)) | |
465 | + | then aA | |
466 | + | else throw("List size exceeds 6") | |
467 | + | ||
468 | + | aC(az(az(az(az(az(az(ay, 0), 1), 2), 3), 4), 5), 6) | |
469 | + | } | |
470 | + | else throw("Strict value is not equal to itself.") | |
471 | + | } | |
472 | + | ||
473 | + | ||
474 | + | func bs () = { | |
475 | + | let aE = Y() | |
476 | + | let bt = valueOrErrorMessage(getInteger(v(), D()), r("invalid current period")) | |
477 | + | let bu = valueOrErrorMessage(getInteger(v(), H(bt)), r(("invalid treasury value for period " + toString(bt)))) | |
478 | + | let bm = o(bf(), pow(10, 0, k, 0, 0, DOWN)) | |
479 | + | let bv = (bm - bu) | |
480 | + | let bw = l(bv, pow(10, 0, k, 0, 0, DOWN)) | |
481 | + | let bx = S() | |
482 | + | let by = af(bx) | |
483 | + | let bz = aD(aE, [toBase58String(bx)])[0] | |
484 | + | let bA = if ((bz > toBigInt(0))) | |
485 | + | then o(bz, pow(10, 0, k, 0, 0, DOWN)) | |
486 | + | else t("invalid PWR price") | |
487 | + | let O = aa() | |
488 | + | let bB = valueOrElse(getInteger(U(), N(O)), 0) | |
489 | + | let bC = af(ae()) | |
490 | + | let bD = (bC.quantity / 100) | |
491 | + | let bE = (bB + bD) | |
492 | + | let bF = l(bE, pow(10, 0, by.decimals, 0, 0, DOWN)) | |
493 | + | let bG = ao(v(), [toBase58String(C)])[0] | |
494 | + | let bH = o(bG, pow(10, 0, k, 0, 0, DOWN)) | |
495 | + | let bI = aD(aE, [toBase58String(C)])[0] | |
496 | + | let bJ = if ((bI > toBigInt(0))) | |
497 | + | then o(bI, pow(10, 0, k, 0, 0, DOWN)) | |
498 | + | else t("invalid wx price") | |
499 | + | let bq = bC.quantity | |
500 | + | let bK = l(bq, pow(10, 0, bC.decimals, 0, 0, DOWN)) | |
501 | + | let bL = (((bz + fraction((bG * toBigInt(100)), bI, bK)) + fraction(max([bw, toBigInt(0)]), (toBigInt(2) * i), (toBigInt(10) * bF))) / toBigInt(100)) | |
502 | + | let bM = o(bL, pow(10, 0, k, 0, 0, DOWN)) | |
503 | + | let bN = bn(pow(10, 0, bC.decimals, 0, 0, DOWN), unit) | |
504 | + | $Tuple2([bM, bN], [["wxDaoPrice", bM], ["pwrPrice", bA], ["factoryAddressWxBalance", bH], ["wxPrice", bJ], ["wxdaoQuantity", bq], ["treasuryValueDiff", bv], ["pwrAmount", bE], ["skinTotal", bB], ["pwrRemaining", bD]]) | |
505 | + | } | |
506 | + | ||
507 | + | ||
508 | + | @Callable(y) | |
509 | + | func swap (bO,bP) = { | |
510 | + | let bQ = B(y) | |
511 | + | if ((bQ == bQ)) | |
512 | + | then { | |
513 | + | let L = addressFromPublicKey(bO) | |
514 | + | let bR = if ((size(y.payments) == 1)) | |
515 | + | then y.payments[0] | |
516 | + | else t("1 payment is required") | |
517 | + | let bS = r("invalid payment asset id") | |
518 | + | let bT = if ((valueOrErrorMessage(bR.assetId, bS) == ae())) | |
519 | + | then value(bR.assetId) | |
520 | + | else t(bS) | |
521 | + | let bA = 100 | |
522 | + | let bE = (bR.amount / bA) | |
523 | + | let bU = bn(bR.amount, L) | |
524 | + | if ((bU == bU)) | |
525 | + | then { | |
526 | + | let bV = 0 | |
527 | + | let bW = [invoke(v(), "commitAfterStartWithLockRoundFor", [toString(U()), toString(aa()), toString(L), bV, S(), bE], nil)] | |
528 | + | $Tuple2([Burn(bT, bR.amount)], bW) | |
529 | + | } | |
530 | + | else throw("Strict value is not equal to itself.") | |
531 | + | } | |
532 | + | else throw("Strict value is not equal to itself.") | |
533 | + | } | |
534 | + | ||
535 | + | ||
536 | + | ||
537 | + | @Callable(y) | |
538 | + | func lockInternal (bX,ag,ak,al) = { | |
539 | + | let bQ = A(y) | |
540 | + | if ((bQ == bQ)) | |
541 | + | then { | |
542 | + | let L = Address(bX) | |
543 | + | let bY = valueOrElse(getInteger(v(), I()), 0) | |
544 | + | let bZ = valueOrErrorMessage(getInteger(v(), J()), r("invalid lock duration")) | |
545 | + | let ca = invoke(v(), "transferAsset", [W().bytes, ak, ag], nil) | |
546 | + | if ((ca == ca)) | |
547 | + | then { | |
548 | + | let bW = [invoke(v(), "stringEntry", [K(L, bY), ah(height, (height + bZ), ag, ak, al)], nil), invoke(v(), "integerEntry", [I(), (bY + 1)], nil)] | |
549 | + | $Tuple2(nil, bW) | |
550 | + | } | |
551 | + | else throw("Strict value is not equal to itself.") | |
552 | + | } | |
553 | + | else throw("Strict value is not equal to itself.") | |
554 | + | } | |
555 | + | ||
556 | + | ||
557 | + | ||
558 | + | @Callable(y) | |
559 | + | func unlock (bO,bP) = { | |
560 | + | let bQ = B(y) | |
561 | + | if ((bQ == bQ)) | |
562 | + | then { | |
563 | + | let L = addressFromPublicKey(bO) | |
564 | + | func cb (as,cc) = { | |
565 | + | let M = valueOrErrorMessage(parseInt(cc), r("invalid counter")) | |
566 | + | let cd = am(valueOrErrorMessage(getString(v(), K(L, M)), r(("invalid lock: " + K(L, M))))) | |
567 | + | let ai = cd._1 | |
568 | + | let aj = cd._2 | |
569 | + | let ag = cd._3 | |
570 | + | let ak = cd._4 | |
571 | + | let ce = if ((height > aj)) | |
572 | + | then [invoke(W(), "transferAsset", [L.bytes, ak, ag], nil), invoke(v(), "deleteEntry", [K(L, M)], nil)] | |
573 | + | else t("invalid height") | |
574 | + | (as :+ ce) | |
575 | + | } | |
576 | + | ||
577 | + | let ce = { | |
578 | + | let aw = bP | |
579 | + | let ax = size(aw) | |
580 | + | let ay = nil | |
581 | + | func az (aA,aB) = if ((aB >= ax)) | |
582 | + | then aA | |
583 | + | else cb(aA, aw[aB]) | |
584 | + | ||
585 | + | func aC (aA,aB) = if ((aB >= ax)) | |
586 | + | then aA | |
587 | + | else throw("List size exceeds 30") | |
588 | + | ||
589 | + | aC(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(az(ay, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10), 11), 12), 13), 14), 15), 16), 17), 18), 19), 20), 21), 22), 23), 24), 25), 26), 27), 28), 29), 30) | |
590 | + | } | |
591 | + | $Tuple2(nil, ce) | |
592 | + | } | |
593 | + | else throw("Strict value is not equal to itself.") | |
594 | + | } | |
595 | + | ||
596 | + | ||
597 | + | ||
598 | + | @Callable(y) | |
599 | + | func price (bO,bP) = { | |
600 | + | let bQ = B(y) | |
601 | + | if ((bQ == bQ)) | |
602 | + | then $Tuple2(nil, bs()._1) | |
603 | + | else throw("Strict value is not equal to itself.") | |
604 | + | } | |
605 | + | ||
606 | + | ||
607 | + | ||
608 | + | @Callable(y) | |
609 | + | func priceDebug (bO,bP) = { | |
610 | + | let bQ = B(y) | |
611 | + | if ((bQ == bQ)) | |
612 | + | then $Tuple2(nil, bs()._2) | |
613 | + | else throw("Strict value is not equal to itself.") | |
614 | + | } | |
615 | + | ||
616 | + | ||
617 | + | ||
618 | + | @Callable(y) | |
619 | + | func getTreasuryValue (bO,bP) = { | |
620 | + | let bQ = B(y) | |
621 | + | if ((bQ == bQ)) | |
622 | + | then { | |
623 | + | let bm = o(bf(), pow(10, 0, k, 0, 0, DOWN)) | |
624 | + | $Tuple2(nil, bm) | |
625 | + | } | |
626 | + | else throw("Strict value is not equal to itself.") | |
627 | + | } | |
628 | + | ||
629 | + | ||
630 | + | @Verifier(cf) | |
631 | + | func cg () = if ((a == c)) | |
632 | + | then true | |
633 | + | else (a == b) | |
634 | + |
github/deemru/w8io/873ac7e 44.29 ms ◑![]()