tx · CsewjecbxUYsTHBSuhSPJbxji1t8R7ETHkZzSfkjm5xq

3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG:  -0.01400000 Waves

2020.11.10 13:25 [1259119] smart account 3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG > SELF 0.00000000 Waves

{ "type": 13, "id": "CsewjecbxUYsTHBSuhSPJbxji1t8R7ETHkZzSfkjm5xq", "fee": 1400000, "feeAssetId": null, "timestamp": 1605003993776, "version": 2, "chainId": 84, "sender": "3N2Tdcx5fzxJAKP5hMp9W35Cp1EFzfiJ1zG", "senderPublicKey": "9SULUbW7L2jV2nv8v48Kdzox4cZ8jEfg778yJHJpgVwM", "proofs": [ "yWPfRDjZiFUuAyQJRyBTcESfqVMmPTXRbDG3u7f1iAkcuzDgzZ6okz5dmbRrzAeadLHfYp6kCqBecM6t58mZ6b2" ], "script": "base64:AAIEAAAAAAAAAGEIAhIGCgQICAgIEgMKAQgSBgoECAgICBIECgIICBIDCgEIEg4KDAgICAgICAEICAgICBINCgsICAgICAEICAgICBIFCgMICAgSBAoCCAgSBgoECAEBCBIECgIICBIDCgEIAAAAOwAAAAAJb3JhY2xlRmVlCQEAAAAFdmFsdWUAAAABCQAEJgAAAAECAAAAIzNOMnM1UnRhSFBCZW5Dc3gyRUNjb0ZSYllIeDNub1poWFcxAAAAAAhzaWduRGFwcAkBAAAABXZhbHVlAAAAAQkABCYAAAABAgAAACMzTkMyOGhTaXZybXNUVVhhWUQxeDZMMzYySjRacFVub1RkQgAAAAALZmVlUmVjZWl2ZXICAAAAIzNOMUU2dFhkZFJvVmFSZlE5ZFEzdmc1TGFXMmZzZDhIS3ViAAAAAAtzaWduQXNzZXRJZAEAAAAg6KVqvMp3QvJwYTI1Sk9Fg7m5HuWZZxfDcerZC6EEresAAAAAC3VzZG5Bc3NldElkAQAAACAP8hwSrOTEPJrsRhqrJaiw7LoHK0bMbYhy8LXikkkBtAAAAAAMd2F2ZXNBc3NldElkAQAAAAAAAAAAB3NpZ25DdXQAAAAAAAAAAAgAAAAAB3VzZG5DdXQAAAAAAAAAAAoAAAAACHdhdmVzQ3V0AAAAAAAAAAAKAAAAAAVjaHJpcwIAAAAjM01zRzZqUE5DclZKVXRZQjdYSkJ4Uzd1dFdzWEFmNG45VnAAAAAABGpvZXACAAAAIzNNem00Vkx3c045dVp3YlRNelBqM1h1eFY2a0VmQVI4VUROAAAAAA9XSElURUxJU1RFRE9OTFkGAAAAAAtkYXBwUnVubmluZwYAAAAADm1haW50ZW5hbmNlTVNHAgAAAB1TSUdOIEFydCBpcyB1bmRlciBtYWludGVuYW5jZQAAAAALdXNlckFsbG93ZWQCAAAAB0FMTE9XRUQAAAAADnVzZXJSZWdpc3RlcmVkAgAAAApSRUdJU1RFUkVEAAAAAAx1c2VyVmVyaWZpZWQCAAAACFZFUklGSUVEAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAACXVzZXJSZXNldAIAAAAFUkVTRVQBAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWECAAAAAAEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAACW9yYWNsZUZlZQUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEJAAACAAAAAQIAAAAfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWkFAAAAByRtYXRjaDAFAAAAAWkAAAAAAAAAAAABAAAAD2dldEJvb2xlYW5CeUtleQAAAAEAAAADa2V5BAAAAAckbWF0Y2gwCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAHQm9vbGVhbgQAAAABaQUAAAAHJG1hdGNoMAUAAAABaQcBAAAAFGNoZWNrU2lnbkNlcnRpZmljYXRlAAAAAwAAAAZzaWduSUQAAAAFT3duZXIAAAAKc2hhMjU2SGFzaAQAAAAHJG1hdGNoMAkABB0AAAACBQAAAAhzaWduRGFwcAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIZGF0YV9mY18FAAAABnNpZ25JRAIAAAABXwUAAAAFT3duZXIDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABYQUAAAAHJG1hdGNoMAMJAQAAAAhjb250YWlucwAAAAIFAAAAAWEFAAAACnNoYTI1Nkhhc2gGBwcBAAAAC3ZhbGlkYXRlQ0lEAAAAAQAAAANjaWQDAwkAAGYAAAACAAAAAAAAAABLCQABMQAAAAEFAAAAA2NpZAkAAGYAAAACAAAAAAAAAAA8CQABMQAAAAEJAAGRAAAAAgkABLUAAAACBQAAAANjaWQCAAAAAS8AAAAAAAAAAAAHCQAAZgAAAAIAAAAAAAAAABAJAAExAAAAAQkAAZEAAAACCQAEtQAAAAIFAAAAA2NpZAIAAAABLwAAAAAAAAAAAQcBAAAADHZhbGlkYXRlSGFzaAAAAAEAAAAEaGFzaAkAAGYAAAACAAAAAAAAAABBCQABMQAAAAEFAAAABGhhc2gBAAAAC2tleVVzZXJBZGRyAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAFdXNlcl8FAAAABmNhbGxlcgEAAAALa2V5VXNlck5hbWUAAAABAAAABmNhbGxlcgkAASwAAAACAgAAAAp1c2VyX25hbWVfBQAAAAZjYWxsZXIBAAAAC2tleVVzZXJEZXNjAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAKdXNlcl9kZXNjXwUAAAAGY2FsbGVyAQAAAA1rZXlVc2VyU29jaWFsAAAAAQAAAAZjYWxsZXIJAAEsAAAAAgIAAAAMdXNlcl9zb2NpYWxfBQAAAAZjYWxsZXIBAAAADGtleVVzZXJUaHVtYgAAAAEAAAAGY2FsbGVyCQABLAAAAAICAAAAC3VzZXJfdGh1bWJfBQAAAAZjYWxsZXIBAAAADWtleVVzZXJTdGF0dXMAAAABAAAABmNhbGxlcgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAABmNhbGxlcgEAAAALa2V5VXNlckRhdGUAAAABAAAABmNhbGxlcgkAASwAAAACAgAAAAp1c2VyX2RhdGVfBQAAAAZjYWxsZXIBAAAACmtleUFydERhdGUAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X2RhdGVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAprZXlBcnROYW1lAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9uYW1lXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAKa2V5QXJ0RGVzYwAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZGVzY18FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEGtleUFydERpc3BsYXlDaWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQYXJ0X2Rpc3BsYXlfY2lkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAQa2V5QXJ0RXhwb3J0SGFzaAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBhcnRfZXhwb3J0X2hhc2hfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAPYXJ0X2V4cG9ydF9jaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAA1rZXlBcnRNYXhNaW50AAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADGFydF9tYXhtaW50XwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAMa2V5QXJ0U2lnbklEAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC2FydF9zaWduaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAxrZXlBcnRJc3N1ZWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALYXJ0X2lzc3VlZF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAADGtleUFydE9uU2FsZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAthcnRfb25zYWxlXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAARa2V5QXJ0TGljZW5jZUhhc2gAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAARYXJ0X2xpY2VuY2VfaGFzaF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEGtleUFydExpY2VuY2VDaWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAQYXJ0X2xpY2VuY2VfY2lkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAKa2V5QXJ0VGFncwAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfdGFnc18FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACmtleUFydFR5cGUAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X3R5cGVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAtrZXlBcnRQcmljZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAphcnRfcHJpY2VfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAABVrZXlBcnRBc3NldElkQWNjZXB0ZWQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASYXJ0X2Fzc2V0QWNjZXB0ZWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAprZXlBcnRGbGFnAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9mbGFnXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAUa2V5QXJ0SGFzaEJ5VHhpZEFkZHIAAAACAAAABmNhbGxlcgAAAAR0eGlkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABNnZXRfaGFzaGJ5dHhpZGFkZHJfBQAAAAR0eGlkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQAAAApzaGEyNTZIYXNoCQABLAAAAAICAAAAEmdldF9vd25lcl9ieV9oYXNoXwUAAAAKc2hhMjU2SGFzaAEAAAATa2V5QXJ0QXJ0aWRCeVNpZ25pZAAAAAIAAAAGY2FsbGVyAAAABnNpZ25JZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAASZ2V0X2FydGlkYnlzaWduaWRfBQAAAAZzaWduSWQCAAAAAV8FAAAABmNhbGxlcgEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgAAAApzaGEyNTZIYXNoAAAABmNhbGxlcgkAASwAAAACAgAAABdnZXRfdHhpZF9ieV9oYXNoX293bmVyXwkAAlgAAAABCQALVAAAAAEJAAGbAAAAAQkAASwAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIBAAAADnZhbGlkYXRlQWxsQ0lEAAAAAwAAAApjaWREaXNwbGF5AAAACWNpZEV4cG9ydAAAAApjaWRMaWNlbmNlAwMJAQAAAAIhPQAAAAIFAAAACmNpZERpc3BsYXkCAAAAAAkBAAAAASEAAAABCQEAAAALdmFsaWRhdGVDSUQAAAABBQAAAApjaWREaXNwbGF5BwkAAAIAAAABAgAAABFXcm9uZyBEaXNwbGF5IENJRAMDCQEAAAACIT0AAAACBQAAAAljaWRFeHBvcnQCAAAAAAkBAAAAASEAAAABCQEAAAALdmFsaWRhdGVDSUQAAAABBQAAAAljaWRFeHBvcnQHCQAAAgAAAAECAAAAEFdyb25nIEV4cG9ydCBDSUQDAwkBAAAAAiE9AAAAAgUAAAAKY2lkTGljZW5jZQIAAAAACQEAAAABIQAAAAEJAQAAAAt2YWxpZGF0ZUNJRAAAAAEFAAAACmNpZExpY2VuY2UHCQAAAgAAAAECAAAAEVdyb25nIExpY2VuY2UgQ0lEBgEAAAAPdmFsaWRhdGVBbGxIYXNoAAAAAgAAAAxzaGEyNTZFeHBvcnQAAAANc2hhMjU2TGljZW5jZQMDCQEAAAACIT0AAAACBQAAAAxzaGEyNTZFeHBvcnQCAAAAAAkBAAAAASEAAAABCQEAAAAMdmFsaWRhdGVIYXNoAAAAAQUAAAAMc2hhMjU2RXhwb3J0BwkAAAIAAAABAgAAABhFeHBvcnQgSGFzaCA2NCBjaGFyLiBtYXgDAwkBAAAAAiE9AAAAAgUAAAANc2hhMjU2TGljZW5jZQIAAAAACQEAAAABIQAAAAEJAQAAAAx2YWxpZGF0ZUhhc2gAAAABBQAAAA1zaGEyNTZMaWNlbmNlBwkAAAIAAAABAgAAABlMaWNlbmNlIEhhc2ggNjQgY2hhci4gbWF4BgEAAAAOdmFsaWRhdGVTdHJpbmcAAAACAAAAA3N0cgAAAANtYXgDCQAAAAAAAAIJAAExAAAAAQUAAAADc3RyAAAAAAAAAAAACQAAAgAAAAECAAAAGEZpZWxkIGNhbm5vdCBiZSBpcyBlbXB0eQMJAABmAAAAAgkAATEAAAABBQAAAANzdHIFAAAAA21heAkAAAIAAAABCQABLAAAAAIFAAAAA3N0cgIAAAAMIGlzIHRvbyBsb25nBgAAAAwAAAABaQEAAAAMcmVnaXN0ZXJVc2VyAAAABAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABXRodW1iAAAABnNvY2lhbAMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cEAAAABmNhbGxlcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAC2NhblJlZ2lzdGVyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAABmNhbGxlcgQAAAACaWQJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAQAAAAJdGltZXN0YW1wCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAMDCQAAAAAAAAIFAAAAC2NhblJlZ2lzdGVyBQAAAA11c2VyU3VzcGVuZGVkBgkAAAAAAAACBQAAAAtjYW5SZWdpc3RlcgUAAAALdXNlclJlbW92ZWQJAAACAAAAAQIAAAAbQWNjb3VudCBzdXNwZW5kZWQvIHJlbW92ZWQuAwkAAAAAAAACBQAAAAtjYW5SZWdpc3RlcgUAAAAOdXNlclJlZ2lzdGVyZWQJAAACAAAAAQIAAAASQWxyZWFkeSByZWdpc3RlcmVkAwMJAAAAAAAAAgUAAAALY2FuUmVnaXN0ZXICAAAAAAUAAAAPV0hJVEVMSVNURURPTkxZBwkAAAIAAAABAgAAACNDYW4ndCByZWdpc3RlciwgZ2V0IGFwcHJvdmVkIGZpcnN0LgMDCQAAAAAAAAIFAAAABG5hbWUCAAAAAAYJAAAAAAAAAgUAAAALZGVzY3JpcHRpb24CAAAAAAkAAAIAAAABAgAAACROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAZNjAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAC2tleVVzZXJEYXRlAAAAAQUAAAAGY2FsbGVyBQAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJBZGRyAAAAAQUAAAAGY2FsbGVyCQABLAAAAAIJAAEsAAAAAgUAAAACaWQCAAAAAV8JAAGkAAAAAQgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJOYW1lAAAAAQUAAAAGY2FsbGVyBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyRGVzYwAAAAEFAAAABmNhbGxlcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAAZjYWxsZXIFAAAABnNvY2lhbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5VXNlclRodW1iAAAAAQUAAAAGY2FsbGVyBQAAAAV0aHVtYgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAABmNhbGxlcgUAAAAOdXNlclJlZ2lzdGVyZWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkBQAAAANuaWwAAAABaQEAAAALZGVsZXRlRW50cnkAAAABAAAABWVudHJ5BAAAAAZjYWxsZXIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5AwkAAAAAAAACBQAAAAZjYWxsZXIFAAAABWNocmlzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAABWVudHJ5BQAAAANuaWwJAAACAAAAAQIAAAACbm8AAAABaQEAAAAKdXBkYXRlVXNlcgAAAAQAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAV0aHVtYgAAAAZzb2NpYWwDCQEAAAABIQAAAAEFAAAAC2RhcHBSdW5uaW5nCQAAAgAAAAEFAAAADm1haW50ZW5hbmNlTVNHBAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAZjYWxsZXIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAljYW5VcGRhdGUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAGY2FsbGVyAwMJAAAAAAAAAgUAAAAJY2FuVXBkYXRlBQAAAA11c2VyU3VzcGVuZGVkBgkAAAAAAAACBQAAAAljYW5VcGRhdGUFAAAAC3VzZXJSZW1vdmVkCQAAAgAAAAECAAAAG0FjY291bnQgc3VzcGVuZGVkLyByZW1vdmVkLgMDCQAAAAAAAAIFAAAACWNhblVwZGF0ZQIAAAAABgkAAAAAAAACBQAAAAljYW5VcGRhdGUFAAAAC3VzZXJBbGxvd2VkCQAAAgAAAAECAAAADlJlZ2lzdGVyIGZpcnN0AwMJAAAAAAAAAgUAAAAEbmFtZQIAAAAABgkAAAAAAAACBQAAAAtkZXNjcmlwdGlvbgIAAAAACQAAAgAAAAECAAAAIk5hbWUgJiBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAALZGVzY3JpcHRpb24AAAAAAAAAAlgJAAACAAAAAQIAAAAdNjAwIENoYXIuIG1heCBmb3IgZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleVVzZXJOYW1lAAAAAQUAAAAGY2FsbGVyBQAAAARuYW1lCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlVc2VyRGVzYwAAAAEFAAAABmNhbGxlcgUAAAALZGVzY3JpcHRpb24JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTb2NpYWwAAAABBQAAAAZjYWxsZXIFAAAABnNvY2lhbAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5VXNlclRodW1iAAAAAQUAAAAGY2FsbGVyBQAAAAV0aHVtYgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAACaWQFAAAAA25pbAAAAAFpAQAAABBjaGFuZ2VVc2VyU3RhdHVzAAAAAgAAAAdhZGRyZXNzAAAABnN0YXR1cwMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cEAAAABmNhbGxlcgkABCUAAAABCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAAAmlkCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAADWN1cnJlbnRTdGF0dXMJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA1rZXlVc2VyU3RhdHVzAAAAAQUAAAAHYWRkcmVzcwQAAAALc3RhdHVzVG9TZXQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAAMdXNlclZlcmlmaWVkBQAAAAx1c2VyVmVyaWZpZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAAOdXNlclJlZ2lzdGVyZWQFAAAADnVzZXJSZWdpc3RlcmVkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAADXVzZXJTdXNwZW5kZWQFAAAADXVzZXJTdXNwZW5kZWQDCQAAAAAAAAIFAAAABnN0YXR1cwUAAAALdXNlclJlbW92ZWQFAAAAC3VzZXJSZW1vdmVkAwkAAAAAAAACBQAAAAZzdGF0dXMFAAAAC3VzZXJBbGxvd2VkBQAAAAt1c2VyQWxsb3dlZAMDCQAA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CQABkAAAAAEIBQAAAAZpbnZva2UAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAATTm8gcGF5bWVudCBhdHRhY2hlZAQAAAAHcGF5bWVudAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAAGaW52b2tlAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAHYXNzZXRJZAMDCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAAAAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAtzaWduQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAmT25seSBTSUdOIHRva2VuIGFjY2VwdGVkIGF0IHRoZSBtb21lbnQEAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAQAAABlnZXRJbnRlZ2VyQnlLZXlGcm9tT3JhY2xlAAAAAQkAASwAAAACAgAAABJjZXJ0aWZpY2F0aW9uX2ZlZV8JAAJYAAAAAQUAAAALc2lnbkFzc2V0SWQDCQEAAAACIT0AAAACBQAAAAZhbW91bnQFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJAAACAAAAAQkAASwAAAACAgAAABlQYXltZW50IGFtb3VudCBzaG91bGQgYmUgCQABpAAAAAEFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVrZXlBcnRUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAUWW91IGFscmVhZHkgYWRkZWQgaXQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWtleUFydE93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIA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dm9rZV9pZAUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGtleUFydEhhc2hCeVR4aWRBZGRyAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAKc2hhMjU2SGFzaAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHQWRkcmVzcwAAAAEJAAJZAAAAAQUAAAALZmVlUmVjZWl2ZXIFAAAABmFtb3VudAUAAAAHYXNzZXRJZAUAAAADbmlsAAAABmludm9rZQEAAAANdXBkYXRlQXJ0d29yawAAAAsAAAAEdHhpZAAAAARuYW1lAAAAC2Rlc2NyaXB0aW9uAAAABHRhZ3MAAAAEdHlwZQAAAAdtYXhtaW50AAAACmNpZERpc3BsYXkAAAAMc2hhMjU2RXhwb3J0AAAACWNpZEV4cG9ydAAAAA1zaGEyNTZMaWNlbmNlAAAACmNpZExpY2VuY2UDCQEAAAABIQAAAAEFAAAAC2RhcHBSdW5uaW5nCQAAAgAAAAEFAAAADm1haW50ZW5hbmNlTVNHBAAAAAh1cGRhdGVJZAkAAlgAAAABCAUAAAAGaW52b2tlAAAADXRyYW5zYWN0aW9uSWQEAAAABmNhbGxlcgkAAlgAAAABCAgFAAAABmludm9rZQAAAAZjYWxsZXIAAAAFYnl0ZXMDCQEAAAABIQAAAAEJAQAAAA52YWxpZGF0ZUFsbENJRAAAAAMFAAAACmNpZERpc3BsYXkFAAAACWNpZEV4cG9ydAUAAAAKY2lkTGljZW5jZQkAAAIAAAABAgAAABBQcm9ibGVtIHdpdGggQ0lEAwkBAAAAASEAAAABCQEAAAAPdmFsaWRhdGVBbGxIYXNoAAAAAgUAAAAMc2hhMjU2RXhwb3J0BQAAAA1zaGEyNTZMaWNlbmNlCQAAAgAAAAECAAAAE1Byb2JsZW0gd2l0aCBIYXNoZXMEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAprZXlBcnROYW1lAAAAAgUAAAAGY2FsbGVyBQAAAAR0eGlkAwkAAAAAAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAPRW50cnkgbm90IGZvdW5kAwkBAAAAASEAAAABCQEA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BWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnREZXNjAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEGtleUFydEV4cG9ydEhhc2gAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABFrZXlBcnRMaWNlbmNlSGFzaAAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnRUeXBlAAAAAgUAAAAMYWRkcmVzc1RvVXNlBQAAAAVhcnRJZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAKa2V5QXJ0VGFncwAAAAIFAAAADGFkZHJlc3NUb1VzZQUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRTaWduSUQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAxrZXlBcnRPblNhbGUAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABWFydElkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAprZXlBcnRGbGFnAAAAAgUAAAAEYWRkcgUAAAAFYXJ0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABFrZXlBcnRPd25lckJ5SGFzaAAAAAEFAAAACnNoYTI1Nkhhc2gJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAE2tleUFydEFydGlkQnlTaWduaWQAAAACBQAAAAxhZGRyZXNzVG9Vc2UFAAAABnNpZ25JRAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAVa2V5QXJ0VHhpZEJ5SGFzaE93bmVyAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAMYWRkcmVzc1RvVXNlBQAAAANuaWwDCQEAAAABIQAAAAEFAAAADWFydHdvcmtNaW50ZWQDCQEAAAABIQAAAAEFAAAAC2RhcHBSdW5uaW5nCQAAAgAAAAEFAAAADm1haW50ZW5hbmNlTVNHBQAAAAxkYXRhVG9EZWxldGUJAAACAAAAAQIAAAAhQXJ0IGFscmVhZHkgbWludGVkLCBjYW5ub3QgZGVsZXRlAAAAAWkBAAAAC3NlbGxBcnR3b3JrAAAABAAAAAVhcnRJZAAAAAVwcmljZQAAAAdtYXhNaW50AAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEFAAAAC2RhcHBSdW5uaW5nCQAAAgAAAAEFAAAADm1haW50ZW5hbmNlTVNHBAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAIc2VsbERhdGUIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBAAAAAlleHBvcnRDSUQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9rZXlBcnRFeHBvcnRDaWQAAAACBQAAAAZj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CQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQEAAAABmNhbGxlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAh0b3RhbE5GVAkBAAAAD2dldEludGVnZXJCeUtleQAAAAECAAAAEHRvdGFsX25mdF9pc3N1ZWQEAAAABnNpZ25JRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADGtleUFydFNpZ25JRAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAAC2FydHdvcmtOYW1lBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMJAQAAAAprZXlBcnROYW1lAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwBQAAAAFzCQAAAgAAAAECAAAAEUFydCBkb2Vzbid0IGV4aXN0BAAAAApkaXNwbGF5Q0lECQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQa2V5QXJ0RGlzcGxheUNpZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACWV4cG9ydENJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2tleUFydEV4cG9ydENpZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACmV4cG9ydEhhc2gJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBrZXlBcnRFeHBvcnRIYXNoAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKbGljZW5jZUNJRAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEGtleUFydExpY2VuY2VDaWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAtsaWNlbmNlSGFzaAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEWtleUFydExpY2VuY2VIYXNoAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAALZGVzY3JpcHRpb24JAAEvAAAAAgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAACmtleUFydERlc2MAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAAAAAAAAAAAyBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAADGtleUFydElzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGFydHdvcmtQcmljZQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAtrZXlBcnRQcmljZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACGlzT25TYWxlCQEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQkBAAAADGtleUFydE9uU2FsZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADHByaWNlQXNzZXRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFWtleUFydEFzc2V0SWRBY2NlcHRlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACnNvdXJjZUhhc2gJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABRrZXlBcnRIYXNoQnlUeGlkQWRkcgAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAADGFydHdvcmtQcmljZQAAAAAAAAAAAAkAAAIAAAABAgAAABBBcnQgbm90IGZvciBzZWxsAwkBAAAAASEAAAABBQAAAAhpc09uU2FsZQkAAAIAAAABAgAAABBBcnQgbm90IGZvciBzYWxlBAAAAAptYXhDYW5TZWxsCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAADWtleUFydE1heE1pbnQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAAHYXNzZXRJZAMDAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAABmAAAAAgkAAMgAAAABCQACWQAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAAAAAAAAAcJAAAAAAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAxwcmljZUFzc2V0SWQHCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAAR1bml0BAAAAANjdXQDCQAAAAAAAAIFAAAADHByaWNlQXNzZXRJZAkAAlgAAAABBQAAAAtzaWduQXNzZXRJZAAAAAAAAAAACAAAAAAAAAAACgQAAAANYW1vdW50Rm9yU2lnbgkAAGsAAAADBQAAAAZhbW91bnQFAAAAA2N1dAAAAAAAAAAAZAQAAAAQYW1vdW50Rm9yQ3JlYXRvcgkAAGUAAAACBQAAAAZhbW91bnQFAAAADWFtb3VudEZvclNpZ24DCQAAAAAAAAIFAAAACmFtb3VudFNvbGQFAAAACm1heENhblNlbGwJAAACAAAAAQIAAAAMQXJ0IHNvbGQgb3V0AwkBAAAAAiE9AAAAAgUAAAAMYXJ0d29ya1ByaWNlBQAAAAZhbW91bnQJAAACAAAAAQIAAAATUGF5bWVudCBkb24ndCBtYXRjaAQAAAANbmV3QW1vdW50U29sZAkAAGQAAAACBQAAAAphbW91bnRTb2xkAAAAAAAAAAABBAAAAAllbnRyeURhdGUIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBAAAAAlpc3N1ZU1ldGEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAfeyJ2ZXJzaW9uIjogMSwKICAgICJjcmVhdG9yIjogIgUAAAAGaXNzdWVyAgAAABIiLCAKICAgICJhcnRJRCI6ICIFAAAABWFydElkAgAAABIiLAogICAgInNpZ25JRCI6ICIFAAAABnNpZ25JRAIAAAAYIiwKICAgICJhcnR3b3JrX25hbWUiOiAiBQAAAAthcnR3b3JrTmFtZQIAAAAYIiwKICAgICJhcnR3b3JrX2Rlc2MiOiAiBQAAAAtkZXNjcmlwdGlvbgIAAAARIiwKICAgICJpc3N1ZSI6ICIJAAGkAAAAAQUAAAANbmV3QW1vdW50U29sZAIAAAABLwkAAaQAAAABBQAAAAptYXhDYW5TZWxsAgAAABciLAogICAgIm1heElzc3VhYmxlIjogIgkAAaQAAAABBQAAAAptYXhDYW5TZWxsAgAAABciLAogICAgInNvdXJjZV9oYXNoIjogIgUAAAAKc291cmNlSGFzaAIAAAAYIiwgCiAgICAiZGlzcGxheV9jaWQiOiAiBQAAAApkaXNwbGF5Q0lEAgAAABciLCAKICAgICJleHBvcnRfY2lkIjogIgUAAAAJZXhwb3J0Q0lEAgAAABgiLCAKICAgICJleHBvcnRfaGFzaCI6ICIFAAAACmV4cG9ydEhhc2gCAAAAFyIsCiAgICAibGljZW5jZV9jaWQiOiAiBQAAAApsaWNlbmNlQ0lEAgAAABkiLCAKICAgICJsaWNlbmNlX2hhc2giOiAiBQAAAAtsaWNlbmNlSGFzaAIAAAACIn0EAAAACGlzc3VlTkZUCQAEQgAAAAUJAAEsAAAAAgIAAAADU0FfCQABpAAAAAEJAABkAAAAAgUAAAAIdG90YWxORlQAAAAAAAAAAAEFAAAACWlzc3VlTWV0YQAAAAAAAAAAAQAAAAAAAAAAAAcEAAAABWlkTkZUCQAEOAAAAAEFAAAACGlzc3VlTkZUBAAAAApzZWxsU3RhdHVzAwkAAAAAAAACBQAAAA1uZXdBbW91bnRTb2xkBQAAAAptYXhDYW5TZWxsBwYJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlBcnRJc3N1ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAA1uZXdBbW91bnRTb2xkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X3NvbGRfCQABpAAAAAEFAAAADW5ld0Ftb3VudFNvbGQCAAAABF9vZl8JAAGkAAAAAQUAAAAKbWF4Q2FuU2VsbAIAAAABXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmlzc3VlcgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAZjYWxsZXICAAAAAV8JAAGkAAAAAQUAAAAJZW50cnlEYXRlAgAAAAFfBQAAAAJpZAIAAAABXwkAAaQAAAABBQAAAAxhcnR3b3JrUHJpY2UCAAAAAV8FAAAADHByaWNlQXNzZXRJZAIAAAABXwkAAlgAAAABBQAAAAVpZE5GVAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQdG90YWxfbmZ0X2lzc3VlZAkAAGQAAAACBQAAAAh0b3RhbE5GVAAAAAAAAAAAAQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAADGtleUFydE9uU2FsZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQFAAAACnNlbGxTdGF0dXMJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgIAAAAObGFzdF9pbnZva2VfaWQFAAAAAmlkCQAETAAAAAIFAAAACGlzc3VlTkZUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAAAdBZGRyZXNzAAAAAQkAAlkAAAABBQAAAAZpc3N1ZXIFAAAAEGFtb3VudEZvckNyZWF0b3IFAAAAB2Fzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB0FkZHJlc3MAAAABCQACWQAAAAEFAAAAC2ZlZVJlY2VpdmVyBQAAAA1hbW91bnRGb3JTaWduBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgAAAAAAAAAAAQUAAAAFaWRORlQFAAAAA25pbAAAAAFpAQAAAApkZWxldGVVc2VyAAAAAQAAAAdhZGRyZXNzBAAAAAZjYWxsZXIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAJpZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIJAARMAAAAAgUAAAAFY2hyaXMJAARMAAAAAgUAAAAEam9lcAUAAAADbmlsBQAAAAZjYWxsZXIJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAC2tleVVzZXJEYXRlAAAAAQUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAALa2V5VXNlckFkZHIAAAABBQAAAAdhZGRyZXNzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAAAtrZXlVc2VyTmFtZQAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAC2tleVVzZXJEZXNjAAAAAQUAAAAHYWRkcmVzcwkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAANa2V5VXNlclNvY2lhbAAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAADGtleVVzZXJUaHVtYgAAAAEFAAAAB2FkZHJlc3MJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADWtleVVzZXJTdGF0dXMAAAABBQAAAAdhZGRyZXNzBQAAAAt1c2VyUmVtb3ZlZAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACAgAAAA5sYXN0X2ludm9rZV9pZAUAAAACaWQFAAAAA25pbAkAAAIAAAABAgAAAAtOb3QgYWxsb3dlZAAAAAA97t/J", "height": 1259119, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5MHwGES8k1nU9wkVxjjmAQp6fPQVwc31a2mKp6osF5P2 Next: FAcNWFZmXQrndKyk2L99tQKvhrQ21e8T676uGE5S5GjG Diff:
OldNewDifferences
5555
5656
5757 func z (w) = {
58+ let x = getInteger(a, w)
59+ if ($isInstanceOf(x, "Int"))
60+ then {
61+ let y = x
62+ y
63+ }
64+ else throw("Integer undefine or 0 in oracle")
65+ }
66+
67+
68+func A (w) = {
5869 let x = getInteger(this, w)
5970 if ($isInstanceOf(x, "Int"))
6071 then {
61- let A = x
62- A
72+ let B = x
73+ B
6374 }
6475 else 0
6576 }
6677
6778
68-func B (w) = {
79+func C (w) = {
6980 let x = getBoolean(this, w)
7081 if ($isInstanceOf(x, "Boolean"))
7182 then {
72- let A = x
73- A
83+ let B = x
84+ B
7485 }
7586 else false
7687 }
7788
7889
79-func C (D,E,F) = {
80- let x = getString(b, ((("data_fc_" + D) + "_") + E))
90+func D (E,F,G) = {
91+ let x = getString(b, ((("data_fc_" + E) + "_") + F))
8192 if ($isInstanceOf(x, "String"))
8293 then {
8394 let y = x
84- if (contains(y, F))
95+ if (contains(y, G))
8596 then true
8697 else false
8798 }
89100 }
90101
91102
92-func G (H) = if (if ((75 > size(H)))
93- then (60 > size(split(H, "/")[0]))
103+func H (I) = if (if ((75 > size(I)))
104+ then (60 > size(split(I, "/")[0]))
94105 else false)
95- then (16 > size(split(H, "/")[1]))
106+ then (16 > size(split(I, "/")[1]))
96107 else false
97108
98109
99-func I (J) = (65 > size(J))
110+func J (K) = (65 > size(K))
100111
101112
102-func K (L) = ("user_" + L)
113+func L (M) = ("user_" + M)
103114
104115
105-func M (L) = ("user_name_" + L)
116+func N (M) = ("user_name_" + M)
106117
107118
108-func N (L) = ("user_desc_" + L)
119+func O (M) = ("user_desc_" + M)
109120
110121
111-func O (L) = ("user_social_" + L)
122+func P (M) = ("user_social_" + M)
112123
113124
114-func P (L) = ("user_thumb_" + L)
125+func Q (M) = ("user_thumb_" + M)
115126
116127
117-func Q (L) = ("user_status_" + L)
128+func R (M) = ("user_status_" + M)
118129
119130
120-func R (L) = ("user_date_" + L)
131+func S (M) = ("user_date_" + M)
121132
122133
123-func S (L,T) = ((("art_date_" + T) + "_") + L)
134+func T (M,U) = ((("art_date_" + U) + "_") + M)
124135
125136
126-func U (L,T) = ((("art_name_" + T) + "_") + L)
137+func V (M,U) = ((("art_name_" + U) + "_") + M)
127138
128139
129-func V (L,T) = ((("art_desc_" + T) + "_") + L)
140+func W (M,U) = ((("art_desc_" + U) + "_") + M)
130141
131142
132-func W (L,T) = ((("art_display_cid_" + T) + "_") + L)
143+func X (M,U) = ((("art_display_cid_" + U) + "_") + M)
133144
134145
135-func X (L,T) = ((("art_export_hash_" + T) + "_") + L)
146+func Y (M,U) = ((("art_export_hash_" + U) + "_") + M)
136147
137148
138-func Y (L,T) = ((("art_export_cid_" + T) + "_") + L)
149+func Z (M,U) = ((("art_export_cid_" + U) + "_") + M)
139150
140151
141-func Z (L,T) = ((("art_maxmint_" + T) + "_") + L)
152+func aa (M,U) = ((("art_maxmint_" + U) + "_") + M)
142153
143154
144-func aa (L,T) = ((("art_signid_" + T) + "_") + L)
155+func ab (M,U) = ((("art_signid_" + U) + "_") + M)
145156
146157
147-func ab (L,T) = ((("art_issued_" + T) + "_") + L)
158+func ac (M,U) = ((("art_issued_" + U) + "_") + M)
148159
149160
150-func ac (L,T) = ((("art_onsale_" + T) + "_") + L)
161+func ad (M,U) = ((("art_onsale_" + U) + "_") + M)
151162
152163
153-func ad (L,T) = ((("art_licence_hash_" + T) + "_") + L)
164+func ae (M,U) = ((("art_licence_hash_" + U) + "_") + M)
154165
155166
156-func ae (L,T) = ((("art_licence_cid_" + T) + "_") + L)
167+func af (M,U) = ((("art_licence_cid_" + U) + "_") + M)
157168
158169
159-func af (L,T) = ((("art_tags_" + T) + "_") + L)
170+func ag (M,U) = ((("art_tags_" + U) + "_") + M)
160171
161172
162-func ag (L,T) = ((("art_type_" + T) + "_") + L)
173+func ah (M,U) = ((("art_type_" + U) + "_") + M)
163174
164175
165-func ah (L,T) = ((("art_price_" + T) + "_") + L)
176+func ai (M,U) = ((("art_price_" + U) + "_") + M)
166177
167178
168-func ai (L,T) = ((("art_assetAccepted_" + T) + "_") + L)
179+func aj (M,U) = ((("art_assetAccepted_" + U) + "_") + M)
169180
170181
171-func aj (L,T) = ((("art_flag_" + T) + "_") + L)
182+func ak (M,U) = ((("art_flag_" + U) + "_") + M)
172183
173184
174-func ak (L,al) = ((("get_hashbytxidaddr_" + al) + "_") + L)
185+func al (M,am) = ((("get_hashbytxidaddr_" + am) + "_") + M)
175186
176187
177-func am (F) = ("get_owner_by_hash_" + F)
188+func an (G) = ("get_owner_by_hash_" + G)
178189
179190
180-func an (L,ao) = ((("get_artidbysignid_" + ao) + "_") + L)
191+func ao (M,ap) = ((("get_artidbysignid_" + ap) + "_") + M)
181192
182193
183-func ap (F,L) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + L)))))
194+func aq (G,M) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((G + M)))))
184195
185196
186-func aq (ar,as,at) = if (if ((ar != ""))
187- then !(G(ar))
197+func ar (as,at,au) = if (if ((as != ""))
198+ then !(H(as))
188199 else false)
189200 then throw("Wrong Display CID")
190- else if (if ((as != ""))
191- then !(G(as))
201+ else if (if ((at != ""))
202+ then !(H(at))
192203 else false)
193204 then throw("Wrong Export CID")
194- else if (if ((at != ""))
195- then !(G(at))
205+ else if (if ((au != ""))
206+ then !(H(au))
196207 else false)
197208 then throw("Wrong Licence CID")
198209 else true
199210
200211
201-func au (av,aw) = if (if ((av != ""))
202- then !(I(av))
212+func av (aw,ax) = if (if ((aw != ""))
213+ then !(J(aw))
203214 else false)
204215 then throw("Export Hash 64 char. max")
205- else if (if ((aw != ""))
206- then !(I(aw))
216+ else if (if ((ax != ""))
217+ then !(J(ax))
207218 else false)
208219 then throw("Licence Hash 64 char. max")
209220 else true
210221
211222
212-func ax (ay,az) = if ((size(ay) == 0))
223+func ay (az,aA) = if ((size(az) == 0))
213224 then throw("Field cannot be is empty")
214- else if ((size(ay) > az))
215- then throw((ay + " is too long"))
225+ else if ((size(az) > aA))
226+ then throw((az + " is too long"))
216227 else true
217228
218229
219-@Callable(A)
220-func registerUser (aA,aB,aC,aD) = if (!(m))
230+@Callable(B)
231+func registerUser (aB,aC,aD,aE) = if (!(m))
221232 then throw(n)
222233 else {
223- let L = toString(addressFromPublicKey(A.callerPublicKey))
224- let aE = v(Q(L))
225- let aF = toBase58String(A.transactionId)
226- let aG = lastBlock.timestamp
227- if (if ((aE == r))
234+ let M = toString(addressFromPublicKey(B.callerPublicKey))
235+ let aF = v(R(M))
236+ let aG = toBase58String(B.transactionId)
237+ let aH = lastBlock.timestamp
238+ if (if ((aF == r))
228239 then true
229- else (aE == s))
240+ else (aF == s))
230241 then throw("Account suspended/ removed.")
231- else if ((aE == p))
242+ else if ((aF == p))
232243 then throw("Already registered")
233- else if (if ((aE == ""))
244+ else if (if ((aF == ""))
234245 then l
235246 else false)
236247 then throw("Can't register, get approved first.")
237- else if (if ((aA == ""))
248+ else if (if ((aB == ""))
238249 then true
239- else (aB == ""))
250+ else (aC == ""))
240251 then throw("Name and description cannot be empty")
241- else if ((size(aB) > 600))
252+ else if ((size(aC) > 600))
242253 then throw("600 Char. max description")
243- else [IntegerEntry(R(L), aG), StringEntry(K(L), ((aF + "_") + toString(lastBlock.timestamp))), StringEntry(M(L), aA), StringEntry(N(L), aB), StringEntry(O(L), aD), StringEntry(P(L), aC), StringEntry(Q(L), p), StringEntry("last_invoke_id", aF)]
254+ else [IntegerEntry(S(M), aH), StringEntry(L(M), ((aG + "_") + toString(lastBlock.timestamp))), StringEntry(N(M), aB), StringEntry(O(M), aC), StringEntry(P(M), aE), StringEntry(Q(M), aD), StringEntry(R(M), p), StringEntry("last_invoke_id", aG)]
244255 }
245256
246257
247258
248-@Callable(A)
249-func deleteEntry (aH) = {
250- let L = toString(addressFromPublicKey(A.callerPublicKey))
251- if ((L == j))
252- then [DeleteEntry(aH)]
259+@Callable(B)
260+func deleteEntry (aI) = {
261+ let M = toString(addressFromPublicKey(B.callerPublicKey))
262+ if ((M == j))
263+ then [DeleteEntry(aI)]
253264 else throw("no")
254265 }
255266
256267
257268
258-@Callable(A)
259-func updateUser (aA,aB,aC,aD) = if (!(m))
269+@Callable(B)
270+func updateUser (aB,aC,aD,aE) = if (!(m))
260271 then throw(n)
261272 else {
262- let aF = toBase58String(A.transactionId)
263- let L = toString(addressFromPublicKey(A.callerPublicKey))
264- let aI = v(Q(L))
265- if (if ((aI == r))
273+ let aG = toBase58String(B.transactionId)
274+ let M = toString(addressFromPublicKey(B.callerPublicKey))
275+ let aJ = v(R(M))
276+ if (if ((aJ == r))
266277 then true
267- else (aI == s))
278+ else (aJ == s))
268279 then throw("Account suspended/ removed.")
269- else if (if ((aI == ""))
280+ else if (if ((aJ == ""))
270281 then true
271- else (aI == o))
282+ else (aJ == o))
272283 then throw("Register first")
273- else if (if ((aA == ""))
284+ else if (if ((aB == ""))
274285 then true
275- else (aB == ""))
286+ else (aC == ""))
276287 then throw("Name & description cannot be empty")
277- else if ((size(aB) > 600))
288+ else if ((size(aC) > 600))
278289 then throw("600 Char. max for description")
279- else [StringEntry(M(L), aA), StringEntry(N(L), aB), StringEntry(O(L), aD), StringEntry(P(L), aC), StringEntry("last_invoke_id", aF)]
290+ else [StringEntry(N(M), aB), StringEntry(O(M), aC), StringEntry(P(M), aE), StringEntry(Q(M), aD), StringEntry("last_invoke_id", aG)]
280291 }
281292
282293
283294
284-@Callable(A)
285-func changeUserStatus (aJ,aK) = if (!(m))
295+@Callable(B)
296+func changeUserStatus (aK,aL) = if (!(m))
286297 then throw(n)
287298 else {
288- let L = toString(addressFromPublicKey(A.callerPublicKey))
289- let aF = toBase58String(A.transactionId)
290- let aL = v(Q(aJ))
291- let aM = if ((aK == q))
299+ let M = toString(addressFromPublicKey(B.callerPublicKey))
300+ let aG = toBase58String(B.transactionId)
301+ let aM = v(R(aK))
302+ let aN = if ((aL == q))
292303 then q
293- else if ((aK == p))
304+ else if ((aL == p))
294305 then p
295- else if ((aK == r))
306+ else if ((aL == r))
296307 then r
297- else if ((aK == s))
308+ else if ((aL == s))
298309 then s
299- else if ((aK == o))
310+ else if ((aL == o))
300311 then o
301- else if (if ((aK == u))
302- then (aL == o)
312+ else if (if ((aL == u))
313+ then (aM == o)
303314 else false)
304315 then ""
305316 else throw("Unknown status")
306- if (if ((aL == o))
307- then (aK == o)
317+ if (if ((aM == o))
318+ then (aL == o)
308319 else false)
309320 then throw("User already allowed")
310- else if (if ((aL == p))
311- then (aK == o)
321+ else if (if ((aM == p))
322+ then (aL == o)
312323 else false)
313324 then throw("User already allowed & registered")
314- else if (if ((aL == q))
315- then (aK == o)
325+ else if (if ((aM == q))
326+ then (aL == o)
316327 else false)
317328 then throw("User already allowed & verified")
318- else if (if ((L == j))
319- then true
320- else (L == k))
321- then [StringEntry(Q(aJ), aM), StringEntry("last_invoke_id", aF)]
322- else throw(((("Not allowed to change user status " + L) + " / ") + j))
329+ else if (containsElement([j, k], M))
330+ then [StringEntry(R(aK), aN), StringEntry("last_invoke_id", aG)]
331+ else throw(((("Not allowed to change user status " + M) + " / ") + j))
323332 }
324333
325334
326335
327-@Callable(A)
328-func creditUser (aJ) = {
329- let L = toString(addressFromPublicKey(A.callerPublicKey))
330- let aF = toBase58String(A.transactionId)
331- if (if ((L == j))
332- then true
333- else (L == k))
334- then [ScriptTransfer(Address(fromBase58String(aJ)), 150000000000, d)]
336+@Callable(B)
337+func creditUser (aK) = {
338+ let M = toString(addressFromPublicKey(B.callerPublicKey))
339+ let aG = toBase58String(B.transactionId)
340+ if (containsElement([j, k], M))
341+ then [ScriptTransfer(Address(fromBase58String(aK)), 150000000000, d)]
335342 else throw("Not allowed")
336343 }
337344
338345
339346
340-@Callable(aN)
341-func addArtwork (F,D,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
347+@Callable(aO)
348+func addArtwork (G,E,aB,aC,aP,aQ,aR,as,aw,at,ax,au) = if (!(m))
342349 then throw(n)
343350 else {
344- let T = toBase58String(aN.transactionId)
345- let L = toBase58String(aN.caller.bytes)
346- if (!(aq(ar, as, at)))
351+ let U = toBase58String(aO.transactionId)
352+ let M = toBase58String(aO.caller.bytes)
353+ if (!(ar(as, at, au)))
347354 then throw("Problem with CID")
348- else if (!(I(F)))
355+ else if (!(J(G)))
349356 then throw("Hash should be 64 characters maximum")
350- else if (!(au(av, aw)))
357+ else if (!(av(aw, ax)))
351358 then throw("Problem with Hashes")
352- else if ((size(aN.payments) == 0))
359+ else if ((size(aO.payments) == 0))
353360 then throw("No payment attached")
354361 else {
355- let aR = value(aN.payments[0])
356- let aS = value(aR.amount)
357- let aT = if (if (isDefined(aR.assetId))
358- then (aR.assetId == d)
362+ let aS = value(aO.payments[0])
363+ let aT = value(aS.amount)
364+ let aU = if (if (isDefined(aS.assetId))
365+ then (aS.assetId == d)
359366 else false)
360- then aR.assetId
367+ then aS.assetId
361368 else throw("Only SIGN token accepted at the moment")
362- let aU = {
363- let x = getInteger(a, ("certification_fee_" + toBase58String(d)))
364- if ($isInstanceOf(x, "Int"))
365- then {
366- let aV = x
367- aV
368- }
369- else throw("Price undefined in oracle")
370- }
371- if ((aS != aU))
372- then throw(("Payment amount should be " + toString(aU)))
369+ let aV = z(("certification_fee_" + toBase58String(d)))
370+ if ((aT != aV))
371+ then throw(("Payment amount should be " + toString(aV)))
373372 else {
374- let aW = v(ap(F, L))
373+ let aW = v(aq(G, M))
375374 if ((aW != ""))
376375 then throw("You already added it")
377376 else {
378- let aX = v(am(F))
377+ let aX = v(an(G))
379378 if ((aX != ""))
380379 then throw("Hash already registered")
381380 else {
382- let aY = C(D, L, F)
381+ let aY = D(E, M, G)
383382 if (!(aY))
384383 then throw("Sign Certificate not found for this address.")
385- else if ((size(ar) == 0))
384+ else if ((size(as) == 0))
386385 then throw("Display CID cannot be empty")
387- else if (!(ax(aA, 100)))
386+ else if (!(ay(aB, 100)))
388387 then throw("100 Char. max name")
389- else if (!(ax(aB, 1000)))
388+ else if (!(ay(aC, 1000)))
390389 then throw("1000 Char. max description")
391- else if ((size(split(aO, ",")) > 5))
390+ else if ((size(split(aP, ",")) > 5))
392391 then throw("5 tags max.")
393392 else {
394393 let aZ = {
395- let x = getString(this, ("user_status_" + L))
394+ let x = getString(this, ("user_status_" + M))
396395 if ($isInstanceOf(x, "String"))
397396 then {
398397 let ba = x
400399 }
401400 else t
402401 }
403- let aG = lastBlock.timestamp
402+ let aH = lastBlock.timestamp
404403 if (if (isDefined(aZ))
405404 then (aZ == t)
406405 else false)
409408 then throw("Account suspended")
410409 else if ((aZ == s))
411410 then throw("Account removed")
412- else if ((aQ > 10))
411+ else if ((aR > 10))
413412 then throw("10 editions max")
414- else if ((size(F) != 64))
413+ else if ((size(G) != 64))
415414 then throw("Hash 64 char. max")
416- else [StringEntry(am(F), L), StringEntry(ap(F, L), T), IntegerEntry(S(L, T), aG), StringEntry(U(L, T), aA), StringEntry(V(L, T), aB), StringEntry(W(L, T), ar), StringEntry(Y(L, T), as), StringEntry(X(L, T), av), StringEntry(ad(L, T), aw), StringEntry(ae(L, T), at), StringEntry(ag(L, T), aP), StringEntry(af(L, T), aO), IntegerEntry(Z(L, T), aQ), StringEntry(aa(L, T), D), IntegerEntry(ab(L, T), 0), BooleanEntry(ac(L, T), false), StringEntry(an(L, D), T), StringEntry("last_invoke_id", T), StringEntry(ak(L, T), F), ScriptTransfer(Address(fromBase58String(c)), aS, aT)]
415+ else [StringEntry(an(G), M), StringEntry(aq(G, M), U), IntegerEntry(T(M, U), aH), StringEntry(V(M, U), aB), StringEntry(W(M, U), aC), StringEntry(X(M, U), as), StringEntry(Z(M, U), at), StringEntry(Y(M, U), aw), StringEntry(ae(M, U), ax), StringEntry(af(M, U), au), StringEntry(ah(M, U), aQ), StringEntry(ag(M, U), aP), IntegerEntry(aa(M, U), aR), StringEntry(ab(M, U), E), IntegerEntry(ac(M, U), 0), BooleanEntry(ad(M, U), false), StringEntry(ao(M, E), U), StringEntry("last_invoke_id", U), StringEntry(al(M, U), G), ScriptTransfer(Address(fromBase58String(c)), aT, aU)]
417416 }
418417 }
419418 }
423422
424423
425424
426-@Callable(aN)
427-func updateArtwork (al,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
425+@Callable(aO)
426+func updateArtwork (am,aB,aC,aP,aQ,aR,as,aw,at,ax,au) = if (!(m))
428427 then throw(n)
429428 else {
430- let bb = toBase58String(aN.transactionId)
431- let L = toBase58String(aN.caller.bytes)
432- if (!(aq(ar, as, at)))
429+ let bb = toBase58String(aO.transactionId)
430+ let M = toBase58String(aO.caller.bytes)
431+ if (!(ar(as, at, au)))
433432 then throw("Problem with CID")
434- else if (!(au(av, aw)))
433+ else if (!(av(aw, ax)))
435434 then throw("Problem with Hashes")
436435 else {
437- let aW = v(U(L, al))
436+ let aW = v(V(M, am))
438437 if ((aW == ""))
439438 then throw("Entry not found")
440- else if (!(ax(aA, 100)))
439+ else if (!(ay(aB, 100)))
441440 then throw("100 Char. max name")
442- else if (!(ax(aB, 1000)))
441+ else if (!(ay(aC, 1000)))
443442 then throw("1000 Char. max description")
444443 else {
445- let bc = v(aj(L, al))
444+ let bc = v(ak(M, am))
446445 if ((bc == "ILLEGAL"))
447446 then throw("Cannot update")
448447 else {
449448 let bd = {
450- let x = getInteger(this, ab(L, al))
449+ let x = getInteger(this, ac(M, am))
451450 if ($isInstanceOf(x, "Int"))
452451 then {
453452 let be = x
457456 }
458457 else false
459458 }
460- if ((size(split(aO, ",")) > 5))
459+ if ((size(split(aP, ",")) > 5))
461460 then throw("5 tags max.")
462461 else {
463462 let aZ = {
464- let x = getString(this, ("user_status_" + L))
463+ let x = getString(this, ("user_status_" + M))
465464 if ($isInstanceOf(x, "String"))
466465 then {
467466 let ba = x
477476 then throw("Account suspended")
478477 else if ((aZ == s))
479478 then throw("Account removed")
480- else if ((aQ > 10))
479+ else if ((aR > 10))
481480 then throw("10 editions max per artwork")
482481 else if (!(bd))
483- then [StringEntry(U(L, al), aA), StringEntry(V(L, al), aB), StringEntry(W(L, al), ar), StringEntry(Y(L, al), as), StringEntry(X(L, al), av), StringEntry(ae(L, al), at), StringEntry(ad(L, al), aw), IntegerEntry(Z(L, al), aQ), StringEntry(af(L, al), aO), StringEntry(ag(L, al), aP), StringEntry("last_invoke_id", bb)]
482+ then [StringEntry(V(M, am), aB), StringEntry(W(M, am), aC), StringEntry(X(M, am), as), StringEntry(Z(M, am), at), StringEntry(Y(M, am), aw), StringEntry(af(M, am), au), StringEntry(ae(M, am), ax), IntegerEntry(aa(M, am), aR), StringEntry(ag(M, am), aP), StringEntry(ah(M, am), aQ), StringEntry("last_invoke_id", bb)]
484483 else throw("Already minted")
485484 }
486485 }
490489
491490
492491
493-@Callable(A)
494-func flagArtwork (T,bf,bc) = {
495- let L = toString(addressFromPublicKey(A.callerPublicKey))
496- let aF = toBase58String(A.transactionId)
497- if (if ((L == j))
498- then true
499- else (L == k))
492+@Callable(B)
493+func flagArtwork (U,bf,bc) = {
494+ let M = toString(addressFromPublicKey(B.callerPublicKey))
495+ let aG = toBase58String(B.transactionId)
496+ if (containsElement([j, k], M))
500497 then if ((bc == "CONSENT"))
501- then [StringEntry(aj(bf, T), bc), StringEntry("last_invoke_id", aF)]
498+ then [StringEntry(ak(bf, U), bc), StringEntry("last_invoke_id", aG)]
502499 else if ((bc == ""))
503- then [StringEntry(aj(bf, T), bc), StringEntry("last_invoke_id", aF)]
500+ then [StringEntry(ak(bf, U), bc), StringEntry("last_invoke_id", aG)]
504501 else if ((bc == "ILLEGAL"))
505- then [StringEntry(aj(bf, T), bc), StringEntry(U(bf, T), "ILLEGAL CONTENT"), StringEntry(V(bf, T), "ILLEGAL CONTENT"), StringEntry(W(bf, T), ""), StringEntry(Y(bf, T), ""), StringEntry(ae(bf, T), ""), StringEntry("last_invoke_id", aF)]
502+ then [StringEntry(ak(bf, U), bc), StringEntry(V(bf, U), "ILLEGAL CONTENT"), StringEntry(W(bf, U), "ILLEGAL CONTENT"), StringEntry(X(bf, U), ""), StringEntry(Z(bf, U), ""), StringEntry(af(bf, U), ""), StringEntry("last_invoke_id", aG)]
506503 else throw(("Unknow status" + bc))
507504 else throw("no")
508505 }
509506
510507
511508
512-@Callable(A)
513-func deleteArtwork (T,bf) = {
514- let L = toString(addressFromPublicKey(A.callerPublicKey))
515- let aF = toBase58String(A.transactionId)
516- let bg = if (if ((L == j))
517- then true
518- else (L == k))
509+@Callable(B)
510+func deleteArtwork (U,bf) = {
511+ let M = toString(addressFromPublicKey(B.callerPublicKey))
512+ let aG = toBase58String(B.transactionId)
513+ let bg = if (containsElement([j, k], M))
519514 then bf
520- else L
515+ else M
521516 let aW = {
522- let x = getString(this, U(bg, T))
517+ let x = getString(this, V(bg, U))
523518 if ($isInstanceOf(x, "String"))
524519 then {
525520 let ba = x
528523 else throw("No art matching")
529524 }
530525 let bd = {
531- let x = getInteger(this, ab(bg, T))
526+ let x = getInteger(this, ac(bg, U))
532527 if ($isInstanceOf(x, "Int"))
533528 then {
534529 let be = x
538533 }
539534 else false
540535 }
541- let bh = z(Z(bg, T))
542- let F = {
543- let x = getString(this, ak(bg, T))
536+ let bh = A(aa(bg, U))
537+ let G = {
538+ let x = getString(this, al(bg, U))
544539 if ($isInstanceOf(x, "String"))
545540 then {
546541 let ba = x
548543 }
549544 else throw("No art hash matching")
550545 }
551- let D = {
552- let x = getString(this, aa(bg, T))
546+ let E = {
547+ let x = getString(this, ab(bg, U))
553548 if ($isInstanceOf(x, "String"))
554549 then {
555550 let ba = x
557552 }
558553 else throw("No SIGN ID matching")
559554 }
560- let bi = [DeleteEntry(S(bg, T)), DeleteEntry(U(bg, T)), DeleteEntry(V(bg, T)), DeleteEntry(W(bg, T)), DeleteEntry(Y(bg, T)), DeleteEntry(X(bg, T)), DeleteEntry(ad(bg, T)), DeleteEntry(ae(bg, T)), DeleteEntry(ag(bg, T)), DeleteEntry(af(bg, T)), DeleteEntry(Z(bg, T)), DeleteEntry(aa(bg, T)), DeleteEntry(ab(bg, T)), DeleteEntry(ac(bg, T)), DeleteEntry(aj(bf, T)), StringEntry("last_invoke_id", aF), DeleteEntry(am(F)), DeleteEntry(an(bg, D)), DeleteEntry(ap(F, bg))]
555+ let bi = [DeleteEntry(T(bg, U)), DeleteEntry(V(bg, U)), DeleteEntry(W(bg, U)), DeleteEntry(X(bg, U)), DeleteEntry(Z(bg, U)), DeleteEntry(Y(bg, U)), DeleteEntry(ae(bg, U)), DeleteEntry(af(bg, U)), DeleteEntry(ah(bg, U)), DeleteEntry(ag(bg, U)), DeleteEntry(aa(bg, U)), DeleteEntry(ab(bg, U)), DeleteEntry(ac(bg, U)), DeleteEntry(ad(bg, U)), DeleteEntry(ak(bf, U)), StringEntry("last_invoke_id", aG), DeleteEntry(an(G)), DeleteEntry(ao(bg, E)), DeleteEntry(aq(G, bg))]
561556 if (!(bd))
562557 then if (!(m))
563558 then throw(n)
567562
568563
569564
570-@Callable(A)
571-func sellArtwork (T,aV,bh,aT) = if (!(m))
565+@Callable(B)
566+func sellArtwork (U,bj,bh,aU) = if (!(m))
572567 then throw(n)
573568 else {
574- let aF = toBase58String(A.transactionId)
575- let L = toBase58String(A.caller.bytes)
576- let bj = lastBlock.timestamp
577- let bk = v(Y(L, T))
578- if ((size(split(bk, "/")[0]) != 59))
569+ let aG = toBase58String(B.transactionId)
570+ let M = toBase58String(B.caller.bytes)
571+ let bk = lastBlock.timestamp
572+ let bl = v(Z(M, U))
573+ if ((size(split(bl, "/")[0]) != 59))
579574 then throw("You cannot sell art with no export file")
580575 else {
581- let bl = v(X(L, T))
582- if ((size(bl) != 64))
576+ let bm = v(Y(M, U))
577+ if ((size(bm) != 64))
583578 then throw("You cannot sell art with no export hash")
584- else if (if (if ((aT != toBase58String(d)))
585- then (aT != toBase58String(f))
579+ else if (if (if ((aU != toBase58String(d)))
580+ then (aU != toBase58String(f))
586581 else false)
587- then (aT != toBase58String(e))
582+ then (aU != toBase58String(e))
588583 else false)
589584 then throw("Only SIGN, USDN or WAVES accepted")
590585 else {
591- let bm = {
592- let x = getString(this, U(L, T))
593- if ($isInstanceOf(x, "String"))
594- then {
595- let ba = x
596- ba
597- }
598- else throw("This art doesn't match")
599- }
600- let aZ = {
601- let x = getString(this, Q(L))
602- if ($isInstanceOf(x, "String"))
603- then {
604- let ba = x
605- ba
606- }
607- else throw("Register this account first")
608- }
609- let bn = z(ab(L, T))
610- let bo = z(Z(L, T))
611- if (if ((bn != 0))
612- then (bn == bo)
586+ let bn = z("waves_min_sell")
587+ let bo = 1000000
588+ let bp = (z(("certification_fee_" + toBase58String(d))) * 2)
589+ let bq = "Minimum sell price:"
590+ if (if ((aU == toBase58String(e)))
591+ then (bo > bj)
613592 else false)
614- then throw("Max edition reached.")
615- else if (if ((bn > 0))
616- then (bo != bh)
593+ then throw((bq + " 1 USDN"))
594+ else if (if ((aU == toBase58String(d)))
595+ then (bp > bj)
617596 else false)
618- then throw("Cannot change maximum issuable anymore")
619- else if ((aZ == r))
620- then throw("Account suspended")
621- else if ((aZ == s))
622- then throw("Account deleted")
623- else {
624- let bp = if ((aV > 0))
625- then true
626- else false
627-[BooleanEntry(ac(L, T), bp), IntegerEntry(ah(L, T), aV), IntegerEntry(Z(L, T), bh), StringEntry(ai(L, T), aT), StringEntry("last_invoke_id", aF)]
597+ then throw((((bq + " ") + toString(bp)) + " SIGN"))
598+ else if (if ((aU == toBase58String(f)))
599+ then (bn > bj)
600+ else false)
601+ then throw((((bq + " ") + toString(bn)) + " WAVES"))
602+ else {
603+ let br = {
604+ let x = getString(this, V(M, U))
605+ if ($isInstanceOf(x, "String"))
606+ then {
607+ let ba = x
608+ ba
609+ }
610+ else throw("This art doesn't match")
628611 }
612+ let aZ = {
613+ let x = getString(this, R(M))
614+ if ($isInstanceOf(x, "String"))
615+ then {
616+ let ba = x
617+ ba
618+ }
619+ else throw("Register this account first")
620+ }
621+ let bs = A(ac(M, U))
622+ let bt = A(aa(M, U))
623+ if (if ((bs != 0))
624+ then (bs == bt)
625+ else false)
626+ then throw("Max edition reached.")
627+ else if (if ((bs > 0))
628+ then (bt != bh)
629+ else false)
630+ then throw("Cannot change maximum issuable anymore")
631+ else if ((aZ == r))
632+ then throw("Account suspended")
633+ else if ((aZ == s))
634+ then throw("Account deleted")
635+ else {
636+ let bu = if ((bj > 0))
637+ then true
638+ else false
639+[BooleanEntry(ad(M, U), bu), IntegerEntry(ai(M, U), bj), IntegerEntry(aa(M, U), bh), StringEntry(aj(M, U), aU), StringEntry("last_invoke_id", aG)]
640+ }
641+ }
629642 }
630643 }
631644 }
632645
633646
634647
635-@Callable(A)
636-func buyArtwork (T,bq) = if (!(m))
648+@Callable(B)
649+func buyArtwork (U,bv) = if (!(m))
637650 then throw(n)
638651 else {
639- let aF = toBase58String(A.transactionId)
640- let L = toBase58String(A.caller.bytes)
641- let br = z("total_nft_issued")
642- let D = v(aa(bq, T))
643- let bm = {
644- let x = getString(this, U(bq, T))
652+ let aG = toBase58String(B.transactionId)
653+ let M = toBase58String(B.caller.bytes)
654+ let bw = A("total_nft_issued")
655+ let E = v(ab(bv, U))
656+ let br = {
657+ let x = getString(this, V(bv, U))
645658 if ($isInstanceOf(x, "String"))
646659 then {
647660 let ba = x
649662 }
650663 else throw("Art doesn't exist")
651664 }
652- let bs = v(W(bq, T))
653- let bk = v(Y(bq, T))
654- let bl = v(X(bq, T))
655- let bt = v(ae(bq, T))
656- let bu = v(ad(bq, T))
657- let aB = take(v(V(bq, T)), 50)
658- let bn = z(ab(bq, T))
659- let bv = z(ah(bq, T))
660- let bw = B(ac(bq, T))
661- let bx = v(ai(bq, T))
662- let by = v(ak(bq, T))
663- if ((bv == 0))
665+ let bx = v(X(bv, U))
666+ let bl = v(Z(bv, U))
667+ let bm = v(Y(bv, U))
668+ let by = v(af(bv, U))
669+ let bz = v(ae(bv, U))
670+ let aC = take(v(W(bv, U)), 50)
671+ let bs = A(ac(bv, U))
672+ let bA = A(ai(bv, U))
673+ let bB = C(ad(bv, U))
674+ let bC = v(aj(bv, U))
675+ let bD = v(al(bv, U))
676+ if ((bA == 0))
664677 then throw("Art not for sell")
665- else if (!(bw))
678+ else if (!(bB))
666679 then throw("Art not for sale")
667680 else {
668- let bo = z(Z(bq, T))
669- let aR = value(A.payments[0])
670- let aS = value(aR.amount)
671- let aT = if (if (if (isDefined(aR.assetId))
672- then (size(fromBase58String(bx)) > 0)
681+ let bt = A(aa(bv, U))
682+ let aS = value(B.payments[0])
683+ let aT = value(aS.amount)
684+ let aU = if (if (if (isDefined(aS.assetId))
685+ then (size(fromBase58String(bC)) > 0)
673686 else false)
674- then (aR.assetId == fromBase58String(bx))
687+ then (aS.assetId == fromBase58String(bC))
675688 else false)
676- then aR.assetId
689+ then aS.assetId
677690 else unit
678- let bz = if ((bx == toBase58String(d)))
691+ let bE = if ((bC == toBase58String(d)))
679692 then 8
680693 else 10
681- let bA = fraction(aS, bz, 100)
682- let bB = (aS - bA)
683- if ((bn == bo))
694+ let bF = fraction(aT, bE, 100)
695+ let bG = (aT - bF)
696+ if ((bs == bt))
684697 then throw("Art sold out")
685- else if ((bv != aS))
698+ else if ((bA != aT))
686699 then throw("Payment don't match")
687700 else {
688- let bC = (bn + 1)
689- let bD = lastBlock.timestamp
690- let bE = (((((((((((((((((((((((((((("{\"version\": 1,
691- \"creator\": \"" + bq) + "\",
692- \"artID\": \"") + T) + "\",
693- \"signID\": \"") + D) + "\",
694- \"artwork_name\": \"") + bm) + "\",
695- \"artwork_desc\": \"") + aB) + "\",
696- \"issue\": \"") + toString(bC)) + "/") + toString(bo)) + "\",
697- \"maxIssuable\": \"") + toString(bo)) + "\",
698- \"source_hash\": \"") + by) + "\",
699- \"display_cid\": \"") + bs) + "\",
700- \"export_cid\": \"") + bk) + "\",
701- \"export_hash\": \"") + bl) + "\",
702- \"licence_cid\": \"") + bt) + "\",
703- \"licence_hash\": \"") + bu) + "\"}")
704- let bF = Issue(("SA_" + toString((br + 1))), bE, 1, 0, false)
705- let bG = calculateAssetId(bF)
706- let bp = if ((bC == bo))
701+ let bH = (bs + 1)
702+ let bI = lastBlock.timestamp
703+ let bJ = (((((((((((((((((((((((((((("{\"version\": 1,
704+ \"creator\": \"" + bv) + "\",
705+ \"artID\": \"") + U) + "\",
706+ \"signID\": \"") + E) + "\",
707+ \"artwork_name\": \"") + br) + "\",
708+ \"artwork_desc\": \"") + aC) + "\",
709+ \"issue\": \"") + toString(bH)) + "/") + toString(bt)) + "\",
710+ \"maxIssuable\": \"") + toString(bt)) + "\",
711+ \"source_hash\": \"") + bD) + "\",
712+ \"display_cid\": \"") + bx) + "\",
713+ \"export_cid\": \"") + bl) + "\",
714+ \"export_hash\": \"") + bm) + "\",
715+ \"licence_cid\": \"") + by) + "\",
716+ \"licence_hash\": \"") + bz) + "\"}")
717+ let bK = Issue(("SA_" + toString((bw + 1))), bJ, 1, 0, false)
718+ let bL = calculateAssetId(bK)
719+ let bu = if ((bH == bt))
707720 then false
708721 else true
709-[IntegerEntry(ab(bq, T), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + T) + "_") + bq), ((((((((((L + "_") + toString(bD)) + "_") + aF) + "_") + toString(bv)) + "_") + bx) + "_") + toBase58String(bG))), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ac(bq, T), bp), StringEntry("last_invoke_id", aF), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aT), ScriptTransfer(Address(fromBase58String(c)), bA, aT), ScriptTransfer(A.caller, 1, bG)]
722+[IntegerEntry(ac(bv, U), bH), StringEntry(((((((("art_sold_" + toString(bH)) + "_of_") + toString(bt)) + "_") + U) + "_") + bv), ((((((((((M + "_") + toString(bI)) + "_") + aG) + "_") + toString(bA)) + "_") + bC) + "_") + toBase58String(bL))), IntegerEntry("total_nft_issued", (bw + 1)), BooleanEntry(ad(bv, U), bu), StringEntry("last_invoke_id", aG), bK, ScriptTransfer(Address(fromBase58String(bv)), bG, aU), ScriptTransfer(Address(fromBase58String(c)), bF, aU), ScriptTransfer(B.caller, 1, bL)]
710723 }
711724 }
712725 }
713726
714727
715728
716-@Callable(A)
717-func deleteUser (aJ) = {
718- let L = toString(addressFromPublicKey(A.callerPublicKey))
719- let aF = toBase58String(A.transactionId)
720- if (if ((L == j))
721- then true
722- else (L == k))
723- then [DeleteEntry(R(aJ)), DeleteEntry(K(aJ)), DeleteEntry(M(aJ)), DeleteEntry(N(aJ)), DeleteEntry(O(aJ)), DeleteEntry(P(aJ)), StringEntry(Q(aJ), s), StringEntry("last_invoke_id", aF)]
729+@Callable(B)
730+func deleteUser (aK) = {
731+ let M = toString(addressFromPublicKey(B.callerPublicKey))
732+ let aG = toBase58String(B.transactionId)
733+ if (containsElement([j, k], M))
734+ then [DeleteEntry(S(aK)), DeleteEntry(L(aK)), DeleteEntry(N(aK)), DeleteEntry(O(aK)), DeleteEntry(P(aK)), DeleteEntry(Q(aK)), StringEntry(R(aK), s), StringEntry("last_invoke_id", aG)]
724735 else throw("Not allowed")
725736 }
726737
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
55
66 let b = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
77
88 let c = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
99
1010 let d = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
1111
1212 let e = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
1313
1414 let f = base58''
1515
1616 let g = 8
1717
1818 let h = 10
1919
2020 let i = 10
2121
2222 let j = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
2323
2424 let k = "3Mzm4VLwsN9uZwbTMzPj3XuxV6kEfAR8UDN"
2525
2626 let l = true
2727
2828 let m = true
2929
3030 let n = "SIGN Art is under maintenance"
3131
3232 let o = "ALLOWED"
3333
3434 let p = "REGISTERED"
3535
3636 let q = "VERIFIED"
3737
3838 let r = "SUSPENDED"
3939
4040 let s = "REMOVED"
4141
4242 let t = "UNREGISTERED"
4343
4444 let u = "RESET"
4545
4646 func v (w) = {
4747 let x = getString(this, w)
4848 if ($isInstanceOf(x, "String"))
4949 then {
5050 let y = x
5151 y
5252 }
5353 else ""
5454 }
5555
5656
5757 func z (w) = {
58+ let x = getInteger(a, w)
59+ if ($isInstanceOf(x, "Int"))
60+ then {
61+ let y = x
62+ y
63+ }
64+ else throw("Integer undefine or 0 in oracle")
65+ }
66+
67+
68+func A (w) = {
5869 let x = getInteger(this, w)
5970 if ($isInstanceOf(x, "Int"))
6071 then {
61- let A = x
62- A
72+ let B = x
73+ B
6374 }
6475 else 0
6576 }
6677
6778
68-func B (w) = {
79+func C (w) = {
6980 let x = getBoolean(this, w)
7081 if ($isInstanceOf(x, "Boolean"))
7182 then {
72- let A = x
73- A
83+ let B = x
84+ B
7485 }
7586 else false
7687 }
7788
7889
79-func C (D,E,F) = {
80- let x = getString(b, ((("data_fc_" + D) + "_") + E))
90+func D (E,F,G) = {
91+ let x = getString(b, ((("data_fc_" + E) + "_") + F))
8192 if ($isInstanceOf(x, "String"))
8293 then {
8394 let y = x
84- if (contains(y, F))
95+ if (contains(y, G))
8596 then true
8697 else false
8798 }
8899 else false
89100 }
90101
91102
92-func G (H) = if (if ((75 > size(H)))
93- then (60 > size(split(H, "/")[0]))
103+func H (I) = if (if ((75 > size(I)))
104+ then (60 > size(split(I, "/")[0]))
94105 else false)
95- then (16 > size(split(H, "/")[1]))
106+ then (16 > size(split(I, "/")[1]))
96107 else false
97108
98109
99-func I (J) = (65 > size(J))
110+func J (K) = (65 > size(K))
100111
101112
102-func K (L) = ("user_" + L)
113+func L (M) = ("user_" + M)
103114
104115
105-func M (L) = ("user_name_" + L)
116+func N (M) = ("user_name_" + M)
106117
107118
108-func N (L) = ("user_desc_" + L)
119+func O (M) = ("user_desc_" + M)
109120
110121
111-func O (L) = ("user_social_" + L)
122+func P (M) = ("user_social_" + M)
112123
113124
114-func P (L) = ("user_thumb_" + L)
125+func Q (M) = ("user_thumb_" + M)
115126
116127
117-func Q (L) = ("user_status_" + L)
128+func R (M) = ("user_status_" + M)
118129
119130
120-func R (L) = ("user_date_" + L)
131+func S (M) = ("user_date_" + M)
121132
122133
123-func S (L,T) = ((("art_date_" + T) + "_") + L)
134+func T (M,U) = ((("art_date_" + U) + "_") + M)
124135
125136
126-func U (L,T) = ((("art_name_" + T) + "_") + L)
137+func V (M,U) = ((("art_name_" + U) + "_") + M)
127138
128139
129-func V (L,T) = ((("art_desc_" + T) + "_") + L)
140+func W (M,U) = ((("art_desc_" + U) + "_") + M)
130141
131142
132-func W (L,T) = ((("art_display_cid_" + T) + "_") + L)
143+func X (M,U) = ((("art_display_cid_" + U) + "_") + M)
133144
134145
135-func X (L,T) = ((("art_export_hash_" + T) + "_") + L)
146+func Y (M,U) = ((("art_export_hash_" + U) + "_") + M)
136147
137148
138-func Y (L,T) = ((("art_export_cid_" + T) + "_") + L)
149+func Z (M,U) = ((("art_export_cid_" + U) + "_") + M)
139150
140151
141-func Z (L,T) = ((("art_maxmint_" + T) + "_") + L)
152+func aa (M,U) = ((("art_maxmint_" + U) + "_") + M)
142153
143154
144-func aa (L,T) = ((("art_signid_" + T) + "_") + L)
155+func ab (M,U) = ((("art_signid_" + U) + "_") + M)
145156
146157
147-func ab (L,T) = ((("art_issued_" + T) + "_") + L)
158+func ac (M,U) = ((("art_issued_" + U) + "_") + M)
148159
149160
150-func ac (L,T) = ((("art_onsale_" + T) + "_") + L)
161+func ad (M,U) = ((("art_onsale_" + U) + "_") + M)
151162
152163
153-func ad (L,T) = ((("art_licence_hash_" + T) + "_") + L)
164+func ae (M,U) = ((("art_licence_hash_" + U) + "_") + M)
154165
155166
156-func ae (L,T) = ((("art_licence_cid_" + T) + "_") + L)
167+func af (M,U) = ((("art_licence_cid_" + U) + "_") + M)
157168
158169
159-func af (L,T) = ((("art_tags_" + T) + "_") + L)
170+func ag (M,U) = ((("art_tags_" + U) + "_") + M)
160171
161172
162-func ag (L,T) = ((("art_type_" + T) + "_") + L)
173+func ah (M,U) = ((("art_type_" + U) + "_") + M)
163174
164175
165-func ah (L,T) = ((("art_price_" + T) + "_") + L)
176+func ai (M,U) = ((("art_price_" + U) + "_") + M)
166177
167178
168-func ai (L,T) = ((("art_assetAccepted_" + T) + "_") + L)
179+func aj (M,U) = ((("art_assetAccepted_" + U) + "_") + M)
169180
170181
171-func aj (L,T) = ((("art_flag_" + T) + "_") + L)
182+func ak (M,U) = ((("art_flag_" + U) + "_") + M)
172183
173184
174-func ak (L,al) = ((("get_hashbytxidaddr_" + al) + "_") + L)
185+func al (M,am) = ((("get_hashbytxidaddr_" + am) + "_") + M)
175186
176187
177-func am (F) = ("get_owner_by_hash_" + F)
188+func an (G) = ("get_owner_by_hash_" + G)
178189
179190
180-func an (L,ao) = ((("get_artidbysignid_" + ao) + "_") + L)
191+func ao (M,ap) = ((("get_artidbysignid_" + ap) + "_") + M)
181192
182193
183-func ap (F,L) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((F + L)))))
194+func aq (G,M) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((G + M)))))
184195
185196
186-func aq (ar,as,at) = if (if ((ar != ""))
187- then !(G(ar))
197+func ar (as,at,au) = if (if ((as != ""))
198+ then !(H(as))
188199 else false)
189200 then throw("Wrong Display CID")
190- else if (if ((as != ""))
191- then !(G(as))
201+ else if (if ((at != ""))
202+ then !(H(at))
192203 else false)
193204 then throw("Wrong Export CID")
194- else if (if ((at != ""))
195- then !(G(at))
205+ else if (if ((au != ""))
206+ then !(H(au))
196207 else false)
197208 then throw("Wrong Licence CID")
198209 else true
199210
200211
201-func au (av,aw) = if (if ((av != ""))
202- then !(I(av))
212+func av (aw,ax) = if (if ((aw != ""))
213+ then !(J(aw))
203214 else false)
204215 then throw("Export Hash 64 char. max")
205- else if (if ((aw != ""))
206- then !(I(aw))
216+ else if (if ((ax != ""))
217+ then !(J(ax))
207218 else false)
208219 then throw("Licence Hash 64 char. max")
209220 else true
210221
211222
212-func ax (ay,az) = if ((size(ay) == 0))
223+func ay (az,aA) = if ((size(az) == 0))
213224 then throw("Field cannot be is empty")
214- else if ((size(ay) > az))
215- then throw((ay + " is too long"))
225+ else if ((size(az) > aA))
226+ then throw((az + " is too long"))
216227 else true
217228
218229
219-@Callable(A)
220-func registerUser (aA,aB,aC,aD) = if (!(m))
230+@Callable(B)
231+func registerUser (aB,aC,aD,aE) = if (!(m))
221232 then throw(n)
222233 else {
223- let L = toString(addressFromPublicKey(A.callerPublicKey))
224- let aE = v(Q(L))
225- let aF = toBase58String(A.transactionId)
226- let aG = lastBlock.timestamp
227- if (if ((aE == r))
234+ let M = toString(addressFromPublicKey(B.callerPublicKey))
235+ let aF = v(R(M))
236+ let aG = toBase58String(B.transactionId)
237+ let aH = lastBlock.timestamp
238+ if (if ((aF == r))
228239 then true
229- else (aE == s))
240+ else (aF == s))
230241 then throw("Account suspended/ removed.")
231- else if ((aE == p))
242+ else if ((aF == p))
232243 then throw("Already registered")
233- else if (if ((aE == ""))
244+ else if (if ((aF == ""))
234245 then l
235246 else false)
236247 then throw("Can't register, get approved first.")
237- else if (if ((aA == ""))
248+ else if (if ((aB == ""))
238249 then true
239- else (aB == ""))
250+ else (aC == ""))
240251 then throw("Name and description cannot be empty")
241- else if ((size(aB) > 600))
252+ else if ((size(aC) > 600))
242253 then throw("600 Char. max description")
243- else [IntegerEntry(R(L), aG), StringEntry(K(L), ((aF + "_") + toString(lastBlock.timestamp))), StringEntry(M(L), aA), StringEntry(N(L), aB), StringEntry(O(L), aD), StringEntry(P(L), aC), StringEntry(Q(L), p), StringEntry("last_invoke_id", aF)]
254+ else [IntegerEntry(S(M), aH), StringEntry(L(M), ((aG + "_") + toString(lastBlock.timestamp))), StringEntry(N(M), aB), StringEntry(O(M), aC), StringEntry(P(M), aE), StringEntry(Q(M), aD), StringEntry(R(M), p), StringEntry("last_invoke_id", aG)]
244255 }
245256
246257
247258
248-@Callable(A)
249-func deleteEntry (aH) = {
250- let L = toString(addressFromPublicKey(A.callerPublicKey))
251- if ((L == j))
252- then [DeleteEntry(aH)]
259+@Callable(B)
260+func deleteEntry (aI) = {
261+ let M = toString(addressFromPublicKey(B.callerPublicKey))
262+ if ((M == j))
263+ then [DeleteEntry(aI)]
253264 else throw("no")
254265 }
255266
256267
257268
258-@Callable(A)
259-func updateUser (aA,aB,aC,aD) = if (!(m))
269+@Callable(B)
270+func updateUser (aB,aC,aD,aE) = if (!(m))
260271 then throw(n)
261272 else {
262- let aF = toBase58String(A.transactionId)
263- let L = toString(addressFromPublicKey(A.callerPublicKey))
264- let aI = v(Q(L))
265- if (if ((aI == r))
273+ let aG = toBase58String(B.transactionId)
274+ let M = toString(addressFromPublicKey(B.callerPublicKey))
275+ let aJ = v(R(M))
276+ if (if ((aJ == r))
266277 then true
267- else (aI == s))
278+ else (aJ == s))
268279 then throw("Account suspended/ removed.")
269- else if (if ((aI == ""))
280+ else if (if ((aJ == ""))
270281 then true
271- else (aI == o))
282+ else (aJ == o))
272283 then throw("Register first")
273- else if (if ((aA == ""))
284+ else if (if ((aB == ""))
274285 then true
275- else (aB == ""))
286+ else (aC == ""))
276287 then throw("Name & description cannot be empty")
277- else if ((size(aB) > 600))
288+ else if ((size(aC) > 600))
278289 then throw("600 Char. max for description")
279- else [StringEntry(M(L), aA), StringEntry(N(L), aB), StringEntry(O(L), aD), StringEntry(P(L), aC), StringEntry("last_invoke_id", aF)]
290+ else [StringEntry(N(M), aB), StringEntry(O(M), aC), StringEntry(P(M), aE), StringEntry(Q(M), aD), StringEntry("last_invoke_id", aG)]
280291 }
281292
282293
283294
284-@Callable(A)
285-func changeUserStatus (aJ,aK) = if (!(m))
295+@Callable(B)
296+func changeUserStatus (aK,aL) = if (!(m))
286297 then throw(n)
287298 else {
288- let L = toString(addressFromPublicKey(A.callerPublicKey))
289- let aF = toBase58String(A.transactionId)
290- let aL = v(Q(aJ))
291- let aM = if ((aK == q))
299+ let M = toString(addressFromPublicKey(B.callerPublicKey))
300+ let aG = toBase58String(B.transactionId)
301+ let aM = v(R(aK))
302+ let aN = if ((aL == q))
292303 then q
293- else if ((aK == p))
304+ else if ((aL == p))
294305 then p
295- else if ((aK == r))
306+ else if ((aL == r))
296307 then r
297- else if ((aK == s))
308+ else if ((aL == s))
298309 then s
299- else if ((aK == o))
310+ else if ((aL == o))
300311 then o
301- else if (if ((aK == u))
302- then (aL == o)
312+ else if (if ((aL == u))
313+ then (aM == o)
303314 else false)
304315 then ""
305316 else throw("Unknown status")
306- if (if ((aL == o))
307- then (aK == o)
317+ if (if ((aM == o))
318+ then (aL == o)
308319 else false)
309320 then throw("User already allowed")
310- else if (if ((aL == p))
311- then (aK == o)
321+ else if (if ((aM == p))
322+ then (aL == o)
312323 else false)
313324 then throw("User already allowed & registered")
314- else if (if ((aL == q))
315- then (aK == o)
325+ else if (if ((aM == q))
326+ then (aL == o)
316327 else false)
317328 then throw("User already allowed & verified")
318- else if (if ((L == j))
319- then true
320- else (L == k))
321- then [StringEntry(Q(aJ), aM), StringEntry("last_invoke_id", aF)]
322- else throw(((("Not allowed to change user status " + L) + " / ") + j))
329+ else if (containsElement([j, k], M))
330+ then [StringEntry(R(aK), aN), StringEntry("last_invoke_id", aG)]
331+ else throw(((("Not allowed to change user status " + M) + " / ") + j))
323332 }
324333
325334
326335
327-@Callable(A)
328-func creditUser (aJ) = {
329- let L = toString(addressFromPublicKey(A.callerPublicKey))
330- let aF = toBase58String(A.transactionId)
331- if (if ((L == j))
332- then true
333- else (L == k))
334- then [ScriptTransfer(Address(fromBase58String(aJ)), 150000000000, d)]
336+@Callable(B)
337+func creditUser (aK) = {
338+ let M = toString(addressFromPublicKey(B.callerPublicKey))
339+ let aG = toBase58String(B.transactionId)
340+ if (containsElement([j, k], M))
341+ then [ScriptTransfer(Address(fromBase58String(aK)), 150000000000, d)]
335342 else throw("Not allowed")
336343 }
337344
338345
339346
340-@Callable(aN)
341-func addArtwork (F,D,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
347+@Callable(aO)
348+func addArtwork (G,E,aB,aC,aP,aQ,aR,as,aw,at,ax,au) = if (!(m))
342349 then throw(n)
343350 else {
344- let T = toBase58String(aN.transactionId)
345- let L = toBase58String(aN.caller.bytes)
346- if (!(aq(ar, as, at)))
351+ let U = toBase58String(aO.transactionId)
352+ let M = toBase58String(aO.caller.bytes)
353+ if (!(ar(as, at, au)))
347354 then throw("Problem with CID")
348- else if (!(I(F)))
355+ else if (!(J(G)))
349356 then throw("Hash should be 64 characters maximum")
350- else if (!(au(av, aw)))
357+ else if (!(av(aw, ax)))
351358 then throw("Problem with Hashes")
352- else if ((size(aN.payments) == 0))
359+ else if ((size(aO.payments) == 0))
353360 then throw("No payment attached")
354361 else {
355- let aR = value(aN.payments[0])
356- let aS = value(aR.amount)
357- let aT = if (if (isDefined(aR.assetId))
358- then (aR.assetId == d)
362+ let aS = value(aO.payments[0])
363+ let aT = value(aS.amount)
364+ let aU = if (if (isDefined(aS.assetId))
365+ then (aS.assetId == d)
359366 else false)
360- then aR.assetId
367+ then aS.assetId
361368 else throw("Only SIGN token accepted at the moment")
362- let aU = {
363- let x = getInteger(a, ("certification_fee_" + toBase58String(d)))
364- if ($isInstanceOf(x, "Int"))
365- then {
366- let aV = x
367- aV
368- }
369- else throw("Price undefined in oracle")
370- }
371- if ((aS != aU))
372- then throw(("Payment amount should be " + toString(aU)))
369+ let aV = z(("certification_fee_" + toBase58String(d)))
370+ if ((aT != aV))
371+ then throw(("Payment amount should be " + toString(aV)))
373372 else {
374- let aW = v(ap(F, L))
373+ let aW = v(aq(G, M))
375374 if ((aW != ""))
376375 then throw("You already added it")
377376 else {
378- let aX = v(am(F))
377+ let aX = v(an(G))
379378 if ((aX != ""))
380379 then throw("Hash already registered")
381380 else {
382- let aY = C(D, L, F)
381+ let aY = D(E, M, G)
383382 if (!(aY))
384383 then throw("Sign Certificate not found for this address.")
385- else if ((size(ar) == 0))
384+ else if ((size(as) == 0))
386385 then throw("Display CID cannot be empty")
387- else if (!(ax(aA, 100)))
386+ else if (!(ay(aB, 100)))
388387 then throw("100 Char. max name")
389- else if (!(ax(aB, 1000)))
388+ else if (!(ay(aC, 1000)))
390389 then throw("1000 Char. max description")
391- else if ((size(split(aO, ",")) > 5))
390+ else if ((size(split(aP, ",")) > 5))
392391 then throw("5 tags max.")
393392 else {
394393 let aZ = {
395- let x = getString(this, ("user_status_" + L))
394+ let x = getString(this, ("user_status_" + M))
396395 if ($isInstanceOf(x, "String"))
397396 then {
398397 let ba = x
399398 ba
400399 }
401400 else t
402401 }
403- let aG = lastBlock.timestamp
402+ let aH = lastBlock.timestamp
404403 if (if (isDefined(aZ))
405404 then (aZ == t)
406405 else false)
407406 then throw("Register this account first with \"User infos\" tab")
408407 else if ((aZ == r))
409408 then throw("Account suspended")
410409 else if ((aZ == s))
411410 then throw("Account removed")
412- else if ((aQ > 10))
411+ else if ((aR > 10))
413412 then throw("10 editions max")
414- else if ((size(F) != 64))
413+ else if ((size(G) != 64))
415414 then throw("Hash 64 char. max")
416- else [StringEntry(am(F), L), StringEntry(ap(F, L), T), IntegerEntry(S(L, T), aG), StringEntry(U(L, T), aA), StringEntry(V(L, T), aB), StringEntry(W(L, T), ar), StringEntry(Y(L, T), as), StringEntry(X(L, T), av), StringEntry(ad(L, T), aw), StringEntry(ae(L, T), at), StringEntry(ag(L, T), aP), StringEntry(af(L, T), aO), IntegerEntry(Z(L, T), aQ), StringEntry(aa(L, T), D), IntegerEntry(ab(L, T), 0), BooleanEntry(ac(L, T), false), StringEntry(an(L, D), T), StringEntry("last_invoke_id", T), StringEntry(ak(L, T), F), ScriptTransfer(Address(fromBase58String(c)), aS, aT)]
415+ else [StringEntry(an(G), M), StringEntry(aq(G, M), U), IntegerEntry(T(M, U), aH), StringEntry(V(M, U), aB), StringEntry(W(M, U), aC), StringEntry(X(M, U), as), StringEntry(Z(M, U), at), StringEntry(Y(M, U), aw), StringEntry(ae(M, U), ax), StringEntry(af(M, U), au), StringEntry(ah(M, U), aQ), StringEntry(ag(M, U), aP), IntegerEntry(aa(M, U), aR), StringEntry(ab(M, U), E), IntegerEntry(ac(M, U), 0), BooleanEntry(ad(M, U), false), StringEntry(ao(M, E), U), StringEntry("last_invoke_id", U), StringEntry(al(M, U), G), ScriptTransfer(Address(fromBase58String(c)), aT, aU)]
417416 }
418417 }
419418 }
420419 }
421420 }
422421 }
423422
424423
425424
426-@Callable(aN)
427-func updateArtwork (al,aA,aB,aO,aP,aQ,ar,av,as,aw,at) = if (!(m))
425+@Callable(aO)
426+func updateArtwork (am,aB,aC,aP,aQ,aR,as,aw,at,ax,au) = if (!(m))
428427 then throw(n)
429428 else {
430- let bb = toBase58String(aN.transactionId)
431- let L = toBase58String(aN.caller.bytes)
432- if (!(aq(ar, as, at)))
429+ let bb = toBase58String(aO.transactionId)
430+ let M = toBase58String(aO.caller.bytes)
431+ if (!(ar(as, at, au)))
433432 then throw("Problem with CID")
434- else if (!(au(av, aw)))
433+ else if (!(av(aw, ax)))
435434 then throw("Problem with Hashes")
436435 else {
437- let aW = v(U(L, al))
436+ let aW = v(V(M, am))
438437 if ((aW == ""))
439438 then throw("Entry not found")
440- else if (!(ax(aA, 100)))
439+ else if (!(ay(aB, 100)))
441440 then throw("100 Char. max name")
442- else if (!(ax(aB, 1000)))
441+ else if (!(ay(aC, 1000)))
443442 then throw("1000 Char. max description")
444443 else {
445- let bc = v(aj(L, al))
444+ let bc = v(ak(M, am))
446445 if ((bc == "ILLEGAL"))
447446 then throw("Cannot update")
448447 else {
449448 let bd = {
450- let x = getInteger(this, ab(L, al))
449+ let x = getInteger(this, ac(M, am))
451450 if ($isInstanceOf(x, "Int"))
452451 then {
453452 let be = x
454453 if ((be == 0))
455454 then false
456455 else true
457456 }
458457 else false
459458 }
460- if ((size(split(aO, ",")) > 5))
459+ if ((size(split(aP, ",")) > 5))
461460 then throw("5 tags max.")
462461 else {
463462 let aZ = {
464- let x = getString(this, ("user_status_" + L))
463+ let x = getString(this, ("user_status_" + M))
465464 if ($isInstanceOf(x, "String"))
466465 then {
467466 let ba = x
468467 ba
469468 }
470469 else t
471470 }
472471 if (if (isDefined(aZ))
473472 then (aZ == t)
474473 else false)
475474 then throw("Register first with \"User infos\"")
476475 else if ((aZ == r))
477476 then throw("Account suspended")
478477 else if ((aZ == s))
479478 then throw("Account removed")
480- else if ((aQ > 10))
479+ else if ((aR > 10))
481480 then throw("10 editions max per artwork")
482481 else if (!(bd))
483- then [StringEntry(U(L, al), aA), StringEntry(V(L, al), aB), StringEntry(W(L, al), ar), StringEntry(Y(L, al), as), StringEntry(X(L, al), av), StringEntry(ae(L, al), at), StringEntry(ad(L, al), aw), IntegerEntry(Z(L, al), aQ), StringEntry(af(L, al), aO), StringEntry(ag(L, al), aP), StringEntry("last_invoke_id", bb)]
482+ then [StringEntry(V(M, am), aB), StringEntry(W(M, am), aC), StringEntry(X(M, am), as), StringEntry(Z(M, am), at), StringEntry(Y(M, am), aw), StringEntry(af(M, am), au), StringEntry(ae(M, am), ax), IntegerEntry(aa(M, am), aR), StringEntry(ag(M, am), aP), StringEntry(ah(M, am), aQ), StringEntry("last_invoke_id", bb)]
484483 else throw("Already minted")
485484 }
486485 }
487486 }
488487 }
489488 }
490489
491490
492491
493-@Callable(A)
494-func flagArtwork (T,bf,bc) = {
495- let L = toString(addressFromPublicKey(A.callerPublicKey))
496- let aF = toBase58String(A.transactionId)
497- if (if ((L == j))
498- then true
499- else (L == k))
492+@Callable(B)
493+func flagArtwork (U,bf,bc) = {
494+ let M = toString(addressFromPublicKey(B.callerPublicKey))
495+ let aG = toBase58String(B.transactionId)
496+ if (containsElement([j, k], M))
500497 then if ((bc == "CONSENT"))
501- then [StringEntry(aj(bf, T), bc), StringEntry("last_invoke_id", aF)]
498+ then [StringEntry(ak(bf, U), bc), StringEntry("last_invoke_id", aG)]
502499 else if ((bc == ""))
503- then [StringEntry(aj(bf, T), bc), StringEntry("last_invoke_id", aF)]
500+ then [StringEntry(ak(bf, U), bc), StringEntry("last_invoke_id", aG)]
504501 else if ((bc == "ILLEGAL"))
505- then [StringEntry(aj(bf, T), bc), StringEntry(U(bf, T), "ILLEGAL CONTENT"), StringEntry(V(bf, T), "ILLEGAL CONTENT"), StringEntry(W(bf, T), ""), StringEntry(Y(bf, T), ""), StringEntry(ae(bf, T), ""), StringEntry("last_invoke_id", aF)]
502+ then [StringEntry(ak(bf, U), bc), StringEntry(V(bf, U), "ILLEGAL CONTENT"), StringEntry(W(bf, U), "ILLEGAL CONTENT"), StringEntry(X(bf, U), ""), StringEntry(Z(bf, U), ""), StringEntry(af(bf, U), ""), StringEntry("last_invoke_id", aG)]
506503 else throw(("Unknow status" + bc))
507504 else throw("no")
508505 }
509506
510507
511508
512-@Callable(A)
513-func deleteArtwork (T,bf) = {
514- let L = toString(addressFromPublicKey(A.callerPublicKey))
515- let aF = toBase58String(A.transactionId)
516- let bg = if (if ((L == j))
517- then true
518- else (L == k))
509+@Callable(B)
510+func deleteArtwork (U,bf) = {
511+ let M = toString(addressFromPublicKey(B.callerPublicKey))
512+ let aG = toBase58String(B.transactionId)
513+ let bg = if (containsElement([j, k], M))
519514 then bf
520- else L
515+ else M
521516 let aW = {
522- let x = getString(this, U(bg, T))
517+ let x = getString(this, V(bg, U))
523518 if ($isInstanceOf(x, "String"))
524519 then {
525520 let ba = x
526521 ba
527522 }
528523 else throw("No art matching")
529524 }
530525 let bd = {
531- let x = getInteger(this, ab(bg, T))
526+ let x = getInteger(this, ac(bg, U))
532527 if ($isInstanceOf(x, "Int"))
533528 then {
534529 let be = x
535530 if ((be != 0))
536531 then true
537532 else false
538533 }
539534 else false
540535 }
541- let bh = z(Z(bg, T))
542- let F = {
543- let x = getString(this, ak(bg, T))
536+ let bh = A(aa(bg, U))
537+ let G = {
538+ let x = getString(this, al(bg, U))
544539 if ($isInstanceOf(x, "String"))
545540 then {
546541 let ba = x
547542 ba
548543 }
549544 else throw("No art hash matching")
550545 }
551- let D = {
552- let x = getString(this, aa(bg, T))
546+ let E = {
547+ let x = getString(this, ab(bg, U))
553548 if ($isInstanceOf(x, "String"))
554549 then {
555550 let ba = x
556551 ba
557552 }
558553 else throw("No SIGN ID matching")
559554 }
560- let bi = [DeleteEntry(S(bg, T)), DeleteEntry(U(bg, T)), DeleteEntry(V(bg, T)), DeleteEntry(W(bg, T)), DeleteEntry(Y(bg, T)), DeleteEntry(X(bg, T)), DeleteEntry(ad(bg, T)), DeleteEntry(ae(bg, T)), DeleteEntry(ag(bg, T)), DeleteEntry(af(bg, T)), DeleteEntry(Z(bg, T)), DeleteEntry(aa(bg, T)), DeleteEntry(ab(bg, T)), DeleteEntry(ac(bg, T)), DeleteEntry(aj(bf, T)), StringEntry("last_invoke_id", aF), DeleteEntry(am(F)), DeleteEntry(an(bg, D)), DeleteEntry(ap(F, bg))]
555+ let bi = [DeleteEntry(T(bg, U)), DeleteEntry(V(bg, U)), DeleteEntry(W(bg, U)), DeleteEntry(X(bg, U)), DeleteEntry(Z(bg, U)), DeleteEntry(Y(bg, U)), DeleteEntry(ae(bg, U)), DeleteEntry(af(bg, U)), DeleteEntry(ah(bg, U)), DeleteEntry(ag(bg, U)), DeleteEntry(aa(bg, U)), DeleteEntry(ab(bg, U)), DeleteEntry(ac(bg, U)), DeleteEntry(ad(bg, U)), DeleteEntry(ak(bf, U)), StringEntry("last_invoke_id", aG), DeleteEntry(an(G)), DeleteEntry(ao(bg, E)), DeleteEntry(aq(G, bg))]
561556 if (!(bd))
562557 then if (!(m))
563558 then throw(n)
564559 else bi
565560 else throw("Art already minted, cannot delete")
566561 }
567562
568563
569564
570-@Callable(A)
571-func sellArtwork (T,aV,bh,aT) = if (!(m))
565+@Callable(B)
566+func sellArtwork (U,bj,bh,aU) = if (!(m))
572567 then throw(n)
573568 else {
574- let aF = toBase58String(A.transactionId)
575- let L = toBase58String(A.caller.bytes)
576- let bj = lastBlock.timestamp
577- let bk = v(Y(L, T))
578- if ((size(split(bk, "/")[0]) != 59))
569+ let aG = toBase58String(B.transactionId)
570+ let M = toBase58String(B.caller.bytes)
571+ let bk = lastBlock.timestamp
572+ let bl = v(Z(M, U))
573+ if ((size(split(bl, "/")[0]) != 59))
579574 then throw("You cannot sell art with no export file")
580575 else {
581- let bl = v(X(L, T))
582- if ((size(bl) != 64))
576+ let bm = v(Y(M, U))
577+ if ((size(bm) != 64))
583578 then throw("You cannot sell art with no export hash")
584- else if (if (if ((aT != toBase58String(d)))
585- then (aT != toBase58String(f))
579+ else if (if (if ((aU != toBase58String(d)))
580+ then (aU != toBase58String(f))
586581 else false)
587- then (aT != toBase58String(e))
582+ then (aU != toBase58String(e))
588583 else false)
589584 then throw("Only SIGN, USDN or WAVES accepted")
590585 else {
591- let bm = {
592- let x = getString(this, U(L, T))
593- if ($isInstanceOf(x, "String"))
594- then {
595- let ba = x
596- ba
597- }
598- else throw("This art doesn't match")
599- }
600- let aZ = {
601- let x = getString(this, Q(L))
602- if ($isInstanceOf(x, "String"))
603- then {
604- let ba = x
605- ba
606- }
607- else throw("Register this account first")
608- }
609- let bn = z(ab(L, T))
610- let bo = z(Z(L, T))
611- if (if ((bn != 0))
612- then (bn == bo)
586+ let bn = z("waves_min_sell")
587+ let bo = 1000000
588+ let bp = (z(("certification_fee_" + toBase58String(d))) * 2)
589+ let bq = "Minimum sell price:"
590+ if (if ((aU == toBase58String(e)))
591+ then (bo > bj)
613592 else false)
614- then throw("Max edition reached.")
615- else if (if ((bn > 0))
616- then (bo != bh)
593+ then throw((bq + " 1 USDN"))
594+ else if (if ((aU == toBase58String(d)))
595+ then (bp > bj)
617596 else false)
618- then throw("Cannot change maximum issuable anymore")
619- else if ((aZ == r))
620- then throw("Account suspended")
621- else if ((aZ == s))
622- then throw("Account deleted")
623- else {
624- let bp = if ((aV > 0))
625- then true
626- else false
627-[BooleanEntry(ac(L, T), bp), IntegerEntry(ah(L, T), aV), IntegerEntry(Z(L, T), bh), StringEntry(ai(L, T), aT), StringEntry("last_invoke_id", aF)]
597+ then throw((((bq + " ") + toString(bp)) + " SIGN"))
598+ else if (if ((aU == toBase58String(f)))
599+ then (bn > bj)
600+ else false)
601+ then throw((((bq + " ") + toString(bn)) + " WAVES"))
602+ else {
603+ let br = {
604+ let x = getString(this, V(M, U))
605+ if ($isInstanceOf(x, "String"))
606+ then {
607+ let ba = x
608+ ba
609+ }
610+ else throw("This art doesn't match")
628611 }
612+ let aZ = {
613+ let x = getString(this, R(M))
614+ if ($isInstanceOf(x, "String"))
615+ then {
616+ let ba = x
617+ ba
618+ }
619+ else throw("Register this account first")
620+ }
621+ let bs = A(ac(M, U))
622+ let bt = A(aa(M, U))
623+ if (if ((bs != 0))
624+ then (bs == bt)
625+ else false)
626+ then throw("Max edition reached.")
627+ else if (if ((bs > 0))
628+ then (bt != bh)
629+ else false)
630+ then throw("Cannot change maximum issuable anymore")
631+ else if ((aZ == r))
632+ then throw("Account suspended")
633+ else if ((aZ == s))
634+ then throw("Account deleted")
635+ else {
636+ let bu = if ((bj > 0))
637+ then true
638+ else false
639+[BooleanEntry(ad(M, U), bu), IntegerEntry(ai(M, U), bj), IntegerEntry(aa(M, U), bh), StringEntry(aj(M, U), aU), StringEntry("last_invoke_id", aG)]
640+ }
641+ }
629642 }
630643 }
631644 }
632645
633646
634647
635-@Callable(A)
636-func buyArtwork (T,bq) = if (!(m))
648+@Callable(B)
649+func buyArtwork (U,bv) = if (!(m))
637650 then throw(n)
638651 else {
639- let aF = toBase58String(A.transactionId)
640- let L = toBase58String(A.caller.bytes)
641- let br = z("total_nft_issued")
642- let D = v(aa(bq, T))
643- let bm = {
644- let x = getString(this, U(bq, T))
652+ let aG = toBase58String(B.transactionId)
653+ let M = toBase58String(B.caller.bytes)
654+ let bw = A("total_nft_issued")
655+ let E = v(ab(bv, U))
656+ let br = {
657+ let x = getString(this, V(bv, U))
645658 if ($isInstanceOf(x, "String"))
646659 then {
647660 let ba = x
648661 ba
649662 }
650663 else throw("Art doesn't exist")
651664 }
652- let bs = v(W(bq, T))
653- let bk = v(Y(bq, T))
654- let bl = v(X(bq, T))
655- let bt = v(ae(bq, T))
656- let bu = v(ad(bq, T))
657- let aB = take(v(V(bq, T)), 50)
658- let bn = z(ab(bq, T))
659- let bv = z(ah(bq, T))
660- let bw = B(ac(bq, T))
661- let bx = v(ai(bq, T))
662- let by = v(ak(bq, T))
663- if ((bv == 0))
665+ let bx = v(X(bv, U))
666+ let bl = v(Z(bv, U))
667+ let bm = v(Y(bv, U))
668+ let by = v(af(bv, U))
669+ let bz = v(ae(bv, U))
670+ let aC = take(v(W(bv, U)), 50)
671+ let bs = A(ac(bv, U))
672+ let bA = A(ai(bv, U))
673+ let bB = C(ad(bv, U))
674+ let bC = v(aj(bv, U))
675+ let bD = v(al(bv, U))
676+ if ((bA == 0))
664677 then throw("Art not for sell")
665- else if (!(bw))
678+ else if (!(bB))
666679 then throw("Art not for sale")
667680 else {
668- let bo = z(Z(bq, T))
669- let aR = value(A.payments[0])
670- let aS = value(aR.amount)
671- let aT = if (if (if (isDefined(aR.assetId))
672- then (size(fromBase58String(bx)) > 0)
681+ let bt = A(aa(bv, U))
682+ let aS = value(B.payments[0])
683+ let aT = value(aS.amount)
684+ let aU = if (if (if (isDefined(aS.assetId))
685+ then (size(fromBase58String(bC)) > 0)
673686 else false)
674- then (aR.assetId == fromBase58String(bx))
687+ then (aS.assetId == fromBase58String(bC))
675688 else false)
676- then aR.assetId
689+ then aS.assetId
677690 else unit
678- let bz = if ((bx == toBase58String(d)))
691+ let bE = if ((bC == toBase58String(d)))
679692 then 8
680693 else 10
681- let bA = fraction(aS, bz, 100)
682- let bB = (aS - bA)
683- if ((bn == bo))
694+ let bF = fraction(aT, bE, 100)
695+ let bG = (aT - bF)
696+ if ((bs == bt))
684697 then throw("Art sold out")
685- else if ((bv != aS))
698+ else if ((bA != aT))
686699 then throw("Payment don't match")
687700 else {
688- let bC = (bn + 1)
689- let bD = lastBlock.timestamp
690- let bE = (((((((((((((((((((((((((((("{\"version\": 1,
691- \"creator\": \"" + bq) + "\",
692- \"artID\": \"") + T) + "\",
693- \"signID\": \"") + D) + "\",
694- \"artwork_name\": \"") + bm) + "\",
695- \"artwork_desc\": \"") + aB) + "\",
696- \"issue\": \"") + toString(bC)) + "/") + toString(bo)) + "\",
697- \"maxIssuable\": \"") + toString(bo)) + "\",
698- \"source_hash\": \"") + by) + "\",
699- \"display_cid\": \"") + bs) + "\",
700- \"export_cid\": \"") + bk) + "\",
701- \"export_hash\": \"") + bl) + "\",
702- \"licence_cid\": \"") + bt) + "\",
703- \"licence_hash\": \"") + bu) + "\"}")
704- let bF = Issue(("SA_" + toString((br + 1))), bE, 1, 0, false)
705- let bG = calculateAssetId(bF)
706- let bp = if ((bC == bo))
701+ let bH = (bs + 1)
702+ let bI = lastBlock.timestamp
703+ let bJ = (((((((((((((((((((((((((((("{\"version\": 1,
704+ \"creator\": \"" + bv) + "\",
705+ \"artID\": \"") + U) + "\",
706+ \"signID\": \"") + E) + "\",
707+ \"artwork_name\": \"") + br) + "\",
708+ \"artwork_desc\": \"") + aC) + "\",
709+ \"issue\": \"") + toString(bH)) + "/") + toString(bt)) + "\",
710+ \"maxIssuable\": \"") + toString(bt)) + "\",
711+ \"source_hash\": \"") + bD) + "\",
712+ \"display_cid\": \"") + bx) + "\",
713+ \"export_cid\": \"") + bl) + "\",
714+ \"export_hash\": \"") + bm) + "\",
715+ \"licence_cid\": \"") + by) + "\",
716+ \"licence_hash\": \"") + bz) + "\"}")
717+ let bK = Issue(("SA_" + toString((bw + 1))), bJ, 1, 0, false)
718+ let bL = calculateAssetId(bK)
719+ let bu = if ((bH == bt))
707720 then false
708721 else true
709-[IntegerEntry(ab(bq, T), bC), StringEntry(((((((("art_sold_" + toString(bC)) + "_of_") + toString(bo)) + "_") + T) + "_") + bq), ((((((((((L + "_") + toString(bD)) + "_") + aF) + "_") + toString(bv)) + "_") + bx) + "_") + toBase58String(bG))), IntegerEntry("total_nft_issued", (br + 1)), BooleanEntry(ac(bq, T), bp), StringEntry("last_invoke_id", aF), bF, ScriptTransfer(Address(fromBase58String(bq)), bB, aT), ScriptTransfer(Address(fromBase58String(c)), bA, aT), ScriptTransfer(A.caller, 1, bG)]
722+[IntegerEntry(ac(bv, U), bH), StringEntry(((((((("art_sold_" + toString(bH)) + "_of_") + toString(bt)) + "_") + U) + "_") + bv), ((((((((((M + "_") + toString(bI)) + "_") + aG) + "_") + toString(bA)) + "_") + bC) + "_") + toBase58String(bL))), IntegerEntry("total_nft_issued", (bw + 1)), BooleanEntry(ad(bv, U), bu), StringEntry("last_invoke_id", aG), bK, ScriptTransfer(Address(fromBase58String(bv)), bG, aU), ScriptTransfer(Address(fromBase58String(c)), bF, aU), ScriptTransfer(B.caller, 1, bL)]
710723 }
711724 }
712725 }
713726
714727
715728
716-@Callable(A)
717-func deleteUser (aJ) = {
718- let L = toString(addressFromPublicKey(A.callerPublicKey))
719- let aF = toBase58String(A.transactionId)
720- if (if ((L == j))
721- then true
722- else (L == k))
723- then [DeleteEntry(R(aJ)), DeleteEntry(K(aJ)), DeleteEntry(M(aJ)), DeleteEntry(N(aJ)), DeleteEntry(O(aJ)), DeleteEntry(P(aJ)), StringEntry(Q(aJ), s), StringEntry("last_invoke_id", aF)]
729+@Callable(B)
730+func deleteUser (aK) = {
731+ let M = toString(addressFromPublicKey(B.callerPublicKey))
732+ let aG = toBase58String(B.transactionId)
733+ if (containsElement([j, k], M))
734+ then [DeleteEntry(S(aK)), DeleteEntry(L(aK)), DeleteEntry(N(aK)), DeleteEntry(O(aK)), DeleteEntry(P(aK)), DeleteEntry(Q(aK)), StringEntry(R(aK), s), StringEntry("last_invoke_id", aG)]
724735 else throw("Not allowed")
725736 }
726737
727738

github/deemru/w8io/3ef1775 
377.79 ms