tx · CM784NS6BhEJjeU4fZ8Q4ERGe1vkCE6Sx4XdjqT3Pz2L

3Mx5YY4dJftNEBsc8x2bdoMbJxHkVgvi3VA:  -0.02100000 Waves

2022.07.16 09:34 [2141940] smart account 3Mx5YY4dJftNEBsc8x2bdoMbJxHkVgvi3VA > SELF 0.00000000 Waves

{ "type": 13, "id": "CM784NS6BhEJjeU4fZ8Q4ERGe1vkCE6Sx4XdjqT3Pz2L", "fee": 2100000, "feeAssetId": null, "timestamp": 1657953301295, "version": 2, "chainId": 84, "sender": "3Mx5YY4dJftNEBsc8x2bdoMbJxHkVgvi3VA", "senderPublicKey": "9m1oT327uzEFLbwLdQUnedfUHxKkN8MqFSQuSQCbtkqz", "proofs": [ "5sbmLFvJb1sZLZGJDFKjtkxynDxmQuWRJ7BrEV3gRW6JuYbfECNJs1xFLKAXNX4WrvrEGoNrwQREJTe9p4mgyyjm" ], "script": "base64:BgIsCAISBwoFCAgICAgSBAoCCAgSBgoECAgICBIICgYICAgICAgSBQoDCAgIEgARAA9zdG9yYWdlVmVyaWZpZXIJAQV2YWx1ZQEJAKYIAQIjM04yczVSdGFIUEJlbkNzeDJFQ2NvRlJiWUh4M25vWmhYVzEABGJhbmsCIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAA1hY2NlcHRlZFRva2VuASDopWq8yndC8nBhMjVKT0WDubke5ZlnF8Nx6tkLoQSt6wAGdXNkbklEAiwzS0ZYQkdHTENqQTVaMkR1VzREcTlmRERySGpKSlAxWkVrYW9halN6dUtzQwAUc3RvcmFnZUZlZU11bHRpcGxpZXIAAQEKY2hlY2tFbnRyeQIGcHJlZml4BHV1aWQEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICBQZwcmVmaXgFBHV1aWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgROT05FAQ9jaGVja0VudHJ5RW1haWwCBHV1aWQGZG9tYWluBAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgkArAICBQR1dWlkAgFABQZkb21haW4DCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgROT05FAQljaGVja1VVSUQBBHV1aWQEByRtYXRjaDAJAJ0IAgUEdGhpcwUEdXVpZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWECBE5PTkUBEmNoZWNrSWZXaGl0ZUxpc3RlZAENY2FsbGVyQWRkcmVzcwQHJG1hdGNoMAkAmggCBQR0aGlzCQCsAgICEWFkZHJfV0hJVEVMSVNURURfBQ1jYWxsZXJBZGRyZXNzAwkAAQIFByRtYXRjaDACA0ludAQBYQUHJG1hdGNoMAUBYQAAAQhpc0FkcmVzcwEEYWRkcgMDAwkAAAIJALECAQUEYWRkcgAjCQAAAgkArwICBQRhZGRyAAICAjNQBwYJAAACCQCvAgIFBGFkZHIAAgICM04GCQAAAgkArwICBQRhZGRyAAICAjNNAQxjb3VudFBhcnRpZXMCC2FjY3VtdWxhdG9yBGFkZHIDCQBmAgkAsQIBBQRhZGRyAAAJAGQCBQthY2N1bXVsYXRvcgABCQBkAgULYWNjdW11bGF0b3IAAAEUY2hlY2tJZlBlbmRpbmdUb1NpZ24BA2tleQQHJG1hdGNoMAkAnQgCBQR0aGlzBQNrZXkDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkAAAIFAWECB1BFTkRJTkcGBwcBDmdldFZhbHVlU3RyaW5nAQRqc29uCQCvAgIJALACAgUEanNvbgABCQEFdmFsdWUBCQCzCQIJALACAgUEanNvbgABAgEiAQhnZXRWYWx1ZQIEanNvbgNrZXkECGtleUluZGV4CQEFdmFsdWUBCQCzCQIFBGpzb24JAKwCAgkArAICAgEiBQNrZXkCAiI6BARkYXRhCQCwAgIFBGpzb24JAGQCCQBkAgUIa2V5SW5kZXgJALECAQUDa2V5AAMECWpzb25WYWx1ZQkBDmdldFZhbHVlU3RyaW5nAQUEZGF0YQUJanNvblZhbHVlARJnZXRKc29uQmVmb3JlVmFsdWUCBGpzb24Da2V5BAhrZXlJbmRleAkBBXZhbHVlAQkAswkCBQRqc29uCQCsAgIJAKwCAgIBIgUDa2V5AgIiOgQEZGF0YQkArwICBQRqc29uCQBkAgkAZAIFCGtleUluZGV4CQCxAgEFA2tleQADBQRkYXRhARFnZXRKc29uQWZ0ZXJWYWx1ZQIEanNvbgNrZXkECGtleUluZGV4CQEFdmFsdWUBCQCzCQIFBGpzb24JAKwCAgkArAICAgEiBQNrZXkCAiI6BARkYXRhCQCyAgIFBGpzb24JAGUCCQCxAgEFBGpzb24JAGQCCQBkAgkAZAIJAGQCBQhrZXlJbmRleAkAsQIBBQNrZXkAAwAAAAIFBGRhdGEBCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAYGaW52b2tlARFmaWxlQ2VydGlmaWNhdGlvbgUEaGFzaAV0aXRsZQR1dWlkBGlwZnMMc2lnbmVyUHViS2V5BAJpZAkBBXZhbHVlAQgFBmludm9rZQ10cmFuc2FjdGlvbklkBAplbnRyeUV4aXN0CQEKY2hlY2tFbnRyeQIFBGhhc2gFBHV1aWQECXV1aWRFeGlzdAkBCWNoZWNrVVVJRAEFBHV1aWQEDGNhbGxlcklzRGFwcAkAAAIFBHRoaXMIBQZpbnZva2UGY2FsbGVyBA1jYWxsZXJBZGRyZXNzAwUMY2FsbGVySXNEYXBwCQClCAEJAKcIAQkA2QQBBQxzaWduZXJQdWJLZXkJANgEAQgIBQZpbnZva2UGY2FsbGVyBWJ5dGVzBBZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQESY2hlY2tJZldoaXRlTGlzdGVkAQUNY2FsbGVyQWRkcmVzcwMJAQIhPQIFCmVudHJ5RXhpc3QCBE5PTkUJAAIBAhhUaGlzIGVudHJ5IGFscmVhZHkgZXhpc3QDCQECIT0CBQl1dWlkRXhpc3QCBE5PTkUJAAIBAhdUaGlzIHV1aWQgYWxyZWFkeSBleGlzdAMJAQIhPQIJALECAQUEdXVpZAAkCQACAQIdVXVpZCBzaG91bGQgYmUgMzYgY2hhcmFjdGVycy4DCQECIT0CCQCxAgEFBGhhc2gAQAkAAgECHUhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMuAwkAZgIJALECAQUFdGl0bGUAZAkAAgECJlRpdGxlIGlzIHRvbyBsb25nLCAxMDAgY2hhcmFjdGVycyBtYXguAwMDCQEIY29udGFpbnMCBQRoYXNoAgEiBgkBCGNvbnRhaW5zAgUFdGl0bGUCASIGCQEIY29udGFpbnMCBQRpcGZzAgEiCQACAQIMTm8gIiBhbGxvd2VkBARkYXRhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJeyJoYXNoIjoiBQRoYXNoAg4iLCJ0aW1lc3RhbXAiOgkApAMBCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAIKLCJ0aXRsZSI6IgUFdGl0bGUCCiIsImlwZnMiOiIFBGlwZnMCAiJ9AwkAZgIFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAQKY3JlZGl0Q29zdAMJAQIhPQIJALECAQUEaXBmcwAACQBkAgABBRRzdG9yYWdlRmVlTXVsdGlwbGllcgABAwkAZgIAAAkAZQIFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0FCmNyZWRpdENvc3QJAAIBAhFOb3QgZW5vdWdoIGNyZWRpdAkAzAgCCQELU3RyaW5nRW50cnkCBQR1dWlkCQDYBAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEaGFzaAUEdXVpZAkA2AQBBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBXRpdGxlBQR1dWlkCQDYBAEFAmlkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEWFkZHJfV0hJVEVMSVNURURfBQ1jYWxsZXJBZGRyZXNzCQBlAgUWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQUKY3JlZGl0Q29zdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwkA2AQBBQJpZAIBXwUNY2FsbGVyQWRkcmVzcwUEZGF0YQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyZXNzAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAQEhAQUMY2FsbGVySXNEYXBwBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQZpbnZva2UIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQEDnBheW1lbnRBc3NldElkAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAiBXYXZlcyBpcyBub3QgYWNjZXB0ZWQgYXMgcGF5bWVudAQMY3VycmVudFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9zdG9yYWdlVmVyaWZpZXIJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEJAQV2YWx1ZQEFDnBheW1lbnRBc3NldElkBAdmZWVDb3N0AwkBAiE9AgkAsQIBBQRpcGZzAAAJAGQCBQxjdXJyZW50UHJpY2UJAGgCBRRzdG9yYWdlRmVlTXVsdGlwbGllcgUMY3VycmVudFByaWNlBQxjdXJyZW50UHJpY2UDCQECIT0CBQ1hY2NlcHRlZFRva2VuBQ5wYXltZW50QXNzZXRJZAkAAgECKFRoaXMgdG9rZW4gaXMgbm90IGFjY2VwdGVkIGF0IHRoZSBtb21lbnQDAwkBAiE9AgUGYW1vdW50BQdmZWVDb3N0CQBnAgAABRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtBwkAAgECElRoZSBwcmljZSBpcyB3cm9uZwkAzAgCCQELU3RyaW5nRW50cnkCBQR1dWlkCQDYBAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEaGFzaAUEdXVpZAkA2AQBBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBXRpdGxlBQR1dWlkCQDYBAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICCGRhdGFfZmNfCQDYBAEFAmlkAgFfBQ1jYWxsZXJBZGRyZXNzBQRkYXRhCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEFBGJhbmsFB2ZlZUNvc3QIBQdwYXltZW50B2Fzc2V0SWQFA25pbAkAAgECHllvdSBhcmUgbm90IGFsbG93ZWQgdG8gZG8gdGhhdAZpbnZva2UBE3Jldm9rZUNlcnRpZmljYXRpb24CD2NlcnRpZmljYXRpb25JZAxzaWduZXJQdWJLZXkEAmlkCQEFdmFsdWUBCAUGaW52b2tlDXRyYW5zYWN0aW9uSWQEDGNhbGxlcklzRGFwcAkAAAIFBHRoaXMIBQZpbnZva2UGY2FsbGVyBA1jYWxsZXJBZGRyZXNzAwUMY2FsbGVySXNEYXBwCQClCAEJAKcIAQkA2QQBBQxzaWduZXJQdWJLZXkJANgEAQgIBQZpbnZva2UGY2FsbGVyBWJ5dGVzBAplbnRyeUV4aXN0BAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgICCGRhdGFfZmNfBQ9jZXJ0aWZpY2F0aW9uSWQCAV8FDWNhbGxlckFkZHJlc3MDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgROT05FBAlpc1Jldm9rZWQEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICAgpTVEFUVVNfRkNfBQ9jZXJ0aWZpY2F0aW9uSWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhAgROT05FBBZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQESY2hlY2tJZldoaXRlTGlzdGVkAQUNY2FsbGVyQWRkcmVzcwQHbmV3SnNvbgkArAICCQCsAgIJAKwCAgkAswICBQplbnRyeUV4aXN0AAECEywic3RhdHVzIjoiUkVWT0tFRF8JANgEAQUCaWQCAiJ9AwkBAiE9AgUJaXNSZXZva2VkAgROT05FCQACAQItVGhpcyBjZXJ0aWZpY2F0aW9uIGhhdmUgYWxyZWFkeSBiZWVuIHJldm9rZWQuAwkAAAIFCmVudHJ5RXhpc3QCBE5PTkUJAAIBAjNZb3UgY2Fubm90IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoaXMgY2VydGlmaWNhdGlvbi4DCQBmAgUWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQAACQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEWFkZHJfV0hJVEVMSVNURURfBQ1jYWxsZXJBZGRyZXNzCQBlAgUWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIKU1RBVFVTX0ZDXwUPY2VydGlmaWNhdGlvbklkCQCsAgICCFJFVk9LRURfCQDYBAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICCGRhdGFfZmNfBQ9jZXJ0aWZpY2F0aW9uSWQCAV8FDWNhbGxlckFkZHJlc3MFB25ld0pzb24JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUNY2FsbGVyQWRkcmVzcwAABQ1hY2NlcHRlZFRva2VuBQNuaWwDCQEBIQEFDGNhbGxlcklzRGFwcAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUGaW52b2tlCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50BA5wYXltZW50QXNzZXRJZAMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkCQACAQIgV2F2ZXMgaXMgbm90IGFjY2VwdGVkIGFzIHBheW1lbnQEDGN1cnJlbnRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTApAgUPc3RvcmFnZVZlcmlmaWVyCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBCQEFdmFsdWUBBQ5wYXltZW50QXNzZXRJZAMJAQIhPQIFDWFjY2VwdGVkVG9rZW4FDnBheW1lbnRBc3NldElkCQACAQIoVGhpcyB0b2tlbiBpcyBub3QgYWNjZXB0ZWQgYXQgdGhlIG1vbWVudAMDCQECIT0CBQZhbW91bnQFDGN1cnJlbnRQcmljZQkAZwIAAAUWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQcJAAIBAhJUaGUgcHJpY2UgaXMgd3JvbmcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgpTVEFUVVNfRkNfBQ9jZXJ0aWZpY2F0aW9uSWQJAKwCAgIIUkVWT0tFRF8JANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18FD2NlcnRpZmljYXRpb25JZAIBXwUNY2FsbGVyQWRkcmVzcwUHbmV3SnNvbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQFA25pbAkAAgECHllvdSBhcmUgbm90IGFsbG93ZWQgdG8gZG8gdGhhdAZpbnZva2UBEmVtYWlsQ2VydGlmaWNhdGlvbgQGZG9tYWluBXRpdGxlBHV1aWQMc2lnbmVyUHViS2V5BAJpZAkBBXZhbHVlAQgFBmludm9rZQ10cmFuc2FjdGlvbklkBAplbnRyeUV4aXN0CQEPY2hlY2tFbnRyeUVtYWlsAgUGZG9tYWluBQR1dWlkBAl1dWlkRXhpc3QJAQljaGVja1VVSUQBBQR1dWlkBAxjYWxsZXJJc0RhcHAJAAACBQR0aGlzCAUGaW52b2tlBmNhbGxlcgQNY2FsbGVyQWRkcmVzcwMFDGNhbGxlcklzRGFwcAkApQgBCQCnCAEJANkEAQUMc2lnbmVyUHViS2V5CQDYBAEICAUGaW52b2tlBmNhbGxlcgVieXRlcwQWY2FsbGVySXNXaGl0ZUxpc3RlZE51bQkBEmNoZWNrSWZXaGl0ZUxpc3RlZAEFDWNhbGxlckFkZHJlc3MDCQECIT0CBQplbnRyeUV4aXN0AgROT05FCQACAQIYVGhpcyBlbnRyeSBhbHJlYWR5IGV4aXN0AwkBAiE9AgUJdXVpZEV4aXN0AgROT05FCQACAQIXVGhpcyB1dWlkIGFscmVhZHkgZXhpc3QDCQBmAgkAsQIBBQR1dWlkACQJAAIBAiRVdWlkIGlzIHRvbyBsb25nLCAzNiBjaGFyYWN0ZXJzIG1heC4DCQBmAgkAsQIBBQZkb21haW4AlgEJAAIBAidEb21haW4gaXMgdG9vIGxvbmcsIDE1MCBjaGFyYWN0ZXJzIG1heC4DCQBmAgkAsQIBBQV0aXRsZQBkCQACAQImVGl0bGUgaXMgdG9vIGxvbmcsIDEwMCBjaGFyYWN0ZXJzIG1heC4DAwMJAQhjb250YWlucwIFBHV1aWQCASIGCQEIY29udGFpbnMCBQV0aXRsZQIBIgYJAQhjb250YWlucwIFBmRvbWFpbgIBIgkAAgECDE5vICIgYWxsb3dlZAQEZGF0YQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDnsibWVzc2FnZWlkIjoiBQR1dWlkAgFABQZkb21haW4CDiIsInRpbWVzdGFtcCI6CQCkAwEIBQlsYXN0QmxvY2sJdGltZXN0YW1wAg4sInJlZmVyZW5jZSI6IgUFdGl0bGUCAiJ9AwkAZgIFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAAkAzAgCCQELU3RyaW5nRW50cnkCBQR1dWlkCQDYBAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR1dWlkAgFABQZkb21haW4JANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQV0aXRsZQUEdXVpZAkA2AQBBQJpZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhFhZGRyX1dISVRFTElTVEVEXwUNY2FsbGVyQWRkcmVzcwkAZQIFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0AAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICAghkYXRhX2VjXwkA2AQBBQJpZAIBXwUNY2FsbGVyQWRkcmVzcwUEZGF0YQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyZXNzAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAQEhAQUMY2FsbGVySXNEYXBwBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQZpbnZva2UIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQEDnBheW1lbnRBc3NldElkAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAiBXYXZlcyBpcyBub3QgYWNjZXB0ZWQgYXMgcGF5bWVudAQMY3VycmVudFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9zdG9yYWdlVmVyaWZpZXIJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEJAQV2YWx1ZQEFDnBheW1lbnRBc3NldElkAwkBAiE9AgUNYWNjZXB0ZWRUb2tlbgUOcGF5bWVudEFzc2V0SWQJAAIBAihUaGlzIHRva2VuIGlzIG5vdCBhY2NlcHRlZCBhdCB0aGUgbW9tZW50AwMJAQIhPQIFBmFtb3VudAUMY3VycmVudFByaWNlCQBnAgAABRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtBwkAAgECElRoZSBwcmljZSBpcyB3cm9uZwkAzAgCCQELU3RyaW5nRW50cnkCBQR1dWlkCQDYBAEFAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR1dWlkAgFABQZkb21haW4JANgEAQUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQV0aXRsZQUEdXVpZAkA2AQBBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICAghkYXRhX2VjXwkA2AQBBQJpZAIBXwUNY2FsbGVyQWRkcmVzcwUEZGF0YQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQFA25pbAkAAgECHllvdSBhcmUgbm90IGFsbG93ZWQgdG8gZG8gdGhhdAZpbnZva2UBD2NyZWF0ZUFncmVlbWVudAYEaGFzaAV0aXRsZQ9zdHJpbmdpZmllZEpTT04MY291bnRlclBhcnRzDHNpZ25lclB1YktleQR1dWlkBAJpZAkBBXZhbHVlAQgFBmludm9rZQ10cmFuc2FjdGlvbklkBAplbnRyeUV4aXN0CQEKY2hlY2tFbnRyeQIFBGhhc2gFBHV1aWQECXV1aWRFeGlzdAkBCWNoZWNrVVVJRAEFBHV1aWQEDGNhbGxlcklzRGFwcAkAAAIFBHRoaXMIBQZpbnZva2UGY2FsbGVyBA1jYWxsZXJBZGRyZXNzAwUMY2FsbGVySXNEYXBwCQClCAEJAKcIAQkA2QQBBQxzaWduZXJQdWJLZXkJANgEAQgIBQZpbnZva2UGY2FsbGVyBWJ5dGVzBBZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQESY2hlY2tJZldoaXRlTGlzdGVkAQUNY2FsbGVyQWRkcmVzcwQESlNPTgkArAICCQCsAgIJAKwCAgkArAICCQESZ2V0SnNvbkJlZm9yZVZhbHVlAgUPc3RyaW5naWZpZWRKU09OAgdjcmVhdG9yAgEiBQ1jYWxsZXJBZGRyZXNzAgEiCQERZ2V0SnNvbkFmdGVyVmFsdWUCBQ9zdHJpbmdpZmllZEpTT04CB2NyZWF0b3IEDmFkZHJlc3Nlc0FycmF5CQC1CQIFDGNvdW50ZXJQYXJ0cwIBLAQOdG90YWxBZGRyZXNzZXMJAJADAQUOYWRkcmVzc2VzQXJyYXkED2dsb2JhbERhdGFUaXRsZQkBC1N0cmluZ0VudHJ5AgkArAICBQV0aXRsZQUEdXVpZAkA2AQBBQJpZAQOZ2xvYmFsRGF0YUhhc2gJAQtTdHJpbmdFbnRyeQIJAKwCAgUEaGFzaAUEdXVpZAkA2AQBBQJpZAQOZ2xvYmFsRGF0YUpzb24JAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICCGRhdGFfTUFfCQDYBAEFAmlkAgFfBQ1jYWxsZXJBZGRyZXNzBQRKU09OBA9nbG9iYWxEYXRhT3duZXIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQ1jYWxsZXJBZGRyZXNzAgRfTUFfCQDYBAEFAmlkCQCsAgICB1NJR05FRF8JANgEAQUCaWQED2RhdGFXaGl0ZUxpc3RlZAkBDEludGVnZXJFbnRyeQIJAKwCAgIRYWRkcl9XSElURUxJU1RFRF8FDWNhbGxlckFkZHJlc3MJAGUCBRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtCQBkAgUOdG90YWxBZGRyZXNzZXMAAQMJAQIhPQIFCmVudHJ5RXhpc3QCBE5PTkUJAAIBAhhUaGlzIGVudHJ5IGFscmVhZHkgZXhpc3QDCQECIT0CBQl1dWlkRXhpc3QCBE5PTkUJAAIBAhdUaGlzIHV1aWQgYWxyZWFkeSBleGlzdAMJAGYCCQCxAgEFBHV1aWQAJAkAAgECJFV1aWQgaXMgdG9vIGxvbmcsIDM2IGNoYXJhY3RlcnMgbWF4LgMJAGYCCQCxAgEFBGhhc2gAQAkAAgECKk1lc3NhZ2UtaWQgaXMgdG9vIGxvbmcsIDY0IGNoYXJhY3RlcnMgbWF4LgMJAGYCCQCxAgEFBXRpdGxlAGQJAAIBAiZUaXRsZSBpcyB0b28gbG9uZywgMTAwIGNoYXJhY3RlcnMgbWF4LgMJAGYCBRZjYWxsZXJJc1doaXRlTGlzdGVkTnVtAAADCQBmAgkAZAIFDnRvdGFsQWRkcmVzc2VzAAEFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JAAIBAipZb3UgZG9uJ3QgaGF2ZSBlbm91Z2ggY2VydGlmaWNhdGlvbiBjcmVkaXQDCQAAAgUOdG90YWxBZGRyZXNzZXMABgkAzAgCBQ9nbG9iYWxEYXRhVGl0bGUJAMwIAgUOZ2xvYmFsRGF0YUhhc2gJAMwIAgUOZ2xvYmFsRGF0YUpzb24JAMwIAgUPZ2xvYmFsRGF0YU93bmVyCQDMCAIFD2RhdGFXaGl0ZUxpc3RlZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAECBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAgIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQADAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAQCBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkABQIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyZXNzAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQADAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAEAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAFAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAAACBQ50b3RhbEFkZHJlc3NlcwAFCQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgUPZGF0YVdoaXRlTGlzdGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAACBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAMCBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkABAIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyZXNzAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQADAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAEAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAAACBQ50b3RhbEFkZHJlc3NlcwAECQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgUPZGF0YVdoaXRlTGlzdGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAACBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAMCBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUNY2FsbGVyQWRkcmVzcwAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAgAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAwAABQ1hY2NlcHRlZFRva2VuBQNuaWwDCQAAAgUOdG90YWxBZGRyZXNzZXMAAwkAzAgCBQ9nbG9iYWxEYXRhVGl0bGUJAMwIAgUOZ2xvYmFsRGF0YUhhc2gJAMwIAgUOZ2xvYmFsRGF0YUpzb24JAMwIAgUPZ2xvYmFsRGF0YU93bmVyCQDMCAIFD2RhdGFXaGl0ZUxpc3RlZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAECBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAgIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyZXNzAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAAACBQ50b3RhbEFkZHJlc3NlcwACCQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgUPZGF0YVdoaXRlTGlzdGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAACBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQ1jYWxsZXJBZGRyZXNzAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAAACBQ50b3RhbEFkZHJlc3NlcwABCQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgUPZGF0YVdoaXRlTGlzdGVkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAACBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUNY2FsbGVyQWRkcmVzcwAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAAABQ1hY2NlcHRlZFRva2VuBQNuaWwJAAIBAhxXcm9uZyBudW1iZXIgb2YgcGFydGljaXBhbnRzAwkBASEBBQxjYWxsZXJJc0RhcHAEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFBmludm9rZQhwYXltZW50cwAABAZhbW91bnQDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQAAAQOcGF5bWVudEFzc2V0SWQDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAUNYWNjZXB0ZWRUb2tlbgQMY3VycmVudFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MCkCBQ9zdG9yYWdlVmVyaWZpZXIJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEJAQV2YWx1ZQEFDnBheW1lbnRBc3NldElkAwkAZgIJAGgCBQxjdXJyZW50UHJpY2UJAGQCBQ50b3RhbEFkZHJlc3NlcwABBQZhbW91bnQJAAIBCQCsAgICIVRoZSBwcmljZSBpcyB3cm9uZywgaXQgc2hvdWxkIGJlIAkApAMBCQBoAgUMY3VycmVudFByaWNlCQBkAgUOdG90YWxBZGRyZXNzZXMAAQMJAAACBQ50b3RhbEFkZHJlc3NlcwAGCQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAICBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAwIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQAEAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAUCBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYmFuawUGYW1vdW50BQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAgAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAwAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkABAAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkABQAABQ1hY2NlcHRlZFRva2VuBQNuaWwDCQAAAgUOdG90YWxBZGRyZXNzZXMABQkAzAgCBQ9nbG9iYWxEYXRhVGl0bGUJAMwIAgUOZ2xvYmFsRGF0YUhhc2gJAMwIAgUOZ2xvYmFsRGF0YUpzb24JAMwIAgUPZ2xvYmFsRGF0YU93bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAACBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAMCBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkABAIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQADAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAEAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAAACBQ50b3RhbEFkZHJlc3NlcwAECQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAICBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAwIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQACAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQADAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAAACBQ50b3RhbEFkZHJlc3NlcwADCQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAgRfTUFfCQDYBAEFAmlkAgdQRU5ESU5HCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAICBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUEYmFuawUGYW1vdW50BQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQAABQ1hY2NlcHRlZFRva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAgAABQ1hY2NlcHRlZFRva2VuBQNuaWwDCQAAAgUOdG90YWxBZGRyZXNzZXMAAgkAzAgCBQ9nbG9iYWxEYXRhVGl0bGUJAMwIAgUOZ2xvYmFsRGF0YUhhc2gJAMwIAgUOZ2xvYmFsRGF0YUpzb24JAMwIAgUPZ2xvYmFsRGF0YU93bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCRAwIFDmFkZHJlc3Nlc0FycmF5AAACBF9NQV8JANgEAQUCaWQCB1BFTkRJTkcJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAQIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQABAAAFDWFjY2VwdGVkVG9rZW4FA25pbAMJAAACBQ50b3RhbEFkZHJlc3NlcwABCQDMCAIFD2dsb2JhbERhdGFUaXRsZQkAzAgCBQ5nbG9iYWxEYXRhSGFzaAkAzAgCBQ5nbG9iYWxEYXRhSnNvbgkAzAgCBQ9nbG9iYWxEYXRhT3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAJEDAgUOYWRkcmVzc2VzQXJyYXkAAAIEX01BXwkA2AQBBQJpZAIHUEVORElORwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQFDWFjY2VwdGVkVG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQ5hZGRyZXNzZXNBcnJheQAAAAAFDWFjY2VwdGVkVG9rZW4FA25pbAkAAgEJAKwCAgIyTmVlZHMgMSB0byA2IHJlY2lwaWVudCBhZGRyZXNzZXMsIGN1cnJlbnRseSBzZW50OiAJAKQDAQUOdG90YWxBZGRyZXNzZXMJAAIBAh5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRvIHRoYXQGaW52b2tlAQ1zaWduQWdyZWVtZW50AwRoYXNoC2FncmVlbWVudElkDHNpZ25lclB1YktleQQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUGaW52b2tlCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50BAJpZAkBBXZhbHVlAQgFBmludm9rZQ10cmFuc2FjdGlvbklkBAxjYWxsZXJJc0RhcHAJAAACBQR0aGlzCAUGaW52b2tlBmNhbGxlcgQGc2lnbmVyAwUMY2FsbGVySXNEYXBwCQClCAEJAKcIAQkA2QQBBQxzaWduZXJQdWJLZXkJANgEAQgIBQZpbnZva2UGY2FsbGVyBWJ5dGVzBBNzaWduaW5nUmVxdWVzdEV4aXN0CQEUY2hlY2tJZlBlbmRpbmdUb1NpZ24BCQCsAgIJAKwCAgUGc2lnbmVyAgRfTUFfBQthZ3JlZW1lbnRJZAMJAQEhAQUTc2lnbmluZ1JlcXVlc3RFeGlzdAkAAgECI1NvcnJ5IHRoZXJlIGlzIG5vIHBlbmRpbmcgc2lnbmF0dXJlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZzaWduZXICBF9NQV8FC2FncmVlbWVudElkCQCsAgICB1NJR05FRF8JANgEAQUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBEUBleHRyTmF0aXZlKDEwNjIpAQUGc2lnbmVyAAAFDWFjY2VwdGVkVG9rZW4FA25pbAZpbnZva2UBD3VzZG5TaWduQ3JlZGl0cwAEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFBmludm9rZQhwYXltZW50cwAABA1jYWxsZXJBZGRyZXNzCQDYBAEICAUGaW52b2tlBmNhbGxlcgVieXRlcwQHdG9rZW5JZAkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQED251bWJlck9mQ3JlZGl0cwkAaQIJAGgCBQZhbW91bnQAAgDAhD0EFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0JARJjaGVja0lmV2hpdGVMaXN0ZWQBBQ1jYWxsZXJBZGRyZXNzAwkBAiE9AgkA2AQBBQd0b2tlbklkBQZ1c2RuSUQJAAIBAhpPbmx5IFVTRE4gY2FuIGJlIGV4Y2hhbmdlZAMDCQECIT0CCQBqAgUGYW1vdW50AMCEPQAACQECIT0CCQBqAgUGYW1vdW50AMCEPQCgwh4HCQACAQkArAICCQCsAgIJAKwCAgIwWW91IGNhbiBvbmx5IGV4Y2hhbmdlIG11bHRpcGxlIG9mIDAuNSwgeW91IHNlbnQ6CQCzAgIJAKQDAQUGYW1vdW50AAYCAS4JALICAgkApAMBBQZhbW91bnQABgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhFhZGRyX1dISVRFTElTVEVEXwUNY2FsbGVyQWRkcmVzcwkAZAIFFmNhbGxlcklzV2hpdGVMaXN0ZWROdW0FD251bWJlck9mQ3JlZGl0cwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQERQGV4dHJOYXRpdmUoMTA2MikBBQRiYW5rBQZhbW91bnQFB3Rva2VuSWQFA25pbAECdHgBCHZlcmlmaWVyAAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAMDCQAAAggFA2ludghmdW5jdGlvbgIRZmlsZUNlcnRpZmljYXRpb24GCQAAAggFA2ludghmdW5jdGlvbgIPY3JlYXRlQWdyZWVtZW50CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAQDCQAAAggFA2ludghmdW5jdGlvbgISZW1haWxDZXJ0aWZpY2F0aW9uCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAMDCQAAAggFA2ludghmdW5jdGlvbgINc2lnbkFncmVlbWVudAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwACAwkAAAIIBQNpbnYIZnVuY3Rpb24CE3Jldm9rZUNlcnRpZmljYXRpb24JAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MAAQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tled/bqR8=", "height": 2141940, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9m1S48B7DqMYEHFefk2sZ72fZb8XR8pwYPvqqcoRoPqF Next: 5QE3bSniZgDPCBghRpgztG5vJSp7Reas3MM8vt2XdZD8 Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4-func a (b) = if (if ((b.quantity == 1))
5- then (b.decimals == 0)
6- else false)
7- then (b.reissuable == false)
8- else false
4+let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
5+
6+let b = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
7+
8+let c = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
9+
10+let d = "3KFXBGGLCjA5Z2DuW4Dq9fDDrHjJJP1ZEkaoajSzuKsC"
11+
12+let e = 1
13+
14+func f (g,h) = {
15+ let i = getString(this, (g + h))
16+ if ($isInstanceOf(i, "String"))
17+ then {
18+ let j = i
19+ j
20+ }
21+ else "NONE"
22+ }
923
1024
11-@Callable(c)
12-func burnNFTProxy () = if ((size(c.payments) == 0))
13- then throw("No payment attached")
14- else {
15- let d = value(c.payments[0])
16- let e = value(d.amount)
17- let b = value(assetInfo(value(d.assetId)))
18- if (!(a(b)))
19- then throw("this is not a NFT")
20- else [Burn(value(d.assetId), 1)]
25+func k (h,l) = {
26+ let i = getString(this, ((h + "@") + l))
27+ if ($isInstanceOf(i, "String"))
28+ then {
29+ let j = i
30+ j
31+ }
32+ else "NONE"
33+ }
34+
35+
36+func m (h) = {
37+ let i = getString(this, h)
38+ if ($isInstanceOf(i, "String"))
39+ then {
40+ let j = i
41+ j
42+ }
43+ else "NONE"
44+ }
45+
46+
47+func n (o) = {
48+ let i = getInteger(this, ("addr_WHITELISTED_" + o))
49+ if ($isInstanceOf(i, "Int"))
50+ then {
51+ let j = i
52+ j
53+ }
54+ else 0
55+ }
56+
57+
58+func p (q) = if (if (if ((size(q) == 35))
59+ then (take(q, 2) == "3P")
60+ else false)
61+ then true
62+ else (take(q, 2) == "3N"))
63+ then true
64+ else (take(q, 2) == "3M")
65+
66+
67+func r (s,q) = if ((size(q) > 0))
68+ then (s + 1)
69+ else (s + 0)
70+
71+
72+func t (u) = {
73+ let i = getString(this, u)
74+ if ($isInstanceOf(i, "String"))
75+ then {
76+ let j = i
77+ if ((j == "PENDING"))
78+ then true
79+ else false
80+ }
81+ else false
82+ }
83+
84+
85+func v (w) = take(drop(w, 1), value(indexOf(drop(w, 1), "\"")))
86+
87+
88+func x (w,u) = {
89+ let y = value(indexOf(w, (("\"" + u) + "\":")))
90+ let z = drop(w, ((y + size(u)) + 3))
91+ let A = v(z)
92+ A
93+ }
94+
95+
96+func B (w,u) = {
97+ let y = value(indexOf(w, (("\"" + u) + "\":")))
98+ let z = take(w, ((y + size(u)) + 3))
99+ z
100+ }
101+
102+
103+func C (w,u) = {
104+ let y = value(indexOf(w, (("\"" + u) + "\":")))
105+ let z = takeRight(w, (size(w) - ((((y + size(u)) + 3) + 0) + 2)))
106+ z
107+ }
108+
109+
110+func D (E) = {
111+ let i = E
112+ if ($isInstanceOf(i, "String"))
113+ then {
114+ let F = i
115+ F
116+ }
117+ else throw("Sponsored Public Key String expected")
118+ }
119+
120+
121+@Callable(G)
122+func fileCertification (H,I,h,J,K) = {
123+ let L = value(G.transactionId)
124+ let M = f(H, h)
125+ let N = m(h)
126+ let O = (this == G.caller)
127+ let o = if (O)
128+ then toString(addressFromPublicKey(fromBase58String(K)))
129+ else toBase58String(G.caller.bytes)
130+ let P = n(o)
131+ if ((M != "NONE"))
132+ then throw("This entry already exist")
133+ else if ((N != "NONE"))
134+ then throw("This uuid already exist")
135+ else if ((size(h) != 36))
136+ then throw("Uuid should be 36 characters.")
137+ else if ((size(H) != 64))
138+ then throw("Hash should be 64 characters.")
139+ else if ((size(I) > 100))
140+ then throw("Title is too long, 100 characters max.")
141+ else if (if (if (contains(H, "\""))
142+ then true
143+ else contains(I, "\""))
144+ then true
145+ else contains(J, "\""))
146+ then throw("No \" allowed")
147+ else {
148+ let z = (((((((("{\"hash\":\"" + H) + "\",\"timestamp\":") + toString(lastBlock.timestamp)) + ",\"title\":\"") + I) + "\",\"ipfs\":\"") + J) + "\"}")
149+ if ((P > 0))
150+ then {
151+ let Q = if ((size(J) != 0))
152+ then (1 + e)
153+ else 1
154+ if ((0 > (P - Q)))
155+ then throw("Not enough credit")
156+ else [StringEntry(h, toBase58String(L)), StringEntry((H + h), toBase58String(L)), StringEntry((I + h), toBase58String(L)), IntegerEntry(("addr_WHITELISTED_" + o), (P - Q)), StringEntry(((("data_fc_" + toBase58String(L)) + "_") + o), z), ScriptTransfer(addressFromStringValue(o), 0, c)]
157+ }
158+ else if (!(O))
159+ then {
160+ let R = value(G.payments[0])
161+ let S = value(R.amount)
162+ let T = if (isDefined(R.assetId))
163+ then value(R.assetId)
164+ else throw("Waves is not accepted as payment")
165+ let U = getIntegerValue(a, ("certification_fee_" + toBase58String(value(T))))
166+ let V = if ((size(J) != 0))
167+ then (U + (e * U))
168+ else U
169+ if ((c != T))
170+ then throw("This token is not accepted at the moment")
171+ else if (if ((S != V))
172+ then (0 >= P)
173+ else false)
174+ then throw("The price is wrong")
175+ else [StringEntry(h, toBase58String(L)), StringEntry((H + h), toBase58String(L)), StringEntry((I + h), toBase58String(L)), StringEntry(((("data_fc_" + toBase58String(L)) + "_") + o), z), ScriptTransfer(addressFromStringValue(b), V, R.assetId)]
176+ }
177+ else throw("You are not allowed to do that")
178+ }
179+ }
180+
181+
182+
183+@Callable(G)
184+func revokeCertification (W,K) = {
185+ let L = value(G.transactionId)
186+ let O = (this == G.caller)
187+ let o = if (O)
188+ then toString(addressFromPublicKey(fromBase58String(K)))
189+ else toBase58String(G.caller.bytes)
190+ let M = {
191+ let i = getString(this, ((("data_fc_" + W) + "_") + o))
192+ if ($isInstanceOf(i, "String"))
193+ then {
194+ let j = i
195+ j
196+ }
197+ else "NONE"
21198 }
199+ let X = {
200+ let i = getString(this, ("STATUS_FC_" + W))
201+ if ($isInstanceOf(i, "String"))
202+ then {
203+ let j = i
204+ j
205+ }
206+ else "NONE"
207+ }
208+ let P = n(o)
209+ let Y = (((dropRight(M, 1) + ",\"status\":\"REVOKED_") + toBase58String(L)) + "\"}")
210+ if ((X != "NONE"))
211+ then throw("This certification have already been revoked.")
212+ else if ((M == "NONE"))
213+ then throw("You cannot change the status of this certification.")
214+ else if ((P > 0))
215+ then [IntegerEntry(("addr_WHITELISTED_" + o), (P - 1)), StringEntry(("STATUS_FC_" + W), ("REVOKED_" + toBase58String(L))), StringEntry(((("data_fc_" + W) + "_") + o), Y), ScriptTransfer(addressFromStringValue(o), 0, c)]
216+ else if (!(O))
217+ then {
218+ let R = value(G.payments[0])
219+ let S = value(R.amount)
220+ let T = if (isDefined(R.assetId))
221+ then value(R.assetId)
222+ else throw("Waves is not accepted as payment")
223+ let U = getIntegerValue(a, ("certification_fee_" + toBase58String(value(T))))
224+ if ((c != T))
225+ then throw("This token is not accepted at the moment")
226+ else if (if ((S != U))
227+ then (0 >= P)
228+ else false)
229+ then throw("The price is wrong")
230+ else [StringEntry(("STATUS_FC_" + W), ("REVOKED_" + toBase58String(L))), StringEntry(((("data_fc_" + W) + "_") + o), Y), ScriptTransfer(addressFromStringValue(b), S, R.assetId)]
231+ }
232+ else throw("You are not allowed to do that")
233+ }
22234
235+
236+
237+@Callable(G)
238+func emailCertification (l,I,h,K) = {
239+ let L = value(G.transactionId)
240+ let M = k(l, h)
241+ let N = m(h)
242+ let O = (this == G.caller)
243+ let o = if (O)
244+ then toString(addressFromPublicKey(fromBase58String(K)))
245+ else toBase58String(G.caller.bytes)
246+ let P = n(o)
247+ if ((M != "NONE"))
248+ then throw("This entry already exist")
249+ else if ((N != "NONE"))
250+ then throw("This uuid already exist")
251+ else if ((size(h) > 36))
252+ then throw("Uuid is too long, 36 characters max.")
253+ else if ((size(l) > 150))
254+ then throw("Domain is too long, 150 characters max.")
255+ else if ((size(I) > 100))
256+ then throw("Title is too long, 100 characters max.")
257+ else if (if (if (contains(h, "\""))
258+ then true
259+ else contains(I, "\""))
260+ then true
261+ else contains(l, "\""))
262+ then throw("No \" allowed")
263+ else {
264+ let z = (((((((("{\"messageid\":\"" + h) + "@") + l) + "\",\"timestamp\":") + toString(lastBlock.timestamp)) + ",\"reference\":\"") + I) + "\"}")
265+ if ((P > 0))
266+ then [StringEntry(h, toBase58String(L)), StringEntry(((h + "@") + l), toBase58String(L)), StringEntry((I + h), toBase58String(L)), IntegerEntry(("addr_WHITELISTED_" + o), (P - 1)), StringEntry(((("data_ec_" + toBase58String(L)) + "_") + o), z), ScriptTransfer(addressFromStringValue(o), 0, c)]
267+ else if (!(O))
268+ then {
269+ let R = value(G.payments[0])
270+ let S = value(R.amount)
271+ let T = if (isDefined(R.assetId))
272+ then value(R.assetId)
273+ else throw("Waves is not accepted as payment")
274+ let U = getIntegerValue(a, ("certification_fee_" + toBase58String(value(T))))
275+ if ((c != T))
276+ then throw("This token is not accepted at the moment")
277+ else if (if ((S != U))
278+ then (0 >= P)
279+ else false)
280+ then throw("The price is wrong")
281+ else [StringEntry(h, toBase58String(L)), StringEntry(((h + "@") + l), toBase58String(L)), StringEntry((I + h), toBase58String(L)), StringEntry(((("data_ec_" + toBase58String(L)) + "_") + o), z), ScriptTransfer(addressFromStringValue(b), S, R.assetId)]
282+ }
283+ else throw("You are not allowed to do that")
284+ }
285+ }
286+
287+
288+
289+@Callable(G)
290+func createAgreement (H,I,Z,aa,K,h) = {
291+ let L = value(G.transactionId)
292+ let M = f(H, h)
293+ let N = m(h)
294+ let O = (this == G.caller)
295+ let o = if (O)
296+ then toString(addressFromPublicKey(fromBase58String(K)))
297+ else toBase58String(G.caller.bytes)
298+ let P = n(o)
299+ let ab = ((((B(Z, "creator") + "\"") + o) + "\"") + C(Z, "creator"))
300+ let ac = split(aa, ",")
301+ let ad = size(ac)
302+ let ae = StringEntry((I + h), toBase58String(L))
303+ let af = StringEntry((H + h), toBase58String(L))
304+ let ag = StringEntry(((("data_MA_" + toBase58String(L)) + "_") + o), ab)
305+ let ah = StringEntry(((o + "_MA_") + toBase58String(L)), ("SIGNED_" + toBase58String(L)))
306+ let ai = IntegerEntry(("addr_WHITELISTED_" + o), (P - (ad + 1)))
307+ if ((M != "NONE"))
308+ then throw("This entry already exist")
309+ else if ((N != "NONE"))
310+ then throw("This uuid already exist")
311+ else if ((size(h) > 36))
312+ then throw("Uuid is too long, 36 characters max.")
313+ else if ((size(H) > 64))
314+ then throw("Message-id is too long, 64 characters max.")
315+ else if ((size(I) > 100))
316+ then throw("Title is too long, 100 characters max.")
317+ else if ((P > 0))
318+ then if (((ad + 1) > P))
319+ then throw("You don't have enough certification credit")
320+ else if ((ad == 6))
321+ then [ae, af, ag, ah, ai, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[3] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[4] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[5] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(o), 0, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c), ScriptTransfer(addressFromStringValue(ac[3]), 0, c), ScriptTransfer(addressFromStringValue(ac[4]), 0, c), ScriptTransfer(addressFromStringValue(ac[5]), 0, c)]
322+ else if ((ad == 5))
323+ then [ae, af, ag, ah, ai, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[3] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[4] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(o), 0, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c), ScriptTransfer(addressFromStringValue(ac[3]), 0, c), ScriptTransfer(addressFromStringValue(ac[4]), 0, c)]
324+ else if ((ad == 4))
325+ then [ae, af, ag, ah, ai, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[3] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(o), 0, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c), ScriptTransfer(addressFromStringValue(ac[3]), 0, c)]
326+ else if ((ad == 3))
327+ then [ae, af, ag, ah, ai, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(o), 0, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c)]
328+ else if ((ad == 2))
329+ then [ae, af, ag, ah, ai, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(o), 0, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c)]
330+ else if ((ad == 1))
331+ then [ae, af, ag, ah, ai, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(o), 0, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c)]
332+ else throw("Wrong number of participants")
333+ else if (!(O))
334+ then {
335+ let R = value(G.payments[0])
336+ let S = if (isDefined(R.amount))
337+ then value(R.amount)
338+ else 0
339+ let T = if (isDefined(R.assetId))
340+ then value(R.assetId)
341+ else c
342+ let U = getIntegerValue(a, ("certification_fee_" + toBase58String(value(T))))
343+ if (((U * (ad + 1)) > S))
344+ then throw(("The price is wrong, it should be " + toString((U * (ad + 1)))))
345+ else if ((ad == 6))
346+ then [ae, af, ag, ah, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[3] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[4] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[5] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(b), S, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c), ScriptTransfer(addressFromStringValue(ac[3]), 0, c), ScriptTransfer(addressFromStringValue(ac[4]), 0, c), ScriptTransfer(addressFromStringValue(ac[5]), 0, c)]
347+ else if ((ad == 5))
348+ then [ae, af, ag, ah, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[3] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[4] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(b), S, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c), ScriptTransfer(addressFromStringValue(ac[3]), 0, c), ScriptTransfer(addressFromStringValue(ac[4]), 0, c)]
349+ else if ((ad == 4))
350+ then [ae, af, ag, ah, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[3] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(b), S, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c), ScriptTransfer(addressFromStringValue(ac[3]), 0, c)]
351+ else if ((ad == 3))
352+ then [ae, af, ag, ah, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[2] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(b), S, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c), ScriptTransfer(addressFromStringValue(ac[2]), 0, c)]
353+ else if ((ad == 2))
354+ then [ae, af, ag, ah, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), StringEntry(((ac[1] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(b), S, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c), ScriptTransfer(addressFromStringValue(ac[1]), 0, c)]
355+ else if ((ad == 1))
356+ then [ae, af, ag, ah, StringEntry(((ac[0] + "_MA_") + toBase58String(L)), "PENDING"), ScriptTransfer(addressFromStringValue(b), S, c), ScriptTransfer(addressFromStringValue(ac[0]), 0, c)]
357+ else throw(("Needs 1 to 6 recipient addresses, currently sent: " + toString(ad)))
358+ }
359+ else throw("You are not allowed to do that")
360+ }
361+
362+
363+
364+@Callable(G)
365+func signAgreement (H,aj,K) = {
366+ let R = value(G.payments[0])
367+ let S = value(R.amount)
368+ let L = value(G.transactionId)
369+ let O = (this == G.caller)
370+ let ak = if (O)
371+ then toString(addressFromPublicKey(fromBase58String(K)))
372+ else toBase58String(G.caller.bytes)
373+ let al = t(((ak + "_MA_") + aj))
374+ if (!(al))
375+ then throw("Sorry there is no pending signature")
376+ else [StringEntry(((ak + "_MA_") + aj), ("SIGNED_" + toBase58String(L))), ScriptTransfer(addressFromStringValue(ak), 0, c)]
377+ }
378+
379+
380+
381+@Callable(G)
382+func usdnSignCredits () = {
383+ let R = value(G.payments[0])
384+ let o = toBase58String(G.caller.bytes)
385+ let am = value(R.assetId)
386+ let S = value(R.amount)
387+ let an = ((S * 2) / 1000000)
388+ let P = n(o)
389+ if ((toBase58String(am) != d))
390+ then throw("Only USDN can be exchanged")
391+ else if (if (((S % 1000000) != 0))
392+ then ((S % 1000000) != 500000)
393+ else false)
394+ then throw(((("You can only exchange multiple of 0.5, you sent:" + dropRight(toString(S), 6)) + ".") + takeRight(toString(S), 6)))
395+ else [IntegerEntry(("addr_WHITELISTED_" + o), (P + an)), ScriptTransfer(addressFromStringValue(b), S, am)]
396+ }
397+
398+
399+@Verifier(ao)
400+func ap () = {
401+ let i = ao
402+ if ($isInstanceOf(i, "InvokeScriptTransaction"))
403+ then {
404+ let aq = i
405+ if (if ((aq.function == "fileCertification"))
406+ then true
407+ else (aq.function == "createAgreement"))
408+ then sigVerify(ao.bodyBytes, ao.proofs[0], fromBase58String(D(aq.args[4])))
409+ else if ((aq.function == "emailCertification"))
410+ then sigVerify(ao.bodyBytes, ao.proofs[0], fromBase58String(D(aq.args[3])))
411+ else if ((aq.function == "signAgreement"))
412+ then sigVerify(ao.bodyBytes, ao.proofs[0], fromBase58String(D(aq.args[2])))
413+ else if ((aq.function == "revokeCertification"))
414+ then sigVerify(ao.bodyBytes, ao.proofs[0], fromBase58String(D(aq.args[1])))
415+ else sigVerify(ao.bodyBytes, ao.proofs[0], ao.senderPublicKey)
416+ }
417+ else sigVerify(ao.bodyBytes, ao.proofs[0], ao.senderPublicKey)
418+ }
23419

github/deemru/w8io/026f985 
60.24 ms