tx · CijdC4RfRnKEV9vZB3UNk2LxpiXx7wE8KFFMf2y3snyq

3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu:  -0.02400000 Waves

2022.07.29 23:23 [2161590] smart account 3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu > SELF 0.00000000 Waves

{ "type": 13, "id": "CijdC4RfRnKEV9vZB3UNk2LxpiXx7wE8KFFMf2y3snyq", "fee": 2400000, "feeAssetId": null, "timestamp": 1659126237793, "version": 2, "chainId": 84, "sender": "3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu", "senderPublicKey": "914UmzBhcoS4onGGVcBRgb4VPV88m9VCFjsj5WWck5vm", "proofs": [ "5B7eDp7rU8Jwue6rKG7rDthRDa1WpMKWjNLaz7dcnP2KzdSakjuaBu75EYtnWha4WSr77qE9B4Gv8m9NgETXQ9wz" ], "script": "base64:BgJeCAISAwoBCBIDCgEIEgUKAwEICBIMCgoICAgICAgICAgIEg4KDAgBAQgIAQgICAEBARIECgIIARIECgIICBIFCgMICAgSAwoBCBIECgIICBIGCgQICAgIEgUKAwgICFMACHVuaXRUZXN0BwAJb3JhY2xlS2V5AglvcmFjbGVLZXkBBmdldFN0cgEDa2V5BAckbWF0Y2gwCQCdCAIFBHRoaXMFA2tleQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWIFByRtYXRjaDAFAWICAAAGb3JhY2xlCQEGZ2V0U3RyAQUJb3JhY2xlS2V5AAlvcmFjbGVGZWUJAQV2YWx1ZQEJAKYIAQUGb3JhY2xlAAZvd25lcnMJAMwIAgkAnQgCBQlvcmFjbGVGZWUCBm93bmVyMQkAzAgCCQCdCAIFCW9yYWNsZUZlZQIGb3duZXIyBQNuaWwAD2NvbGxlY3Rpb25zRGFwcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCW9yYWNsZUZlZQIPY29sbGVjdGlvbnNEYXBwAhhjb2xsZWN0aW9uRGFwcCBub3QgZm91bmQAC2ZlZVJlY2VpdmVyCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUJb3JhY2xlRmVlAgtmZWVSZWNlaXZlcgIVZmVlUmVjZWl2ZXIgbm90IGZvdW5kAAhjZXJ0RGFwcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCW9yYWNsZUZlZQIIY2VydERhcHACEmNlcnREYXBwIG5vdCBmb3VuZAAHZmVlRGFwcAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCdCAIFCW9yYWNsZUZlZQIHZmVlRGFwcAIRZmVlRGFwcCBub3QgZm91bmQACHVzZXJEYXBwCQEFdmFsdWUBCQCmCAEJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAnQgCBQlvcmFjbGVGZWUCCHVzZXJEYXBwAhJ1c2VyZGFwcCBub3QgZm91bmQACXN0YWtlRGFwcAkApggBCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUJb3JhY2xlRmVlAglzdGFrZURhcHACFHNjb25leERhcHAgbm90IGZvdW5kAAtVU0ROQXNzZXRJZAkA2QQBCQERQGV4dHJOYXRpdmUoMTA1MykCBQlvcmFjbGVGZWUCC1VTRE5Bc3NldElkAA1TY29uZXhBc3NldElkCQDZBAEJARFAZXh0ck5hdGl2ZSgxMDUzKQIFCW9yYWNsZUZlZQINU2NvbmV4QXNzZXRJZAAFdHlwZXMJAMwIAgIFSU1BR0UJAMwIAgIDUERGCQDMCAICBVZJREVPBQNuaWwADFByZXZpZXd0eXBlcwkAzAgCAgNQREYFA25pbAALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEHVzZXJVbnJlZ2lzdGVyZWQCDFVOUkVHSVNURVJFRAAMYXVjdGlvblR5cGUxAgdCSURUWVBFAAxhdWN0aW9uVHlwZTICC1RSQURJVElPTkFMAAxhdWN0aW9uVHlwZTMCBkRJUkVDVAEXZ2V0U3RyaW5nQnlLZXlGcm9tVXNlcnMBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAUDa2V5AgABDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgABFWdldFN0cmluZ0J5S2V5T3JFcnJvcgIDa2V5BWVycm9yCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5BQVlcnJvcgEZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUJb3JhY2xlRmVlBQNrZXkCH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBD2dldEludGVnZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ9nZXRCb29sZWFuQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHAQx2YWxpZGF0ZUhhc2gBBGhhc2gJAAACCQCxAgEFBGhhc2gAQAENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyAQdrZXlEYXRlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUFYXJ0SWQCAV8FBmNhbGxlcgEHa2V5TmFtZQIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FBWFydElkAgFfBQZjYWxsZXIBB2tleURlc2MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQVhcnRJZAIBXwUGY2FsbGVyAQ1rZXlEaXNwbGF5Q2lkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FBWFydElkAgFfBQZjYWxsZXIBDWtleVByZXZpZXdDaWQCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X3ByZXZpZXdfY2lkXwUFYXJ0SWQCAV8FBmNhbGxlcgEKa2V5TWF4TWludAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAgxhcnRfbWF4bWludF8FBWFydElkAgFfBQZjYWxsZXIBEmtleUhpZ2hlc3RCaWRCaWRJZAEFYXJ0SWQJAKwCAgIUYXJ0X2hpZ2hlc3RCaWRCaWRJZF8FBWFydElkAQhrZXlCaWRJZAEFYmlkSWQJAKwCAgIEYmlkXwUFYmlkSWQBC2tleUR1cmF0aW9uAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICDWFydF9kdXJhdGlvbl8FBWFydElkAgFfBQZjYWxsZXIBDGtleUVuZEhlaWdodAIGY2FsbGVyBWFydElkCQCsAgIJAKwCAgkArAICAg5hcnRfZW5kaGVpZ2h0XwUFYXJ0SWQCAV8FBmNhbGxlcgEOa2V5QXVjdGlvblR5cGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIQYXJ0X2F1Y3Rpb250eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEJa2V5SXNzdWVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQVhcnRJZAIBXwUGY2FsbGVyAQxLZXlOZnRJc3N1ZXIBBW5mdElkCQCsAgICC25mdF9pc3N1ZWRfBQVuZnRJZAELS2V5TmZ0QXJ0SWQBBW5mdElkCQCsAgICCm5mdF9hcnRJZF8FBW5mdElkAQlrZXlPblNhbGUCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X29uc2FsZV8FBWFydElkAgFfBQZjYWxsZXIBDmtleUVudGl0bGVtZW50AgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEGFydF9lbnRpdGxlbWVudF8FBWFydElkAgFfBQZjYWxsZXIBB2tleVRhZ3MCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X3RhZ3NfBQVhcnRJZAIBXwUGY2FsbGVyAQdrZXlUeXBlAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUFYXJ0SWQCAV8FBmNhbGxlcgEIa2V5UHJpY2UCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUFYXJ0SWQCAV8FBmNhbGxlcgESa2V5QXNzZXRJZEFjY2VwdGVkAgZjYWxsZXIFYXJ0SWQJAKwCAgkArAICCQCsAgICEmFydF9hc3NldEFjY2VwdGVkXwUFYXJ0SWQCAV8FBmNhbGxlcgERa2V5SGFzaEJ5VHhpZEFkZHICBmNhbGxlcgR0eGlkCQCsAgIJAKwCAgkArAICAhNnZXRfaGFzaGJ5dHhpZGFkZHJfBQR0eGlkAgFfBQZjYWxsZXIBDmtleU93bmVyQnlIYXNoAQpzaGEyNTZIYXNoCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUKc2hhMjU2SGFzaAESa2V5VHhpZEJ5SGFzaE93bmVyAgpzaGEyNTZIYXNoBmNhbGxlcgkArAICAhdnZXRfdHhpZF9ieV9oYXNoX293bmVyXwkA2AQBCQDUFgEJAJsDAQkArAICBQpzaGEyNTZIYXNoBQZjYWxsZXIBDWtleUNvbGxlY3Rpb24CBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgILY29sbGVjdGlvbl8FBWFydElkAgFfBQZjYWxsZXIADG1pblVTRE5QcmljZQkBGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUBCQCsAgICBG1pbl8JANgEAQULVVNETkFzc2V0SWQAEGN1cnJlbnRGZWVTY29uZXgJARlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAQkArAICAgRmZWVfCQDYBAEFDVNjb25leEFzc2V0SWQBEGdldEFtb3VudEJ5QmlkSWQBBWJpZElkCQELdmFsdWVPckVsc2UCCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCGtleUJpZElkAQUFYmlkSWQAAAEaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQBBWFydElkBAViaWRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkCQEQZ2V0QW1vdW50QnlCaWRJZAEFBWJpZElkAQ52YWxpZGF0ZVN0cmluZwIDc3RyA21heAMJAAACCQCxAgEFA3N0cgAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUDc3RyBQNtYXgJAAIBCQCsAgIFA3N0cgIMIGlzIHRvbyBsb25nBgEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwkAAAIFCnVzZXJTdGF0dXMFEHVzZXJVbnJlZ2lzdGVyZWQCLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICdBY2NvdW50JyB0YWIDCQAAAgUKdXNlclN0YXR1cwUNdXNlclN1c3BlbmRlZAIRQWNjb3VudCBzdXNwZW5kZWQDCQAAAgUKdXNlclN0YXR1cwULdXNlclJlbW92ZWQCD0FjY291bnQgcmVtb3ZlZAIAARN2YWxpZGF0ZUFydHdvcmtEYXRhBQZjYWxsZXIKY2lkRGlzcGxheQRuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyAwkAAAIJALECAQUKY2lkRGlzcGxheQAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBAiE9AgkAsQIBBQpjaWREaXNwbGF5AC4JAAIBAh5UaGlzIGRvZXNuJ3Qgc2VlbSBhIHZhbGlkIENJRCEDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFBG5hbWUAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgULZGVzY3JpcHRpb24A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMJAGYCCQCQAwEJALUJAgUEdGFncwIBLAAFCQACAQILNSB0YWdzIG1heC4CAAEJaXNQYXltZW50AgFpBWluZGV4AwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMFBWluZGV4BAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAkAlAoCBQdwYXltZW50BQZhbW91bnQBC2lzQXJ0TWludGVkAglhZGRyVG9Vc2UFYXJ0SWQEByRtYXRjaDAJAJoIAgUEdGhpcwkBCWtleUlzc3VlZAIFCWFkZHJUb1VzZQUFYXJ0SWQDCQABAgUHJG1hdGNoMAIDSW50BAFiBQckbWF0Y2gwAwkBAiE9AgUBYgAABgcHARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMBaQxwcmljZUFzc2V0SWQMYXJ0d29ya1ByaWNlBAVwRGF0YQkBCWlzUGF5bWVudAIFAWkAAQQHcGF5bWVudAgFBXBEYXRhAl8xBAZhbW91bnQIBQVwRGF0YQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhdBc3NldCBJZCBpcyBub3QgZGVmaW5lZAMDCQBmAgkAsQIBBQxwcmljZUFzc2V0SWQAAAkAAAIJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAUMcHJpY2VBc3NldElkBwgFB3BheW1lbnQHYXNzZXRJZAkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUMYXJ0d29ya1ByaWNlBQZhbW91bnQJAAIBCQCsAgIJAKwCAgkArAICAhRQYXltZW50IGRvbid0IG1hdGNoIAkApAMBBQxhcnR3b3JrUHJpY2UCASAJAKQDAQUGYW1vdW50CQCUCgIFBmFtb3VudAUHYXNzZXRJZAEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMJAQIhPQIFB2Fzc2V0SWQJANgEAQULVVNETkFzc2V0SWQJAAIBAhJPbmx5IFVTRE4gYWNjZXB0ZWQGAQ92YWxpZGF0ZU1pblNlbGwCB2Fzc2V0SWQFcHJpY2UEDW1pblNlbGxTY29uZXgFDG1pblVTRE5QcmljZQMDAwkBAiE9AgUFcHJpY2UAAAkAZgIFDW1pblNlbGxTY29uZXgFBXByaWNlBwYJAQIhPQIFB2Fzc2V0SWQJANgEAQULVVNETkFzc2V0SWQJAAIBCQCsAgICGVdyb25nIG1pbmltdW0gc2VsbCBwcmljZSAJAKQDAQUNbWluU2VsbFNjb25leAYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMJAAIBAhZPbmx5IFVTRE4gaXMgYWNjZXB0ZWQhCQDZBAEFB2Fzc2V0SWQBFmdldFByaWNlQXNzZXRJZEZyb21CaWQBCmJpZERhdGFLZXkEB2JpZERhdGEJAQ5nZXRTdHJpbmdCeUtleQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAliaWRBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEECmJpZEFzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAADCQBnAgAABQliaWRBbW91bnQJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUJYmlkQW1vdW50BQpiaWRBc3NldElkAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQpnZXRBcnREYXRhBAFpBmlzc3VlcgVhcnRJZAVpc0JpZAQOY2FsbGVySXNJc3N1ZXIJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMFBmlzc3VlcgQIdG90YWxORlQJAQ9nZXRJbnRlZ2VyQnlLZXkBAhB0b3RhbF9uZnRfaXNzdWVkBAthcnR3b3JrTmFtZQkBDmdldFN0cmluZ0J5S2V5AQkBB2tleU5hbWUCBQZpc3N1ZXIFBWFydElkAwkAAAIFC2FydHdvcmtOYW1lAgAJAAIBAhFBcnQgZG9lc24ndCBleGlzdAQIaXNPblNhbGUJAQ9nZXRCb29sZWFuQnlLZXkBCQEJa2V5T25TYWxlAgUGaXNzdWVyBQVhcnRJZAQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZpc3N1ZXIFBWFydElkBAxhcnR3b3JrUHJpY2UJAQt2YWx1ZU9yRWxzZQIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEIa2V5UHJpY2UCBQZpc3N1ZXIFBWFydElkBQxtaW5VU0ROUHJpY2UEDHByaWNlQXNzZXRJZAMFDmNhbGxlcklzSXNzdWVyCQDYBAEFC1VTRE5Bc3NldElkCQEOZ2V0U3RyaW5nQnlLZXkBCQESa2V5QXNzZXRJZEFjY2VwdGVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAMDAwkBASEBBQVpc0JpZAkBASEBBQ5jYWxsZXJJc0lzc3VlcgcDAwkAZwIAAAUMYXJ0d29ya1ByaWNlBgkBASEBBQhpc09uU2FsZQYJAGcCAAAFCm1heENhblNlbGwHCQACAQIQQXJ0IG5vdCBmb3Igc2FsZQMDAwkBASEBBQVpc0JpZAUOY2FsbGVySXNJc3N1ZXIHCQBnAgAABQptYXhDYW5TZWxsBwkAAgECFE1heCBpc3N1YWJsZSBub3Qgc2V0CQCZCgcFCHRvdGFsTkZUBQthcnR3b3JrTmFtZQUKYW1vdW50U29sZAUMYXJ0d29ya1ByaWNlBQxwcmljZUFzc2V0SWQFCm1heENhblNlbGwFCGlzT25TYWxlAQpnZXRCaWREYXRhCQFpBmNhbGxlcgZpc3N1ZXIFYXJ0SWQIYmlkT3duZXIFYmlkSWQMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQVpc0JpZAQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGaXNzdWVyAwMFBWlzQmlkCQECIT0CBQljaGVja1VzZXICAAcJAAIBBQljaGVja1VzZXIECmJpZERhdGFLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUFYXJ0SWQCAV8FBmlzc3VlcgIBXwUIYmlkT3duZXICAV8FBWJpZElkBAx0MDEzNTE5MTM2NDgDBQVpc0JpZAkBFmdldFByaWNlQXNzZXRJZEZyb21CaWQBBQpiaWREYXRhS2V5CQEUdmFsaWRhdGVQcmljZUFzc2V0SWQDBQFpBQxwcmljZUFzc2V0SWQFDGFydHdvcmtQcmljZQQGYW1vdW50CAUMdDAxMzUxOTEzNjQ4Al8xBAdhc3NldElkCAUMdDAxMzUxOTEzNjQ4Al8yCQCVCgMFCmJpZERhdGFLZXkFBmFtb3VudAUHYXNzZXRJZAEMZ2V0SXNzdWVEYXRhCwZpc3N1ZXIFYXJ0SWQLYXJ0d29ya05hbWUNbmV3QW1vdW50U29sZAptYXhDYW5TZWxsCHRvdGFsTkZUBmNhbGxlcghiaWRPd25lcgViaWRJZAFpCGlzT25TYWxlBAlpc3N1ZU1ldGEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUGaXNzdWVyAggsQXJ0SUQ6IAUFYXJ0SWQCDyxBcnR3b3JrIG5hbWU6IAULYXJ0d29ya05hbWUCCCxJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQKc2VsbFN0YXR1cwMDCQAAAgUNbmV3QW1vdW50U29sZAUKbWF4Q2FuU2VsbAYJAQEhAQUIaXNPblNhbGUHBgQKcmVjZWl2ZU5GVAMJAQIhPQIFCGJpZE93bmVyAgAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFCGJpZE93bmVyCAUBaQZjYWxsZXIJAJUKAwUKc2VsbFN0YXR1cwUKcmVjZWl2ZU5GVAUJaXNzdWVNZXRhAQxnZXRCaWRLZXlWYWwDB2Fzc2V0SWQKYmlkRGF0YUtleQRkYXRlBAphc3NldElkQmlkAwkBASEBCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAkAAgECFU9ubHkgVVNETiBpcyBhY2NlcHRlZAkA2AQBCQEFdmFsdWUBBQdhc3NldElkBAdiaWREYXRhCQEOZ2V0U3RyaW5nQnlLZXkBCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOBAliaWREZWxPbGQJAQtEZWxldGVFbnRyeQEJAKwCAgUKYmlkRGF0YUtleQIFX09QRU4ECWJpZFVwZGF0ZQkBC1N0cmluZ0VudHJ5AgkArAICBQpiaWREYXRhS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQCVCgMFCmFzc2V0SWRCaWQFCWJpZERlbE9sZAUJYmlkVXBkYXRlAQdidXlNaW50BgFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgVpc0JpZAQKY2FsbGVyRGF0YQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUKY2FsbGVyRGF0YQJfMQQGY2FsbGVyCAUKY2FsbGVyRGF0YQJfMgQEZGF0ZQgFCmNhbGxlckRhdGECXzMEB2FydERhdGEJAQpnZXRBcnREYXRhBAUBaQUGaXNzdWVyBQVhcnRJZAUFaXNCaWQECHRvdGFsTkZUCAUHYXJ0RGF0YQJfMQQLYXJ0d29ya05hbWUIBQdhcnREYXRhAl8yBAphbW91bnRTb2xkCAUHYXJ0RGF0YQJfMwQMYXJ0d29ya1ByaWNlCAUHYXJ0RGF0YQJfNAQMcHJpY2VBc3NldElkCAUHYXJ0RGF0YQJfNQQKbWF4Q2FuU2VsbAgFB2FydERhdGECXzYECGlzT25TYWxlCAUHYXJ0RGF0YQJfNwQHYmlkRGF0YQkBCmdldEJpZERhdGEJBQFpBQZjYWxsZXIFBmlzc3VlcgUFYXJ0SWQFCGJpZE93bmVyBQViaWRJZAUMcHJpY2VBc3NldElkBQxhcnR3b3JrUHJpY2UFBWlzQmlkBApiaWREYXRhS2V5CAUHYmlkRGF0YQJfMQQGYW1vdW50CAUHYmlkRGF0YQJfMgQHYXNzZXRJZAgFB2JpZERhdGECXzMEDW5ld0Ftb3VudFNvbGQDCQAAAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECDk1heCBpdGVtcyBzb2xkCQBkAgUKYW1vdW50U29sZAABBAppc3N1ZXJEYXRhCQEMZ2V0SXNzdWVEYXRhCwUGaXNzdWVyBQVhcnRJZAULYXJ0d29ya05hbWUFDW5ld0Ftb3VudFNvbGQFCm1heENhblNlbGwFCHRvdGFsTkZUBQZjYWxsZXIFCGJpZE93bmVyBQViaWRJZAUBaQUIaXNPblNhbGUECnNlbGxTdGF0dXMIBQppc3N1ZXJEYXRhAl8xBApyZWNlaXZlTkZUCAUKaXNzdWVyRGF0YQJfMgQJaXNzdWVNZXRhCAUKaXNzdWVyRGF0YQJfMwQLaWRORlRJbnZva2UJAPwHBAUEdGhpcwIHbWludE5mdAkAzAgCBQh0b3RhbE5GVAkAzAgCBQlpc3N1ZU1ldGEJAMwIAgkApQgBBQpyZWNlaXZlTkZUBQNuaWwFA25pbAMJAAACBQtpZE5GVEludm9rZQULaWRORlRJbnZva2UEBWlkTkZUBAckbWF0Y2gwBQtpZE5GVEludm9rZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXIFByRtYXRjaDAFAXIJAAIBAhdJbmNvcnJlY3QgaW52b2tlIHJlc3VsdAQLYmlkS2V5VmFsdWUJAQxnZXRCaWRLZXlWYWwDBQdhc3NldElkBQpiaWREYXRhS2V5BQRkYXRlBAphc3NldElkQmlkCAULYmlkS2V5VmFsdWUCXzEECWJpZERlbE9sZAgFC2JpZEtleVZhbHVlAl8yBAliaWRVcGRhdGUIBQtiaWRLZXlWYWx1ZQJfMwQHc29sZEtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUNbmV3QW1vdW50U29sZAIEX29mXwkApAMBBQptYXhDYW5TZWxsAgFfBQVhcnRJZAIBXwUGaXNzdWVyBAlzb2xkVmFsdWUDCQEBIQEFBWlzQmlkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFBmNhbGxlcgIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQxhcnR3b3JrUHJpY2UCAV8FDHByaWNlQXNzZXRJZAIBXwUFaWRORlQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQpyZWNlaXZlTkZUAgFfCQCkAwEFBGRhdGUCAV8FAmlkAgFfCQCkAwEFBmFtb3VudAIBXwUKYXNzZXRJZEJpZAIBXwUFaWRORlQEEmludm9rZVRlYW1GZWVTcGxpdAkA/AcECQETdmFsdWVPckVycm9yTWVzc2FnZQIJAKYIAQUHZmVlRGFwcAkArAICBQdmZWVEYXBwAgogbm90IGZvdW5kAgZwYXlGZWUJAMwIAgUFYXJ0SWQJAMwIAgUGaXNzdWVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFBmFtb3VudAUDbmlsAwkAAAIFEmludm9rZVRlYW1GZWVTcGxpdAUSaW52b2tlVGVhbUZlZVNwbGl0BAhzb2xkRGF0YQkBC1N0cmluZ0VudHJ5AgUHc29sZEtleQUJc29sZFZhbHVlBAZidXlSZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZpc3N1ZXIFBWFydElkBQ1uZXdBbW91bnRTb2xkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwUFaWRORlQFB3NvbGRLZXkJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQh0b3RhbE5GVAABCQDMCAIJAQxCb29sZWFuRW50cnkCCQEJa2V5T25TYWxlAgUGaXNzdWVyBQVhcnRJZAUKc2VsbFN0YXR1cwkAzAgCCQELU3RyaW5nRW50cnkCCQEMS2V5TmZ0SXNzdWVyAQUFaWRORlQFBmlzc3VlcgkAzAgCCQELU3RyaW5nRW50cnkCCQELS2V5TmZ0QXJ0SWQBBQVpZE5GVAUFYXJ0SWQFA25pbAQfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQkA/AcECQETdmFsdWVPckVycm9yTWVzc2FnZQIFCXN0YWtlRGFwcAIOdGhpcyBub3QgZm91bmQCGXZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnQFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAACBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlBANyZXMJAPwHBAkBEUBleHRyTmF0aXZlKDEwNjIpAQUIY2VydERhcHACCmNyZWF0ZUNlcnQJAMwIAgkApQgBBQpyZWNlaXZlTkZUCQDMCAIFBWlkTkZUCQDMCAIFBmlzc3VlcgUDbmlsBQNuaWwDCQAAAgUDcmVzBQNyZXMDBQVpc0JpZAkAzQgCCQDNCAIJAM0IAgUGYnV5UmVzBQhzb2xkRGF0YQUJYmlkVXBkYXRlBQliaWREZWxPbGQJAMwIAgUIc29sZERhdGEFBmJ1eVJlcwkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEUc2V0QmlkTm9uVHJhZGl0aW9uYWwDAWkFYXJ0SWQGaXNzdWVyBAx0MDI3NzA5Mjc3NDcJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDHQwMjc3MDkyNzc0NwJfMQQGY2FsbGVyCAUMdDAyNzcwOTI3NzQ3Al8yBARkYXRlCAUMdDAyNzcwOTI3NzQ3Al8zBAx0MDI3NzUyMjc3ODgJAQlpc1BheW1lbnQCBQFpAAAEB3BheW1lbnQIBQx0MDI3NzUyMjc3ODgCXzEEBmFtb3VudAgFDHQwMjc3NTIyNzc4OAJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhZPbmx5IFVTRE4gaXMgYWNjZXB0ZWQhCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkBAphbW91bnRTb2xkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBCWtleUlzc3VlZAIFBmlzc3VlcgUFYXJ0SWQECm1heENhblNlbGwJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEKa2V5TWF4TWludAIFBmlzc3VlcgUFYXJ0SWQDCQBnAgAABQptYXhDYW5TZWxsCQACAQIjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQBnAgUKYW1vdW50U29sZAUKbWF4Q2FuU2VsbAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAQfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQkA/AcECQETdmFsdWVPckVycm9yTWVzc2FnZQIFCXN0YWtlRGFwcAIOdGhpcyBub3QgZm91bmQCGXZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnQFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAEFA25pbAMJAAACBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlBR92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQZjYWxsZXICAV8FAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQdhc3NldElkAgFfCQCkAwEFBmFtb3VudAIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGQCBQZiaWROYnIAAQUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARFzZXRCaWRUcmFkaXRpb25hbAMBaQVhcnRJZAZpc3N1ZXIECWVuZEhlaWdodAkBD2dldEludGVnZXJCeUtleQEJAQxrZXlFbmRIZWlnaHQCBQZpc3N1ZXIFBWFydElkBApoaWdoZXN0QmlkCQEaZ2V0QW1vdW50SGlnaGVzdEJpZEJ5QXJ0SWQBBQVhcnRJZAMJAGYCBQZoZWlnaHQFCWVuZEhlaWdodAkAAgECIVRoaXMgYXVjdGlvbiBpcyBmaW5pc2hlZCBhbHJlYWR5IQQLY2FsbGRlckRhdGEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFC2NhbGxkZXJEYXRhAl8xBAZjYWxsZXIIBQtjYWxsZGVyRGF0YQJfMgQEZGF0ZQgFC2NhbGxkZXJEYXRhAl8zBAxpc1BheW1lbnRWYXIJAQlpc1BheW1lbnQCBQFpAAAEB3BheW1lbnQIBQxpc1BheW1lbnRWYXICXzEEBmFtb3VudAgFDGlzUGF5bWVudFZhcgJfMgMJAGcCBQpoaWdoZXN0QmlkBQZhbW91bnQJAAIBCQCsAgICIFBsZWFzZSBwbGFjZSBhIGJpZCBoaWdoZXIgdGhhbjogCQCkAwEFCmhpZ2hlc3RCaWQEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQACAQIWT25seSBVU0ROIGlzIGFjY2VwdGVkIQkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQED21pbkFydHdvcmtQcmljZQkBC3ZhbHVlT3JFbHNlAgkBD2dldEludGVnZXJCeUtleQEJAQhrZXlQcmljZQIFBmlzc3VlcgUFYXJ0SWQFDG1pblVTRE5QcmljZQMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkAZgIFD21pbkFydHdvcmtQcmljZQUGYW1vdW50CQACAQIXQmlkIGlzIGJlbG93IG1pbiBwcmljZSEECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAMJAGcCAAAFCm1heENhblNlbGwJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkBB92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUJc3Rha2VEYXBwAg50aGlzIG5vdCBmb3VuZAIZdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudAUDbmlsCQDMCAIJAJEDAggFAWkIcGF5bWVudHMAAQUDbmlsAwkAAAIFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FBmNhbGxlcgIBXwUCaWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIFB2Fzc2V0SWQCAV8JAKQDAQUGYW1vdW50AgFfCQCkAwEFBGRhdGUJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAkAZAIFBmJpZE5icgABCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlIaWdoZXN0QmlkQmlkSWQBBQVhcnRJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEIa2V5QmlkSWQBCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQFBmFtb3VudAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuARdhY2NlcHRCaWROb25UcmFkaXRpb25hbAUBaQVhcnRJZAZpc3N1ZXIFYmlkSWQIYmlkT3duZXIEBmNhbGxlcgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzAwkBAiE9AgUGY2FsbGVyBQZpc3N1ZXIJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uCQEHYnV5TWludAYFAWkFBWFydElkBQZpc3N1ZXIFBWJpZElkBQhiaWRPd25lcgYBDnJlc3RhcnRBdWN0aW9uAgVhcnRJZAZpc3N1ZXIECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGaXNzdWVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGaXNzdWVyBQVhcnRJZAQMb2xkRW5kSGVpZ2h0CQEPZ2V0SW50ZWdlckJ5S2V5AQkBDGtleUVuZEhlaWdodAIFBmlzc3VlcgUFYXJ0SWQECGR1cmF0aW9uCQEPZ2V0SW50ZWdlckJ5S2V5AQkBC2tleUR1cmF0aW9uAgUGaXNzdWVyBQVhcnRJZAQJZW5kSGVpZ2h0CQBkAgUIZHVyYXRpb24FBmhlaWdodAMJAGcCBQxvbGRFbmRIZWlnaHQFBmhlaWdodAkAAgECJFByZXZpb3VzIGF1Y3Rpb24gaXNuJ3QgY29tcGxldGVkIHlldAMJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQImQ2FuJ3QgcmVzdGFydCBhdWN0aW9uLCBtYXggYW1vdW50IHNvbGQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlFbmRIZWlnaHQCBQZpc3N1ZXIFBWFydElkBQllbmRIZWlnaHQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkBQNuaWwBFGFjY2VwdEJpZFRyYWRpdGlvbmFsBQFpBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQJZW5kSGVpZ2h0CQEPZ2V0SW50ZWdlckJ5S2V5AQkBDGtleUVuZEhlaWdodAIFBmlzc3VlcgUFYXJ0SWQEDGhpZ2hlc3RCaWRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkAwkAZwIFCWVuZEhlaWdodAUGaGVpZ2h0CQACAQIhVGhpcyBhdWN0aW9uIGlzIG5vdCB5ZXQgZmluaXNoZWQhAwkBAiE9AgUFYmlkSWQFDGhpZ2hlc3RCaWRJZAkAAgECHFRoaXMgaXMgbm90IHRoZSB3aW5uaW5nIGJpZCEEC2J1eU1pbnREYXRhCQEHYnV5TWludAYFAWkFBWFydElkBQZpc3N1ZXIFBWJpZElkBQhiaWRPd25lcgYEEnJlc3RhcnRBdWN0aW9uRGF0YQkBDnJlc3RhcnRBdWN0aW9uAgUFYXJ0SWQFBmlzc3VlcgkAzggCBRJyZXN0YXJ0QXVjdGlvbkRhdGEFC2J1eU1pbnREYXRhAQ1jYW5jZWxCaWRJbXBsBAFpBWFydElkBmlzc3VlcgViaWRJZAQMdDAyODk0MjI5MDk0CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQx0MDI4OTQyMjkwOTQCXzEEBmNhbGxlcggFDHQwMjg5NDIyOTA5NAJfMgQEZGF0ZQgFDHQwMjg5NDIyOTA5NAJfMwQGYmlkTmJyCQEPZ2V0SW50ZWdlckJ5S2V5AQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FBWFydElkBApiaWREYXRhS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FBWFydElkAgFfBQZpc3N1ZXICAV8FBmNhbGxlcgIBXwUFYmlkSWQEB2JpZERhdGEJARVnZXRTdHJpbmdCeUtleU9yRXJyb3ICCQCsAgIFCmJpZERhdGFLZXkCBV9PUEVOAg1CaWQgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8EB2Fzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAAECWJpZFN0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUKYmlkRGF0YUtleQIBXwUJYmlkU3RhdHVzCQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGUCBQZiaWROYnIAAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwBGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbAQBaQVhcnRJZAZpc3N1ZXIFYmlkSWQEDHQwMjg5NDIyOTA5NAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUMdDAyODk0MjI5MDk0Al8xBAZjYWxsZXIIBQx0MDI4OTQyMjkwOTQCXzIEBGRhdGUIBQx0MDI4OTQyMjkwOTQCXzMEBmJpZE5icgkBD2dldEludGVnZXJCeUtleQEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQVhcnRJZAQKYmlkRGF0YUtleQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgRiaWRfBQVhcnRJZAIBXwUGaXNzdWVyAgFfBQZjYWxsZXICAV8FBWJpZElkBAdiaWREYXRhCQEVZ2V0U3RyaW5nQnlLZXlPckVycm9yAgkArAICBQpiaWREYXRhS2V5AgVfT1BFTgINQmlkIG5vdCBmb3VuZAQKYmlkRGF0YUFycgkAtQkCBQdiaWREYXRhAgFfBAdhc3NldElkCQENZ2V0QmlkQXNzZXRJZAEJAJEDAgUKYmlkRGF0YUFycgAABAliaWRTdGF0dXMCCENBTkNFTEVEBAliaWRBbW91bnQJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEEDGhpZ2hlc3RCaWRJZAkBDmdldFN0cmluZ0J5S2V5AQkBEmtleUhpZ2hlc3RCaWRCaWRJZAEFBWFydElkAwkAAAIFBWJpZElkBQxoaWdoZXN0QmlkSWQJAAIBAiFZb3UgY2FuJ3QgY2FuY2VsIHRoZSBoaWdoZXN0IGJpZCEJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQpiaWREYXRhS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUKYmlkRGF0YUtleQIBXwUJYmlkU3RhdHVzCQCsAgIJAKwCAgUHYmlkRGF0YQIBXwkApAMBBQRkYXRlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQJAGUCBQZiaWROYnIAAQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyBQliaWRBbW91bnQFB2Fzc2V0SWQFA25pbAwBaQEIaW5pdERhcHABB2RhcHBLZXkDCQECIT0CCAUBaQZjYWxsZXIFBHRoaXMJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uAwkBAiE9AgUGb3JhY2xlAgAJAAIBAidvcmFjbGUgYWxyZWFkeSBzZXQsIHlvdSBjYW4ndCBvdmVycmlkZSEJAMwIAgkBC1N0cmluZ0VudHJ5AgUJb3JhY2xlS2V5BQdkYXBwS2V5BQNuaWwBaQEUcmVzdGFydEF1Y3Rpb25NYW51YWwBBWFydElkAwkBAiE9AgkBGmdldEFtb3VudEhpZ2hlc3RCaWRCeUFydElkAQUFYXJ0SWQAAAkAAgECHlBsZWFzZSBhY2NlcHQgdGhlIGhpZ2hlc3QgYmlkIQkBDnJlc3RhcnRBdWN0aW9uAgUFYXJ0SWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwFpAQdtaW50TmZ0Awh0b3RhbE5GVAlpc3N1ZU1ldGEKcmVjZWl2ZU5GVAMJAQIhPQIIBQFpBmNhbGxlcgUEdGhpcwkAAgECHE9ubHkgdGhlIGRBcHAgY2FuIG1pbnQgTkZUJ3MEDnJlY2VpdmVORlRBZGR5CQEHQWRkcmVzcwEJANkEAQUKcmVjZWl2ZU5GVAQIaXNzdWVORlQJAMIIBQkArAICAgdTQ09ORVhfCQCkAwEJAGQCBQh0b3RhbE5GVAABBQlpc3N1ZU1ldGEAAQAABwQFaWRORlQJALgIAQUIaXNzdWVORlQJAJQKAgkAzAgCBQhpc3N1ZU5GVAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQ5yZWNlaXZlTkZUQWRkeQABBQVpZE5GVAUDbmlsCQDYBAEFBWlkTkZUAWkBCmFkZEFydHdvcmsKCnNoYTI1Nkhhc2gEbmFtZQtkZXNjcmlwdGlvbgR0YWdzBHR5cGUKY2lkRGlzcGxheQtlbnRpdGxlbWVudAdwcmV2aWV3CmNvbGxlY3Rpb24Nc3ViY29sbGVjdGlvbgQMdDAxNzc0MDE3NzgxCQEMaWRDYWxsZXJEYXRlAQUBaQQFYXJ0SWQIBQx0MDE3NzQwMTc3ODECXzEEBmNhbGxlcggFDHQwMTc3NDAxNzc4MQJfMgQEZGF0ZQgFDHQwMTc3NDAxNzc4MQJfMwMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFBXR5cGVzBQR0eXBlCQACAQIMVW5rbm93biB0eXBlBA92YWxpZGF0ZUFydHdvcmsJARN2YWxpZGF0ZUFydHdvcmtEYXRhBQUGY2FsbGVyBQpjaWREaXNwbGF5BQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwMJAQIhPQIFD3ZhbGlkYXRlQXJ0d29yawIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBB92YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50SW52b2tlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgUJc3Rha2VEYXBwAg50aGlzIG5vdCBmb3VuZAIZdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudAUDbmlsCQDMCAIJAJEDAggFAWkIcGF5bWVudHMAAAUDbmlsAwkAAAIFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UFH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UEC3ByZXZpZXdEYXRhAwkBD2NvbnRhaW5zRWxlbWVudAIFDFByZXZpZXd0eXBlcwUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5UHJldmlld0NpZAIFBmNhbGxlcgUFYXJ0SWQFB3ByZXZpZXcFA25pbAUDbmlsBBZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQ9jb2xsZWN0aW9uc0RhcHAJAKwCAgUPY29sbGVjdGlvbnNEYXBwAgogbm90IGZvdW5kAhFjb2xsZWN0aW9uUHJvY2VzcwkAzAgCBQpjb2xsZWN0aW9uCQDMCAIFDXN1YmNvbGxlY3Rpb24JAMwIAgUGY2FsbGVyBQNuaWwFA25pbAMJAAACBRZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlBRZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlBAplbnRyeUV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQESa2V5VHhpZEJ5SGFzaE93bmVyAgUKc2hhMjU2SGFzaAUGY2FsbGVyAwkBAiE9AgUKZW50cnlFeGlzdAIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQECWhhc2hFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBDmtleU93bmVyQnlIYXNoAQUKc2hhMjU2SGFzaAMJAQIhPQIFCWhhc2hFeGlzdAIACQACAQIfVGhpcyBoYXNoIGlzIGFscmVhZHkgcmVnaXN0ZXJlZAkAzggCBQtwcmV2aWV3RGF0YQkAzAgCCQELU3RyaW5nRW50cnkCCQEOa2V5T3duZXJCeUhhc2gBBQpzaGEyNTZIYXNoBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleVR4aWRCeUhhc2hPd25lcgIFCnNoYTI1Nkhhc2gFBmNhbGxlcgUFYXJ0SWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQdrZXlEYXRlAgUGY2FsbGVyBQVhcnRJZAUEZGF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleURlc2MCBQZjYWxsZXIFBWFydElkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5RGlzcGxheUNpZAIFBmNhbGxlcgUFYXJ0SWQFCmNpZERpc3BsYXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBB2tleVR5cGUCBQZjYWxsZXIFBWFydElkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGY2FsbGVyBQVhcnRJZAUEdGFncwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleU1heE1pbnQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQlrZXlPblNhbGUCBQZjYWxsZXIFBWFydElkBwkAzAgCCQELU3RyaW5nRW50cnkCCQERa2V5SGFzaEJ5VHhpZEFkZHICBQZjYWxsZXIFBWFydElkBQpzaGEyNTZIYXNoCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlFbnRpdGxlbWVudAIFBmNhbGxlcgUFYXJ0SWQFC2VudGl0bGVtZW50BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQELc2VsbEFydHdvcmsMBWFydElkBXByaWNlB21heE1pbnQHYXNzZXRJZAthdWN0aW9uVHlwZQhkdXJhdGlvbgRhZGQxBGFkZDIEYWRkMwZhZGQxU2gGYWRkMlNoBmFkZDNTaAQIY2FsbERhdGEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFCGNhbGxEYXRhAl8xBAZjYWxsZXIIBQhjYWxsRGF0YQJfMgQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQlrZXlJc3N1ZWQCBQZjYWxsZXIFBWFydElkBAZiaWROYnIJAQ9nZXRJbnRlZ2VyQnlLZXkBCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUFYXJ0SWQEH3ZhbGlkYXRlQW5kUHJvY2Vzc1BheW1lbnRJbnZva2UJAPwHBAkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCBQlzdGFrZURhcHACDnRoaXMgbm90IGZvdW5kAhl2YWxpZGF0ZUFuZFByb2Nlc3NQYXltZW50BQNuaWwJAMwIAgkAkQMCCAUBaQhwYXltZW50cwAABQNuaWwDCQAAAgUfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQUfdmFsaWRhdGVBbmRQcm9jZXNzUGF5bWVudEludm9rZQMDCQBmAgUGYmlkTmJyAAAGCQBmAgUKYW1vdW50U29sZAAACQACAQI4VGhlcmUgYXJlIGJpZHMgb3IgaXRlbXMgc29sZCwgeW91IGNhbiBub3QgZWRpdCBhbnl0aGluZyEEC2FydHdvcmtOYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEHa2V5TmFtZQIFBmNhbGxlcgUFYXJ0SWQDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGF1Y3Rpb25UeXBlMQkAzAgCBQxhdWN0aW9uVHlwZTIJAMwIAgUMYXVjdGlvblR5cGUzBQNuaWwFC2F1Y3Rpb25UeXBlCQACAQIfV2UgZG9uJ3Qga25vdyB0aGlzIGF1Y3Rpb24gdHlwZQMJAAACBQthcnR3b3JrTmFtZQIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAIFB2Fzc2V0SWQFBXByaWNlCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAGYCBQdtYXhNaW50AJBOCQACAQIeMTAwMDAgZWRpdGlvbnMgbWF4IHBlciBhcnR3b3JrBApzZWxsU3RhdHVzAwkAZgIFBXByaWNlAAAJAGYCBQdtYXhNaW50AAAHBAd0ZWFtRmVlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQdmZWVEYXBwCQCsAgIFB2ZlZURhcHACCiBub3QgZm91bmQCDHRlYW1TcGxpdEZlZQkAzAgCBQVhcnRJZAkAzAgCBQtmZWVSZWNlaXZlcgkAzAgCAgAJAMwIAgIACQDMCAIAAwkAzAgCAAAJAMwIAgAABQNuaWwFA25pbAMJAAACBQd0ZWFtRmVlBQd0ZWFtRmVlBApjcmVhdG9yRmVlCQD8BwQJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkApggBBQdmZWVEYXBwCQCsAgIFB2ZlZURhcHACCiBub3QgZm91bmQCD2NyZWF0b3JTcGxpdEZlZQkAzAgCBQVhcnRJZAkAzAgCBQRhZGQxCQDMCAIFBGFkZDIJAMwIAgUEYWRkMwkAzAgCBQZhZGQxU2gJAMwIAgUGYWRkMlNoCQDMCAIFBmFkZDNTaAUDbmlsBQNuaWwDCQAAAgUKY3JlYXRvckZlZQUKY3JlYXRvckZlZQQJZW5kSGVpZ2h0CQBkAgUIZHVyYXRpb24FBmhlaWdodAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleU9uU2FsZQIFBmNhbGxlcgUFYXJ0SWQFCnNlbGxTdGF0dXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQhrZXlQcmljZQIFBmNhbGxlcgUFYXJ0SWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQFB21heE1pbnQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlEdXJhdGlvbgIFBmNhbGxlcgUFYXJ0SWQFCGR1cmF0aW9uCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5RW5kSGVpZ2h0AgUGY2FsbGVyBQVhcnRJZAUJZW5kSGVpZ2h0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBc3NldElkQWNjZXB0ZWQCBQZjYWxsZXIFBWFydElkBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ5rZXlBdWN0aW9uVHlwZQIFBmNhbGxlcgUFYXJ0SWQFC2F1Y3Rpb25UeXBlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEKY2FuY2VsU2FsZQIFYXJ0SWQJbWF4VG9TZWxsBApjYWxsZXJEYXRhCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQpjYWxsZXJEYXRhAl8xBAZjYWxsZXIIBQpjYWxsZXJEYXRhAl8yBAthdWN0aW9uVHlwZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQEOa2V5QXVjdGlvblR5cGUCBQZjYWxsZXIFBWFydElkAixEbyBub3QgdHJ5IHRvIGVkaXQgYSBhdWN0aW9uIHlvdSBkbyBub3Qgb3duIQMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFDGF1Y3Rpb25UeXBlMQkAzAgCBQxhdWN0aW9uVHlwZTMFA25pbAULYXVjdGlvblR5cGUJAAIBAidZb3UgY2FuIG5vdCBjYW5jZWwgdGhpcyB0eXBlIG9mIGF1Y3Rpb24ECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEJa2V5SXNzdWVkAgUGY2FsbGVyBQVhcnRJZAQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJAQprZXlNYXhNaW50AgUGY2FsbGVyBQVhcnRJZAMJAGYCBQphbW91bnRTb2xkBQltYXhUb1NlbGwJAAIBCQCsAgICJ1lvdSBjYW4gbm90IGxvd2VyIHRoZSBtYXhDYW5TZWxsIGJlbG93IAkApAMBBQphbW91bnRTb2xkAwkAZgIFCW1heFRvU2VsbAUKbWF4Q2FuU2VsbAkAAgECLVlvdSBjYW4gbm90IGluY3JlYXNlIHRoZSBtYXhDYW5TZWxsIHBhcmFtZXRlcgQJYm9vbEVudHJ5AwkAAAIFCW1heFRvU2VsbAUKYW1vdW50U29sZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBCWtleU9uU2FsZQIFBmNhbGxlcgUFYXJ0SWQHBQNuaWwFA25pbAkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEKa2V5TWF4TWludAIFBmNhbGxlcgUFYXJ0SWQFCW1heFRvU2VsbAUDbmlsBQlib29sRW50cnkBaQEKYnV5QXJ0d29yawIFYXJ0SWQGaXNzdWVyBAthdWN0aW9uVHlwZQkBDmdldFN0cmluZ0J5S2V5AQkBDmtleUF1Y3Rpb25UeXBlAgUGaXNzdWVyBQVhcnRJZAMJAAACBQthdWN0aW9uVHlwZQUMYXVjdGlvblR5cGUzCQEHYnV5TWludAYFAWkFBWFydElkBQZpc3N1ZXICAAIABwkAAgECNERpcmVjdCBidXkgb25seSBhbGxvd2VkIHdoZW4gbm8gYXVjdGlvbiB0eXBlIGlzIHNldCEBaQEKdXBkYXRlVGFncwMGYXJ0aXN0BWFydElkBHRhZ3MEBmNhbGxlcgkApQgBCQCnCAEIBQFpD2NhbGxlclB1YmxpY0tleQMJAQEhAQkBD2NvbnRhaW5zRWxlbWVudAIFBm93bmVycwUGY2FsbGVyCQACAQICbm8DCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguBAd0YWdzT2xkCQEVZ2V0U3RyaW5nQnlLZXlPckVycm9yAgkBB2tleVRhZ3MCBQZhcnRpc3QFBWFydElkAi9ObyB0YWdzIGNyZWF0ZWQgd2l0aCB0aGlzIGtleSwgc28gY2FuJ3QgdXBkYXRlIQMJAAACBQR0YWdzBQd0YWdzT2xkCQACAQIeVGFncyBhcmUgdGhlIHNhbWUgYXMgb2xkIHRhZ3MhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQdrZXlUYWdzAgUGYXJ0aXN0BQVhcnRJZAUEdGFncwUDbmlsAWkBC2RlbGV0ZUVudHJ5AQVlbnRyeQQGY2FsbGVyCQClCAEJAKcIAQgFAWkPY2FsbGVyUHVibGljS2V5AwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUGb3duZXJzBQZjYWxsZXIJAAIBAgJubwkAzAgCCQELRGVsZXRlRW50cnkBBQVlbnRyeQUDbmlsAWkBBnNldEJpZAIFYXJ0SWQGaXNzdWVyBAthdWN0aW9uVHlwZQkBDmdldFN0cmluZ0J5S2V5AQkBDmtleUF1Y3Rpb25UeXBlAgUGaXNzdWVyBQVhcnRJZAMJAAACBQthdWN0aW9uVHlwZQUMYXVjdGlvblR5cGUxCQEUc2V0QmlkTm9uVHJhZGl0aW9uYWwDBQFpBQVhcnRJZAUGaXNzdWVyAwkAAAIFC2F1Y3Rpb25UeXBlBQxhdWN0aW9uVHlwZTIJARFzZXRCaWRUcmFkaXRpb25hbAMFAWkFBWFydElkBQZpc3N1ZXIJAAIBCQCsAgIJAKwCAgIWVW5rbm93biBhdWN0aW9uIHR5cGUgOgULYXVjdGlvblR5cGUCGywgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucwFpAQlhY2NlcHRCaWQEBWFydElkBmlzc3VlcgViaWRJZAhiaWRPd25lcgQLYXVjdGlvblR5cGUJAQ5nZXRTdHJpbmdCeUtleQEJAQ5rZXlBdWN0aW9uVHlwZQIFBmlzc3VlcgUFYXJ0SWQDCQAAAgULYXVjdGlvblR5cGUFDGF1Y3Rpb25UeXBlMQkBF2FjY2VwdEJpZE5vblRyYWRpdGlvbmFsBQUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQFCGJpZE93bmVyAwkAAAIFC2F1Y3Rpb25UeXBlBQxhdWN0aW9uVHlwZTIJARRhY2NlcHRCaWRUcmFkaXRpb25hbAUFAWkFBWFydElkBQZpc3N1ZXIFBWJpZElkBQhiaWRPd25lcgkAAgEJAKwCAgkArAICAhZVbmtub3duIGF1Y3Rpb24gdHlwZSA6BQthdWN0aW9uVHlwZQIbLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zAWkBCWNhbmNlbEJpZAMFYXJ0SWQGaXNzdWVyBWJpZElkBAthdWN0aW9uVHlwZQkBDmdldFN0cmluZ0J5S2V5AQkBDmtleUF1Y3Rpb25UeXBlAgUGaXNzdWVyBQVhcnRJZAMJAAACBQthdWN0aW9uVHlwZQUMYXVjdGlvblR5cGUxCQENY2FuY2VsQmlkSW1wbAQFAWkFBWFydElkBQZpc3N1ZXIFBWJpZElkCQEYY2FuY2VsQmlkSW1wbFRyYWRpdGlvbmFsBAUBaQUFYXJ0SWQFBmlzc3VlcgUFYmlkSWQAXnec+Q==", "height": 2161590, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GLDpPKi4RNQ3oPnh2uBiTa69SC9qTs6Tcw6GQaU5ZRtd Next: none Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = "oracleKey"
77
88 func c (d) = {
99 let e = getString(this, d)
1010 if ($isInstanceOf(e, "String"))
1111 then {
1212 let f = e
1313 f
1414 }
1515 else ""
1616 }
1717
1818
1919 let g = c(b)
2020
2121 let h = value(addressFromString(g))
2222
2323 let i = [getString(h, "owner1"), getString(h, "owner2")]
2424
2525 let j = valueOrErrorMessage(getString(h, "collectionsDapp"), "collectionDapp not found")
2626
2727 let k = valueOrErrorMessage(getString(h, "feeReceiver"), "feeReceiver not found")
2828
2929 let l = valueOrErrorMessage(getString(h, "certDapp"), "certDapp not found")
3030
3131 let m = valueOrErrorMessage(getString(h, "feeDapp"), "feeDapp not found")
3232
3333 let n = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
3434
3535 let o = addressFromString(valueOrErrorMessage(getString(h, "stakeDapp"), "sconexDapp not found"))
3636
3737 let p = fromBase58String(getStringValue(h, "USDNAssetId"))
3838
3939 let q = fromBase58String(getStringValue(h, "SconexAssetId"))
4040
4141 let r = ["IMAGE", "PDF", "VIDEO"]
4242
4343 let s = ["PDF"]
4444
4545 let t = valueOrElse(getBoolean(n, "conf_dapp_is_running"), true)
4646
4747 let u = valueOrElse(getString(n, "conf_maintenance_msg"), "")
4848
4949 let v = "SUSPENDED"
5050
5151 let w = "REMOVED"
5252
5353 let x = "UNREGISTERED"
5454
5555 let y = "BIDTYPE"
5656
5757 let z = "TRADITIONAL"
5858
5959 let A = "DIRECT"
6060
6161 func B (d) = valueOrElse(getString(n, d), "")
6262
6363
6464 func C (d) = valueOrElse(getString(this, d), "")
6565
6666
6767 func D (d,E) = valueOrErrorMessage(getString(this, d), E)
6868
6969
7070 func F (d) = valueOrErrorMessage(getInteger(h, d), "Integer undefine or 0 in oracle")
7171
7272
7373 func G (d) = valueOrElse(getInteger(this, d), 0)
7474
7575
7676 func H (d) = valueOrElse(getBoolean(this, d), false)
7777
7878
7979 func I (J) = (size(J) == 64)
8080
8181
8282 func K (L) = ("user_status_" + L)
8383
8484
8585 func M (L,N) = ((("art_date_" + N) + "_") + L)
8686
8787
8888 func O (L,N) = ((("art_name_" + N) + "_") + L)
8989
9090
9191 func P (L,N) = ((("art_desc_" + N) + "_") + L)
9292
9393
9494 func Q (L,N) = ((("art_display_cid_" + N) + "_") + L)
9595
9696
9797 func R (L,N) = ((("art_preview_cid_" + N) + "_") + L)
9898
9999
100100 func S (L,N) = ((("art_maxmint_" + N) + "_") + L)
101101
102102
103103 func T (N) = ("art_highestBidBidId_" + N)
104104
105105
106106 func U (V) = ("bid_" + V)
107107
108108
109109 func W (L,N) = ((("art_duration_" + N) + "_") + L)
110110
111111
112112 func X (L,N) = ((("art_endheight_" + N) + "_") + L)
113113
114114
115115 func Y (L,N) = ((("art_auctiontype_" + N) + "_") + L)
116116
117117
118118 func Z (L,N) = ((("art_issued_" + N) + "_") + L)
119119
120120
121121 func aa (ab) = ("nft_issued_" + ab)
122122
123123
124124 func ac (ab) = ("nft_artId_" + ab)
125125
126126
127127 func ad (L,N) = ((("art_onsale_" + N) + "_") + L)
128128
129129
130130 func ae (L,N) = ((("art_entitlement_" + N) + "_") + L)
131131
132132
133133 func af (L,N) = ((("art_tags_" + N) + "_") + L)
134134
135135
136136 func ag (L,N) = ((("art_type_" + N) + "_") + L)
137137
138138
139139 func ah (L,N) = ((("art_price_" + N) + "_") + L)
140140
141141
142142 func ai (L,N) = ((("art_assetAccepted_" + N) + "_") + L)
143143
144144
145145 func aj (L,ak) = ((("get_hashbytxidaddr_" + ak) + "_") + L)
146146
147147
148148 func al (am) = ("get_owner_by_hash_" + am)
149149
150150
151151 func an (am,L) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((am + L)))))
152152
153153
154154 func ao (L,N) = ((("collection_" + N) + "_") + L)
155155
156156
157157 let ap = F(("min_" + toBase58String(p)))
158158
159159 let aq = F(("fee_" + toBase58String(q)))
160160
161161 func ar (V) = valueOrElse(G(U(V)), 0)
162162
163163
164164 func as (N) = {
165165 let V = C(T(N))
166166 ar(V)
167167 }
168168
169169
170170 func at (au,av) = if ((size(au) == 0))
171171 then throw("Field cannot be is empty")
172172 else if ((size(au) > av))
173173 then throw((au + " is too long"))
174174 else true
175175
176176
177177 func aw (L) = {
178178 let ax = valueOrElse(getString(n, K(L)), x)
179179 if ((ax == x))
180180 then "Register this account first with 'Account' tab"
181181 else if ((ax == v))
182182 then "Account suspended"
183183 else if ((ax == w))
184184 then "Account removed"
185185 else ""
186186 }
187187
188188
189189 func ay (L,az,aA,aB,aC) = {
190190 let aD = aw(L)
191191 if ((aD != ""))
192192 then throw(aD)
193193 else if ((size(az) == 0))
194194 then throw("Display CID cannot be empty")
195195 else if ((size(az) != 46))
196196 then throw("This doesn't seem a valid CID!")
197197 else if (!(at(aA, 100)))
198198 then throw("100 Char. max name")
199199 else if (!(at(aB, 1000)))
200200 then throw("1000 Char. max description")
201201 else if ((size(split(aC, ",")) > 5))
202202 then throw("5 tags max.")
203203 else ""
204204 }
205205
206206
207207 func aE (aF,aG) = if ((size(aF.payments) == 0))
208208 then throw("No payment attached")
209209 else {
210210 let aH = value(aF.payments[aG])
211211 let aI = value(aH.amount)
212212 $Tuple2(aH, aI)
213213 }
214214
215215
216216 func aJ (aK,N) = {
217217 let e = getInteger(this, Z(aK, N))
218218 if ($isInstanceOf(e, "Int"))
219219 then {
220220 let f = e
221221 if ((f != 0))
222222 then true
223223 else false
224224 }
225225 else false
226226 }
227227
228228
229229 func aL (aF,aM,aN) = {
230230 let aO = aE(aF, 1)
231231 let aH = aO._1
232232 let aI = aO._2
233233 let aP = if (!(isDefined(aH.assetId)))
234234 then throw("Asset Id is not defined")
235235 else if (if ((size(aM) > 0))
236236 then (toBase58String(value(aH.assetId)) == aM)
237237 else false)
238238 then aH.assetId
239239 else throw("Wrong asset id")
240240 if ((aN != aI))
241241 then throw(((("Payment don't match " + toString(aN)) + " ") + toString(aI)))
242242 else $Tuple2(aI, aP)
243243 }
244244
245245
246246 func aQ (aP) = if ((aP != toBase58String(p)))
247247 then throw("Only USDN accepted")
248248 else true
249249
250250
251251 func aR (aP,aS) = {
252252 let aT = ap
253253 if (if (if ((aS != 0))
254254 then (aT > aS)
255255 else false)
256256 then true
257257 else (aP != toBase58String(p)))
258258 then throw(("Wrong minimum sell price " + toString(aT)))
259259 else true
260260 }
261261
262262
263263 func aU (aP) = if ((aP == "WAVES"))
264264 then throw("Only USDN is accepted!")
265265 else fromBase58String(aP)
266266
267267
268268 func aV (aW) = {
269269 let aX = C((aW + "_OPEN"))
270270 if ((aX == ""))
271271 then throw("Bid not found")
272272 else {
273273 let aY = split(aX, "_")
274274 let aZ = parseIntValue(aY[1])
275275 let ba = aU(aY[0])
276276 if ((0 >= aZ))
277277 then throw("Wrong amount")
278278 else $Tuple2(aZ, ba)
279279 }
280280 }
281281
282282
283283 func bb (aF) = if (!(t))
284284 then throw(u)
285285 else $Tuple3(toBase58String(aF.transactionId), toBase58String(aF.caller.bytes), lastBlock.timestamp)
286286
287287
288288 func bc (aF,bd,N,be) = {
289289 let bf = (toBase58String(aF.caller.bytes) == bd)
290290 let bg = G("total_nft_issued")
291291 let bh = C(O(bd, N))
292292 if ((bh == ""))
293293 then throw("Art doesn't exist")
294294 else {
295295 let bi = H(ad(bd, N))
296296 let bj = G(Z(bd, N))
297297 let aN = valueOrElse(G(ah(bd, N)), ap)
298298 let aM = if (bf)
299299 then toBase58String(p)
300300 else C(ai(bd, N))
301301 let bk = G(S(bd, N))
302302 if (if (if (!(be))
303303 then !(bf)
304304 else false)
305305 then if (if ((0 >= aN))
306306 then true
307307 else !(bi))
308308 then true
309309 else (0 >= bk)
310310 else false)
311311 then throw("Art not for sale")
312312 else if (if (if (!(be))
313313 then bf
314314 else false)
315315 then (0 >= bk)
316316 else false)
317317 then throw("Max issuable not set")
318318 else $Tuple7(bg, bh, bj, aN, aM, bk, bi)
319319 }
320320 }
321321
322322
323323 func bl (aF,L,bd,N,bm,V,aM,aN,be) = {
324324 let aD = aw(bd)
325325 if (if (be)
326326 then (aD != "")
327327 else false)
328328 then throw(aD)
329329 else {
330330 let aW = ((((((("bid_" + N) + "_") + bd) + "_") + bm) + "_") + V)
331331 let bn = if (be)
332332 then aV(aW)
333333 else aL(aF, aM, aN)
334334 let aI = bn._1
335335 let aP = bn._2
336336 $Tuple3(aW, aI, aP)
337337 }
338338 }
339339
340340
341341 func bo (bd,N,bh,bp,bk,bg,L,bm,V,aF,bi) = {
342342 let bq = ((((((((("Creator: " + bd) + ",ArtID: ") + N) + ",Artwork name: ") + bh) + ",Issue: ") + toString(bp)) + "/") + toString(bk))
343343 let br = if (if ((bp == bk))
344344 then true
345345 else !(bi))
346346 then false
347347 else true
348348 let bs = if ((bm != ""))
349349 then addressFromStringValue(bm)
350350 else aF.caller
351351 $Tuple3(br, bs, bq)
352352 }
353353
354354
355355 func bt (aP,aW,bu) = {
356356 let bv = if (!(isDefined(aP)))
357357 then throw("Only USDN is accepted")
358358 else toBase58String(value(aP))
359359 let aX = C((aW + "_OPEN"))
360360 let bw = DeleteEntry((aW + "_OPEN"))
361361 let bx = StringEntry((aW + "_CLOSED"), ((aX + "_") + toString(bu)))
362362 $Tuple3(bv, bw, bx)
363363 }
364364
365365
366366 func by (aF,N,bd,V,bm,be) = {
367367 let bz = bb(aF)
368368 let bA = bz._1
369369 let L = bz._2
370370 let bu = bz._3
371371 let bB = bc(aF, bd, N, be)
372372 let bg = bB._1
373373 let bh = bB._2
374374 let bj = bB._3
375375 let aN = bB._4
376376 let aM = bB._5
377377 let bk = bB._6
378378 let bi = bB._7
379379 let aX = bl(aF, L, bd, N, bm, V, aM, aN, be)
380380 let aW = aX._1
381381 let aI = aX._2
382382 let aP = aX._3
383383 let bp = if ((bj == bk))
384384 then throw("Max items sold")
385385 else (bj + 1)
386386 let bC = bo(bd, N, bh, bp, bk, bg, L, bm, V, aF, bi)
387387 let br = bC._1
388388 let bs = bC._2
389389 let bq = bC._3
390390 let bD = invoke(this, "mintNft", [bg, bq, toString(bs)], nil)
391391 if ((bD == bD))
392392 then {
393393 let bE = {
394394 let e = bD
395395 if ($isInstanceOf(e, "String"))
396396 then {
397397 let bF = e
398398 bF
399399 }
400400 else throw("Incorrect invoke result")
401401 }
402402 let bG = bt(aP, aW, bu)
403403 let bv = bG._1
404404 let bw = bG._2
405405 let bx = bG._3
406406 let bH = ((((((("art_sold_" + toString(bp)) + "_of_") + toString(bk)) + "_") + N) + "_") + bd)
407407 let bI = if (!(be))
408408 then ((((((((((L + "_") + toString(bu)) + "_") + bA) + "_") + toString(aN)) + "_") + aM) + "_") + bE)
409409 else ((((((((((toString(bs) + "_") + toString(bu)) + "_") + bA) + "_") + toString(aI)) + "_") + bv) + "_") + bE)
410410 let bJ = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "payFee", [N, bd], [AttachedPayment(aP, aI)])
411411 if ((bJ == bJ))
412412 then {
413413 let bK = StringEntry(bH, bI)
414414 let bL = [IntegerEntry(Z(bd, N), bp), StringEntry(("nft_" + bE), bH), IntegerEntry("total_nft_issued", (bg + 1)), BooleanEntry(ad(bd, N), br), StringEntry(aa(bE), bd), StringEntry(ac(bE), N)]
415415 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[0]])
416416 if ((bM == bM))
417417 then {
418418 let bN = invoke(addressFromStringValue(l), "createCert", [toString(bs), bE, bd], nil)
419419 if ((bN == bN))
420420 then if (be)
421421 then (((bL :+ bK) :+ bx) :+ bw)
422422 else bK :: bL
423423 else throw("Strict value is not equal to itself.")
424424 }
425425 else throw("Strict value is not equal to itself.")
426426 }
427427 else throw("Strict value is not equal to itself.")
428428 }
429429 else throw("Strict value is not equal to itself.")
430430 }
431431
432432
433433 func bO (aF,N,bd) = {
434434 let bP = bb(aF)
435435 let bA = bP._1
436436 let L = bP._2
437437 let bu = bP._3
438438 let bQ = aE(aF, 0)
439439 let aH = bQ._1
440440 let aI = bQ._2
441441 let aP = if (!(isDefined(aH.assetId)))
442442 then throw("Only USDN is accepted!")
443443 else toBase58String(value(aH.assetId))
444444 let bR = G(("current_bidamount_" + N))
445445 if (!(aQ(aP)))
446446 then throw("asset not accepted")
447447 else {
448448 let bj = G(Z(bd, N))
449449 let bk = G(S(bd, N))
450450 if ((0 >= bk))
451451 then throw("No max edition set for this artwork")
452452 else if ((bj >= bk))
453453 then throw("Sold out, you cannot bid")
454454 else {
455455 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[1]])
456456 if ((bM == bM))
457457 then [StringEntry((((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + bA) + "_OPEN"), ((((aP + "_") + toString(aI)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR + 1))]
458458 else throw("Strict value is not equal to itself.")
459459 }
460460 }
461461 }
462462
463463
464464 func bS (aF,N,bd) = {
465465 let bT = G(X(bd, N))
466466 let bU = as(N)
467467 if ((height > bT))
468468 then throw("This auction is finished already!")
469469 else {
470470 let bV = bb(aF)
471471 let bA = bV._1
472472 let L = bV._2
473473 let bu = bV._3
474474 let bW = aE(aF, 0)
475475 let aH = bW._1
476476 let aI = bW._2
477477 if ((bU >= aI))
478478 then throw(("Please place a bid higher than: " + toString(bU)))
479479 else {
480480 let aP = if (!(isDefined(aH.assetId)))
481481 then throw("Only USDN is accepted!")
482482 else toBase58String(value(aH.assetId))
483483 let bR = G(("current_bidamount_" + N))
484484 let bX = valueOrElse(G(ah(bd, N)), ap)
485485 if (!(aQ(aP)))
486486 then throw("asset not accepted")
487487 else if ((bX > aI))
488488 then throw("Bid is below min price!")
489489 else {
490490 let bj = G(Z(bd, N))
491491 let bk = G(S(bd, N))
492492 if ((0 >= bk))
493493 then throw("No max edition set for this artwork")
494494 else if ((bj >= bk))
495495 then throw("Sold out, you cannot bid")
496496 else {
497497 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[1]])
498498 if ((bM == bM))
499499 then [StringEntry((((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + bA) + "_OPEN"), ((((aP + "_") + toString(aI)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR + 1)), StringEntry(T(N), toBase58String(aF.transactionId)), IntegerEntry(U(toBase58String(aF.transactionId)), aI)]
500500 else throw("Strict value is not equal to itself.")
501501 }
502502 }
503503 }
504504 }
505505 }
506506
507507
508508 func bY (aF,N,bd,V,bm) = {
509509 let L = toBase58String(aF.caller.bytes)
510510 if ((L != bd))
511511 then throw("You cannot do this action")
512512 else by(aF, N, bd, V, bm, true)
513513 }
514514
515515
516516 func bZ (N,bd) = {
517517 let bj = G(Z(bd, N))
518518 let bk = G(S(bd, N))
519519 let ca = G(X(bd, N))
520520 let cb = G(W(bd, N))
521521 let bT = (cb + height)
522522 if ((ca >= height))
523523 then throw("Previous auction isn't completed yet")
524524 else if ((bj == bk))
525525 then throw("Can't restart auction, max amount sold")
526526 else [IntegerEntry(X(bd, N), bT), DeleteEntry(T(N))]
527527 }
528528
529529
530530 func cc (aF,N,bd,V,bm) = {
531531 let bT = G(X(bd, N))
532532 let cd = C(T(N))
533533 if ((bT >= height))
534534 then throw("This auction is not yet finished!")
535535 else if ((V != cd))
536536 then throw("This is not the winning bid!")
537537 else {
538538 let ce = by(aF, N, bd, V, bm, true)
539539 let cf = bZ(N, bd)
540540 (cf ++ ce)
541541 }
542542 }
543543
544544
545545 func cg (aF,N,bd,V) = {
546546 let ch = bb(aF)
547547 let bA = ch._1
548548 let L = ch._2
549549 let bu = ch._3
550550 let bR = G(("current_bidamount_" + N))
551551 let aW = ((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + V)
552552 let aX = D((aW + "_OPEN"), "Bid not found")
553553 let aY = split(aX, "_")
554554 let aP = aU(aY[0])
555555 let ci = "CANCELED"
556556 [DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ci), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR - 1)), ScriptTransfer(Address(fromBase58String(L)), parseIntValue(aY[1]), aP)]
557557 }
558558
559559
560560 func cj (aF,N,bd,V) = {
561561 let ch = bb(aF)
562562 let bA = ch._1
563563 let L = ch._2
564564 let bu = ch._3
565565 let bR = G(("current_bidamount_" + N))
566566 let aW = ((((((("bid_" + N) + "_") + bd) + "_") + L) + "_") + V)
567567 let aX = D((aW + "_OPEN"), "Bid not found")
568568 let aY = split(aX, "_")
569569 let aP = aU(aY[0])
570570 let ci = "CANCELED"
571571 let aZ = parseIntValue(aY[1])
572572 let cd = C(T(N))
573573 if ((V == cd))
574574 then throw("You can't cancel the highest bid!")
575575 else [DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ci), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + N), (bR - 1)), ScriptTransfer(Address(fromBase58String(L)), aZ, aP)]
576576 }
577577
578578
579579 @Callable(aF)
580580 func initDapp (ck) = if ((aF.caller != this))
581581 then throw("You cannot do this action")
582582 else if ((g != ""))
583583 then throw("oracle already set, you can't override!")
584584 else [StringEntry(b, ck)]
585585
586586
587587
588588 @Callable(aF)
589589 func restartAuctionManual (N) = if ((as(N) != 0))
590590 then throw("Please accept the highest bid!")
591591 else bZ(N, toBase58String(aF.caller.bytes))
592592
593593
594594
595595 @Callable(aF)
596596 func mintNft (bg,bq,bs) = if ((aF.caller != this))
597597 then throw("Only the dApp can mint NFT's")
598598 else {
599599 let cl = Address(fromBase58String(bs))
600600 let cm = Issue(("SCONEX_" + toString((bg + 1))), bq, 1, 0, false)
601601 let bE = calculateAssetId(cm)
602602 $Tuple2([cm, ScriptTransfer(cl, 1, bE)], toBase58String(bE))
603603 }
604604
605605
606606
607607 @Callable(aF)
608608 func addArtwork (am,aA,aB,aC,cn,az,co,cp,cq,cr) = {
609609 let cs = bb(aF)
610610 let N = cs._1
611611 let L = cs._2
612612 let bu = cs._3
613613 if (!(containsElement(r, cn)))
614614 then throw("Unknown type")
615615 else {
616616 let ct = ay(L, az, aA, aB, aC)
617617 if ((ct != ""))
618618 then throw("Something went wrong!")
619619 else {
620620 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[0]])
621621 if ((bM == bM))
622622 then {
623623 let cu = if (containsElement(s, cn))
624624 then [StringEntry(R(L, N), cp)]
625625 else nil
626626 let cv = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [cq, cr, L], nil)
627627 if ((cv == cv))
628628 then {
629629 let cw = C(an(am, L))
630630 if ((cw != ""))
631631 then throw("You already added it")
632632 else {
633633 let cx = C(al(am))
634634 if ((cx != ""))
635635 then throw("This hash is already registered")
636636 else (cu ++ [StringEntry(al(am), L), StringEntry(an(am, L), N), IntegerEntry(M(L, N), bu), StringEntry(O(L, N), aA), StringEntry(P(L, N), aB), StringEntry(Q(L, N), az), StringEntry(ag(L, N), cn), StringEntry(af(L, N), aC), IntegerEntry(S(L, N), 0), IntegerEntry(Z(L, N), 0), BooleanEntry(ad(L, N), false), StringEntry(aj(L, N), am), StringEntry(ae(L, N), co)])
637637 }
638638 }
639639 else throw("Strict value is not equal to itself.")
640640 }
641641 else throw("Strict value is not equal to itself.")
642642 }
643643 }
644644 }
645645
646646
647647
648648 @Callable(aF)
649649 func sellArtwork (N,aS,cy,aP,cz,cb,cA,cB,cC,cD,cE,cF) = {
650650 let cG = bb(aF)
651651 let bA = cG._1
652652 let L = cG._2
653653 let bj = G(Z(L, N))
654654 let bR = G(("current_bidamount_" + N))
655655 let bM = invoke(valueOrErrorMessage(o, "this not found"), "validateAndProcessPayment", nil, [aF.payments[0]])
656656 if ((bM == bM))
657657 then if (if ((bR > 0))
658658 then true
659659 else (bj > 0))
660660 then throw("There are bids or items sold, you can not edit anything!")
661661 else {
662662 let bh = C(O(L, N))
663663 if (!(containsElement([y, z, A], cz)))
664664 then throw("We don't know this auction type")
665665 else if ((bh == ""))
666666 then throw("This art doesn't match your account")
667667 else if (!(aQ(aP)))
668668 then throw("Something went wrong!")
669669 else if (!(aR(aP, aS)))
670670 then throw("Something went wrong!")
671671 else {
672672 let aD = aw(L)
673673 if ((aD != ""))
674674 then throw(aD)
675675 else if ((cy > 10000))
676676 then throw("10000 editions max per artwork")
677677 else {
678678 let br = if ((aS > 0))
679679 then (cy > 0)
680680 else false
681681 let cH = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [N, k, "", "", 3, 0, 0], nil)
682682 if ((cH == cH))
683683 then {
684684 let cI = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "creatorSplitFee", [N, cA, cB, cC, cD, cE, cF], nil)
685685 if ((cI == cI))
686686 then {
687687 let bT = (cb + height)
688688 [BooleanEntry(ad(L, N), br), IntegerEntry(ah(L, N), aS), IntegerEntry(S(L, N), cy), IntegerEntry(W(L, N), cb), IntegerEntry(X(L, N), bT), StringEntry(ai(L, N), aP), StringEntry(Y(L, N), cz)]
689689 }
690690 else throw("Strict value is not equal to itself.")
691691 }
692692 else throw("Strict value is not equal to itself.")
693693 }
694694 }
695695 }
696696 else throw("Strict value is not equal to itself.")
697697 }
698698
699699
700700
701701 @Callable(aF)
702702 func cancelSale (N,cJ) = {
703703 let bz = bb(aF)
704704 let bA = bz._1
705705 let L = bz._2
706706 let cz = valueOrErrorMessage(Y(L, N), "Do not try to edit a auction you do not own!")
707707 if (containsElement([y, A], cz))
708708 then throw("You can not cancel this type of auction")
709709 else {
710710 let bj = G(Z(L, N))
711711 let bk = G(S(L, N))
712712 if ((bj > cJ))
713713 then throw(("You can not lower the maxCanSell below " + toString(bj)))
714714 else if ((cJ > bk))
715715 then throw("You can not increase the maxCanSell parameter")
716716 else {
717717 let cK = if ((cJ == bj))
718718 then [BooleanEntry(ad(L, N), false)]
719719 else nil
720720 ([IntegerEntry(S(L, N), cJ)] ++ cK)
721721 }
722722 }
723723 }
724724
725725
726726
727727 @Callable(aF)
728728 func buyArtwork (N,bd) = {
729729 let cz = C(Y(bd, N))
730730 if ((cz == A))
731731 then by(aF, N, bd, "", "", false)
732732 else throw("Direct buy only allowed when no auction type is set!")
733733 }
734734
735735
736736
737737 @Callable(aF)
738738 func updateTags (cL,N,aC) = {
739739 let L = toString(addressFromPublicKey(aF.callerPublicKey))
740740 if (!(containsElement(i, L)))
741741 then throw("no")
742742 else if ((size(split(aC, ",")) > 5))
743743 then throw("5 tags max.")
744744 else {
745745 let cM = D(af(cL, N), "No tags created with this key, so can't update!")
746746 if ((aC == cM))
747747 then throw("Tags are the same as old tags!")
748748 else [StringEntry(af(cL, N), aC)]
749749 }
750750 }
751751
752752
753753
754754 @Callable(aF)
755755 func deleteEntry (cN) = {
756756 let L = toString(addressFromPublicKey(aF.callerPublicKey))
757757 if (!(containsElement(i, L)))
758758 then throw("no")
759759 else [DeleteEntry(cN)]
760760 }
761761
762762
763763
764764 @Callable(aF)
765765 func setBid (N,bd) = {
766766 let cz = C(Y(bd, N))
767767 if ((cz == y))
768768 then bO(aF, N, bd)
769769 else if ((cz == z))
770770 then bS(aF, N, bd)
771771 else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
772772 }
773773
774774
775775
776776 @Callable(aF)
777777 func acceptBid (N,bd,V,bm) = {
778778 let cz = C(Y(bd, N))
779779 if ((cz == y))
780780 then bY(aF, N, bd, V, bm)
781781 else if ((cz == z))
782782 then cc(aF, N, bd, V, bm)
783783 else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
784784 }
785785
786786
787787
788788 @Callable(aF)
789789 func cancelBid (N,bd,V) = {
790790 let cz = C(Y(bd, N))
791791 if ((cz == y))
792792 then cg(aF, N, bd, V)
793793 else cj(aF, N, bd, V)
794794 }
795795
796796

github/deemru/w8io/873ac7e 
83.71 ms