tx · D5DNmHBBNvQX8fZnK9ct8VdFY218zBphrbaaVyoRPkrJ

3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY:  -0.01900000 Waves

2023.03.24 06:54 [2503574] smart account 3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY > SELF 0.00000000 Waves

{ "type": 13, "id": "D5DNmHBBNvQX8fZnK9ct8VdFY218zBphrbaaVyoRPkrJ", "fee": 1900000, "feeAssetId": null, "timestamp": 1679630087990, "version": 2, "chainId": 84, "sender": "3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY", "senderPublicKey": "J9DCtJJxJBWZdtDR12BA1U94Q3cZzMi4R6k5hYkAzmzC", "proofs": [ "2GtjYZ5CfcgjCUCPzhqYkDwFBcSYX745Mcj52NTeCvAr5sCZj7afix3EKbtFdq86bcpxKRbHxcMxEDjuSZ5MabbY" ], "script": "base64:BgKKFQgCEgQKAggIEhAKDggICAgICAgICAgICAEIEg8KDQgICAgICAgICAgIAQgSBgoECAgICBIECgIICBIICgYIAQEIAQgSBAoCCAgSBAoCCAgSBwoFCAgICAgSBgoECAgICCIOZ2V0U3RyaW5nQnlLZXkiA2tleSIIdW5pdFRlc3QiCW9yYWNsZUZlZSIIc2lnbkRhcHAiC2ZlZVJlY2VpdmVyIgh1c2VyRGFwcCINd2hpdGVsaXN0RGFwcCILc2lnbkFzc2V0SWQiC3VzZG5Bc3NldElkIgt1c2R0QXNzZXRJZCIMd2F2ZXNBc3NldElkIgVjaHJpcyIZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZSIPZ2V0SW50ZWdlckJ5S2V5Ig5jaGVja1doaXRlbGlzdCIPZ2V0Qm9vbGVhbkJ5S2V5IgdzaWduQ3V0Igt1c2RuV2F2ZUN1dCIOZGVmYXVsdExpY2VuY2UiEmRlZmF1bHRIYXNoTGljZW5jZSILZGFwcFJ1bm5pbmciDm1haW50ZW5hbmNlTVNHIg11c2VyU3VzcGVuZGVkIgt1c2VyUmVtb3ZlZCIQdXNlclVucmVnaXN0ZXJlZCILdXNlckFsbG93ZWQiGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UiFGNoZWNrU2lnbkNlcnRpZmljYXRlIgZzaWduSUQiBU93bmVyIgpzaGEyNTZIYXNoIgckbWF0Y2gwIgFhIgt2YWxpZGF0ZUNJRCIDY2lkIgx2YWxpZGF0ZUhhc2giBGhhc2giDWtleVVzZXJTdGF0dXMiBmNhbGxlciIHa2V5RGF0ZSIFYXJ0SWQiB2tleU5hbWUiB2tleURlc2MiDWtleURpc3BsYXlDaWQiDWtleUV4cG9ydEhhc2giDGtleUV4cG9ydENpZCIKa2V5TWF4TWludCIJa2V5U2lnbklEIglrZXlJc3N1ZWQiCWtleU9uU2FsZSIOa2V5TGljZW5jZUhhc2giDWtleUxpY2VuY2VDaWQiB2tleVRhZ3MiB2tleVR5cGUiB2tleU5vdGUiCmtleUNyYXdsZXIiDGtleVJveWFsdGllcyIIa2V5UHJpY2UiCmtleUVuZFNhbGUiEmtleUFzc2V0SWRBY2NlcHRlZCIHa2V5RmxhZyISa2V5QXJ0aXN0QWdlbnRBZGRyIgphcnRpc3RBZGRyIhRrZXlQcmltYXJ5U2hhcmVBZ2VudCIYa2V5QXJ0aXN0UHVibGljQWdlbnRBZGRyIhprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudCIRa2V5SGFzaEJ5VHhpZEFkZHIiBHR4aWQiDmtleU93bmVyQnlIYXNoIg1rZXlpZEJ5U2lnbmlkIgZzaWduSWQiEmtleVR4aWRCeUhhc2hPd25lciIOdmFsaWRhdGVBbGxDSUQiCmNpZERpc3BsYXkiCWNpZEV4cG9ydCIKY2lkTGljZW5jZSIPdmFsaWRhdGVBbGxIYXNoIgxzaGEyNTZFeHBvcnQiDXNoYTI1NkxpY2VuY2UiDnZhbGlkYXRlU3RyaW5nIgNzdHIiA21heCIMdmFsaWRhdGVVc2VyIgp1c2VyU3RhdHVzIgpzZXRMSWNlbmNlIhN2YWxpZGF0ZUFydHdvcmtEYXRhIgpsaWNlbmNlQ0lEIgtsaWNlbmNlSGFzaCIEbmFtZSILZGVzY3JpcHRpb24iBHRhZ3MiCXJveWFsdGllcyIJY2hlY2tVc2VyIglpc1BheW1lbnQiAWkiB3BheW1lbnQiBmFtb3VudCIPdmFsaWRhdGVQYXltZW50IgskdDA5MTgwOTIxNiIHYXNzZXRJZCILaXNBcnRNaW50ZWQiCWFkZHJUb1VzZSIBYiIUdmFsaWRhdGVQcmljZUFzc2V0SWQiDHByaWNlQXNzZXRJZCIMYXJ0d29ya1ByaWNlIgskdDA5ODA0OTg0MCIQYWNjZXB0ZWRBc3NldElkcyIPdmFsaWRhdGVNaW5TZWxsIgVwcmljZSIMbWluU2VsbFdhdmVzIgttaW5TZWxsVXNkbiILbWluU2VsbFNpZ24iDWdldEJpZEFzc2V0SWQiFmdldFByaWNlQXNzZXRJZEZyb21CaWQiCmJpZERhdGFLZXkiB2JpZERhdGEiCmJpZERhdGFBcnIiCWJpZEFtb3VudCIKYmlkQXNzZXRJZCIVaWRDYWxsZXJEYXRlU3BvbnNvcmVkIgZwdWJLZXkiC2lzU3BvbnNvcmVkIhNnZXRfc3BvbnNvcmVkX3dhdmVzIgxpZENhbGxlckRhdGUiB2J1eU1pbnQiBmlzc3VlciIFYmlkSWQiCGJpZE93bmVyIg0kdDAxMzA0NDEzMTE3IgRkYXRlIgJpZCIKbmV3X2NhbGxlciIFaXNCaWQiCGJsb2NrRW5kIg5jYWxsZXJJc0lzc3VlciIIdG90YWxORlQiC2FydHdvcmtOYW1lIghpc09uU2FsZSIKYW1vdW50U29sZCIKbWF4Q2FuU2VsbCINJHQwMTQ5ODkxNTE4MSIFYWdlbnQiCmFnZW50U2hhcmUiC3B1YmxpY0FnZW50IhBwdWJsaWNBZ2VudFNoYXJlIg1pc1doaXRlbGlzdGVkIgNjdXQiDWFtb3VudEZvclNpZ24iDmFtb3VudEZvckFnZW50IhRhbW91bnRGb3JQdWJsaWNBZ2VudCIQYW1vdW50Rm9yQ3JlYXRvciINbmV3QW1vdW50U29sZCIJaXNzdWVNZXRhIghpc3N1ZU5GVCIFaWRORlQiCnNlbGxTdGF0dXMiCnJlY2VpdmVORlQiCmFzc2V0SWRCaWQiCWJpZERlbE9sZCIJYmlkVXBkYXRlIgdzb2xkS2V5Iglzb2xkVmFsdWUiCHNvbGREYXRhIhRjb21taXNzaW9uc1dpdGhBZ2VudCIaY29tbWlzc2lvbnNXaXRoUHVibGljQWdlbnQiCnR4VG9DYWxsZXIiBmJ1eVJlcyIIYXNTdHJpbmciAmJ2IgNidjAiBmludm9rZSIDdmFsIgR0eXBlIgdjcmF3bGVyIg0kdDAyMDM1NzIwNDMwIg0kdDAyMDUzMTIwNjAwIg92YWxpZGF0ZUFydHdvcmsiEHdoaXRlbGlzdGVkX2Ryb3AiDSR0MDIwODk5MjA5ODMiCmVudHJ5RXhpc3QiCWhhc2hFeGlzdCIPaXNTaWduQ2VydGlmaWVkIhdkZWNyZWFzZV93aGl0ZWxpc3RfZHJvcCINJHQwMjQwMTcyNDA4NyINJHQwMjQwOTcyNDE2NiIEZmxhZyIEYWRkciIEbm90ZSINJHQwMjU3OTMyNTgyNyINJHQwMjYyNjMyNjI5NyIMZGF0YVRvRGVsZXRlIgdtYXhNaW50Ig0kdDAyOTEzMzI5MjAzIgZiaWROYnIiCmJhc2VIZWlnaHQiDSR0MDMxNTg1MzE2MjUiDSR0MDMxNjMwMzE2NjYiDSR0MDMyODg2MzI5NTciB2NhbGxlcjEiDSR0MDMzMTkyMzMyNTMiDXJldHVybk1vbmV5VG8iCWJpZFN0YXR1cyICdHgiCHZlcmlmaWVyIgNpbnZOAQFhAQFiCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFAWICAAABYwcAAWQJAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX29yYWNsZV9mZWUAAWUJAQV2YWx1ZQEJAKYIAQkBAWEBAhFjb25mX3NpZ253ZWJfZGFwcAABZgkBAWEBAhFjb25mX2ZlZV9yZWNlaXZlcgABZwMFAWMJAQV2YWx1ZQEJAKYIAQIjM010NFJHTUV5alNXWUFvY1RQcWQ1NXdkSFFRQjNQVTJVQ20JAQV2YWx1ZQEJAKYIAQkBAWEBAg9jb25mX3VzZXJzX2RhcHAAAWgJAQV2YWx1ZQEJAKYIAQkBAWEBAhNjb25mX3doaXRlbGlzdF9kYXBwAAFpCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAFqCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAFrCQDZBAEJAQFhAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUAAFsAQAAAW0JAQFhAQIMY29uZl9hZG1pbl8xAQFuAQFiCQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUBZAUBYgIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEBbwEBYgkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQFiAAABAXABAWIJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBaAUBYgAAAQFxAQFiCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFAWIHAAFyAAcAAXMACgABdAkBAWEBAhRjb25mX2RlZmF1bHRfbGljZW5jZQABdQkBAWEBAhljb25mX2RlZmF1bHRfbGljZW5jZV9oYXNoAAF2CQELdmFsdWVPckVsc2UCCQCbCAIFAWcCFGNvbmZfZGFwcF9pc19ydW5uaW5nBgABdwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnAhRjb25mX21haW50ZW5hbmNlX21zZwIAAAF4AglTVVNQRU5ERUQAAXkCB1JFTU9WRUQAAXoCDFVOUkVHSVNURVJFRAABQQIHQUxMT1dFRAABQgkBAW4BCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQFpAQFDAwFEAUUBRgQBRwkAnQgCBQFlCQCsAgIJAKwCAgkArAICAghkYXRhX2ZjXwUBRAIBXwUBRQMJAAECBQFHAgZTdHJpbmcEAUgFAUcDCQEIY29udGFpbnMCBQFIBQFGBgcHAQFJAQFKAwkBCGNvbnRhaW5zAgUBSgIBLwMDCQBmAgBMCQCxAgEFAUoJAAACCQCxAgEJAJEDAgkAtQkCBQFKAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFAUoCAS8AAQcHAQFLAQFMCQAAAgkAsQIBBQFMAEABAU0BAU4JAKwCAgIMdXNlcl9zdGF0dXNfBQFOAQFPAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9kYXRlXwUBUAIBXwUBTgEBUQIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfbmFtZV8FAVACAV8FAU4BAVICAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X2Rlc2NfBQFQAgFfBQFOAQFTAgFOAVAJAKwCAgkArAICCQCsAgICEGFydF9kaXNwbGF5X2NpZF8FAVACAV8FAU4BAVQCAU4BUAkArAICCQCsAgIJAKwCAgIQYXJ0X2V4cG9ydF9oYXNoXwUBUAIBXwUBTgEBVQIBTgFQCQCsAgIJAKwCAgkArAICAg9hcnRfZXhwb3J0X2NpZF8FAVACAV8FAU4BAVYCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X21heG1pbnRfBQFQAgFfBQFOAQFXAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQFQAgFfBQFOAQFYAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9pc3N1ZWRfBQFQAgFfBQFOAQFZAgFOAVAJAKwCAgkArAICCQCsAgICC2FydF9vbnNhbGVfBQFQAgFfBQFOAQFaAgFOAVAJAKwCAgkArAICCQCsAgICEWFydF9saWNlbmNlX2hhc2hfBQFQAgFfBQFOAQJhYQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfbGljZW5jZV9jaWRfBQFQAgFfBQFOAQJhYgIBTgFQCQCsAgIJAKwCAgkArAICAglhcnRfdGFnc18FAVACAV8FAU4BAmFjAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF90eXBlXwUBUAIBXwUBTgECYWQCAU4BUAkArAICCQCsAgIJAKwCAgIJYXJ0X25vdGVfBQFQAgFfBQFOAQJhZQIBTgFQCQCsAgIJAKwCAgkArAICAhBhcnRfY3Jhd2xlcl9jaWRfBQFQAgFfBQFOAQJhZgIBTgFQCQCsAgIJAKwCAgkArAICAg5hcnRfcm95YWx0aWVzXwUBUAIBXwUBTgECYWcCAU4BUAkArAICCQCsAgIJAKwCAgIKYXJ0X3ByaWNlXwUBUAIBXwUBTgECYWgCAU4BUAkArAICCQCsAgIJAKwCAgIMYXJ0X2VuZHNhbGVfBQFQAgFfBQFOAQJhaQIBTgFQCQCsAgIJAKwCAgkArAICAhJhcnRfYXNzZXRBY2NlcHRlZF8FAVACAV8FAU4BAmFqAgFOAVAJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUBUAIBXwUBTgECYWsBAmFsCQCsAgICDWFydGlzdF9hZ2VudF8FAmFsAQJhbQECYWwJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQJhbAECYW4BAmFsCQCsAgICFGFydGlzdF9wdWJsaWNfYWdlbnRfBQJhbAECYW8BAmFsCQCsAgICHGFydGlzdF9wdWJsaWNfYWdlbnRfcHJpbWFyeV8FAmFsAQJhcAIBTgJhcQkArAICCQCsAgIJAKwCAgITZ2V0X2hhc2hieXR4aWRhZGRyXwUCYXECAV8FAU4BAmFyAQFGCQCsAgICEmdldF9vd25lcl9ieV9oYXNoXwUBRgECYXMCAU4CYXQJAKwCAgkArAICCQCsAgICEmdldF9hcnRpZGJ5c2lnbmlkXwUCYXQCAV8FAU4BAmF1AgFGAU4JAKwCAgIXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JANgEAQkA1BYBCQCbAwEJAKwCAgUBRgUBTgECYXYDAmF3AmF4AmF5AwkBASEBCQEBSQEFAmF3CQACAQIRV3JvbmcgRGlzcGxheSBDSUQDCQEBIQEJAQFJAQUCYXgJAAIBAhBXcm9uZyBFeHBvcnQgQ0lEAwMJAQIhPQIFAmF5AgAJAQEhAQkBAUkBBQJheQcJAAIBAhFXcm9uZyBMaWNlbmNlIENJRAYBAmF6AgJhQQJhQgMJAQEhAQkBAUsBBQJhQQkAAgECGEV4cG9ydCBIYXNoIDY0IGNoYXIuIG1heAMJAQEhAQkBAUsBBQJhQgkAAgECGUxpY2VuY2UgSGFzaCA2NCBjaGFyLiBtYXgGAQJhQwICYUQCYUUDCQAAAgkAsQIBBQJhRAAACQACAQIYRmllbGQgY2Fubm90IGJlIGlzIGVtcHR5AwkAZgIJALECAQUCYUQFAmFFCQACAQkArAICBQJhRAIMIGlzIHRvbyBsb25nBgECYUYBAU4EAmFHCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQFNAQUBTgUBegMDCQAAAgUCYUcFAXoGCQAAAgUCYUcFAUECLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUCYUcFAXgCEUFjY291bnQgc3VzcGVuZGVkAwkAAAIFAmFHBQF5Ag9BY2NvdW50IHJlbW92ZWQCAAECYUgCAmF5AmFCBAFKAwkAAAIJALECAQUCYXkAAAUBdAUCYXkEAUwDCQAAAgkAsQIBBQJhQgAABQF1BQJhQgkAlAoCBQFKBQFMAQJhSQoBTgJhdwJheAJhSgJhQQJhSwJhTAJhTQJhTgJhTwQCYVAJAQJhRgEFAU4DCQECIT0CBQJhUAIACQACAQUCYVADCQAAAgkAsQIBBQJhdwAACQACAQIbRGlzcGxheSBDSUQgY2Fubm90IGJlIGVtcHR5AwkBASEBCQECYXYDBQJhdwUCYXgFAmFKCQACAQIQUHJvYmxlbSB3aXRoIENJRAMJAQEhAQkBAmF6AgUCYUEFAmFLCQACAQITUHJvYmxlbSB3aXRoIEhhc2hlcwMJAQEhAQkBAmFDAgUCYUwAZAkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBAmFDAgUCYU0A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQBmAgAABQJhTwYJAGYCBQJhTwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQMJAGYCCQCQAwEJALUJAgUCYU4CASwABQkAAgECCzUgdGFncyBtYXguAgABAmFRAQJhUgMJAAACCQCQAwEIBQJhUghwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQCYVMJAQV2YWx1ZQEJAJEDAggFAmFSCHBheW1lbnRzAAAEAmFUCQEFdmFsdWUBCAUCYVMGYW1vdW50CQCUCgIFAmFTBQJhVAECYVUBAmFSBAJhVgkBAmFRAQUCYVIEAmFTCAUCYVYCXzEEAmFUCAUCYVYCXzIEAmFXAwMJAQlpc0RlZmluZWQBCAUCYVMHYXNzZXRJZAkAAAIIBQJhUwdhc3NldElkBQFpBwgFAmFTB2Fzc2V0SWQJAAIBAitPbmx5IFNJR04gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAiE9AgUCYVQFAUIJAAIBCQCsAgICGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAKQDAQUBQgkAlAoCBQJhVAUCYVcBAmFYAgJhWQFQBAFHCQCaCAIFBHRoaXMJAQFYAgUCYVkFAVADCQABAgUBRwIDSW50BAJhWgUBRwMJAQIhPQIFAmFaAAAGBwcBAmJhAwJhUgJiYgJiYwQCYmQJAQJhUQEFAmFSBAJhUwgFAmJkAl8xBAJhVAgFAmJkAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkBQR1bml0AwMJAGYCCQCxAgEFAmJiAAAJAAACCQDYBAEJAQV2YWx1ZQEIBQJhUwdhc3NldElkBQJiYgcIBQJhUwdhc3NldElkCQACAQIOV3JvbmcgYXNzZXQgaWQDAwkAAAIFAmFXBQR1bml0CQECIT0CBQJiYgIABwkAAgECDldyb25nIGFzc2V0IGlkAwkBAiE9AgUCYmMFAmFUCQACAQITUGF5bWVudCBkb24ndCBtYXRjaAkAlAoCBQJhVAUCYVcBAmJlAQJhVwMDAwMDCQECIT0CBQJhVwkA2AQBBQFpCQECIT0CBQJhVwkA2AQBBQFsBwkBAiE9AgUCYVcCBVdBVkVTBwkBAiE9AgUCYVcJANgEAQUBagcJAQIhPQIFAmFXCQDYBAEFAWsHCQACAQImT25seSBTSUdOLCBVU0ROLFVTRFQgb3IgV0FWRVMgYWNjZXB0ZWQGAQJiZgICYVcCYmcEAmJoAwUBYwAKCQEBbgECDndhdmVzX21pbl9zZWxsBAJiaQDAhD0EAmJqAwUBYwABCQBoAgUBQgACAwMDAwMDCQAAAgUCYVcJANgEAQUBagkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBawkAZgIFAmJpBQJiZwcJAQIhPQIFAmJnAAAHBgMDCQAAAgUCYVcJANgEAQUBaQkAZgIFAmJqBQJiZwcJAQIhPQIFAmJnAAAHBgMDAwkAAAIFAmFXCQDYBAEFAWwGCQAAAgUCYVcCBVdBVkVTCQBmAgUCYmgFAmJnBwkBAiE9AgUCYmcAAAcJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQJiawECYVcDCQAAAgUCYVcCBVdBVkVTBQR1bml0CQDZBAEFAmFXAQJibAECYm0EAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOAwkAAAIFAmJuAgAJAAIBAg1CaWQgbm90IGZvdW5kBAJibwkAtQkCBQJibgIBXwQCYnAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQJibwABBAJicQkBAmJrAQkAkQMCBQJibwAAAwkAZwIAAAUCYnAJAAIBAgxXcm9uZyBhbW91bnQJAJQKAgUCYnAFAmJxAQJicgICYVICYnMDCQEBIQEFAXYJAAIBBQF3BAJidAMJAQIhPQIFAmJzAgAJAQt2YWx1ZU9yRWxzZQIJAQFwAQkArAICCQClCAEJAKcIAQkA2QQBBQJicwIJX2ZyZWVfdHhzAAAAAAMJAAACBQJidAUCYnQEAU4DAwkAAAIJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwkAZgIFAmJ0AAAHCQClCAEJAKcIAQkA2QQBBQJicwkA2AQBCAgFAmFSBmNhbGxlcgVieXRlcwQCYnUDAwkBAiE9AgUCYnMCAAkAZgIFAmJ0AAAHCQD8BwQFAWgCCXVzZUZyZWVUeAkAzAgCCQClCAEJAKcIAQkA2QQBBQJicwUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCYnUFAmJ1CQCWCgQJANgEAQgFAmFSDXRyYW5zYWN0aW9uSWQFAU4IBQlsYXN0QmxvY2sJdGltZXN0YW1wCQBmAgUCYnQAAAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECYnYBAmFSAwkBASEBBQF2CQACAQUBdwkAlQoDCQDYBAEIBQJhUg10cmFuc2FjdGlvbklkCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAECYncGAmFSAVACYngCYnkCYnoCYnMEAmJBCQECYnICBQJhUgUCYnMDCQAAAgUCYkEFAmJBBAJidAgFAmJBAl80BAJiQggFAmJBAl8zBAFOCAUCYkECXzIEAmJDCAUCYkECXzEDBgkAAgEJAKUDAQUCYnQEAmJEAwMJAAACCQDYBAEICAUCYVIGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMFAmJ0BwkApQgBCQCnCAEJANkEAQUCYnMJANgEAQgIBQJhUgZjYWxsZXIFYnl0ZXMDBgkAAgEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFAmJEAgMgLyAFAmJ4AgMgLyAFAmJ6AgMgLyAFAmJzBAJiRQMDAwkAAAIFAU4FAmJ4CQECIT0CBQJiegIABwkBAiE9AgUCYnkCAAcGBwQCYkYJAQFvAQkBAmFoAgUBTgUBUAMDAwkBAiE9AgUCYkYAAAkAZwIFBmhlaWdodAUCYkYHCQEBIQEFAmJFBwkAAgECC1NhbGUgZW5kZWQuBAJiRwkAAAIFAU4FAmJ4BAJiSAkBAW8BAhB0b3RhbF9uZnRfaXNzdWVkBAFECQEBYQEJAQFXAgUCYngFAVAEAmJJCQEBYQEJAQFRAgUCYngFAVADCQAAAgUCYkkCAAkAAgECEUFydCBkb2Vzbid0IGV4aXN0BAJiSgkBAXEBCQEBWQIFAmJ4BQFQBAJiSwkBAW8BCQEBWAIFAmJ4BQFQBAJiYwMFAmJHCQBoAgUBQgACCQEBbwEJAQJhZwIFAmJ4BQFQBAJiYgMFAmJHCQDYBAEFAWkJAQFhAQkBAmFpAgUCYngFAVAEAmJMCQEBbwEJAQFWAgUCYngFAVADAwMJAQEhAQUCYkUJAQEhAQUCYkcHAwMJAGcCAAAFAmJjBgkBASEBBQJiSgYJAGcCAAAFAmJMBwkAAgECEEFydCBub3QgZm9yIHNhbGUDAwMJAQEhAQUCYkUFAmJHBwkAZwIAAAUCYkwHCQACAQIUTWF4IGlzc3VhYmxlIG5vdCBzZXQEAmFQCQECYUYBBQJieAMDBQJiRQkBAiE9AgUCYVACAAcJAAIBBQJhUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYk0DBQJiRQkBAmJsAQUCYm0JAQJiYQMFAmFSBQJiYgUCYmMEAmFUCAUCYk0CXzEEAmFXCAUCYk0CXzIEAmJOCQELdmFsdWVPckVsc2UCCQCdCAIFAWcJAQJhawEFAmJ4BQFmBAJiTwkBC3ZhbHVlT3JFbHNlAgkAmggCBQFnCQECYW0BBQJieAAABAJiUAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQFnCQECYW4BBQJieAUBZgQCYlEJAQt2YWx1ZU9yRWxzZQIJAJoIAgUBZwkBAmFvAQUCYngAAAQCYlIJAQFwAQUCYngEAmJTAwkAZgIFAmJSBQZoZWlnaHQAAAMJAAACBQJhVwUBaQUBcgUBcwQCYlQJAGsDBQJhVAUCYlMAZAQCYlUDAwMJAQIhPQIFAmJOBQFmCQBmAgUCYk8AAAcJAGYCBQZoZWlnaHQFAmJSBwkAawMFAmFUBQJiTwCQTgAABAJiVgMDAwkBAiE9AgUCYlAFAWYJAGYCBQJiUQAABwkAZgIFBmhlaWdodAUCYlIHCQBrAwUCYVQFAmJRAJBOAAAEAmJXCQBlAgUCYVQFAmJUAwkAAAIFAmJLBQJiTAkAAgECDEFydCBzb2xkIG91dAQCYlgJAGQCBQJiSwABBAJiWQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCUNyZWF0b3I6IAUCYngCCiwKIEFydElEOiAFAVACCywKIFNpZ25JRDogBQFEAhEsCiBBcnR3b3JrIG5hbWU6IAUCYkkCCiwKIElzc3VlOiAJAKQDAQUCYlgCAS8JAKQDAQUCYkwEAmJaCQDCCAUJAKwCAgIDU0FfCQCkAwEJAGQCBQJiSAABBQJiWQABAAAHBAJjYQkAuAgBBQJiWgQCY2IDAwkAAAIFAmJYBQJiTAYJAQEhAQUCYkoHBgQCY2MDAwMJAAACBQFOBQJieAkBAiE9AgUCYnoCAAcJAQIhPQIFAmJ5AgAHCQERQGV4dHJOYXRpdmUoMTA2MikBBQJieggFAmFSBmNhbGxlcgQCY2QDCQEBIQEJAQlpc0RlZmluZWQBBQJhVwIFV0FWRVMJANgEAQkBBXZhbHVlAQUCYVcEAmJuCQEBYQEJAKwCAgUCYm0CBV9PUEVOBAJjZQkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4EAmNmCQELU3RyaW5nRW50cnkCCQCsAgIFAmJtAgdfQ0xPU0VECQCsAgIJAKwCAgUCYm4CAV8JAKQDAQUCYkIEAmNnCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCWFydF9zb2xkXwkApAMBBQJiWAIEX29mXwkApAMBBQJiTAIBXwUBUAIBXwUCYngEAmNoAwkBASEBBQJiRQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQFOAgFfCQCkAwEFAmJCAgFfBQJiQwIBXwkApAMBBQJiYwIBXwUCYmICAV8JANgEAQUCY2EJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApQgBBQJjYwIBXwkApAMBBQJiQgIBXwUCYkMCAV8JAKQDAQUCYVQCAV8FAmNkAgFfCQDYBAEFAmNhBAJjaQkBC1N0cmluZ0VudHJ5AgUCY2cFAmNoBAJjagMJAQIhPQIFAmJVAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYJAGUCBQJiVAUCYlUFAmFXCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJiTgUCYlUFAmFXBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmJUBQJhVwUDbmlsBAJjawMJAQIhPQIFAmJWAAAJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJQBQJiVgUCYVcJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmJ4CQBlAgUCYlcFAmJWBQJhVwUDbmlsCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQJieAUCYlcFAmFXBQNuaWwEAmNsAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwEAmNtCQDOCAIJAM4IAgkAzggCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBWAIFAmJ4BQFQBQJiWAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUCY2EFAmNnCQDMCAIJAQxJbnRlZ2VyRW50cnkCAhB0b3RhbF9uZnRfaXNzdWVkCQBkAgUCYkgAAQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFoAgUCYngFAVAAAAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQJieAUBUAUCY2IJAMwIAgUCYloJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwUCY2MAAQUCY2EFA25pbAUCY2oFAmNrBQJjbAMFAmJFCQDMCAIFAmNpCQDMCAIFAmNmCQDMCAIFAmNlBQJjbQkAzAgCBQJjaQUCY20JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAmNuAQJjbwQBRwUCY28DCQABAgUBRwIGU3RyaW5nBAJjcAUBRwUCY3AJAAIBAiRTcG9uc29yZWQgUHVibGljIEtleSBTdHJpbmcgZXhwZWN0ZWQKAmNxAQdzZXRDb25mAgFiAmNyBAFOCQClCAEIBQJjcQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOAwkBCGNvbnRhaW5zAgUBYgIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUBYgUCY3IFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwJhUgEKYWRkQXJ0d29yaw4BRgFEAmFMAmFNAmFOAmNzAmF3AmFBAmF4AmFCAmF5AmN0AmFPAmJzBAJjdQkBAmJyAgUCYVIFAmJzBAFQCAUCY3UCXzEEAU4IBQJjdQJfMgQCYkIIBQJjdQJfMwQCYnQIBQJjdQJfNAMJAQEhAQkBAUsBBQFGCQACAQIkSGFzaCBzaG91bGQgYmUgNjQgY2hhcmFjdGVycyBtYXhpbXVtBAJjdgkBAmFIAgUCYXkFAmFCBAJhSggFAmN2Al8xBAJhSwgFAmN2Al8yBAJjdwkBAmFJCgUBTgUCYXcFAmF4BQJhSgUCYUEFAmFLBQJhTAUCYU0FAmFOBQJhTwMJAQIhPQIFAmN3AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmN4CQBmAgkBAXABCQCsAgIFAU4CC19mcmVlX2Ryb3BzAAAEAmN5AwUCY3gJAJQKAgAABQFECQECYVUBBQJhUgQCYVQIBQJjeQJfMQQCYVcIBQJjeQJfMgMJAQEhAQkBCWlzRGVmaW5lZAEFAmFUCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEAmN6CQEBYQEJAQJhdQIFAUYFAU4DCQECIT0CBQJjegIACQACAQIUWW91IGFscmVhZHkgYWRkZWQgaXQEAmNBCQEBYQEJAQJhcgEFAUYDCQECIT0CBQJjQQIACQACAQIXSGFzaCBhbHJlYWR5IHJlZ2lzdGVyZWQEAmNCCQEBQwMFAUQFAU4FAUYDCQEBIQEFAmNCCQACAQIsU2lnbiBDZXJ0aWZpY2F0ZSBub3QgZm91bmQgZm9yIHRoaXMgYWRkcmVzcy4EAmNDAwUCY3gJAPwHBAUBaAILdXNlRnJlZURyb3AJAMwIAgUBTgUDbmlsBQNuaWwFBHVuaXQDCQAAAgUCY0MFAmNDBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFyAQUBRgUBTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYXUCBQFGBQFOBQFQCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBTwIFAU4FAVAFAmJCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFRAgUBTgUBUAUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQFQBQJhTQkAzAgCCQELU3RyaW5nRW50cnkCCQEBUwIFAU4FAVAFAmF3CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFVAgUBTgUBUAUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQFQBQJhQQkAzAgCCQELU3RyaW5nRW50cnkCCQEBWgIFAU4FAVAFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYQIFAU4FAVAFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYwIFAU4FAVAFAmNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAVAFAmFOCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEBVgIFAU4FAVAAAAkAzAgCCQELU3RyaW5nRW50cnkCCQEBVwIFAU4FAVAFAUQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFYAgUBTgUBUAAACQDMCAIJAQxCb29sZWFuRW50cnkCCQEBWQIFAU4FAVAHCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhcwIFAU4FAUQFAVAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFwAgUBTgUBUAUBRgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWUCBQFOBQFQBQJjdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFmAgUBTgUBUAUCYU8JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAWYFAmFUBQFpBQNuaWwFAmNsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAmFSAQ11cGRhdGVBcnR3b3JrDQJhcQJhTAJhTQJhTgJjcwJhdwJhQQJheAJhQgJheQJjdAJhTwJicwMJAQEhAQUBdgkAAgEFAXcEAmNECQECYnICBQJhUgUCYnMEAmJDCAUCY0QCXzEEAU4IBQJjRAJfMgQCYkIIBQJjRAJfMwQCYnQIBQJjRAJfNAQCY0UJAQJhSAIFAmF5BQJhQgQCYUoIBQJjRQJfMQQCYUsIBQJjRQJfMgQCY3cJAQJhSQoFAU4FAmF3BQJheAUCYUoFAmFBBQJhSwUCYUwFAmFNBQJhTgUCYU8DCQECIT0CBQJjdwIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAJjegkBAWEBCQEBUQIFAU4FAmFxAwkAAAIFAmN6AgAJAAIBAg9FbnRyeSBub3QgZm91bmQEAmNGCQEBYQEJAQJhagIFAU4FAmFxAwkAAAIFAmNGAgdJTExFR0FMCQACAQIdQ2Fubm90IHVwZGF0ZSBJTExFR0FMIGFydHdvcmsDCQEBIQEJAQJhWAIFAU4FAmFxBAJjbAMFAmJ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQFOAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVECBQFOBQJhcQUCYUwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVICBQFOBQJhcQUCYU0JAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVMCBQFOBQJhcQUCYXcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVUCBQFOBQJhcQUCYXgJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAVQCBQFOBQJhcQUCYUEJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFhAgUBTgUCYXEFAmFKCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQFaAgUBTgUCYXEFAmFLCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhYgIFAU4FAmFxBQJhTgkAzAgCCQELU3RyaW5nRW50cnkCCQECYWMCBQFOBQJhcQUCY3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFlAgUBTgUCYXEFAmN0CQDMCAIJAQxJbnRlZ2VyRW50cnkCCQECYWYCBQFOBQJhcQUCYU8FA25pbAUCY2wJAAIBAg5BbHJlYWR5IG1pbnRlZAJhUgELZmxhZ0FydHdvcmsEAVACY0cCY0YCY0gEAmNJCQECYnYBBQJhUgQCYkMIBQJjSQJfMQQBTggFAmNJAl8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUBbQkAzAgCCQClCAEFBHRoaXMFA25pbAUBTgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICB0NPTlNFTlQJAMwIAgIACQDMCAICD0NIQU5HRV9SRVFVSVJFRAkAzAgCAgdGTEFHR0VECQDMCAICB0lMTEVHQUwFA25pbAUCY0YJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFqAgUCY0cFAVAFAmNGCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQJhZAIFAmNHBQFQBQJjSAUDbmlsCQACAQkArAICAg5Vbmtub3cgc3RhdHVzIAUCY0YJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAmFSAQ1kZWxldGVBcnR3b3JrAgFQAmNHBAJjSgkBAmJ2AQUCYVIEAmJDCAUCY0oCXzEEAU4IBQJjSgJfMgQCYVkDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjRwUBTgQCY3oJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBAWEBCQEBUQIFAmFZBQFQAiBObyBhcnQgbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwMJAAACBQJjegIACQACAQIgTm8gYXJ0IG1hdGNoaW5nIGZvciB0aGlzIGFkZHJlc3MEAUYJAQFhAQkBAmFwAgUCYVkFAVADCQAAAgUBRgIACQACAQIlTm8gYXJ0IGhhc2ggbWF0Y2hpbmcgZm9yIHRoaXMgYWRkcmVzcwQBRAkBAWEBCQEBVwIFAmFZBQFQAwkAAAIFAUQCAAkAAgECE05vIFNJR04gSUQgbWF0Y2hpbmcEAmNLCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFPAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVECBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBUgIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFTAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVUCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFaAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFhAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFjAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAmFiAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVYCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQEBVwIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQFYAgUCYVkFAVAJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBAVkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWoCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWcCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYWkCBQJhWQUBUAkAzAgCCQELRGVsZXRlRW50cnkBCQECYXIBBQFGCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhcwIFAmFZBQFECQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhdQIFAUYFAmFZCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhaAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZAIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZQIFAmFZBQFQCQDMCAIJAQtEZWxldGVFbnRyeQEJAQJhZgIFAmFZBQFQBQNuaWwDCQEBIQEJAQJhWAIFAmFZBQFQAwkBASEBBQF2CQACAQUBdwUCY0sDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQFtCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQFOBQJjSwkAAgECKEFydCBhbHJlYWR5IG1pbnRlZCwgeW91IGNhbm5vdCBkZWxldGUgaXQCYVIBC3NlbGxBcnR3b3JrBgFQAmJnAmNMAmFXAmJGAmJzBAJjTQkBAmJyAgUCYVIFAmJzBAJiQwgFAmNNAl8xBAFOCAUCY00CXzIEAmJCCAUCY00CXzMEAmJ0CAUCY00CXzQEAmJJCQEBYQEJAQFRAgUBTgUBUAMJAAACBQJiSQIACQACAQIjVGhpcyBhcnQgZG9lc24ndCBtYXRjaCB5b3VyIGFjY291bnQEAmNGCQEBYQEJAQJhagIFAU4FAVADCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFAmNGCQACAQIPRmxhZ2dlZCBhcnR3b3JrBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAMJAGYCAAAFAmJGCQACAQIMTmVnYXRpdmUgZW5kAwMJAGYCBQJiRgAAAwkBAiE9AgUCY0wAAQYJAQIhPQIFAmJnAAAHCQACAQI6VGltZWQgb2ZmZXIgb25seSBhbGxvd2VkIGZvciB1bmlxdWUgZWRpdGlvbiBhbmQgb2ZmZXIgb25seQQCY08DCQAAAgUCYkYAAAAABQZoZWlnaHQDCQEBIQEJAQJiZQEFAmFXCQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchAwkBASEBCQECYmYCBQJhVwUCYmcJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEEAmFQCQECYUYBBQFOAwkBAiE9AgUCYVACAAkAAgEFAmFQBAJiSwkBAW8BCQEBWAIFAU4FAVAEAmJMCQEBbwEJAQFWAgUBTgUBUAMJAGYCBQJjTABkCQACAQIcMTAwIGVkaXRpb25zIG1heCBwZXIgYXJ0d29yawMDCQECIT0CBQJiSwAACQAAAgUCYksFAmJMBwkAAgECFE1heCBlZGl0aW9uIHJlYWNoZWQuAwMJAGYCBQJiSwAACQECIT0CBQJiTAUCY0wHCQACAQImQ2Fubm90IGNoYW5nZSBtYXhpbXVtIGlzc3VhYmxlIGFueW1vcmUDAwkAZgIFAmNOAAAJAQIhPQIFAmJMBQJjTAcJAAIBAjFDYW5ub3QgY2hhbmdlIG1heGltdW0gaXNzdWFibGUgd2l0aCBhY3RpdmUgb3JkZXJzBAJjYgMDCQBmAgUCYmcAAAkAZgIFAmNMAAAHBgcEAmNsAwUCYnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAU4AAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBAVkCBQFOBQFQBQJjYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBAmFnAgUBTgUBUAUCYmcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQFWAgUBTgUBUAUCY0wJAMwIAgkBC1N0cmluZ0VudHJ5AgkBAmFpAgUBTgUBUAUCYVcJAMwIAgkBDEludGVnZXJFbnRyeQIJAQJhaAIFAU4FAVAJAGQCBQJjTwUCYkYFA25pbAUCY2wCYVIBCmJ1eUFydHdvcmsCAVACYngJAQJidwYFAmFSBQFQBQJieAIAAgACAAJhUgEGc2V0QmlkAgFQAmJ4BAJjUAkBAmJ2AQUCYVIEAmJDCAUCY1ACXzEEAU4IBQJjUAJfMgQCYkIIBQJjUAJfMwQCY1EJAQJhUQEFAmFSBAJhUwgFAmNRAl8xBAJhVAgFAmNRAl8yBAJhVwMJAQEhAQkBCWlzRGVmaW5lZAEIBQJhUwdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUCYVMHYXNzZXRJZAQCYkYJAQFvAQkBAmFoAgUCYngFAVADAwkBAiE9AgUCYkYAAAkAZwIFBmhlaWdodAUCYkYHCQACAQILU2FsZSBlbmRlZC4EAmNOCQEBbwEJAKwCAgISY3VycmVudF9iaWRhbW91bnRfBQFQAwkBASEBCQECYmUBBQJhVwkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAQEhAQkBAmJmAgUCYVcFAmFUCQACAQIOV3JvbmcgbWluIHNlbGwEAmJLCQEBbwEJAQFYAgUCYngFAVAEAmJMCQEBbwEJAQFWAgUCYngFAVADCQBnAgAABQJiTAkAAgECI05vIG1heCBlZGl0aW9uIHNldCBmb3IgdGhpcyBhcnR3b3JrAwkAZwIFAmJLBQJiTAkAAgECGFNvbGQgb3V0LCB5b3UgY2Fubm90IGJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAU4CAV8FAmJDAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICBQJhVwIBXwkApAMBBQJhVAIBXwkApAMBBQJiQgkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICAhJjdXJyZW50X2JpZGFtb3VudF8FAVAJAGQCBQJjTgABBQNuaWwCYVIBCWFjY2VwdEJpZAUBUAJieAJieQJiegJicwQCY1IJAQJicgIFAmFSBQJicwQCYkMIBQJjUgJfMQQCY1MIBQJjUgJfMgQCYkIIBQJjUgJfMwQCYnQIBQJjUgJfNAMJAQIhPQIFAmNTBQJieAkAAgECGVlvdSBjYW5ub3QgZG8gdGhpcyBhY3Rpb24JAQJidwYFAmFSBQFQBQJieAUCYnkFAmJ6BQJicwJhUgEJY2FuY2VsQmlkBAFQAmJ4AmJ5AmJ6BAJjVAkBAmJ2AQUCYVIEAmJDCAUCY1QCXzEEAU4IBQJjVAJfMgQCYkIIBQJjVAJfMwMDCQECIT0CBQFOBQJiegkBAiE9AgUBTgUCYngHCQACAQIZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgQCY1UDCQAAAgUBTgUCYngFAmJ6BQFOBAJjTgkBAW8BCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAQCYm0JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIEYmlkXwUBUAIBXwUCYngCAV8FAmJ6AgFfBQJieQQCYm4JAQFhAQkArAICBQJibQIFX09QRU4DCQAAAgUCYm4CAAkAAgECDUJpZCBub3QgZm91bmQEAmJvCQC1CQIFAmJuAgFfBAJhVwkBAmJrAQkAkQMCBQJibwAABAJjVgIIQ0FOQ0VMRUQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQJibQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFAmJtAgFfBQJjVgkArAICCQCsAgIFAmJuAgFfCQCkAwEFAmJCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgICEmN1cnJlbnRfYmlkYW1vdW50XwUBUAkAZQIFAmNOAAEJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFAmNVCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUCYm8AAQUCYVcFA25pbAECY1cBAmNYAAQBRwUCY1cDCQABAgUBRwIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EAmNZBQFHAwMDAwkAAAIIBQJjWQhmdW5jdGlvbgIKYWRkQXJ0d29yawkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAA0DAwMDCQAAAggFAmNZCGZ1bmN0aW9uAg11cGRhdGVBcnR3b3JrCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MADAMDAwMJAAACCAUCY1kIZnVuY3Rpb24CC3NlbGxBcnR3b3JrCQAAAggFAmNZBGRBcHAFBHRoaXMHCQAAAggFAmNZA2ZlZQCgwh4HCQAAAggFAmNZCmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJjVwlib2R5Qnl0ZXMJAJEDAggFAmNXBnByb29mcwAACQDZBAEJAQJjbgEJAJEDAggFAmNZBGFyZ3MABQMDAwMJAAACCAUCY1kIZnVuY3Rpb24CCWFjY2VwdEJpZAkAAAIIBQJjWQRkQXBwBQR0aGlzBwkAAAIIBQJjWQNmZWUAoMIeBwkAAAIIBQJjWQpmZWVBc3NldElkBQR1bml0BwkAyBMDCAUCY1cJYm9keUJ5dGVzCQCRAwIIBQJjVwZwcm9vZnMAAAkA2QQBCQECY24BCQCRAwIIBQJjWQRhcmdzAAQJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAIBQJjVw9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAmNXCWJvZHlCeXRlcwkAkQMCCAUCY1cGcHJvb2ZzAAAIBQJjVw9zZW5kZXJQdWJsaWNLZXnfJLXV", "height": 2503574, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5n6ZqEQpyvCW2hXGULkWmzXznHexDojRkCKkMqAzLkhk Next: A3MZ1wmGq3k3n2SJDLyrgY6fx3PXTrGW4Zsgwg4d2t2t Diff:
OldNewDifferences
413413
414414 func bw (aR,P,bx,by,bz,bs) = {
415415 let bA = br(aR, bs)
416- let bB = bA._1
417- let N = bA._2
418- let bC = bA._3
419- let bt = bA._4
420- if (true)
421- then throw(toString(bt))
422- else {
423- let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
424- then bt
425- else false)
426- then toString(addressFromPublicKey(fromBase58String(bs)))
427- else toBase58String(aR.caller.bytes)
416+ if ((bA == bA))
417+ then {
418+ let bt = bA._4
419+ let bB = bA._3
420+ let N = bA._2
421+ let bC = bA._1
428422 if (true)
429- then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
423+ then throw(toString(bt))
430424 else {
431- let bE = if (if (if ((N == bx))
432- then (bz != "")
425+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
426+ then bt
433427 else false)
434- then (by != "")
435- else false)
436- then true
437- else false
438- let bF = o(ah(N, P))
439- if (if (if ((bF != 0))
440- then (height >= bF)
441- else false)
442- then !(bE)
443- else false)
444- then throw("Sale ended.")
428+ then toString(addressFromPublicKey(fromBase58String(bs)))
429+ else toBase58String(aR.caller.bytes)
430+ if (true)
431+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
445432 else {
446- let bG = (N == bx)
447- let bH = o("total_nft_issued")
448- let D = a(W(bx, P))
449- let bI = a(Q(bx, P))
450- if ((bI == ""))
451- then throw("Art doesn't exist")
433+ let bE = if (if (if ((N == bx))
434+ then (bz != "")
435+ else false)
436+ then (by != "")
437+ else false)
438+ then true
439+ else false
440+ let bF = o(ah(N, P))
441+ if (if (if ((bF != 0))
442+ then (height >= bF)
443+ else false)
444+ then !(bE)
445+ else false)
446+ then throw("Sale ended.")
452447 else {
453- let bJ = q(Y(bx, P))
454- let bK = o(X(bx, P))
455- let bc = if (bG)
456- then (B * 2)
457- else o(ag(bx, P))
458- let bb = if (bG)
459- then toBase58String(i)
460- else a(ai(bx, P))
461- let bL = o(V(bx, P))
462- if (if (if (!(bE))
463- then !(bG)
464- else false)
465- then if (if ((0 >= bc))
466- then true
467- else !(bJ))
468- then true
469- else (0 >= bL)
470- else false)
471- then throw("Art not for sale")
472- else if (if (if (!(bE))
473- then bG
474- else false)
475- then (0 >= bL)
476- else false)
477- then throw("Max issuable not set")
478- else {
479- let aP = aF(bx)
480- if (if (bE)
481- then (aP != "")
448+ let bG = (N == bx)
449+ let bH = o("total_nft_issued")
450+ let D = a(W(bx, P))
451+ let bI = a(Q(bx, P))
452+ if ((bI == ""))
453+ then throw("Art doesn't exist")
454+ else {
455+ let bJ = q(Y(bx, P))
456+ let bK = o(X(bx, P))
457+ let bc = if (bG)
458+ then (B * 2)
459+ else o(ag(bx, P))
460+ let bb = if (bG)
461+ then toBase58String(i)
462+ else a(ai(bx, P))
463+ let bL = o(V(bx, P))
464+ if (if (if (!(bE))
465+ then !(bG)
466+ else false)
467+ then if (if ((0 >= bc))
468+ then true
469+ else !(bJ))
470+ then true
471+ else (0 >= bL)
472+ else false)
473+ then throw("Art not for sale")
474+ else if (if (if (!(bE))
475+ then bG
482476 else false)
483- then throw(aP)
477+ then (0 >= bL)
478+ else false)
479+ then throw("Max issuable not set")
484480 else {
485- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
486- let bM = if (bE)
487- then bl(bm)
488- else ba(aR, bb, bc)
489- let aT = bM._1
490- let aW = bM._2
491- let bN = valueOrElse(getString(g, ak(bx)), f)
492- let bO = valueOrElse(getInteger(g, am(bx)), 0)
493- let bP = valueOrElse(getString(g, an(bx)), f)
494- let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
495- let bR = p(bx)
496- let bS = if ((bR > height))
497- then 0
498- else if ((aW == i))
499- then r
500- else s
501- let bT = fraction(aT, bS, 100)
502- let bU = if (if (if ((bN != f))
503- then (bO > 0)
481+ let aP = aF(bx)
482+ if (if (bE)
483+ then (aP != "")
504484 else false)
505- then (height > bR)
506- else false)
507- then fraction(aT, bO, 10000)
508- else 0
509- let bV = if (if (if ((bP != f))
510- then (bQ > 0)
511- else false)
512- then (height > bR)
513- else false)
514- then fraction(aT, bQ, 10000)
515- else 0
516- let bW = (aT - bT)
517- if ((bK == bL))
518- then throw("Art sold out")
485+ then throw(aP)
519486 else {
520- let bX = (bK + 1)
521- let bY = ((((((((((("Creator: " + bx) + ",
487+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
488+ let bM = if (bE)
489+ then bl(bm)
490+ else ba(aR, bb, bc)
491+ let aT = bM._1
492+ let aW = bM._2
493+ let bN = valueOrElse(getString(g, ak(bx)), f)
494+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
495+ let bP = valueOrElse(getString(g, an(bx)), f)
496+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
497+ let bR = p(bx)
498+ let bS = if ((bR > height))
499+ then 0
500+ else if ((aW == i))
501+ then r
502+ else s
503+ let bT = fraction(aT, bS, 100)
504+ let bU = if (if (if ((bN != f))
505+ then (bO > 0)
506+ else false)
507+ then (height > bR)
508+ else false)
509+ then fraction(aT, bO, 10000)
510+ else 0
511+ let bV = if (if (if ((bP != f))
512+ then (bQ > 0)
513+ else false)
514+ then (height > bR)
515+ else false)
516+ then fraction(aT, bQ, 10000)
517+ else 0
518+ let bW = (aT - bT)
519+ if ((bK == bL))
520+ then throw("Art sold out")
521+ else {
522+ let bX = (bK + 1)
523+ let bY = ((((((((((("Creator: " + bx) + ",
522524 ArtID: ") + P) + ",
523525 SignID: ") + D) + ",
524526 Artwork name: ") + bI) + ",
525527 Issue: ") + toString(bX)) + "/") + toString(bL))
526- let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
527- let ca = calculateAssetId(bZ)
528- let cb = if (if ((bX == bL))
529- then true
530- else !(bJ))
531- then false
532- else true
533- let cc = if (if (if ((N == bx))
534- then (bz != "")
535- else false)
536- then (by != "")
537- else false)
538- then addressFromStringValue(bz)
539- else aR.caller
540- let cd = if (!(isDefined(aW)))
541- then "WAVES"
542- else toBase58String(value(aW))
543- let bn = a((bm + "_OPEN"))
544- let ce = DeleteEntry((bm + "_OPEN"))
545- let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
546- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
547- let ch = if (!(bE))
548- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
549- else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
550- let ci = StringEntry(cg, ch)
551- let cj = if ((bU != 0))
552- then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
553- else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
554- let ck = if ((bV != 0))
555- then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
556- else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
557- let cl = if (bt)
558- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
559- else nil
560- 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)
561- if (bE)
562- then [ci, cf, ce] :: cm
563- else ci :: cm
528+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
529+ let ca = calculateAssetId(bZ)
530+ let cb = if (if ((bX == bL))
531+ then true
532+ else !(bJ))
533+ then false
534+ else true
535+ let cc = if (if (if ((N == bx))
536+ then (bz != "")
537+ else false)
538+ then (by != "")
539+ else false)
540+ then addressFromStringValue(bz)
541+ else aR.caller
542+ let cd = if (!(isDefined(aW)))
543+ then "WAVES"
544+ else toBase58String(value(aW))
545+ let bn = a((bm + "_OPEN"))
546+ let ce = DeleteEntry((bm + "_OPEN"))
547+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bB)))
548+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
549+ let ch = if (!(bE))
550+ then ((((((((((N + "_") + toString(bB)) + "_") + bC) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
551+ else ((((((((((toString(cc) + "_") + toString(bB)) + "_") + bC) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
552+ let ci = StringEntry(cg, ch)
553+ let cj = if ((bU != 0))
554+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
555+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
556+ let ck = if ((bV != 0))
557+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
558+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
559+ let cl = if (bt)
560+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
561+ else nil
562+ 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)
563+ if (bE)
564+ then [ci, cf, ce] :: cm
565+ else ci :: cm
566+ }
564567 }
565568 }
566- }
569+ }
567570 }
568571 }
569572 }
570573 }
574+ else throw("Strict value is not equal to itself.")
571575 }
572576
573577
599603 let cu = br(aR, bs)
600604 let P = cu._1
601605 let N = cu._2
602- let bC = cu._3
606+ let bB = cu._3
603607 let bt = cu._4
604608 if (!(K(F)))
605609 then throw("Hash should be 64 characters maximum")
640644 let cl = if (bt)
641645 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
642646 else nil
643- ([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)
647+ ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bB), 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)
644648 }
645649 else throw("Strict value is not equal to itself.")
646650 }
658662 then throw(w)
659663 else {
660664 let cD = br(aR, bs)
661- let bB = cD._1
665+ let bC = cD._1
662666 let N = cD._2
663- let bC = cD._3
667+ let bB = cD._3
664668 let bt = cD._4
665669 let cE = aH(ay, aB)
666670 let aJ = cE._1
693697 @Callable(aR)
694698 func flagArtwork (P,cG,cF,cH) = {
695699 let cI = bv(aR)
696- let bB = cI._1
700+ let bC = cI._1
697701 let N = cI._2
698702 if (containsElement([m, toString(this)], N))
699703 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
707711 @Callable(aR)
708712 func deleteArtwork (P,cG) = {
709713 let cJ = bv(aR)
710- let bB = cJ._1
714+ let bC = cJ._1
711715 let N = cJ._2
712716 let aY = if (containsElement([m, toString(this)], N))
713717 then cG
742746 @Callable(aR)
743747 func sellArtwork (P,bg,cL,aW,bF,bs) = {
744748 let cM = br(aR, bs)
745- let bB = cM._1
749+ let bC = cM._1
746750 let N = cM._2
747- let bC = cM._3
751+ let bB = cM._3
748752 let bt = cM._4
749753 let bI = a(Q(N, P))
750754 if ((bI == ""))
820824 @Callable(aR)
821825 func setBid (P,bx) = {
822826 let cP = bv(aR)
823- let bB = cP._1
827+ let bC = cP._1
824828 let N = cP._2
825- let bC = cP._3
829+ let bB = cP._3
826830 let cQ = aQ(aR)
827831 let aS = cQ._1
828832 let aT = cQ._2
847851 then throw("No max edition set for this artwork")
848852 else if ((bK >= bL))
849853 then throw("Sold out, you cannot bid")
850- else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
854+ else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bC) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
851855 }
852856 }
853857 }
857861 @Callable(aR)
858862 func acceptBid (P,bx,by,bz,bs) = {
859863 let cR = br(aR, bs)
860- let bB = cR._1
864+ let bC = cR._1
861865 let cS = cR._2
862- let bC = cR._3
866+ let bB = cR._3
863867 let bt = cR._4
864868 if ((cS != bx))
865869 then throw("You cannot do this action")
871875 @Callable(aR)
872876 func cancelBid (P,bx,by,bz) = {
873877 let cT = bv(aR)
874- let bB = cT._1
878+ let bC = cT._1
875879 let N = cT._2
876- let bC = cT._3
880+ let bB = cT._3
877881 if (if ((N != bz))
878882 then (N != bx)
879883 else false)
891895 let bo = split(bn, "_")
892896 let aW = bk(bo[0])
893897 let cV = "CANCELED"
894-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
898+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
895899 }
896900 }
897901 }
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 if ((bt == bt))
390390 then {
391391 let N = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
392392 then (bt > 0)
393393 else false)
394394 then toString(addressFromPublicKey(fromBase58String(bs)))
395395 else toBase58String(aR.caller.bytes)
396396 let bu = if (if ((bs != ""))
397397 then (bt > 0)
398398 else false)
399399 then invoke(h, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(bs)))], nil)
400400 else unit
401401 if ((bu == bu))
402402 then $Tuple4(toBase58String(aR.transactionId), N, lastBlock.timestamp, (bt > 0))
403403 else throw("Strict value is not equal to itself.")
404404 }
405405 else throw("Strict value is not equal to itself.")
406406 }
407407
408408
409409 func bv (aR) = if (!(v))
410410 then throw(w)
411411 else $Tuple3(toBase58String(aR.transactionId), toBase58String(aR.caller.bytes), lastBlock.timestamp)
412412
413413
414414 func bw (aR,P,bx,by,bz,bs) = {
415415 let bA = br(aR, bs)
416- let bB = bA._1
417- let N = bA._2
418- let bC = bA._3
419- let bt = bA._4
420- if (true)
421- then throw(toString(bt))
422- else {
423- let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
424- then bt
425- else false)
426- then toString(addressFromPublicKey(fromBase58String(bs)))
427- else toBase58String(aR.caller.bytes)
416+ if ((bA == bA))
417+ then {
418+ let bt = bA._4
419+ let bB = bA._3
420+ let N = bA._2
421+ let bC = bA._1
428422 if (true)
429- then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
423+ then throw(toString(bt))
430424 else {
431- let bE = if (if (if ((N == bx))
432- then (bz != "")
425+ let bD = if (if ((toBase58String(aR.caller.bytes) == toString(this)))
426+ then bt
433427 else false)
434- then (by != "")
435- else false)
436- then true
437- else false
438- let bF = o(ah(N, P))
439- if (if (if ((bF != 0))
440- then (height >= bF)
441- else false)
442- then !(bE)
443- else false)
444- then throw("Sale ended.")
428+ then toString(addressFromPublicKey(fromBase58String(bs)))
429+ else toBase58String(aR.caller.bytes)
430+ if (true)
431+ then throw(((((((bD + " / ") + bx) + " / ") + bz) + " / ") + bs))
445432 else {
446- let bG = (N == bx)
447- let bH = o("total_nft_issued")
448- let D = a(W(bx, P))
449- let bI = a(Q(bx, P))
450- if ((bI == ""))
451- then throw("Art doesn't exist")
433+ let bE = if (if (if ((N == bx))
434+ then (bz != "")
435+ else false)
436+ then (by != "")
437+ else false)
438+ then true
439+ else false
440+ let bF = o(ah(N, P))
441+ if (if (if ((bF != 0))
442+ then (height >= bF)
443+ else false)
444+ then !(bE)
445+ else false)
446+ then throw("Sale ended.")
452447 else {
453- let bJ = q(Y(bx, P))
454- let bK = o(X(bx, P))
455- let bc = if (bG)
456- then (B * 2)
457- else o(ag(bx, P))
458- let bb = if (bG)
459- then toBase58String(i)
460- else a(ai(bx, P))
461- let bL = o(V(bx, P))
462- if (if (if (!(bE))
463- then !(bG)
464- else false)
465- then if (if ((0 >= bc))
466- then true
467- else !(bJ))
468- then true
469- else (0 >= bL)
470- else false)
471- then throw("Art not for sale")
472- else if (if (if (!(bE))
473- then bG
474- else false)
475- then (0 >= bL)
476- else false)
477- then throw("Max issuable not set")
478- else {
479- let aP = aF(bx)
480- if (if (bE)
481- then (aP != "")
448+ let bG = (N == bx)
449+ let bH = o("total_nft_issued")
450+ let D = a(W(bx, P))
451+ let bI = a(Q(bx, P))
452+ if ((bI == ""))
453+ then throw("Art doesn't exist")
454+ else {
455+ let bJ = q(Y(bx, P))
456+ let bK = o(X(bx, P))
457+ let bc = if (bG)
458+ then (B * 2)
459+ else o(ag(bx, P))
460+ let bb = if (bG)
461+ then toBase58String(i)
462+ else a(ai(bx, P))
463+ let bL = o(V(bx, P))
464+ if (if (if (!(bE))
465+ then !(bG)
466+ else false)
467+ then if (if ((0 >= bc))
468+ then true
469+ else !(bJ))
470+ then true
471+ else (0 >= bL)
472+ else false)
473+ then throw("Art not for sale")
474+ else if (if (if (!(bE))
475+ then bG
482476 else false)
483- then throw(aP)
477+ then (0 >= bL)
478+ else false)
479+ then throw("Max issuable not set")
484480 else {
485- let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
486- let bM = if (bE)
487- then bl(bm)
488- else ba(aR, bb, bc)
489- let aT = bM._1
490- let aW = bM._2
491- let bN = valueOrElse(getString(g, ak(bx)), f)
492- let bO = valueOrElse(getInteger(g, am(bx)), 0)
493- let bP = valueOrElse(getString(g, an(bx)), f)
494- let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
495- let bR = p(bx)
496- let bS = if ((bR > height))
497- then 0
498- else if ((aW == i))
499- then r
500- else s
501- let bT = fraction(aT, bS, 100)
502- let bU = if (if (if ((bN != f))
503- then (bO > 0)
481+ let aP = aF(bx)
482+ if (if (bE)
483+ then (aP != "")
504484 else false)
505- then (height > bR)
506- else false)
507- then fraction(aT, bO, 10000)
508- else 0
509- let bV = if (if (if ((bP != f))
510- then (bQ > 0)
511- else false)
512- then (height > bR)
513- else false)
514- then fraction(aT, bQ, 10000)
515- else 0
516- let bW = (aT - bT)
517- if ((bK == bL))
518- then throw("Art sold out")
485+ then throw(aP)
519486 else {
520- let bX = (bK + 1)
521- let bY = ((((((((((("Creator: " + bx) + ",
487+ let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
488+ let bM = if (bE)
489+ then bl(bm)
490+ else ba(aR, bb, bc)
491+ let aT = bM._1
492+ let aW = bM._2
493+ let bN = valueOrElse(getString(g, ak(bx)), f)
494+ let bO = valueOrElse(getInteger(g, am(bx)), 0)
495+ let bP = valueOrElse(getString(g, an(bx)), f)
496+ let bQ = valueOrElse(getInteger(g, ao(bx)), 0)
497+ let bR = p(bx)
498+ let bS = if ((bR > height))
499+ then 0
500+ else if ((aW == i))
501+ then r
502+ else s
503+ let bT = fraction(aT, bS, 100)
504+ let bU = if (if (if ((bN != f))
505+ then (bO > 0)
506+ else false)
507+ then (height > bR)
508+ else false)
509+ then fraction(aT, bO, 10000)
510+ else 0
511+ let bV = if (if (if ((bP != f))
512+ then (bQ > 0)
513+ else false)
514+ then (height > bR)
515+ else false)
516+ then fraction(aT, bQ, 10000)
517+ else 0
518+ let bW = (aT - bT)
519+ if ((bK == bL))
520+ then throw("Art sold out")
521+ else {
522+ let bX = (bK + 1)
523+ let bY = ((((((((((("Creator: " + bx) + ",
522524 ArtID: ") + P) + ",
523525 SignID: ") + D) + ",
524526 Artwork name: ") + bI) + ",
525527 Issue: ") + toString(bX)) + "/") + toString(bL))
526- let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
527- let ca = calculateAssetId(bZ)
528- let cb = if (if ((bX == bL))
529- then true
530- else !(bJ))
531- then false
532- else true
533- let cc = if (if (if ((N == bx))
534- then (bz != "")
535- else false)
536- then (by != "")
537- else false)
538- then addressFromStringValue(bz)
539- else aR.caller
540- let cd = if (!(isDefined(aW)))
541- then "WAVES"
542- else toBase58String(value(aW))
543- let bn = a((bm + "_OPEN"))
544- let ce = DeleteEntry((bm + "_OPEN"))
545- let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bC)))
546- let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
547- let ch = if (!(bE))
548- then ((((((((((N + "_") + toString(bC)) + "_") + bB) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
549- else ((((((((((toString(cc) + "_") + toString(bC)) + "_") + bB) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
550- let ci = StringEntry(cg, ch)
551- let cj = if ((bU != 0))
552- then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
553- else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
554- let ck = if ((bV != 0))
555- then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
556- else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
557- let cl = if (bt)
558- then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
559- else nil
560- 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)
561- if (bE)
562- then [ci, cf, ce] :: cm
563- else ci :: cm
528+ let bZ = Issue(("SA_" + toString((bH + 1))), bY, 1, 0, false)
529+ let ca = calculateAssetId(bZ)
530+ let cb = if (if ((bX == bL))
531+ then true
532+ else !(bJ))
533+ then false
534+ else true
535+ let cc = if (if (if ((N == bx))
536+ then (bz != "")
537+ else false)
538+ then (by != "")
539+ else false)
540+ then addressFromStringValue(bz)
541+ else aR.caller
542+ let cd = if (!(isDefined(aW)))
543+ then "WAVES"
544+ else toBase58String(value(aW))
545+ let bn = a((bm + "_OPEN"))
546+ let ce = DeleteEntry((bm + "_OPEN"))
547+ let cf = StringEntry((bm + "_CLOSED"), ((bn + "_") + toString(bB)))
548+ let cg = ((((((("art_sold_" + toString(bX)) + "_of_") + toString(bL)) + "_") + P) + "_") + bx)
549+ let ch = if (!(bE))
550+ then ((((((((((N + "_") + toString(bB)) + "_") + bC) + "_") + toString(bc)) + "_") + bb) + "_") + toBase58String(ca))
551+ else ((((((((((toString(cc) + "_") + toString(bB)) + "_") + bC) + "_") + toString(aT)) + "_") + cd) + "_") + toBase58String(ca))
552+ let ci = StringEntry(cg, ch)
553+ let cj = if ((bU != 0))
554+ then [ScriptTransfer(Address(fromBase58String(f)), (bT - bU), aW), ScriptTransfer(Address(fromBase58String(bN)), bU, aW)]
555+ else [ScriptTransfer(Address(fromBase58String(f)), bT, aW)]
556+ let ck = if ((bV != 0))
557+ then [ScriptTransfer(Address(fromBase58String(bP)), bV, aW), ScriptTransfer(Address(fromBase58String(bx)), (bW - bV), aW)]
558+ else [ScriptTransfer(Address(fromBase58String(bx)), bW, aW)]
559+ let cl = if (bt)
560+ then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
561+ else nil
562+ 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)
563+ if (bE)
564+ then [ci, cf, ce] :: cm
565+ else ci :: cm
566+ }
564567 }
565568 }
566- }
569+ }
567570 }
568571 }
569572 }
570573 }
574+ else throw("Strict value is not equal to itself.")
571575 }
572576
573577
574578 func cn (co) = {
575579 let G = co
576580 if ($isInstanceOf(G, "String"))
577581 then {
578582 let cp = G
579583 cp
580584 }
581585 else throw("Sponsored Public Key String expected")
582586 }
583587
584588
585589 @Callable(cq)
586590 func setConf (b,cr) = {
587591 let N = toString(cq.caller)
588592 if (containsElement([m, toString(this)], N))
589593 then if (contains(b, "conf_"))
590594 then [StringEntry(b, cr)]
591595 else throw("Entries starting with conf_ only")
592596 else throw("You are not allowed to change this")
593597 }
594598
595599
596600
597601 @Callable(aR)
598602 func addArtwork (F,D,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = {
599603 let cu = br(aR, bs)
600604 let P = cu._1
601605 let N = cu._2
602- let bC = cu._3
606+ let bB = cu._3
603607 let bt = cu._4
604608 if (!(K(F)))
605609 then throw("Hash should be 64 characters maximum")
606610 else {
607611 let cv = aH(ay, aB)
608612 let aJ = cv._1
609613 let aK = cv._2
610614 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
611615 if ((cw != ""))
612616 then throw("Something went wrong!")
613617 else {
614618 let cx = (p((N + "_free_drops")) > 0)
615619 let cy = if (cx)
616620 then $Tuple2(0, D)
617621 else aU(aR)
618622 let aT = cy._1
619623 let aW = cy._2
620624 if (!(isDefined(aT)))
621625 then throw("Something went wrong")
622626 else {
623627 let cz = a(au(F, N))
624628 if ((cz != ""))
625629 then throw("You already added it")
626630 else {
627631 let cA = a(ar(F))
628632 if ((cA != ""))
629633 then throw("Hash already registered")
630634 else {
631635 let cB = C(D, N, F)
632636 if (!(cB))
633637 then throw("Sign Certificate not found for this address.")
634638 else {
635639 let cC = if (cx)
636640 then invoke(h, "useFreeDrop", [N], nil)
637641 else unit
638642 if ((cC == cC))
639643 then {
640644 let cl = if (bt)
641645 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
642646 else nil
643- ([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)
647+ ([StringEntry(ar(F), N), StringEntry(au(F, N), P), IntegerEntry(O(N, P), bB), 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)
644648 }
645649 else throw("Strict value is not equal to itself.")
646650 }
647651 }
648652 }
649653 }
650654 }
651655 }
652656 }
653657
654658
655659
656660 @Callable(aR)
657661 func updateArtwork (aq,aL,aM,aN,cs,aw,aA,ax,aB,ay,ct,aO,bs) = if (!(v))
658662 then throw(w)
659663 else {
660664 let cD = br(aR, bs)
661- let bB = cD._1
665+ let bC = cD._1
662666 let N = cD._2
663- let bC = cD._3
667+ let bB = cD._3
664668 let bt = cD._4
665669 let cE = aH(ay, aB)
666670 let aJ = cE._1
667671 let aK = cE._2
668672 let cw = aI(N, aw, ax, aJ, aA, aK, aL, aM, aN, aO)
669673 if ((cw != ""))
670674 then throw("Something went wrong!")
671675 else {
672676 let cz = a(Q(N, aq))
673677 if ((cz == ""))
674678 then throw("Entry not found")
675679 else {
676680 let cF = a(aj(N, aq))
677681 if ((cF == "ILLEGAL"))
678682 then throw("Cannot update ILLEGAL artwork")
679683 else if (!(aX(N, aq)))
680684 then {
681685 let cl = if (bt)
682686 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
683687 else nil
684688 ([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)
685689 }
686690 else throw("Already minted")
687691 }
688692 }
689693 }
690694
691695
692696
693697 @Callable(aR)
694698 func flagArtwork (P,cG,cF,cH) = {
695699 let cI = bv(aR)
696- let bB = cI._1
700+ let bC = cI._1
697701 let N = cI._2
698702 if (containsElement([m, toString(this)], N))
699703 then if (containsElement(["CONSENT", "", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
700704 then [StringEntry(aj(cG, P), cF), StringEntry(ad(cG, P), cH)]
701705 else throw(("Unknow status " + cF))
702706 else throw("You are not allowed")
703707 }
704708
705709
706710
707711 @Callable(aR)
708712 func deleteArtwork (P,cG) = {
709713 let cJ = bv(aR)
710- let bB = cJ._1
714+ let bC = cJ._1
711715 let N = cJ._2
712716 let aY = if (containsElement([m, toString(this)], N))
713717 then cG
714718 else N
715719 let cz = valueOrErrorMessage(a(Q(aY, P)), "No art matching for this address")
716720 if ((cz == ""))
717721 then throw("No art matching for this address")
718722 else {
719723 let F = a(ap(aY, P))
720724 if ((F == ""))
721725 then throw("No art hash matching for this address")
722726 else {
723727 let D = a(W(aY, P))
724728 if ((D == ""))
725729 then throw("No SIGN ID matching")
726730 else {
727731 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))]
728732 if (!(aX(aY, P)))
729733 then if (!(v))
730734 then throw(w)
731735 else cK
732736 else if (containsElement([m, toString(this)], N))
733737 then cK
734738 else throw("Art already minted, you cannot delete it")
735739 }
736740 }
737741 }
738742 }
739743
740744
741745
742746 @Callable(aR)
743747 func sellArtwork (P,bg,cL,aW,bF,bs) = {
744748 let cM = br(aR, bs)
745- let bB = cM._1
749+ let bC = cM._1
746750 let N = cM._2
747- let bC = cM._3
751+ let bB = cM._3
748752 let bt = cM._4
749753 let bI = a(Q(N, P))
750754 if ((bI == ""))
751755 then throw("This art doesn't match your account")
752756 else {
753757 let cF = a(aj(N, P))
754758 if (containsElement(["CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], cF))
755759 then throw("Flagged artwork")
756760 else {
757761 let cN = o(("current_bidamount_" + P))
758762 if ((0 > bF))
759763 then throw("Negative end")
760764 else if (if ((bF > 0))
761765 then if ((cL != 1))
762766 then true
763767 else (bg != 0)
764768 else false)
765769 then throw("Timed offer only allowed for unique edition and offer only")
766770 else {
767771 let cO = if ((bF == 0))
768772 then 0
769773 else height
770774 if (!(be(aW)))
771775 then throw("Something went wrong!")
772776 else if (!(bf(aW, bg)))
773777 then throw("Something went wrong!")
774778 else {
775779 let aP = aF(N)
776780 if ((aP != ""))
777781 then throw(aP)
778782 else {
779783 let bK = o(X(N, P))
780784 let bL = o(V(N, P))
781785 if ((cL > 100))
782786 then throw("100 editions max per artwork")
783787 else if (if ((bK != 0))
784788 then (bK == bL)
785789 else false)
786790 then throw("Max edition reached.")
787791 else if (if ((bK > 0))
788792 then (bL != cL)
789793 else false)
790794 then throw("Cannot change maximum issuable anymore")
791795 else if (if ((cN > 0))
792796 then (bL != cL)
793797 else false)
794798 then throw("Cannot change maximum issuable with active orders")
795799 else {
796800 let cb = if (if ((bg > 0))
797801 then (cL > 0)
798802 else false)
799803 then true
800804 else false
801805 let cl = if (bt)
802806 then [ScriptTransfer(Address(fromBase58String(N)), 0, unit)]
803807 else nil
804808 ([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)
805809 }
806810 }
807811 }
808812 }
809813 }
810814 }
811815 }
812816
813817
814818
815819 @Callable(aR)
816820 func buyArtwork (P,bx) = bw(aR, P, bx, "", "", "")
817821
818822
819823
820824 @Callable(aR)
821825 func setBid (P,bx) = {
822826 let cP = bv(aR)
823- let bB = cP._1
827+ let bC = cP._1
824828 let N = cP._2
825- let bC = cP._3
829+ let bB = cP._3
826830 let cQ = aQ(aR)
827831 let aS = cQ._1
828832 let aT = cQ._2
829833 let aW = if (!(isDefined(aS.assetId)))
830834 then "WAVES"
831835 else toBase58String(value(aS.assetId))
832836 let bF = o(ah(bx, P))
833837 if (if ((bF != 0))
834838 then (height >= bF)
835839 else false)
836840 then throw("Sale ended.")
837841 else {
838842 let cN = o(("current_bidamount_" + P))
839843 if (!(be(aW)))
840844 then throw("asset not accepted")
841845 else if (!(bf(aW, aT)))
842846 then throw("Wrong min sell")
843847 else {
844848 let bK = o(X(bx, P))
845849 let bL = o(V(bx, P))
846850 if ((0 >= bL))
847851 then throw("No max edition set for this artwork")
848852 else if ((bK >= bL))
849853 then throw("Sold out, you cannot bid")
850- else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bB) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
854+ else [StringEntry((((((((("bid_" + P) + "_") + bx) + "_") + N) + "_") + bC) + "_OPEN"), ((((aW + "_") + toString(aT)) + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cN + 1))]
851855 }
852856 }
853857 }
854858
855859
856860
857861 @Callable(aR)
858862 func acceptBid (P,bx,by,bz,bs) = {
859863 let cR = br(aR, bs)
860- let bB = cR._1
864+ let bC = cR._1
861865 let cS = cR._2
862- let bC = cR._3
866+ let bB = cR._3
863867 let bt = cR._4
864868 if ((cS != bx))
865869 then throw("You cannot do this action")
866870 else bw(aR, P, bx, by, bz, bs)
867871 }
868872
869873
870874
871875 @Callable(aR)
872876 func cancelBid (P,bx,by,bz) = {
873877 let cT = bv(aR)
874- let bB = cT._1
878+ let bC = cT._1
875879 let N = cT._2
876- let bC = cT._3
880+ let bB = cT._3
877881 if (if ((N != bz))
878882 then (N != bx)
879883 else false)
880884 then throw("You cannot do this action")
881885 else {
882886 let cU = if ((N == bx))
883887 then bz
884888 else N
885889 let cN = o(("current_bidamount_" + P))
886890 let bm = ((((((("bid_" + P) + "_") + bx) + "_") + bz) + "_") + by)
887891 let bn = a((bm + "_OPEN"))
888892 if ((bn == ""))
889893 then throw("Bid not found")
890894 else {
891895 let bo = split(bn, "_")
892896 let aW = bk(bo[0])
893897 let cV = "CANCELED"
894-[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bC))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
898+[DeleteEntry((bm + "_OPEN")), StringEntry(((bm + "_") + cV), ((bn + "_") + toString(bB))), IntegerEntry(("current_bidamount_" + P), (cN - 1)), ScriptTransfer(Address(fromBase58String(cU)), parseIntValue(bo[1]), aW)]
895899 }
896900 }
897901 }
898902
899903
900904 @Verifier(cW)
901905 func cX () = {
902906 let G = cW
903907 if ($isInstanceOf(G, "InvokeScriptTransaction"))
904908 then {
905909 let cY = G
906910 if (if (if (if ((cY.function == "addArtwork"))
907911 then (cY.dApp == this)
908912 else false)
909913 then (cY.fee == 500000)
910914 else false)
911915 then (cY.feeAssetId == unit)
912916 else false)
913917 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[13])))
914918 else if (if (if (if ((cY.function == "updateArtwork"))
915919 then (cY.dApp == this)
916920 else false)
917921 then (cY.fee == 500000)
918922 else false)
919923 then (cY.feeAssetId == unit)
920924 else false)
921925 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[12])))
922926 else if (if (if (if ((cY.function == "sellArtwork"))
923927 then (cY.dApp == this)
924928 else false)
925929 then (cY.fee == 500000)
926930 else false)
927931 then (cY.feeAssetId == unit)
928932 else false)
929933 then sigVerify(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[5])))
930934 else if (if (if (if ((cY.function == "acceptBid"))
931935 then (cY.dApp == this)
932936 else false)
933937 then (cY.fee == 500000)
934938 else false)
935939 then (cY.feeAssetId == unit)
936940 else false)
937941 then sigVerify_128Kb(cW.bodyBytes, cW.proofs[0], fromBase58String(cn(cY.args[4])))
938942 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
939943 }
940944 else sigVerify(cW.bodyBytes, cW.proofs[0], cW.senderPublicKey)
941945 }
942946

github/deemru/w8io/873ac7e 
117.44 ms