tx · GXEcYHsnmxEefG8eydHmSXQGaTVUhNvwSUafJ2a741x5

3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu:  -0.01000000 Waves

2022.03.13 16:43 [1962261] smart account 3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu > SELF 0.00000000 Waves

{ "type": 13, "id": "GXEcYHsnmxEefG8eydHmSXQGaTVUhNvwSUafJ2a741x5", "fee": 1000000, "feeAssetId": null, "timestamp": 1647179014027, "version": 2, "chainId": 84, "sender": "3N8jKcYWjJn5GjrJV94rxzVk42TPk1rPLeu", "senderPublicKey": "914UmzBhcoS4onGGVcBRgb4VPV88m9VCFjsj5WWck5vm", "proofs": [ "8PnGaxNq97HmcjHXcKdsL4eJLAsy96WC5W8WrDB77HvYv3BUKBwQka7WEFsPSQMa8gkT4RvHHmbnrfkd63CeCj6" ], "script": "base64:AAIFAAAAAAAAAFgIAhIDCgEIEgMKAQgSBQoDAQgIEgwKCggICAgICAgICAgSDgoMCAEBCAgBCAgIAQEBEgQKAggIEgUKAwgICBIDCgEIEgQKAggIEgYKBAgICAgSBQoDCAgIAAAAUgAAAAAIdW5pdFRlc3QHAAAAAAlvcmFjbGVLZXkCAAAACW9yYWNsZUtleQEAAAAGZ2V0U3RyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWICAAAAAAAAAAAGb3JhY2xlCQEAAAAGZ2V0U3RyAAAAAQUAAAAJb3JhY2xlS2V5AAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAGb3JhY2xlAAAAAAZvd25lcnMJAARMAAAAAgkABB0AAAACBQAAAAlvcmFjbGVGZWUCAAAABm93bmVyMQkABEwAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAGb3duZXIyBQAAAANuaWwAAAAAD2NvbGxlY3Rpb25zRGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAPY29sbGVjdGlvbnNEYXBwAgAAABhjb2xsZWN0aW9uRGFwcCBub3QgZm91bmQAAAAAC2ZlZVJlY2VpdmVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAJb3JhY2xlRmVlAgAAAAtmZWVSZWNlaXZlcgIAAAAVZmVlUmVjZWl2ZXIgbm90IGZvdW5kAAAAAAhjZXJ0RGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAIY2VydERhcHACAAAAEmNlcnREYXBwIG5vdCBmb3VuZAAAAAAHZmVlRGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAHZmVlRGFwcAIAAAARZmVlRGFwcCBub3QgZm91bmQAAAAACHVzZXJEYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAlvcmFjbGVGZWUCAAAACHVzZXJEYXBwAgAAABJ1c2VyZGFwcCBub3QgZm91bmQAAAAAC1VTRE5Bc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAACW9yYWNsZUZlZQIAAAALVVNETkFzc2V0SWQAAAAABXR5cGVzCQAETAAAAAICAAAABUlNQUdFCQAETAAAAAICAAAAA1BERgkABEwAAAACAgAAAAVWSURFTwUAAAADbmlsAAAAAAxQcmV2aWV3dHlwZXMJAARMAAAAAgIAAAADUERGBQAAAANuaWwAAAAAC2RhcHBSdW5uaW5nCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX2RhcHBfaXNfcnVubmluZwYAAAAADm1haW50ZW5hbmNlTVNHCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwAgAAABRjb25mX21haW50ZW5hbmNlX21zZwIAAAAAAAAAAA11c2VyU3VzcGVuZGVkAgAAAAlTVVNQRU5ERUQAAAAAC3VzZXJSZW1vdmVkAgAAAAdSRU1PVkVEAAAAABB1c2VyVW5yZWdpc3RlcmVkAgAAAAxVTlJFR0lTVEVSRUQAAAAADGF1Y3Rpb25UeXBlMQIAAAAHQklEVFlQRQAAAAAMYXVjdGlvblR5cGUyAgAAAAtUUkFESVRJT05BTAAAAAAMYXVjdGlvblR5cGUzAgAAAAZESVJFQ1QBAAAAF2dldFN0cmluZ0J5S2V5RnJvbVVzZXJzAAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAIdXNlckRhcHAFAAAAA2tleQIAAAAAAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQIAAAAAAQAAABVnZXRTdHJpbmdCeUtleU9yRXJyb3IAAAACAAAAA2tleQAAAAVlcnJvcgkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQUAAAAFZXJyb3IBAAAAGWdldEludGVnZXJCeUtleUZyb21PcmFjbGUAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAACW9yYWNsZUZlZQUAAAADa2V5AgAAAB9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAAD2dldEJvb2xlYW5CeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcBAAAADHZhbGlkYXRlSGFzaAAAAAEAAAAEaGFzaAkAAAAAAAACCQABMQAAAAEFAAAABGhhc2gAAAAAAAAAAEABAAAADWtleVVzZXJTdGF0dXMAAAABAAAABmNhbGxlcgkAASwAAAACAgAAAAx1c2VyX3N0YXR1c18FAAAABmNhbGxlcgEAAAAHa2V5RGF0ZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfZGF0ZV8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAB2tleU5hbWUAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJYXJ0X25hbWVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAdrZXlEZXNjAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF9kZXNjXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAANa2V5RGlzcGxheUNpZAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBhcnRfZGlzcGxheV9jaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAA1rZXlQcmV2aWV3Q2lkAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEGFydF9wcmV2aWV3X2NpZF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACmtleU1heE1pbnQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAMYXJ0X21heG1pbnRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAABJrZXlIaWdoZXN0QmlkQmlkSWQAAAABAAAABWFydElkCQABLAAAAAICAAAAFGFydF9oaWdoZXN0QmlkQmlkSWRfBQAAAAVhcnRJZAEAAAAIa2V5QmlkSWQAAAABAAAABWJpZElkCQABLAAAAAICAAAABGJpZF8FAAAABWJpZElkAQAAAAtrZXlEdXJhdGlvbgAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAA1hcnRfZHVyYXRpb25fBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAxrZXlFbmRIZWlnaHQAAAACAAAABmNhbGxlcgAAAAVhcnRJZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAOYXJ0X2VuZGhlaWdodF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAEGFydF9hdWN0aW9udHlwZV8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACWtleUlzc3VlZAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAthcnRfaXNzdWVkXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAMS2V5TmZ0SXNzdWVyAAAAAQAAAAVuZnRJZAkAASwAAAACAgAAAAtuZnRfaXNzdWVkXwUAAAAFbmZ0SWQBAAAAC0tleU5mdEFydElkAAAAAQAAAAVuZnRJZAkAASwAAAACAgAAAApuZnRfYXJ0SWRfBQAAAAVuZnRJZAEAAAAJa2V5T25TYWxlAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC2FydF9vbnNhbGVfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAA5rZXlFbnRpdGxlbWVudAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABBhcnRfZW50aXRsZW1lbnRfBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAQAAAAdrZXlUYWdzAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFydF90YWdzXwUAAAAFYXJ0SWQCAAAAAV8FAAAABmNhbGxlcgEAAAAHa2V5VHlwZQAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlhcnRfdHlwZV8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAACGtleVByaWNlAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACmFydF9wcmljZV8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEmtleUFzc2V0SWRBY2NlcHRlZAAAAAIAAAAGY2FsbGVyAAAABWFydElkCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABJhcnRfYXNzZXRBY2NlcHRlZF8FAAAABWFydElkAgAAAAFfBQAAAAZjYWxsZXIBAAAAEWtleUhhc2hCeVR4aWRBZGRyAAAAAgAAAAZjYWxsZXIAAAAEdHhpZAkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAATZ2V0X2hhc2hieXR4aWRhZGRyXwUAAAAEdHhpZAIAAAABXwUAAAAGY2FsbGVyAQAAAA5rZXlPd25lckJ5SGFzaAAAAAEAAAAKc2hhMjU2SGFzaAkAASwAAAACAgAAABJnZXRfb3duZXJfYnlfaGFzaF8FAAAACnNoYTI1Nkhhc2gBAAAAEmtleVR4aWRCeUhhc2hPd25lcgAAAAIAAAAKc2hhMjU2SGFzaAAAAAZjYWxsZXIJAAEsAAAAAgIAAAAXZ2V0X3R4aWRfYnlfaGFzaF9vd25lcl8JAAJYAAAAAQkAC1QAAAABCQABmwAAAAEJAAEsAAAAAgUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyAQAAAA1rZXlDb2xsZWN0aW9uAAAAAgAAAAZjYWxsZXIAAAAFYXJ0SWQJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC2NvbGxlY3Rpb25fBQAAAAVhcnRJZAIAAAABXwUAAAAGY2FsbGVyAAAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQEAAAAZZ2V0SW50ZWdlckJ5S2V5RnJvbU9yYWNsZQAAAAEJAAEsAAAAAgIAAAASY2VydGlmaWNhdGlvbl9mZWVfCQACWAAAAAEFAAAAC1VTRE5Bc3NldElkAQAAABBnZXRBbW91bnRCeUJpZElkAAAAAQAAAAViaWRJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAhrZXlCaWRJZAAAAAEFAAAABWJpZElkAAAAAAAAAAAAAQAAABpnZXRBbW91bnRIaWdoZXN0QmlkQnlBcnRJZAAAAAEAAAAFYXJ0SWQEAAAABWJpZElkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAASa2V5SGlnaGVzdEJpZEJpZElkAAAAAQUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAABWJpZElkAgAAAAAAAAAAAAAAAAAJAQAAABBnZXRBbW91bnRCeUJpZElkAAAAAQUAAAAFYmlkSWQBAAAADnZhbGlkYXRlU3RyaW5nAAAAAgAAAANzdHIAAAADbWF4AwkAAAAAAAACCQABMQAAAAEFAAAAA3N0cgAAAAAAAAAAAAkAAAIAAAABAgAAABhGaWVsZCBjYW5ub3QgYmUgaXMgZW1wdHkDCQAAZgAAAAIJAAExAAAAAQUAAAADc3RyBQAAAANtYXgJAAACAAAAAQkAASwAAAACBQAAAANzdHICAAAADCBpcyB0b28gbG9uZwYBAAAADHZhbGlkYXRlVXNlcgAAAAEAAAAGY2FsbGVyBAAAAAp1c2VyU3RhdHVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwCQEAAAANa2V5VXNlclN0YXR1cwAAAAEFAAAABmNhbGxlcgUAAAAQdXNlclVucmVnaXN0ZXJlZAMJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAAQdXNlclVucmVnaXN0ZXJlZAIAAAAuUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGZpcnN0IHdpdGggJ0FjY291bnQnIHRhYgMJAAAAAAAAAgUAAAAKdXNlclN0YXR1cwUAAAANdXNlclN1c3BlbmRlZAIAAAARQWNjb3VudCBzdXNwZW5kZWQDCQAAAAAAAAIFAAAACnVzZXJTdGF0dXMFAAAAC3VzZXJSZW1vdmVkAgAAAA9BY2NvdW50IHJlbW92ZWQCAAAAAAEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAUAAAAGY2FsbGVyAAAACmNpZERpc3BsYXkAAAAEbmFtZQAAAAtkZXNjcmlwdGlvbgAAAAR0YWdzBAAAAAljaGVja1VzZXIJAQAAAAx2YWxpZGF0ZVVzZXIAAAABBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAljaGVja1VzZXICAAAAAAkAAAIAAAABBQAAAAljaGVja1VzZXIDCQAAAAAAAAIJAAExAAAAAQUAAAAKY2lkRGlzcGxheQAAAAAAAAAAAAkAAAIAAAABAgAAABtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEAAAACIT0AAAACCQABMQAAAAEFAAAACmNpZERpc3BsYXkAAAAAAAAAAC4JAAACAAAAAQIAAAAeVGhpcyBkb2Vzbid0IHNlZW0gYSB2YWxpZCBDSUQhAwkBAAAAASEAAAABCQEAAAAOdmFsaWRhdGVTdHJpbmcAAAACBQAAAARuYW1lAAAAAAAAAABkCQAAAgAAAAECAAAAEjEwMCBDaGFyLiBtYXggbmFtZQMJAQAAAAEhAAAAAQkBAAAADnZhbGlkYXRlU3RyaW5nAAAAAgUAAAALZGVzY3JpcHRpb24AAAAAAAAAA+gJAAACAAAAAQIAAAAaMTAwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DCQAAZgAAAAIJAAGQAAAAAQkABLUAAAACBQAAAAR0YWdzAgAAAAEsAAAAAAAAAAAFCQAAAgAAAAECAAAACzUgdGFncyBtYXguAgAAAAABAAAACWlzUGF5bWVudAAAAAEAAAABaQMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAABNObyBwYXltZW50IGF0dGFjaGVkBAAAAAdwYXltZW50CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAABmFtb3VudAkABRQAAAACBQAAAAdwYXltZW50BQAAAAZhbW91bnQBAAAAD3ZhbGlkYXRlUGF5bWVudAAAAAEAAAABaQQAAAAKdDA4OTgyOTAxOAkBAAAACWlzUGF5bWVudAAAAAEFAAAAAWkEAAAAB3BheW1lbnQIBQAAAAp0MDg5ODI5MDE4AAAAAl8xBAAAAAZhbW91bnQIBQAAAAp0MDg5ODI5MDE4AAAAAl8yBAAAAAdhc3NldElkAwMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAAAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAAC1VTRE5Bc3NldElkBwgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAAAIAAAABAgAAACtPbmx5IFVTRE4gdG9rZW4gYWNjZXB0ZWQgYXMgdHJhbnNhY3Rpb24gZmVlAwkBAAAAAiE9AAAAAgUAAAAGYW1vdW50BQAAABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAGVBheW1lbnQgYW1vdW50IHNob3VsZCBiZSAJAAGkAAAAAQUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQIAAAAJIGJ1dCBpczogCQABpAAAAAEFAAAABmFtb3VudAkABRQAAAACBQAAAAZhbW91bnQFAAAAB2Fzc2V0SWQBAAAAC2lzQXJ0TWludGVkAAAAAgAAAAlhZGRyVG9Vc2UAAAAFYXJ0SWQEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkBAAAACWtleUlzc3VlZAAAAAIFAAAACWFkZHJUb1VzZQUAAAAFYXJ0SWQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYgUAAAAHJG1hdGNoMAMJAQAAAAIhPQAAAAIFAAAAAWIAAAAAAAAAAAAGBwcBAAAAFHZhbGlkYXRlUHJpY2VBc3NldElkAAAAAwAAAAFpAAAADHByaWNlQXNzZXRJZAAAAAxhcnR3b3JrUHJpY2UEAAAACnQwOTYxMTk2NDcJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAAKdDA5NjExOTY0NwAAAAJfMQQAAAAGYW1vdW50CAUAAAAKdDA5NjExOTY0NwAAAAJfMgQAAAAHYXNzZXRJZAMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDAwkAAGYAAAACCQABMQAAAAEFAAAADHByaWNlQXNzZXRJZAAAAAAAAAAAAAkAAAAAAAACCQACWAAAAAEJAQAAAAV2YWx1ZQAAAAEIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAADHByaWNlQXNzZXRJZAcIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDAwkAAAAAAAACBQAAAAdhc3NldElkBQAAAAR1bml0CQEAAAACIT0AAAACBQAAAAxwcmljZUFzc2V0SWQCAAAAAAcJAAACAAAAAQIAAAAOV3JvbmcgYXNzZXQgaWQDCQEAAAACIT0AAAACBQAAAAxhcnR3b3JrUHJpY2UFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABRQYXltZW50IGRvbid0IG1hdGNoIAkAAaQAAAABBQAAAAxhcnR3b3JrUHJpY2UCAAAAASAJAAGkAAAAAQUAAAAGYW1vdW50CQAFFAAAAAIFAAAABmFtb3VudAUAAAAHYXNzZXRJZAEAAAAQYWNjZXB0ZWRBc3NldElkcwAAAAEAAAAHYXNzZXRJZAMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQJAAJYAAAAAQUAAAALVVNETkFzc2V0SWQJAAACAAAAAQIAAAAST25seSBVU0ROIGFjY2VwdGVkBgEAAAAPdmFsaWRhdGVNaW5TZWxsAAAAAgAAAAdhc3NldElkAAAABXByaWNlBAAAAA1taW5TZWxsU2NvbmV4AwUAAAAIdW5pdFRlc3QAAAAAAAAAAAEJAABoAAAAAgUAAAAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQAAAAAAAAAAAgMDAwkAAAAAAAACBQAAAAdhc3NldElkCQACWAAAAAEFAAAAC1VTRE5Bc3NldElkCQAAZgAAAAIFAAAADW1pblNlbGxTY29uZXgFAAAABXByaWNlBwkBAAAAAiE9AAAAAgUAAAAFcHJpY2UAAAAAAAAAAAAHCQAAAgAAAAEJAAEsAAAAAgIAAAAZV3JvbmcgbWluaW11bSBzZWxsIHByaWNlIAkAAaQAAAABBQAAAA1taW5TZWxsU2NvbmV4BgEAAAANZ2V0QmlkQXNzZXRJZAAAAAEAAAAHYXNzZXRJZAMJAAAAAAAAAgUAAAAHYXNzZXRJZAIAAAAFV0FWRVMJAAACAAAAAQIAAAAWT25seSBVU0ROIGlzIGFjY2VwdGVkIQkAAlkAAAABBQAAAAdhc3NldElkAQAAABZnZXRQcmljZUFzc2V0SWRGcm9tQmlkAAAAAQAAAApiaWREYXRhS2V5BAAAAAdiaWREYXRhCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQABLAAAAAIFAAAACmJpZERhdGFLZXkCAAAABV9PUEVOAwkAAAAAAAACBQAAAAdiaWREYXRhAgAAAAAJAAACAAAAAQIAAAANQmlkIG5vdCBmb3VuZAQAAAAKYmlkRGF0YUFycgkABLUAAAACBQAAAAdiaWREYXRhAgAAAAFfBAAAAAliaWRBbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAApiaWREYXRhQXJyAAAAAAAAAAABBAAAAApiaWRBc3NldElkCQEAAAANZ2V0QmlkQXNzZXRJZAAAAAEJAAGRAAAAAgUAAAAKYmlkRGF0YUFycgAAAAAAAAAAAAMJAABnAAAAAgAAAAAAAAAAAAUAAAAJYmlkQW1vdW50CQAAAgAAAAECAAAADFdyb25nIGFtb3VudAkABRQAAAACBQAAAAliaWRBbW91bnQFAAAACmJpZEFzc2V0SWQBAAAADGlkQ2FsbGVyRGF0ZQAAAAEAAAABaQMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cJAAUVAAAAAwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAQAAAApnZXRBcnREYXRhAAAABAAAAAFpAAAABmlzc3VlcgAAAAVhcnRJZAAAAAVpc0JpZAQAAAAOY2FsbGVySXNJc3N1ZXIJAAAAAAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBQAAAAZpc3N1ZXIEAAAACHRvdGFsTkZUCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQIAAAAQdG90YWxfbmZ0X2lzc3VlZAQAAAALYXJ0d29ya05hbWUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAdrZXlOYW1lAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXJ0d29ya05hbWUCAAAAAAkAAAIAAAABAgAAABFBcnQgZG9lc24ndCBleGlzdAQAAAAIaXNPblNhbGUJAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABCQEAAAAJa2V5T25TYWxlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKYW1vdW50U29sZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAlrZXlJc3N1ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxhcnR3b3JrUHJpY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAIa2V5UHJpY2UAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkCQAAaAAAAAIFAAAAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAAAAAAAAAAIEAAAADHByaWNlQXNzZXRJZAMFAAAADmNhbGxlcklzSXNzdWVyCQACWAAAAAEFAAAAC1VTRE5Bc3NldElkCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAASa2V5QXNzZXRJZEFjY2VwdGVkAAAAAgUAAAAGaXNzdWVy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XzIEAAAACmFtb3VudFNvbGQIBQAAAAdhcnREYXRhAAAAAl8zBAAAAAxhcnR3b3JrUHJpY2UIBQAAAAdhcnREYXRhAAAAAl80BAAAAAxwcmljZUFzc2V0SWQIBQAAAAdhcnREYXRhAAAAAl81BAAAAAptYXhDYW5TZWxsCAUAAAAHYXJ0RGF0YQAAAAJfNgQAAAAIaXNPblNhbGUIBQAAAAdhcnREYXRhAAAAAl83BAAAAAdiaWREYXRhCQEAAAAKZ2V0QmlkRGF0YQAAAAkFAAAAAWkFAAAABmNhbGxlcgUAAAAGaXNzdWVyBQAAAAVhcnRJZAUAAAAIYmlkT3duZXIFAAAABWJpZElkBQAAAAxwcmljZUFzc2V0SWQFAAAADGFydHdvcmtQcmljZQUAAAAFaXNCaWQEAAAACmJpZERhdGFLZXkIBQAAAAdiaWREYXRhAAAAAl8xBAAAAAZhbW91bnQIBQAAAAdiaWREYXRhAAAAAl8yBAAAAAdhc3NldElkCAUAAAAHYmlkRGF0YQAAAAJfMwQAAAANbmV3QW1vdW50U29sZAMJAAAAAAAAAgUAAAAKYW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAkAAAIAAAABAgAAAA5NYXggaXRlbXMgc29sZAkAAGQAAAACBQAAAAphbW91bnRTb2xkAAAAAAAAAAABBAAAAAppc3N1ZXJEYXRhCQEAAAAMZ2V0SXNzdWVEYXRhAAAACwUAAAAGaXNzdWVyBQAAAAVhcnRJZAUAAAALYXJ0d29ya05hbWUFAAAADW5ld0Ftb3VudFNvbGQFAAAACm1heENhblNlbGwFAAAACHRvdGFsTkZUBQAAAAZjYWxsZXIFAAAACGJpZE93bmVyBQAAAAViaWRJZAUAAAABaQUAAAAIaXNPblNhbGUEAAAACnNlbGxTdGF0dXMIBQAAAAppc3N1ZXJEYXRhAAAAAl8xBAAAAApyZWNlaXZlTkZUCAUAAAAKaXNzdWVyRGF0YQAAAAJfMgQAAAAJaXNzdWVNZXRhCAUAAAAKaXNzdWVyRGF0YQAAAAJfMwQAAAALaWRORlRJbnZva2UJAAP8AAAABAUAAAAEdGhpcwIAAAAHbWludE5mdAkABEwAAAACBQAAAAh0b3RhbE5GVAkABEwAAAACBQAAAAlpc3N1ZU1ldGEJAARMAAAA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AAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAIZHVyYXRpb24JAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAALa2V5RHVyYXRpb24AAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAllbmRIZWlnaHQJAABkAAAAAgUAAAAIZHVyYXRpb24FAAAABmhlaWdodAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAxvbGRFbmRIZWlnaHQDCQAAAAAAAAIFAAAACmFtb3VudFNvbGQFAAAACm1heENhblNlbGwJAAACAAAAAQIAAAAmQ2FuJ3QgcmVzdGFydCBhdWN0aW9uLCBtYXggYW1vdW50IHNvbGQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlFbmRIZWlnaHQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAAllbmRIZWlnaHQJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAEmtleUhpZ2hlc3RCaWRCaWRJZAAAAAEFAAAABWFydElkBQAAAANuaWwJAAACAAAAAQIAAAAkUHJldmlvdXMgYXVjdGlvbiBpc24ndCBjb21wbGV0ZWQgeWV0AQAAABRhY2NlcHRCaWRUcmFkaXRpb25hbAAAAAUAAAABaQAAAAVhcnRJZAAAAAZpc3N1ZXIAAAAFYmlkSWQAAAAIYmlkT3duZXIEAAAACWVuZEhlaWdodAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAxrZXlFbmRIZWlnaHQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxoaWdoZXN0QmlkSWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlIaWdoZXN0QmlkQmlkSWQAAAABBQAAAAVhcnRJZAMJAABmAAAAAgUAAAAGaGVpZ2h0BQAAAAllbmRIZWlnaHQDCQAAAAAAAAIFAAAABWJpZElkBQAAAAxoaWdoZXN0QmlkSWQEAAAAC2J1eU1pbnREYXRhCQEAAAAHYnV5TWludAAAAAYFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkBQAAAAhiaWRPd25lcgYEAAAAEnJlc3RhcnRBdWN0aW9uRGF0YQkBAAAA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b2xsZWN0aW9uAAAADXN1YmNvbGxlY3Rpb24EAAAADHQwMTc3NDAxNzc4MQkBAAAADGlkQ2FsbGVyRGF0ZQAAAAEFAAAAAWkEAAAABWFydElkCAUAAAAMdDAxNzc0MDE3NzgxAAAAAl8xBAAAAAZjYWxsZXIIBQAAAAx0MDE3NzQwMTc3ODEAAAACXzIEAAAABGRhdGUIBQAAAAx0MDE3NzQwMTc3ODEAAAACXzMDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAFdHlwZXMFAAAABHR5cGUEAAAAD3ZhbGlkYXRlQXJ0d29yawkBAAAAE3ZhbGlkYXRlQXJ0d29ya0RhdGEAAAAFBQAAAAZjYWxsZXIFAAAACmNpZERpc3BsYXkFAAAABG5hbWUFAAAAC2Rlc2NyaXB0aW9uBQAAAAR0YWdzAwkBAAAAAiE9AAAAAgUAAAAPdmFsaWRhdGVBcnR3b3JrAgAAAAAJAAACAAAAAQIAAAAVU29tZXRoaW5nIHdlbnQgd3JvbmchBAAAAAx0MDE4MTcwMTgyMTIJAQAAAA92YWxpZGF0ZVBheW1lbnQAAAABBQAAAAFpBAAAAAZhbW91bnQIBQAAAAx0MDE4MTcwMTgyMTIAAAACXzEEAAAAB2Fzc2V0SWQIBQAAAAx0MDE4MTcwMTgyMTIAAAACXzIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABBQAAAAZhbW91bnQJAAACAAAAAQIAAAAUU29tZXRoaW5nIHdlbnQgd3JvbmcEAAAAC3ByZXZpZXdEYXRhAwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAADFByZXZpZXd0eXBlcwUAAAAEdHlwZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAANa2V5UHJldmlld0NpZAAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAB3ByZXZpZXcFAAAAA25pbAUAAAADbmlsBAAAABZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlCQAD/AAAAAQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABCYAAAABBQAAAA9jb2xsZWN0aW9uc0RhcHAJAAEsAAAAAgUAAAAPY29sbGVjdGlvbnNEYXBwAgAAAAogbm90IGZvdW5kAgAAABFjb2xsZWN0aW9uUHJvY2VzcwkABEwAAAACBQAAAApjb2xsZWN0aW9uCQAETAAAAAIFAAAADXN1YmNvbGxlY3Rpb24JAARMAAAAAgUAAAAGY2FsbGVyBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAWaW52b2tlQ29sbGVjdGlvbkNyZWF0ZQUAAAAWaW52b2tlQ29sbGVjdGlvbkNyZWF0ZQQAAAAMaWRDb2xsZWN0aW9uBAAAAAckbWF0Y2gwBQAAABZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAXIFAAAAByRtYXRjaDAFAAAAAXIJAAACAAAAAQIAAAAXSW5jb3JyZWN0IGludm9rZSByZXN1bHQEAAAACmVudHJ5RXhpc3QJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIDCQEAAAACIT0AAAACBQAAAAplbnRyeUV4aXN0AgAAAAAJAAACAAAAAQIAAAAUWW91IGFscmVhZHkgYWRkZWQgaXQEAAAACWhhc2hFeGlzdAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAMJAQAAAAIhPQAAAAIFAAAACWhhc2hFeGlzdAIAAAAACQAAAgAAAAECAAAAH1RoaXMgaGFzaCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQJAAROAAAAAgUAAAALcHJldmlld0RhdGEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmtleU93bmVyQnlIYXNoAAAAAQUAAAAKc2hhMjU2SGFzaAUAAAAGY2FsbGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlUeGlkQnlIYXNoT3duZXIAAAACBQAAAApzaGEyNTZIYXNoBQAAAAZjYWxsZXIFAAAABWFydElkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5RGF0ZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAABGRhdGUJ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AQAAAAtrZXlEdXJhdGlvbgAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAACGR1cmF0aW9uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5RW5kSGVpZ2h0AAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAJZW5kSGVpZ2h0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlBc3NldElkQWNjZXB0ZWQAAAACBQAAAAZjYWxsZXIFAAAABWFydElkBQAAAAdhc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmNhbGxlcgUAAAAFYXJ0SWQFAAAAC2F1Y3Rpb25UeXBlBQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAApidXlBcnR3b3JrAAAAAgAAAAVhcnRJZAAAAAZpc3N1ZXIEAAAAC2F1Y3Rpb25UeXBlCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAOa2V5QXVjdGlvblR5cGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthdWN0aW9uVHlwZQUAAAAMYXVjdGlvblR5cGUzCQEAAAAHYnV5TWludAAAAAYFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXICAAAAAAIAAAAABwkAAAIAAAABAgAAADREaXJlY3QgYnV5IG9ubHkgYWxsb3dlZCB3aGVuIG5vIGF1Y3Rpb24gdHlwZSBpcyBzZXQhAAAAAWkBAAAACnVwZGF0ZVRhZ3MAAAADAAAABmFydGlzdAAAAAVhcnRJZAAAAAR0YWdzBAAAAAZjYWxsZXIJAAQlAAAAAQkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5AwkBAAAAD2NvbnRhaW5zRWxlbWVudAAAAAIFAAAABm93bmVycwUAAAAGY2FsbGVyAwkAAGYAAAACCQABkAAAAAEJAAS1AAAAAgUAAAAEdGFncwIAAAABLAAAAAAAAAAABQkAAAIAAAABAgAAAAs1IHRhZ3MgbWF4LgQAAAAHdGFnc09sZAkBAAAAFWdldFN0cmluZ0J5S2V5T3JFcnJvcgAAAAIJAQAAAAdrZXlUYWdzAAAAAgUAAAAGYXJ0aXN0BQAAAAVhcnRJZAIAAAAvTm8gdGFncyBjcmVhdGVkIHdpdGggdGhpcyBrZXksIHNvIGNhbid0IHVwZGF0ZSEDCQAAAAAAAAIFAAAABHRhZ3MFAAAAB3RhZ3NPbGQJAAACAAAAAQIAAAAeVGFncyBhcmUgdGhlIHNhbWUgYXMgb2xkIHRhZ3MhCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAdrZXlUYWdzAAAAAgUAAAAGYXJ0aXN0BQAAAAVhcnRJZAUAAAAEdGFncwUAAAADbmlsCQAAAgAAAAECAAAAAm5vAAAAAWkBAAAAC2RlbGV0ZUVudHJ5AAAAAQAAAAVlbnRyeQQAAAAGY2FsbGVyCQAEJQAAAAEJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQMJAQAAAA9jb250YWluc0VsZW1lbnQAAAACBQAAAAZvd25lcnMFAAAABmNhbGxlcgkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAAVlbnRyeQUAAAADbmlsCQAAAgAAAAECAAAAAm5vAAAAAWkBAAAABnNldEJpZAAAAAIAAAAFYXJ0SWQAAAAGaXNzdWVyBAAAAAthdWN0aW9uVHlwZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMQkBAAAAFHNldEJpZE5vblRyYWRpdGlvbmFsAAAAAwUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMgkBAAAAEXNldEJpZFRyYWRpdGlvbmFsAAAAAwUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAWVW5rbm93biBhdWN0aW9uIHR5cGUgOgUAAAALYXVjdGlvblR5cGUCAAAAGywgcGxlYXNlIGNvbnRhY3QgdGhlIGFkbWlucwAAAAFpAQAAAAlhY2NlcHRCaWQAAAAEAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAAAAAhiaWRPd25lcgQAAAALYXVjdGlvblR5cGUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA5rZXlBdWN0aW9uVHlwZQAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAAAAAAAIFAAAAC2F1Y3Rpb25UeXBlBQAAAAxhdWN0aW9uVHlwZTEJAQAAABdhY2NlcHRCaWROb25UcmFkaXRpb25hbAAAAAUFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkBQAAAAhiaWRPd25lcgMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMgkBAAAAFGFjY2VwdEJpZFRyYWRpdGlvbmFsAAAABQUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQFAAAACGJpZE93bmVyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABZVbmtub3duIGF1Y3Rpb24gdHlwZSA6BQAAAAthdWN0aW9uVHlwZQIAAAAbLCBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5zAAAAAWkBAAAACWNhbmNlbEJpZAAAAAMAAAAFYXJ0SWQAAAAGaXNzdWVyAAAABWJpZElkBAAAAAthdWN0aW9uVHlwZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADmtleUF1Y3Rpb25UeXBlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMQkBAAAADWNhbmNlbEJpZEltcGwAAAAEBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAkBAAAAGGNhbmNlbEJpZEltcGxUcmFkaXRpb25hbAAAAAQFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkAAAAAE6ghHw=", "height": 1962261, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6mv1jBfZBjEMnbh8cRuRTr8gwX5Y9tun2rhF1ro9DbL2 Next: 9Bu8f8iQDrnm6ba3bXKHCPs4eFfmjCoox6gmCHqrv28x Diff:
OldNewDifferences
2828
2929 let l = valueOrErrorMessage(getString(h, "certDapp"), "certDapp not found")
3030
31-let m = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
31+let m = valueOrErrorMessage(getString(h, "feeDapp"), "feeDapp not found")
3232
33-let n = fromBase58String(getStringValue(h, "USDNAssetId"))
33+let n = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
3434
35-let o = ["IMAGE", "PDF", "VIDEO"]
35+let o = fromBase58String(getStringValue(h, "USDNAssetId"))
3636
37-let p = ["PDF"]
37+let p = ["IMAGE", "PDF", "VIDEO"]
3838
39-let q = 150
39+let q = ["PDF"]
4040
41-let r = valueOrElse(getBoolean(m, "conf_dapp_is_running"), true)
41+let r = valueOrElse(getBoolean(n, "conf_dapp_is_running"), true)
4242
43-let s = valueOrElse(getString(m, "conf_maintenance_msg"), "")
43+let s = valueOrElse(getString(n, "conf_maintenance_msg"), "")
4444
4545 let t = "SUSPENDED"
4646
5454
5555 let y = "DIRECT"
5656
57-func z (d) = valueOrElse(getString(m, d), "")
57+func z (d) = valueOrElse(getString(n, d), "")
5858
5959
6060 func A (d) = valueOrElse(getString(this, d), "")
120120 func aa (Z) = ("nft_artId_" + Z)
121121
122122
123-func ab (J,L) = ((("art_royalty_" + L) + "_") + J)
123+func ab (J,L) = ((("art_onsale_" + L) + "_") + J)
124124
125125
126-func ac (J,L) = ((("art_onsale_" + L) + "_") + J)
126+func ac (J,L) = ((("art_entitlement_" + L) + "_") + J)
127127
128128
129-func ad (J,L) = ((("art_entitlement_" + L) + "_") + J)
129+func ad (J,L) = ((("art_tags_" + L) + "_") + J)
130130
131131
132-func ae (J,L) = ((("art_tags_" + L) + "_") + J)
132+func ae (J,L) = ((("art_type_" + L) + "_") + J)
133133
134134
135-func af (J,L) = ((("art_type_" + L) + "_") + J)
135+func af (J,L) = ((("art_price_" + L) + "_") + J)
136136
137137
138-func ag (J,L) = ((("art_price_" + L) + "_") + J)
138+func ag (J,L) = ((("art_assetAccepted_" + L) + "_") + J)
139139
140140
141-func ah (J,L) = ((("art_assetAccepted_" + L) + "_") + J)
141+func ah (J,ai) = ((("get_hashbytxidaddr_" + ai) + "_") + J)
142142
143143
144-func ai (J,aj) = ((("get_hashbytxidaddr_" + aj) + "_") + J)
144+func aj (ak) = ("get_owner_by_hash_" + ak)
145145
146146
147-func ak (al) = ("get_owner_by_hash_" + al)
147+func al (ak,J) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((ak + J)))))
148148
149149
150-func am (al,J) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((al + J)))))
150+func am (J,L) = ((("collection_" + L) + "_") + J)
151151
152152
153-func an (J,L) = ((("collection_" + L) + "_") + J)
153+let an = D(("certification_fee_" + toBase58String(o)))
154+
155+func ao (T) = valueOrElse(E(S(T)), 0)
154156
155157
156-let ao = D(("certification_fee_" + toBase58String(n)))
157-
158-func ap (T) = valueOrElse(E(S(T)), 0)
159-
160-
161-func aq (L) = {
158+func ap (L) = {
162159 let T = A(R(L))
163160 if ((T == ""))
164161 then 0
165- else ap(T)
162+ else ao(T)
166163 }
167164
168165
169-func ar (as,at) = if ((size(as) == 0))
166+func aq (ar,as) = if ((size(ar) == 0))
170167 then throw("Field cannot be is empty")
171- else if ((size(as) > at))
172- then throw((as + " is too long"))
168+ else if ((size(ar) > as))
169+ then throw((ar + " is too long"))
173170 else true
174171
175172
176-func au (J) = {
177- let av = valueOrElse(getString(m, I(J)), v)
178- if ((av == v))
173+func at (J) = {
174+ let au = valueOrElse(getString(n, I(J)), v)
175+ if ((au == v))
179176 then "Register this account first with 'Account' tab"
180- else if ((av == t))
177+ else if ((au == t))
181178 then "Account suspended"
182- else if ((av == u))
179+ else if ((au == u))
183180 then "Account removed"
184181 else ""
185182 }
186183
187184
188-func aw (J,ax,ay,az,aA) = {
189- let aB = au(J)
190- if ((aB != ""))
191- then throw(aB)
192- else if ((size(ax) == 0))
185+func av (J,aw,ax,ay,az) = {
186+ let aA = at(J)
187+ if ((aA != ""))
188+ then throw(aA)
189+ else if ((size(aw) == 0))
193190 then throw("Display CID cannot be empty")
194- else if ((size(ax) != 46))
191+ else if ((size(aw) != 46))
195192 then throw("This doesn't seem a valid CID!")
196- else if (!(ar(ay, 100)))
193+ else if (!(aq(ax, 100)))
197194 then throw("100 Char. max name")
198- else if (!(ar(az, 1000)))
195+ else if (!(aq(ay, 1000)))
199196 then throw("1000 Char. max description")
200- else if ((size(split(aA, ",")) > 5))
197+ else if ((size(split(az, ",")) > 5))
201198 then throw("5 tags max.")
202199 else ""
203200 }
204201
205202
206-func aC (aD) = if ((size(aD.payments) == 0))
203+func aB (aC) = if ((size(aC.payments) == 0))
207204 then throw("No payment attached")
208205 else {
209- let aE = value(aD.payments[0])
210- let aF = value(aE.amount)
211- $Tuple2(aE, aF)
206+ let aD = value(aC.payments[0])
207+ let aE = value(aD.amount)
208+ $Tuple2(aD, aE)
212209 }
213210
214211
215-func aG (aD) = {
216- let aH = aC(aD)
217- let aE = aH._1
218- let aF = aH._2
219- let aI = if (if (isDefined(aE.assetId))
220- then (aE.assetId == n)
212+func aF (aC) = {
213+ let aG = aB(aC)
214+ let aD = aG._1
215+ let aE = aG._2
216+ let aH = if (if (isDefined(aD.assetId))
217+ then (aD.assetId == o)
221218 else false)
222- then aE.assetId
219+ then aD.assetId
223220 else throw("Only USDN token accepted as transaction fee")
224- if ((aF != ao))
225- then throw(((("Payment amount should be " + toString(ao)) + " but is: ") + toString(aF)))
226- else $Tuple2(aF, aI)
221+ if ((aE != an))
222+ then throw(((("Payment amount should be " + toString(an)) + " but is: ") + toString(aE)))
223+ else $Tuple2(aE, aH)
227224 }
228225
229226
230-func aJ (aK,L) = {
231- let e = getInteger(this, X(aK, L))
227+func aI (aJ,L) = {
228+ let e = getInteger(this, X(aJ, L))
232229 if ($isInstanceOf(e, "Int"))
233230 then {
234231 let f = e
240237 }
241238
242239
243-func aL (aD,aM,aN) = {
244- let aO = aC(aD)
245- let aE = aO._1
246- let aF = aO._2
247- let aI = if (!(isDefined(aE.assetId)))
240+func aK (aC,aL,aM) = {
241+ let aN = aB(aC)
242+ let aD = aN._1
243+ let aE = aN._2
244+ let aH = if (!(isDefined(aD.assetId)))
248245 then throw("Wrong asset id")
249- else if (if ((size(aM) > 0))
250- then (toBase58String(value(aE.assetId)) == aM)
246+ else if (if ((size(aL) > 0))
247+ then (toBase58String(value(aD.assetId)) == aL)
251248 else false)
252- then aE.assetId
249+ then aD.assetId
253250 else throw("Wrong asset id")
254- if (if ((aI == unit))
255- then (aM != "")
251+ if (if ((aH == unit))
252+ then (aL != "")
256253 else false)
257254 then throw("Wrong asset id")
258- else if ((aN != aF))
259- then throw(((("Payment don't match " + toString(aN)) + " ") + toString(aF)))
260- else $Tuple2(aF, aI)
255+ else if ((aM != aE))
256+ then throw(((("Payment don't match " + toString(aM)) + " ") + toString(aE)))
257+ else $Tuple2(aE, aH)
261258 }
262259
263260
264-func aP (aI) = if ((aI != toBase58String(n)))
261+func aO (aH) = if ((aH != toBase58String(o)))
265262 then throw("Only USDN accepted")
266263 else true
267264
268265
269-func aQ (aI,aR) = {
270- let aS = if (a)
266+func aP (aH,aQ) = {
267+ let aR = if (a)
271268 then 1
272- else (ao * 2)
273- if (if (if ((aI == toBase58String(n)))
274- then (aS > aR)
269+ else (an * 2)
270+ if (if (if ((aH == toBase58String(o)))
271+ then (aR > aQ)
275272 else false)
276- then (aR != 0)
273+ then (aQ != 0)
277274 else false)
278- then throw(("Wrong minimum sell price " + toString(aS)))
275+ then throw(("Wrong minimum sell price " + toString(aR)))
279276 else true
280277 }
281278
282279
283-func aT (aI) = if ((aI == "WAVES"))
280+func aS (aH) = if ((aH == "WAVES"))
284281 then throw("Only USDN is accepted!")
285- else fromBase58String(aI)
282+ else fromBase58String(aH)
286283
287284
288-func aU (aV) = {
289- let aW = A((aV + "_OPEN"))
290- if ((aW == ""))
285+func aT (aU) = {
286+ let aV = A((aU + "_OPEN"))
287+ if ((aV == ""))
291288 then throw("Bid not found")
292289 else {
293- let aX = split(aW, "_")
294- let aY = parseIntValue(aX[1])
295- let aZ = aT(aX[0])
296- if ((0 >= aY))
290+ let aW = split(aV, "_")
291+ let aX = parseIntValue(aW[1])
292+ let aY = aS(aW[0])
293+ if ((0 >= aX))
297294 then throw("Wrong amount")
298- else $Tuple2(aY, aZ)
295+ else $Tuple2(aX, aY)
299296 }
300297 }
301298
302299
303-func ba (aD) = if (!(r))
300+func aZ (aC) = if (!(r))
304301 then throw(s)
305- else $Tuple3(toBase58String(aD.transactionId), toBase58String(aD.caller.bytes), lastBlock.timestamp)
302+ else $Tuple3(toBase58String(aC.transactionId), toBase58String(aC.caller.bytes), lastBlock.timestamp)
306303
307304
308-func bb (aD,bc,L,bd) = {
309- let be = (toBase58String(aD.caller.bytes) == bc)
310- let bf = E("total_nft_issued")
311- let bg = A(M(bc, L))
312- if ((bg == ""))
305+func ba (aC,bb,L,bc) = {
306+ let bd = (toBase58String(aC.caller.bytes) == bb)
307+ let be = E("total_nft_issued")
308+ let bf = A(M(bb, L))
309+ if ((bf == ""))
313310 then throw("Art doesn't exist")
314311 else {
315- let bh = F(ac(bc, L))
316- let bi = E(X(bc, L))
317- let aN = valueOrElse(E(ag(bc, L)), (ao * 2))
318- let aM = if (be)
319- then toBase58String(n)
320- else A(ah(bc, L))
321- let bj = E(Q(bc, L))
322- if (if (if (!(bd))
323- then !(be)
312+ let bg = F(ab(bb, L))
313+ let bh = E(X(bb, L))
314+ let aM = valueOrElse(E(af(bb, L)), (an * 2))
315+ let aL = if (bd)
316+ then toBase58String(o)
317+ else A(ag(bb, L))
318+ let bi = E(Q(bb, L))
319+ if (if (if (!(bc))
320+ then !(bd)
324321 else false)
325- then if (if ((0 >= aN))
322+ then if (if ((0 >= aM))
326323 then true
327- else !(bh))
324+ else !(bg))
328325 then true
329- else (0 >= bj)
326+ else (0 >= bi)
330327 else false)
331328 then throw("Art not for sale")
332- else if (if (if (!(bd))
333- then be
329+ else if (if (if (!(bc))
330+ then bd
334331 else false)
335- then (0 >= bj)
332+ then (0 >= bi)
336333 else false)
337334 then throw("Max issuable not set")
338- else $Tuple7(bf, bg, bi, aN, aM, bj, bh)
335+ else $Tuple7(be, bf, bh, aM, aL, bi, bg)
339336 }
340337 }
341338
342339
343-func bk (aD,J,bc,L,bl,T,aM,aN,bd) = {
344- let aB = au(bc)
345- if (if (bd)
346- then (aB != "")
340+func bj (aC,J,bb,L,bk,T,aL,aM,bc) = {
341+ let aA = at(bb)
342+ if (if (bc)
343+ then (aA != "")
347344 else false)
348- then throw(aB)
345+ then throw(aA)
349346 else {
350- let aV = ((((((("bid_" + L) + "_") + bc) + "_") + bl) + "_") + T)
351- let bm = if (bd)
352- then aU(aV)
353- else aL(aD, aM, aN)
354- let aF = bm._1
355- let aI = bm._2
356- $Tuple3(aV, aF, aI)
347+ let aU = ((((((("bid_" + L) + "_") + bb) + "_") + bk) + "_") + T)
348+ let bl = if (bc)
349+ then aT(aU)
350+ else aK(aC, aL, aM)
351+ let aE = bl._1
352+ let aH = bl._2
353+ $Tuple3(aU, aE, aH)
357354 }
358355 }
359356
360357
361-func bn (bc,aI,aF,bi,bj) = {
362- let bo = if ((aI == n))
363- then q
364- else throw("Only USDN is accepted!")
365- let bp = fraction(aF, bo, 1000)
366- let bq = (aF - bp)
367- if ((bi == bj))
368- then throw("Art sold out")
369- else {
370- let br = (bi + 1)
371- $Tuple3(bp, bq, br)
372- }
358+func bm (bb,aH,aE,bh,bi) = $Tuple3(0, 0, 0)
359+
360+
361+func bn (bb,L,bf,bo,bi,be,J,bk,T,aC,bg) = {
362+ let bp = ((((((((("Creator: " + bb) + ",ArtID: ") + L) + ",Artwork name: ") + bf) + ",Issue: ") + toString(bo)) + "/") + toString(bi))
363+ let bq = if (if ((bo == bi))
364+ then true
365+ else !(bg))
366+ then false
367+ else true
368+ let br = if ((bk != ""))
369+ then addressFromStringValue(bk)
370+ else aC.caller
371+ $Tuple3(bq, br, bp)
373372 }
374373
375374
376-func bs (bc,L,bg,br,bj,bf,J,bl,T,aD,bh) = {
377- let bt = ((((((((("Creator: " + bc) + ",ArtID: ") + L) + ",Artwork name: ") + bg) + ",Issue: ") + toString(br)) + "/") + toString(bj))
378- let bu = if (if ((br == bj))
379- then true
380- else !(bh))
381- then false
382- else true
383- let bv = if ((bl != ""))
384- then addressFromStringValue(bl)
385- else aD.caller
386- $Tuple3(bu, bv, bt)
375+func bs (aH,aU,bt) = {
376+ let bu = if (!(isDefined(aH)))
377+ then throw("Only USDN is accepted")
378+ else toBase58String(value(aH))
379+ let aV = A((aU + "_OPEN"))
380+ let bv = DeleteEntry((aU + "_OPEN"))
381+ let bw = StringEntry((aU + "_CLOSED"), ((aV + "_") + toString(bt)))
382+ $Tuple3(bu, bv, bw)
387383 }
388384
389385
390-func bw (bx) = if ((4 > bx))
391- then "SSR"
392- else if ((11 > bx))
393- then "SR"
394- else if ((101 > bx))
395- then "R"
396- else "N"
397-
398-
399-func by (aI,aV,bz) = {
400- let bA = if (!(isDefined(aI)))
401- then throw("Only USDN is accepted")
402- else toBase58String(value(aI))
403- let aW = A((aV + "_OPEN"))
404- let bB = DeleteEntry((aV + "_OPEN"))
405- let bC = StringEntry((aV + "_CLOSED"), ((aW + "_") + toString(bz)))
406- $Tuple3(bA, bB, bC)
407- }
408-
409-
410-func bD (aD,L,bc,T,bl,bd) = {
411- let bE = ba(aD)
412- let bF = bE._1
413- let J = bE._2
414- let bz = bE._3
415- let bG = bb(aD, bc, L, bd)
416- let bf = bG._1
417- let bg = bG._2
418- let bi = bG._3
419- let aN = bG._4
420- let aM = bG._5
421- let bj = bG._6
422- let bh = bG._7
423- let aW = bk(aD, J, bc, L, bl, T, aM, aN, bd)
424- let aV = aW._1
425- let aF = aW._2
426- let aI = aW._3
427- let bH = bn(bc, value(aI), aF, bi, bj)
428- let bp = bH._1
429- let bq = bH._2
430- let br = bH._3
431- let bI = bs(bc, L, bg, br, bj, bf, J, bl, T, aD, bh)
432- let bu = bI._1
433- let bv = bI._2
434- let bt = bI._3
435- let bJ = invoke(this, "mintNft", [bf, bt, toString(bv)], nil)
436- if ((bJ == bJ))
386+func bx (aC,L,bb,T,bk,bc) = {
387+ let by = aZ(aC)
388+ let bz = by._1
389+ let J = by._2
390+ let bt = by._3
391+ let bA = ba(aC, bb, L, bc)
392+ let be = bA._1
393+ let bf = bA._2
394+ let bh = bA._3
395+ let aM = bA._4
396+ let aL = bA._5
397+ let bi = bA._6
398+ let bg = bA._7
399+ let aV = bj(aC, J, bb, L, bk, T, aL, aM, bc)
400+ let aU = aV._1
401+ let aE = aV._2
402+ let aH = aV._3
403+ let bo = if ((bh == bi))
404+ then throw("Max items sold")
405+ else (bh + 1)
406+ let bB = bn(bb, L, bf, bo, bi, be, J, bk, T, aC, bg)
407+ let bq = bB._1
408+ let br = bB._2
409+ let bp = bB._3
410+ let bC = invoke(this, "mintNft", [be, bp, toString(br)], nil)
411+ if ((bC == bC))
437412 then {
438- let bK = {
439- let e = bJ
413+ let bD = {
414+ let e = bC
440415 if ($isInstanceOf(e, "String"))
441416 then {
442- let bL = e
443- bL
417+ let bE = e
418+ bE
444419 }
445420 else throw("Incorrect invoke result")
446421 }
447- let bM = by(aI, aV, bz)
448- let bA = bM._1
449- let bB = bM._2
450- let bC = bM._3
451- let bN = ((((((("art_sold_" + toString(br)) + "_of_") + toString(bj)) + "_") + L) + "_") + bc)
452- let bO = bw(br)
453- let bP = if (!(bd))
454- then ((((((((((J + "_") + toString(bz)) + "_") + bF) + "_") + toString(aN)) + "_") + aM) + "_") + bK)
455- else ((((((((((toString(bv) + "_") + toString(bz)) + "_") + bF) + "_") + toString(aF)) + "_") + bA) + "_") + bK)
456- let bQ = StringEntry(bN, bP)
457- let bR = [IntegerEntry(X(bc, L), br), StringEntry(("nft_" + bK), bN), StringEntry(("nft_rarity_" + bK), bO), IntegerEntry("total_nft_issued", (bf + 1)), BooleanEntry(ac(bc, L), bu), ScriptTransfer(Address(fromBase58String(bc)), bq, aI), ScriptTransfer(Address(fromBase58String(k)), bp, aI), StringEntry(Y(bK), bc), StringEntry(aa(bK), L)]
458- let bS = invoke(addressFromStringValue(l), "createCert", [toString(bv), bK, bc], nil)
459- if ((bS == bS))
460- then if (bd)
461- then (((bR :+ bQ) :+ bC) :+ bB)
462- else bQ :: bR
422+ let bF = bs(aH, aU, bt)
423+ let bu = bF._1
424+ let bv = bF._2
425+ let bw = bF._3
426+ let bG = ((((((("art_sold_" + toString(bo)) + "_of_") + toString(bi)) + "_") + L) + "_") + bb)
427+ let bH = if (!(bc))
428+ then ((((((((((J + "_") + toString(bt)) + "_") + bz) + "_") + toString(aM)) + "_") + aL) + "_") + bD)
429+ else ((((((((((toString(br) + "_") + toString(bt)) + "_") + bz) + "_") + toString(aE)) + "_") + bu) + "_") + bD)
430+ let bI = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "payFee", [L], [AttachedPayment(aH, aE)])
431+ if ((bI == bI))
432+ then {
433+ let bJ = StringEntry(bG, bH)
434+ let bK = [IntegerEntry(X(bb, L), bo), StringEntry(("nft_" + bD), bG), IntegerEntry("total_nft_issued", (be + 1)), BooleanEntry(ab(bb, L), bq), StringEntry(Y(bD), bb), StringEntry(aa(bD), L)]
435+ let bL = invoke(addressFromStringValue(l), "createCert", [toString(br), bD, bb], nil)
436+ if ((bL == bL))
437+ then if (bc)
438+ then (((bK :+ bJ) :+ bw) :+ bv)
439+ else bJ :: bK
440+ else throw("Strict value is not equal to itself.")
441+ }
463442 else throw("Strict value is not equal to itself.")
464443 }
465444 else throw("Strict value is not equal to itself.")
466445 }
467446
468447
469-func bT (aD,L,bc) = {
470- let bU = ba(aD)
471- let bF = bU._1
472- let J = bU._2
473- let bz = bU._3
474- let bV = aC(aD)
475- let aE = bV._1
476- let aF = bV._2
477- let aI = if (!(isDefined(aE.assetId)))
448+func bM (aC,L,bb) = {
449+ let bN = aZ(aC)
450+ let bz = bN._1
451+ let J = bN._2
452+ let bt = bN._3
453+ let bO = aB(aC)
454+ let aD = bO._1
455+ let aE = bO._2
456+ let aH = if (!(isDefined(aD.assetId)))
478457 then throw("Only USDN is accepted!")
479- else toBase58String(value(aE.assetId))
480- let bW = E(("current_bidamount_" + L))
481- let bX = valueOrElse(E(ag(bc, L)), (ao * 2))
482- if (!(aP(aI)))
458+ else toBase58String(value(aD.assetId))
459+ let bP = E(("current_bidamount_" + L))
460+ let bQ = valueOrElse(E(af(bb, L)), (an * 2))
461+ if (!(aO(aH)))
483462 then throw("asset not accepted")
484463 else {
485- let bi = E(X(bc, L))
486- let bj = E(Q(bc, L))
487- if ((0 >= bj))
464+ let bh = E(X(bb, L))
465+ let bi = E(Q(bb, L))
466+ if ((0 >= bi))
488467 then throw("No max edition set for this artwork")
489- else if ((bi >= bj))
468+ else if ((bh >= bi))
490469 then throw("Sold out, you cannot bid")
491- else [StringEntry((((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + bF) + "_OPEN"), ((((aI + "_") + toString(aF)) + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW + 1))]
470+ else [StringEntry((((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + bz) + "_OPEN"), ((((aH + "_") + toString(aE)) + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP + 1))]
492471 }
493472 }
494473
495474
496-func bY (aD,L,bc) = {
497- let bZ = E(V(bc, L))
498- let ca = aq(L)
499- if ((height > bZ))
475+func bR (aC,L,bb) = {
476+ let bS = E(V(bb, L))
477+ let bT = ap(L)
478+ if ((height > bS))
500479 then throw("This auction is finished already!")
501480 else {
502- let cb = ba(aD)
503- let bF = cb._1
504- let J = cb._2
505- let bz = cb._3
506- let cc = aC(aD)
507- let aE = cc._1
508- let aF = cc._2
509- if ((ca >= aF))
510- then throw(("Please place a bid higher than: " + toString(ca)))
481+ let bU = aZ(aC)
482+ let bz = bU._1
483+ let J = bU._2
484+ let bt = bU._3
485+ let bV = aB(aC)
486+ let aD = bV._1
487+ let aE = bV._2
488+ if ((bT >= aE))
489+ then throw(("Please place a bid higher than: " + toString(bT)))
511490 else {
512- let aI = if (!(isDefined(aE.assetId)))
491+ let aH = if (!(isDefined(aD.assetId)))
513492 then throw("Only USDN is accepted!")
514- else toBase58String(value(aE.assetId))
515- let bW = E(("current_bidamount_" + L))
516- let bX = valueOrElse(E(ag(bc, L)), (ao * 2))
517- if (!(aP(aI)))
493+ else toBase58String(value(aD.assetId))
494+ let bP = E(("current_bidamount_" + L))
495+ let bQ = valueOrElse(E(af(bb, L)), (an * 2))
496+ if (!(aO(aH)))
518497 then throw("asset not accepted")
519- else if ((bX > aF))
498+ else if ((bQ > aE))
520499 then throw("Bid is below min price!")
521500 else {
522- let bi = E(X(bc, L))
523- let bj = E(Q(bc, L))
524- if ((0 >= bj))
501+ let bh = E(X(bb, L))
502+ let bi = E(Q(bb, L))
503+ if ((0 >= bi))
525504 then throw("No max edition set for this artwork")
526- else if ((bi >= bj))
505+ else if ((bh >= bi))
527506 then throw("Sold out, you cannot bid")
528- else [StringEntry((((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + bF) + "_OPEN"), ((((aI + "_") + toString(aF)) + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW + 1)), StringEntry(R(L), toBase58String(aD.transactionId)), IntegerEntry(S(toBase58String(aD.transactionId)), aF)]
507+ else [StringEntry((((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + bz) + "_OPEN"), ((((aH + "_") + toString(aE)) + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP + 1)), StringEntry(R(L), toBase58String(aC.transactionId)), IntegerEntry(S(toBase58String(aC.transactionId)), aE)]
529508 }
530509 }
531510 }
532511 }
533512
534513
535-func cd (aD,L,bc,T,bl) = {
536- let J = toBase58String(aD.caller.bytes)
537- if ((J != bc))
514+func bW (aC,L,bb,T,bk) = {
515+ let J = toBase58String(aC.caller.bytes)
516+ if ((J != bb))
538517 then throw("You cannot do this action")
539- else bD(aD, L, bc, T, bl, true)
518+ else bx(aC, L, bb, T, bk, true)
540519 }
541520
542521
543-func ce (L,bc) = {
544- let bi = E(X(bc, L))
545- let bj = E(Q(bc, L))
546- let cf = E(V(bc, L))
547- let cg = E(U(bc, L))
548- let bZ = (cg + height)
549- if ((height > cf))
550- then if ((bi == bj))
522+func bX (L,bb) = {
523+ let bh = E(X(bb, L))
524+ let bi = E(Q(bb, L))
525+ let bY = E(V(bb, L))
526+ let bZ = E(U(bb, L))
527+ let bS = (bZ + height)
528+ if ((height > bY))
529+ then if ((bh == bi))
551530 then throw("Can't restart auction, max amount sold")
552- else [IntegerEntry(V(bc, L), bZ), DeleteEntry(R(L))]
531+ else [IntegerEntry(V(bb, L), bS), DeleteEntry(R(L))]
553532 else throw("Previous auction isn't completed yet")
554533 }
555534
556535
557-func ch (aD,L,bc,T,bl) = {
558- let bZ = E(V(bc, L))
559- let ci = A(R(L))
560- if ((height > bZ))
561- then if ((T == ci))
536+func ca (aC,L,bb,T,bk) = {
537+ let bS = E(V(bb, L))
538+ let cb = A(R(L))
539+ if ((height > bS))
540+ then if ((T == cb))
562541 then {
563- let cj = bD(aD, L, bc, T, bl, true)
564- let ck = ce(L, bc)
565- (ck ++ cj)
542+ let cc = bx(aC, L, bb, T, bk, true)
543+ let cd = bX(L, bb)
544+ (cd ++ cc)
566545 }
567546 else throw("This is not the winning bid!")
568547 else throw("This auction is not yet finished!")
569548 }
570549
571550
572-func cl (aD,L,bc,T) = {
573- let cm = ba(aD)
574- let bF = cm._1
575- let J = cm._2
576- let bz = cm._3
577- let bW = E(("current_bidamount_" + L))
578- let aV = ((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + T)
579- let aW = B((aV + "_OPEN"), "Bid not found")
580- let aX = split(aW, "_")
581- let aI = aT(aX[0])
582- let cn = "CANCELED"
583-[DeleteEntry((aV + "_OPEN")), StringEntry(((aV + "_") + cn), ((aW + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW - 1)), ScriptTransfer(Address(fromBase58String(J)), parseIntValue(aX[1]), aI)]
551+func ce (aC,L,bb,T) = {
552+ let cf = aZ(aC)
553+ let bz = cf._1
554+ let J = cf._2
555+ let bt = cf._3
556+ let bP = E(("current_bidamount_" + L))
557+ let aU = ((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + T)
558+ let aV = B((aU + "_OPEN"), "Bid not found")
559+ let aW = split(aV, "_")
560+ let aH = aS(aW[0])
561+ let cg = "CANCELED"
562+[DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + cg), ((aV + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP - 1)), ScriptTransfer(Address(fromBase58String(J)), parseIntValue(aW[1]), aH)]
584563 }
585564
586565
587-func co (aD,L,bc,T) = {
588- let cm = ba(aD)
589- let bF = cm._1
590- let J = cm._2
591- let bz = cm._3
592- let bW = E(("current_bidamount_" + L))
593- let aV = ((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + T)
594- let aW = B((aV + "_OPEN"), "Bid not found")
595- let aX = split(aW, "_")
596- let aI = aT(aX[0])
597- let cn = "CANCELED"
598- let aY = parseIntValue(aX[1])
599- let ci = A(R(L))
600- if ((T == ci))
566+func ch (aC,L,bb,T) = {
567+ let cf = aZ(aC)
568+ let bz = cf._1
569+ let J = cf._2
570+ let bt = cf._3
571+ let bP = E(("current_bidamount_" + L))
572+ let aU = ((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + T)
573+ let aV = B((aU + "_OPEN"), "Bid not found")
574+ let aW = split(aV, "_")
575+ let aH = aS(aW[0])
576+ let cg = "CANCELED"
577+ let aX = parseIntValue(aW[1])
578+ let cb = A(R(L))
579+ if ((T == cb))
601580 then throw("You can't cancel the highest bid!")
602- else [DeleteEntry((aV + "_OPEN")), StringEntry(((aV + "_") + cn), ((aW + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW - 1)), ScriptTransfer(Address(fromBase58String(J)), aY, aI)]
581+ else [DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + cg), ((aV + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP - 1)), ScriptTransfer(Address(fromBase58String(J)), aX, aH)]
603582 }
604583
605584
606-@Callable(aD)
607-func initDapp (cp) = if ((aD.caller != this))
585+@Callable(aC)
586+func initDapp (ci) = if ((aC.caller != this))
608587 then throw("You cannot do this action")
609588 else if ((g != ""))
610589 then throw("oracle already set, you can't override!")
611- else [StringEntry(b, cp)]
590+ else [StringEntry(b, ci)]
612591
613592
614593
615-@Callable(aD)
616-func restartAuctionManual (L) = if ((aq(L) != 0))
594+@Callable(aC)
595+func restartAuctionManual (L) = if ((ap(L) != 0))
617596 then throw("Please accept the highest bid!")
618- else ce(L, toBase58String(aD.caller.bytes))
597+ else bX(L, toBase58String(aC.caller.bytes))
619598
620599
621600
622-@Callable(aD)
623-func mintNft (bf,bt,bv) = if ((aD.caller == this))
601+@Callable(aC)
602+func mintNft (be,bp,br) = if ((aC.caller == this))
624603 then {
625- let cq = Address(fromBase58String(bv))
626- let cr = Issue(("SCONEX_" + toString((bf + 1))), bt, 1, 0, false)
627- let bK = calculateAssetId(cr)
628- $Tuple2([cr, ScriptTransfer(cq, 1, bK)], toBase58String(bK))
604+ let cj = Address(fromBase58String(br))
605+ let ck = Issue(("SCONEX_" + toString((be + 1))), bp, 1, 0, false)
606+ let bD = calculateAssetId(ck)
607+ $Tuple2([ck, ScriptTransfer(cj, 1, bD)], toBase58String(bD))
629608 }
630609 else throw("Only the dApp can mint NFT's")
631610
632611
633612
634-@Callable(aD)
635-func addArtwork (al,ay,az,aA,cs,ax,ct,cu,cv,cw) = {
636- let cx = ba(aD)
637- let L = cx._1
638- let J = cx._2
639- let bz = cx._3
640- if (containsElement(o, cs))
613+@Callable(aC)
614+func addArtwork (ak,ax,ay,az,cl,aw,cm,cn,co,cp) = {
615+ let cq = aZ(aC)
616+ let L = cq._1
617+ let J = cq._2
618+ let bt = cq._3
619+ if (containsElement(p, cl))
641620 then {
642- let cy = aw(J, ax, ay, az, aA)
643- if ((cy != ""))
621+ let cr = av(J, aw, ax, ay, az)
622+ if ((cr != ""))
644623 then throw("Something went wrong!")
645624 else {
646- let cz = aG(aD)
647- let aF = cz._1
648- let aI = cz._2
649- if (!(isDefined(aF)))
625+ let cs = aF(aC)
626+ let aE = cs._1
627+ let aH = cs._2
628+ if (!(isDefined(aE)))
650629 then throw("Something went wrong")
651630 else {
652- let cA = if (containsElement(p, cs))
653- then [StringEntry(P(J, L), cu)]
631+ let ct = if (containsElement(q, cl))
632+ then [StringEntry(P(J, L), cn)]
654633 else nil
655- let cB = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [cv, cw, J], nil)
656- if ((cB == cB))
634+ let cu = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [co, cp, J], nil)
635+ if ((cu == cu))
657636 then {
658- let cC = {
659- let e = cB
637+ let cv = {
638+ let e = cu
660639 if ($isInstanceOf(e, "String"))
661640 then {
662- let bL = e
663- bL
641+ let bE = e
642+ bE
664643 }
665644 else throw("Incorrect invoke result")
666645 }
667- let cD = A(am(al, J))
668- if ((cD != ""))
646+ let cw = A(al(ak, J))
647+ if ((cw != ""))
669648 then throw("You already added it")
670649 else {
671- let cE = A(ak(al))
672- if ((cE != ""))
650+ let cx = A(aj(ak))
651+ if ((cx != ""))
673652 then throw("This hash is already registered")
674- else (cA ++ [StringEntry(ak(al), J), StringEntry(am(al, J), L), IntegerEntry(K(J, L), bz), StringEntry(M(J, L), ay), StringEntry(N(J, L), az), StringEntry(O(J, L), ax), StringEntry(af(J, L), cs), StringEntry(ae(J, L), aA), IntegerEntry(Q(J, L), 0), IntegerEntry(X(J, L), 0), BooleanEntry(ac(J, L), false), StringEntry(ai(J, L), al), StringEntry(ad(J, L), ct), ScriptTransfer(Address(fromBase58String(k)), aF, aI)])
653+ else (ct ++ [StringEntry(aj(ak), J), StringEntry(al(ak, J), L), IntegerEntry(K(J, L), bt), StringEntry(M(J, L), ax), StringEntry(N(J, L), ay), StringEntry(O(J, L), aw), StringEntry(ae(J, L), cl), StringEntry(ad(J, L), az), IntegerEntry(Q(J, L), 0), IntegerEntry(X(J, L), 0), BooleanEntry(ab(J, L), false), StringEntry(ah(J, L), ak), StringEntry(ac(J, L), cm), ScriptTransfer(Address(fromBase58String(k)), aE, aH)])
675654 }
676655 }
677656 else throw("Strict value is not equal to itself.")
683662
684663
685664
686-@Callable(aD)
687-func sellArtwork (L,aR,cF,aI,cG,cg,cH) = {
688- let cI = ba(aD)
689- let bF = cI._1
690- let J = cI._2
691- let bg = A(M(J, L))
692- if ((0 > cH))
693- then throw("Royalty percentage should be above 0")
694- else if ((cH > 85))
695- then throw("Royalty percentage should be below 85")
696- else if (!(containsElement([w, x, y], cG)))
697- then throw("We don't know this auction type")
698- else if ((bg == ""))
699- then throw("This art doesn't match your account")
700- else {
701- let bW = E(("current_bidamount_" + L))
702- if (!(aP(aI)))
703- then throw("Something went wrong!")
704- else if (!(aQ(aI, aR)))
705- then throw("Something went wrong!")
706- else {
707- let aB = au(J)
708- if ((aB != ""))
709- then throw(aB)
665+@Callable(aC)
666+func sellArtwork (L,aQ,cy,aH,cz,bZ,cA,cB,cC,cD,cE,cF) = {
667+ let bI = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [L, k, "", "", 15, 0, 0], nil)
668+ if ((bI == bI))
669+ then {
670+ let cG = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "creatorSplitFee", [L, cA, cB, cC, cD, cE, cF], nil)
671+ if ((cG == cG))
672+ then {
673+ let cH = aZ(aC)
674+ let bz = cH._1
675+ let J = cH._2
676+ let bf = A(M(J, L))
677+ if (!(containsElement([w, x, y], cz)))
678+ then throw("We don't know this auction type")
679+ else if ((bf == ""))
680+ then throw("This art doesn't match your account")
681+ else {
682+ let bP = E(("current_bidamount_" + L))
683+ if (!(aO(aH)))
684+ then throw("Something went wrong!")
685+ else if (!(aP(aH, aQ)))
686+ then throw("Something went wrong!")
710687 else {
711- let bi = E(X(J, L))
712- let bj = E(Q(J, L))
713- if ((cF > 10000))
714- then throw("10000 editions max per artwork")
715- else if (if ((bi != 0))
716- then (bi == bj)
717- else false)
718- then throw("Max edition reached.")
719- else if (if ((bi > 0))
720- then (bj != cF)
721- else false)
722- then throw("Cannot change maximum issuable anymore")
723- else if (if ((bW > 0))
724- then (bj != cF)
688+ let aA = at(J)
689+ if ((aA != ""))
690+ then throw(aA)
691+ else {
692+ let bh = E(X(J, L))
693+ let bi = E(Q(J, L))
694+ if ((cy > 10000))
695+ then throw("10000 editions max per artwork")
696+ else if (if ((bh != 0))
697+ then (bh == bi)
725698 else false)
726- then throw("Cannot change maximum issuable with active orders")
727- else {
728- let bu = if (if ((aR > 0))
729- then (cF > 0)
699+ then throw("Max edition reached.")
700+ else if (if ((bh > 0))
701+ then (bi != cy)
702+ else false)
703+ then throw("Cannot change maximum issuable anymore")
704+ else if (if ((bP > 0))
705+ then (bi != cy)
730706 else false)
731- then true
732- else false
733- let bZ = (cg + height)
734-[BooleanEntry(ac(J, L), bu), IntegerEntry(ag(J, L), aR), IntegerEntry(Q(J, L), cF), IntegerEntry(U(J, L), cg), IntegerEntry(V(J, L), bZ), StringEntry(ah(J, L), aI), StringEntry(W(J, L), cG), IntegerEntry(ab(J, L), cH)]
735- }
707+ then throw("Cannot change maximum issuable with active orders")
708+ else {
709+ let bq = if (if ((aQ > 0))
710+ then (cy > 0)
711+ else false)
712+ then true
713+ else false
714+ let bS = (bZ + height)
715+[BooleanEntry(ab(J, L), bq), IntegerEntry(af(J, L), aQ), IntegerEntry(Q(J, L), cy), IntegerEntry(U(J, L), bZ), IntegerEntry(V(J, L), bS), StringEntry(ag(J, L), aH), StringEntry(W(J, L), cz)]
716+ }
717+ }
736718 }
737- }
738- }
719+ }
720+ }
721+ else throw("Strict value is not equal to itself.")
722+ }
723+ else throw("Strict value is not equal to itself.")
739724 }
740725
741726
742727
743-@Callable(aD)
744-func buyArtwork (L,bc) = {
745- let cG = A(W(bc, L))
746- if ((cG == y))
747- then bD(aD, L, bc, "", "", false)
728+@Callable(aC)
729+func buyArtwork (L,bb) = {
730+ let cz = A(W(bb, L))
731+ if ((cz == y))
732+ then bx(aC, L, bb, "", "", false)
748733 else throw("Direct buy only allowed when no auction type is set!")
749734 }
750735
751736
752737
753-@Callable(aD)
754-func updateTags (cJ,L,aA) = {
755- let J = toString(addressFromPublicKey(aD.callerPublicKey))
738+@Callable(aC)
739+func updateTags (cI,L,az) = {
740+ let J = toString(addressFromPublicKey(aC.callerPublicKey))
756741 if (containsElement(i, J))
757- then if ((size(split(aA, ",")) > 5))
742+ then if ((size(split(az, ",")) > 5))
758743 then throw("5 tags max.")
759744 else {
760- let cK = B(ae(cJ, L), "No tags created with this key, so can't update!")
761- if ((aA == cK))
745+ let cJ = B(ad(cI, L), "No tags created with this key, so can't update!")
746+ if ((az == cJ))
762747 then throw("Tags are the same as old tags!")
763- else [StringEntry(ae(cJ, L), aA)]
748+ else [StringEntry(ad(cI, L), az)]
764749 }
765750 else throw("no")
766751 }
767752
768753
769754
770-@Callable(aD)
771-func deleteEntry (cL) = {
772- let J = toString(addressFromPublicKey(aD.callerPublicKey))
755+@Callable(aC)
756+func deleteEntry (cK) = {
757+ let J = toString(addressFromPublicKey(aC.callerPublicKey))
773758 if (containsElement(i, J))
774- then [DeleteEntry(cL)]
759+ then [DeleteEntry(cK)]
775760 else throw("no")
776761 }
777762
778763
779764
780-@Callable(aD)
781-func setBid (L,bc) = {
782- let cG = A(W(bc, L))
783- if ((cG == w))
784- then bT(aD, L, bc)
785- else if ((cG == x))
786- then bY(aD, L, bc)
787- else throw((("Unknown auction type :" + cG) + ", please contact the admins"))
765+@Callable(aC)
766+func setBid (L,bb) = {
767+ let cz = A(W(bb, L))
768+ if ((cz == w))
769+ then bM(aC, L, bb)
770+ else if ((cz == x))
771+ then bR(aC, L, bb)
772+ else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
788773 }
789774
790775
791776
792-@Callable(aD)
793-func acceptBid (L,bc,T,bl) = {
794- let cG = A(W(bc, L))
795- if ((cG == w))
796- then cd(aD, L, bc, T, bl)
797- else if ((cG == x))
798- then ch(aD, L, bc, T, bl)
799- else throw((("Unknown auction type :" + cG) + ", please contact the admins"))
777+@Callable(aC)
778+func acceptBid (L,bb,T,bk) = {
779+ let cz = A(W(bb, L))
780+ if ((cz == w))
781+ then bW(aC, L, bb, T, bk)
782+ else if ((cz == x))
783+ then ca(aC, L, bb, T, bk)
784+ else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
800785 }
801786
802787
803788
804-@Callable(aD)
805-func cancelBid (L,bc,T) = {
806- let cG = A(W(bc, L))
807- if ((cG == w))
808- then cl(aD, L, bc, T)
809- else co(aD, L, bc, T)
789+@Callable(aC)
790+func cancelBid (L,bb,T) = {
791+ let cz = A(W(bb, L))
792+ if ((cz == w))
793+ then ce(aC, L, bb, T)
794+ else ch(aC, L, bb, T)
810795 }
811796
812797
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
66 let b = "oracleKey"
77
88 func c (d) = {
99 let e = getString(this, d)
1010 if ($isInstanceOf(e, "String"))
1111 then {
1212 let f = e
1313 f
1414 }
1515 else ""
1616 }
1717
1818
1919 let g = c(b)
2020
2121 let h = value(addressFromString(g))
2222
2323 let i = [getString(h, "owner1"), getString(h, "owner2")]
2424
2525 let j = valueOrErrorMessage(getString(h, "collectionsDapp"), "collectionDapp not found")
2626
2727 let k = valueOrErrorMessage(getString(h, "feeReceiver"), "feeReceiver not found")
2828
2929 let l = valueOrErrorMessage(getString(h, "certDapp"), "certDapp not found")
3030
31-let m = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
31+let m = valueOrErrorMessage(getString(h, "feeDapp"), "feeDapp not found")
3232
33-let n = fromBase58String(getStringValue(h, "USDNAssetId"))
33+let n = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
3434
35-let o = ["IMAGE", "PDF", "VIDEO"]
35+let o = fromBase58String(getStringValue(h, "USDNAssetId"))
3636
37-let p = ["PDF"]
37+let p = ["IMAGE", "PDF", "VIDEO"]
3838
39-let q = 150
39+let q = ["PDF"]
4040
41-let r = valueOrElse(getBoolean(m, "conf_dapp_is_running"), true)
41+let r = valueOrElse(getBoolean(n, "conf_dapp_is_running"), true)
4242
43-let s = valueOrElse(getString(m, "conf_maintenance_msg"), "")
43+let s = valueOrElse(getString(n, "conf_maintenance_msg"), "")
4444
4545 let t = "SUSPENDED"
4646
4747 let u = "REMOVED"
4848
4949 let v = "UNREGISTERED"
5050
5151 let w = "BIDTYPE"
5252
5353 let x = "TRADITIONAL"
5454
5555 let y = "DIRECT"
5656
57-func z (d) = valueOrElse(getString(m, d), "")
57+func z (d) = valueOrElse(getString(n, d), "")
5858
5959
6060 func A (d) = valueOrElse(getString(this, d), "")
6161
6262
6363 func B (d,C) = valueOrErrorMessage(getString(this, d), C)
6464
6565
6666 func D (d) = valueOrErrorMessage(getInteger(h, d), "Integer undefine or 0 in oracle")
6767
6868
6969 func E (d) = valueOrElse(getInteger(this, d), 0)
7070
7171
7272 func F (d) = valueOrElse(getBoolean(this, d), false)
7373
7474
7575 func G (H) = (size(H) == 64)
7676
7777
7878 func I (J) = ("user_status_" + J)
7979
8080
8181 func K (J,L) = ((("art_date_" + L) + "_") + J)
8282
8383
8484 func M (J,L) = ((("art_name_" + L) + "_") + J)
8585
8686
8787 func N (J,L) = ((("art_desc_" + L) + "_") + J)
8888
8989
9090 func O (J,L) = ((("art_display_cid_" + L) + "_") + J)
9191
9292
9393 func P (J,L) = ((("art_preview_cid_" + L) + "_") + J)
9494
9595
9696 func Q (J,L) = ((("art_maxmint_" + L) + "_") + J)
9797
9898
9999 func R (L) = ("art_highestBidBidId_" + L)
100100
101101
102102 func S (T) = ("bid_" + T)
103103
104104
105105 func U (J,L) = ((("art_duration_" + L) + "_") + J)
106106
107107
108108 func V (J,L) = ((("art_endheight_" + L) + "_") + J)
109109
110110
111111 func W (J,L) = ((("art_auctiontype_" + L) + "_") + J)
112112
113113
114114 func X (J,L) = ((("art_issued_" + L) + "_") + J)
115115
116116
117117 func Y (Z) = ("nft_issued_" + Z)
118118
119119
120120 func aa (Z) = ("nft_artId_" + Z)
121121
122122
123-func ab (J,L) = ((("art_royalty_" + L) + "_") + J)
123+func ab (J,L) = ((("art_onsale_" + L) + "_") + J)
124124
125125
126-func ac (J,L) = ((("art_onsale_" + L) + "_") + J)
126+func ac (J,L) = ((("art_entitlement_" + L) + "_") + J)
127127
128128
129-func ad (J,L) = ((("art_entitlement_" + L) + "_") + J)
129+func ad (J,L) = ((("art_tags_" + L) + "_") + J)
130130
131131
132-func ae (J,L) = ((("art_tags_" + L) + "_") + J)
132+func ae (J,L) = ((("art_type_" + L) + "_") + J)
133133
134134
135-func af (J,L) = ((("art_type_" + L) + "_") + J)
135+func af (J,L) = ((("art_price_" + L) + "_") + J)
136136
137137
138-func ag (J,L) = ((("art_price_" + L) + "_") + J)
138+func ag (J,L) = ((("art_assetAccepted_" + L) + "_") + J)
139139
140140
141-func ah (J,L) = ((("art_assetAccepted_" + L) + "_") + J)
141+func ah (J,ai) = ((("get_hashbytxidaddr_" + ai) + "_") + J)
142142
143143
144-func ai (J,aj) = ((("get_hashbytxidaddr_" + aj) + "_") + J)
144+func aj (ak) = ("get_owner_by_hash_" + ak)
145145
146146
147-func ak (al) = ("get_owner_by_hash_" + al)
147+func al (ak,J) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((ak + J)))))
148148
149149
150-func am (al,J) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((al + J)))))
150+func am (J,L) = ((("collection_" + L) + "_") + J)
151151
152152
153-func an (J,L) = ((("collection_" + L) + "_") + J)
153+let an = D(("certification_fee_" + toBase58String(o)))
154+
155+func ao (T) = valueOrElse(E(S(T)), 0)
154156
155157
156-let ao = D(("certification_fee_" + toBase58String(n)))
157-
158-func ap (T) = valueOrElse(E(S(T)), 0)
159-
160-
161-func aq (L) = {
158+func ap (L) = {
162159 let T = A(R(L))
163160 if ((T == ""))
164161 then 0
165- else ap(T)
162+ else ao(T)
166163 }
167164
168165
169-func ar (as,at) = if ((size(as) == 0))
166+func aq (ar,as) = if ((size(ar) == 0))
170167 then throw("Field cannot be is empty")
171- else if ((size(as) > at))
172- then throw((as + " is too long"))
168+ else if ((size(ar) > as))
169+ then throw((ar + " is too long"))
173170 else true
174171
175172
176-func au (J) = {
177- let av = valueOrElse(getString(m, I(J)), v)
178- if ((av == v))
173+func at (J) = {
174+ let au = valueOrElse(getString(n, I(J)), v)
175+ if ((au == v))
179176 then "Register this account first with 'Account' tab"
180- else if ((av == t))
177+ else if ((au == t))
181178 then "Account suspended"
182- else if ((av == u))
179+ else if ((au == u))
183180 then "Account removed"
184181 else ""
185182 }
186183
187184
188-func aw (J,ax,ay,az,aA) = {
189- let aB = au(J)
190- if ((aB != ""))
191- then throw(aB)
192- else if ((size(ax) == 0))
185+func av (J,aw,ax,ay,az) = {
186+ let aA = at(J)
187+ if ((aA != ""))
188+ then throw(aA)
189+ else if ((size(aw) == 0))
193190 then throw("Display CID cannot be empty")
194- else if ((size(ax) != 46))
191+ else if ((size(aw) != 46))
195192 then throw("This doesn't seem a valid CID!")
196- else if (!(ar(ay, 100)))
193+ else if (!(aq(ax, 100)))
197194 then throw("100 Char. max name")
198- else if (!(ar(az, 1000)))
195+ else if (!(aq(ay, 1000)))
199196 then throw("1000 Char. max description")
200- else if ((size(split(aA, ",")) > 5))
197+ else if ((size(split(az, ",")) > 5))
201198 then throw("5 tags max.")
202199 else ""
203200 }
204201
205202
206-func aC (aD) = if ((size(aD.payments) == 0))
203+func aB (aC) = if ((size(aC.payments) == 0))
207204 then throw("No payment attached")
208205 else {
209- let aE = value(aD.payments[0])
210- let aF = value(aE.amount)
211- $Tuple2(aE, aF)
206+ let aD = value(aC.payments[0])
207+ let aE = value(aD.amount)
208+ $Tuple2(aD, aE)
212209 }
213210
214211
215-func aG (aD) = {
216- let aH = aC(aD)
217- let aE = aH._1
218- let aF = aH._2
219- let aI = if (if (isDefined(aE.assetId))
220- then (aE.assetId == n)
212+func aF (aC) = {
213+ let aG = aB(aC)
214+ let aD = aG._1
215+ let aE = aG._2
216+ let aH = if (if (isDefined(aD.assetId))
217+ then (aD.assetId == o)
221218 else false)
222- then aE.assetId
219+ then aD.assetId
223220 else throw("Only USDN token accepted as transaction fee")
224- if ((aF != ao))
225- then throw(((("Payment amount should be " + toString(ao)) + " but is: ") + toString(aF)))
226- else $Tuple2(aF, aI)
221+ if ((aE != an))
222+ then throw(((("Payment amount should be " + toString(an)) + " but is: ") + toString(aE)))
223+ else $Tuple2(aE, aH)
227224 }
228225
229226
230-func aJ (aK,L) = {
231- let e = getInteger(this, X(aK, L))
227+func aI (aJ,L) = {
228+ let e = getInteger(this, X(aJ, L))
232229 if ($isInstanceOf(e, "Int"))
233230 then {
234231 let f = e
235232 if ((f != 0))
236233 then true
237234 else false
238235 }
239236 else false
240237 }
241238
242239
243-func aL (aD,aM,aN) = {
244- let aO = aC(aD)
245- let aE = aO._1
246- let aF = aO._2
247- let aI = if (!(isDefined(aE.assetId)))
240+func aK (aC,aL,aM) = {
241+ let aN = aB(aC)
242+ let aD = aN._1
243+ let aE = aN._2
244+ let aH = if (!(isDefined(aD.assetId)))
248245 then throw("Wrong asset id")
249- else if (if ((size(aM) > 0))
250- then (toBase58String(value(aE.assetId)) == aM)
246+ else if (if ((size(aL) > 0))
247+ then (toBase58String(value(aD.assetId)) == aL)
251248 else false)
252- then aE.assetId
249+ then aD.assetId
253250 else throw("Wrong asset id")
254- if (if ((aI == unit))
255- then (aM != "")
251+ if (if ((aH == unit))
252+ then (aL != "")
256253 else false)
257254 then throw("Wrong asset id")
258- else if ((aN != aF))
259- then throw(((("Payment don't match " + toString(aN)) + " ") + toString(aF)))
260- else $Tuple2(aF, aI)
255+ else if ((aM != aE))
256+ then throw(((("Payment don't match " + toString(aM)) + " ") + toString(aE)))
257+ else $Tuple2(aE, aH)
261258 }
262259
263260
264-func aP (aI) = if ((aI != toBase58String(n)))
261+func aO (aH) = if ((aH != toBase58String(o)))
265262 then throw("Only USDN accepted")
266263 else true
267264
268265
269-func aQ (aI,aR) = {
270- let aS = if (a)
266+func aP (aH,aQ) = {
267+ let aR = if (a)
271268 then 1
272- else (ao * 2)
273- if (if (if ((aI == toBase58String(n)))
274- then (aS > aR)
269+ else (an * 2)
270+ if (if (if ((aH == toBase58String(o)))
271+ then (aR > aQ)
275272 else false)
276- then (aR != 0)
273+ then (aQ != 0)
277274 else false)
278- then throw(("Wrong minimum sell price " + toString(aS)))
275+ then throw(("Wrong minimum sell price " + toString(aR)))
279276 else true
280277 }
281278
282279
283-func aT (aI) = if ((aI == "WAVES"))
280+func aS (aH) = if ((aH == "WAVES"))
284281 then throw("Only USDN is accepted!")
285- else fromBase58String(aI)
282+ else fromBase58String(aH)
286283
287284
288-func aU (aV) = {
289- let aW = A((aV + "_OPEN"))
290- if ((aW == ""))
285+func aT (aU) = {
286+ let aV = A((aU + "_OPEN"))
287+ if ((aV == ""))
291288 then throw("Bid not found")
292289 else {
293- let aX = split(aW, "_")
294- let aY = parseIntValue(aX[1])
295- let aZ = aT(aX[0])
296- if ((0 >= aY))
290+ let aW = split(aV, "_")
291+ let aX = parseIntValue(aW[1])
292+ let aY = aS(aW[0])
293+ if ((0 >= aX))
297294 then throw("Wrong amount")
298- else $Tuple2(aY, aZ)
295+ else $Tuple2(aX, aY)
299296 }
300297 }
301298
302299
303-func ba (aD) = if (!(r))
300+func aZ (aC) = if (!(r))
304301 then throw(s)
305- else $Tuple3(toBase58String(aD.transactionId), toBase58String(aD.caller.bytes), lastBlock.timestamp)
302+ else $Tuple3(toBase58String(aC.transactionId), toBase58String(aC.caller.bytes), lastBlock.timestamp)
306303
307304
308-func bb (aD,bc,L,bd) = {
309- let be = (toBase58String(aD.caller.bytes) == bc)
310- let bf = E("total_nft_issued")
311- let bg = A(M(bc, L))
312- if ((bg == ""))
305+func ba (aC,bb,L,bc) = {
306+ let bd = (toBase58String(aC.caller.bytes) == bb)
307+ let be = E("total_nft_issued")
308+ let bf = A(M(bb, L))
309+ if ((bf == ""))
313310 then throw("Art doesn't exist")
314311 else {
315- let bh = F(ac(bc, L))
316- let bi = E(X(bc, L))
317- let aN = valueOrElse(E(ag(bc, L)), (ao * 2))
318- let aM = if (be)
319- then toBase58String(n)
320- else A(ah(bc, L))
321- let bj = E(Q(bc, L))
322- if (if (if (!(bd))
323- then !(be)
312+ let bg = F(ab(bb, L))
313+ let bh = E(X(bb, L))
314+ let aM = valueOrElse(E(af(bb, L)), (an * 2))
315+ let aL = if (bd)
316+ then toBase58String(o)
317+ else A(ag(bb, L))
318+ let bi = E(Q(bb, L))
319+ if (if (if (!(bc))
320+ then !(bd)
324321 else false)
325- then if (if ((0 >= aN))
322+ then if (if ((0 >= aM))
326323 then true
327- else !(bh))
324+ else !(bg))
328325 then true
329- else (0 >= bj)
326+ else (0 >= bi)
330327 else false)
331328 then throw("Art not for sale")
332- else if (if (if (!(bd))
333- then be
329+ else if (if (if (!(bc))
330+ then bd
334331 else false)
335- then (0 >= bj)
332+ then (0 >= bi)
336333 else false)
337334 then throw("Max issuable not set")
338- else $Tuple7(bf, bg, bi, aN, aM, bj, bh)
335+ else $Tuple7(be, bf, bh, aM, aL, bi, bg)
339336 }
340337 }
341338
342339
343-func bk (aD,J,bc,L,bl,T,aM,aN,bd) = {
344- let aB = au(bc)
345- if (if (bd)
346- then (aB != "")
340+func bj (aC,J,bb,L,bk,T,aL,aM,bc) = {
341+ let aA = at(bb)
342+ if (if (bc)
343+ then (aA != "")
347344 else false)
348- then throw(aB)
345+ then throw(aA)
349346 else {
350- let aV = ((((((("bid_" + L) + "_") + bc) + "_") + bl) + "_") + T)
351- let bm = if (bd)
352- then aU(aV)
353- else aL(aD, aM, aN)
354- let aF = bm._1
355- let aI = bm._2
356- $Tuple3(aV, aF, aI)
347+ let aU = ((((((("bid_" + L) + "_") + bb) + "_") + bk) + "_") + T)
348+ let bl = if (bc)
349+ then aT(aU)
350+ else aK(aC, aL, aM)
351+ let aE = bl._1
352+ let aH = bl._2
353+ $Tuple3(aU, aE, aH)
357354 }
358355 }
359356
360357
361-func bn (bc,aI,aF,bi,bj) = {
362- let bo = if ((aI == n))
363- then q
364- else throw("Only USDN is accepted!")
365- let bp = fraction(aF, bo, 1000)
366- let bq = (aF - bp)
367- if ((bi == bj))
368- then throw("Art sold out")
369- else {
370- let br = (bi + 1)
371- $Tuple3(bp, bq, br)
372- }
358+func bm (bb,aH,aE,bh,bi) = $Tuple3(0, 0, 0)
359+
360+
361+func bn (bb,L,bf,bo,bi,be,J,bk,T,aC,bg) = {
362+ let bp = ((((((((("Creator: " + bb) + ",ArtID: ") + L) + ",Artwork name: ") + bf) + ",Issue: ") + toString(bo)) + "/") + toString(bi))
363+ let bq = if (if ((bo == bi))
364+ then true
365+ else !(bg))
366+ then false
367+ else true
368+ let br = if ((bk != ""))
369+ then addressFromStringValue(bk)
370+ else aC.caller
371+ $Tuple3(bq, br, bp)
373372 }
374373
375374
376-func bs (bc,L,bg,br,bj,bf,J,bl,T,aD,bh) = {
377- let bt = ((((((((("Creator: " + bc) + ",ArtID: ") + L) + ",Artwork name: ") + bg) + ",Issue: ") + toString(br)) + "/") + toString(bj))
378- let bu = if (if ((br == bj))
379- then true
380- else !(bh))
381- then false
382- else true
383- let bv = if ((bl != ""))
384- then addressFromStringValue(bl)
385- else aD.caller
386- $Tuple3(bu, bv, bt)
375+func bs (aH,aU,bt) = {
376+ let bu = if (!(isDefined(aH)))
377+ then throw("Only USDN is accepted")
378+ else toBase58String(value(aH))
379+ let aV = A((aU + "_OPEN"))
380+ let bv = DeleteEntry((aU + "_OPEN"))
381+ let bw = StringEntry((aU + "_CLOSED"), ((aV + "_") + toString(bt)))
382+ $Tuple3(bu, bv, bw)
387383 }
388384
389385
390-func bw (bx) = if ((4 > bx))
391- then "SSR"
392- else if ((11 > bx))
393- then "SR"
394- else if ((101 > bx))
395- then "R"
396- else "N"
397-
398-
399-func by (aI,aV,bz) = {
400- let bA = if (!(isDefined(aI)))
401- then throw("Only USDN is accepted")
402- else toBase58String(value(aI))
403- let aW = A((aV + "_OPEN"))
404- let bB = DeleteEntry((aV + "_OPEN"))
405- let bC = StringEntry((aV + "_CLOSED"), ((aW + "_") + toString(bz)))
406- $Tuple3(bA, bB, bC)
407- }
408-
409-
410-func bD (aD,L,bc,T,bl,bd) = {
411- let bE = ba(aD)
412- let bF = bE._1
413- let J = bE._2
414- let bz = bE._3
415- let bG = bb(aD, bc, L, bd)
416- let bf = bG._1
417- let bg = bG._2
418- let bi = bG._3
419- let aN = bG._4
420- let aM = bG._5
421- let bj = bG._6
422- let bh = bG._7
423- let aW = bk(aD, J, bc, L, bl, T, aM, aN, bd)
424- let aV = aW._1
425- let aF = aW._2
426- let aI = aW._3
427- let bH = bn(bc, value(aI), aF, bi, bj)
428- let bp = bH._1
429- let bq = bH._2
430- let br = bH._3
431- let bI = bs(bc, L, bg, br, bj, bf, J, bl, T, aD, bh)
432- let bu = bI._1
433- let bv = bI._2
434- let bt = bI._3
435- let bJ = invoke(this, "mintNft", [bf, bt, toString(bv)], nil)
436- if ((bJ == bJ))
386+func bx (aC,L,bb,T,bk,bc) = {
387+ let by = aZ(aC)
388+ let bz = by._1
389+ let J = by._2
390+ let bt = by._3
391+ let bA = ba(aC, bb, L, bc)
392+ let be = bA._1
393+ let bf = bA._2
394+ let bh = bA._3
395+ let aM = bA._4
396+ let aL = bA._5
397+ let bi = bA._6
398+ let bg = bA._7
399+ let aV = bj(aC, J, bb, L, bk, T, aL, aM, bc)
400+ let aU = aV._1
401+ let aE = aV._2
402+ let aH = aV._3
403+ let bo = if ((bh == bi))
404+ then throw("Max items sold")
405+ else (bh + 1)
406+ let bB = bn(bb, L, bf, bo, bi, be, J, bk, T, aC, bg)
407+ let bq = bB._1
408+ let br = bB._2
409+ let bp = bB._3
410+ let bC = invoke(this, "mintNft", [be, bp, toString(br)], nil)
411+ if ((bC == bC))
437412 then {
438- let bK = {
439- let e = bJ
413+ let bD = {
414+ let e = bC
440415 if ($isInstanceOf(e, "String"))
441416 then {
442- let bL = e
443- bL
417+ let bE = e
418+ bE
444419 }
445420 else throw("Incorrect invoke result")
446421 }
447- let bM = by(aI, aV, bz)
448- let bA = bM._1
449- let bB = bM._2
450- let bC = bM._3
451- let bN = ((((((("art_sold_" + toString(br)) + "_of_") + toString(bj)) + "_") + L) + "_") + bc)
452- let bO = bw(br)
453- let bP = if (!(bd))
454- then ((((((((((J + "_") + toString(bz)) + "_") + bF) + "_") + toString(aN)) + "_") + aM) + "_") + bK)
455- else ((((((((((toString(bv) + "_") + toString(bz)) + "_") + bF) + "_") + toString(aF)) + "_") + bA) + "_") + bK)
456- let bQ = StringEntry(bN, bP)
457- let bR = [IntegerEntry(X(bc, L), br), StringEntry(("nft_" + bK), bN), StringEntry(("nft_rarity_" + bK), bO), IntegerEntry("total_nft_issued", (bf + 1)), BooleanEntry(ac(bc, L), bu), ScriptTransfer(Address(fromBase58String(bc)), bq, aI), ScriptTransfer(Address(fromBase58String(k)), bp, aI), StringEntry(Y(bK), bc), StringEntry(aa(bK), L)]
458- let bS = invoke(addressFromStringValue(l), "createCert", [toString(bv), bK, bc], nil)
459- if ((bS == bS))
460- then if (bd)
461- then (((bR :+ bQ) :+ bC) :+ bB)
462- else bQ :: bR
422+ let bF = bs(aH, aU, bt)
423+ let bu = bF._1
424+ let bv = bF._2
425+ let bw = bF._3
426+ let bG = ((((((("art_sold_" + toString(bo)) + "_of_") + toString(bi)) + "_") + L) + "_") + bb)
427+ let bH = if (!(bc))
428+ then ((((((((((J + "_") + toString(bt)) + "_") + bz) + "_") + toString(aM)) + "_") + aL) + "_") + bD)
429+ else ((((((((((toString(br) + "_") + toString(bt)) + "_") + bz) + "_") + toString(aE)) + "_") + bu) + "_") + bD)
430+ let bI = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "payFee", [L], [AttachedPayment(aH, aE)])
431+ if ((bI == bI))
432+ then {
433+ let bJ = StringEntry(bG, bH)
434+ let bK = [IntegerEntry(X(bb, L), bo), StringEntry(("nft_" + bD), bG), IntegerEntry("total_nft_issued", (be + 1)), BooleanEntry(ab(bb, L), bq), StringEntry(Y(bD), bb), StringEntry(aa(bD), L)]
435+ let bL = invoke(addressFromStringValue(l), "createCert", [toString(br), bD, bb], nil)
436+ if ((bL == bL))
437+ then if (bc)
438+ then (((bK :+ bJ) :+ bw) :+ bv)
439+ else bJ :: bK
440+ else throw("Strict value is not equal to itself.")
441+ }
463442 else throw("Strict value is not equal to itself.")
464443 }
465444 else throw("Strict value is not equal to itself.")
466445 }
467446
468447
469-func bT (aD,L,bc) = {
470- let bU = ba(aD)
471- let bF = bU._1
472- let J = bU._2
473- let bz = bU._3
474- let bV = aC(aD)
475- let aE = bV._1
476- let aF = bV._2
477- let aI = if (!(isDefined(aE.assetId)))
448+func bM (aC,L,bb) = {
449+ let bN = aZ(aC)
450+ let bz = bN._1
451+ let J = bN._2
452+ let bt = bN._3
453+ let bO = aB(aC)
454+ let aD = bO._1
455+ let aE = bO._2
456+ let aH = if (!(isDefined(aD.assetId)))
478457 then throw("Only USDN is accepted!")
479- else toBase58String(value(aE.assetId))
480- let bW = E(("current_bidamount_" + L))
481- let bX = valueOrElse(E(ag(bc, L)), (ao * 2))
482- if (!(aP(aI)))
458+ else toBase58String(value(aD.assetId))
459+ let bP = E(("current_bidamount_" + L))
460+ let bQ = valueOrElse(E(af(bb, L)), (an * 2))
461+ if (!(aO(aH)))
483462 then throw("asset not accepted")
484463 else {
485- let bi = E(X(bc, L))
486- let bj = E(Q(bc, L))
487- if ((0 >= bj))
464+ let bh = E(X(bb, L))
465+ let bi = E(Q(bb, L))
466+ if ((0 >= bi))
488467 then throw("No max edition set for this artwork")
489- else if ((bi >= bj))
468+ else if ((bh >= bi))
490469 then throw("Sold out, you cannot bid")
491- else [StringEntry((((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + bF) + "_OPEN"), ((((aI + "_") + toString(aF)) + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW + 1))]
470+ else [StringEntry((((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + bz) + "_OPEN"), ((((aH + "_") + toString(aE)) + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP + 1))]
492471 }
493472 }
494473
495474
496-func bY (aD,L,bc) = {
497- let bZ = E(V(bc, L))
498- let ca = aq(L)
499- if ((height > bZ))
475+func bR (aC,L,bb) = {
476+ let bS = E(V(bb, L))
477+ let bT = ap(L)
478+ if ((height > bS))
500479 then throw("This auction is finished already!")
501480 else {
502- let cb = ba(aD)
503- let bF = cb._1
504- let J = cb._2
505- let bz = cb._3
506- let cc = aC(aD)
507- let aE = cc._1
508- let aF = cc._2
509- if ((ca >= aF))
510- then throw(("Please place a bid higher than: " + toString(ca)))
481+ let bU = aZ(aC)
482+ let bz = bU._1
483+ let J = bU._2
484+ let bt = bU._3
485+ let bV = aB(aC)
486+ let aD = bV._1
487+ let aE = bV._2
488+ if ((bT >= aE))
489+ then throw(("Please place a bid higher than: " + toString(bT)))
511490 else {
512- let aI = if (!(isDefined(aE.assetId)))
491+ let aH = if (!(isDefined(aD.assetId)))
513492 then throw("Only USDN is accepted!")
514- else toBase58String(value(aE.assetId))
515- let bW = E(("current_bidamount_" + L))
516- let bX = valueOrElse(E(ag(bc, L)), (ao * 2))
517- if (!(aP(aI)))
493+ else toBase58String(value(aD.assetId))
494+ let bP = E(("current_bidamount_" + L))
495+ let bQ = valueOrElse(E(af(bb, L)), (an * 2))
496+ if (!(aO(aH)))
518497 then throw("asset not accepted")
519- else if ((bX > aF))
498+ else if ((bQ > aE))
520499 then throw("Bid is below min price!")
521500 else {
522- let bi = E(X(bc, L))
523- let bj = E(Q(bc, L))
524- if ((0 >= bj))
501+ let bh = E(X(bb, L))
502+ let bi = E(Q(bb, L))
503+ if ((0 >= bi))
525504 then throw("No max edition set for this artwork")
526- else if ((bi >= bj))
505+ else if ((bh >= bi))
527506 then throw("Sold out, you cannot bid")
528- else [StringEntry((((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + bF) + "_OPEN"), ((((aI + "_") + toString(aF)) + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW + 1)), StringEntry(R(L), toBase58String(aD.transactionId)), IntegerEntry(S(toBase58String(aD.transactionId)), aF)]
507+ else [StringEntry((((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + bz) + "_OPEN"), ((((aH + "_") + toString(aE)) + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP + 1)), StringEntry(R(L), toBase58String(aC.transactionId)), IntegerEntry(S(toBase58String(aC.transactionId)), aE)]
529508 }
530509 }
531510 }
532511 }
533512
534513
535-func cd (aD,L,bc,T,bl) = {
536- let J = toBase58String(aD.caller.bytes)
537- if ((J != bc))
514+func bW (aC,L,bb,T,bk) = {
515+ let J = toBase58String(aC.caller.bytes)
516+ if ((J != bb))
538517 then throw("You cannot do this action")
539- else bD(aD, L, bc, T, bl, true)
518+ else bx(aC, L, bb, T, bk, true)
540519 }
541520
542521
543-func ce (L,bc) = {
544- let bi = E(X(bc, L))
545- let bj = E(Q(bc, L))
546- let cf = E(V(bc, L))
547- let cg = E(U(bc, L))
548- let bZ = (cg + height)
549- if ((height > cf))
550- then if ((bi == bj))
522+func bX (L,bb) = {
523+ let bh = E(X(bb, L))
524+ let bi = E(Q(bb, L))
525+ let bY = E(V(bb, L))
526+ let bZ = E(U(bb, L))
527+ let bS = (bZ + height)
528+ if ((height > bY))
529+ then if ((bh == bi))
551530 then throw("Can't restart auction, max amount sold")
552- else [IntegerEntry(V(bc, L), bZ), DeleteEntry(R(L))]
531+ else [IntegerEntry(V(bb, L), bS), DeleteEntry(R(L))]
553532 else throw("Previous auction isn't completed yet")
554533 }
555534
556535
557-func ch (aD,L,bc,T,bl) = {
558- let bZ = E(V(bc, L))
559- let ci = A(R(L))
560- if ((height > bZ))
561- then if ((T == ci))
536+func ca (aC,L,bb,T,bk) = {
537+ let bS = E(V(bb, L))
538+ let cb = A(R(L))
539+ if ((height > bS))
540+ then if ((T == cb))
562541 then {
563- let cj = bD(aD, L, bc, T, bl, true)
564- let ck = ce(L, bc)
565- (ck ++ cj)
542+ let cc = bx(aC, L, bb, T, bk, true)
543+ let cd = bX(L, bb)
544+ (cd ++ cc)
566545 }
567546 else throw("This is not the winning bid!")
568547 else throw("This auction is not yet finished!")
569548 }
570549
571550
572-func cl (aD,L,bc,T) = {
573- let cm = ba(aD)
574- let bF = cm._1
575- let J = cm._2
576- let bz = cm._3
577- let bW = E(("current_bidamount_" + L))
578- let aV = ((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + T)
579- let aW = B((aV + "_OPEN"), "Bid not found")
580- let aX = split(aW, "_")
581- let aI = aT(aX[0])
582- let cn = "CANCELED"
583-[DeleteEntry((aV + "_OPEN")), StringEntry(((aV + "_") + cn), ((aW + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW - 1)), ScriptTransfer(Address(fromBase58String(J)), parseIntValue(aX[1]), aI)]
551+func ce (aC,L,bb,T) = {
552+ let cf = aZ(aC)
553+ let bz = cf._1
554+ let J = cf._2
555+ let bt = cf._3
556+ let bP = E(("current_bidamount_" + L))
557+ let aU = ((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + T)
558+ let aV = B((aU + "_OPEN"), "Bid not found")
559+ let aW = split(aV, "_")
560+ let aH = aS(aW[0])
561+ let cg = "CANCELED"
562+[DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + cg), ((aV + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP - 1)), ScriptTransfer(Address(fromBase58String(J)), parseIntValue(aW[1]), aH)]
584563 }
585564
586565
587-func co (aD,L,bc,T) = {
588- let cm = ba(aD)
589- let bF = cm._1
590- let J = cm._2
591- let bz = cm._3
592- let bW = E(("current_bidamount_" + L))
593- let aV = ((((((("bid_" + L) + "_") + bc) + "_") + J) + "_") + T)
594- let aW = B((aV + "_OPEN"), "Bid not found")
595- let aX = split(aW, "_")
596- let aI = aT(aX[0])
597- let cn = "CANCELED"
598- let aY = parseIntValue(aX[1])
599- let ci = A(R(L))
600- if ((T == ci))
566+func ch (aC,L,bb,T) = {
567+ let cf = aZ(aC)
568+ let bz = cf._1
569+ let J = cf._2
570+ let bt = cf._3
571+ let bP = E(("current_bidamount_" + L))
572+ let aU = ((((((("bid_" + L) + "_") + bb) + "_") + J) + "_") + T)
573+ let aV = B((aU + "_OPEN"), "Bid not found")
574+ let aW = split(aV, "_")
575+ let aH = aS(aW[0])
576+ let cg = "CANCELED"
577+ let aX = parseIntValue(aW[1])
578+ let cb = A(R(L))
579+ if ((T == cb))
601580 then throw("You can't cancel the highest bid!")
602- else [DeleteEntry((aV + "_OPEN")), StringEntry(((aV + "_") + cn), ((aW + "_") + toString(bz))), IntegerEntry(("current_bidamount_" + L), (bW - 1)), ScriptTransfer(Address(fromBase58String(J)), aY, aI)]
581+ else [DeleteEntry((aU + "_OPEN")), StringEntry(((aU + "_") + cg), ((aV + "_") + toString(bt))), IntegerEntry(("current_bidamount_" + L), (bP - 1)), ScriptTransfer(Address(fromBase58String(J)), aX, aH)]
603582 }
604583
605584
606-@Callable(aD)
607-func initDapp (cp) = if ((aD.caller != this))
585+@Callable(aC)
586+func initDapp (ci) = if ((aC.caller != this))
608587 then throw("You cannot do this action")
609588 else if ((g != ""))
610589 then throw("oracle already set, you can't override!")
611- else [StringEntry(b, cp)]
590+ else [StringEntry(b, ci)]
612591
613592
614593
615-@Callable(aD)
616-func restartAuctionManual (L) = if ((aq(L) != 0))
594+@Callable(aC)
595+func restartAuctionManual (L) = if ((ap(L) != 0))
617596 then throw("Please accept the highest bid!")
618- else ce(L, toBase58String(aD.caller.bytes))
597+ else bX(L, toBase58String(aC.caller.bytes))
619598
620599
621600
622-@Callable(aD)
623-func mintNft (bf,bt,bv) = if ((aD.caller == this))
601+@Callable(aC)
602+func mintNft (be,bp,br) = if ((aC.caller == this))
624603 then {
625- let cq = Address(fromBase58String(bv))
626- let cr = Issue(("SCONEX_" + toString((bf + 1))), bt, 1, 0, false)
627- let bK = calculateAssetId(cr)
628- $Tuple2([cr, ScriptTransfer(cq, 1, bK)], toBase58String(bK))
604+ let cj = Address(fromBase58String(br))
605+ let ck = Issue(("SCONEX_" + toString((be + 1))), bp, 1, 0, false)
606+ let bD = calculateAssetId(ck)
607+ $Tuple2([ck, ScriptTransfer(cj, 1, bD)], toBase58String(bD))
629608 }
630609 else throw("Only the dApp can mint NFT's")
631610
632611
633612
634-@Callable(aD)
635-func addArtwork (al,ay,az,aA,cs,ax,ct,cu,cv,cw) = {
636- let cx = ba(aD)
637- let L = cx._1
638- let J = cx._2
639- let bz = cx._3
640- if (containsElement(o, cs))
613+@Callable(aC)
614+func addArtwork (ak,ax,ay,az,cl,aw,cm,cn,co,cp) = {
615+ let cq = aZ(aC)
616+ let L = cq._1
617+ let J = cq._2
618+ let bt = cq._3
619+ if (containsElement(p, cl))
641620 then {
642- let cy = aw(J, ax, ay, az, aA)
643- if ((cy != ""))
621+ let cr = av(J, aw, ax, ay, az)
622+ if ((cr != ""))
644623 then throw("Something went wrong!")
645624 else {
646- let cz = aG(aD)
647- let aF = cz._1
648- let aI = cz._2
649- if (!(isDefined(aF)))
625+ let cs = aF(aC)
626+ let aE = cs._1
627+ let aH = cs._2
628+ if (!(isDefined(aE)))
650629 then throw("Something went wrong")
651630 else {
652- let cA = if (containsElement(p, cs))
653- then [StringEntry(P(J, L), cu)]
631+ let ct = if (containsElement(q, cl))
632+ then [StringEntry(P(J, L), cn)]
654633 else nil
655- let cB = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [cv, cw, J], nil)
656- if ((cB == cB))
634+ let cu = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [co, cp, J], nil)
635+ if ((cu == cu))
657636 then {
658- let cC = {
659- let e = cB
637+ let cv = {
638+ let e = cu
660639 if ($isInstanceOf(e, "String"))
661640 then {
662- let bL = e
663- bL
641+ let bE = e
642+ bE
664643 }
665644 else throw("Incorrect invoke result")
666645 }
667- let cD = A(am(al, J))
668- if ((cD != ""))
646+ let cw = A(al(ak, J))
647+ if ((cw != ""))
669648 then throw("You already added it")
670649 else {
671- let cE = A(ak(al))
672- if ((cE != ""))
650+ let cx = A(aj(ak))
651+ if ((cx != ""))
673652 then throw("This hash is already registered")
674- else (cA ++ [StringEntry(ak(al), J), StringEntry(am(al, J), L), IntegerEntry(K(J, L), bz), StringEntry(M(J, L), ay), StringEntry(N(J, L), az), StringEntry(O(J, L), ax), StringEntry(af(J, L), cs), StringEntry(ae(J, L), aA), IntegerEntry(Q(J, L), 0), IntegerEntry(X(J, L), 0), BooleanEntry(ac(J, L), false), StringEntry(ai(J, L), al), StringEntry(ad(J, L), ct), ScriptTransfer(Address(fromBase58String(k)), aF, aI)])
653+ else (ct ++ [StringEntry(aj(ak), J), StringEntry(al(ak, J), L), IntegerEntry(K(J, L), bt), StringEntry(M(J, L), ax), StringEntry(N(J, L), ay), StringEntry(O(J, L), aw), StringEntry(ae(J, L), cl), StringEntry(ad(J, L), az), IntegerEntry(Q(J, L), 0), IntegerEntry(X(J, L), 0), BooleanEntry(ab(J, L), false), StringEntry(ah(J, L), ak), StringEntry(ac(J, L), cm), ScriptTransfer(Address(fromBase58String(k)), aE, aH)])
675654 }
676655 }
677656 else throw("Strict value is not equal to itself.")
678657 }
679658 }
680659 }
681660 else throw("Unknown type")
682661 }
683662
684663
685664
686-@Callable(aD)
687-func sellArtwork (L,aR,cF,aI,cG,cg,cH) = {
688- let cI = ba(aD)
689- let bF = cI._1
690- let J = cI._2
691- let bg = A(M(J, L))
692- if ((0 > cH))
693- then throw("Royalty percentage should be above 0")
694- else if ((cH > 85))
695- then throw("Royalty percentage should be below 85")
696- else if (!(containsElement([w, x, y], cG)))
697- then throw("We don't know this auction type")
698- else if ((bg == ""))
699- then throw("This art doesn't match your account")
700- else {
701- let bW = E(("current_bidamount_" + L))
702- if (!(aP(aI)))
703- then throw("Something went wrong!")
704- else if (!(aQ(aI, aR)))
705- then throw("Something went wrong!")
706- else {
707- let aB = au(J)
708- if ((aB != ""))
709- then throw(aB)
665+@Callable(aC)
666+func sellArtwork (L,aQ,cy,aH,cz,bZ,cA,cB,cC,cD,cE,cF) = {
667+ let bI = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [L, k, "", "", 15, 0, 0], nil)
668+ if ((bI == bI))
669+ then {
670+ let cG = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "creatorSplitFee", [L, cA, cB, cC, cD, cE, cF], nil)
671+ if ((cG == cG))
672+ then {
673+ let cH = aZ(aC)
674+ let bz = cH._1
675+ let J = cH._2
676+ let bf = A(M(J, L))
677+ if (!(containsElement([w, x, y], cz)))
678+ then throw("We don't know this auction type")
679+ else if ((bf == ""))
680+ then throw("This art doesn't match your account")
681+ else {
682+ let bP = E(("current_bidamount_" + L))
683+ if (!(aO(aH)))
684+ then throw("Something went wrong!")
685+ else if (!(aP(aH, aQ)))
686+ then throw("Something went wrong!")
710687 else {
711- let bi = E(X(J, L))
712- let bj = E(Q(J, L))
713- if ((cF > 10000))
714- then throw("10000 editions max per artwork")
715- else if (if ((bi != 0))
716- then (bi == bj)
717- else false)
718- then throw("Max edition reached.")
719- else if (if ((bi > 0))
720- then (bj != cF)
721- else false)
722- then throw("Cannot change maximum issuable anymore")
723- else if (if ((bW > 0))
724- then (bj != cF)
688+ let aA = at(J)
689+ if ((aA != ""))
690+ then throw(aA)
691+ else {
692+ let bh = E(X(J, L))
693+ let bi = E(Q(J, L))
694+ if ((cy > 10000))
695+ then throw("10000 editions max per artwork")
696+ else if (if ((bh != 0))
697+ then (bh == bi)
725698 else false)
726- then throw("Cannot change maximum issuable with active orders")
727- else {
728- let bu = if (if ((aR > 0))
729- then (cF > 0)
699+ then throw("Max edition reached.")
700+ else if (if ((bh > 0))
701+ then (bi != cy)
702+ else false)
703+ then throw("Cannot change maximum issuable anymore")
704+ else if (if ((bP > 0))
705+ then (bi != cy)
730706 else false)
731- then true
732- else false
733- let bZ = (cg + height)
734-[BooleanEntry(ac(J, L), bu), IntegerEntry(ag(J, L), aR), IntegerEntry(Q(J, L), cF), IntegerEntry(U(J, L), cg), IntegerEntry(V(J, L), bZ), StringEntry(ah(J, L), aI), StringEntry(W(J, L), cG), IntegerEntry(ab(J, L), cH)]
735- }
707+ then throw("Cannot change maximum issuable with active orders")
708+ else {
709+ let bq = if (if ((aQ > 0))
710+ then (cy > 0)
711+ else false)
712+ then true
713+ else false
714+ let bS = (bZ + height)
715+[BooleanEntry(ab(J, L), bq), IntegerEntry(af(J, L), aQ), IntegerEntry(Q(J, L), cy), IntegerEntry(U(J, L), bZ), IntegerEntry(V(J, L), bS), StringEntry(ag(J, L), aH), StringEntry(W(J, L), cz)]
716+ }
717+ }
736718 }
737- }
738- }
719+ }
720+ }
721+ else throw("Strict value is not equal to itself.")
722+ }
723+ else throw("Strict value is not equal to itself.")
739724 }
740725
741726
742727
743-@Callable(aD)
744-func buyArtwork (L,bc) = {
745- let cG = A(W(bc, L))
746- if ((cG == y))
747- then bD(aD, L, bc, "", "", false)
728+@Callable(aC)
729+func buyArtwork (L,bb) = {
730+ let cz = A(W(bb, L))
731+ if ((cz == y))
732+ then bx(aC, L, bb, "", "", false)
748733 else throw("Direct buy only allowed when no auction type is set!")
749734 }
750735
751736
752737
753-@Callable(aD)
754-func updateTags (cJ,L,aA) = {
755- let J = toString(addressFromPublicKey(aD.callerPublicKey))
738+@Callable(aC)
739+func updateTags (cI,L,az) = {
740+ let J = toString(addressFromPublicKey(aC.callerPublicKey))
756741 if (containsElement(i, J))
757- then if ((size(split(aA, ",")) > 5))
742+ then if ((size(split(az, ",")) > 5))
758743 then throw("5 tags max.")
759744 else {
760- let cK = B(ae(cJ, L), "No tags created with this key, so can't update!")
761- if ((aA == cK))
745+ let cJ = B(ad(cI, L), "No tags created with this key, so can't update!")
746+ if ((az == cJ))
762747 then throw("Tags are the same as old tags!")
763- else [StringEntry(ae(cJ, L), aA)]
748+ else [StringEntry(ad(cI, L), az)]
764749 }
765750 else throw("no")
766751 }
767752
768753
769754
770-@Callable(aD)
771-func deleteEntry (cL) = {
772- let J = toString(addressFromPublicKey(aD.callerPublicKey))
755+@Callable(aC)
756+func deleteEntry (cK) = {
757+ let J = toString(addressFromPublicKey(aC.callerPublicKey))
773758 if (containsElement(i, J))
774- then [DeleteEntry(cL)]
759+ then [DeleteEntry(cK)]
775760 else throw("no")
776761 }
777762
778763
779764
780-@Callable(aD)
781-func setBid (L,bc) = {
782- let cG = A(W(bc, L))
783- if ((cG == w))
784- then bT(aD, L, bc)
785- else if ((cG == x))
786- then bY(aD, L, bc)
787- else throw((("Unknown auction type :" + cG) + ", please contact the admins"))
765+@Callable(aC)
766+func setBid (L,bb) = {
767+ let cz = A(W(bb, L))
768+ if ((cz == w))
769+ then bM(aC, L, bb)
770+ else if ((cz == x))
771+ then bR(aC, L, bb)
772+ else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
788773 }
789774
790775
791776
792-@Callable(aD)
793-func acceptBid (L,bc,T,bl) = {
794- let cG = A(W(bc, L))
795- if ((cG == w))
796- then cd(aD, L, bc, T, bl)
797- else if ((cG == x))
798- then ch(aD, L, bc, T, bl)
799- else throw((("Unknown auction type :" + cG) + ", please contact the admins"))
777+@Callable(aC)
778+func acceptBid (L,bb,T,bk) = {
779+ let cz = A(W(bb, L))
780+ if ((cz == w))
781+ then bW(aC, L, bb, T, bk)
782+ else if ((cz == x))
783+ then ca(aC, L, bb, T, bk)
784+ else throw((("Unknown auction type :" + cz) + ", please contact the admins"))
800785 }
801786
802787
803788
804-@Callable(aD)
805-func cancelBid (L,bc,T) = {
806- let cG = A(W(bc, L))
807- if ((cG == w))
808- then cl(aD, L, bc, T)
809- else co(aD, L, bc, T)
789+@Callable(aC)
790+func cancelBid (L,bb,T) = {
791+ let cz = A(W(bb, L))
792+ if ((cz == w))
793+ then ce(aC, L, bb, T)
794+ else ch(aC, L, bb, T)
810795 }
811796
812797

github/deemru/w8io/169f3d6 
245.56 ms