tx · 3qtYgVsvc6JbPpH9M9FsMxtV5FseDRTt2daKEoL8zBit

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:48 [2503567] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "3qtYgVsvc6JbPpH9M9FsMxtV5FseDRTt2daKEoL8zBit", "fee": 1900000, "feeAssetId": null, "timestamp": 1679629717028, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "Y6xTo2sMbWtDEuNHFmprBPyQDFxUqg6j7xJczLZ6HhcApZRyTbk7fg8qT4rdfTazqDVxa161HQxe24CAyCP7krx" ], "script": "base64:BgKKFQgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA0MTEzMTExIgJpZCIEZGF0ZSIKbmV3X2NhbGxlciIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ5MzExNTEyMyIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDI5OTIwMzcyIg0kdDAyMDQ3MzIwNTQyIg92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwODQxMjA5MjUiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjM5NTkyNDAyOSINJHQwMjQwMzkyNDEwOCIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU3MzUyNTc2OSINJHQwMjYyMDUyNjIzOSIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTA3NTI5MTQ1IgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNTI3MzE1NjciDSR0MDMxNTcyMzE2MDgiDSR0MDMyODI4MzI4OTkiB2NhbGxlcjEiDSR0MDMzMTM0MzMxOTUiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAQBTgMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgUCYnQAAAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzBAJidQMDCQECIT0CBQJicwIACQBmAgUCYnQAAAcJAPwHBAUBaAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFAmJzBQNuaWwFA25pbAUEdW5pdAMJAAACBQJidQUCYnUJAJYKBAkA2AQBCAUCYVINdHJhbnNhY3Rpb25JZAUBTggFCWxhc3RCbG9jawl0aW1lc3RhbXAJAGYCBQJidAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJidgECYVIDCQEBIQEFAXYJAAIBBQF3CQCVCgMJANgEAQgFAmFSDXRyYW5zYWN0aW9uSWQJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQJidwYCYVIBUAJieAJieQJiegJicwQCYkEJAQJicgIFAmFSBQJicwQCYkIIBQJiQQJfMQQBTggFAmJBAl8yBAJiQwgFAmJBAl8zBAJidAgFAmJBAl80BAJiRAMDCQAAAgkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzBQJidAcJAKUIAQkApwgBCQDZBAEFAmJzCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzAwYJAAIBCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQJiRAIDIC8gBQJieAIDIC8gBQJiegIDIC8gBQJicwQCYkUDAwMJAAACBQFOBQJieAkBAiE9AgUCYnoCAAcJAQIhPQIFAmJ5AgAHBgcEAmJGCQEBbwEJAQJhaAIFAU4FAVADAwMJAQIhPQIFAmJGAAAJAGcCBQZoZWlnaHQFAmJGBwkBASEBBQJiRQcJAAIBAgtTYWxlIGVuZGVkLgQCYkcJAAACBQFOBQJieAQCYkgJAQFvAQIQdG90YWxfbmZ0X2lzc3VlZAQBRAkBAWEBCQEBVwIFAmJ4BQFQBAJiSQkBAWEBCQEBUQIFAmJ4BQFQAwkAAAIFAmJJAgAJAAIBAhFBcnQgZG9lc24ndCBleGlzdAQCYkoJAQFxAQkBAVkCBQJieAUBUAQCYksJAQFvAQkBAVgCBQJieAUBUAQCYmMDBQJiRwkAaAIFAUIAAgkBAW8BCQECYWcCBQJieAUBUAQCYmIDBQJiRwkA2AQBBQFpCQEBYQEJAQJhaQIFAmJ4BQFQBAJiTAkBAW8BCQEBVgIFAmJ4BQFQAwMDCQEBIQEFAmJFCQEBIQEFAmJHBwMDCQBnAgAABQJiYwYJAQEhAQUCYkoGCQBnAgAABQJiTAcJAAIBAhBBcnQgbm90IGZvciBzYWxlAwMDCQEBIQEFAmJFBQJiRwcJAGcCAAAFAmJMBwkAAgECFE1heCBpc3N1YWJsZSBub3Qgc2V0BAJhUAkBAmFGAQUCYngDAwUCYkUJAQIhPQIFAmFQAgAHCQACAQUCYVAEAmJtCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQJiegIBXwUCYnkEAmJNAwUCYkUJAQJibAEFAmJtCQECYmEDBQJhUgUCYmIFAmJjBAJhVAgFAmJNAl8xBAJhVwgFAmJNAl8yBAJiTgkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnCQECYWsBBQJieAUBZgQCYk8JAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZwkBAmFtAQUCYngAAAQCYlAJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUBZwkBAmFuAQUCYngFAWYEAmJRCQELdmFsdWVPckVsc2UCCQCaCAIFAWcJAQJhbwEFAmJ4AAAEAmJSCQEBcAEFAmJ4BAJiUwMJAGYCBQJiUgUGaGVpZ2h0AAADCQAAAgUCYVcFAWkFAXIFAXMEAmJUCQBrAwUCYVQFAmJTAGQEAmJVAwMDCQECIT0CBQJiTgUBZgkAZgIFAmJPAAAHCQBmAgUGaGVpZ2h0BQJiUgcJAGsDBQJhVAUCYk8AkE4AAAQCYlYDAwMJAQIhPQIFAmJQBQFmCQBmAgUCYlEAAAcJAGYCBQZoZWlnaHQFAmJSBwkAawMFAmFUBQJiUQCQTgAABAJiVwkAZQIFAmFUBQJiVAMJAAACBQJiSwUCYkwJAAIBAgxBcnQgc29sZCBvdXQEAmJYCQBkAgUCYksAAQQCYlkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglDcmVhdG9yOiAFAmJ4AgosCiBBcnRJRDogBQFQAgssCiBTaWduSUQ6IAUBRAIRLAogQXJ0d29yayBuYW1lOiAFAmJJAgosCiBJc3N1ZTogCQCkAwEFAmJYAgEvCQCkAwEFAmJMBAJiWgkAwggFCQCsAgICA1NBXwkApAMBCQBkAgUCYkgAAQUCYlkAAQAABwQCY2EJALgIAQUCYloEAmNiAwMJAAACBQJiWAUCYkwGCQEBIQEFAmJKBwYEAmNjAwMDCQAAAgUBTgUCYngJAQIhPQIFAmJ6AgAHCQECIT0CBQJieQIABwkBEUBleHRyTmF0aXZlKDEwNjIpAQUCYnoIBQJhUgZjYWxsZXIEAmNkAwkBASEBCQEJaXNEZWZpbmVkAQUCYVcCBVdBVkVTCQDYBAEJAQV2YWx1ZQEFAmFXBAJibgkBAWEBCQCsAgIFAmJtAgVfT1BFTgQCY2UJAQtEZWxldGVFbnRyeQEJAKwCAgUCYm0CBV9PUEVOBAJjZgkBC1N0cmluZ0VudHJ5AgkArAICBQJibQIHX0NMT1NFRAkArAICCQCsAgIFAmJuAgFfCQCkAwEFAmJDBAJjZwkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglhcnRfc29sZF8JAKQDAQUCYlgCBF9vZl8JAKQDAQUCYkwCAV8FAVACAV8FAmJ4BAJjaAMJAQEhAQUCYkUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUBTgIBXwkApAMBBQJiQwIBXwUCYkICAV8JAKQDAQUCYmMCAV8FAmJiAgFfCQDYBAEFAmNhCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUCY2MCAV8JAKQDAQUCYkMCAV8FAmJCAgFfCQCkAwEFAmFUAgFfBQJjZAIBXwkA2AQBBQJjYQQCY2kJAQtTdHJpbmdFbnRyeQIFAmNnBQJjaAQCY2oDCQECIT0CBQJiVQAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmCQBlAgUCYlQFAmJVBQJhVwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYk4FAmJVBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmBQJiVAUCYVcFA25pbAQCY2sDCQECIT0CBQJiVgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiUAUCYlYFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAkAZQIFAmJXBQJiVgUCYVcFA25pbAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUCYngFAmJXBQJhVwUDbmlsBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsBAJjbQkAzggCCQDOCAIJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVgCBQJieAUBUAUCYlgJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgRuZnRfCQDYBAEFAmNhBQJjZwkAzAgCCQEMSW50ZWdlckVudHJ5AgIQdG90YWxfbmZ0X2lzc3VlZAkAZAIFAmJIAAEJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAmJ4BQFQAAAJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUCYngFAVAFAmNiCQDMCAIFAmJaCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFAmNjAAEFAmNhBQNuaWwFAmNqBQJjawUCY2wDBQJiRQkAzAgCBQJjaQkAzAgCBQJjZgkAzAgCBQJjZQUCY20JAMwIAgUCY2kFAmNtAQJjbgECY28EAUcFAmNvAwkAAQIFAUcCBlN0cmluZwQCY3AFAUcFAmNwCQACAQIkU3BvbnNvcmVkIFB1YmxpYyBLZXkgU3RyaW5nIGV4cGVjdGVkCgJjcQEHc2V0Q29uZgIBYgJjcgQBTgkApQgBCAUCY3EGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQhjb250YWlucwIFAWICBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFAWIFAmNyBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMCYVIBCmFkZEFydHdvcmsOAUYBRAJhTAJhTQJhTgJjcwJhdwJhQQJheAJhQgJheQJjdAJhTwJicwQCY3UJAQJicgIFAmFSBQJicwQBUAgFAmN1Al8xBAFOCAUCY3UCXzIEAmJDCAUCY3UCXzMEAmJ0CAUCY3UCXzQDCQEBIQEJAQFLAQUBRgkAAgECJEhhc2ggc2hvdWxkIGJlIDY0IGNoYXJhY3RlcnMgbWF4aW11bQQCY3YJAQJhSAIFAmF5BQJhQgQCYUoIBQJjdgJfMQQCYUsIBQJjdgJfMgQCY3cJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdwIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjeAkAZgIJAQFwAQkArAICBQFOAgtfZnJlZV9kcm9wcwAABAJjeQMFAmN4CQCUCgIAAAUBRAkBAmFVAQUCYVIEAmFUCAUCY3kCXzEEAmFXCAUCY3kCXzIDCQEBIQEJAQlpc0RlZmluZWQBBQJhVAkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBAJjegkBAWEBCQECYXUCBQFGBQFOAwkBAiE9AgUCY3oCAAkAAgECFFlvdSBhbHJlYWR5IGFkZGVkIGl0BAJjQQkBAWEBCQECYXIBBQFGAwkBAiE9AgUCY0ECAAkAAgECF0hhc2ggYWxyZWFkeSByZWdpc3RlcmVkBAJjQgkBAUMDBQFEBQFOBQFGAwkBASEBBQJjQgkAAgECLFNpZ24gQ2VydGlmaWNhdGUgbm90IGZvdW5kIGZvciB0aGlzIGFkZHJlc3MuBAJjQwMFAmN4CQD8BwQFAWgCC3VzZUZyZWVEcm9wCQDMCAIFAU4FA25pbAUDbmlsBQR1bml0AwkAAAIFAmNDBQJjQwQCY2wDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcgEFAUYFAU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmF1AgUBRgUBTgUBUAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAU8CBQFOBQFQBQJiQwkAzAgCCQELU3RyaW5nRW50cnkCCQEBUQIFAU4FAVAFAmFMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAgUBTgUBUAUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQFQBQJhdwkAzAgCCQELU3RyaW5nRW50cnkCCQEBVQIFAU4FAVAFAmF4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAgUBTgUBUAUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVoCBQFOBQFQBQJhSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWECBQFOBQFQBQJhSgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQFQBQJjcwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICBQFOBQFQBQJhTgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAVYCBQFOBQFQAAAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVcCBQFOBQFQBQFECQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAU4FAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBwkAzAgCCQELU3RyaW5nRW50cnkCCQECYXMCBQFOBQFEBQFQCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcAIFAU4FAVAFAUYJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUBUAUCY3QJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZgIFAU4FAVAFAmFPCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFmBQJhVAUBaQUDbmlsBQJjbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgJhUgENdXBkYXRlQXJ0d29yaw0CYXECYUwCYU0CYU4CY3MCYXcCYUECYXgCYUICYXkCY3QCYU8CYnMDCQEBIQEFAXYJAAIBBQF3BAJjRAkBAmJyAgUCYVIFAmJzBAJiQggFAmNEAl8xBAFOCAUCY0QCXzIEAmJDCAUCY0QCXzMEAmJ0CAUCY0QCXzQEAmNFCQECYUgCBQJheQUCYUIEAmFKCAUCY0UCXzEEAmFLCAUCY0UCXzIEAmN3CQECYUkKBQFOBQJhdwUCYXgFAmFKBQJhQQUCYUsFAmFMBQJhTQUCYU4FAmFPAwkBAiE9AgUCY3cCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQQCY3oJAQFhAQkBAVECBQFOBQJhcQMJAAACBQJjegIACQACAQIPRW50cnkgbm90IGZvdW5kBAJjRgkBAWEBCQECYWoCBQFOBQJhcQMJAAACBQJjRgIHSUxMRUdBTAkAAgECHUNhbm5vdCB1cGRhdGUgSUxMRUdBTCBhcnR3b3JrAwkBASEBCQECYVgCBQFOBQJhcQQCY2wDBQJidAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUBTgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUCYXEFAmFMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFSAgUBTgUCYXEFAmFNCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFTAgUBTgUCYXEFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUCYXEFAmF4CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFUAgUBTgUCYXEFAmFBCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAmFxBQJhSgkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAmFxBQJhSwkAzAgCCQELU3RyaW5nRW50cnkCCQECYWICBQFOBQJhcQUCYU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFjAgUBTgUCYXEFAmNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZQIFAU4FAmFxBQJjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUCYXEFAmFPBQNuaWwFAmNsCQACAQIOQWxyZWFkeSBtaW50ZWQCYVIBC2ZsYWdBcnR3b3JrBAFQAmNHAmNGAmNIBAJjSQkBAmJ2AQUCYVIEAmJCCAUCY0kCXzEEAU4IBQJjSQJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFAW0JAMwIAgkApQgBBQR0aGlzBQNuaWwFAU4DCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgdDT05TRU5UCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhagIFAmNHBQFQBQJjRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWQCBQJjRwUBUAUCY0gFA25pbAkAAgEJAKwCAgIOVW5rbm93IHN0YXR1cyAFAmNGCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAJhUgENZGVsZXRlQXJ0d29yawIBUAJjRwQCY0oJAQJidgEFAmFSBAJiQggFAmNKAl8xBAFOCAUCY0oCXzIEAmFZAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgUCY0cFAU4EAmN6CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAQFhAQkBAVECBQJhWQUBUAIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MDCQAAAgUCY3oCAAkAAgECIE5vIGFydCBtYXRjaGluZyBmb3IgdGhpcyBhZGRyZXNzBAFGCQEBYQEJAQJhcAIFAmFZBQFQAwkAAAIFAUYCAAkAAgECJU5vIGFydCBoYXNoIG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUQJAQFhAQkBAVcCBQJhWQUBUAMJAAACBQFEAgAJAAIBAhNObyBTSUdOIElEIG1hdGNoaW5nBAJjSwkAzAgCCQELRGVsZXRlRW50cnkBCQEBTwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFRAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVICBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFVAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVQCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhYgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFWAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBWAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFZAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFqAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFnAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFpAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFyAQUBRgkAzAgCCQELRGVsZXRlRW50cnkBCQECYXMCBQJhWQUBRAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXUCBQFGBQJhWQkAzAgCCQELRGVsZXRlRW50cnkBCQECYWgCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWQCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWYCBQJhWQUBUAUDbmlsAwkBASEBCQECYVgCBQJhWQUBUAMJAQEhAQUBdgkAAgEFAXcFAmNLAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgUCY0sJAAIBAihBcnQgYWxyZWFkeSBtaW50ZWQsIHlvdSBjYW5ub3QgZGVsZXRlIGl0AmFSAQtzZWxsQXJ0d29yawYBUAJiZwJjTAJhVwJiRgJicwQCY00JAQJicgIFAmFSBQJicwQCYkIIBQJjTQJfMQQBTggFAmNNAl8yBAJiQwgFAmNNAl8zBAJidAgFAmNNAl80BAJiSQkBAWEBCQEBUQIFAU4FAVADCQAAAgUCYkkCAAkAAgECI1RoaXMgYXJ0IGRvZXNuJ3QgbWF0Y2ggeW91ciBhY2NvdW50BAJjRgkBAWEBCQECYWoCBQFOBQFQAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQJjRgkAAgECD0ZsYWdnZWQgYXJ0d29yawQCY04JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVADCQBmAgAABQJiRgkAAgECDE5lZ2F0aXZlIGVuZAMDCQBmAgUCYkYAAAMJAQIhPQIFAmNMAAEGCQECIT0CBQJiZwAABwkAAgECOlRpbWVkIG9mZmVyIG9ubHkgYWxsb3dlZCBmb3IgdW5pcXVlIGVkaXRpb24gYW5kIG9mZmVyIG9ubHkEAmNPAwkAAAIFAmJGAAAAAAUGaGVpZ2h0AwkBASEBCQECYmUBBQJhVwkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQMJAQEhAQkBAmJmAgUCYVcFAmJnCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJhUAkBAmFGAQUBTgMJAQIhPQIFAmFQAgAJAAIBBQJhUAQCYksJAQFvAQkBAVgCBQFOBQFQBAJiTAkBAW8BCQEBVgIFAU4FAVADCQBmAgUCY0wAZAkAAgECHDEwMCBlZGl0aW9ucyBtYXggcGVyIGFydHdvcmsDAwkBAiE9AgUCYksAAAkAAAIFAmJLBQJiTAcJAAIBAhRNYXggZWRpdGlvbiByZWFjaGVkLgMDCQBmAgUCYksAAAkBAiE9AgUCYkwFAmNMBwkAAgECJkNhbm5vdCBjaGFuZ2UgbWF4aW11bSBpc3N1YWJsZSBhbnltb3JlAwMJAGYCBQJjTgAACQECIT0CBQJiTAUCY0wHCQACAQIxQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIHdpdGggYWN0aXZlIG9yZGVycwQCY2IDAwkAZgIFAmJnAAAJAGYCBQJjTAAABwYHBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQFZAgUBTgUBUAUCY2IJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhZwIFAU4FAVAFAmJnCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAFAmNMCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhaQIFAU4FAVAFAmFXCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWgCBQFOBQFQCQBkAgUCY08FAmJGBQNuaWwFAmNsAmFSAQpidXlBcnR3b3JrAgFQAmJ4CQECYncGBQJhUgUBUAUCYngCAAIAAgACYVIBBnNldEJpZAIBUAJieAQCY1AJAQJidgEFAmFSBAJiQggFAmNQAl8xBAFOCAUCY1ACXzIEAmJDCAUCY1ACXzMEAmNRCQECYVEBBQJhUgQCYVMIBQJjUQJfMQQCYVQIBQJjUQJfMgQCYVcDCQEBIQEJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFAmFTB2Fzc2V0SWQEAmJGCQEBbwEJAQJhaAIFAmJ4BQFQAwMJAQIhPQIFAmJGAAAJAGcCBQZoZWlnaHQFAmJGBwkAAgECC1NhbGUgZW5kZWQuBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAQEhAQkBAmJlAQUCYVcJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQEBIQEJAQJiZgIFAmFXBQJhVAkAAgECDldyb25nIG1pbiBzZWxsBAJiSwkBAW8BCQEBWAIFAmJ4BQFQBAJiTAkBAW8BCQEBVgIFAmJ4BQFQAwkAZwIAAAUCYkwJAAIBAiNObyBtYXggZWRpdGlvbiBzZXQgZm9yIHRoaXMgYXJ0d29yawMJAGcCBQJiSwUCYkwJAAIBAhhTb2xkIG91dCwgeW91IGNhbm5vdCBiaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQFOAgFfBQJiQgIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgUCYVcCAV8JAKQDAQUCYVQCAV8JAKQDAQUCYkMJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQCQBkAgUCY04AAQUDbmlsAmFSAQlhY2NlcHRCaWQFAVACYngCYnkCYnoCYnMEAmNSCQECYnICBQJhUgUCYnMEAmJCCAUCY1ICXzEEAmNTCAUCY1ICXzIEAmJDCAUCY1ICXzMEAmJ0CAUCY1ICXzQDCQECIT0CBQJjUwUCYngJAAIBAhlZb3UgY2Fubm90IGRvIHRoaXMgYWN0aW9uCQECYncGBQJhUgUBUAUCYngFAmJ5BQJiegUCYnMCYVIBCWNhbmNlbEJpZAQBUAJieAJieQJiegQCY1QJAQJidgEFAmFSBAJiQggFAmNUAl8xBAFOCAUCY1QCXzIEAmJDCAUCY1QCXzMDAwkBAiE9AgUBTgUCYnoJAQIhPQIFAU4FAmJ4BwkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24EAmNVAwkAAAIFAU4FAmJ4BQJiegUBTgQCY04JAQFvAQkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAEAmJtCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICBGJpZF8FAVACAV8FAmJ4AgFfBQJiegIBXwUCYnkEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYVcJAQJiawEJAJEDAgUCYm8AAAQCY1YCCENBTkNFTEVECQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUCYm0CBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQJibQIBXwUCY1YJAKwCAgkArAICBQJibgIBXwkApAMBBQJiQwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGUCBQJjTgABCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJjVQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFAmJvAAEFAmFXBQNuaWwBAmNXAQJjWAAEAUcFAmNXAwkAAQIFAUcCF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBAJjWQUBRwMDAwMJAAACCAUCY1kIZnVuY3Rpb24CCmFkZEFydHdvcmsJAAACCAUCY1kEZEFwcAUEdGhpcwcJAAACCAUCY1kDZmVlAKDCHgcJAAACCAUCY1kKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAJANkEAQkBAmNuAQkAkQMCCAUCY1kEYXJncwANAwMDAwkAAAIIBQJjWQhmdW5jdGlvbgINdXBkYXRlQXJ0d29yawkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAAwDAwMDCQAAAggFAmNZCGZ1bmN0aW9uAgtzZWxsQXJ0d29yawkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAAUDAwMDCQAAAggFAmNZCGZ1bmN0aW9uAglhY2NlcHRCaWQJAAACCAUCY1kEZEFwcAUEdGhpcwcJAAACCAUCY1kDZmVlAKDCHgcJAAACCAUCY1kKZmVlQXNzZXRJZAUEdW5pdAcJAMgTAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAJANkEAQkBAmNuAQkAkQMCCAUCY1kEYXJncwAECQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACAUCY1cPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACAUCY1cPc2VuZGVyUHVibGljS2V51vnGPw==", "height": 2503567, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9SxpPKqkUZUPDiJVkTakzyweYCpKQ6DN73HYZkzrh9kp Next: Ank94k8F9yomj7QdKNgDRWtLj6p2FDs46pqu9shqdXAM Diff:
OldNewDifferences
413413 let N = bA._2
414414 let bC = bA._3
415415 let bt = bA._4
416+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
417+ then bt
418+ else false)
419+ then toString(addressFromPublicKey(fromBase58String(bs)))
420+ else toBase58String(aR.caller.bytes)
416421 if (true)
417- then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
422+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
418423 else {
419- let bD = if (if (if ((N == bx))
424+ let bE = if (if (if ((N == bx))
420425 then (bz != "")
421426 else false)
422427 then (by != "")
423428 else false)
424429 then true
425430 else false
426- let bE = o(ah(N, P))
427- if (if (if ((bE != 0))
428- then (height >= bE)
431+ let bF = o(ah(N, P))
432+ if (if (if ((bF != 0))
433+ then (height >= bF)
429434 else false)
430- then !(bD)
435+ then !(bE)
431436 else false)
432437 then throw("Sale ended.")
433438 else {
434- let bF = (N == bx)
435- let bG = o("total_nft_issued")
439+ let bG = (N == bx)
440+ let bH = o("total_nft_issued")
436441 let D = a(W(bx, P))
437- let bH = a(Q(bx, P))
438- if ((bH == ""))
442+ let bI = a(Q(bx, P))
443+ if ((bI == ""))
439444 then throw("Art doesn't exist")
440445 else {
441- let bI = q(Y(bx, P))
442- let bJ = o(X(bx, P))
443- let bc = if (bF)
446+ let bJ = q(Y(bx, P))
447+ let bK = o(X(bx, P))
448+ let bc = if (bG)
444449 then (B * 2)
445450 else o(ag(bx, P))
446- let bb = if (bF)
451+ let bb = if (bG)
447452 then toBase58String(i)
448453 else a(ai(bx, P))
449- let bK = o(V(bx, P))
450- if (if (if (!(bD))
451- then !(bF)
454+ let bL = o(V(bx, P))
455+ if (if (if (!(bE))
456+ then !(bG)
452457 else false)
453458 then if (if ((0 >= bc))
454459 then true
455- else !(bI))
460+ else !(bJ))
456461 then true
457- else (0 >= bK)
462+ else (0 >= bL)
458463 else false)
459464 then throw("Art not for sale")
460- else if (if (if (!(bD))
461- then bF
465+ else if (if (if (!(bE))
466+ then bG
462467 else false)
463- then (0 >= bK)
468+ then (0 >= bL)
464469 else false)
465470 then throw("Max issuable not set")
466471 else {
467472 let aP = aF(bx)
468- if (if (bD)
473+ if (if (bE)
469474 then (aP != "")
470475 else false)
471476 then throw(aP)
472477 else {
473478 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
474- let bL = if (bD)
479+ let bM = if (bE)
475480 then bl(bm)
476481 else ba(aR, bb, bc)
477- let aT = bL._1
478- let aW = bL._2
479- let bM = valueOrElse(getString(g, ak(bx)), f)
480- let bN = valueOrElse(getInteger(g, am(bx)), 0)
481- let bO = valueOrElse(getString(g, an(bx)), f)
482- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
483- let bQ = p(bx)
484- let bR = if ((bQ > height))
482+ let aT = bM._1
483+ let aW = bM._2
484+ let bN = valueOrElse(getString(g, ak(bx)), f)
485+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
486+ let bP = valueOrElse(getString(g, an(bx)), f)
487+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
488+ let bR = p(bx)
489+ let bS = if ((bR > height))
485490 then 0
486491 else if ((aW == i))
487492 then r
488493 else s
489- let bS = fraction(aT, bR, 100)
490- let bT = if (if (if ((bM != f))
491- then (bN > 0)
494+ let bT = fraction(aT, bS, 100)
495+ let bU = if (if (if ((bN != f))
496+ then (bO > 0)
492497 else false)
493- then (height > bQ)
498+ then (height > bR)
494499 else false)
495- then fraction(aT, bN, 10000)
500+ then fraction(aT, bO, 10000)
496501 else 0
497- let bU = if (if (if ((bO != f))
498- then (bP > 0)
502+ let bV = if (if (if ((bP != f))
503+ then (bQ > 0)
499504 else false)
500- then (height > bQ)
505+ then (height > bR)
501506 else false)
502- then fraction(aT, bP, 10000)
507+ then fraction(aT, bQ, 10000)
503508 else 0
504- let bV = (aT - bS)
505- if ((bJ == bK))
509+ let bW = (aT - bT)
510+ if ((bK == bL))
506511 then throw("Art sold out")
507512 else {
508- let bW = (bJ + 1)
509- let bX = ((((((((((("Creator: " + bx) + ",
513+ let bX = (bK + 1)
514+ let bY = ((((((((((("Creator: " + bx) + ",
510515 ArtID: ") + P) + ",
511516 SignID: ") + D) + ",
512- Artwork name: ") + bH) + ",
513- Issue: ") + toString(bW)) + "/") + toString(bK))
514- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
515- let bZ = calculateAssetId(bY)
516- let ca = if (if ((bW == bK))
517+ Artwork name: ") + bI) + ",
518+ Issue: ") + toString(bX)) + "/") + toString(bL))
519+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
520+ let ca = calculateAssetId(bZ)
521+ let cb = if (if ((bX == bL))
517522 then true
518- else !(bI))
523+ else !(bJ))
519524 then false
520525 else true
521- let cb = if (if (if ((N == bx))
526+ let cc = if (if (if ((N == bx))
522527 then (bz != "")
523528 else false)
524529 then (by != "")
525530 else false)
526531 then addressFromStringValue(bz)
527532 else aR.caller
528- let cc = if (!(isDefined(aW)))
533+ let cd = if (!(isDefined(aW)))
529534 then "WAVES"
530535 else toBase58String(value(aW))
531536 let bn = a((bm + "_OPEN"))
532- let cd = DeleteEntry((bm + "_OPEN"))
533- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
534- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
535- let cg = if (!(bD))
536- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
537- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
538- let ch = StringEntry(cf, cg)
539- let ci = if ((bT != 0))
540- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
541- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
537+ let ce = DeleteEntry((bm + "_OPEN"))
538+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
539+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
540+ let ch = if (!(bE))
541+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
542+ else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
543+ let ci = StringEntry(cg, ch)
542544 let cj = if ((bU != 0))
543- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
544- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
545- let ck = if (bt)
545+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
546+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
547+ let ck = if ((bV != 0))
548+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
549+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
550+ let cl = if (bt)
546551 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
547552 else nil
548- let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
549- if (bD)
550- then [ch, ce, cd] :: cl
551- else ch :: cl
553+ let cm = ((([IntegerEntry(X(bx, P), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bH + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
554+ if (bE)
555+ then [ci, cf, ce] :: cm
556+ else ci :: cm
552557 }
553558 }
554559 }
558563 }
559564
560565
561-func cm (cn) = {
562- let G = cn
566+func cn (co) = {
567+ let G = co
563568 if ($isInstanceOf(G, "String"))
564569 then {
565- let co = G
566- co
570+ let cp = G
571+ cp
567572 }
568573 else throw("Sponsored Public Key String expected")
569574 }
570575
571576
572-@Callable(cp)
573-func setConf (b,cq) = {
574- let N = toString(cp.caller)
577+@Callable(cq)
578+func setConf (b,cr) = {
579+ let N = toString(cq.caller)
575580 if (containsElement([m, toString(this)], N))
576581 then if (contains(b, "conf_"))
577- then [StringEntry(b, cq)]
582+ then [StringEntry(b, cr)]
578583 else throw("Entries starting with conf_ only")
579584 else throw("You are not allowed to change this")
580585 }
582587
583588
584589 @Callable(aR)
585-func addArtwork (F,D,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = {
586- let ct = br(aR, bs)
587- let P = ct._1
588- let N = ct._2
589- let bC = ct._3
590- let bt = ct._4
590+func addArtwork (F,D,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = {
591+ let cu = br(aR, bs)
592+ let P = cu._1
593+ let N = cu._2
594+ let bC = cu._3
595+ let bt = cu._4
591596 if (!(K(F)))
592597 then throw("Hash should be 64 characters maximum")
593598 else {
594- let cu = aH(ay, aB)
595- let aJ = cu._1
596- let aK = cu._2
597- let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
598- if ((cv != ""))
599+ let cv = aH(ay, aB)
600+ let aJ = cv._1
601+ let aK = cv._2
602+ let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
603+ if ((cw != ""))
599604 then throw("Something went wrong!")
600605 else {
601- let cw = (p((N + "_free_drops")) > 0)
602- let cx = if (cw)
606+ let cx = (p((N + "_free_drops")) > 0)
607+ let cy = if (cx)
603608 then $Tuple2(0, D)
604609 else aU(aR)
605- let aT = cx._1
606- let aW = cx._2
610+ let aT = cy._1
611+ let aW = cy._2
607612 if (!(isDefined(aT)))
608613 then throw("Something went wrong")
609614 else {
610- let cy = a(au(F, N))
611- if ((cy != ""))
615+ let cz = a(au(F, N))
616+ if ((cz != ""))
612617 then throw("You already added it")
613618 else {
614- let cz = a(ar(F))
615- if ((cz != ""))
619+ let cA = a(ar(F))
620+ if ((cA != ""))
616621 then throw("Hash already registered")
617622 else {
618- let cA = C(D, N, F)
619- if (!(cA))
623+ let cB = C(D, N, F)
624+ if (!(cB))
620625 then throw("Sign Certificate not found for this address.")
621626 else {
622- let cB = if (cw)
627+ let cC = if (cx)
623628 then invoke(h, "useFreeDrop", [N], nil)
624629 else unit
625- if ((cB == cB))
630+ if ((cC == cC))
626631 then {
627- let ck = if (bt)
632+ let cl = if (bt)
628633 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
629634 else nil
630- ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bC), StringEntry(Q(N, P), aL), StringEntry(R(N, P), aM), StringEntry(S(N, P), aw), StringEntry(U(N, P), ax), StringEntry(T(N, P), aA), StringEntry(Z(N, P), aK), StringEntry(aa(N, P), aJ), StringEntry(ac(N, P), cr), StringEntry(ab(N, P), aN), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(as(N, D), P), StringEntry(ap(N, P), F), StringEntry(ae(N, P), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
635+ ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bC), StringEntry(Q(N, P), aL), StringEntry(R(N, P), aM), StringEntry(S(N, P), aw), StringEntry(U(N, P), ax), StringEntry(T(N, P), aA), StringEntry(Z(N, P), aK), StringEntry(aa(N, P), aJ), StringEntry(ac(N, P), cs), StringEntry(ab(N, P), aN), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(as(N, D), P), StringEntry(ap(N, P), F), StringEntry(ae(N, P), ct), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ cl)
631636 }
632637 else throw("Strict value is not equal to itself.")
633638 }
641646
642647
643648 @Callable(aR)
644-func updateArtwork (aq,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = if (!(v))
649+func updateArtwork (aq,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = if (!(v))
645650 then throw(w)
646651 else {
647- let cC = br(aR, bs)
648- let bB = cC._1
649- let N = cC._2
650- let bC = cC._3
651- let bt = cC._4
652- let cD = aH(ay, aB)
653- let aJ = cD._1
654- let aK = cD._2
655- let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
656- if ((cv != ""))
652+ let cD = br(aR, bs)
653+ let bB = cD._1
654+ let N = cD._2
655+ let bC = cD._3
656+ let bt = cD._4
657+ let cE = aH(ay, aB)
658+ let aJ = cE._1
659+ let aK = cE._2
660+ let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
661+ if ((cw != ""))
657662 then throw("Something went wrong!")
658663 else {
659- let cy = a(Q(N, aq))
660- if ((cy == ""))
664+ let cz = a(Q(N, aq))
665+ if ((cz == ""))
661666 then throw("Entry not found")
662667 else {
663- let cE = a(aj(N, aq))
664- if ((cE == "ILLEGAL"))
668+ let cF = a(aj(N, aq))
669+ if ((cF == "ILLEGAL"))
665670 then throw("Cannot update ILLEGAL artwork")
666671 else if (!(aX(N, aq)))
667672 then {
668- let ck = if (bt)
673+ let cl = if (bt)
669674 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
670675 else nil
671- ([StringEntry(Q(N, aq), aL), StringEntry(R(N, aq), aM), StringEntry(S(N, aq), aw), StringEntry(U(N, aq), ax), StringEntry(T(N, aq), aA), StringEntry(aa(N, aq), aJ), StringEntry(Z(N, aq), aK), StringEntry(ab(N, aq), aN), StringEntry(ac(N, aq), cr), StringEntry(ae(N, aq), cs), IntegerEntry(af(N, aq), aO)] ++ ck)
676+ ([StringEntry(Q(N, aq), aL), StringEntry(R(N, aq), aM), StringEntry(S(N, aq), aw), StringEntry(U(N, aq), ax), StringEntry(T(N, aq), aA), StringEntry(aa(N, aq), aJ), StringEntry(Z(N, aq), aK), StringEntry(ab(N, aq), aN), StringEntry(ac(N, aq), cs), StringEntry(ae(N, aq), ct), IntegerEntry(af(N, aq), aO)] ++ cl)
672677 }
673678 else throw("Already minted")
674679 }
678683
679684
680685 @Callable(aR)
681-func flagArtwork (P,cF,cE,cG) = {
682- let cH = bv(aR)
683- let bB = cH._1
684- let N = cH._2
686+func flagArtwork (P,cG,cF,cH) = {
687+ let cI = bv(aR)
688+ let bB = cI._1
689+ let N = cI._2
685690 if (containsElement([m, toString(this)], N))
686- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
687- then [StringEntry(aj(cF, P), cE), StringEntry(ad(cF, P), cG)]
688- else throw(("Unknow status " + cE))
691+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
692+ then [StringEntry(aj(cG, P), cF), StringEntry(ad(cG, P), cH)]
693+ else throw(("Unknow status " + cF))
689694 else throw("You are not allowed")
690695 }
691696
692697
693698
694699 @Callable(aR)
695-func deleteArtwork (P,cF) = {
696- let cI = bv(aR)
697- let bB = cI._1
698- let N = cI._2
700+func deleteArtwork (P,cG) = {
701+ let cJ = bv(aR)
702+ let bB = cJ._1
703+ let N = cJ._2
699704 let aY = if (containsElement([m, toString(this)], N))
700- then cF
705+ then cG
701706 else N
702- let cy = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
703- if ((cy == ""))
707+ let cz = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
708+ if ((cz == ""))
704709 then throw("No art matching for this address")
705710 else {
706711 let F = a(ap(aY, P))
711716 if ((D == ""))
712717 then throw("No SIGN ID matching")
713718 else {
714- let cJ = [DeleteEntry(O(aY, P)), DeleteEntry(Q(aY, P)), DeleteEntry(R(aY, P)), DeleteEntry(S(aY, P)), DeleteEntry(U(aY, P)), DeleteEntry(T(aY, P)), DeleteEntry(Z(aY, P)), DeleteEntry(aa(aY, P)), DeleteEntry(ac(aY, P)), DeleteEntry(ab(aY, P)), DeleteEntry(V(aY, P)), DeleteEntry(W(aY, P)), DeleteEntry(X(aY, P)), DeleteEntry(Y(aY, P)), DeleteEntry(aj(aY, P)), DeleteEntry(ag(aY, P)), DeleteEntry(ai(aY, P)), DeleteEntry(ar(F)), DeleteEntry(as(aY, D)), DeleteEntry(au(F, aY)), DeleteEntry(ah(aY, P)), DeleteEntry(ad(aY, P)), DeleteEntry(ae(aY, P)), DeleteEntry(af(aY, P))]
719+ let cK = [DeleteEntry(O(aY, P)), DeleteEntry(Q(aY, P)), DeleteEntry(R(aY, P)), DeleteEntry(S(aY, P)), DeleteEntry(U(aY, P)), DeleteEntry(T(aY, P)), DeleteEntry(Z(aY, P)), DeleteEntry(aa(aY, P)), DeleteEntry(ac(aY, P)), DeleteEntry(ab(aY, P)), DeleteEntry(V(aY, P)), DeleteEntry(W(aY, P)), DeleteEntry(X(aY, P)), DeleteEntry(Y(aY, P)), DeleteEntry(aj(aY, P)), DeleteEntry(ag(aY, P)), DeleteEntry(ai(aY, P)), DeleteEntry(ar(F)), DeleteEntry(as(aY, D)), DeleteEntry(au(F, aY)), DeleteEntry(ah(aY, P)), DeleteEntry(ad(aY, P)), DeleteEntry(ae(aY, P)), DeleteEntry(af(aY, P))]
715720 if (!(aX(aY, P)))
716721 then if (!(v))
717722 then throw(w)
718- else cJ
723+ else cK
719724 else if (containsElement([m, toString(this)], N))
720- then cJ
725+ then cK
721726 else throw("Art already minted, you cannot delete it")
722727 }
723728 }
727732
728733
729734 @Callable(aR)
730-func sellArtwork (P,bg,cK,aW,bE,bs) = {
731- let cL = br(aR, bs)
732- let bB = cL._1
733- let N = cL._2
734- let bC = cL._3
735- let bt = cL._4
736- let bH = a(Q(N, P))
737- if ((bH == ""))
735+func sellArtwork (P,bg,cL,aW,bF,bs) = {
736+ let cM = br(aR, bs)
737+ let bB = cM._1
738+ let N = cM._2
739+ let bC = cM._3
740+ let bt = cM._4
741+ let bI = a(Q(N, P))
742+ if ((bI == ""))
738743 then throw("This art doesn't match your account")
739744 else {
740- let cE = a(aj(N, P))
741- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
745+ let cF = a(aj(N, P))
746+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
742747 then throw("Flagged artwork")
743748 else {
744- let cM = o(("current_bidamount_" + P))
745- if ((0 > bE))
749+ let cN = o(("current_bidamount_" + P))
750+ if ((0 > bF))
746751 then throw("Negative end")
747- else if (if ((bE > 0))
748- then if ((cK != 1))
752+ else if (if ((bF > 0))
753+ then if ((cL != 1))
749754 then true
750755 else (bg != 0)
751756 else false)
752757 then throw("Timed offer only allowed for unique edition and offer only")
753758 else {
754- let cN = if ((bE == 0))
759+ let cO = if ((bF == 0))
755760 then 0
756761 else height
757762 if (!(be(aW)))
763768 if ((aP != ""))
764769 then throw(aP)
765770 else {
766- let bJ = o(X(N, P))
767- let bK = o(V(N, P))
768- if ((cK > 100))
771+ let bK = o(X(N, P))
772+ let bL = o(V(N, P))
773+ if ((cL > 100))
769774 then throw("100 editions max per artwork")
770- else if (if ((bJ != 0))
771- then (bJ == bK)
775+ else if (if ((bK != 0))
776+ then (bK == bL)
772777 else false)
773778 then throw("Max edition reached.")
774- else if (if ((bJ > 0))
775- then (bK != cK)
779+ else if (if ((bK > 0))
780+ then (bL != cL)
776781 else false)
777782 then throw("Cannot change maximum issuable anymore")
778- else if (if ((cM > 0))
779- then (bK != cK)
783+ else if (if ((cN > 0))
784+ then (bL != cL)
780785 else false)
781786 then throw("Cannot change maximum issuable with active orders")
782787 else {
783- let ca = if (if ((bg > 0))
784- then (cK > 0)
788+ let cb = if (if ((bg > 0))
789+ then (cL > 0)
785790 else false)
786791 then true
787792 else false
788- let ck = if (bt)
793+ let cl = if (bt)
789794 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
790795 else nil
791- ([BooleanEntry(Y(N, P), ca), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cK), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cN + bE))] ++ ck)
796+ ([BooleanEntry(Y(N, P), cb), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cL), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cO + bF))] ++ cl)
792797 }
793798 }
794799 }
806811
807812 @Callable(aR)
808813 func setBid (P,bx) = {
809- let cO = bv(aR)
810- let bB = cO._1
811- let N = cO._2
812- let bC = cO._3
813- let cP = aQ(aR)
814- let aS = cP._1
815- let aT = cP._2
814+ let cP = bv(aR)
815+ let bB = cP._1
816+ let N = cP._2
817+ let bC = cP._3
818+ let cQ = aQ(aR)
819+ let aS = cQ._1
820+ let aT = cQ._2
816821 let aW = if (!(isDefined(aS.assetId)))
817822 then "WAVES"
818823 else toBase58String(value(aS.assetId))
819- let bE = o(ah(bx, P))
820- if (if ((bE != 0))
821- then (height >= bE)
824+ let bF = o(ah(bx, P))
825+ if (if ((bF != 0))
826+ then (height >= bF)
822827 else false)
823828 then throw("Sale ended.")
824829 else {
825- let cM = o(("current_bidamount_" + P))
830+ let cN = o(("current_bidamount_" + P))
826831 if (!(be(aW)))
827832 then throw("asset not accepted")
828833 else if (!(bf(aW, aT)))
829834 then throw("Wrong min sell")
830835 else {
831- let bJ = o(X(bx, P))
832- let bK = o(V(bx, P))
833- if ((0 >= bK))
836+ let bK = o(X(bx, P))
837+ let bL = o(V(bx, P))
838+ if ((0 >= bL))
834839 then throw("No max edition set for this artwork")
835- else if ((bJ >= bK))
840+ else if ((bK >= bL))
836841 then throw("Sold out, you cannot bid")
837- else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
842+ else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
838843 }
839844 }
840845 }
843848
844849 @Callable(aR)
845850 func acceptBid (P,bx,by,bz,bs) = {
846- let cQ = br(aR, bs)
847- let bB = cQ._1
848- let cR = cQ._2
849- let bC = cQ._3
850- let bt = cQ._4
851- if ((cR != bx))
851+ let cR = br(aR, bs)
852+ let bB = cR._1
853+ let cS = cR._2
854+ let bC = cR._3
855+ let bt = cR._4
856+ if ((cS != bx))
852857 then throw("You cannot do this action")
853858 else bw(aR, P, bx, by, bz, bs)
854859 }
857862
858863 @Callable(aR)
859864 func cancelBid (P,bx,by,bz) = {
860- let cS = bv(aR)
861- let bB = cS._1
862- let N = cS._2
863- let bC = cS._3
865+ let cT = bv(aR)
866+ let bB = cT._1
867+ let N = cT._2
868+ let bC = cT._3
864869 if (if ((N != bz))
865870 then (N != bx)
866871 else false)
867872 then throw("You cannot do this action")
868873 else {
869- let cT = if ((N == bx))
874+ let cU = if ((N == bx))
870875 then bz
871876 else N
872- let cM = o(("current_bidamount_" + P))
877+ let cN = o(("current_bidamount_" + P))
873878 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
874879 let bn = a((bm + "_OPEN"))
875880 if ((bn == ""))
877882 else {
878883 let bo = split(bn, "_")
879884 let aW = bk(bo[0])
880- let cU = "CANCELED"
881-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
885+ let cV = "CANCELED"
886+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
882887 }
883888 }
884889 }
885890
886891
887-@Verifier(cV)
888-func cW () = {
889- let G = cV
892+@Verifier(cW)
893+func cX () = {
894+ let G = cW
890895 if ($isInstanceOf(G, "InvokeScriptTransaction"))
891896 then {
892- let cX = G
893- if (if (if (if ((cX.function == "addArtwork"))
894- then (cX.dApp == this)
897+ let cY = G
898+ if (if (if (if ((cY.function == "addArtwork"))
899+ then (cY.dApp == this)
895900 else false)
896- then (cX.fee == 500000)
901+ then (cY.fee == 500000)
897902 else false)
898- then (cX.feeAssetId == unit)
903+ then (cY.feeAssetId == unit)
899904 else false)
900- then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[13])))
901- else if (if (if (if ((cX.function == "updateArtwork"))
902- then (cX.dApp == this)
905+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
906+ else if (if (if (if ((cY.function == "updateArtwork"))
907+ then (cY.dApp == this)
903908 else false)
904- then (cX.fee == 500000)
909+ then (cY.fee == 500000)
905910 else false)
906- then (cX.feeAssetId == unit)
911+ then (cY.feeAssetId == unit)
907912 else false)
908- then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[12])))
909- else if (if (if (if ((cX.function == "sellArtwork"))
910- then (cX.dApp == this)
913+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
914+ else if (if (if (if ((cY.function == "sellArtwork"))
915+ then (cY.dApp == this)
911916 else false)
912- then (cX.fee == 500000)
917+ then (cY.fee == 500000)
913918 else false)
914- then (cX.feeAssetId == unit)
919+ then (cY.feeAssetId == unit)
915920 else false)
916- then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[5])))
917- else if (if (if (if ((cX.function == "acceptBid"))
918- then (cX.dApp == this)
921+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
922+ else if (if (if (if ((cY.function == "acceptBid"))
923+ then (cY.dApp == this)
919924 else false)
920- then (cX.fee == 500000)
925+ then (cY.fee == 500000)
921926 else false)
922- then (cX.feeAssetId == unit)
927+ then (cY.feeAssetId == unit)
923928 else false)
924- then sigVerify_128Kb(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[4])))
925- else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
929+ then sigVerify_128Kb(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[4])))
930+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
926931 }
927- else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
932+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
928933 }
929934
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b) = valueOrElse(getString(this, b), "")
55
66
77 let c = false
88
99 let d = value(addressFromString(a("conf_oracle_fee")))
1010
1111 let e = value(addressFromString(a("conf_signweb_dapp")))
1212
1313 let f = a("conf_fee_receiver")
1414
1515 let g = if (c)
1616 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1717 else value(addressFromString(a("conf_users_dapp")))
1818
1919 let h = value(addressFromString(a("conf_whitelist_dapp")))
2020
2121 let i = fromBase58String(a("conf_accepted_asset_SIGN"))
2222
2323 let j = fromBase58String(a("conf_accepted_asset_USDN"))
2424
2525 let k = fromBase58String(a("conf_accepted_asset_USDT"))
2626
2727 let l = base58''
2828
2929 let m = a("conf_admin_1")
3030
3131 func n (b) = valueOrErrorMessage(getInteger(d, b), "Integer undefine or 0 in oracle")
3232
3333
3434 func o (b) = valueOrElse(getInteger(this, b), 0)
3535
3636
3737 func p (b) = valueOrElse(getInteger(h, b), 0)
3838
3939
4040 func q (b) = valueOrElse(getBoolean(this, b), false)
4141
4242
4343 let r = 7
4444
4545 let s = 10
4646
4747 let t = a("conf_default_licence")
4848
4949 let u = a("conf_default_licence_hash")
5050
5151 let v = valueOrElse(getBoolean(g, "conf_dapp_is_running"), true)
5252
5353 let w = valueOrElse(getString(g, "conf_maintenance_msg"), "")
5454
5555 let x = "SUSPENDED"
5656
5757 let y = "REMOVED"
5858
5959 let z = "UNREGISTERED"
6060
6161 let A = "ALLOWED"
6262
6363 let B = n(("certification_fee_" + toBase58String(i)))
6464
6565 func C (D,E,F) = {
6666 let G = getString(e, ((("data_fc_" + D) + "_") + E))
6767 if ($isInstanceOf(G, "String"))
6868 then {
6969 let H = G
7070 if (contains(H, F))
7171 then true
7272 else false
7373 }
7474 else false
7575 }
7676
7777
7878 func I (J) = if (contains(J, "/"))
7979 then if (if ((76 > size(J)))
8080 then (size(split(J, "/")[0]) == 59)
8181 else false)
8282 then (16 > size(split(J, "/")[1]))
8383 else false
8484 else false
8585
8686
8787 func K (L) = (size(L) == 64)
8888
8989
9090 func M (N) = ("user_status_" + N)
9191
9292
9393 func O (N,P) = ((("art_date_" + P) + "_") + N)
9494
9595
9696 func Q (N,P) = ((("art_name_" + P) + "_") + N)
9797
9898
9999 func R (N,P) = ((("art_desc_" + P) + "_") + N)
100100
101101
102102 func S (N,P) = ((("art_display_cid_" + P) + "_") + N)
103103
104104
105105 func T (N,P) = ((("art_export_hash_" + P) + "_") + N)
106106
107107
108108 func U (N,P) = ((("art_export_cid_" + P) + "_") + N)
109109
110110
111111 func V (N,P) = ((("art_maxmint_" + P) + "_") + N)
112112
113113
114114 func W (N,P) = ((("art_signid_" + P) + "_") + N)
115115
116116
117117 func X (N,P) = ((("art_issued_" + P) + "_") + N)
118118
119119
120120 func Y (N,P) = ((("art_onsale_" + P) + "_") + N)
121121
122122
123123 func Z (N,P) = ((("art_licence_hash_" + P) + "_") + N)
124124
125125
126126 func aa (N,P) = ((("art_licence_cid_" + P) + "_") + N)
127127
128128
129129 func ab (N,P) = ((("art_tags_" + P) + "_") + N)
130130
131131
132132 func ac (N,P) = ((("art_type_" + P) + "_") + N)
133133
134134
135135 func ad (N,P) = ((("art_note_" + P) + "_") + N)
136136
137137
138138 func ae (N,P) = ((("art_crawler_cid_" + P) + "_") + N)
139139
140140
141141 func af (N,P) = ((("art_royalties_" + P) + "_") + N)
142142
143143
144144 func ag (N,P) = ((("art_price_" + P) + "_") + N)
145145
146146
147147 func ah (N,P) = ((("art_endsale_" + P) + "_") + N)
148148
149149
150150 func ai (N,P) = ((("art_assetAccepted_" + P) + "_") + N)
151151
152152
153153 func aj (N,P) = ((("art_flag_" + P) + "_") + N)
154154
155155
156156 func ak (al) = ("artist_agent_" + al)
157157
158158
159159 func am (al) = ("artist_agent_primary_" + al)
160160
161161
162162 func an (al) = ("artist_public_agent_" + al)
163163
164164
165165 func ao (al) = ("artist_public_agent_primary_" + al)
166166
167167
168168 func ap (N,aq) = ((("get_hashbytxidaddr_" + aq) + "_") + N)
169169
170170
171171 func ar (F) = ("get_owner_by_hash_" + F)
172172
173173
174174 func as (N,at) = ((("get_artidbysignid_" + at) + "_") + N)
175175
176176
177177 func au (F,N) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + N)))))
178178
179179
180180 func av (aw,ax,ay) = if (!(I(aw)))
181181 then throw("Wrong Display CID")
182182 else if (!(I(ax)))
183183 then throw("Wrong Export CID")
184184 else if (if ((ay != ""))
185185 then !(I(ay))
186186 else false)
187187 then throw("Wrong Licence CID")
188188 else true
189189
190190
191191 func az (aA,aB) = if (!(K(aA)))
192192 then throw("Export Hash 64 char. max")
193193 else if (!(K(aB)))
194194 then throw("Licence Hash 64 char. max")
195195 else true
196196
197197
198198 func aC (aD,aE) = if ((size(aD) == 0))
199199 then throw("Field cannot be is empty")
200200 else if ((size(aD) > aE))
201201 then throw((aD + " is too long"))
202202 else true
203203
204204
205205 func aF (N) = {
206206 let aG = valueOrElse(getString(g, M(N)), z)
207207 if (if ((aG == z))
208208 then true
209209 else (aG == A))
210210 then "Register this account first with \"Account\" tab"
211211 else if ((aG == x))
212212 then "Account suspended"
213213 else if ((aG == y))
214214 then "Account removed"
215215 else ""
216216 }
217217
218218
219219 func aH (ay,aB) = {
220220 let J = if ((size(ay) == 0))
221221 then t
222222 else ay
223223 let L = if ((size(aB) == 0))
224224 then u
225225 else aB
226226 $Tuple2(J, L)
227227 }
228228
229229
230230 func aI (N,aw,ax,aJ,aA,aK,aL,aM,aN,aO) = {
231231 let aP = aF(N)
232232 if ((aP != ""))
233233 then throw(aP)
234234 else if ((size(aw) == 0))
235235 then throw("Display CID cannot be empty")
236236 else if (!(av(aw, ax, aJ)))
237237 then throw("Problem with CID")
238238 else if (!(az(aA, aK)))
239239 then throw("Problem with Hashes")
240240 else if (!(aC(aL, 100)))
241241 then throw("100 Char. max name")
242242 else if (!(aC(aM, 1000)))
243243 then throw("1000 Char. max description")
244244 else if (if ((0 > aO))
245245 then true
246246 else (aO > 1000))
247247 then throw("Royalties cannot be less than 0% or higher than 10%")
248248 else if ((size(split(aN, ",")) > 5))
249249 then throw("5 tags max.")
250250 else ""
251251 }
252252
253253
254254 func aQ (aR) = if ((size(aR.payments) == 0))
255255 then throw("No payment attached")
256256 else {
257257 let aS = value(aR.payments[0])
258258 let aT = value(aS.amount)
259259 $Tuple2(aS, aT)
260260 }
261261
262262
263263 func aU (aR) = {
264264 let aV = aQ(aR)
265265 let aS = aV._1
266266 let aT = aV._2
267267 let aW = if (if (isDefined(aS.assetId))
268268 then (aS.assetId == i)
269269 else false)
270270 then aS.assetId
271271 else throw("Only SIGN token accepted as transaction fee")
272272 if ((aT != B))
273273 then throw(("Payment amount should be " + toString(B)))
274274 else $Tuple2(aT, aW)
275275 }
276276
277277
278278 func aX (aY,P) = {
279279 let G = getInteger(this, X(aY, P))
280280 if ($isInstanceOf(G, "Int"))
281281 then {
282282 let aZ = G
283283 if ((aZ != 0))
284284 then true
285285 else false
286286 }
287287 else false
288288 }
289289
290290
291291 func ba (aR,bb,bc) = {
292292 let bd = aQ(aR)
293293 let aS = bd._1
294294 let aT = bd._2
295295 let aW = if (!(isDefined(aS.assetId)))
296296 then unit
297297 else if (if ((size(bb) > 0))
298298 then (toBase58String(value(aS.assetId)) == bb)
299299 else false)
300300 then aS.assetId
301301 else throw("Wrong asset id")
302302 if (if ((aW == unit))
303303 then (bb != "")
304304 else false)
305305 then throw("Wrong asset id")
306306 else if ((bc != aT))
307307 then throw("Payment don't match")
308308 else $Tuple2(aT, aW)
309309 }
310310
311311
312312 func be (aW) = if (if (if (if (if ((aW != toBase58String(i)))
313313 then (aW != toBase58String(l))
314314 else false)
315315 then (aW != "WAVES")
316316 else false)
317317 then (aW != toBase58String(j))
318318 else false)
319319 then (aW != toBase58String(k))
320320 else false)
321321 then throw("Only SIGN, USDN,USDT or WAVES accepted")
322322 else true
323323
324324
325325 func bf (aW,bg) = {
326326 let bh = if (c)
327327 then 10
328328 else n("waves_min_sell")
329329 let bi = 1000000
330330 let bj = if (c)
331331 then 1
332332 else (B * 2)
333333 if (if (if (if (if (if ((aW == toBase58String(j)))
334334 then (bi > bg)
335335 else false)
336336 then (bg != 0)
337337 else false)
338338 then true
339339 else if (if ((aW == toBase58String(k)))
340340 then (bi > bg)
341341 else false)
342342 then (bg != 0)
343343 else false)
344344 then true
345345 else if (if ((aW == toBase58String(i)))
346346 then (bj > bg)
347347 else false)
348348 then (bg != 0)
349349 else false)
350350 then true
351351 else if (if (if ((aW == toBase58String(l)))
352352 then true
353353 else (aW == "WAVES"))
354354 then (bh > bg)
355355 else false)
356356 then (bg != 0)
357357 else false)
358358 then throw("Wrong minimum sell price")
359359 else true
360360 }
361361
362362
363363 func bk (aW) = if ((aW == "WAVES"))
364364 then unit
365365 else fromBase58String(aW)
366366
367367
368368 func bl (bm) = {
369369 let bn = a((bm + "_OPEN"))
370370 if ((bn == ""))
371371 then throw("Bid not found")
372372 else {
373373 let bo = split(bn, "_")
374374 let bp = parseIntValue(bo[1])
375375 let bq = bk(bo[0])
376376 if ((0 >= bp))
377377 then throw("Wrong amount")
378378 else $Tuple2(bp, bq)
379379 }
380380 }
381381
382382
383383 func br (aR,bs) = if (!(v))
384384 then throw(w)
385385 else {
386386 let bt = if ((bs != ""))
387387 then valueOrElse(p((toString(addressFromPublicKey(fromBase58String(bs))) + "_free_txs")), 0)
388388 else 0
389389 let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
390390 then (bt > 0)
391391 else false)
392392 then toString(addressFromPublicKey(fromBase58String(bs)))
393393 else toBase58String(aR.caller.bytes)
394394 let bu = if (if ((bs != ""))
395395 then (bt > 0)
396396 else false)
397397 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
398398 else unit
399399 if ((bu == bu))
400400 then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
401401 else throw("Strict value is not equal to itself.")
402402 }
403403
404404
405405 func bv (aR) = if (!(v))
406406 then throw(w)
407407 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
408408
409409
410410 func bw (aR,P,bx,by,bz,bs) = {
411411 let bA = br(aR, bs)
412412 let bB = bA._1
413413 let N = bA._2
414414 let bC = bA._3
415415 let bt = bA._4
416+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
417+ then bt
418+ else false)
419+ then toString(addressFromPublicKey(fromBase58String(bs)))
420+ else toBase58String(aR.caller.bytes)
416421 if (true)
417- then throw(((((((N + " / ") + bx) + " / ") + bz) + " / ") + bs))
422+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
418423 else {
419- let bD = if (if (if ((N == bx))
424+ let bE = if (if (if ((N == bx))
420425 then (bz != "")
421426 else false)
422427 then (by != "")
423428 else false)
424429 then true
425430 else false
426- let bE = o(ah(N, P))
427- if (if (if ((bE != 0))
428- then (height >= bE)
431+ let bF = o(ah(N, P))
432+ if (if (if ((bF != 0))
433+ then (height >= bF)
429434 else false)
430- then !(bD)
435+ then !(bE)
431436 else false)
432437 then throw("Sale ended.")
433438 else {
434- let bF = (N == bx)
435- let bG = o("total_nft_issued")
439+ let bG = (N == bx)
440+ let bH = o("total_nft_issued")
436441 let D = a(W(bx, P))
437- let bH = a(Q(bx, P))
438- if ((bH == ""))
442+ let bI = a(Q(bx, P))
443+ if ((bI == ""))
439444 then throw("Art doesn't exist")
440445 else {
441- let bI = q(Y(bx, P))
442- let bJ = o(X(bx, P))
443- let bc = if (bF)
446+ let bJ = q(Y(bx, P))
447+ let bK = o(X(bx, P))
448+ let bc = if (bG)
444449 then (B * 2)
445450 else o(ag(bx, P))
446- let bb = if (bF)
451+ let bb = if (bG)
447452 then toBase58String(i)
448453 else a(ai(bx, P))
449- let bK = o(V(bx, P))
450- if (if (if (!(bD))
451- then !(bF)
454+ let bL = o(V(bx, P))
455+ if (if (if (!(bE))
456+ then !(bG)
452457 else false)
453458 then if (if ((0 >= bc))
454459 then true
455- else !(bI))
460+ else !(bJ))
456461 then true
457- else (0 >= bK)
462+ else (0 >= bL)
458463 else false)
459464 then throw("Art not for sale")
460- else if (if (if (!(bD))
461- then bF
465+ else if (if (if (!(bE))
466+ then bG
462467 else false)
463- then (0 >= bK)
468+ then (0 >= bL)
464469 else false)
465470 then throw("Max issuable not set")
466471 else {
467472 let aP = aF(bx)
468- if (if (bD)
473+ if (if (bE)
469474 then (aP != "")
470475 else false)
471476 then throw(aP)
472477 else {
473478 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
474- let bL = if (bD)
479+ let bM = if (bE)
475480 then bl(bm)
476481 else ba(aR, bb, bc)
477- let aT = bL._1
478- let aW = bL._2
479- let bM = valueOrElse(getString(g, ak(bx)), f)
480- let bN = valueOrElse(getInteger(g, am(bx)), 0)
481- let bO = valueOrElse(getString(g, an(bx)), f)
482- let bP = valueOrElse(getInteger(g, ao(bx)), 0)
483- let bQ = p(bx)
484- let bR = if ((bQ > height))
482+ let aT = bM._1
483+ let aW = bM._2
484+ let bN = valueOrElse(getString(g, ak(bx)), f)
485+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
486+ let bP = valueOrElse(getString(g, an(bx)), f)
487+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
488+ let bR = p(bx)
489+ let bS = if ((bR > height))
485490 then 0
486491 else if ((aW == i))
487492 then r
488493 else s
489- let bS = fraction(aT, bR, 100)
490- let bT = if (if (if ((bM != f))
491- then (bN > 0)
494+ let bT = fraction(aT, bS, 100)
495+ let bU = if (if (if ((bN != f))
496+ then (bO > 0)
492497 else false)
493- then (height > bQ)
498+ then (height > bR)
494499 else false)
495- then fraction(aT, bN, 10000)
500+ then fraction(aT, bO, 10000)
496501 else 0
497- let bU = if (if (if ((bO != f))
498- then (bP > 0)
502+ let bV = if (if (if ((bP != f))
503+ then (bQ > 0)
499504 else false)
500- then (height > bQ)
505+ then (height > bR)
501506 else false)
502- then fraction(aT, bP, 10000)
507+ then fraction(aT, bQ, 10000)
503508 else 0
504- let bV = (aT - bS)
505- if ((bJ == bK))
509+ let bW = (aT - bT)
510+ if ((bK == bL))
506511 then throw("Art sold out")
507512 else {
508- let bW = (bJ + 1)
509- let bX = ((((((((((("Creator: " + bx) + ",
513+ let bX = (bK + 1)
514+ let bY = ((((((((((("Creator: " + bx) + ",
510515 ArtID: ") + P) + ",
511516 SignID: ") + D) + ",
512- Artwork name: ") + bH) + ",
513- Issue: ") + toString(bW)) + "/") + toString(bK))
514- let bY = Issue(("SA_" + toString((bG + 1))), bX, 1, 0, false)
515- let bZ = calculateAssetId(bY)
516- let ca = if (if ((bW == bK))
517+ Artwork name: ") + bI) + ",
518+ Issue: ") + toString(bX)) + "/") + toString(bL))
519+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
520+ let ca = calculateAssetId(bZ)
521+ let cb = if (if ((bX == bL))
517522 then true
518- else !(bI))
523+ else !(bJ))
519524 then false
520525 else true
521- let cb = if (if (if ((N == bx))
526+ let cc = if (if (if ((N == bx))
522527 then (bz != "")
523528 else false)
524529 then (by != "")
525530 else false)
526531 then addressFromStringValue(bz)
527532 else aR.caller
528- let cc = if (!(isDefined(aW)))
533+ let cd = if (!(isDefined(aW)))
529534 then "WAVES"
530535 else toBase58String(value(aW))
531536 let bn = a((bm + "_OPEN"))
532- let cd = DeleteEntry((bm + "_OPEN"))
533- let ce = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
534- let cf = ((((((("art_sold_" + toString(bW)) + "_of_") + toString(bK)) + "_") + P) + "_") + bx)
535- let cg = if (!(bD))
536- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(bZ))
537- else ((((((((((toString(cb) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cc) + "_") + toBase58String(bZ))
538- let ch = StringEntry(cf, cg)
539- let ci = if ((bT != 0))
540- then [ScriptTransfer(Address(fromBase58String(f)), (bS - bT), aW), ScriptTransfer(Address(fromBase58String(bM)), bT, aW)]
541- else [ScriptTransfer(Address(fromBase58String(f)), bS, aW)]
537+ let ce = DeleteEntry((bm + "_OPEN"))
538+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
539+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
540+ let ch = if (!(bE))
541+ then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
542+ else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
543+ let ci = StringEntry(cg, ch)
542544 let cj = if ((bU != 0))
543- then [ScriptTransfer(Address(fromBase58String(bO)), bU, aW), ScriptTransfer(Address(fromBase58String(bx)), (bV - bU), aW)]
544- else [ScriptTransfer(Address(fromBase58String(bx)), bV, aW)]
545- let ck = if (bt)
545+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
546+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
547+ let ck = if ((bV != 0))
548+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
549+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
550+ let cl = if (bt)
546551 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
547552 else nil
548- let cl = ((([IntegerEntry(X(bx, P), bW), StringEntry(("nft_" + toBase58String(bZ)), cf), IntegerEntry("total_nft_issued", (bG + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), ca), bY, ScriptTransfer(cb, 1, bZ)] ++ ci) ++ cj) ++ ck)
549- if (bD)
550- then [ch, ce, cd] :: cl
551- else ch :: cl
553+ let cm = ((([IntegerEntry(X(bx, P), bX), StringEntry(("nft_" + toBase58String(ca)), cg), IntegerEntry("total_nft_issued", (bH + 1)), IntegerEntry(ah(bx, P), 0), BooleanEntry(Y(bx, P), cb), bZ, ScriptTransfer(cc, 1, ca)] ++ cj) ++ ck) ++ cl)
554+ if (bE)
555+ then [ci, cf, ce] :: cm
556+ else ci :: cm
552557 }
553558 }
554559 }
555560 }
556561 }
557562 }
558563 }
559564
560565
561-func cm (cn) = {
562- let G = cn
566+func cn (co) = {
567+ let G = co
563568 if ($isInstanceOf(G, "String"))
564569 then {
565- let co = G
566- co
570+ let cp = G
571+ cp
567572 }
568573 else throw("Sponsored Public Key String expected")
569574 }
570575
571576
572-@Callable(cp)
573-func setConf (b,cq) = {
574- let N = toString(cp.caller)
577+@Callable(cq)
578+func setConf (b,cr) = {
579+ let N = toString(cq.caller)
575580 if (containsElement([m, toString(this)], N))
576581 then if (contains(b, "conf_"))
577- then [StringEntry(b, cq)]
582+ then [StringEntry(b, cr)]
578583 else throw("Entries starting with conf_ only")
579584 else throw("You are not allowed to change this")
580585 }
581586
582587
583588
584589 @Callable(aR)
585-func addArtwork (F,D,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = {
586- let ct = br(aR, bs)
587- let P = ct._1
588- let N = ct._2
589- let bC = ct._3
590- let bt = ct._4
590+func addArtwork (F,D,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = {
591+ let cu = br(aR, bs)
592+ let P = cu._1
593+ let N = cu._2
594+ let bC = cu._3
595+ let bt = cu._4
591596 if (!(K(F)))
592597 then throw("Hash should be 64 characters maximum")
593598 else {
594- let cu = aH(ay, aB)
595- let aJ = cu._1
596- let aK = cu._2
597- let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
598- if ((cv != ""))
599+ let cv = aH(ay, aB)
600+ let aJ = cv._1
601+ let aK = cv._2
602+ let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
603+ if ((cw != ""))
599604 then throw("Something went wrong!")
600605 else {
601- let cw = (p((N + "_free_drops")) > 0)
602- let cx = if (cw)
606+ let cx = (p((N + "_free_drops")) > 0)
607+ let cy = if (cx)
603608 then $Tuple2(0, D)
604609 else aU(aR)
605- let aT = cx._1
606- let aW = cx._2
610+ let aT = cy._1
611+ let aW = cy._2
607612 if (!(isDefined(aT)))
608613 then throw("Something went wrong")
609614 else {
610- let cy = a(au(F, N))
611- if ((cy != ""))
615+ let cz = a(au(F, N))
616+ if ((cz != ""))
612617 then throw("You already added it")
613618 else {
614- let cz = a(ar(F))
615- if ((cz != ""))
619+ let cA = a(ar(F))
620+ if ((cA != ""))
616621 then throw("Hash already registered")
617622 else {
618- let cA = C(D, N, F)
619- if (!(cA))
623+ let cB = C(D, N, F)
624+ if (!(cB))
620625 then throw("Sign Certificate not found for this address.")
621626 else {
622- let cB = if (cw)
627+ let cC = if (cx)
623628 then invoke(h, "useFreeDrop", [N], nil)
624629 else unit
625- if ((cB == cB))
630+ if ((cC == cC))
626631 then {
627- let ck = if (bt)
632+ let cl = if (bt)
628633 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
629634 else nil
630- ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bC), StringEntry(Q(N, P), aL), StringEntry(R(N, P), aM), StringEntry(S(N, P), aw), StringEntry(U(N, P), ax), StringEntry(T(N, P), aA), StringEntry(Z(N, P), aK), StringEntry(aa(N, P), aJ), StringEntry(ac(N, P), cr), StringEntry(ab(N, P), aN), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(as(N, D), P), StringEntry(ap(N, P), F), StringEntry(ae(N, P), cs), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ ck)
635+ ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bC), StringEntry(Q(N, P), aL), StringEntry(R(N, P), aM), StringEntry(S(N, P), aw), StringEntry(U(N, P), ax), StringEntry(T(N, P), aA), StringEntry(Z(N, P), aK), StringEntry(aa(N, P), aJ), StringEntry(ac(N, P), cs), StringEntry(ab(N, P), aN), IntegerEntry(V(N, P), 0), StringEntry(W(N, P), D), IntegerEntry(X(N, P), 0), BooleanEntry(Y(N, P), false), StringEntry(as(N, D), P), StringEntry(ap(N, P), F), StringEntry(ae(N, P), ct), IntegerEntry(af(N, P), aO), ScriptTransfer(Address(fromBase58String(f)), aT, i)] ++ cl)
631636 }
632637 else throw("Strict value is not equal to itself.")
633638 }
634639 }
635640 }
636641 }
637642 }
638643 }
639644 }
640645
641646
642647
643648 @Callable(aR)
644-func updateArtwork (aq,aL,aM,aN,cr,aw,aA,ax,aB,ay,cs,aO,bs) = if (!(v))
649+func updateArtwork (aq,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = if (!(v))
645650 then throw(w)
646651 else {
647- let cC = br(aR, bs)
648- let bB = cC._1
649- let N = cC._2
650- let bC = cC._3
651- let bt = cC._4
652- let cD = aH(ay, aB)
653- let aJ = cD._1
654- let aK = cD._2
655- let cv = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
656- if ((cv != ""))
652+ let cD = br(aR, bs)
653+ let bB = cD._1
654+ let N = cD._2
655+ let bC = cD._3
656+ let bt = cD._4
657+ let cE = aH(ay, aB)
658+ let aJ = cE._1
659+ let aK = cE._2
660+ let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
661+ if ((cw != ""))
657662 then throw("Something went wrong!")
658663 else {
659- let cy = a(Q(N, aq))
660- if ((cy == ""))
664+ let cz = a(Q(N, aq))
665+ if ((cz == ""))
661666 then throw("Entry not found")
662667 else {
663- let cE = a(aj(N, aq))
664- if ((cE == "ILLEGAL"))
668+ let cF = a(aj(N, aq))
669+ if ((cF == "ILLEGAL"))
665670 then throw("Cannot update ILLEGAL artwork")
666671 else if (!(aX(N, aq)))
667672 then {
668- let ck = if (bt)
673+ let cl = if (bt)
669674 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
670675 else nil
671- ([StringEntry(Q(N, aq), aL), StringEntry(R(N, aq), aM), StringEntry(S(N, aq), aw), StringEntry(U(N, aq), ax), StringEntry(T(N, aq), aA), StringEntry(aa(N, aq), aJ), StringEntry(Z(N, aq), aK), StringEntry(ab(N, aq), aN), StringEntry(ac(N, aq), cr), StringEntry(ae(N, aq), cs), IntegerEntry(af(N, aq), aO)] ++ ck)
676+ ([StringEntry(Q(N, aq), aL), StringEntry(R(N, aq), aM), StringEntry(S(N, aq), aw), StringEntry(U(N, aq), ax), StringEntry(T(N, aq), aA), StringEntry(aa(N, aq), aJ), StringEntry(Z(N, aq), aK), StringEntry(ab(N, aq), aN), StringEntry(ac(N, aq), cs), StringEntry(ae(N, aq), ct), IntegerEntry(af(N, aq), aO)] ++ cl)
672677 }
673678 else throw("Already minted")
674679 }
675680 }
676681 }
677682
678683
679684
680685 @Callable(aR)
681-func flagArtwork (P,cF,cE,cG) = {
682- let cH = bv(aR)
683- let bB = cH._1
684- let N = cH._2
686+func flagArtwork (P,cG,cF,cH) = {
687+ let cI = bv(aR)
688+ let bB = cI._1
689+ let N = cI._2
685690 if (containsElement([m, toString(this)], N))
686- then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
687- then [StringEntry(aj(cF, P), cE), StringEntry(ad(cF, P), cG)]
688- else throw(("Unknow status " + cE))
691+ then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
692+ then [StringEntry(aj(cG, P), cF), StringEntry(ad(cG, P), cH)]
693+ else throw(("Unknow status " + cF))
689694 else throw("You are not allowed")
690695 }
691696
692697
693698
694699 @Callable(aR)
695-func deleteArtwork (P,cF) = {
696- let cI = bv(aR)
697- let bB = cI._1
698- let N = cI._2
700+func deleteArtwork (P,cG) = {
701+ let cJ = bv(aR)
702+ let bB = cJ._1
703+ let N = cJ._2
699704 let aY = if (containsElement([m, toString(this)], N))
700- then cF
705+ then cG
701706 else N
702- let cy = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
703- if ((cy == ""))
707+ let cz = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
708+ if ((cz == ""))
704709 then throw("No art matching for this address")
705710 else {
706711 let F = a(ap(aY, P))
707712 if ((F == ""))
708713 then throw("No art hash matching for this address")
709714 else {
710715 let D = a(W(aY, P))
711716 if ((D == ""))
712717 then throw("No SIGN ID matching")
713718 else {
714- let cJ = [DeleteEntry(O(aY, P)), DeleteEntry(Q(aY, P)), DeleteEntry(R(aY, P)), DeleteEntry(S(aY, P)), DeleteEntry(U(aY, P)), DeleteEntry(T(aY, P)), DeleteEntry(Z(aY, P)), DeleteEntry(aa(aY, P)), DeleteEntry(ac(aY, P)), DeleteEntry(ab(aY, P)), DeleteEntry(V(aY, P)), DeleteEntry(W(aY, P)), DeleteEntry(X(aY, P)), DeleteEntry(Y(aY, P)), DeleteEntry(aj(aY, P)), DeleteEntry(ag(aY, P)), DeleteEntry(ai(aY, P)), DeleteEntry(ar(F)), DeleteEntry(as(aY, D)), DeleteEntry(au(F, aY)), DeleteEntry(ah(aY, P)), DeleteEntry(ad(aY, P)), DeleteEntry(ae(aY, P)), DeleteEntry(af(aY, P))]
719+ let cK = [DeleteEntry(O(aY, P)), DeleteEntry(Q(aY, P)), DeleteEntry(R(aY, P)), DeleteEntry(S(aY, P)), DeleteEntry(U(aY, P)), DeleteEntry(T(aY, P)), DeleteEntry(Z(aY, P)), DeleteEntry(aa(aY, P)), DeleteEntry(ac(aY, P)), DeleteEntry(ab(aY, P)), DeleteEntry(V(aY, P)), DeleteEntry(W(aY, P)), DeleteEntry(X(aY, P)), DeleteEntry(Y(aY, P)), DeleteEntry(aj(aY, P)), DeleteEntry(ag(aY, P)), DeleteEntry(ai(aY, P)), DeleteEntry(ar(F)), DeleteEntry(as(aY, D)), DeleteEntry(au(F, aY)), DeleteEntry(ah(aY, P)), DeleteEntry(ad(aY, P)), DeleteEntry(ae(aY, P)), DeleteEntry(af(aY, P))]
715720 if (!(aX(aY, P)))
716721 then if (!(v))
717722 then throw(w)
718- else cJ
723+ else cK
719724 else if (containsElement([m, toString(this)], N))
720- then cJ
725+ then cK
721726 else throw("Art already minted, you cannot delete it")
722727 }
723728 }
724729 }
725730 }
726731
727732
728733
729734 @Callable(aR)
730-func sellArtwork (P,bg,cK,aW,bE,bs) = {
731- let cL = br(aR, bs)
732- let bB = cL._1
733- let N = cL._2
734- let bC = cL._3
735- let bt = cL._4
736- let bH = a(Q(N, P))
737- if ((bH == ""))
735+func sellArtwork (P,bg,cL,aW,bF,bs) = {
736+ let cM = br(aR, bs)
737+ let bB = cM._1
738+ let N = cM._2
739+ let bC = cM._3
740+ let bt = cM._4
741+ let bI = a(Q(N, P))
742+ if ((bI == ""))
738743 then throw("This art doesn't match your account")
739744 else {
740- let cE = a(aj(N, P))
741- if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cE))
745+ let cF = a(aj(N, P))
746+ if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
742747 then throw("Flagged artwork")
743748 else {
744- let cM = o(("current_bidamount_" + P))
745- if ((0 > bE))
749+ let cN = o(("current_bidamount_" + P))
750+ if ((0 > bF))
746751 then throw("Negative end")
747- else if (if ((bE > 0))
748- then if ((cK != 1))
752+ else if (if ((bF > 0))
753+ then if ((cL != 1))
749754 then true
750755 else (bg != 0)
751756 else false)
752757 then throw("Timed offer only allowed for unique edition and offer only")
753758 else {
754- let cN = if ((bE == 0))
759+ let cO = if ((bF == 0))
755760 then 0
756761 else height
757762 if (!(be(aW)))
758763 then throw("Something went wrong!")
759764 else if (!(bf(aW, bg)))
760765 then throw("Something went wrong!")
761766 else {
762767 let aP = aF(N)
763768 if ((aP != ""))
764769 then throw(aP)
765770 else {
766- let bJ = o(X(N, P))
767- let bK = o(V(N, P))
768- if ((cK > 100))
771+ let bK = o(X(N, P))
772+ let bL = o(V(N, P))
773+ if ((cL > 100))
769774 then throw("100 editions max per artwork")
770- else if (if ((bJ != 0))
771- then (bJ == bK)
775+ else if (if ((bK != 0))
776+ then (bK == bL)
772777 else false)
773778 then throw("Max edition reached.")
774- else if (if ((bJ > 0))
775- then (bK != cK)
779+ else if (if ((bK > 0))
780+ then (bL != cL)
776781 else false)
777782 then throw("Cannot change maximum issuable anymore")
778- else if (if ((cM > 0))
779- then (bK != cK)
783+ else if (if ((cN > 0))
784+ then (bL != cL)
780785 else false)
781786 then throw("Cannot change maximum issuable with active orders")
782787 else {
783- let ca = if (if ((bg > 0))
784- then (cK > 0)
788+ let cb = if (if ((bg > 0))
789+ then (cL > 0)
785790 else false)
786791 then true
787792 else false
788- let ck = if (bt)
793+ let cl = if (bt)
789794 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
790795 else nil
791- ([BooleanEntry(Y(N, P), ca), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cK), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cN + bE))] ++ ck)
796+ ([BooleanEntry(Y(N, P), cb), IntegerEntry(ag(N, P), bg), IntegerEntry(V(N, P), cL), StringEntry(ai(N, P), aW), IntegerEntry(ah(N, P), (cO + bF))] ++ cl)
792797 }
793798 }
794799 }
795800 }
796801 }
797802 }
798803 }
799804
800805
801806
802807 @Callable(aR)
803808 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
804809
805810
806811
807812 @Callable(aR)
808813 func setBid (P,bx) = {
809- let cO = bv(aR)
810- let bB = cO._1
811- let N = cO._2
812- let bC = cO._3
813- let cP = aQ(aR)
814- let aS = cP._1
815- let aT = cP._2
814+ let cP = bv(aR)
815+ let bB = cP._1
816+ let N = cP._2
817+ let bC = cP._3
818+ let cQ = aQ(aR)
819+ let aS = cQ._1
820+ let aT = cQ._2
816821 let aW = if (!(isDefined(aS.assetId)))
817822 then "WAVES"
818823 else toBase58String(value(aS.assetId))
819- let bE = o(ah(bx, P))
820- if (if ((bE != 0))
821- then (height >= bE)
824+ let bF = o(ah(bx, P))
825+ if (if ((bF != 0))
826+ then (height >= bF)
822827 else false)
823828 then throw("Sale ended.")
824829 else {
825- let cM = o(("current_bidamount_" + P))
830+ let cN = o(("current_bidamount_" + P))
826831 if (!(be(aW)))
827832 then throw("asset not accepted")
828833 else if (!(bf(aW, aT)))
829834 then throw("Wrong min sell")
830835 else {
831- let bJ = o(X(bx, P))
832- let bK = o(V(bx, P))
833- if ((0 >= bK))
836+ let bK = o(X(bx, P))
837+ let bL = o(V(bx, P))
838+ if ((0 >= bL))
834839 then throw("No max edition set for this artwork")
835- else if ((bJ >= bK))
840+ else if ((bK >= bL))
836841 then throw("Sold out, you cannot bid")
837- else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM + 1))]
842+ else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
838843 }
839844 }
840845 }
841846
842847
843848
844849 @Callable(aR)
845850 func acceptBid (P,bx,by,bz,bs) = {
846- let cQ = br(aR, bs)
847- let bB = cQ._1
848- let cR = cQ._2
849- let bC = cQ._3
850- let bt = cQ._4
851- if ((cR != bx))
851+ let cR = br(aR, bs)
852+ let bB = cR._1
853+ let cS = cR._2
854+ let bC = cR._3
855+ let bt = cR._4
856+ if ((cS != bx))
852857 then throw("You cannot do this action")
853858 else bw(aR, P, bx, by, bz, bs)
854859 }
855860
856861
857862
858863 @Callable(aR)
859864 func cancelBid (P,bx,by,bz) = {
860- let cS = bv(aR)
861- let bB = cS._1
862- let N = cS._2
863- let bC = cS._3
865+ let cT = bv(aR)
866+ let bB = cT._1
867+ let N = cT._2
868+ let bC = cT._3
864869 if (if ((N != bz))
865870 then (N != bx)
866871 else false)
867872 then throw("You cannot do this action")
868873 else {
869- let cT = if ((N == bx))
874+ let cU = if ((N == bx))
870875 then bz
871876 else N
872- let cM = o(("current_bidamount_" + P))
877+ let cN = o(("current_bidamount_" + P))
873878 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
874879 let bn = a((bm + "_OPEN"))
875880 if ((bn == ""))
876881 then throw("Bid not found")
877882 else {
878883 let bo = split(bn, "_")
879884 let aW = bk(bo[0])
880- let cU = "CANCELED"
881-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cU), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cM - 1)), ScriptTransfer(Address(fromBase58String(cT)), parseIntValue(bo[1]), aW)]
885+ let cV = "CANCELED"
886+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
882887 }
883888 }
884889 }
885890
886891
887-@Verifier(cV)
888-func cW () = {
889- let G = cV
892+@Verifier(cW)
893+func cX () = {
894+ let G = cW
890895 if ($isInstanceOf(G, "InvokeScriptTransaction"))
891896 then {
892- let cX = G
893- if (if (if (if ((cX.function == "addArtwork"))
894- then (cX.dApp == this)
897+ let cY = G
898+ if (if (if (if ((cY.function == "addArtwork"))
899+ then (cY.dApp == this)
895900 else false)
896- then (cX.fee == 500000)
901+ then (cY.fee == 500000)
897902 else false)
898- then (cX.feeAssetId == unit)
903+ then (cY.feeAssetId == unit)
899904 else false)
900- then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[13])))
901- else if (if (if (if ((cX.function == "updateArtwork"))
902- then (cX.dApp == this)
905+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
906+ else if (if (if (if ((cY.function == "updateArtwork"))
907+ then (cY.dApp == this)
903908 else false)
904- then (cX.fee == 500000)
909+ then (cY.fee == 500000)
905910 else false)
906- then (cX.feeAssetId == unit)
911+ then (cY.feeAssetId == unit)
907912 else false)
908- then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[12])))
909- else if (if (if (if ((cX.function == "sellArtwork"))
910- then (cX.dApp == this)
913+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
914+ else if (if (if (if ((cY.function == "sellArtwork"))
915+ then (cY.dApp == this)
911916 else false)
912- then (cX.fee == 500000)
917+ then (cY.fee == 500000)
913918 else false)
914- then (cX.feeAssetId == unit)
919+ then (cY.feeAssetId == unit)
915920 else false)
916- then sigVerify(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[5])))
917- else if (if (if (if ((cX.function == "acceptBid"))
918- then (cX.dApp == this)
921+ then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
922+ else if (if (if (if ((cY.function == "acceptBid"))
923+ then (cY.dApp == this)
919924 else false)
920- then (cX.fee == 500000)
925+ then (cY.fee == 500000)
921926 else false)
922- then (cX.feeAssetId == unit)
927+ then (cY.feeAssetId == unit)
923928 else false)
924- then sigVerify_128Kb(cV.bodyBytes, cV.proofs[0], fromBase58String(cm(cX.args[4])))
925- else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
929+ then sigVerify_128Kb(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[4])))
930+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
926931 }
927- else sigVerify(cV.bodyBytes, cV.proofs[0], cV.senderPublicKey)
932+ else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
928933 }
929934

github/deemru/w8io/c3f4982 
224.76 ms