tx · 3KuQPEvX3PEFBAezXhZ8ZaU6S1GegnTJAb9tGKrCBFj8

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.02600000 Waves

2023.02.03 07:12 [2432941] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "3KuQPEvX3PEFBAezXhZ8ZaU6S1GegnTJAb9tGKrCBFj8", "fee": 2600000, "feeAssetId": null, "timestamp": 1675396356495, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "5pATMPy5es4Xvis3FQjw9rHG3gCYthqYw97LZWcirJbuvmLK18hCfRJYP8DFxQb6BAdA1p2cSHzW5PB9AuBBHQz6" ], "script": "base64:BgJfCAISBAoCCAgSEAoOCAgICAgICAgICAgIAQgSDwoNCAgICAgICAgICAgBCBIGCgQICAgIEgQKAggIEggKBggBAQgBCBIECgIICBIECgIICBIGCgQICAgIEgYKBAgICAhQAAdWRVJTSU9OAgYxLjEuMTABDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgAACHVuaXRUZXN0BwAJb3JhY2xlRmVlCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECD2NvbmZfb3JhY2xlX2ZlZQAIc2lnbkRhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9zaWdud2ViX2RhcHAAC2ZlZVJlY2VpdmVyCQEOZ2V0U3RyaW5nQnlLZXkBAhFjb25mX2ZlZV9yZWNlaXZlcgAIdXNlckRhcHADBQh1bml0VGVzdAkBBXZhbHVlAQkApggBAiMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX3VzZXJzX2RhcHAADXdoaXRlbGlzdERhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQITY29uZl93aGl0ZWxpc3RfZGFwcAALc2lnbkFzc2V0SWQJANkEAQkBDmdldFN0cmluZ0J5S2V5AQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAt1c2RuQXNzZXRJZAkA2QQBCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRE4AC3VzZHRBc3NldElkCQDZBAEJAQ5nZXRTdHJpbmdCeUtleQECGGNvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEVAAMd2F2ZXNBc3NldElkAQAABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwAHc2lnbkN1dAAHAAt1c2RuV2F2ZUN1dAAKAA5kZWZhdWx0TGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIUY29uZl9kZWZhdWx0X2xpY2VuY2UAEmRlZmF1bHRIYXNoTGljZW5jZQkBDmdldFN0cmluZ0J5S2V5AQIZY29uZl9kZWZhdWx0X2xpY2VuY2VfaGFzaAALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEHVzZXJVbnJlZ2lzdGVyZWQCDFVOUkVHSVNURVJFRAALdXNlckFsbG93ZWQCB0FMTE9XRUQAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQkArAICAhJjZXJ0aWZpY2F0aW9uX2ZlZV8JANgEAQULc2lnbkFzc2V0SWQBE2dldEFydHdvcmtSb3lhbHRpZXMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkA6AcBFGNoZWNrU2lnbkNlcnRpZmljYXRlAwZzaWduSUQFT3duZXIKc2hhMjU2SGFzaAQHJG1hdGNoMAkAnQgCBQhzaWduRGFwcAkArAICCQCsAgIJAKwCAgIIZGF0YV9mY18FBnNpZ25JRAIBXwUFT3duZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwAwkBCGNvbnRhaW5zAgUBYQUKc2hhMjU2SGFzaAYHBwELdmFsaWRhdGVDSUQBA2NpZAMJAQhjb250YWlucwIFA2NpZAIBLwMDCQBmAgBMCQCxAgEFA2NpZAkAAAIJALECAQkAkQMCCQC1CQIFA2NpZAIBLwAAADsHCQBmAgAQCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAQcHAQx2YWxpZGF0ZUhhc2gBBGhhc2gJAAACCQCxAgEFBGhhc2gAQAENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyAQdrZXlEYXRlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5TmFtZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleURlc2MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlEaXNwbGF5Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDWtleUV4cG9ydEhhc2gCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5RXhwb3J0Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICD2FydF9leHBvcnRfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5TWF4TWludAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfbWF4bWludF8FBWFydElkAgFfBQZjYWxsZXIBCWtleVNpZ25JRAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfc2lnbmlkXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5SXNzdWVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQVhcnRJZAIBXwUGY2FsbGVyAQlrZXlPblNhbGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X29uc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBDmtleUxpY2VuY2VIYXNoAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlMaWNlbmNlQ2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9saWNlbmNlX2NpZF8FBWFydElkAgFfBQZjYWxsZXIBB2tleVRhZ3MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X3RhZ3NfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUeXBlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5Tm90ZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbm90ZV8FBWFydElkAgFfBQZjYWxsZXIBCmtleUNyYXdsZXICBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2NyYXdsZXJfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEMa2V5Um95YWx0aWVzAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDmFydF9yb3lhbHRpZXNfBQVhcnRJZAIBXwUGY2FsbGVyAQhrZXlQcmljZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgphcnRfcHJpY2VfBQVhcnRJZAIBXwUGY2FsbGVyAQprZXlFbmRTYWxlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDGFydF9lbmRzYWxlXwUFYXJ0SWQCAV8FBmNhbGxlcgESa2V5QXNzZXRJZEFjY2VwdGVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEmFydF9hc3NldEFjY2VwdGVkXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5RmxhZwIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZmxhZ18FBWFydElkAgFfBQZjYWxsZXIBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEKYXJ0aXN0QWRkcgkArAICAhVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAhRhcnRpc3RfcHVibGljX2FnZW50XwUKYXJ0aXN0QWRkcgEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIcYXJ0aXN0X3B1YmxpY19hZ2VudF9wcmltYXJ5XwUKYXJ0aXN0QWRkcgERa2V5SGFzaEJ5VHhpZEFkZHICBmNhbGxlcgR0eGlkCQCsAgIJAKwCAgkArAICAhNnZXRfaGFzaGJ5dHhpZGFkZHJfBQR0eGlkAgFfBQZjYWxsZXIBDmtleU93bmVyQnlIYXNoAQpzaGEyNTZIYXNoCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUKc2hhMjU2SGFzaAENa2V5aWRCeVNpZ25pZAIGY2FsbGVyBnNpZ25JZAkArAICCQCsAgIJAKwCAgISZ2V0X2FydGlkYnlzaWduaWRfBQZzaWduSWQCAV8FBmNhbGxlcgESa2V5VHhpZEJ5SGFzaE93bmVyAgpzaGEyNTZIYXNoBmNhbGxlcgkArAICAhdnZXRfdHhpZF9ieV9oYXNoX293bmVyXwkA2AQBCQDUFgEJAJsDAQkArAICBQpzaGEyNTZIYXNoBQZjYWxsZXIBDnZhbGlkYXRlQWxsQ0lEAwpjaWREaXNwbGF5CWNpZEV4cG9ydApjaWRMaWNlbmNlAwkBASEBCQELdmFsaWRhdGVDSUQBBQpjaWREaXNwbGF5CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCWNpZEV4cG9ydAkAAgECEFdyb25nIEV4cG9ydCBDSUQDAwkBAiE9AgUKY2lkTGljZW5jZQIACQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZExpY2VuY2UHCQACAQIRV3JvbmcgTGljZW5jZSBDSUQGAQ92YWxpZGF0ZUFsbEhhc2gCDHNoYTI1NkV4cG9ydA1zaGEyNTZMaWNlbmNlAwkBASEBCQEMdmFsaWRhdGVIYXNoAQUMc2hhMjU2RXhwb3J0CQACAQIYRXhwb3J0IEhhc2ggNjQgY2hhci4gbWF4AwkBASEBCQEMdmFsaWRhdGVIYXNoAQUNc2hhMjU2TGljZW5jZQkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkBgkAAAIFCnVzZXJTdGF0dXMFC3VzZXJBbGxvd2VkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFCnVzZXJTdGF0dXMFC3VzZXJSZW1vdmVkAg9BY2NvdW50IHJlbW92ZWQCAAEKc2V0TEljZW5jZQIKY2lkTGljZW5jZQ1zaGEyNTZMaWNlbmNlBANjaWQDCQAAAgkAsQIBBQpjaWRMaWNlbmNlAAAFDmRlZmF1bHRMaWNlbmNlBQpjaWRMaWNlbmNlBARoYXNoAwkAAAIJALECAQUNc2hhMjU2TGljZW5jZQAABRJkZWZhdWx0SGFzaExpY2VuY2UFDXNoYTI1NkxpY2VuY2UJAJQKAgUDY2lkBQRoYXNoARN2YWxpZGF0ZUFydHdvcmtEYXRhCgZjYWxsZXIKY2lkRGlzcGxheQljaWRFeHBvcnQKbGljZW5jZUNJRAxzaGEyNTZFeHBvcnQLbGljZW5jZUhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCXJveWFsdGllcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQ52YWxpZGF0ZUFsbENJRAMFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAkAAgECEFByb2JsZW0gd2l0aCBDSUQDCQEBIQEJAQ92YWxpZGF0ZUFsbEhhc2gCBQxzaGEyNTZFeHBvcnQFC2xpY2VuY2VIYXNoCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQBkCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUDCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEPdmFsaWRhdGVQYXltZW50AQFpBAskdDA5MTgwOTIxNgkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQskdDA5MTgwOTIxNgJfMQQGYW1vdW50CAULJHQwOTE4MDkyMTYCXzIEB2Fzc2V0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAACCAUHcGF5bWVudAdhc3NldElkBQtzaWduQXNzZXRJZAcIBQdwYXltZW50B2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUGYW1vdW50BRljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQACAQkArAICAhlQYXltZW50IGFtb3VudCBzaG91bGQgYmUgCQCkAwEFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAJQKAgUGYW1vdW50BQdhc3NldElkAQtpc0FydE1pbnRlZAIJYWRkclRvVXNlBWFydElkBAckbWF0Y2gwCQCaCAIFBHRoaXMJAQlrZXlJc3N1ZWQCBQlhZGRyVG9Vc2UFBWFydElkAwkAAQIFByRtYXRjaDACA0ludAQBYgUHJG1hdGNoMAMJAQIhPQIFAWIAAAYHBwEUdmFsaWRhdGVQcmljZUFzc2V0SWQDAWkMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQQLJHQwOTgwNDk4NDAJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAULJHQwOTgwNDk4NDACXzEEBmFtb3VudAgFCyR0MDk4MDQ5ODQwAl8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAUEdW5pdAMDCQBmAgkAsQIBBQxwcmljZUFzc2V0SWQAAAkAAAIJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAUMcHJpY2VBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECDldyb25nIGFzc2V0IGlkAwMJAAACBQdhc3NldElkBQR1bml0CQECIT0CBQxwcmljZUFzc2V0SWQCAAcJAAIBAg5Xcm9uZyBhc3NldCBpZAMJAQIhPQIFDGFydHdvcmtQcmljZQUGYW1vdW50CQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQZhbW91bnQFB2Fzc2V0SWQBEGFjY2VwdGVkQXNzZXRJZHMBB2Fzc2V0SWQDAwMDAwkBAiE9AgUHYXNzZXRJZAkA2AQBBQtzaWduQXNzZXRJZAkBAiE9AgUHYXNzZXRJZAkA2AQBBQx3YXZlc0Fzc2V0SWQHCQECIT0CBQdhc3NldElkAgVXQVZFUwcJAQIhPQIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQHCQECIT0CBQdhc3NldElkCQDYBAEFC3VzZHRBc3NldElkBwkAAgECJk9ubHkgU0lHTiwgVVNETixVU0RUIG9yIFdBVkVTIGFjY2VwdGVkBgEPdmFsaWRhdGVNaW5TZWxsAgdhc3NldElkBXByaWNlBAxtaW5TZWxsV2F2ZXMDBQh1bml0VGVzdAAKCQEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQECDndhdmVzX21pbl9zZWxsBAttaW5TZWxsVXNkbgDAhD0EC21pblNlbGxTaWduAwUIdW5pdFRlc3QAAQkAaAIFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAgMDAwMDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkdEFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULc2lnbkFzc2V0SWQJAGYCBQttaW5TZWxsU2lnbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwMJAAACBQdhc3NldElkCQDYBAEFDHdhdmVzQXNzZXRJZAYJAAACBQdhc3NldElkAgVXQVZFUwkAZgIFDG1pblNlbGxXYXZlcwUFcHJpY2UHCQECIT0CBQVwcmljZQAABwkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEKYmlkRGF0YUtleQQHYmlkRGF0YQkBDmdldFN0cmluZ0J5S2V5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg1CaWQgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8ECWJpZEFtb3VudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQQKYmlkQXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAAMJAGcCAAAFCWJpZEFtb3VudAkAAgECDFdyb25nIGFtb3VudAkAlAoCBQliaWRBbW91bnQFCmJpZEFzc2V0SWQBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIBaQZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEC2lzU3BvbnNvcmVkAwkBAiE9AgUGcHViS2V5AgAJAQt2YWx1ZU9yRWxzZQIJAQ5jaGVja1doaXRlbGlzdAEJAKwCAgkApQgBCQCnCAEJANkEAQUGcHViS2V5AglfZnJlZV90eHMAAAAABAZjYWxsZXIDAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgULaXNTcG9uc29yZWQAAAcJAKUIAQkApwgBCQDZBAEFBnB1YktleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNnZXRfc3BvbnNvcmVkX3dhdmVzAwMJAQIhPQIFBnB1YktleQIACQBmAgULaXNTcG9uc29yZWQAAAcJAPwHBAUNd2hpdGVsaXN0RGFwcAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFBnB1YktleQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUTZ2V0X3Nwb25zb3JlZF93YXZlcwUTZ2V0X3Nwb25zb3JlZF93YXZlcwkAlgoECQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFBmNhbGxlcggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGYCBQtpc1Nwb25zb3JlZAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQdidXlNaW50BQFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMTI5NzcxMzAzNgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTI5NzcxMzAzNgJfMQQGY2FsbGVyCAUNJHQwMTI5NzcxMzAzNgJfMgQEZGF0ZQgFDSR0MDEyOTc3MTMwMzYCXzMEBWlzQmlkAwMDCQAAAgUGY2FsbGVyBQZpc3N1ZXIJAQIhPQIFCGJpZE93bmVyAgAHCQECIT0CBQViaWRJZAIABwYHBAhibG9ja0VuZAkBD2dldEludGVnZXJCeUtleQEJAQprZXlFbmRTYWxlAgUGY2FsbGVyBQVhcnRJZAMDAwkBAiE9AgUIYmxvY2tFbmQAAAkAZwIFBmhlaWdodAUIYmxvY2tFbmQHCQEBIQEFBWlzQmlkBwkAAgECC1NhbGUgZW5kZWQuBA5jYWxsZXJJc0lzc3VlcgkAAAIFBmNhbGxlcgUGaXNzdWVyBAh0b3RhbE5GVAkBD2dldEludGVnZXJCeUtleQECEHRvdGFsX25mdF9pc3N1ZWQEBnNpZ25JRAkBDmdldFN0cmluZ0J5S2V5AQkBCWtleVNpZ25JRAIFBmlzc3VlcgUFYXJ0SWQEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXJ0d29ya05hbWUCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAhpc09uU2FsZQkBD2dldEJvb2xlYW5CeUtleQEJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQEDGFydHdvcmtQcmljZQMFDmNhbGxlcklzSXNzdWVyCQBoAgUZY3VycmVudENlcnRpZmljYXRpb25QcmljZQACCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleVByaWNlAgUGaXNzdWVyBQVhcnRJZAQMcHJpY2VBc3NldElkAwUOY2FsbGVySXNJc3N1ZXIJANgEAQULc2lnbkFzc2V0SWQJAQ5nZXRTdHJpbmdCeUtleQEJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZpc3N1ZXIFBWFydElkBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleU1heE1pbnQCBQZpc3N1ZXIFBWFydElkAwMDCQEBIQEFBWlzQmlkCQEBIQEFDmNhbGxlcklzSXNzdWVyBwMDCQBnAgAABQxhcnR3b3JrUHJpY2UGCQEBIQEFCGlzT25TYWxlBgkAZwIAAAUKbWF4Q2FuU2VsbAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFBWlzQmlkBQ5jYWxsZXJJc0lzc3VlcgcJAGcCAAAFCm1heENhblNlbGwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmlzc3VlcgMDBQVpc0JpZAkBAiE9AgUJY2hlY2tVc2VyAgAHCQACAQUJY2hlY2tVc2VyBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FCGJpZE93bmVyAgFfBQViaWRJZAQNJHQwMTQ1NTUxNDc0NwMFBWlzQmlkCQEWZ2V0UHJpY2VBc3NldElkRnJvbUJpZAEFCmJpZERhdGFLZXkJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAUMYXJ0d29ya1ByaWNlBAZhbW91bnQIBQ0kdDAxNDU1NTE0NzQ3Al8xBAdhc3NldElkCAUNJHQwMTQ1NTUxNDc0NwJfMgQFYWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEUa2V5UHJpbWFyeVNoYXJlQWdlbnQBBQZpc3N1ZXIAAAQLcHVibGljQWdlbnQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBBQZpc3N1ZXIFC2ZlZVJlY2VpdmVyBBBwdWJsaWNBZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBBQZpc3N1ZXIAAAQNaXNXaGl0ZWxpc3RlZAkBDmNoZWNrV2hpdGVsaXN0AQUGaXNzdWVyBANjdXQDCQBmAgUNaXNXaGl0ZWxpc3RlZAUGaGVpZ2h0AAADCQAAAgUHYXNzZXRJZAULc2lnbkFzc2V0SWQFB3NpZ25DdXQFC3VzZG5XYXZlQ3V0BA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQNjdXQAZAQOYW1vdW50Rm9yQWdlbnQDAwMJAQIhPQIFBWFnZW50BQtmZWVSZWNlaXZlcgkAZgIFCmFnZW50U2hhcmUAAAcJAGYCBQZoZWlnaHQFDWlzV2hpdGVsaXN0ZWQHCQBrAwUGYW1vdW50BQphZ2VudFNoYXJlAJBOAAAEFGFtb3VudEZvclB1YmxpY0FnZW50AwMDCQECIT0CBQtwdWJsaWNBZ2VudAULZmVlUmVjZWl2ZXIJAGYCBRBwdWJsaWNBZ2VudFNoYXJlAAAHCQBmAgUGaGVpZ2h0BQ1pc1doaXRlbGlzdGVkBwkAawMFBmFtb3VudAUQcHVibGljQWdlbnRTaGFyZQCQTgAABBBhbW91bnRGb3JDcmVhdG9yCQBlAgUGYW1vdW50BQ1hbW91bnRGb3JTaWduAwkAAAIFCmFtb3VudFNvbGQFCm1heENhblNlbGwJAAIBAgxBcnQgc29sZCBvdXQEDW5ld0Ftb3VudFNvbGQJAGQCBQphbW91bnRTb2xkAAEECWlzc3VlTWV0YQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUGaXNzdWVyAgosCiBBcnRJRDogBQVhcnRJZAILLAogU2lnbklEOiAFBnNpZ25JRAIRLAogQXJ0d29yayBuYW1lOiAFC2FydHdvcmtOYW1lAgosCiBJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQIaXNzdWVORlQJAMIIBQkArAICAgNTQV8JAKQDAQkAZAIFCHRvdGFsTkZUAAEFCWlzc3VlTWV0YQABAAAHBAVpZE5GVAkAuAgBBQhpc3N1ZU5GVAQKc2VsbFN0YXR1cwMDCQAAAgUNbmV3QW1vdW50U29sZAUKbWF4Q2FuU2VsbAYJAQEhAQUIaXNPblNhbGUHBgQKcmVjZWl2ZU5GVAMDAwkAAAIFBmNhbGxlcgUGaXNzdWVyCQECIT0CBQhiaWRPd25lcgIABwkBAiE9AgUFYmlkSWQCAAcJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGJpZE93bmVyCAUBaQZjYWxsZXIECmFzc2V0SWRCaWQDCQEBIQEJAQlpc0RlZmluZWQBBQdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBBQdhc3NldElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWREZWxPbGQJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZFVwZGF0ZQkBC1N0cmluZ0VudHJ5AgkArAICBQpiaWREYXRhS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlBAdzb2xkS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQ1uZXdBbW91bnRTb2xkAgRfb2ZfCQCkAwEFCm1heENhblNlbGwCAV8FBWFydElkAgFfBQZpc3N1ZXIECXNvbGRWYWx1ZQMJAQEhAQUFaXNCaWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUGY2FsbGVyAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFDGFydHdvcmtQcmljZQIBXwUMcHJpY2VBc3NldElkAgFfCQDYBAEFBWlkTkZUCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUKcmVjZWl2ZU5GVAIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQZhbW91bnQCAV8FCmFzc2V0SWRCaWQCAV8JANgEAQUFaWRORlQECHNvbGREYXRhCQELU3RyaW5nRW50cnkCBQdzb2xkS2V5BQlzb2xkVmFsdWUEFGNvbW1pc3Npb25zV2l0aEFnZW50AwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUFYWdlbnQFDmFtb3VudEZvckFnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQ1hbW91bnRGb3JTaWduBQdhc3NldElkBQNuaWwEGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50AwkBAiE9AgUUYW1vdW50Rm9yUHVibGljQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULcHVibGljQWdlbnQFFGFtb3VudEZvclB1YmxpY0FnZW50BQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIJAGUCBRBhbW91bnRGb3JDcmVhdG9yBRRhbW91bnRGb3JQdWJsaWNBZ2VudAUHYXNzZXRJZAUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEGFtb3VudEZvckNyZWF0b3IFB2Fzc2V0SWQFA25pbAQGYnV5UmVzCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQFDW5ld0Ftb3VudFNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFBWlkTkZUBQdzb2xkS2V5CQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUIdG90YWxORlQAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZpc3N1ZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFCnJlY2VpdmVORlQAAQUFaWRORlQFA25pbAUUY29tbWlzc2lvbnNXaXRoQWdlbnQFGmNvbW1pc3Npb25zV2l0aFB1YmxpY0FnZW50AwUFaXNCaWQJAMwIAgUIc29sZERhdGEJAMwIAgUJYmlkVXBkYXRlCQDMCAIFCWJpZERlbE9sZAUGYnV5UmVzCQDMCAIFCHNvbGREYXRhBQZidXlSZXMBCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAoGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBCmFkZEFydHdvcmsOCnNoYTI1Nkhhc2gGc2lnbklEBG5hbWULZGVzY3JpcHRpb24EdGFncwR0eXBlCmNpZERpc3BsYXkMc2hhMjU2RXhwb3J0CWNpZEV4cG9ydA1zaGEyNTZMaWNlbmNlCmNpZExpY2VuY2UHY3Jhd2xlcglyb3lhbHRpZXMGcHViS2V5BA0kdDAxOTgwMjE5ODc1CQEVaWRDYWxsZXJEYXRlU3BvbnNvcmVkAgUBaQUGcHViS2V5BAVhcnRJZAgFDSR0MDE5ODAyMTk4NzUCXzEEBmNhbGxlcggFDSR0MDE5ODAyMTk4NzUCXzIEBGRhdGUIBQ0kdDAxOTgwMjE5ODc1Al8zBAtpc1Nwb25zb3JlZAgFDSR0MDE5ODAyMTk4NzUCXzQDCQEBIQEJAQx2YWxpZGF0ZUhhc2gBBQpzaGEyNTZIYXNoCQACAQIkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBA0kdDAxOTk3NjIwMDQ1CQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAxOTk3NjIwMDQ1Al8xBAtsaWNlbmNlSGFzaAgFDSR0MDE5OTc2MjAwNDUCXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBBB3aGl0ZWxpc3RlZF9kcm9wCQBmAgkBDmNoZWNrV2hpdGVsaXN0AQkArAICBQZjYWxsZXICC19mcmVlX2Ryb3BzAAAEDSR0MDIwMzQ0MjA0MjgDBRB3aGl0ZWxpc3RlZF9kcm9wCQCUCgIAAAUGc2lnbklECQEPdmFsaWRhdGVQYXltZW50AQUBaQQGYW1vdW50CAUNJHQwMjAzNDQyMDQyOAJfMQQHYXNzZXRJZAgFDSR0MDIwMzQ0MjA0MjgCXzIDCQEBIQEJAQlpc0RlZmluZWQBBQZhbW91bnQJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQKZW50cnlFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleVR4aWRCeUhhc2hPd25lcgIFCnNoYTI1Nkhhc2gFBmNhbGxlcgMJAQIhPQIFCmVudHJ5RXhpc3QCAAkAAgECFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAloYXNoRXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQ5rZXlPd25lckJ5SGFzaAEFCnNoYTI1Nkhhc2gDCQECIT0CBQloYXNoRXhpc3QCAAkAAgECF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBA9pc1NpZ25DZXJ0aWZpZWQJARRjaGVja1NpZ25DZXJ0aWZpY2F0ZQMFBnNpZ25JRAUGY2FsbGVyBQpzaGEyNTZIYXNoAwkBASEBBQ9pc1NpZ25DZXJ0aWZpZWQJAAIBAixTaWduIENlcnRpZmljYXRlIG5vdCBmb3VuZCBmb3IgdGhpcyBhZGRyZXNzLgQXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3ADBRB3aGl0ZWxpc3RlZF9kcm9wCQD8BwQFDXdoaXRlbGlzdERhcHACC3VzZUZyZWVEcm9wCQDMCAIFBmNhbGxlcgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUXZGVjcmVhc2Vfd2hpdGVsaXN0X2Ryb3AFF2RlY3JlYXNlX3doaXRlbGlzdF9kcm9wBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlPd25lckJ5SGFzaAEFCnNoYTI1Nkhhc2gFBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5VHhpZEJ5SGFzaE93bmVyAgUKc2hhMjU2SGFzaAUGY2FsbGVyBQVhcnRJZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBB2tleURhdGUCBQZjYWxsZXIFBWFydElkBQRkYXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQVhcnRJZAUEbmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5RGVzYwIFBmNhbGxlcgUFYXJ0SWQFC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlEaXNwbGF5Q2lkAgUGY2FsbGVyBQVhcnRJZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQVhcnRJZAUJY2lkRXhwb3J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlFeHBvcnRIYXNoAgUGY2FsbGVyBQVhcnRJZAUMc2hhMjU2RXhwb3J0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlMaWNlbmNlSGFzaAIFBmNhbGxlcgUFYXJ0SWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlMaWNlbmNlQ2lkAgUGY2FsbGVyBQVhcnRJZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5VHlwZQIFBmNhbGxlcgUFYXJ0SWQFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVRhZ3MCBQZjYWxsZXIFBWFydElkBQR0YWdzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEJa2V5U2lnbklEAgUGY2FsbGVyBQVhcnRJZAUGc2lnbklECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGY2FsbGVyBQVhcnRJZAcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleWlkQnlTaWduaWQCBQZjYWxsZXIFBnNpZ25JRAUFYXJ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEWtleUhhc2hCeVR4aWRBZGRyAgUGY2FsbGVyBQVhcnRJZAUKc2hhMjU2SGFzaAkAzAgCCQELU3RyaW5nRW50cnkCCQEKa2V5Q3Jhd2xlcgIFBmNhbGxlcgUFYXJ0SWQFB2NyYXdsZXIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlSb3lhbHRpZXMCBQZjYWxsZXIFBWFydElkBQlyb3lhbHRpZXMJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQZhbW91bnQFC3NpZ25Bc3NldElkBQNuaWwFCnR4VG9DYWxsZXIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQENdXBkYXRlQXJ0d29yaw0EdHhpZARuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MEdHlwZQpjaWREaXNwbGF5DHNoYTI1NkV4cG9ydAljaWRFeHBvcnQNc2hhMjU2TGljZW5jZQpjaWRMaWNlbmNlB2NyYXdsZXIJcm95YWx0aWVzBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQNJHQwMjM0NjIyMzUzMgkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyMzQ2MjIzNTMyAl8xBAZjYWxsZXIIBQ0kdDAyMzQ2MjIzNTMyAl8yBARkYXRlCAUNJHQwMjM0NjIyMzUzMgJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyMzQ2MjIzNTMyAl80BA0kdDAyMzU0MjIzNjExCQEKc2V0TEljZW5jZQIFCmNpZExpY2VuY2UFDXNoYTI1NkxpY2VuY2UECmxpY2VuY2VDSUQIBQ0kdDAyMzU0MjIzNjExAl8xBAtsaWNlbmNlSGFzaAgFDSR0MDIzNTQyMjM2MTECXzIED3ZhbGlkYXRlQXJ0d29yawkBE3ZhbGlkYXRlQXJ0d29ya0RhdGEKBQZjYWxsZXIFCmNpZERpc3BsYXkFCWNpZEV4cG9ydAUKbGljZW5jZUNJRAUMc2hhMjU2RXhwb3J0BQtsaWNlbmNlSGFzaAUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFCXJveWFsdGllcwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUEdHhpZAMJAAACBQplbnRyeUV4aXN0AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEBGZsYWcJAQ5nZXRTdHJpbmdCeUtleQEJAQdrZXlGbGFnAgUGY2FsbGVyBQR0eGlkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAh1DYW5ub3QgdXBkYXRlIElMTEVHQUwgYXJ0d29yawMJAQEhAQkBC2lzQXJ0TWludGVkAgUGY2FsbGVyBQR0eGlkBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlOYW1lAgUGY2FsbGVyBQR0eGlkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlEZXNjAgUGY2FsbGVyBQR0eGlkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUEdHhpZAUKY2lkRGlzcGxheQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXhwb3J0Q2lkAgUGY2FsbGVyBQR0eGlkBQljaWRFeHBvcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleUV4cG9ydEhhc2gCBQZjYWxsZXIFBHR4aWQFDHNoYTI1NkV4cG9ydAkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5TGljZW5jZUNpZAIFBmNhbGxlcgUEdHhpZAUKbGljZW5jZUNJRAkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5TGljZW5jZUhhc2gCBQZjYWxsZXIFBHR4aWQFC2xpY2VuY2VIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQR0eGlkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUeXBlAgUGY2FsbGVyBQR0eGlkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQprZXlDcmF3bGVyAgUGY2FsbGVyBQR0eGlkBQdjcmF3bGVyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5Um95YWx0aWVzAgUGY2FsbGVyBQR0eGlkBQlyb3lhbHRpZXMFA25pbAUKdHhUb0NhbGxlcgkAAgECDkFscmVhZHkgbWludGVkAWkBC2ZsYWdBcnR3b3JrBAVhcnRJZARhZGRyBGZsYWcEbm90ZQQNJHQwMjUyMzgyNTI3MgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMjUyMzgyNTI3MgJfMQQGY2FsbGVyCAUNJHQwMjUyMzgyNTI3MgJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleUZsYWcCBQRhZGRyBQVhcnRJZAUEZmxhZwkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5Tm90ZQIFBGFkZHIFBWFydElkBQRub3RlBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQRmbGFnCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQ1kZWxldGVBcnR3b3JrAgVhcnRJZARhZGRyBA0kdDAyNTcwODI1NzQyCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAyNTcwODI1NzQyAl8xBAZjYWxsZXIIBQ0kdDAyNTcwODI1NzQyAl8yBAlhZGRyVG9Vc2UDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBQRhZGRyBQZjYWxsZXIECmVudHJ5RXhpc3QJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQlhZGRyVG9Vc2UFBWFydElkAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQplbnRyeUV4aXN0AgAJAAIBAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQKc2hhMjU2SGFzaAkBDmdldFN0cmluZ0J5S2V5AQkBEWtleUhhc2hCeVR4aWRBZGRyAgUJYWRkclRvVXNlBQVhcnRJZAMJAAACBQpzaGEyNTZIYXNoAgAJAAIBAiVObyBhcnQgaGFzaCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAZzaWduSUQJAQ5nZXRTdHJpbmdCeUtleQEJAQlrZXlTaWduSUQCBQlhZGRyVG9Vc2UFBWFydElkAwkAAAIFBnNpZ25JRAIACQACAQITTm8gU0lHTiBJRCBtYXRjaGluZwQMZGF0YVRvRGVsZXRlCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlEYXRlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEHa2V5TmFtZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleURlc2MCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ1rZXlEaXNwbGF5Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEMa2V5RXhwb3J0Q2lkAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5RXhwb3J0SGFzaAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleUxpY2VuY2VIYXNoAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5TGljZW5jZUNpZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleVR5cGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlUYWdzAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5TWF4TWludAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleVNpZ25JRAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCWtleU9uU2FsZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBB2tleUZsYWcCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQhrZXlQcmljZQIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUFzc2V0SWRBY2NlcHRlZAIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5aWRCeVNpZ25pZAIFCWFkZHJUb1VzZQUGc2lnbklECQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlUeGlkQnlIYXNoT3duZXICBQpzaGEyNTZIYXNoBQlhZGRyVG9Vc2UJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBCmtleUVuZFNhbGUCBQlhZGRyVG9Vc2UFBWFydElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlOb3RlAgUJYWRkclRvVXNlBQVhcnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQEKa2V5Q3Jhd2xlcgIFCWFkZHJUb1VzZQUFYXJ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVJveWFsdGllcwIFCWFkZHJUb1VzZQUFYXJ0SWQFA25pbAMJAQEhAQkBC2lzQXJ0TWludGVkAgUJYWRkclRvVXNlBQVhcnRJZAMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwUMZGF0YVRvRGVsZXRlAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgUMZGF0YVRvRGVsZXRlCQACAQIoQXJ0IGFscmVhZHkgbWludGVkLCB5b3UgY2Fubm90IGRlbGV0ZSBpdAFpAQtzZWxsQXJ0d29yawYFYXJ0SWQFcHJpY2UHbWF4TWludAdhc3NldElkCGJsb2NrRW5kBnB1YktleQQNJHQwMjg1NzgyODY0OAkBFWlkQ2FsbGVyRGF0ZVNwb25zb3JlZAIFAWkFBnB1YktleQQCaWQIBQ0kdDAyODU3ODI4NjQ4Al8xBAZjYWxsZXIIBQ0kdDAyODU3ODI4NjQ4Al8yBARkYXRlCAUNJHQwMjg1NzgyODY0OAJfMwQLaXNTcG9uc29yZWQIBQ0kdDAyODU3ODI4NjQ4Al80BAthcnR3b3JrTmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQZjYWxsZXIFBWFydElkAwkAAAIFC2FydHdvcmtOYW1lAgAJAAIBAiNUaGlzIGFydCBkb2Vzbid0IG1hdGNoIHlvdXIgYWNjb3VudAQEZmxhZwkBDmdldFN0cmluZ0J5S2V5AQkBB2tleUZsYWcCBQZjYWxsZXIFBWFydElkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQRmbGFnCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQBmAgAABQhibG9ja0VuZAkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUIYmxvY2tFbmQAAAMJAQIhPQIFB21heE1pbnQAAQYJAQIhPQIFBXByaWNlAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQKYmFzZUhlaWdodAMJAAACBQhibG9ja0VuZAAAAAAFBmhlaWdodAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUHYXNzZXRJZAUFcHJpY2UJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmNhbGxlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQDCQBmAgUHbWF4TWludABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQphbW91bnRTb2xkAAAJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQphbW91bnRTb2xkAAAJAQIhPQIFCm1heENhblNlbGwFB21heE1pbnQHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFBmJpZE5icgAACQECIT0CBQptYXhDYW5TZWxsBQdtYXhNaW50BwkAAgECMUNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSB3aXRoIGFjdGl2ZSBvcmRlcnMECnNlbGxTdGF0dXMDAwkAZgIFBXByaWNlAAAJAGYCBQdtYXhNaW50AAAHBgcECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBQpzZWxsU3RhdHVzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEIa2V5UHJpY2UCBQZjYWxsZXIFBWFydElkBQVwcmljZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkBQdtYXhNaW50CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZjYWxsZXIFBWFydElkBQdhc3NldElkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5RW5kU2FsZQIFBmNhbGxlcgUFYXJ0SWQJAGQCBQpiYXNlSGVpZ2h0BQhibG9ja0VuZAUDbmlsBQp0eFRvQ2FsbGVyAWkBCmJ1eUFydHdvcmsCBWFydElkBmlzc3VlcgkBB2J1eU1pbnQFBQFpBQVhcnRJZAUGaXNzdWVyAgACAAFpAQZzZXRCaWQCBWFydElkBmlzc3VlcgQNJHQwMzEwMjYzMTA2NgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzEwMjYzMTA2NgJfMQQGY2FsbGVyCAUNJHQwMzEwMjYzMTA2NgJfMgQEZGF0ZQgFDSR0MDMxMDI2MzEwNjYCXzMEDSR0MDMxMDcxMzExMDcJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMzEwNzEzMTEwNwJfMQQGYW1vdW50CAUNJHQwMzEwNzEzMTEwNwJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQECGJsb2NrRW5kCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCmtleUVuZFNhbGUCBQZpc3N1ZXIFBWFydElkAwMJAQIhPQIFCGJsb2NrRW5kAAAJAGcCBQZoZWlnaHQFCGJsb2NrRW5kBwkAAgECC1NhbGUgZW5kZWQuBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAIFB2Fzc2V0SWQFBmFtb3VudAkAAgECDldyb25nIG1pbiBzZWxsBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDCQBnAgAABQptYXhDYW5TZWxsCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUGY2FsbGVyAgFfBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUHYXNzZXRJZAIBXwkApAMBBQZhbW91bnQCAV8JAKQDAQUEZGF0ZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkCQBkAgUGYmlkTmJyAAEFA25pbAFpAQlhY2NlcHRCaWQEBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQNJHQwMzIyNjUzMjMwNQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMzIyNjUzMjMwNQJfMQQGY2FsbGVyCAUNJHQwMzIyNjUzMjMwNQJfMgQEZGF0ZQgFDSR0MDMyMjY1MzIzMDUCXzMDCQECIT0CBQZjYWxsZXIFBmlzc3VlcgkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24JAQdidXlNaW50BQUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQFCGJpZE93bmVyAWkBCWNhbmNlbEJpZAQFYXJ0SWQGaXNzdWVyBWJpZElkCGJpZE93bmVyBA0kdDAzMjUzMTMyNTkyCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAzMjUzMTMyNTkyAl8xBAZjYWxsZXIIBQ0kdDAzMjUzMTMyNTkyAl8yBARkYXRlCAUNJHQwMzI1MzEzMjU5MgJfMwMDCQECIT0CBQZjYWxsZXIFCGJpZE93bmVyCQECIT0CBQZjYWxsZXIFBmlzc3VlcgcJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uBA1yZXR1cm5Nb25leVRvAwkAAAIFBmNhbGxlcgUGaXNzdWVyBQhiaWRPd25lcgUGY2FsbGVyBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAwkAAAIFB2JpZERhdGECAAkAAgECDUJpZCBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAAQJYmlkU3RhdHVzAghDQU5DRUxFRAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQpiaWREYXRhS2V5AgFfBQliaWRTdGF0dXMJAKwCAgkArAICBQdiaWREYXRhAgFfCQCkAwEFBGRhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAkAZQIFBmJpZE5icgABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQ1yZXR1cm5Nb25leVRvCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwBAnR4AQh2ZXJpZmllcgAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDADAwMDCQAAAggFA2ludghmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwANAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CDXVwZGF0ZUFydHdvcmsJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MADAMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAgtzZWxsQXJ0d29yawkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAFCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5EKL6Pg==", "height": 2432941, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5vjAnsL7J8xXk5hvPcnWpjerCnWuHxAkaiFGQ9LJN8vF Next: BW71ipLmS71GkHjYi2zbxNroaXp21YwkfoaGfZeM7gUG Diff:
OldNewDifferences
493493 else false)
494494 then (height > bS)
495495 else false)
496- then fraction(aV, bP, 100)
496+ then fraction(aV, bP, 10000)
497497 else 0
498498 let bW = if (if (if ((bQ != g))
499499 then (bR > 0)
500500 else false)
501501 then (height > bS)
502502 else false)
503- then fraction(aV, bR, 100)
503+ then fraction(aV, bR, 10000)
504504 else 0
505505 let bX = (aV - bU)
506506 if ((bL == bM))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.1.10"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = false
1010
1111 let e = value(addressFromString(b("conf_oracle_fee")))
1212
1313 let f = value(addressFromString(b("conf_signweb_dapp")))
1414
1515 let g = b("conf_fee_receiver")
1616
1717 let h = if (d)
1818 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1919 else value(addressFromString(b("conf_users_dapp")))
2020
2121 let i = value(addressFromString(b("conf_whitelist_dapp")))
2222
2323 let j = fromBase58String(b("conf_accepted_asset_SIGN"))
2424
2525 let k = fromBase58String(b("conf_accepted_asset_USDN"))
2626
2727 let l = fromBase58String(b("conf_accepted_asset_USDT"))
2828
2929 let m = base58''
3030
3131 let n = b("conf_admin_1")
3232
3333 func o (c) = valueOrErrorMessage(getInteger(e, c), "Integer undefine or 0 in oracle")
3434
3535
3636 func p (c) = valueOrElse(getInteger(this, c), 0)
3737
3838
3939 func q (c) = valueOrElse(getInteger(i, c), 0)
4040
4141
4242 func r (c) = valueOrElse(getBoolean(this, c), false)
4343
4444
4545 let s = 7
4646
4747 let t = 10
4848
4949 let u = b("conf_default_licence")
5050
5151 let v = b("conf_default_licence_hash")
5252
5353 let w = valueOrElse(getBoolean(h, "conf_dapp_is_running"), true)
5454
5555 let x = valueOrElse(getString(h, "conf_maintenance_msg"), "")
5656
5757 let y = "SUSPENDED"
5858
5959 let z = "REMOVED"
6060
6161 let A = "UNREGISTERED"
6262
6363 let B = "ALLOWED"
6464
6565 let C = o(("certification_fee_" + toBase58String(j)))
6666
6767 func D (c) = valueOrElse(getInteger(this, c), 1000)
6868
6969
7070 func E (F,G,H) = {
7171 let I = getString(f, ((("data_fc_" + F) + "_") + G))
7272 if ($isInstanceOf(I, "String"))
7373 then {
7474 let J = I
7575 if (contains(J, H))
7676 then true
7777 else false
7878 }
7979 else false
8080 }
8181
8282
8383 func K (L) = if (contains(L, "/"))
8484 then if (if ((76 > size(L)))
8585 then (size(split(L, "/")[0]) == 59)
8686 else false)
8787 then (16 > size(split(L, "/")[1]))
8888 else false
8989 else false
9090
9191
9292 func M (N) = (size(N) == 64)
9393
9494
9595 func O (P) = ("user_status_" + P)
9696
9797
9898 func Q (P,R) = ((("art_date_" + R) + "_") + P)
9999
100100
101101 func S (P,R) = ((("art_name_" + R) + "_") + P)
102102
103103
104104 func T (P,R) = ((("art_desc_" + R) + "_") + P)
105105
106106
107107 func U (P,R) = ((("art_display_cid_" + R) + "_") + P)
108108
109109
110110 func V (P,R) = ((("art_export_hash_" + R) + "_") + P)
111111
112112
113113 func W (P,R) = ((("art_export_cid_" + R) + "_") + P)
114114
115115
116116 func X (P,R) = ((("art_maxmint_" + R) + "_") + P)
117117
118118
119119 func Y (P,R) = ((("art_signid_" + R) + "_") + P)
120120
121121
122122 func Z (P,R) = ((("art_issued_" + R) + "_") + P)
123123
124124
125125 func aa (P,R) = ((("art_onsale_" + R) + "_") + P)
126126
127127
128128 func ab (P,R) = ((("art_licence_hash_" + R) + "_") + P)
129129
130130
131131 func ac (P,R) = ((("art_licence_cid_" + R) + "_") + P)
132132
133133
134134 func ad (P,R) = ((("art_tags_" + R) + "_") + P)
135135
136136
137137 func ae (P,R) = ((("art_type_" + R) + "_") + P)
138138
139139
140140 func af (P,R) = ((("art_note_" + R) + "_") + P)
141141
142142
143143 func ag (P,R) = ((("art_crawler_cid_" + R) + "_") + P)
144144
145145
146146 func ah (P,R) = ((("art_royalties_" + R) + "_") + P)
147147
148148
149149 func ai (P,R) = ((("art_price_" + R) + "_") + P)
150150
151151
152152 func aj (P,R) = ((("art_endsale_" + R) + "_") + P)
153153
154154
155155 func ak (P,R) = ((("art_assetAccepted_" + R) + "_") + P)
156156
157157
158158 func al (P,R) = ((("art_flag_" + R) + "_") + P)
159159
160160
161161 func am (an) = ("artist_agent_" + an)
162162
163163
164164 func ao (an) = ("artist_agent_primary_" + an)
165165
166166
167167 func ap (an) = ("artist_public_agent_" + an)
168168
169169
170170 func aq (an) = ("artist_public_agent_primary_" + an)
171171
172172
173173 func ar (P,as) = ((("get_hashbytxidaddr_" + as) + "_") + P)
174174
175175
176176 func at (H) = ("get_owner_by_hash_" + H)
177177
178178
179179 func au (P,av) = ((("get_artidbysignid_" + av) + "_") + P)
180180
181181
182182 func aw (H,P) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((H + P)))))
183183
184184
185185 func ax (ay,az,aA) = if (!(K(ay)))
186186 then throw("Wrong Display CID")
187187 else if (!(K(az)))
188188 then throw("Wrong Export CID")
189189 else if (if ((aA != ""))
190190 then !(K(aA))
191191 else false)
192192 then throw("Wrong Licence CID")
193193 else true
194194
195195
196196 func aB (aC,aD) = if (!(M(aC)))
197197 then throw("Export Hash 64 char. max")
198198 else if (!(M(aD)))
199199 then throw("Licence Hash 64 char. max")
200200 else true
201201
202202
203203 func aE (aF,aG) = if ((size(aF) == 0))
204204 then throw("Field cannot be is empty")
205205 else if ((size(aF) > aG))
206206 then throw((aF + " is too long"))
207207 else true
208208
209209
210210 func aH (P) = {
211211 let aI = valueOrElse(getString(h, O(P)), A)
212212 if (if ((aI == A))
213213 then true
214214 else (aI == B))
215215 then "Register this account first with \"Account\" tab"
216216 else if ((aI == y))
217217 then "Account suspended"
218218 else if ((aI == z))
219219 then "Account removed"
220220 else ""
221221 }
222222
223223
224224 func aJ (aA,aD) = {
225225 let L = if ((size(aA) == 0))
226226 then u
227227 else aA
228228 let N = if ((size(aD) == 0))
229229 then v
230230 else aD
231231 $Tuple2(L, N)
232232 }
233233
234234
235235 func aK (P,ay,az,aL,aC,aM,aN,aO,aP,aQ) = {
236236 let aR = aH(P)
237237 if ((aR != ""))
238238 then throw(aR)
239239 else if ((size(ay) == 0))
240240 then throw("Display CID cannot be empty")
241241 else if (!(ax(ay, az, aL)))
242242 then throw("Problem with CID")
243243 else if (!(aB(aC, aM)))
244244 then throw("Problem with Hashes")
245245 else if (!(aE(aN, 100)))
246246 then throw("100 Char. max name")
247247 else if (!(aE(aO, 1000)))
248248 then throw("1000 Char. max description")
249249 else if (if ((0 > aQ))
250250 then true
251251 else (aQ > 1000))
252252 then throw("Royalties cannot be less than 0% or higher than 10%")
253253 else if ((size(split(aP, ",")) > 5))
254254 then throw("5 tags max.")
255255 else ""
256256 }
257257
258258
259259 func aS (aT) = if ((size(aT.payments) == 0))
260260 then throw("No payment attached")
261261 else {
262262 let aU = value(aT.payments[0])
263263 let aV = value(aU.amount)
264264 $Tuple2(aU, aV)
265265 }
266266
267267
268268 func aW (aT) = {
269269 let aX = aS(aT)
270270 let aU = aX._1
271271 let aV = aX._2
272272 let aY = if (if (isDefined(aU.assetId))
273273 then (aU.assetId == j)
274274 else false)
275275 then aU.assetId
276276 else throw("Only SIGN token accepted as transaction fee")
277277 if ((aV != C))
278278 then throw(("Payment amount should be " + toString(C)))
279279 else $Tuple2(aV, aY)
280280 }
281281
282282
283283 func aZ (ba,R) = {
284284 let I = getInteger(this, Z(ba, R))
285285 if ($isInstanceOf(I, "Int"))
286286 then {
287287 let bb = I
288288 if ((bb != 0))
289289 then true
290290 else false
291291 }
292292 else false
293293 }
294294
295295
296296 func bc (aT,bd,be) = {
297297 let bf = aS(aT)
298298 let aU = bf._1
299299 let aV = bf._2
300300 let aY = if (!(isDefined(aU.assetId)))
301301 then unit
302302 else if (if ((size(bd) > 0))
303303 then (toBase58String(value(aU.assetId)) == bd)
304304 else false)
305305 then aU.assetId
306306 else throw("Wrong asset id")
307307 if (if ((aY == unit))
308308 then (bd != "")
309309 else false)
310310 then throw("Wrong asset id")
311311 else if ((be != aV))
312312 then throw("Payment don't match")
313313 else $Tuple2(aV, aY)
314314 }
315315
316316
317317 func bg (aY) = if (if (if (if (if ((aY != toBase58String(j)))
318318 then (aY != toBase58String(m))
319319 else false)
320320 then (aY != "WAVES")
321321 else false)
322322 then (aY != toBase58String(k))
323323 else false)
324324 then (aY != toBase58String(l))
325325 else false)
326326 then throw("Only SIGN, USDN,USDT or WAVES accepted")
327327 else true
328328
329329
330330 func bh (aY,bi) = {
331331 let bj = if (d)
332332 then 10
333333 else o("waves_min_sell")
334334 let bk = 1000000
335335 let bl = if (d)
336336 then 1
337337 else (C * 2)
338338 if (if (if (if (if (if ((aY == toBase58String(k)))
339339 then (bk > bi)
340340 else false)
341341 then (bi != 0)
342342 else false)
343343 then true
344344 else if (if ((aY == toBase58String(l)))
345345 then (bk > bi)
346346 else false)
347347 then (bi != 0)
348348 else false)
349349 then true
350350 else if (if ((aY == toBase58String(j)))
351351 then (bl > bi)
352352 else false)
353353 then (bi != 0)
354354 else false)
355355 then true
356356 else if (if (if ((aY == toBase58String(m)))
357357 then true
358358 else (aY == "WAVES"))
359359 then (bj > bi)
360360 else false)
361361 then (bi != 0)
362362 else false)
363363 then throw("Wrong minimum sell price")
364364 else true
365365 }
366366
367367
368368 func bm (aY) = if ((aY == "WAVES"))
369369 then unit
370370 else fromBase58String(aY)
371371
372372
373373 func bn (bo) = {
374374 let bp = b((bo + "_OPEN"))
375375 if ((bp == ""))
376376 then throw("Bid not found")
377377 else {
378378 let bq = split(bp, "_")
379379 let br = parseIntValue(bq[1])
380380 let bs = bm(bq[0])
381381 if ((0 >= br))
382382 then throw("Wrong amount")
383383 else $Tuple2(br, bs)
384384 }
385385 }
386386
387387
388388 func bt (aT,bu) = if (!(w))
389389 then throw(x)
390390 else {
391391 let bv = if ((bu != ""))
392392 then valueOrElse(q((toString(addressFromPublicKey(fromBase58String(bu))) + "_free_txs")), 0)
393393 else 0
394394 let P = if (if ((toBase58String(aT.caller.bytes) == toString(this)))
395395 then (bv > 0)
396396 else false)
397397 then toString(addressFromPublicKey(fromBase58String(bu)))
398398 else toBase58String(aT.caller.bytes)
399399 let bw = if (if ((bu != ""))
400400 then (bv > 0)
401401 else false)
402402 then invoke(i, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bu)))], nil)
403403 else unit
404404 if ((bw == bw))
405405 then $Tuple4(toBase58String(aT.transactionId), P, lastBlock.timestamp, (bv > 0))
406406 else throw("Strict value is not equal to itself.")
407407 }
408408
409409
410410 func bx (aT) = if (!(w))
411411 then throw(x)
412412 else $Tuple3(toBase58String(aT.transactionId), toBase58String(aT.caller.bytes), lastBlock.timestamp)
413413
414414
415415 func by (aT,R,bz,bA,bB) = {
416416 let bC = bx(aT)
417417 let bD = bC._1
418418 let P = bC._2
419419 let bE = bC._3
420420 let bF = if (if (if ((P == bz))
421421 then (bB != "")
422422 else false)
423423 then (bA != "")
424424 else false)
425425 then true
426426 else false
427427 let bG = p(aj(P, R))
428428 if (if (if ((bG != 0))
429429 then (height >= bG)
430430 else false)
431431 then !(bF)
432432 else false)
433433 then throw("Sale ended.")
434434 else {
435435 let bH = (P == bz)
436436 let bI = p("total_nft_issued")
437437 let F = b(Y(bz, R))
438438 let bJ = b(S(bz, R))
439439 if ((bJ == ""))
440440 then throw("Art doesn't exist")
441441 else {
442442 let bK = r(aa(bz, R))
443443 let bL = p(Z(bz, R))
444444 let be = if (bH)
445445 then (C * 2)
446446 else p(ai(bz, R))
447447 let bd = if (bH)
448448 then toBase58String(j)
449449 else b(ak(bz, R))
450450 let bM = p(X(bz, R))
451451 if (if (if (!(bF))
452452 then !(bH)
453453 else false)
454454 then if (if ((0 >= be))
455455 then true
456456 else !(bK))
457457 then true
458458 else (0 >= bM)
459459 else false)
460460 then throw("Art not for sale")
461461 else if (if (if (!(bF))
462462 then bH
463463 else false)
464464 then (0 >= bM)
465465 else false)
466466 then throw("Max issuable not set")
467467 else {
468468 let aR = aH(bz)
469469 if (if (bF)
470470 then (aR != "")
471471 else false)
472472 then throw(aR)
473473 else {
474474 let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
475475 let bN = if (bF)
476476 then bn(bo)
477477 else bc(aT, bd, be)
478478 let aV = bN._1
479479 let aY = bN._2
480480 let bO = valueOrElse(getString(h, am(bz)), g)
481481 let bP = valueOrElse(getInteger(h, ao(bz)), 0)
482482 let bQ = valueOrElse(getString(h, ap(bz)), g)
483483 let bR = valueOrElse(getInteger(h, aq(bz)), 0)
484484 let bS = q(bz)
485485 let bT = if ((bS > height))
486486 then 0
487487 else if ((aY == j))
488488 then s
489489 else t
490490 let bU = fraction(aV, bT, 100)
491491 let bV = if (if (if ((bO != g))
492492 then (bP > 0)
493493 else false)
494494 then (height > bS)
495495 else false)
496- then fraction(aV, bP, 100)
496+ then fraction(aV, bP, 10000)
497497 else 0
498498 let bW = if (if (if ((bQ != g))
499499 then (bR > 0)
500500 else false)
501501 then (height > bS)
502502 else false)
503- then fraction(aV, bR, 100)
503+ then fraction(aV, bR, 10000)
504504 else 0
505505 let bX = (aV - bU)
506506 if ((bL == bM))
507507 then throw("Art sold out")
508508 else {
509509 let bY = (bL + 1)
510510 let bZ = ((((((((((("Creator: " + bz) + ",
511511 ArtID: ") + R) + ",
512512 SignID: ") + F) + ",
513513 Artwork name: ") + bJ) + ",
514514 Issue: ") + toString(bY)) + "/") + toString(bM))
515515 let ca = Issue(("SA_" + toString((bI + 1))), bZ, 1, 0, false)
516516 let cb = calculateAssetId(ca)
517517 let cc = if (if ((bY == bM))
518518 then true
519519 else !(bK))
520520 then false
521521 else true
522522 let cd = if (if (if ((P == bz))
523523 then (bB != "")
524524 else false)
525525 then (bA != "")
526526 else false)
527527 then addressFromStringValue(bB)
528528 else aT.caller
529529 let ce = if (!(isDefined(aY)))
530530 then "WAVES"
531531 else toBase58String(value(aY))
532532 let bp = b((bo + "_OPEN"))
533533 let cf = DeleteEntry((bo + "_OPEN"))
534534 let cg = StringEntry((bo + "_CLOSED"), ((bp + "_") + toString(bE)))
535535 let ch = ((((((("art_sold_" + toString(bY)) + "_of_") + toString(bM)) + "_") + R) + "_") + bz)
536536 let ci = if (!(bF))
537537 then ((((((((((P + "_") + toString(bE)) + "_") + bD) + "_") + toString(be)) + "_") + bd) + "_") + toBase58String(cb))
538538 else ((((((((((toString(cd) + "_") + toString(bE)) + "_") + bD) + "_") + toString(aV)) + "_") + ce) + "_") + toBase58String(cb))
539539 let cj = StringEntry(ch, ci)
540540 let ck = if ((bV != 0))
541541 then [ScriptTransfer(Address(fromBase58String(g)), (bU - bV), aY), ScriptTransfer(Address(fromBase58String(bO)), bV, aY)]
542542 else [ScriptTransfer(Address(fromBase58String(g)), bU, aY)]
543543 let cl = if ((bW != 0))
544544 then [ScriptTransfer(Address(fromBase58String(bQ)), bW, aY), ScriptTransfer(Address(fromBase58String(bz)), (bX - bW), aY)]
545545 else [ScriptTransfer(Address(fromBase58String(bz)), bX, aY)]
546546 let cm = (([IntegerEntry(Z(bz, R), bY), StringEntry(("nft_" + toBase58String(cb)), ch), IntegerEntry("total_nft_issued", (bI + 1)), IntegerEntry(aj(bz, R), 0), BooleanEntry(aa(bz, R), cc), ca, ScriptTransfer(cd, 1, cb)] ++ ck) ++ cl)
547547 if (bF)
548548 then [cj, cg, cf] :: cm
549549 else cj :: cm
550550 }
551551 }
552552 }
553553 }
554554 }
555555 }
556556
557557
558558 func cn (co) = {
559559 let I = co
560560 if ($isInstanceOf(I, "String"))
561561 then {
562562 let cp = I
563563 cp
564564 }
565565 else throw("Sponsored Public Key String expected")
566566 }
567567
568568
569569 @Callable(cq)
570570 func setConf (c,cr) = {
571571 let P = toString(cq.caller)
572572 if (containsElement([n, toString(this)], P))
573573 then if (contains(c, "conf_"))
574574 then [StringEntry(c, cr)]
575575 else throw("Entries starting with conf_ only")
576576 else throw("You are not allowed to change this")
577577 }
578578
579579
580580
581581 @Callable(aT)
582582 func addArtwork (H,F,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = {
583583 let cu = bt(aT, bu)
584584 let R = cu._1
585585 let P = cu._2
586586 let bE = cu._3
587587 let bv = cu._4
588588 if (!(M(H)))
589589 then throw("Hash should be 64 characters maximum")
590590 else {
591591 let cv = aJ(aA, aD)
592592 let aL = cv._1
593593 let aM = cv._2
594594 let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
595595 if ((cw != ""))
596596 then throw("Something went wrong!")
597597 else {
598598 let cx = (q((P + "_free_drops")) > 0)
599599 let cy = if (cx)
600600 then $Tuple2(0, F)
601601 else aW(aT)
602602 let aV = cy._1
603603 let aY = cy._2
604604 if (!(isDefined(aV)))
605605 then throw("Something went wrong")
606606 else {
607607 let cz = b(aw(H, P))
608608 if ((cz != ""))
609609 then throw("You already added it")
610610 else {
611611 let cA = b(at(H))
612612 if ((cA != ""))
613613 then throw("Hash already registered")
614614 else {
615615 let cB = E(F, P, H)
616616 if (!(cB))
617617 then throw("Sign Certificate not found for this address.")
618618 else {
619619 let cC = if (cx)
620620 then invoke(i, "useFreeDrop", [P], nil)
621621 else unit
622622 if ((cC == cC))
623623 then {
624624 let cD = if (bv)
625625 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
626626 else nil
627627 ([StringEntry(at(H), P), StringEntry(aw(H, P), R), IntegerEntry(Q(P, R), bE), StringEntry(S(P, R), aN), StringEntry(T(P, R), aO), StringEntry(U(P, R), ay), StringEntry(W(P, R), az), StringEntry(V(P, R), aC), StringEntry(ab(P, R), aM), StringEntry(ac(P, R), aL), StringEntry(ae(P, R), cs), StringEntry(ad(P, R), aP), IntegerEntry(X(P, R), 0), StringEntry(Y(P, R), F), IntegerEntry(Z(P, R), 0), BooleanEntry(aa(P, R), false), StringEntry(au(P, F), R), StringEntry(ar(P, R), H), StringEntry(ag(P, R), ct), IntegerEntry(ah(P, R), aQ), ScriptTransfer(Address(fromBase58String(g)), aV, j)] ++ cD)
628628 }
629629 else throw("Strict value is not equal to itself.")
630630 }
631631 }
632632 }
633633 }
634634 }
635635 }
636636 }
637637
638638
639639
640640 @Callable(aT)
641641 func updateArtwork (as,aN,aO,aP,cs,ay,aC,az,aD,aA,ct,aQ,bu) = if (!(w))
642642 then throw(x)
643643 else {
644644 let cE = bt(aT, bu)
645645 let bD = cE._1
646646 let P = cE._2
647647 let bE = cE._3
648648 let bv = cE._4
649649 let cF = aJ(aA, aD)
650650 let aL = cF._1
651651 let aM = cF._2
652652 let cw = aK(P, ay, az, aL, aC, aM, aN, aO, aP, aQ)
653653 if ((cw != ""))
654654 then throw("Something went wrong!")
655655 else {
656656 let cz = b(S(P, as))
657657 if ((cz == ""))
658658 then throw("Entry not found")
659659 else {
660660 let cG = b(al(P, as))
661661 if ((cG == "ILLEGAL"))
662662 then throw("Cannot update ILLEGAL artwork")
663663 else if (!(aZ(P, as)))
664664 then {
665665 let cD = if (bv)
666666 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
667667 else nil
668668 ([StringEntry(S(P, as), aN), StringEntry(T(P, as), aO), StringEntry(U(P, as), ay), StringEntry(W(P, as), az), StringEntry(V(P, as), aC), StringEntry(ac(P, as), aL), StringEntry(ab(P, as), aM), StringEntry(ad(P, as), aP), StringEntry(ae(P, as), cs), StringEntry(ag(P, as), ct), IntegerEntry(ah(P, as), aQ)] ++ cD)
669669 }
670670 else throw("Already minted")
671671 }
672672 }
673673 }
674674
675675
676676
677677 @Callable(aT)
678678 func flagArtwork (R,cH,cG,cI) = {
679679 let cJ = bx(aT)
680680 let bD = cJ._1
681681 let P = cJ._2
682682 if (containsElement([n, toString(this)], P))
683683 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
684684 then [StringEntry(al(cH, R), cG), StringEntry(af(cH, R), cI)]
685685 else throw(("Unknow status " + cG))
686686 else throw("You are not allowed")
687687 }
688688
689689
690690
691691 @Callable(aT)
692692 func deleteArtwork (R,cH) = {
693693 let cK = bx(aT)
694694 let bD = cK._1
695695 let P = cK._2
696696 let ba = if (containsElement([n, toString(this)], P))
697697 then cH
698698 else P
699699 let cz = valueOrErrorMessage(b(S(ba, R)), "No art matching for this address")
700700 if ((cz == ""))
701701 then throw("No art matching for this address")
702702 else {
703703 let H = b(ar(ba, R))
704704 if ((H == ""))
705705 then throw("No art hash matching for this address")
706706 else {
707707 let F = b(Y(ba, R))
708708 if ((F == ""))
709709 then throw("No SIGN ID matching")
710710 else {
711711 let cL = [DeleteEntry(Q(ba, R)), DeleteEntry(S(ba, R)), DeleteEntry(T(ba, R)), DeleteEntry(U(ba, R)), DeleteEntry(W(ba, R)), DeleteEntry(V(ba, R)), DeleteEntry(ab(ba, R)), DeleteEntry(ac(ba, R)), DeleteEntry(ae(ba, R)), DeleteEntry(ad(ba, R)), DeleteEntry(X(ba, R)), DeleteEntry(Y(ba, R)), DeleteEntry(Z(ba, R)), DeleteEntry(aa(ba, R)), DeleteEntry(al(ba, R)), DeleteEntry(ai(ba, R)), DeleteEntry(ak(ba, R)), DeleteEntry(at(H)), DeleteEntry(au(ba, F)), DeleteEntry(aw(H, ba)), DeleteEntry(aj(ba, R)), DeleteEntry(af(ba, R)), DeleteEntry(ag(ba, R)), DeleteEntry(ah(ba, R))]
712712 if (!(aZ(ba, R)))
713713 then if (!(w))
714714 then throw(x)
715715 else cL
716716 else if (containsElement([n, toString(this)], P))
717717 then cL
718718 else throw("Art already minted, you cannot delete it")
719719 }
720720 }
721721 }
722722 }
723723
724724
725725
726726 @Callable(aT)
727727 func sellArtwork (R,bi,cM,aY,bG,bu) = {
728728 let cN = bt(aT, bu)
729729 let bD = cN._1
730730 let P = cN._2
731731 let bE = cN._3
732732 let bv = cN._4
733733 let bJ = b(S(P, R))
734734 if ((bJ == ""))
735735 then throw("This art doesn't match your account")
736736 else {
737737 let cG = b(al(P, R))
738738 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cG))
739739 then throw("Flagged artwork")
740740 else {
741741 let cO = p(("current_bidamount_" + R))
742742 if ((0 > bG))
743743 then throw("Negative end")
744744 else if (if ((bG > 0))
745745 then if ((cM != 1))
746746 then true
747747 else (bi != 0)
748748 else false)
749749 then throw("Timed offer only allowed for unique edition and offer only")
750750 else {
751751 let cP = if ((bG == 0))
752752 then 0
753753 else height
754754 if (!(bg(aY)))
755755 then throw("Something went wrong!")
756756 else if (!(bh(aY, bi)))
757757 then throw("Something went wrong!")
758758 else {
759759 let aR = aH(P)
760760 if ((aR != ""))
761761 then throw(aR)
762762 else {
763763 let bL = p(Z(P, R))
764764 let bM = p(X(P, R))
765765 if ((cM > 100))
766766 then throw("100 editions max per artwork")
767767 else if (if ((bL != 0))
768768 then (bL == bM)
769769 else false)
770770 then throw("Max edition reached.")
771771 else if (if ((bL > 0))
772772 then (bM != cM)
773773 else false)
774774 then throw("Cannot change maximum issuable anymore")
775775 else if (if ((cO > 0))
776776 then (bM != cM)
777777 else false)
778778 then throw("Cannot change maximum issuable with active orders")
779779 else {
780780 let cc = if (if ((bi > 0))
781781 then (cM > 0)
782782 else false)
783783 then true
784784 else false
785785 let cD = if (bv)
786786 then [ScriptTransfer(Address(fromBase58String(P)), 0, unit)]
787787 else nil
788788 ([BooleanEntry(aa(P, R), cc), IntegerEntry(ai(P, R), bi), IntegerEntry(X(P, R), cM), StringEntry(ak(P, R), aY), IntegerEntry(aj(P, R), (cP + bG))] ++ cD)
789789 }
790790 }
791791 }
792792 }
793793 }
794794 }
795795 }
796796
797797
798798
799799 @Callable(aT)
800800 func buyArtwork (R,bz) = by(aT, R, bz, "", "")
801801
802802
803803
804804 @Callable(aT)
805805 func setBid (R,bz) = {
806806 let cQ = bx(aT)
807807 let bD = cQ._1
808808 let P = cQ._2
809809 let bE = cQ._3
810810 let cR = aS(aT)
811811 let aU = cR._1
812812 let aV = cR._2
813813 let aY = if (!(isDefined(aU.assetId)))
814814 then "WAVES"
815815 else toBase58String(value(aU.assetId))
816816 let bG = p(aj(bz, R))
817817 if (if ((bG != 0))
818818 then (height >= bG)
819819 else false)
820820 then throw("Sale ended.")
821821 else {
822822 let cO = p(("current_bidamount_" + R))
823823 if (!(bg(aY)))
824824 then throw("asset not accepted")
825825 else if (!(bh(aY, aV)))
826826 then throw("Wrong min sell")
827827 else {
828828 let bL = p(Z(bz, R))
829829 let bM = p(X(bz, R))
830830 if ((0 >= bM))
831831 then throw("No max edition set for this artwork")
832832 else if ((bL >= bM))
833833 then throw("Sold out, you cannot bid")
834834 else [StringEntry((((((((("bid_" + R) + "_") + bz) + "_") + P) + "_") + bD) + "_OPEN"), ((((aY + "_") + toString(aV)) + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cO + 1))]
835835 }
836836 }
837837 }
838838
839839
840840
841841 @Callable(aT)
842842 func acceptBid (R,bz,bA,bB) = {
843843 let cS = bx(aT)
844844 let bD = cS._1
845845 let P = cS._2
846846 let bE = cS._3
847847 if ((P != bz))
848848 then throw("You cannot do this action")
849849 else by(aT, R, bz, bA, bB)
850850 }
851851
852852
853853
854854 @Callable(aT)
855855 func cancelBid (R,bz,bA,bB) = {
856856 let cT = bx(aT)
857857 let bD = cT._1
858858 let P = cT._2
859859 let bE = cT._3
860860 if (if ((P != bB))
861861 then (P != bz)
862862 else false)
863863 then throw("You cannot do this action")
864864 else {
865865 let cU = if ((P == bz))
866866 then bB
867867 else P
868868 let cO = p(("current_bidamount_" + R))
869869 let bo = ((((((("bid_" + R) + "_") + bz) + "_") + bB) + "_") + bA)
870870 let bp = b((bo + "_OPEN"))
871871 if ((bp == ""))
872872 then throw("Bid not found")
873873 else {
874874 let bq = split(bp, "_")
875875 let aY = bm(bq[0])
876876 let cV = "CANCELED"
877877 [DeleteEntry((bo + "_OPEN")), StringEntry(((bo + "_") + cV), ((bp + "_") + toString(bE))), IntegerEntry(("current_bidamount_" + R), (cO - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bq[1]), aY)]
878878 }
879879 }
880880 }
881881
882882
883883 @Verifier(cW)
884884 func cX () = {
885885 let I = cW
886886 if ($isInstanceOf(I, "InvokeScriptTransaction"))
887887 then {
888888 let cY = I
889889 if (if (if (if ((cY.function == "addArtwork"))
890890 then (cY.dApp == this)
891891 else false)
892892 then (cY.fee == 500000)
893893 else false)
894894 then (cY.feeAssetId == unit)
895895 else false)
896896 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
897897 else if (if (if (if ((cY.function == "updateArtwork"))
898898 then (cY.dApp == this)
899899 else false)
900900 then (cY.fee == 500000)
901901 else false)
902902 then (cY.feeAssetId == unit)
903903 else false)
904904 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
905905 else if (if (if (if ((cY.function == "sellArtwork"))
906906 then (cY.dApp == this)
907907 else false)
908908 then (cY.fee == 500000)
909909 else false)
910910 then (cY.feeAssetId == unit)
911911 else false)
912912 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
913913 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
914914 }
915915 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
916916 }
917917

github/deemru/w8io/169f3d6 
94.95 ms