tx · FiZiwR4nf2SsigJGc6mSorWH3q81K9k4yw13YqEX1dnT

3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5:  -0.02200000 Waves

2023.11.20 15:39 [3917595] smart account 3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5 > SELF 0.00000000 Waves

{ "type": 13, "id": "FiZiwR4nf2SsigJGc6mSorWH3q81K9k4yw13YqEX1dnT", "fee": 2200000, "feeAssetId": null, "timestamp": 1700483972397, "version": 1, "sender": "3PBLPmkM3ThytNj6QeJyLTX154if8S6Cea5", "senderPublicKey": "4EgWP2ePsBhKdAXQtnLEV8kwUiDaJmz4McAiVAS4CVjo", "proofs": [ "4wZq9nqwdAwi1Ckh18SutqWBM2GCdJKdt6kivNRNS9AdXxdWKeFiwmAnyywuqjxoPbkXmoAkLd3yWQSZHFaz3uKh" ], "script": "base64:BgJ4CAISDAoKCAEBAQEBAQgICBIECgIIARIECgIICBIECgIICBIECgIICBIFCgMICAESAwoBCBIDCgEIEgMKAQgSBQoDCAEBEgMKAQgSBAoCCAESBAoCCAgSAwoBCBIDCgEIEgQKAggIEgQKAggIEgMKAQgSAwoBCBIAOQEQd3JpdGVDb25zdFN0cmluZwIDa2V5BXZhbHVlAwkBASEBCQEJaXNEZWZpbmVkAQkAnQgCBQR0aGlzBQNrZXkJAQtTdHJpbmdFbnRyeQIFA2tleQUFdmFsdWUJAAIBCQCsAgICFWFscmVhZHkgaW5pdGlhbGl6ZWQ6IAUDa2V5AQh3cml0ZUludAIDa2V5BXZhbHVlAwkAZgIAAAUFdmFsdWUJAAIBCQCsAgIJAKwCAgkArAICAhd3cml0aW5nIG5lZ2F0aXZlIHZhbHVlIAkApAMBBQV2YWx1ZQIJIGZvciBrZXkgBQNrZXkJAQxJbnRlZ2VyRW50cnkCBQNrZXkFBXZhbHVlAQhjaGFuZ2VCeQIDa2V5BXZhbHVlCQEId3JpdGVJbnQCBQNrZXkJAGQCCQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAABQV2YWx1ZQEFYXNJbnQBBXZhbHVlBAckbWF0Y2gwBQV2YWx1ZQMJAAECBQckbWF0Y2gwAgNJbnQEA2ludAUHJG1hdGNoMAUDaW50CQACAQIZd3JvbmcgdHlwZSwgZXhwZWN0ZWQ6IEludAEHYXNzZXRJZAEDc3RyAwkAAAIFA3N0cgIFV0FWRVMFBHVuaXQJANkEAQUDc3RyABJjb25maWdBZGRyZXNzU3RvcmUCBmNvbmZpZwANY29uZmlnQWRkcmVzcwkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQR0aGlzBRJjb25maWdBZGRyZXNzU3RvcmUCImNoaWxkcmVuOiBjb25maWcgYWRkcmVzcyBub3QgZm91bmQCFmludmFsaWQgY29uZmlnIGFkZHJlc3MBB2FsbG93ZWQBAm9wCQD8BwQFDWNvbmZpZ0FkZHJlc3MCCW9wQWxsb3dlZAkAzAgCBQJvcAUDbmlsBQNuaWwABkhFSUdIVAUGaGVpZ2h0AApwd3JBc3NldElkCQDZBAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQ1jb25maWdBZGRyZXNzAgxwb3dlckFzc2V0SWQCFnB3ciBhc3NldCBpZCBub3QgZm91bmQACHNsYXNoZXJzCQELdmFsdWVPckVsc2UCCQCdCAIFDWNvbmZpZ0FkZHJlc3MJAKwCAgkApQgBBQR0aGlzAglfc2xhc2hlcnMCAAANbWFpbkFkZHJlc3NlcwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQ1jb25maWdBZGRyZXNzAg5tYWluX2FkZHJlc3NlcwIAAQtwZXJpb2RTdG9yZQEFY2hpbGQJAKwCAgIHcGVyaW9kXwUFY2hpbGQBBnBlcmlvZAEFY2hpbGQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBC3BlcmlvZFN0b3JlAQUFY2hpbGQAAAEKb3duZXJTdG9yZQEFY2hpbGQJAKwCAgIGb3duZXJfBQVjaGlsZAENdHJlYXN1cnlTdG9yZQEFY2hpbGQJAKwCAgIJdHJlYXN1cnlfBQVjaGlsZAENbG9ja1RpbWVTdG9yZQEFY2hpbGQJAKwCAgIJbG9ja1RpbWVfBQVjaGlsZAETcGVyaW9kTG9ja1RpbWVTdG9yZQIFY2hpbGQGcGVyaW9kCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEFBnBlcmlvZAIKX2xvY2tUaW1lXwUFY2hpbGQBEXNraW5SZXF1aXJlZFN0b3JlAQVjaGlsZAkArAICAg5za2luX3JlcXVpcmVkXwUFY2hpbGQBDHNraW5NYXhTdG9yZQEFY2hpbGQJAKwCAgIJc2tpbl9tYXhfBQVjaGlsZAETaW52ZXN0bWVudHNNYXhTdG9yZQEFY2hpbGQJAKwCAgIQaW52ZXN0bWVudHNfbWF4XwUFY2hpbGQBEm1pbkNvbW1pdG1lbnRTdG9yZQEFY2hpbGQJAKwCAgIObWluX2NvbW1pdG1lbnQFBWNoaWxkAQ5za2luVG90YWxTdG9yZQEFY2hpbGQJAKwCAgILc2tpbl90b3RhbF8FBWNoaWxkAA1wd3JUb3RhbFN0b3JlAglwd3JfdG90YWwBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFY2hpbGQJAKwCAgIVaW52ZXN0bWVudHNfcmVxdWlyZWRfBQVjaGlsZAEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQVjaGlsZAkArAICAhJpbnZlc3RtZW50c190b3RhbF8FBWNoaWxkARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBWNoaWxkCQCsAgIJAKwCAgkArAICAgdwZXJpb2RfCQCkAwEJAQZwZXJpb2QBBQVjaGlsZAITX2ludmVzdG1lbnRzX3RvdGFsXwUFY2hpbGQBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFY2hpbGQJAKwCAgISaW52ZXN0bWVudHNfdG9rZW5fBQVjaGlsZAEQY29tbWl0bWVudHNTdG9yZQEFY2hpbGQJAKwCAgIMY29tbWl0bWVudHNfBQVjaGlsZAERY3JlYXRlSGVpZ2h0U3RvcmUBBWNoaWxkCQCsAgICDmNyZWF0ZV9oZWlnaHRfBQVjaGlsZAEQc3RhcnRIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgINc3RhcnRfaGVpZ2h0XwUFY2hpbGQBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBWNoaWxkBnBlcmlvZAkArAICCQCsAgIJAKwCAgIHcGVyaW9kXwkApAMBBQZwZXJpb2QCDl9zdGFydF9oZWlnaHRfBQVjaGlsZAEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgVjaGlsZAZwZXJpb2QJAKwCAgkArAICCQCsAgICB3BlcmlvZF8JAKQDAQUGcGVyaW9kAhRfc3RhcnRfYWZ0ZXJfaGVpZ2h0XwUFY2hpbGQBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQVjaGlsZAkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAkBBnBlcmlvZAEFBWNoaWxkARFjYW5jZWxIZWlnaHRTdG9yZQEFY2hpbGQJAKwCAgIOY2FuY2VsX2hlaWdodF8FBWNoaWxkARBpbnZlc3RtZW50c1Rva2VuAQVjaGlsZAkBB2Fzc2V0SWQBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKIIAQkBFWludmVzdG1lbnRzVG9rZW5TdG9yZQEFBWNoaWxkAh5pbnZlc3RtZW50cyBhc3NldCBpZCBub3QgZm91bmQBDXVzZXJTa2luU3RvcmUCBWNoaWxkBHVzZXIJAKwCAgkArAICCQCsAgICBXNraW5fBQVjaGlsZAIBXwUEdXNlcgEZdXNlclNraW5VbmxvY2tQZXJpb2RTdG9yZQIFY2hpbGQEdXNlcgkArAICCQCsAgIJAKwCAgITc2tpbl91bmxvY2tfcGVyaW9kXwUFY2hpbGQCAV8FBHVzZXIBG3VzZXJTa2luRXhpdGVkSW5QZXJpb2RTdG9yZQMFY2hpbGQEdXNlcgZwZXJpb2QJAKwCAgkArAICCQCsAgIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFBHVzZXICCF9wZXJpb2RfCQCkAwEFBnBlcmlvZAIHX2V4aXRlZAENaW52ZXN0b3JTdG9yZQIFY2hpbGQIaW52ZXN0b3IJAKwCAgkArAICCQCsAgICCWludmVzdG9yXwUFY2hpbGQCAV8FCGludmVzdG9yARljb21taXRBZnRlckFkZHJlc3Nlc1N0b3JlAQVjaGlsZAkArAICAhdjb21taXRfYWZ0ZXJfYWRkcmVzc2VzXwUFY2hpbGQBFWludmVzdEFmdGVyU3RhcnRTdG9yZQEFY2hpbGQJAKwCAgIXY2FuX2ludmVzdF9hZnRlcl9zdGFydF8FBWNoaWxkARBhc3NlcnROb3RTdGFydGVkAQVjaGlsZAMJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAg9hbHJlYWR5IHN0YXJ0ZWQHAQ9hc3NlcnRJc1N0YXJ0ZWQBBWNoaWxkAwkAAAIJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQHCQACAQIPbm90IHlldCBzdGFydGVkBwESYXNzZXJ0Tm90Q2FuY2VsbGVkAQVjaGlsZAMJAQlpc0RlZmluZWQBCQCfCAEJARFjYW5jZWxIZWlnaHRTdG9yZQEFBWNoaWxkCQACAQIQYWxyZWFkeSBjYW5jZWxlZAcBFmFzc2VydE5vdFN0YXJ0ZWRQZXJpb2QBBWNoaWxkAwkAAAIJAQZwZXJpb2QBBQVjaGlsZAAACQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkBCWlzRGVmaW5lZAEJAJ8IAQkBHXN0YXJ0Q3VycmVudFBlcmlvZEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAhZwZXJpb2QgYWxyZWFkeSBzdGFydGVkBwEOdXNlckNvbW1pdG1lbnQCBWNoaWxkBHVzZXIJAJ8IAQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgEPY3VycmVudFVzZXJTa2luAgVjaGlsZAR1c2VyCQELdmFsdWVPckVsc2UCCQEOdXNlckNvbW1pdG1lbnQCBQVjaGlsZAUEdXNlcgAAAQhsb2NrVGltZQIFY2hpbGQGcGVyaW9kCQELdmFsdWVPckVsc2UCCQCfCAEJARNwZXJpb2RMb2NrVGltZVN0b3JlAgUFY2hpbGQFBnBlcmlvZAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQCEW5vIGNoaWxkIGxvY2tUaW1lAQ9jb21wbGV0ZWRQZXJpb2QBBWNoaWxkBAFwCQEGcGVyaW9kAQUFY2hpbGQDCQAAAgUBcAAAAAAEC3BlcmlvZFN0YXJ0CQCfCAEJARZzdGFydFBlcmlvZEhlaWdodFN0b3JlAgUFY2hpbGQFAXADCQEJaXNEZWZpbmVkAQULcGVyaW9kU3RhcnQFAXAJAGUCBQFwAAEBDHVubG9ja0hlaWdodAEFY2hpbGQEAXAJAQ9jb21wbGV0ZWRQZXJpb2QBBQVjaGlsZAQKY2hpbGRTdGFydAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQCFW5vIGNoaWxkIHN0YXJ0IGhlaWdodAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFnN0YXJ0UGVyaW9kSGVpZ2h0U3RvcmUCBQVjaGlsZAUBcAUKY2hpbGRTdGFydAkBCGxvY2tUaW1lAgUFY2hpbGQFAXABCHRyZWFzdXJ5AQVjaGlsZAkBC3ZhbHVlT3JFbHNlAgkAoggBCQENdHJlYXN1cnlTdG9yZQEFBWNoaWxkBQVjaGlsZAEDaW50AQNrZXkJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBBQNrZXkAAAEDc3RyAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAKIIAQUDa2V5AgABDWFkdmlzZVByb2plY3QBBWNoaWxkBAFwCQEGcGVyaW9kAQUFY2hpbGQECXBlcmlvZFN0cgkApAMBBQFwCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAghoZWlnaHQ6IAkApAMBBQZIRUlHSFQCCywgcHJvamVjdDogBQVjaGlsZAIJLCBvd25lcjogCQEDc3RyAQkBCm93bmVyU3RvcmUBBQVjaGlsZAIMLCB0cmVhc3VyeTogCQEIdHJlYXN1cnkBBQVjaGlsZAINLCBsb2NrX3RpbWU6IAkBA2ludAEJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQCESwgc2tpbl9yZXF1aXJlZDogCQEDaW50AQkBEXNraW5SZXF1aXJlZFN0b3JlAQUFY2hpbGQCDCwgc2tpbl9tYXg6IAkBA2ludAEJAQxza2luTWF4U3RvcmUBBQVjaGlsZAISLCBtaW5fY29tbWl0bWVudDogCQEDaW50AQkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkAg4sIHNraW5fdG90YWw6IAkBA2ludAEJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkAhgsIGludmVzdG1lbnRzX3JlcXVpcmVkOiAJAQNpbnQBCQEYaW52ZXN0bWVudHNSZXF1aXJlZFN0b3JlAQUFY2hpbGQCEywgaW52ZXN0bWVudHNfbWF4OiAJAQNpbnQBCQETaW52ZXN0bWVudHNNYXhTdG9yZQEFBWNoaWxkAhUsIGludmVzdG1lbnRzX3RvdGFsOiAJAQNpbnQBCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQCFSwgaW52ZXN0bWVudHNfdG9rZW46IAkBA3N0cgEJARVpbnZlc3RtZW50c1Rva2VuU3RvcmUBBQVjaGlsZAIPLCBjb21taXRtZW50czogCQEDc3RyAQkBEGNvbW1pdG1lbnRzU3RvcmUBBQVjaGlsZAIRLCBjcmVhdGVfaGVpZ2h0OiAJAQNpbnQBCQERY3JlYXRlSGVpZ2h0U3RvcmUBBQVjaGlsZAIQLCBzdGFydF9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQA////////////AQIRLCBjYW5jZWxfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQERY2FuY2VsSGVpZ2h0U3RvcmUBBQVjaGlsZAD///////////8BAgosIHBlcmlvZDogBQlwZXJpb2RTdHICCSwgcGVyaW9kXwUJcGVyaW9kU3RyAhVfc3RhcnRfYWZ0ZXJfaGVpZ2h0OiAJAKQDAQkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEbc3RhcnRQZXJpb2RBZnRlckhlaWdodFN0b3JlAgUFY2hpbGQFAXAA////////////AQIJLCBwZXJpb2RfBQlwZXJpb2RTdHICD19zdGFydF9oZWlnaHQ6IAkApAMBCQELdmFsdWVPckVsc2UCCQCfCAEJAR1zdGFydEN1cnJlbnRQZXJpb2RIZWlnaHRTdG9yZQEFBWNoaWxkAP///////////wECCSwgcGVyaW9kXwUJcGVyaW9kU3RyAgxfbG9ja190aW1lOiAJAKQDAQkBCGxvY2tUaW1lAgUFY2hpbGQFAXACESwgdW5sb2NrX2hlaWdodDogCQCkAwEJAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAIcLCBwZXJpb2RfaW52ZXN0bWVudHNfdG90YWw6IAkBA2ludAEJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAERYWR2aXNlVXNlclByb2plY3QCBWNoaWxkBHVzZXIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCGhlaWdodDogCQCkAwEFBkhFSUdIVAILLCBwcm9qZWN0OiAFBWNoaWxkAgcsIHNraW46CQCkAwEJAQ9jdXJyZW50VXNlclNraW4CBQVjaGlsZAUEdXNlcgIILCBwb3dlcjoJAKQDAQkBC3ZhbHVlT3JFbHNlAgkBDnVzZXJDb21taXRtZW50AgUFY2hpbGQFBHVzZXIAAAIPLCBpbnZlc3RtZW50czogCQEDaW50AQkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAUEdXNlcgEbY29tbWl0QWZ0ZXJTdGFydEZvckludGVybmFsBAFpBWNoaWxkB2FkZHJlc3MUYWRkaXRpb25hbExvY2tSb3VuZHMEAWEJAQdhbGxvd2VkAQITY29tbWl0QWZ0ZXJTdGFydEZvcgMJAAACBQFhBQFhAwkAZgIAAAUUYWRkaXRpb25hbExvY2tSb3VuZHMJAAIBAhxpbnZhbGlkIGFkZGl0aW9uYWxMb2NrUm91bmRzAwkBASEBCQEIY29udGFpbnMCCQELdmFsdWVPckVsc2UCCQCiCAEJARljb21taXRBZnRlckFkZHJlc3Nlc1N0b3JlAQUFY2hpbGQCAAkApQgBCAUBaQZjYWxsZXIJAAIBAiNjb21taXRBZnRlclN0YXJ0Rm9ySW50ZXJuYWwuIGRlbmllZAQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAippbnZhbGlkIHBheW1lbnRzOiBvbmx5ICRQV1IgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAQEY21kcwkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAMJAGYCBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwAABAt1bmxvY2tSb3VuZAkAZAIJAQZwZXJpb2QBBQVjaGlsZAUUYWRkaXRpb25hbExvY2tSb3VuZHMJAMwIAgkBDEludGVnZXJFbnRyeQIJARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFC3VubG9ja1JvdW5kBQRjbWRzBQRjbWRzCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuFAFpAQpwcm9qZWN0Rm9yCgVvd25lcgRza2luB21heFNraW4NbWluQ29tbWl0bWVudAhsb2NrVGltZQtpbnZlc3RtZW50cw5tYXhJbnZlc3RtZW50cxBpbnZlc3RtZW50c1Rva2VuC2NvbW1pdG1lbnRzBWNoaWxkBAFhCQEHYWxsb3dlZAECCnByb2plY3RGb3IDCQAAAgUBYQUBYQMJAQEhAQkBCGNvbnRhaW5zAgUNbWFpbkFkZHJlc3NlcwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQEAXQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQVjaGlsZAIYaW52YWxpZCB0cmVhc3VyeSBhZGRyZXNzAwkAAAIFAXQFAXQEBXRva2VuCQEHYXNzZXRJZAEFEGludmVzdG1lbnRzVG9rZW4DCQAAAgUFdG9rZW4FBXRva2VuAwMJAGYCBQdtYXhTa2luAAAJAGYCBQRza2luBQdtYXhTa2luBwkAAgECD2ludmFsaWQgbWF4U2tpbgMDCQBmAgUObWF4SW52ZXN0bWVudHMAAAkAZgIFC2ludmVzdG1lbnRzBQ5tYXhJbnZlc3RtZW50cwcJAAIBAhZpbnZhbGlkIG1heEludmVzdG1lbnRzCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgkBCm93bmVyU3RvcmUBBQVjaGlsZAUFb3duZXIJAMwIAgkBCHdyaXRlSW50AgkBEWNyZWF0ZUhlaWdodFN0b3JlAQUFY2hpbGQFBkhFSUdIVAkAzAgCCQEId3JpdGVJbnQCCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAUEc2tpbgkAzAgCCQEId3JpdGVJbnQCCQEMc2tpbk1heFN0b3JlAQUFY2hpbGQFB21heFNraW4JAMwIAgkBCHdyaXRlSW50AgkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkBQ1taW5Db21taXRtZW50CQDMCAIJAQh3cml0ZUludAIJAQ1sb2NrVGltZVN0b3JlAQUFY2hpbGQFCGxvY2tUaW1lCQDMCAIJAQh3cml0ZUludAIJARhpbnZlc3RtZW50c1JlcXVpcmVkU3RvcmUBBQVjaGlsZAULaW52ZXN0bWVudHMJAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEVaW52ZXN0bWVudHNUb2tlblN0b3JlAQUFY2hpbGQFEGludmVzdG1lbnRzVG9rZW4JAMwIAgkBEHdyaXRlQ29uc3RTdHJpbmcCCQEQY29tbWl0bWVudHNTdG9yZQEFBWNoaWxkBQtjb21taXRtZW50cwkAzAgCCQEQd3JpdGVDb25zdFN0cmluZwIJAQ10cmVhc3VyeVN0b3JlAQUFY2hpbGQFBWNoaWxkCQDMCAIJAQh3cml0ZUludAIJARNpbnZlc3RtZW50c01heFN0b3JlAQUFY2hpbGQFDm1heEludmVzdG1lbnRzBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENaW5jcmVyYXNlU2tpbgIFY2hpbGQNc2tpbkluY3JlbWVudAQBYQkBB2FsbG93ZWQBAg1pbmNyZXJhc2VTa2luAwkAAAIFAWEFAWEEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQHAwkAAAIFAXMFAXMDCQBnAgAABQ1za2luSW5jcmVtZW50CQACAQIyaW52YWxpZCBhcmd1bWVudDogc2tpbkluY3JlbWVudCBzaG91bGQgYmUgcG9zaXRpdmUEBW93bmVyCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEKb3duZXJTdG9yZQEFBWNoaWxkAwkBAiE9AgkApQgBCAUBaQZjYWxsZXIFBW93bmVyCQACAQIGZGVuaWVkCQDMCAIJAQhjaGFuZ2VCeQIJARFza2luUmVxdWlyZWRTdG9yZQEFBWNoaWxkBQ1za2luSW5jcmVtZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEJY29tbWl0Rm9yAgVjaGlsZAdhZGRyZXNzBAFhCQEHYWxsb3dlZAECCWNvbW1pdEZvcgMJAAACBQFhBQFhBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEAXAJAJEDAggFAWkIcGF5bWVudHMAAAMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQJAAIBAi9pbnZhbGlkIGF0dGFjaGVkIHBheW1lbnQ6ICRwb3dlciB0b2tlbiBleHBlY3RlZAQKY29tbWl0bWVudAgFAXAGYW1vdW50BA1taW5Db21taXRtZW50CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBEm1pbkNvbW1pdG1lbnRTdG9yZQEFBWNoaWxkAhNDaGlsZCBEQU8gbm90IGZvdW5kAwkAZgIFDW1pbkNvbW1pdG1lbnQFCmNvbW1pdG1lbnQJAAIBCQCsAgICE01pbi4gY29tbWl0bWVudCBpcyAJAKQDAQUNbWluQ29tbWl0bWVudAQPc2tpblRvdGFsU3RvcmUxCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAQMbmV3U2tpblRvdGFsCQBkAgkBC3ZhbHVlT3JFbHNlAgkAnwgBBQ9za2luVG90YWxTdG9yZTEAAAUKY29tbWl0bWVudAQHc2tpbk1heAkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEMc2tpbk1heFN0b3JlAQUFY2hpbGQAAAMDCQBmAgUHc2tpbk1heAAACQBmAgUMbmV3U2tpblRvdGFsBQdza2luTWF4BwkAAgEJAKwCAgIcVG90YWwgbWF4LiBza2luIGlzIHJlYWNoZWQ6IAkApAMBBQdza2luTWF4CQDMCAIJAQhjaGFuZ2VCeQIJAQ11c2VyU2tpblN0b3JlAgUFY2hpbGQFB2FkZHJlc3MFCmNvbW1pdG1lbnQJAMwIAgkBDEludGVnZXJFbnRyeQIFD3NraW5Ub3RhbFN0b3JlMQUMbmV3U2tpblRvdGFsCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQ5jb21taXRGb3JNaW5lcgIFY2hpbGQHYWRkcmVzcwQBYQkBB2FsbG93ZWQBAg5jb21taXRGb3JNaW5lcgMJAAACBQFhBQFhAwkBASEBCQEIY29udGFpbnMCBQ1tYWluQWRkcmVzc2VzCQClCAEIBQFpBmNhbGxlcgkAAgECBmRlbmllZAQBcAkAkQMCCAUBaQhwYXltZW50cwAAAwMJAQIhPQIIBQFwB2Fzc2V0SWQFCnB3ckFzc2V0SWQGCQECIT0CCQCQAwEIBQFpCHBheW1lbnRzAAEJAAIBAippbnZhbGlkIHBheW1lbnRzOiBvbmx5ICRQV1IgdG9rZW4gZXhwZWN0ZWQECmNvbW1pdG1lbnQIBQFwBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkBQpjb21taXRtZW50CQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUFCmNvbW1pdG1lbnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARNjb21taXRBZnRlclN0YXJ0Rm9yAgVjaGlsZAdhZGRyZXNzCQEbY29tbWl0QWZ0ZXJTdGFydEZvckludGVybmFsBAUBaQUFY2hpbGQFB2FkZHJlc3MAAAFpASBjb21taXRBZnRlclN0YXJ0V2l0aExvY2tSb3VuZEZvcgMFY2hpbGQHYWRkcmVzcxRhZGRpdGlvbmFsTG9ja1JvdW5kcwkBG2NvbW1pdEFmdGVyU3RhcnRGb3JJbnRlcm5hbAQFAWkFBWNoaWxkBQdhZGRyZXNzBRRhZGRpdGlvbmFsTG9ja1JvdW5kcwFpAQZpbnZlc3QBBWNoaWxkBAFhCQEHYWxsb3dlZAECBmludmVzdAMJAAACBQFhBQFhBAFzCQEWYXNzZXJ0Tm90U3RhcnRlZFBlcmlvZAEFBWNoaWxkAwkAAAIFAXMFAXMEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB21heGltdW0JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBE2ludmVzdG1lbnRzTWF4U3RvcmUBBQVjaGlsZAAACgEFZGF0YXMBAWEJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFAWEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBQFhCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAUBYQUDbmlsAwkAZgIFB21heGltdW0AAAQKdG90YWxTdG9yZQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkBAV0b3RhbAkBC3ZhbHVlT3JFbHNlAgkAnwgBBQp0b3RhbFN0b3JlAAAECmludmVzdG1lbnMJAJcDAQkAzAgCBQZhbW91bnQJAMwIAgkAZQIFB21heGltdW0FBXRvdGFsBQNuaWwDCQBnAgAABQppbnZlc3RtZW5zCQACAQkArAICAiNUb3RhbCBtYXguIGludmVzdG1lbnRzIGlzIHJlYWNoZWQ6IAkApAMBBQdtYXhpbXVtBApjaGFyZ2VCYWNrCQBlAgUGYW1vdW50BQppbnZlc3RtZW5zAwkAZgIFCmNoYXJnZUJhY2sAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFCmNoYXJnZUJhY2sFBXRva2VuCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQppbnZlc3RtZW5zCQEFZGF0YXMBBQZhbW91bnQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEQaW52ZXN0QWZ0ZXJTdGFydAEFY2hpbGQEAWEJAQdhbGxvd2VkAQIQaW52ZXN0QWZ0ZXJTdGFydAMJAAACBQFhBQFhAwkAAAIJAQt2YWx1ZU9yRWxzZQIJAKAIAQkBFWludmVzdEFmdGVyU3RhcnRTdG9yZQEFBWNoaWxkBwcJAAIBAhlkZW5pZWQgKGludmVzdEFmdGVyU3RhcnQpBAFzCQEPYXNzZXJ0SXNTdGFydGVkAQUFY2hpbGQDCQAAAgUBcwUBcwMJAGYCCQEGcGVyaW9kAQUFY2hpbGQAAAkAAgECFmluaXRpYWwgcm91bmQgaXMgZW5kZWQEBXRva2VuCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQV0b2tlbgkAAgECHGludmFsaWQgaW52ZXN0bWVudHMgYXNzZXQgaWQEBmFtb3VudAgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQJAMwIAgkBCGNoYW5nZUJ5AgkBDWludmVzdG9yU3RvcmUCBQVjaGlsZAkApQgBCAUBaQZjYWxsZXIFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEVaW52ZXN0bWVudHNUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEIY2hhbmdlQnkCCQEbaW52ZXN0bWVudHNQZXJpb2RUb3RhbFN0b3JlAQUFY2hpbGQFBmFtb3VudAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBCQEIdHJlYXN1cnkBBQVjaGlsZAUGYW1vdW50CQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFc3RhcnQBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQIFc3RhcnQDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkCQESYXNzZXJ0Tm90Q2FuY2VsbGVkAQUFY2hpbGQHAwkAAAIFAXMFAXMECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEHRvdGFsSW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkAAADCQBmAgkBEUBleHRyTmF0aXZlKDEwNTUpAQkBGGludmVzdG1lbnRzUmVxdWlyZWRTdG9yZQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQACAQIWbm90IGVub3VnaCBpbnZlc3RtZW50cwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEHN0YXJ0SGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQh0cmVhc3VyeQEFBWNoaWxkBRB0b3RhbEludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOaW5pdE5leHRQZXJpb2QDBWNoaWxkE2Jsb2NrQmV0d2VlblBlcmlvZHMIbG9ja1RpbWUEBnBhdXNlZAkBB2FsbG93ZWQBAg5pbml0TmV4dFBlcmlvZAMJAAACBQZwYXVzZWQFBnBhdXNlZAMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkBAiE9AggFAWkGY2FsbGVyBQR0aGlzBwkAAgECBmRlbmllZAMJAGYCAAAFE2Jsb2NrQmV0d2VlblBlcmlvZHMJAAIBAi5ibG9ja0JldHdlZW5QZXJpb2RzIHNob3VsZCBiZSBwb3NpdGl2ZSBvciB6ZXJvAwkAZgIAAQUIbG9ja1RpbWUJAAIBAhtsb2NrVGltZSBzaG91bGQgYmUgcG9zaXRpdmUEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAh5jdXJyZW50IHBlcmlvZCBpcyBzdGlsbCBhY3RpdmUEAXAJAQZwZXJpb2QBBQVjaGlsZAMDCQBmAgUBcAAACQEBIQEJAQlpc0RlZmluZWQBCQEWc3RhcnRQZXJpb2RIZWlnaHRTdG9yZQIFBWNoaWxkBQFwBwkAAgECH25leHQgcGVyaW9kIGFscmVhZHkgaW5pdGlhbGl6ZWQECW5ld1BlcmlvZAkAZAIFAXAAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC3BlcmlvZFN0b3JlAQUFY2hpbGQFCW5ld1BlcmlvZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3N0YXJ0UGVyaW9kQWZ0ZXJIZWlnaHRTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QJAGQCBQ11bmxvY2tIZWlnaHRfBRNibG9ja0JldHdlZW5QZXJpb2RzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQETcGVyaW9kTG9ja1RpbWVTdG9yZQIFBWNoaWxkBQluZXdQZXJpb2QFCGxvY2tUaW1lBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc3RhcnRQZXJpb2QBBWNoaWxkBAZwYXVzZWQJAQdhbGxvd2VkAQILc3RhcnRQZXJpb2QDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMJARZhc3NlcnROb3RTdGFydGVkUGVyaW9kAQUFY2hpbGQDCQAAAgUBcwUBcwQHcGVyaW9kXwkBBnBlcmlvZAEFBWNoaWxkBA9zdGFydEFmdGVyU3RvcmUJARtzdGFydFBlcmlvZEFmdGVySGVpZ2h0U3RvcmUCBQVjaGlsZAUHcGVyaW9kXwQKc3RhcnRBZnRlcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCfCAEFD3N0YXJ0QWZ0ZXJTdG9yZQkArAICAg9rZXkgbm90IGZvdW5kOiAFD3N0YXJ0QWZ0ZXJTdG9yZQMJAGYCBQpzdGFydEFmdGVyBQZIRUlHSFQJAAIBAgl0b28gZWFybHkECXRvdGFsU2tpbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAAABAxza2luUmVxdWlyZWQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnwgBCQERc2tpblJlcXVpcmVkU3RvcmUBBQVjaGlsZAIUY2hpbGQgbm90IHJlZ2lzdGVyZWQDCQBmAgUMc2tpblJlcXVpcmVkBQl0b3RhbFNraW4JAAIBAhtub3QgZW5vdWdoIHNraW4gaW4gdGhlIGdhbWUEEXBlcmlvZEludmVzdG1lbnRzCQELdmFsdWVPckVsc2UCCQCfCAEJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEdc3RhcnRDdXJyZW50UGVyaW9kSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBWNoaWxkBRFwZXJpb2RJbnZlc3RtZW50cwkBEGludmVzdG1lbnRzVG9rZW4BBQVjaGlsZAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBXNsYXNoAgVjaGlsZAZhbW91bnQEBnBhdXNlZAkBB2FsbG93ZWQBAgEvAwkAAAIFBnBhdXNlZAUGcGF1c2VkAwkBASEBCQEIY29udGFpbnMCBQhzbGFzaGVycwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQDCQEBIQEJAQlpc0RlZmluZWQBCQCfCAEJARBzdGFydEhlaWdodFN0b3JlAQUFY2hpbGQJAAIBAgtub3Qgc3RhcnRlZAkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQZhbW91bnQJAMwIAgkBBEJ1cm4CBQpwd3JBc3NldElkBQZhbW91bnQFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQtjb21wbGV0ZUZvcgIFY2hpbGQEdXNlcgMJAQEhAQkBCGNvbnRhaW5zAgUNbWFpbkFkZHJlc3NlcwkApQgBCAUBaQZjYWxsZXIJAAIBAgZkZW5pZWQEDXVubG9ja0hlaWdodF8JAQx1bmxvY2tIZWlnaHQBBQVjaGlsZAMJAGYCBQ11bmxvY2tIZWlnaHRfBQZIRUlHSFQJAAIBAgxzdGlsbCBsb2NrZWQEC2VuZGVkUGVyaW9kCQEPY29tcGxldGVkUGVyaW9kAQUFY2hpbGQEC3VubG9ja1JvdW5kCQELdmFsdWVPckVsc2UCCQCfCAEJARl1c2VyU2tpblVubG9ja1BlcmlvZFN0b3JlAgUFY2hpbGQFBHVzZXIAAAMJAGYCBQt1bmxvY2tSb3VuZAULZW5kZWRQZXJpb2QJAAIBCQCsAgIJAKwCAgISeW91IGNhbiB1bmxvY2sgb24gCQCkAwEFC3VubG9ja1JvdW5kAgYgcm91bmQEBHNraW4JAQ9jdXJyZW50VXNlclNraW4CBQVjaGlsZAUEdXNlcgMJAAACBQRza2luAAAJAAIBAht5b3UgaGFkIG5vIHNraW4gaW4gdGhlIGdhbWUJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFBHNraW4FCnB3ckFzc2V0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDXVzZXJTa2luU3RvcmUCBQVjaGlsZAUEdXNlcgkAzAgCCQEIY2hhbmdlQnkCCQEOc2tpblRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQRza2luCQDMCAIJAQhjaGFuZ2VCeQIFDXB3clRvdGFsU3RvcmUJAQEtAQUEc2tpbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBG3VzZXJTa2luRXhpdGVkSW5QZXJpb2RTdG9yZQMFBWNoaWxkBQR1c2VyBQtlbmRlZFBlcmlvZAUEc2tpbgUDbmlsBQRza2luAWkBBmNhbmNlbAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgZjYW5jZWwDCQAAAgUGcGF1c2VkBQZwYXVzZWQEAXMDCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkBgkBEmFzc2VydE5vdENhbmNlbGxlZAEFBWNoaWxkAwkAAAIFAXMFAXMDCQECIT0CCQClCAEIBQFpBmNhbGxlcgkBEUBleHRyTmF0aXZlKDEwNTgpAQkBCm93bmVyU3RvcmUBBQVjaGlsZAkAAgECFGRlbmllZC4gbm90IGFuIG93bmVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERY2FuY2VsSGVpZ2h0U3RvcmUBBQVjaGlsZAUGSEVJR0hUBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKdW5kb0ludmVzdAEFY2hpbGQEBnBhdXNlZAkBB2FsbG93ZWQBAgp1bmRvSW52ZXN0AwkAAAIFBnBhdXNlZAUGcGF1c2VkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEEWludmVzdG1lbnRzU3RvcmUxCQENaW52ZXN0b3JTdG9yZQIFBWNoaWxkCQClCAEIBQFpBmNhbGxlcgQLaW52ZXN0bWVudHMJAQt2YWx1ZU9yRWxzZQIJAJ8IAQURaW52ZXN0bWVudHNTdG9yZTEAAAMJAAACBQtpbnZlc3RtZW50cwAACQACAQIObm8gaW52ZXN0bWVudHMJAMwIAgkBC0RlbGV0ZUVudHJ5AQURaW52ZXN0bWVudHNTdG9yZTEJAMwIAgkBCGNoYW5nZUJ5AgkBFWludmVzdG1lbnRzVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFC2ludmVzdG1lbnRzCQDMCAIJAQhjaGFuZ2VCeQIJARtpbnZlc3RtZW50c1BlcmlvZFRvdGFsU3RvcmUBBQVjaGlsZAkBAS0BBQtpbnZlc3RtZW50cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2ludmVzdG1lbnRzCQEQaW52ZXN0bWVudHNUb2tlbgEFBWNoaWxkBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdW5kb0NvbW1pdEZvcgIFY2hpbGQHYWRkcmVzcwQGcGF1c2VkCQEHYWxsb3dlZAECDXVuZG9Db21taXRGb3IDCQAAAgUGcGF1c2VkBQZwYXVzZWQDCQEBIQEJAQhjb250YWlucwIFDW1haW5BZGRyZXNzZXMJAKUIAQgFAWkGY2FsbGVyCQACAQIGZGVuaWVkBAFzCQEQYXNzZXJ0Tm90U3RhcnRlZAEFBWNoaWxkAwkAAAIFAXMFAXMEDnVzZXJTa2luU3RvcmUxCQENdXNlclNraW5TdG9yZQIFBWNoaWxkBQdhZGRyZXNzBARza2luCQELdmFsdWVPckVsc2UCCQCfCAEFDnVzZXJTa2luU3RvcmUxAAADCQAAAgUEc2tpbgAACQACAQIHbm8gc2tpbgkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEFDnVzZXJTa2luU3RvcmUxCQDMCAIJAQhjaGFuZ2VCeQIJAQ5za2luVG90YWxTdG9yZQEFBWNoaWxkCQEBLQEFBHNraW4JAMwIAgkBCGNoYW5nZUJ5AgUNcHdyVG90YWxTdG9yZQkBAS0BBQRza2luCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUEc2tpbgUKcHdyQXNzZXRJZAUDbmlsBQRza2luCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBCXVzZXJQb3dlcgIFY2hpbGQEdXNlcgkAlAoCBQNuaWwJAQt2YWx1ZU9yRWxzZQIJAQ51c2VyQ29tbWl0bWVudAIFBWNoaWxkBQR1c2VyAAABaQEKdG90YWxQb3dlcgEFY2hpbGQJAJQKAgUDbmlsCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ8IAQkBDnNraW5Ub3RhbFN0b3JlAQUFY2hpbGQCG3RvdGFsUG93ZXI6IGNoaWxkIG5vdCBmb3VuZAFpAQRpbml0AQRjb25mCQDMCAIJARB3cml0ZUNvbnN0U3RyaW5nAgUSY29uZmlnQWRkcmVzc1N0b3JlBQRjb25mBQNuaWwBaQENcHdyVG9NYW5hZ2VycwADCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgZkZW5pZWQEDWFtYmFzc2Fkb3JEQU8CIzNQNDhqV0dNYkNTNE5hTGg5eEpuRWhhRFluRllwb0FHaEVUBAhtYW5hZ2VycwkAzAgCAiMzUEhXSEJzNlE1ZHFOZHFoWFlaWk5aSDhzdWtMc1dnY24yMgkAzAgCAiMzUDlnSENtNm9aOG9laHp2b0hSZG5BMndINndhQ3RWQWFYSwkAzAgCAiMzUEJBSnROZXRSSjdqN2JhbXliVVd0Ykpnc05nNkRZYnNmaAkAzAgCAiMzUEZybVlUR1RoeDdieUJBY0NxNDZKVE43U2l1Q3RGaTd0ZAkAzAgCAiMzUDZveHg2YmZYTFA2Z2tGYUVoazRLeGEzUEpyZ0NpTjhKZgkAzAgCAiMzUEtlSnl1OXZlaFBrUXQxNVA3M1pFbTNlekdYV3RXdktiZwkAzAgCAiMzUER2NjRyOFlydXZYdmJkTXhhd0syY1BCRTNXYXVkejNKUwkAzAgCAiMzUDRDTGtud2tIc1NUTFVBUkw1REt1N25zZ2tyNzRpRUtBQwkAzAgCAiMzUEp4b1U4a3BMcUpDY1M3aXQ3bUF0YmhyTllpVjFUQ2JDTgkAzAgCAiMzUFB0Z1VEUkh4RHdZaGpaZnlDTDZWblIzclRmazY1OFJVbQkAzAgCAiMzUFBkTTV5Z0pLcEVVdkthOXI5MWNjcHN4R3pjcFRNS1diTgkAzAgCAiMzUERLbkxzVUtrMVltY3haREJXUDlNV1ltRUNIN3o3ZFpONgkAzAgCAiMzUERQSDNBdTJtNXVwczlCeTRSTUFtWkt2eHRKZ2R1am9OQwkAzAgCAiMzUDg5VnE1TkhveXdaQ1RCaDRiRlNjb1NtS2dRRnpmM3ZycwkAzAgCAiMzUDViRFA2RTdpMVpIRldNeGVGbkgzVmJldUhSR3Mxb1prRQkAzAgCAiMzUEtOZzVzY2ljWUtiZ3ZuQWVaNlpGc2pSRGpVZDRjOVRZOAkAzAgCAiMzUDZkV1VrVVIxazIxdEZtVm1iU0g5QXIzYm1aekRibldBdQkAzAgCAiMzUEdvajN5dGpadGRiOWNDTmROVVFnSjFVQ1pOYWhUV3N4YgkAzAgCAiMzUE1DN3ZTR01QdkxIcTNodW52NnlyZXdycTN3ck5BYnVTcQkAzAgCAiMzUE1HdWhwQ0NoVENXYjJZSFF5eDI3dWVIR0tITktoeThLcgkAzAgCAiMzUER1SDdRcnBVZTNOeTU3aU1yN2tNczQzUU5FcG5wbU1ISwkAzAgCAiMzUE5zcGJlczVwSHppM0V1TWRUemhrWWpDem1uNnE1Q2JKcQkAzAgCAiMzUERlYU5qSEpneFJyVmtFRVlXNGZHbU1KaTdac0FoZ0RGaQkAzAgCAiMzUDhWN1lVTXRhMXd4eVVaR0tMZ1d1bm5rWlhwZWFYbW5tSwkAzAgCAiMzUDZnUkZ1UTI5VEptMkRXZHdKcW5MazlBNHVrOWpzWEt4ZwkAzAgCAiMzUFFYa2l5NmJNTHlkQmJiTW93cllpamJCWW15V1Y0S1dxTQkAzAgCAiMzUDd4cUtyb3Y3b3A4N256R1NKaHV6b0RpRlBocWFvY0hvMwkAzAgCAiMzUFBjU0VvazZva3I4WUJqdnI2Tk54SHRkOEZQZGluUzltcgkAzAgCAiMzUE1ZNUY4RVhjRUdWZlFTekx5N01OYlpKMkMxYnVHOTRqNgkAzAgCAiMzUDQ2YTRIZ0pTS0dkUFVyWlNyakNQNzZYWWVzMXpZdkZHWAkAzAgCAiMzUEdIMWNzYXJCQ2Y0Q203dDVRSkZrYktlcmdmYWUyR3llaAkAzAgCAiMzUEdKbkFndXY4UUdLeHFrUTRwckEyYlJzdnMxOThuNHRUVwkAzAgCAiMzUE1vNk1jNHRLZ2g5ckNKdnd4d3FZeUNoM2V4N0tzdGF0SwkAzAgCAiMzUENqMWRkdHM2ZW43VFFXd21RZDFoaUVuUmFBZkU2ekZVZQkAzAgCAiMzUFBZZ2I2ZlVwd3dBRldGamNEY3V0Y0sxUGdMTGdjNnU2aQkAzAgCAiMzUERUN2pDWFdFN3U5Slg2QjE0YW5YS2ZVSnlOV1lwdWE3cwkAzAgCAiMzUFBneG9Ia3lmUnRUWU5YUTRQU0RiNFNMdEYzVzhGNkZvcQkAzAgCAiMzUDdIelo1NmVHeTZWcGIzblZHNlV5b0MyWExGNml4eDd4OAkAzAgCAiMzUDl0TWNEWlk2Rnl0TmZvR3N6YzhXMmN4OFVmejhRMTJMaQkAzAgCAiMzUExIYWNMMVA4Y0tnenlaVHpQeFpSN2tiZzRiUFc2bWVRNgkAzAgCAiMzUExKeTdHNkxOWGFNWHNKQjE1cjNoS0x1N29LZTdvRGprcQkAzAgCAiMzUEN1WERwZFUxRzhnczkzM05vZnM2d0MzaUx6RDR3TkpBTQkAzAgCAiMzUFFOQjVURk1qc3ViVWVNQnV6U1VtU2Z1OFpEaXdmNmtUQgkAzAgCAiMzUDJmeldSeENqZWo0Q1Rwc1ViQ3Z0ZmlLV2U1Wm0xckx0RgkAzAgCAiMzUDVWalFFY0o5RUJVNHZ2WTM5dVlTRW1ZVktVelJ1UlRnTgkAzAgCAiMzUDNpc3NuTDk4b1pBMmd0NndWcWZFaWdLdnJ2Yk1XaVNvagkAzAgCAiMzUExyTktScHNNQ202cXdjVUQxS2Y4bkJWOWNTaGFNY2NjQwkAzAgCAiMzUERmeWdHMWlpOXZSeFNoWlVzVFJ1U0xlQXE3aXdNTFluRAkAzAgCAiMzUEx6eTh4SHEydW1qM1NXdW95UUVaQ2Z4ZHB0b3BkQmgybQkAzAgCAiMzUERBZmNSZ0ZWbnJnc0tUNmdQTkVaUmRRVGFQYWt0RXlpaAkAzAgCAiMzUEtDRUxic0FYcGVRZmZtRlY1R0pLUGVpaDI0RkxvcWlWUwUDbmlsBBB0b3RhbEFtYmFzc2Fkb3JzCQCQAwEFCG1hbmFnZXJzBApwd3JSZXdhcmRzAMCEPQoBBGZvbGQCBGNtZHMKYW1iYXNzYWRvcgkAzAgCCQEIY2hhbmdlQnkCCQENdXNlclNraW5TdG9yZQIFDWFtYmFzc2Fkb3JEQU8FCmFtYmFzc2Fkb3IFCnB3clJld2FyZHMFBGNtZHMJAMwIAgkBCGNoYW5nZUJ5AgkBDnNraW5Ub3RhbFN0b3JlAQUNYW1iYXNzYWRvckRBTwkAaAIFCnB3clJld2FyZHMFEHRvdGFsQW1iYXNzYWRvcnMKAAIkbAUIbWFuYWdlcnMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBBGZvbGQCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECFUxpc3Qgc2l6ZSBleGNlZWRzIDEwMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAIkzaY0=", "chainId": 87, "height": 3917595, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: B4piLtifrViCcX3j2GHUgznojMHa9dmuDfaWYK3NNa7R Next: Bu3wZ1kZKJ7y98jHEzNjgZjJ7PohD4d3ckYSthvvV1QD Diff:
OldNewDifferences
629629 then throw("denied")
630630 else {
631631 let ambassadorDAO = "3P48jWGMbCS4NaLh9xJnEhaDYnFYpoAGhET"
632- let managers = ["3P9b8odgFtoaeQ4YSkPQN3gGvfkMU4KkBQ9", "3PQiat89wahps9xvKThYbxmWfTx2RysE5QX", "3PMbPawcJG6DTC4ZLxTZv8FVDkETzyQUKWH", "3PMSEowAZXHUSrmuta9LcC3N7Bgp9WZ3w5v", "3PHTjKJdwXUr8KaDrHsh4zmTwaJo8Fj8w71", "3PGQSwVP3uq74r8cNNpCXbsiX5wB7G8V8uL", "3PNAnzikTkF1dsKCToxyrgb6kUssowd6Kfe", "3P3XGT36UfSEppLBMHwmVNn79S72cUGWJs1", "3P6niL3wBpY2wBKxCvgF8izpaVHFzXJNKaD", "3P7dCVDRpoKbHHaPoe5ykJan6JYgw2ay1kq", "3P8PiMqFhsC8bxigB71NkLedMby9LCBHQjF", "3PFBUPNEAz4HBnpDkSTyg7K3zgWHEt1p2aM", "3PHpetZLEApTGHpksGK7tfVcYnikD1PVhou", "3PHX7A9JX51p5CDtqZ3RXs7jcJ18HmGysKf", "3PL9dvYZS5aepB4eLhxXdXBDXWbYyWyf3R8", "3PQ7eZp25nb17py8AfRGR7t6mkXwPwWswP9", "3P6jkyY8ibk1coyzfSmUJB3qKkqHu8zUVju", "3PRG9K8RHUJFqnmezQtF4d37FADfvZWPje5", "3PR31X8Gmb6QcVLPDV6fTThcgFPKPv18Gc1", "3P7auKXJGUuGZ9AYQSBjUb6bVYiSUgUtVSC", "3PNpM1AqGyk11s1mV6pYsQAjvqzpeQ8XasM", "3P7LtCtKn3zGTBQqG7ux1GisFSzFg6pctr3", "3PHJPSgs851AkA5viY5N5J8zrM41AGKrDme", "3P5D9vXJG8pVuMJKLjD6BbAdn1C3H5gDRGa", "3P827MVGcdEtPc3aMcKqYs22qMFGC6EwNwQ", "3PGYSQ4YmtE73UoKiqGNVwRSJCQHG9qbdHv", "3P7W4s5dsxwyEpzXg7x2zn8RUWr36gsgj2M", "3P679Sdkiu3Wfepip2Nv1aywnNkSgX3GJ16", "3PHzVKUWhtTcBvKmKYMnubmvRddRQCXBe8N", "3PQzupB4Q2DffBzGMjN9acM4ujdN56LcisA", "3PFvE8vCB6hJFomrSzsaNcQNGijJi4tChEW", "3P3xR54yqScfpRfgxCnVY9FWYqEdY2Mbrqu", "3PJALoTkBUrokDB9aY58fgv7RF5DZtoroho", "3PLh2Xidaj9QDz314MNC6LGqgYUwavH9Bq4", "3PFHwsB1pFASta4VCYZUfSYxKjFho6joX6s", "3PBaHYgC6y6ywD6V2zhDL8eKTQSzHceyMbM", "3P8xSgq8AP8hAdiBRj7oaqhG9WpL5dng7mX", "3P6jEkqVf8FidNWwYNLKmgids41ogYKUXRu", "3PNnd59U1G17u7UwqF8uwEg2x7xmYva5hoz", "3PGWFiGSAXZhu5fcdC2fhaRRdwZSNxMmKZ2", "3PJ2xuaLvoH8WJDhv6Q9SDkXtb3uBYJyNMV", "3PQ8oGi2n5Ma5TByWgbbpis4gq132JqAgLE", "3PGY6W1nJVn3dcA7KJkDdN7VbsBqEg7T3td", "3P74NVpXYdaeLnKrCz3ANAQkxYuX5Wjx3mS", "3P4MdgpZQUxToLSiMpBoRKmHQcHrmBCCRt5", "3PEbrcKJ2g3Soyyk1VmhNpAQYNptmgWSZw8", "3P4MYjx3hxzizZfs12iD9DSR2MrXcWAd2yv", "3PAWVxCEHBgTzyXKwvs8xCYLGU2gN4bBRQ8", "3P6CqNfbQP4enWWLpS8ZFD6rEAjg6XLkhbR", "3PPTxUBbVpWUuC56QW6ZgUKCVnAQbvy7Xqw", "3PNrT3TRCb1UjUv867QJvz29VRuqP11phDd"]
632+ let managers = ["3PHWHBs6Q5dqNdqhXYZZNZH8sukLsWgcn22", "3P9gHCm6oZ8oehzvoHRdnA2wH6waCtVAaXK", "3PBAJtNetRJ7j7bamybUWtbJgsNg6DYbsfh", "3PFrmYTGThx7byBAcCq46JTN7SiuCtFi7td", "3P6oxx6bfXLP6gkFaEhk4Kxa3PJrgCiN8Jf", "3PKeJyu9vehPkQt15P73ZEm3ezGXWtWvKbg", "3PDv64r8YruvXvbdMxawK2cPBE3Waudz3JS", "3P4CLknwkHsSTLUARL5DKu7nsgkr74iEKAC", "3PJxoU8kpLqJCcS7it7mAtbhrNYiV1TCbCN", "3PPtgUDRHxDwYhjZfyCL6VnR3rTfk658RUm", "3PPdM5ygJKpEUvKa9r91ccpsxGzcpTMKWbN", "3PDKnLsUKk1YmcxZDBWP9MWYmECH7z7dZN6", "3PDPH3Au2m5ups9By4RMAmZKvxtJgdujoNC", "3P89Vq5NHoywZCTBh4bFScoSmKgQFzf3vrs", "3P5bDP6E7i1ZHFWMxeFnH3VbeuHRGs1oZkE", "3PKNg5scicYKbgvnAeZ6ZFsjRDjUd4c9TY8", "3P6dWUkUR1k21tFmVmbSH9Ar3bmZzDbnWAu", "3PGoj3ytjZtdb9cCNdNUQgJ1UCZNahTWsxb", "3PMC7vSGMPvLHq3hunv6yrewrq3wrNAbuSq", "3PMGuhpCChTCWb2YHQyx27ueHGKHNKhy8Kr", "3PDuH7QrpUe3Ny57iMr7kMs43QNEpnpmMHK", "3PNspbes5pHzi3EuMdTzhkYjCzmn6q5CbJq", "3PDeaNjHJgxRrVkEEYW4fGmMJi7ZsAhgDFi", "3P8V7YUMta1wxyUZGKLgWunnkZXpeaXmnmK", "3P6gRFuQ29TJm2DWdwJqnLk9A4uk9jsXKxg", "3PQXkiy6bMLydBbbMowrYijbBYmyWV4KWqM", "3P7xqKrov7op87nzGSJhuzoDiFPhqaocHo3", "3PPcSEok6okr8YBjvr6NNxHtd8FPdinS9mr", "3PMY5F8EXcEGVfQSzLy7MNbZJ2C1buG94j6", "3P46a4HgJSKGdPUrZSrjCP76XYes1zYvFGX", "3PGH1csarBCf4Cm7t5QJFkbKergfae2Gyeh", "3PGJnAguv8QGKxqkQ4prA2bRsvs198n4tTW", "3PMo6Mc4tKgh9rCJvwxwqYyCh3ex7KstatK", "3PCj1ddts6en7TQWwmQd1hiEnRaAfE6zFUe", "3PPYgb6fUpwwAFWFjcDcutcK1PgLLgc6u6i", "3PDT7jCXWE7u9JX6B14anXKfUJyNWYpua7s", "3PPgxoHkyfRtTYNXQ4PSDb4SLtF3W8F6Foq", "3P7HzZ56eGy6Vpb3nVG6UyoC2XLF6ixx7x8", "3P9tMcDZY6FytNfoGszc8W2cx8Ufz8Q12Li", "3PLHacL1P8cKgzyZTzPxZR7kbg4bPW6meQ6", "3PLJy7G6LNXaMXsJB15r3hKLu7oKe7oDjkq", "3PCuXDpdU1G8gs933Nofs6wC3iLzD4wNJAM", "3PQNB5TFMjsubUeMBuzSUmSfu8ZDiwf6kTB", "3P2fzWRxCjej4CTpsUbCvtfiKWe5Zm1rLtF", "3P5VjQEcJ9EBU4vvY39uYSEmYVKUzRuRTgN", "3P3issnL98oZA2gt6wVqfEigKvrvbMWiSoj", "3PLrNKRpsMCm6qwcUD1Kf8nBV9cShaMcccC", "3PDfygG1ii9vRxShZUsTRuSLeAq7iwMLYnD", "3PLzy8xHq2umj3SWuoyQEZCfxdptopdBh2m", "3PDAfcRgFVnrgsKT6gPNEZRdQTaPaktEyih", "3PKCELbsAXpeQffmFV5GJKPeih24FLoqiVS"]
633633 let totalAmbassadors = size(managers)
634634 let pwrRewards = 1000000
635635 func fold (cmds,ambassador) = changeBy(userSkinStore(ambassadorDAO, ambassador), pwrRewards) :: cmds
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func writeConstString (key,value) = if (!(isDefined(getString(this, key))))
55 then StringEntry(key, value)
66 else throw(("already initialized: " + key))
77
88
99 func writeInt (key,value) = if ((0 > value))
1010 then throw(((("writing negative value " + toString(value)) + " for key ") + key))
1111 else IntegerEntry(key, value)
1212
1313
1414 func changeBy (key,value) = writeInt(key, (valueOrElse(getInteger(this, key), 0) + value))
1515
1616
1717 func asInt (value) = match value {
1818 case int: Int =>
1919 int
2020 case _ =>
2121 throw("wrong type, expected: Int")
2222 }
2323
2424
2525 func assetId (str) = if ((str == "WAVES"))
2626 then unit
2727 else fromBase58String(str)
2828
2929
3030 let configAddressStore = "config"
3131
3232 let configAddress = valueOrErrorMessage(addressFromString(valueOrErrorMessage(getString(this, configAddressStore), "children: config address not found")), "invalid config address")
3333
3434 func allowed (op) = invoke(configAddress, "opAllowed", [op], nil)
3535
3636
3737 let HEIGHT = height
3838
3939 let pwrAssetId = fromBase58String(valueOrErrorMessage(getString(configAddress, "powerAssetId"), "pwr asset id not found"))
4040
4141 let slashers = valueOrElse(getString(configAddress, (toString(this) + "_slashers")), "")
4242
4343 let mainAddresses = valueOrElse(getString(configAddress, "main_addresses"), "")
4444
4545 func periodStore (child) = ("period_" + child)
4646
4747
4848 func period (child) = valueOrElse(getInteger(periodStore(child)), 0)
4949
5050
5151 func ownerStore (child) = ("owner_" + child)
5252
5353
5454 func treasuryStore (child) = ("treasury_" + child)
5555
5656
5757 func lockTimeStore (child) = ("lockTime_" + child)
5858
5959
6060 func periodLockTimeStore (child,period) = ((("period_" + toString(period)) + "_lockTime_") + child)
6161
6262
6363 func skinRequiredStore (child) = ("skin_required_" + child)
6464
6565
6666 func skinMaxStore (child) = ("skin_max_" + child)
6767
6868
6969 func investmentsMaxStore (child) = ("investments_max_" + child)
7070
7171
7272 func minCommitmentStore (child) = ("min_commitment" + child)
7373
7474
7575 func skinTotalStore (child) = ("skin_total_" + child)
7676
7777
7878 let pwrTotalStore = "pwr_total"
7979
8080 func investmentsRequiredStore (child) = ("investments_required_" + child)
8181
8282
8383 func investmentsTotalStore (child) = ("investments_total_" + child)
8484
8585
8686 func investmentsPeriodTotalStore (child) = ((("period_" + toString(period(child))) + "_investments_total_") + child)
8787
8888
8989 func investmentsTokenStore (child) = ("investments_token_" + child)
9090
9191
9292 func commitmentsStore (child) = ("commitments_" + child)
9393
9494
9595 func createHeightStore (child) = ("create_height_" + child)
9696
9797
9898 func startHeightStore (child) = ("start_height_" + child)
9999
100100
101101 func startPeriodHeightStore (child,period) = ((("period_" + toString(period)) + "_start_height_") + child)
102102
103103
104104 func startPeriodAfterHeightStore (child,period) = ((("period_" + toString(period)) + "_start_after_height_") + child)
105105
106106
107107 func startCurrentPeriodHeightStore (child) = startPeriodHeightStore(child, period(child))
108108
109109
110110 func cancelHeightStore (child) = ("cancel_height_" + child)
111111
112112
113113 func investmentsToken (child) = assetId(valueOrErrorMessage(getString(investmentsTokenStore(child)), "investments asset id not found"))
114114
115115
116116 func userSkinStore (child,user) = ((("skin_" + child) + "_") + user)
117117
118118
119119 func userSkinUnlockPeriodStore (child,user) = ((("skin_unlock_period_" + child) + "_") + user)
120120
121121
122122 func userSkinExitedInPeriodStore (child,user,period) = (((userSkinStore(child, user) + "_period_") + toString(period)) + "_exited")
123123
124124
125125 func investorStore (child,investor) = ((("investor_" + child) + "_") + investor)
126126
127127
128128 func commitAfterAddressesStore (child) = ("commit_after_addresses_" + child)
129129
130130
131131 func investAfterStartStore (child) = ("can_invest_after_start_" + child)
132132
133133
134134 func assertNotStarted (child) = if (isDefined(getInteger(startHeightStore(child))))
135135 then throw("already started")
136136 else false
137137
138138
139139 func assertIsStarted (child) = if ((isDefined(getInteger(startHeightStore(child))) == false))
140140 then throw("not yet started")
141141 else false
142142
143143
144144 func assertNotCancelled (child) = if (isDefined(getInteger(cancelHeightStore(child))))
145145 then throw("already canceled")
146146 else false
147147
148148
149149 func assertNotStartedPeriod (child) = if ((period(child) == 0))
150150 then assertNotStarted(child)
151151 else if (isDefined(getInteger(startCurrentPeriodHeightStore(child))))
152152 then throw("period already started")
153153 else false
154154
155155
156156 func userCommitment (child,user) = getInteger(userSkinStore(child, user))
157157
158158
159159 func currentUserSkin (child,user) = valueOrElse(userCommitment(child, user), 0)
160160
161161
162162 func lockTime (child,period) = valueOrElse(getInteger(periodLockTimeStore(child, period)), valueOrErrorMessage(getInteger(lockTimeStore(child)), "no child lockTime"))
163163
164164
165165 func completedPeriod (child) = {
166166 let p = period(child)
167167 if ((p == 0))
168168 then 0
169169 else {
170170 let periodStart = getInteger(startPeriodHeightStore(child, p))
171171 if (isDefined(periodStart))
172172 then p
173173 else (p - 1)
174174 }
175175 }
176176
177177
178178 func unlockHeight (child) = {
179179 let p = completedPeriod(child)
180180 let childStart = valueOrErrorMessage(getInteger(startHeightStore(child)), "no child start height")
181181 (valueOrElse(getInteger(startPeriodHeightStore(child, p)), childStart) + lockTime(child, p))
182182 }
183183
184184
185185 func treasury (child) = valueOrElse(getString(treasuryStore(child)), child)
186186
187187
188188 func int (key) = toString(valueOrElse(getInteger(key), 0))
189189
190190
191191 func str (key) = valueOrElse(getString(key), "")
192192
193193
194194 func adviseProject (child) = {
195195 let p = period(child)
196196 let periodStr = toString(p)
197197 ((((((((((((((((((((((((((((((((((((((((((((((((((("height: " + toString(HEIGHT)) + ", project: ") + child) + ", owner: ") + str(ownerStore(child))) + ", treasury: ") + treasury(child)) + ", lock_time: ") + int(lockTimeStore(child))) + ", skin_required: ") + int(skinRequiredStore(child))) + ", skin_max: ") + int(skinMaxStore(child))) + ", min_commitment: ") + int(minCommitmentStore(child))) + ", skin_total: ") + int(skinTotalStore(child))) + ", investments_required: ") + int(investmentsRequiredStore(child))) + ", investments_max: ") + int(investmentsMaxStore(child))) + ", investments_total: ") + int(investmentsTotalStore(child))) + ", investments_token: ") + str(investmentsTokenStore(child))) + ", commitments: ") + str(commitmentsStore(child))) + ", create_height: ") + int(createHeightStore(child))) + ", start_height: ") + toString(valueOrElse(getInteger(startHeightStore(child)), -1))) + ", cancel_height: ") + toString(valueOrElse(getInteger(cancelHeightStore(child)), -1))) + ", period: ") + periodStr) + ", period_") + periodStr) + "_start_after_height: ") + toString(valueOrElse(getInteger(startPeriodAfterHeightStore(child, p)), -1))) + ", period_") + periodStr) + "_start_height: ") + toString(valueOrElse(getInteger(startCurrentPeriodHeightStore(child)), -1))) + ", period_") + periodStr) + "_lock_time: ") + toString(lockTime(child, p))) + ", unlock_height: ") + toString(unlockHeight(child))) + ", period_investments_total: ") + int(investmentsPeriodTotalStore(child)))
198198 }
199199
200200
201201 func adviseUserProject (child,user) = ((((((((("height: " + toString(HEIGHT)) + ", project: ") + child) + ", skin:") + toString(currentUserSkin(child, user))) + ", power:") + toString(valueOrElse(userCommitment(child, user), 0))) + ", investments: ") + int(investorStore(child, user)))
202202
203203
204204 func commitAfterStartForInternal (i,child,address,additionalLockRounds) = {
205205 let a = allowed("commitAfterStartFor")
206206 if ((a == a))
207207 then if ((0 > additionalLockRounds))
208208 then throw("invalid additionalLockRounds")
209209 else if (!(contains(valueOrElse(getString(commitAfterAddressesStore(child)), ""), toString(i.caller))))
210210 then throw("commitAfterStartForInternal. denied")
211211 else {
212212 let p = i.payments[0]
213213 if (if ((p.assetId != pwrAssetId))
214214 then true
215215 else (size(i.payments) != 1))
216216 then throw("invalid payments: only $PWR token expected")
217217 else {
218218 let commitment = p.amount
219219 let cmds = [changeBy(userSkinStore(child, address), commitment), changeBy(skinTotalStore(child), commitment), changeBy(pwrTotalStore, commitment)]
220220 if ((additionalLockRounds > 0))
221221 then {
222222 let unlockRound = (period(child) + additionalLockRounds)
223223 IntegerEntry(userSkinUnlockPeriodStore(child, address), unlockRound) :: cmds
224224 }
225225 else cmds
226226 }
227227 }
228228 else throw("Strict value is not equal to itself.")
229229 }
230230
231231
232232 @Callable(i)
233233 func projectFor (owner,skin,maxSkin,minCommitment,lockTime,investments,maxInvestments,investmentsToken,commitments,child) = {
234234 let a = allowed("projectFor")
235235 if ((a == a))
236236 then if (!(contains(mainAddresses, toString(i.caller))))
237237 then throw("denied")
238238 else {
239239 let t = valueOrErrorMessage(addressFromString(child), "invalid treasury address")
240240 if ((t == t))
241241 then {
242242 let token = assetId(investmentsToken)
243243 if ((token == token))
244244 then if (if ((maxSkin > 0))
245245 then (skin > maxSkin)
246246 else false)
247247 then throw("invalid maxSkin")
248248 else if (if ((maxInvestments > 0))
249249 then (investments > maxInvestments)
250250 else false)
251251 then throw("invalid maxInvestments")
252252 else [writeConstString(ownerStore(child), owner), writeInt(createHeightStore(child), HEIGHT), writeInt(skinRequiredStore(child), skin), writeInt(skinMaxStore(child), maxSkin), writeInt(minCommitmentStore(child), minCommitment), writeInt(lockTimeStore(child), lockTime), writeInt(investmentsRequiredStore(child), investments), writeConstString(investmentsTokenStore(child), investmentsToken), writeConstString(commitmentsStore(child), commitments), writeConstString(treasuryStore(child), child), writeInt(investmentsMaxStore(child), maxInvestments)]
253253 else throw("Strict value is not equal to itself.")
254254 }
255255 else throw("Strict value is not equal to itself.")
256256 }
257257 else throw("Strict value is not equal to itself.")
258258 }
259259
260260
261261
262262 @Callable(i)
263263 func increraseSkin (child,skinIncrement) = {
264264 let a = allowed("increraseSkin")
265265 if ((a == a))
266266 then {
267267 let s = if (assertNotStarted(child))
268268 then assertNotCancelled(child)
269269 else false
270270 if ((s == s))
271271 then if ((0 >= skinIncrement))
272272 then throw("invalid argument: skinIncrement should be positive")
273273 else {
274274 let owner = getStringValue(ownerStore(child))
275275 if ((toString(i.caller) != owner))
276276 then throw("denied")
277277 else [changeBy(skinRequiredStore(child), skinIncrement)]
278278 }
279279 else throw("Strict value is not equal to itself.")
280280 }
281281 else throw("Strict value is not equal to itself.")
282282 }
283283
284284
285285
286286 @Callable(i)
287287 func commitFor (child,address) = {
288288 let a = allowed("commitFor")
289289 if ((a == a))
290290 then {
291291 let s = assertNotStartedPeriod(child)
292292 if ((s == s))
293293 then {
294294 let p = i.payments[0]
295295 if ((p.assetId != pwrAssetId))
296296 then throw("invalid attached payment: $power token expected")
297297 else {
298298 let commitment = p.amount
299299 let minCommitment = valueOrErrorMessage(getInteger(minCommitmentStore(child)), "Child DAO not found")
300300 if ((minCommitment > commitment))
301301 then throw(("Min. commitment is " + toString(minCommitment)))
302302 else {
303303 let skinTotalStore1 = skinTotalStore(child)
304304 let newSkinTotal = (valueOrElse(getInteger(skinTotalStore1), 0) + commitment)
305305 let skinMax = valueOrElse(getInteger(skinMaxStore(child)), 0)
306306 if (if ((skinMax > 0))
307307 then (newSkinTotal > skinMax)
308308 else false)
309309 then throw(("Total max. skin is reached: " + toString(skinMax)))
310310 else [changeBy(userSkinStore(child, address), commitment), IntegerEntry(skinTotalStore1, newSkinTotal), changeBy(pwrTotalStore, commitment)]
311311 }
312312 }
313313 }
314314 else throw("Strict value is not equal to itself.")
315315 }
316316 else throw("Strict value is not equal to itself.")
317317 }
318318
319319
320320
321321 @Callable(i)
322322 func commitForMiner (child,address) = {
323323 let a = allowed("commitForMiner")
324324 if ((a == a))
325325 then if (!(contains(mainAddresses, toString(i.caller))))
326326 then throw("denied")
327327 else {
328328 let p = i.payments[0]
329329 if (if ((p.assetId != pwrAssetId))
330330 then true
331331 else (size(i.payments) != 1))
332332 then throw("invalid payments: only $PWR token expected")
333333 else {
334334 let commitment = p.amount
335335 [changeBy(userSkinStore(child, address), commitment), changeBy(skinTotalStore(child), commitment), changeBy(pwrTotalStore, commitment)]
336336 }
337337 }
338338 else throw("Strict value is not equal to itself.")
339339 }
340340
341341
342342
343343 @Callable(i)
344344 func commitAfterStartFor (child,address) = commitAfterStartForInternal(i, child, address, 0)
345345
346346
347347
348348 @Callable(i)
349349 func commitAfterStartWithLockRoundFor (child,address,additionalLockRounds) = commitAfterStartForInternal(i, child, address, additionalLockRounds)
350350
351351
352352
353353 @Callable(i)
354354 func invest (child) = {
355355 let a = allowed("invest")
356356 if ((a == a))
357357 then {
358358 let s = assertNotStartedPeriod(child)
359359 if ((s == s))
360360 then {
361361 let token = investmentsToken(child)
362362 if ((i.payments[0].assetId != token))
363363 then throw("invalid investments asset id")
364364 else {
365365 let amount = i.payments[0].amount
366366 let maximum = valueOrElse(getInteger(investmentsMaxStore(child)), 0)
367367 func datas (a) = [changeBy(investorStore(child, toString(i.caller)), a), changeBy(investmentsTotalStore(child), a), changeBy(investmentsPeriodTotalStore(child), a)]
368368
369369 if ((maximum > 0))
370370 then {
371371 let totalStore = investmentsTotalStore(child)
372372 let total = valueOrElse(getInteger(totalStore), 0)
373373 let investmens = min([amount, (maximum - total)])
374374 if ((0 >= investmens))
375375 then throw(("Total max. investments is reached: " + toString(maximum)))
376376 else {
377377 let chargeBack = (amount - investmens)
378378 if ((chargeBack > 0))
379379 then [ScriptTransfer(i.caller, chargeBack, token), datas(investmens)]
380380 else datas(investmens)
381381 }
382382 }
383383 else datas(amount)
384384 }
385385 }
386386 else throw("Strict value is not equal to itself.")
387387 }
388388 else throw("Strict value is not equal to itself.")
389389 }
390390
391391
392392
393393 @Callable(i)
394394 func investAfterStart (child) = {
395395 let a = allowed("investAfterStart")
396396 if ((a == a))
397397 then if ((valueOrElse(getBoolean(investAfterStartStore(child)), false) == false))
398398 then throw("denied (investAfterStart)")
399399 else {
400400 let s = assertIsStarted(child)
401401 if ((s == s))
402402 then if ((period(child) > 0))
403403 then throw("initial round is ended")
404404 else {
405405 let token = investmentsToken(child)
406406 if ((i.payments[0].assetId != token))
407407 then throw("invalid investments asset id")
408408 else {
409409 let amount = i.payments[0].amount
410410 [changeBy(investorStore(child, toString(i.caller)), amount), changeBy(investmentsTotalStore(child), amount), changeBy(investmentsPeriodTotalStore(child), amount), ScriptTransfer(addressFromStringValue(treasury(child)), amount, investmentsToken(child))]
411411 }
412412 }
413413 else throw("Strict value is not equal to itself.")
414414 }
415415 else throw("Strict value is not equal to itself.")
416416 }
417417
418418
419419
420420 @Callable(i)
421421 func start (child) = {
422422 let paused = allowed("start")
423423 if ((paused == paused))
424424 then {
425425 let s = if (assertNotStarted(child))
426426 then assertNotCancelled(child)
427427 else false
428428 if ((s == s))
429429 then {
430430 let totalSkin = valueOrElse(getInteger(skinTotalStore(child)), 0)
431431 let skinRequired = valueOrErrorMessage(getInteger(skinRequiredStore(child)), "child not registered")
432432 if ((skinRequired > totalSkin))
433433 then throw("not enough skin in the game")
434434 else {
435435 let totalInvestments = valueOrElse(getInteger(investmentsTotalStore(child)), 0)
436436 if ((getIntegerValue(investmentsRequiredStore(child)) > totalInvestments))
437437 then throw("not enough investments")
438438 else [IntegerEntry(startHeightStore(child), HEIGHT), ScriptTransfer(addressFromStringValue(treasury(child)), totalInvestments, investmentsToken(child))]
439439 }
440440 }
441441 else throw("Strict value is not equal to itself.")
442442 }
443443 else throw("Strict value is not equal to itself.")
444444 }
445445
446446
447447
448448 @Callable(i)
449449 func initNextPeriod (child,blockBetweenPeriods,lockTime) = {
450450 let paused = allowed("initNextPeriod")
451451 if ((paused == paused))
452452 then if (if ((toString(i.caller) != getStringValue(ownerStore(child))))
453453 then (i.caller != this)
454454 else false)
455455 then throw("denied")
456456 else if ((0 > blockBetweenPeriods))
457457 then throw("blockBetweenPeriods should be positive or zero")
458458 else if ((1 > lockTime))
459459 then throw("lockTime should be positive")
460460 else {
461461 let unlockHeight_ = unlockHeight(child)
462462 if ((unlockHeight_ > HEIGHT))
463463 then throw("current period is still active")
464464 else {
465465 let p = period(child)
466466 if (if ((p > 0))
467467 then !(isDefined(startPeriodHeightStore(child, p)))
468468 else false)
469469 then throw("next period already initialized")
470470 else {
471471 let newPeriod = (p + 1)
472472 [IntegerEntry(periodStore(child), newPeriod), IntegerEntry(startPeriodAfterHeightStore(child, newPeriod), (unlockHeight_ + blockBetweenPeriods)), IntegerEntry(periodLockTimeStore(child, newPeriod), lockTime)]
473473 }
474474 }
475475 }
476476 else throw("Strict value is not equal to itself.")
477477 }
478478
479479
480480
481481 @Callable(i)
482482 func startPeriod (child) = {
483483 let paused = allowed("startPeriod")
484484 if ((paused == paused))
485485 then {
486486 let s = assertNotStartedPeriod(child)
487487 if ((s == s))
488488 then {
489489 let period_ = period(child)
490490 let startAfterStore = startPeriodAfterHeightStore(child, period_)
491491 let startAfter = valueOrErrorMessage(getInteger(startAfterStore), ("key not found: " + startAfterStore))
492492 if ((startAfter > HEIGHT))
493493 then throw("too early")
494494 else {
495495 let totalSkin = valueOrElse(getInteger(skinTotalStore(child)), 0)
496496 let skinRequired = valueOrErrorMessage(getInteger(skinRequiredStore(child)), "child not registered")
497497 if ((skinRequired > totalSkin))
498498 then throw("not enough skin in the game")
499499 else {
500500 let periodInvestments = valueOrElse(getInteger(investmentsPeriodTotalStore(child)), 0)
501501 [IntegerEntry(startCurrentPeriodHeightStore(child), HEIGHT), ScriptTransfer(addressFromStringValue(child), periodInvestments, investmentsToken(child))]
502502 }
503503 }
504504 }
505505 else throw("Strict value is not equal to itself.")
506506 }
507507 else throw("Strict value is not equal to itself.")
508508 }
509509
510510
511511
512512 @Callable(i)
513513 func slash (child,amount) = {
514514 let paused = allowed("/")
515515 if ((paused == paused))
516516 then if (!(contains(slashers, toString(i.caller))))
517517 then throw("denied")
518518 else if (!(isDefined(getInteger(startHeightStore(child)))))
519519 then throw("not started")
520520 else [changeBy(skinTotalStore(child), -(amount)), Burn(pwrAssetId, amount)]
521521 else throw("Strict value is not equal to itself.")
522522 }
523523
524524
525525
526526 @Callable(i)
527527 func completeFor (child,user) = if (!(contains(mainAddresses, toString(i.caller))))
528528 then throw("denied")
529529 else {
530530 let unlockHeight_ = unlockHeight(child)
531531 if ((unlockHeight_ > HEIGHT))
532532 then throw("still locked")
533533 else {
534534 let endedPeriod = completedPeriod(child)
535535 let unlockRound = valueOrElse(getInteger(userSkinUnlockPeriodStore(child, user)), 0)
536536 if ((unlockRound > endedPeriod))
537537 then throw((("you can unlock on " + toString(unlockRound)) + " round"))
538538 else {
539539 let skin = currentUserSkin(child, user)
540540 if ((skin == 0))
541541 then throw("you had no skin in the game")
542542 else $Tuple2([ScriptTransfer(i.caller, skin, pwrAssetId), DeleteEntry(userSkinStore(child, user)), changeBy(skinTotalStore(child), -(skin)), changeBy(pwrTotalStore, -(skin)), IntegerEntry(userSkinExitedInPeriodStore(child, user, endedPeriod), skin)], skin)
543543 }
544544 }
545545 }
546546
547547
548548
549549 @Callable(i)
550550 func cancel (child) = {
551551 let paused = allowed("cancel")
552552 if ((paused == paused))
553553 then {
554554 let s = if (assertNotStarted(child))
555555 then true
556556 else assertNotCancelled(child)
557557 if ((s == s))
558558 then if ((toString(i.caller) != getStringValue(ownerStore(child))))
559559 then throw("denied. not an owner")
560560 else [IntegerEntry(cancelHeightStore(child), HEIGHT)]
561561 else throw("Strict value is not equal to itself.")
562562 }
563563 else throw("Strict value is not equal to itself.")
564564 }
565565
566566
567567
568568 @Callable(i)
569569 func undoInvest (child) = {
570570 let paused = allowed("undoInvest")
571571 if ((paused == paused))
572572 then {
573573 let s = assertNotStarted(child)
574574 if ((s == s))
575575 then {
576576 let investmentsStore1 = investorStore(child, toString(i.caller))
577577 let investments = valueOrElse(getInteger(investmentsStore1), 0)
578578 if ((investments == 0))
579579 then throw("no investments")
580580 else [DeleteEntry(investmentsStore1), changeBy(investmentsTotalStore(child), -(investments)), changeBy(investmentsPeriodTotalStore(child), -(investments)), ScriptTransfer(i.caller, investments, investmentsToken(child))]
581581 }
582582 else throw("Strict value is not equal to itself.")
583583 }
584584 else throw("Strict value is not equal to itself.")
585585 }
586586
587587
588588
589589 @Callable(i)
590590 func undoCommitFor (child,address) = {
591591 let paused = allowed("undoCommitFor")
592592 if ((paused == paused))
593593 then if (!(contains(mainAddresses, toString(i.caller))))
594594 then throw("denied")
595595 else {
596596 let s = assertNotStarted(child)
597597 if ((s == s))
598598 then {
599599 let userSkinStore1 = userSkinStore(child, address)
600600 let skin = valueOrElse(getInteger(userSkinStore1), 0)
601601 if ((skin == 0))
602602 then throw("no skin")
603603 else $Tuple2([DeleteEntry(userSkinStore1), changeBy(skinTotalStore(child), -(skin)), changeBy(pwrTotalStore, -(skin)), ScriptTransfer(i.caller, skin, pwrAssetId)], skin)
604604 }
605605 else throw("Strict value is not equal to itself.")
606606 }
607607 else throw("Strict value is not equal to itself.")
608608 }
609609
610610
611611
612612 @Callable(i)
613613 func userPower (child,user) = $Tuple2(nil, valueOrElse(userCommitment(child, user), 0))
614614
615615
616616
617617 @Callable(i)
618618 func totalPower (child) = $Tuple2(nil, valueOrErrorMessage(getInteger(skinTotalStore(child)), "totalPower: child not found"))
619619
620620
621621
622622 @Callable(i)
623623 func init (conf) = [writeConstString(configAddressStore, conf)]
624624
625625
626626
627627 @Callable(i)
628628 func pwrToManagers () = if ((i.caller != this))
629629 then throw("denied")
630630 else {
631631 let ambassadorDAO = "3P48jWGMbCS4NaLh9xJnEhaDYnFYpoAGhET"
632- let managers = ["3P9b8odgFtoaeQ4YSkPQN3gGvfkMU4KkBQ9", "3PQiat89wahps9xvKThYbxmWfTx2RysE5QX", "3PMbPawcJG6DTC4ZLxTZv8FVDkETzyQUKWH", "3PMSEowAZXHUSrmuta9LcC3N7Bgp9WZ3w5v", "3PHTjKJdwXUr8KaDrHsh4zmTwaJo8Fj8w71", "3PGQSwVP3uq74r8cNNpCXbsiX5wB7G8V8uL", "3PNAnzikTkF1dsKCToxyrgb6kUssowd6Kfe", "3P3XGT36UfSEppLBMHwmVNn79S72cUGWJs1", "3P6niL3wBpY2wBKxCvgF8izpaVHFzXJNKaD", "3P7dCVDRpoKbHHaPoe5ykJan6JYgw2ay1kq", "3P8PiMqFhsC8bxigB71NkLedMby9LCBHQjF", "3PFBUPNEAz4HBnpDkSTyg7K3zgWHEt1p2aM", "3PHpetZLEApTGHpksGK7tfVcYnikD1PVhou", "3PHX7A9JX51p5CDtqZ3RXs7jcJ18HmGysKf", "3PL9dvYZS5aepB4eLhxXdXBDXWbYyWyf3R8", "3PQ7eZp25nb17py8AfRGR7t6mkXwPwWswP9", "3P6jkyY8ibk1coyzfSmUJB3qKkqHu8zUVju", "3PRG9K8RHUJFqnmezQtF4d37FADfvZWPje5", "3PR31X8Gmb6QcVLPDV6fTThcgFPKPv18Gc1", "3P7auKXJGUuGZ9AYQSBjUb6bVYiSUgUtVSC", "3PNpM1AqGyk11s1mV6pYsQAjvqzpeQ8XasM", "3P7LtCtKn3zGTBQqG7ux1GisFSzFg6pctr3", "3PHJPSgs851AkA5viY5N5J8zrM41AGKrDme", "3P5D9vXJG8pVuMJKLjD6BbAdn1C3H5gDRGa", "3P827MVGcdEtPc3aMcKqYs22qMFGC6EwNwQ", "3PGYSQ4YmtE73UoKiqGNVwRSJCQHG9qbdHv", "3P7W4s5dsxwyEpzXg7x2zn8RUWr36gsgj2M", "3P679Sdkiu3Wfepip2Nv1aywnNkSgX3GJ16", "3PHzVKUWhtTcBvKmKYMnubmvRddRQCXBe8N", "3PQzupB4Q2DffBzGMjN9acM4ujdN56LcisA", "3PFvE8vCB6hJFomrSzsaNcQNGijJi4tChEW", "3P3xR54yqScfpRfgxCnVY9FWYqEdY2Mbrqu", "3PJALoTkBUrokDB9aY58fgv7RF5DZtoroho", "3PLh2Xidaj9QDz314MNC6LGqgYUwavH9Bq4", "3PFHwsB1pFASta4VCYZUfSYxKjFho6joX6s", "3PBaHYgC6y6ywD6V2zhDL8eKTQSzHceyMbM", "3P8xSgq8AP8hAdiBRj7oaqhG9WpL5dng7mX", "3P6jEkqVf8FidNWwYNLKmgids41ogYKUXRu", "3PNnd59U1G17u7UwqF8uwEg2x7xmYva5hoz", "3PGWFiGSAXZhu5fcdC2fhaRRdwZSNxMmKZ2", "3PJ2xuaLvoH8WJDhv6Q9SDkXtb3uBYJyNMV", "3PQ8oGi2n5Ma5TByWgbbpis4gq132JqAgLE", "3PGY6W1nJVn3dcA7KJkDdN7VbsBqEg7T3td", "3P74NVpXYdaeLnKrCz3ANAQkxYuX5Wjx3mS", "3P4MdgpZQUxToLSiMpBoRKmHQcHrmBCCRt5", "3PEbrcKJ2g3Soyyk1VmhNpAQYNptmgWSZw8", "3P4MYjx3hxzizZfs12iD9DSR2MrXcWAd2yv", "3PAWVxCEHBgTzyXKwvs8xCYLGU2gN4bBRQ8", "3P6CqNfbQP4enWWLpS8ZFD6rEAjg6XLkhbR", "3PPTxUBbVpWUuC56QW6ZgUKCVnAQbvy7Xqw", "3PNrT3TRCb1UjUv867QJvz29VRuqP11phDd"]
632+ let managers = ["3PHWHBs6Q5dqNdqhXYZZNZH8sukLsWgcn22", "3P9gHCm6oZ8oehzvoHRdnA2wH6waCtVAaXK", "3PBAJtNetRJ7j7bamybUWtbJgsNg6DYbsfh", "3PFrmYTGThx7byBAcCq46JTN7SiuCtFi7td", "3P6oxx6bfXLP6gkFaEhk4Kxa3PJrgCiN8Jf", "3PKeJyu9vehPkQt15P73ZEm3ezGXWtWvKbg", "3PDv64r8YruvXvbdMxawK2cPBE3Waudz3JS", "3P4CLknwkHsSTLUARL5DKu7nsgkr74iEKAC", "3PJxoU8kpLqJCcS7it7mAtbhrNYiV1TCbCN", "3PPtgUDRHxDwYhjZfyCL6VnR3rTfk658RUm", "3PPdM5ygJKpEUvKa9r91ccpsxGzcpTMKWbN", "3PDKnLsUKk1YmcxZDBWP9MWYmECH7z7dZN6", "3PDPH3Au2m5ups9By4RMAmZKvxtJgdujoNC", "3P89Vq5NHoywZCTBh4bFScoSmKgQFzf3vrs", "3P5bDP6E7i1ZHFWMxeFnH3VbeuHRGs1oZkE", "3PKNg5scicYKbgvnAeZ6ZFsjRDjUd4c9TY8", "3P6dWUkUR1k21tFmVmbSH9Ar3bmZzDbnWAu", "3PGoj3ytjZtdb9cCNdNUQgJ1UCZNahTWsxb", "3PMC7vSGMPvLHq3hunv6yrewrq3wrNAbuSq", "3PMGuhpCChTCWb2YHQyx27ueHGKHNKhy8Kr", "3PDuH7QrpUe3Ny57iMr7kMs43QNEpnpmMHK", "3PNspbes5pHzi3EuMdTzhkYjCzmn6q5CbJq", "3PDeaNjHJgxRrVkEEYW4fGmMJi7ZsAhgDFi", "3P8V7YUMta1wxyUZGKLgWunnkZXpeaXmnmK", "3P6gRFuQ29TJm2DWdwJqnLk9A4uk9jsXKxg", "3PQXkiy6bMLydBbbMowrYijbBYmyWV4KWqM", "3P7xqKrov7op87nzGSJhuzoDiFPhqaocHo3", "3PPcSEok6okr8YBjvr6NNxHtd8FPdinS9mr", "3PMY5F8EXcEGVfQSzLy7MNbZJ2C1buG94j6", "3P46a4HgJSKGdPUrZSrjCP76XYes1zYvFGX", "3PGH1csarBCf4Cm7t5QJFkbKergfae2Gyeh", "3PGJnAguv8QGKxqkQ4prA2bRsvs198n4tTW", "3PMo6Mc4tKgh9rCJvwxwqYyCh3ex7KstatK", "3PCj1ddts6en7TQWwmQd1hiEnRaAfE6zFUe", "3PPYgb6fUpwwAFWFjcDcutcK1PgLLgc6u6i", "3PDT7jCXWE7u9JX6B14anXKfUJyNWYpua7s", "3PPgxoHkyfRtTYNXQ4PSDb4SLtF3W8F6Foq", "3P7HzZ56eGy6Vpb3nVG6UyoC2XLF6ixx7x8", "3P9tMcDZY6FytNfoGszc8W2cx8Ufz8Q12Li", "3PLHacL1P8cKgzyZTzPxZR7kbg4bPW6meQ6", "3PLJy7G6LNXaMXsJB15r3hKLu7oKe7oDjkq", "3PCuXDpdU1G8gs933Nofs6wC3iLzD4wNJAM", "3PQNB5TFMjsubUeMBuzSUmSfu8ZDiwf6kTB", "3P2fzWRxCjej4CTpsUbCvtfiKWe5Zm1rLtF", "3P5VjQEcJ9EBU4vvY39uYSEmYVKUzRuRTgN", "3P3issnL98oZA2gt6wVqfEigKvrvbMWiSoj", "3PLrNKRpsMCm6qwcUD1Kf8nBV9cShaMcccC", "3PDfygG1ii9vRxShZUsTRuSLeAq7iwMLYnD", "3PLzy8xHq2umj3SWuoyQEZCfxdptopdBh2m", "3PDAfcRgFVnrgsKT6gPNEZRdQTaPaktEyih", "3PKCELbsAXpeQffmFV5GJKPeih24FLoqiVS"]
633633 let totalAmbassadors = size(managers)
634634 let pwrRewards = 1000000
635635 func fold (cmds,ambassador) = changeBy(userSkinStore(ambassadorDAO, ambassador), pwrRewards) :: cmds
636636
637637 [changeBy(skinTotalStore(ambassadorDAO), (pwrRewards * totalAmbassadors)), {
638638 let $l = managers
639639 let $s = size($l)
640640 let $acc0 = nil
641641 func $f0_1 ($a,$i) = if (($i >= $s))
642642 then $a
643643 else fold($a, $l[$i])
644644
645645 func $f0_2 ($a,$i) = if (($i >= $s))
646646 then $a
647647 else throw("List size exceeds 100")
648648
649649 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 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), 31), 32), 33), 34), 35), 36), 37), 38), 39), 40), 41), 42), 43), 44), 45), 46), 47), 48), 49), 50), 51), 52), 53), 54), 55), 56), 57), 58), 59), 60), 61), 62), 63), 64), 65), 66), 67), 68), 69), 70), 71), 72), 73), 74), 75), 76), 77), 78), 79), 80), 81), 82), 83), 84), 85), 86), 87), 88), 89), 90), 91), 92), 93), 94), 95), 96), 97), 98), 99), 100)
650650 }]
651651 }
652652
653653

github/deemru/w8io/3ef1775 
153.97 ms