tx · GW3f8SmkpCeGfhxFzDyzCpwwZfRhJ8DCLsGF4tLR6vXt

3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv:  -0.01400000 Waves

2022.01.29 22:38 [1900660] smart account 3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv > SELF 0.00000000 Waves

{ "type": 13, "id": "GW3f8SmkpCeGfhxFzDyzCpwwZfRhJ8DCLsGF4tLR6vXt", "fee": 1400000, "feeAssetId": null, "timestamp": 1643485134238, "version": 2, "chainId": 84, "sender": "3Mrnje6z2xa3xuXyU2Lk6ynKy8tsRnnt4Bv", "senderPublicKey": "28sGn7FYnmxceAmnGYiDiKuMK1QyXiqX8zQXfKDnrc8t", "proofs": [ "2GQAvw5updeqNTy8bn2ufXU7k8kgV5H4weVRgBCKzMGsHZZ2UdnTWngjJreWLtoJgdyTKyVqtjNqPyDfc5JhNcF" ], "script": "base64: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dmRfBQAAAA1jYWxsZXJhZGRyZXNzAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQFAAAAFGluZGl2aWR1YWx2b3Rlc2NvdW50BQAAAANuaWwAAAABaQEAAAATV2l0aGRyYXdWb3RlZFRva2VucwAAAAEAAAAMRW50ZXJBc3NldElEBAAAAANwbXQDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAAtMC4xIFROIFRva2VuIGlzIHJlcXVpcmVkIGFzIEF0dGFjaGVkIHBheW1lbnQuBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAADmNoZWNrZW5kaGVpZ2h0CQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAClZvdGluZ19FSF8FAAAADEVudGVyQXNzZXRJRAQAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAkABB0AAAACBQAAAAR0aGlzCQABLAAAAAICAAAACFBhaXJfVVZfBQAAAAxFbnRlckFzc2V0SUQEAAAAFmNoZWNrdXNlcnZvdGluZ2JhbGFuY2UJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtWb3Rlc19SY3ZkXwUAAAANY2FsbGVyYWRkcmVzcwIAAAABXwUAAAAMRW50ZXJBc3NldElECQABLAAAAAIFAAAADWNhbGxlcmFkZHJlc3MCAAAAJSBBZGRyZXNzIG5ldmVyIHZvdGVkICYgZXhpc3QgaW4gbGlzdC4EAAAAHXBlbmRpbmdibG9ja3Nmb3Jwcm9qZWN0ZXhwaXJlCQAAZQAAAAIFAAAADmNoZWNrZW5kaGVpZ2h0BQAAAAZoZWlnaHQDCQEAAAACIT0AAAACBQAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAAAlUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFZvdGluZyBMaXN0LgMJAABmAAAAAgUAAAAOY2hlY2tlbmRoZWlnaHQFAAAABmhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAA/Vm90aW5nIEFscmVhZHkgUnVubmluZy4gWW91IGNhbiB3aXRoZHJhdyB5b3VyIENPREUgVG9rZW4gYWZ0ZXIgCQABpAAAAAEFAAAAHXBlbmRpbmdibG9ja3Nmb3Jwcm9qZWN0ZXhwaXJlAgAAAAcgYmxvY2tzAwkAAGcAAAACAAAAAAAAAAAABQAAABZjaGVja3VzZXJ2b3RpbmdiYWxhbmNlCQAAAgAAAAECAAAAPFlvdSBkb24ndCBoYXZlIGFueSBkdWVzIG9mIENPREUgYmFsYW5jZSBpbiB0aGlzIFZvdGluZyBQYWlyLgMJAQAAAAlpc0RlZmluZWQAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQJAAACAAAAAQIAAABRRG9uJ3QgYXR0YWNoIGFueSBvdGhlciBhc3NldC4gUGxlYXNlIGF0dGFjaCAwLjEgVE4gYXMgYSBmZWUgdG8gcmVsZWFzZSB5b3VyIHRva2VuAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQAAAAAAACYloAJAAACAAAAAQIAAAA0UGxlYXNlIGF0dGFjaCAwLjEgVE4gYXMgYSBmZWUgdG8gcmVsZWFzZSB5b3VyIHRva2VuLgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALVm90ZXNfUmN2ZF8FAAAADWNhbGxlcmFkZHJlc3MCAAAAAV8FAAAADEVudGVyQXNzZXRJRAAAAAAAAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAFmNoZWNrdXNlcnZvdGluZ2JhbGFuY2UFAAAAC0NPREVBc3NldElEBQAAAANuaWwAAAABaQEAAAAMSXNzdWVMUFRva2VuAAAAAQAAAAxFbnRlckFzc2V0SUQEAAAAC2FkbWlucmlnaHRzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwIAAAAPTFBfQWRtaW5fUmlnaHRzAgAAAFBMUCBBZG1pbiBSaWdodHMgYXJlIE5vdCBJbmNsdWRlZCBpbnRvIFNtYXJ0IENvbnRyYWN0LiBEZXBsb3kgQWRtaW4gUmlnaHRzIEZpcnN0LgQAAAANY2FsbGVyYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAhQYWlyX1VWXwUAAAAMRW50ZXJBc3NldElEAgAAACRBc3NldCBub3QgRm91bmQgaW4gV2hpdGVsaXN0ZWQgVG9rZW4EAAAABGluZm8JAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkAA+wAAAABCQACWQAAAAEFAAAADEVudGVyQXNzZXRJRAkAASwAAAACCQABLAAAAAICAAAABkFzc2V0IAUAAAAMRW50ZXJBc3NldElEAgAAAA4gZG9lc24ndCBleGlzdAQAAAAEbmFtZQgFAAAABGluZm8AAAAEbmFtZQQAAAAIZGVjaW1hbHMIBQAAAARpbmZvAAAACGRlY2ltYWxzBAAAAA9OZXdWb3RpbmdTdGF0dXMCAAAAAVAEAAAADFZvdGluZ1N0YXR1cwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAADEVudGVyQXNzZXRJRAkAASwAAAACAgAAAB1Wb3RpbmcgU3RhdHVzIGlzIE1pc3NpbmcgZm9yIAUAAAAMRW50ZXJBc3NldElEBAAAAApGaXJzdExQUXR5CQAAaAAAAAIAAAAAAAAAAAEJAABsAAAABgAAAAAAAAAACgAAAAAAAAAAAAkAAGsAAAADCQAAZAAAAAIFAAAACGRlY2ltYWxzAAAAAAAAAAAGAAAAAAAAAAABAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAABQAAAAJVUAQAAAAHTFBpc3N1ZQkABEIAAAAFCQABLAAAAAIJAAEsAAAAAgIAAAADTFAtCQABLwAAAAIFAAAABG5hbWUAAAAAAAAAAAgCAAAABS1VU0RUCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAA0xQLQUAAAAEbmFtZQIAAAAFLVVTRFQCAAAALiBpcyBhIExpcXVpZGl0eSBQcm92aWRlciBUb2tlbiBJc3N1ZWQgQWdhaW5zdCAFAAAADEVudGVyQXNzZXRJRAUAAAAKRmlyc3RMUFF0eQkAAGsAAAADCQAAZAAAAAIFAAAACGRlY2ltYWxzAAAAAAAAAAAGAAAAAAAAAAABAAAAAAAAAAACBgQAAAAETFBpZAkABDgAAAABBQAAAAdMUGlzc3VlAwkBAAAAAiE9AAAAAgUAAAALYWRtaW5yaWdodHMFAAAADWNhbGxlcmFkZHJlc3MJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAALllvdXIgYXJlIG5vdCBhbGxvd2RlZCB0byBJc3N1ZSBMUCBUb2tlbi4gT25seSAFAAAAC2FkbWlucmlnaHRzAgAAABggY2FuIGlzc3VlIHRoZSBMUCBUb2tlbi4DCQEAAAACIT0AAAACBQAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAAAlUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFZvdGluZyBMaXN0LgMJAQAAAAIhPQAAAAIFAAAADFZvdGluZ1N0YXR1cwUAAAAPTmV3Vm90aW5nU3RhdHVzCQAAAgAAAAECAAAAJUxQIFRva2VuIG11c3QgYmUgYSBXaGl0ZWxpc3RlZCBUb2tlbi4JAARMAAAAAgUAAAAHTFBpc3N1ZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQABLAAAAAICAAAAA0xQXwUAAAAMRW50ZXJBc3NldElECQACWAAAAAEFAAAABExQaWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAAJVG90YWxfTFBfBQAAAAxFbnRlckFzc2V0SUQFAAAACkZpcnN0TFBRdHkFAAAAA25pbAAAAAFpAQAAABhTd2FwQXNzZXRUb1VTRFRQYWlyRW50cnkAAAABAAAADEVudGVyQXNzZXRJRAQAAAANY2FsbGVyYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAA1V2hpdGVsaXN0ZWQgVG9rZW4gaXMgcmVxdWlyZWQgYXMgQXR0YWNoZWQgcGF5bWVudFsxXS4EAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAhQYWlyX1VWXwUAAAAMRW50ZXJBc3NldElEBAAAAAxWb3RpbmdTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAADEVudGVyQXNzZXRJRAQAAAAQQ2hlY2tVU0RUQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAQAAAARQ2hlY2tBc3NldEJhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQEAAAAEG5ld2JhbGFuY2VvZlVTRFQJAABrAAAAAwUAAAAQQ2hlY2tVU0RUQmFsYW5jZQUAAAARQ2hlY2tBc3NldEJhbGFuY2UJAABkAAAAAgUAAAARQ2hlY2tBc3NldEJhbGFuY2UIBQAAAANwbXQAAAAGYW1vdW50BAAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAkAAGUAAAACBQAAABBDaGVja1VTRFRCYWxhbmNlBQAAABBuZXdiYWxhbmNlb2ZVU0RUBAAAABNDdXJyZW50Vm90aW5nU3RhdHVzAgAAAAFGBAAAAAdTd2FwRmVlAAAAAAAAAAAGBAAAABBTd2FwRmVldG9yZWNlaXZlCQAAaQAAAAIJAABoAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQFAAAAB1N3YXBGZWUAAAAAAAAAA+gEAAAAFHVzZXJiYWxhbmNldG9yZWNlaXZlCQAAZQAAAAIFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0BQAAABBTd2FwRmVldG9yZWNlaXZlBAAAABlTdW11cG9mQXNzZXRUb1VTRFRTd2FwRmVlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABxOZXdTdW11cG9mQXNzZXRUb1VTRFRTd2FwRmVlCQAAZAAAAAIFAAAAGVN1bXVwb2ZBc3NldFRvVVNEVFN3YXBGZWUFAAAAEFN3YXBGZWV0b3JlY2VpdmUEAAAAEVN1bXVwQXNzZXRCYWxhbmNlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAAGQAAAACBQAAABFDaGVja0Fzc2V0QmFsYW5jZQgFAAAAA3BtdAAAAAZhbW91bnQEAAAAEFN1bXVwVVNEVEJhbGFuY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABVOZXdTdW11cG9mVVNEVEJhbGFuY2UJAABlAAAAAgUAAAAQQ2hlY2tVU0RUQmFsYW5jZQUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQEAAAABFRPUFQEAAAAByRtYXRjaDAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAATVG90YWxfb2ZfUGFpcl9UeG5zXwUAAAAMRW50ZXJBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAABk5ld1RQVAkAAGQAAAACBQAAAARUT1BUAAAAAAAAAAABAwkAAAAAAAACBQAAAAxFbnRlckFzc2V0SUQJAAJYAAAAAQUAAAALVVNEVEFzc2V0SUQJAAACAAAAAQIAAACGSW5wdXQgY2FuIE5ldmVyIGJlIGEgVVNEVCBBc3NldElELiBFbnRlciBXaGl0ZWxpc3RlZCBBc3NldElEIGluIGlucHV0ICYgQXR0YWNoIFdoaXRlbGlzdGVkIEFzc2V0IGFzIGFuIGF0dGFjaG1lbnQgVG9rZW4gaW4gcGF5bWVudFsxXS4DCQEAAAACIT0AAAACBQAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90BQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAAArUGFpciBpcyBub3QgYXZhaWxhYmxlIGluIFdoaXRlbGlzdGVkIEFzc2V0LgMJAAAAAAAAAgUAAAAMVm90aW5nU3RhdHVzBQAAABNDdXJyZW50Vm90aW5nU3RhdHVzCQAAAgAAAAEJAAEsAAAAAgUAAAAMRW50ZXJBc3NldElEAgAAACAgaXMgbm90IEEgV2hpdGVsaXN0ZWQgVG9rZW4gWWV0LgMJAAAAAAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAFNZb3UgY2FuJ3QgQXR0YWNoIFVTRFQgYXMgYW4gQXR0YWNoZWQgUGF5bWVudC4gT25seSBXaGl0ZWxpc3RlZCBUb2tlbnMgYXJlIGFjY2VwdGVkLgMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQkAASwAAAACAgAAADBJbmNvcnJlY3QgYXNzZXQgYXR0YWNoZWQsIHBsZWFzZSBhdHRhY2ggb3Igc2VuZCAFAAAADEVudGVyQXNzZXRJRAMJAAAAAAAAAgUAAAAQQ2hlY2tVU0RUQmFsYW5jZQAAAAAAAAAAAAkAAAIAAAABAgAAAGVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAAAAAAAAAgUAAAARQ2hlY2tBc3NldEJhbGFuY2UAAAAAAAAAAAAJAAACAAAAAQIAAABlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQAAZgAAAAIAAAAAAACYloAFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAADRZb3VyIEF0dGFjaGVkIEFzc2V0IEFtb3VudCBpcyB2ZXJ5IGxvdy4gQXR0YWNoIE1vcmUgBQAAAAxFbnRlckFzc2V0SUQCAAAAOSBUb2tlbnMgdG8gQ2xhaW0gdGhlIG1pbmltdW0gQW1vdW50IG9mIDEwIGRvbGxhciBhdGxlYXN0LgMJAABmAAAAAgUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQFAAAAEENoZWNrVVNEVEJhbGFuY2UJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAHVBvb2wgT25seSBoYXMgYSBMaXF1aWRpdHkgb2YgCQABpAAAAAEJAABpAAAAAgUAAAAQQ2hlY2tVU0RUQmFsYW5jZQkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAABQAAAAJVUAIAAAAfIFVTRFQuIEFkZCBMaXF1aWRpdHkgaW50byBQb29sLgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAZVG90YWxfU3dhcF9GZWVfQ29sbGVjdGVkXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEBQAAABxOZXdTdW11cG9mQXNzZXRUb1VTRFRTd2FwRmVlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAE1RvdGFsX29mX1BhaXJfVHhuc18FAAAADEVudGVyQXNzZXRJRAUAAAAGTmV3VFBUCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAIAAAABXwUAAAAMRW50ZXJBc3NldElEBQAAABZOZXdTdW11cG9mQXNzZXRCYWxhbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAtCYWxhbmNlX29mXwUAAAAMRW50ZXJBc3NldElEAgAAAAFfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEBQAAABVOZXdTdW11cG9mVVNEVEJhbGFuY2UJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABR1c2VyYmFsYW5jZXRvcmVjZWl2ZQUAAAALVVNEVEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAZQ29sbGVjdFVTRFRTd2FwRmVlQWRkcmVzcwUAAAAQU3dhcEZlZXRvcmVjZWl2ZQUAAAALVVNEVEFzc2V0SUQFAAAAA25pbAAAAAFpAQAAABhTd2FwVVNEVFRvQXNzZXRQYWlyRW50cnkAAAABAAAADEVudGVyQXNzZXRJRAQAAAANY2FsbGVyYWRkcmVzcwkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAANwbXQDCQAAAAAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAABU9ubHkgCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAADIgVVNEVCBUb2tlbiBpcyByZXF1aXJlZCBhcyBhbiBBdHRhY2hlZCBwYXltZW50WzFdLgQAAAAQQ2hlY2tVU0RUQmFsYW5jZQkBAAAAEUBleHRyTmF0aXZlKDEwNTApAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAQAAAARQ2hlY2tBc3NldEJhbGFuY2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQEAAAAEW5ld2JhbGFuY2VvZkFzc2V0CQAAawAAAAMFAAAAEENoZWNrVVNEVEJhbGFuY2UFAAAAEUNoZWNrQXNzZXRCYWxhbmNlCQAAZAAAAAIFAAAAEENoZWNrVVNEVEJhbGFuY2UIBQAAAANwbXQAAAAGYW1vdW50BAAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAkAAGUAAAACBQAAABFDaGVja0Fzc2V0QmFsYW5jZQUAAAARbmV3YmFsYW5jZW9mQXNzZXQEAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAAhQYWlyX1VWXwUAAAAMRW50ZXJBc3NldElEBAAAAAxWb3RpbmdTdGF0dXMJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAOVm90aW5nX1N0YXR1c18FAAAADEVudGVyQXNzZXRJRAQAAAATQ3VycmVudFZvdGluZ1N0YXR1cwIAAAABRgQAAAAHU3dhcEZlZQAAAAAAAAAAAwQAAAAQU3dhcEZlZXRvcmVjZWl2ZQkAAGkAAAACCQAAaAAAAAIFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0BQAAAAdTd2FwRmVlAAAAAAAAAAPoBAAAABR1c2VyYmFsYW5jZXRvcmVjZWl2ZQkAAGUAAAACBQAAABRxdWFudGl0eW9mcHJpY2Vhc3NldAUAAAAQU3dhcEZlZXRvcmVjZWl2ZQQAAAAZU3VtdXBvZlVTRFRUb0Fzc2V0U3dhcEZlZQQAAAAHJG1hdGNoMAkABBoAAAACBQAAAAR0aGlzCQABLAAAAAICAAAAGVRvdGFsX1N3YXBfRmVlX0NvbGxlY3RlZF8FAAAADEVudGVyQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABxOZXdTdW11cG9mVVNEVFRvQXNzZXRTd2FwRmVlCQAAZAAAAAIFAAAAGVN1bXVwb2ZVU0RUVG9Bc3NldFN3YXBGZWUFAAAAEFN3YXBGZWV0b3JlY2VpdmUEAAAAEVN1bXVwQXNzZXRCYWxhbmNlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAABHRoaXMJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAA0ludAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAWTmV3U3VtdXBvZkFzc2V0QmFsYW5jZQkAAGUAAAACBQAAABFDaGVja0Fzc2V0QmFsYW5jZQUAAAAUcXVhbnRpdHlvZnByaWNlYXNzZXQEAAAAEFN1bXVwVVNEVEJhbGFuY2UEAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAADSW50BAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhAAAAAAAAAAAABAAAABVOZXdTdW11cG9mVVNEVEJhbGFuY2UJAABkAAAAAgUAAAAQQ2hlY2tVU0RUQmFsYW5jZQgFAAAAA3BtdAAAAAZhbW91bnQEAAAABFRPUFQEAAAAByRtYXRjaDAJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAATVG90YWxfb2ZfUGFpcl9UeG5zXwUAAAAMRW50ZXJBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAABk5ld1RQVAkAAGQAAAACBQAAAARUT1BUAAAAAAAAAAABAwkBAAAAAiE9AAAAAgUAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUAAAAMRW50ZXJBc3NldElECQAAAgAAAAECAAAAK1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3RlZCBBc3NldC4DCQAAAAAAAAIFAAAADFZvdGluZ1N0YXR1cwUAAAATQ3VycmVudFZvdGluZ1N0YXR1cwkAAAIAAAABCQABLAAAAAIFAAAADEVudGVyQXNzZXRJRAIAAAAgIGlzIG5vdCBBIFdoaXRlbGlzdGVkIFRva2VuIFlldC4DCQAAAAAAAAIFAAAADEVudGVyQXNzZXRJRAkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAHlJbnB1dCBjYW4gTmV2ZXIgYmUgYSBVU0RUIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgJiBBdHRhY2ggVVNEVCBhcyBhbiBhdHRhY2htZW50IFRva2VuIGluIHBheW1lbnRbMV0uAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAH5Zb3UgY2FuIEF0dGFjaCBVU0RUIGFzIGFuIEF0dGFjaGVkIFBheW1lbnRbMV0gdG8gU3dhcCBVU0RUIFRvIFJlcXVpcmVkIFRva2VuLiBBbnkgb3RoZXIgYXNzZXQgZWxzZSB0aGFuIFVTRFQgd2lsbCBiZSByZWplY3RlZC4DCQAAZgAAAAIAAAAAAACYloAIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAAWllvdXIgQXR0YWNoZWQgVVNEVCBBbW91bnQgaXMgdmVyeSBsb3cuIEF0dGFjaCBBdGxlYXN0IDEwIFVTRFQgdG8gQ2xhaW0gdGhlIG1pbmltdW0gVG9rZW5zLgMJAAAAAAAAAgUAAAAQQ2hlY2tVU0RUQmFsYW5jZQAAAAAAAAAAAAkAAAIAAAABAgAAAGVTd2FwIFBhaXIgTmVlZCB0byBBZGQgTGlxdWlkaXR5IGZpcnN0IGludG8gUG9vbC4gT25seSBBZnRlciB0aGF0IFBhaXIgd2lsbCBiZSBhY3RpdmF0ZWQgZm9yIFN3YXBwaW5nLgMJAAAAAAAAAgUAAAARQ2hlY2tBc3NldEJhbGFuY2UAAAAAAAAAAAAJAAACAAAAAQIAAABlU3dhcCBQYWlyIE5lZWQgdG8gQWRkIExpcXVpZGl0eSBmaXJzdCBpbnRvIFBvb2wuIE9ubHkgQWZ0ZXIgdGhhdCBQYWlyIHdpbGwgYmUgYWN0aXZhdGVkIGZvciBTd2FwcGluZy4DCQAAZgAAAAIFAAAAFHF1YW50aXR5b2ZwcmljZWFzc2V0BQAAABFDaGVja0Fzc2V0QmFsYW5jZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAdUG9vbCBPbmx5IGhhcyBhIExpcXVpZGl0eSBvZiAJAAGkAAAAAQUAAAARQ2hlY2tBc3NldEJhbGFuY2UCAAAAISBUb2tlbnMuIEFkZCBMaXF1aWRpdHkgaW50byBQb29sLgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAABlUb3RhbF9Td2FwX0ZlZV9Db2xsZWN0ZWRfBQAAAAxFbnRlckFzc2V0SUQFAAAAHE5ld1N1bXVwb2ZVU0RUVG9Bc3NldFN3YXBGZWUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgIAAAATVG90YWxfb2ZfUGFpcl9UeG5zXwUAAAAMRW50ZXJBc3NldElEBQAAAAZOZXdUUFQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0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AAAVTmV3QXNzZXRIb2xkaW5nSW5QYWlyCQAAZAAAAAIFAAAAEkFzc2V0SG9sZGluZ0luUGFpcggFAAAABHBtdDEAAAAGYW1vdW50BAAAAA1MUFRva2VuSXNzdWVkBAAAAAckbWF0Y2gwCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQABLAAAAAICAAAACVRvdGFsX0xQXwUAAAAMRW50ZXJBc3NldElEAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAEAAAAEE5ld0xQVG9rZW5Jc3N1ZWQJAABkAAAAAgUAAAANTFBUb2tlbklzc3VlZAUAAAAScXVhbnRpdHlvZkxQVG9rZW4xAwkBAAAAAiE9AAAAAgUAAAAZY2hlY2twYWlyaXNhdmFpbGFibGVvcm5vdAUAAAAMRW50ZXJBc3NldElECQAAAgAAAAECAAAAK1BhaXIgaXMgbm90IGF2YWlsYWJsZSBpbiBXaGl0ZWxpc3RlZCBBc3NldC4DCQAAAAAAAAIFAAAADFZvdGluZ1N0YXR1cwUAAAATQ3VycmVudFZvdGluZ1N0YXR1cwkAAAIAAAABCQABLAAAAAIFAAAADEVudGVyQXNzZXRJRAIAAAAgIGlzIG5vdCBBIFdoaXRlbGlzdGVkIFRva2VuIFlldC4DCQAAAAAAAAIFAAAADEVudGVyQXNzZXRJRAkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAJJJbnB1dCBjYW4gTmV2ZXIgYmUgYSBVU0RUIEFzc2V0SUQuIEVudGVyIFdoaXRlbGlzdGVkIEFzc2V0SUQgaW4gaW5wdXQgYXMgd2VsbCBhcyBpbiBwYXltZW50WzFdICYgQXR0YWNoIFVTRFQgYXMgYW4gYXR0YWNobWVudCBUb2tlbiBpbiBwYXltZW50WzJdLgMJAQAAAAIhPQAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAIJAAACAAAAAQIAAACeVHdvIGF0dGFjaGVkIGFzc2V0cyBleHBlY3RlZCBhcyBwYXltZW50IGluIDUwJS01MCUuIEtpbmRseSBBdHRhY2ggcGF5bWVudDEgPSBUb2tlbiB5b3Ugd2FudCB0byBhZGQgZm9yIExpcXVpZGl0eSAmIHBheW1lbnQyID0gRXF1aXZhbGVudCBBbW91bnQgb2YgVVNEVCBUb2tlbi4DCQAAAAAAAAIIBQAAAARwbXQxAAAAB2Fzc2V0SWQFAAAAC1VTRFRBc3NldElECQAAAgAAAAECAAAAeFlvdSBBdHRhY2hlZCBVU0RUIGFzc2V0IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggb25seSB3aGl0ZWxpc3RlZCBUb2tlbiBpbiBwYXltZW50WzFdIGFsb25nIHdpdGggVVNEVCBpbiBwYXltZW50WzJdLgMJAQAAAAIhPQAAAAIIBQAAAARwbXQxAAAAB2Fzc2V0SWQJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElECQAAAgAAAAECAAAAa0luY29ycmVjdCBhc3NldCBhdHRhY2hlZCBmb3IgTGlxdWlkaXR5IGluIHBheW1lbnRbMV0sIHBsZWFzZSBhdHRhY2ggU3RyaW5nIEFzc2V0IG9yIFdoaXRlbGlzdGVkIFRva2VuIG9ubHkuAwkBAAAAAiE9AAAAAggFAAAABHBtdDEAAAAHYXNzZXRJZAkAAlkAAAABBQAAAAxFbnRlckFzc2V0SUQJAAACAAAAAQIAAABrSW5jb3JyZWN0IGFzc2V0IGF0dGFjaGVkIGZvciBMaXF1aWRpdHkgaW4gcGF5bWVudFsxXSwgcGxlYXNlIGF0dGFjaCBTdHJpbmcgQXNzZXQgb3IgV2hpdGVsaXN0ZWQgVG9rZW4gb25seS4DCQEAAAACIT0AAAACCAUAAAAEcG10MgAAAAdhc3NldElkBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAGpXcm9uZyBBc3NldCBBdHRhY2hlZCBpbiBwYXltZW50c1syXSwgUGxlYXNlIGF0dGFjaCBwYXltZW50WzFdID0gTGlxdWlkaXR5IFRva2VuICYgcGF5bWVudFsyXSA9IFVTRFQgVG9rZW4uAwkAAGYAAAACAAAAAAAAmJaACAUAAAAEcG10MgAAAAZhbW91bnQJAAACAAAAAQIAAABVcGxlYXNlIGF0dGFjaCBhdGxlYXN0IDEwIFVTRFQgaW4gcGF5bWVudFsyXSAmIEVxdWl2YWxlbnQgd29ydGggb2YgVG9rZW4gaW4gcGF5bWVudFsxXQMJAQAAAAIhPQAAAAIIBQAAAARwbXQyAAAABmFtb3VudAUAAAAWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAF5BdHRhY2hlZCBwYXltZW50WzJdIHF0eSBpcyBub3QgbWF0Y2hpbmcgYXMgcGVyIGF0dGFjaGVkIHBheW1lbnRbMV0ucGF5bWVudFsyXSBtdXN0IGJlIGFzIGludCBbCQABpAAAAAEFAAAAFnF1YW50aXR5b2ZFbnRlckFzc2V0SUQCAAAABV0gb3IgCQABpAAAAAEJAABrAAAAAwUAAAAWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAAAAAAAAAAAAQAAAAAAAA9CQAIAAAABLgkBAAAACXRha2VSaWdodAAAAAIJAAGkAAAAAQUAAAAWcXVhbnRpdHlvZkVudGVyQXNzZXRJRAAAAAAAAAAABgIAAAAGIFVTRFQuAwkAAGYAAAACAAAAAAAAAAABBQAAABJxdWFudGl0eW9mTFBUb2tlbjEJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAIExQIFRva2VuIE91dGNvbWUgaXMgZ29pbmcgYmVsb3cgCQABpAAAAAEFAAAADXNoYXJlZGVjaW1hbHMCAAAAPCBEZWNpbWFscy4gUGxlYXNlIEF0dGFjaCBtaW4uIDEgTFAgdG9rZW4gb3IgMTAgVVNEVCBBdGxlYXN0LgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAUAAAAUTmV3VVNEVEhvbGRpbmdJblBhaXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQFAAAAFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAlUb3RhbF9MUF8FAAAADEVudGVyQXNzZXRJRAUAAAAQTmV3TFBUb2tlbklzc3VlZAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADlJlaXNzdWVhc3NldElkBQAAABJxdWFudGl0eW9mTFBUb2tlbjEGCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMIBQAAAAFpAAAABmNhbGxlcgUAAAAScXVhbnRpdHlvZkxQVG9rZW4xBQAAAA5SZWlzc3VlYXNzZXRJZAUAAAADbmlsAAAAAWkBAAAAD1JlbW92ZUxpcXVpZGl0eQAAAAEAAAAMRW50ZXJBc3NldElEBAAAAA1jYWxsZXJhZGRyZXNzCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAADpObyBwYXltZW50IGF0dGFjaGVkLCBQbGVhc2UgQXR0YWNoIExQIFRva2VuIGFzIHBheW1lbnRbMV0uBAAAABljaGVja3BhaXJpc2F2YWlsYWJsZW9ybm90CQAEHQAAAAIFAAAABHRoaXMJAAEsAAAAAgIAAAAIUGFpcl9VVl8FAAAADEVudGVyQXNzZXRJRAQAAAAMVm90aW5nU3RhdHVzCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQABLAAAAAICAAAADlZvdGluZ19TdGF0dXNfBQAAAAxFbnRlckFzc2V0SUQEAAAAElJlaXNzdWVhYmxlYXNzZXRJZAkAAlkAAAABCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwkAASwAAAACAgAAAANMUF8FAAAADEVudGVyQXNzZXRJRAIAAAAlTFAgVG9rZW4gaXMgTWlzc2luZyBvciBub3QgR2VuZXJhdGVkLgQAAAATQ3VycmVudFZvdGluZ1N0YXR1cwIAAAABRgQAAAAMZGVjaW1hbHNpbmZvCQEAAAAT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AAAHJG1hdGNoMAUAAAABYQAAAAAAAAAAAAQAAAAQTmV3TFBUb2tlbklzc3VlZAkAAGUAAAACBQAAAA1MUFRva2VuSXNzdWVkCAUAAAADcG10AAAABmFtb3VudAMJAQAAAAIhPQAAAAIFAAAAGWNoZWNrcGFpcmlzYXZhaWxhYmxlb3Jub3QFAAAADEVudGVyQXNzZXRJRAkAAAIAAAABAgAAACNQYWlyIGlzIG5vdCBhdmFpbGFibGUgaW4gV2hpdGVsaXN0LgMJAAAAAAAAAgUAAAAMVm90aW5nU3RhdHVzBQAAABNDdXJyZW50Vm90aW5nU3RhdHVzCQAAAgAAAAEJAAEsAAAAAgUAAAAMRW50ZXJBc3NldElEAgAAAB4gaXMgbm90IEEgV2hpdGVsaXN0IFRva2VuIFlldC4DCQAAAAAAAAIJAAJZAAAAAQUAAAAMRW50ZXJBc3NldElEBQAAAAtVU0RUQXNzZXRJRAkAAAIAAAABAgAAAGtEb24ndCBjaG9vc2UgVVNEVCBBc3NldElEIGFzIElucHV0LCBPbmx5IFdoaXRlbGlzdGVkIEFzc2V0IGFzIElucHV0IFN0cmluZyAmIEF0dGFjaCBMUCBUb2tlbnMgYXMgcGF5bWVudFsxXQMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAASUmVpc3N1ZWFibGVhc3NldElkCQAAAgAAAAECAAAAR1dyb25nIEFzc2V0IGlzIGF0dGFjaGVkIGluIHBheW1lbnRbMV0gb3IgTFAgVG9rZW4gTm90IEZvdW5kIG9yIE1pc3NpbmcuAwkAAGYAAAACAAAAAAAAAAABBQAAABBVc2VyTFBQZXJjZW50YWdlCQAAAgAAAAECAAAALllvdXIgTFAgVG9rZW4gYW1vdW50ICUgaXMgdmVyeSBsb3cgdG8gY29udmVydC4DCQAAZgAAAAIAAAAAAAAAAAEFAAAAD1VzZXJMUFdvcnRoVVNEVAkAAAIAAAABAgAAAFJZb3VyIExQIFRva2VuIGNvbnZlcnNpb24gYW1vdW50IGlzIHZlcnkgbG93IHRvIGNvbnZlcnQgb3IgbGVzcyB0aGFuIDAuMDAwMDAxIFVTRFQuAwkAAGYAAAACAAAAAAAAAAABBQAAABBVc2VyTFBXb3J0aEFzc2V0CQAAAgAAAAECAAAAXFlvdXIgTFAgVG9rZW4gY29udmVyc2lvbiBhbW91bnQgaXMgdmVyeSBsb3cgdG8gY29udmVydCBvciBsZXNzIHRoYW4gZnJhY3Rpb24gdmFsdWUgb2YgVG9rZW4uCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABZXaXRoZHJhd19MUF9QZXJjZW50YWdlBQAAABBVc2VyTFBQZXJjZW50YWdlCQAETAAAAAIJAQAAAARCdXJuAAAAAgUAAAASUmVpc3N1ZWFibGVhc3NldElkCAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACAgAAAAlUb3RhbF9MUF8FAAAADEVudGVyQXNzZXRJRAUAAAAQTmV3TFBUb2tlbklzc3VlZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAALQmFsYW5jZV9vZl8FAAAADEVudGVyQXNzZXRJRAIAAAABXwkAAlgAAAABBQAAAAtVU0RUQXNzZXRJRAUAAAAUTmV3VVNEVEhvbGRpbmdJblBhaXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAC0JhbGFuY2Vfb2ZfCQACWAAAAAEFAAAAC1VTRFRBc3NldElEAgAAAAFfBQAAAAxFbnRlckFzc2V0SUQFAAAAFU5ld0Fzc2V0SG9sZGluZ0luUGFpcgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIFAAAAD1VzZXJMUFdvcnRoVVNEVAUAAAALVVNEVEFzc2V0SUQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAABBVc2VyTFBXb3J0aEFzc2V0CQACWQAAAAEFAAAADEVudGVyQXNzZXRJRAUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAQAAAAHJG1hdGNoMAUAAAACdHgJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5AU0pYw==", "height": 1900660, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3y2VyqKLt2EeUVVHkfxyPT6HxZKwm14LMVJHABGKiZUw Next: ChtHNHDwk9MjrAoJQ1hP6S8s5eeA3F8m7jf7uJAwk65C Diff:
OldNewDifferences
55
66 let b = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
77
8-let c = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
8+let c = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
99
1010 let d = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
1111
1212 let e = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
1313
14-let f = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
15-
16-@Callable(g)
17-func RegisterPairForVoting (h,i) = {
18- let j = value(g.payments[0])
19- let k = value(g.payments[1])
20- let l = value(g.payments[2])
21- let m = 90
22- let n = toBase58String(g.caller.bytes)
23- let o = !(isDefined(k.assetId))
24- let p = 1440
25- let q = (p * i)
26- let r = (q - 43199)
27- let s = ((100000 + ((11574 * r) / 10000)) * 100000000)
28- let t = (height + q)
29- let u = getString(this, ("Pair_UV_" + h))
30- let v = "F"
31- let w = fromBase58String(h)
32- if ((43 > size(h)))
14+@Callable(f)
15+func RegisterPairForVoting (g,h) = {
16+ let i = value(f.payments[0])
17+ let j = value(f.payments[1])
18+ let k = 90
19+ let l = toBase58String(f.caller.bytes)
20+ let m = !(isDefined(j.assetId))
21+ let n = 1440
22+ let o = (n * h)
23+ let p = (o - 43199)
24+ let q = ((100000 + ((11574 * p) / 10000)) * 100000000)
25+ let r = (height + o)
26+ let s = getString(this, ("Pair_UV_" + g))
27+ let t = "F"
28+ let u = fromBase58String(g)
29+ if ((43 > size(g)))
3330 then throw("Wrong AssetID is Entered for Voting. Please Enter a Valid AssetID. Probably you entered an AssetID less than 43 Chars.")
34- else if ((29 >= i))
31+ else if ((29 >= h))
3532 then throw("Enter no. of days in between 30 to 90.")
36- else if ((i > m))
33+ else if ((h > k))
3734 then throw("You Entered days greater than 90 please Enter no. of days in between 1 to 90.")
38- else if ((u == h))
35+ else if ((s == g))
3936 then throw("Pair Already Exist in Voting List.")
40- else if ((size(g.payments) != 3))
41- then throw("Three attached assets expected as payment. Kindly Attach payment1 = 1000 CODE Token & payment2 = Token you want to List for Voting. & payment3 = 1000 xUSD")
42- else if ((j.assetId != b))
43- then throw("Incorrect asset attached for Voting in payment[1], please attach 1000 CODE Token only.")
44- else if ((j.amount != 10000000))
45- then throw((((("You attached only " + toString(fraction(j.amount, 1, 100000000))) + ".") + toString(fraction(j.amount, 1, 10000000))) + " CODE for Voting in payment[1], please attach 1000 CODE Token."))
46- else if ((k.assetId != w))
37+ else if ((size(f.payments) != 2))
38+ then throw("Two attached assets expected as payment. Kindly Attach payment1 = CODE Token & payment2 = Token you want to List for Voting.")
39+ else if ((i.assetId != b))
40+ then throw("Incorrect asset attached for Voting in payment[1], please attach 2000 CODE Token only.")
41+ else if ((i.amount != 200000000000))
42+ then throw((((("You attached only " + toString(fraction(i.amount, 1, 100000000))) + ".") + toString(fraction(i.amount, 1, 10000000))) + " CODE for Voting in payment[1], please attach 2000 CODE Token."))
43+ else if ((j.assetId != u))
4744 then throw("Input String & Attached AssetID in payment2 is not matching.")
48- else if ((o == true))
45+ else if ((m == true))
4946 then throw("You Attached TN Asset ID for Voting, please attach fsTN instead of TN or Token You want to list in payment[2].")
50- else if ((l.assetId != c))
51- then throw("Incorrect asset attached for Voting in payment[3], please attach 1000 xUSD Token only.")
52- else if ((l.amount != 10000000))
53- then throw((((("You attached only " + toString(fraction(l.amount, 1, 100000000))) + ".") + toString(fraction(l.amount, 1, 10000000))) + " xUSD for Voting in payment[3], please attach 1000 xUSD Token."))
54- else [StringEntry(("Pair_UV_" + h), h), StringEntry(("Voting_Status_" + h), v), IntegerEntry(("Voting_SH_" + h), height), IntegerEntry(("Voting_EH_" + h), t), IntegerEntry(("Voting_Period_" + h), q), IntegerEntry(("Listing_Fee_" + h), j.amount), IntegerEntry(("xUSD_Listing_Fee_" + h), l.amount), IntegerEntry(("Votes_Req_" + h), (s / 3)), IntegerEntry(("Votes_Rcvd_" + h), 0), ScriptTransfer(d, j.amount, b)]
47+ else [StringEntry(("Pair_UV_" + g), g), StringEntry(("Voting_Status_" + g), t), IntegerEntry(("Voting_SH_" + g), height), IntegerEntry(("Voting_EH_" + g), r), IntegerEntry(("Voting_Period_" + g), o), IntegerEntry(("Listing_Fee_" + g), i.amount), IntegerEntry(("Votes_Req_" + g), (q / 3)), IntegerEntry(("Votes_Rcvd_" + g), 0), ScriptTransfer(c, i.amount, b)]
5548 }
5649
5750
5851
59-@Callable(g)
60-func DoVoting (h) = {
61- let x = if ((size(g.payments) == 1))
62- then g.payments[0]
52+@Callable(f)
53+func DoVoting (g) = {
54+ let v = if ((size(f.payments) == 1))
55+ then f.payments[0]
6356 else throw((toBase58String(b) + "CODE Token is required as Attached payment"))
64- let y = toBase58String(g.caller.bytes)
65- let z = "P"
66- let A = getIntegerValue(this, ("Voting_EH_" + h))
67- let B = getString(this, ("Pair_UV_" + h))
68- let C = getIntegerValue(this, ("Votes_Req_" + h))
69- let D = getIntegerValue(this, ("Votes_Rcvd_" + h))
70- let E = getStringValue(this, ("Voting_Status_" + h))
71- let F = {
72- let G = getInteger(this, ("Votes_Rcvd_" + h))
73- if ($isInstanceOf(G, "Int"))
57+ let w = toBase58String(f.caller.bytes)
58+ let x = "P"
59+ let y = getIntegerValue(this, ("Voting_EH_" + g))
60+ let z = getString(this, ("Pair_UV_" + g))
61+ let A = getIntegerValue(this, ("Votes_Req_" + g))
62+ let B = getIntegerValue(this, ("Votes_Rcvd_" + g))
63+ let C = getStringValue(this, ("Voting_Status_" + g))
64+ let D = {
65+ let E = getInteger(this, ("Votes_Rcvd_" + g))
66+ if ($isInstanceOf(E, "Int"))
7467 then {
75- let H = G
76- H
68+ let F = E
69+ F
7770 }
7871 else 0
7972 }
80- let I = (F + x.amount)
81- let J = {
82- let G = getInteger(this, ((("Votes_Rcvd_" + y) + "_") + h))
83- if ($isInstanceOf(G, "Int"))
73+ let G = (D + v.amount)
74+ let H = {
75+ let E = getInteger(this, ((("Votes_Rcvd_" + w) + "_") + g))
76+ if ($isInstanceOf(E, "Int"))
8477 then {
85- let K = G
86- K
78+ let I = E
79+ I
8780 }
8881 else 0
8982 }
90- let L = (J + x.amount)
91- let M = (D >= C)
92- let N = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
93- if ((B != h))
83+ let J = (H + v.amount)
84+ let K = (B >= A)
85+ let L = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
86+ if ((z != g))
9487 then throw("Pair is not available in Voting List.")
95- else if ((height > A))
96- then throw((("Voting timeline for " + h) + " is expired."))
97- else if ((x.assetId != b))
88+ else if ((height > y))
89+ then throw((("Voting timeline for " + g) + " is expired."))
90+ else if ((v.assetId != b))
9891 then throw((("Kindly Attach Only " + toBase58String(b)) + " Token."))
99- else if ((E == z))
100- then throw((("Voting for " + h) + " pair is completed & it’s available in whitelist."))
101- else if (M)
102- then [StringEntry(("Voting_Status_" + h), z), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), 0), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), 0), IntegerEntry(("Total_of_Pair_Txns_" + h), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(a)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + h), 0), IntegerEntry(((("Votes_Rcvd_" + y) + "_") + h), L)]
103- else [IntegerEntry(("Votes_Rcvd_" + h), I), IntegerEntry(((("Votes_Rcvd_" + y) + "_") + h), L)]
92+ else if ((C == x))
93+ then throw((("Voting for " + g) + " pair is completed & it’s available in whitelist."))
94+ else if (K)
95+ then [StringEntry(("Voting_Status_" + g), x), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), 0), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), 0), IntegerEntry(("Total_of_Pair_Txns_" + g), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + g), 0), IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), J)]
96+ else [IntegerEntry(("Votes_Rcvd_" + g), G), IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), J)]
10497 }
10598
10699
107100
108-@Callable(g)
109-func WithdrawVotedTokens (h) = {
110- let x = if ((size(g.payments) == 1))
111- then g.payments[0]
101+@Callable(f)
102+func WithdrawVotedTokens (g) = {
103+ let v = if ((size(f.payments) == 1))
104+ then f.payments[0]
112105 else throw("0.1 TN Token is required as Attached payment.")
113- let y = toBase58String(g.caller.bytes)
114- let A = getIntegerValue(this, ("Voting_EH_" + h))
115- let B = getString(this, ("Pair_UV_" + h))
116- let O = valueOrErrorMessage(getInteger(this, ((("Votes_Rcvd_" + y) + "_") + h)), (y + " Address never voted & exist in list."))
117- let P = (A - height)
118- if ((B != h))
106+ let w = toBase58String(f.caller.bytes)
107+ let y = getIntegerValue(this, ("Voting_EH_" + g))
108+ let z = getString(this, ("Pair_UV_" + g))
109+ let M = valueOrErrorMessage(getInteger(this, ((("Votes_Rcvd_" + w) + "_") + g)), (w + " Address never voted & exist in list."))
110+ let N = (y - height)
111+ if ((z != g))
119112 then throw("Pair is not available in Voting List.")
120- else if ((A > height))
121- then throw((("Voting Already Running. You can withdraw your CODE Token after " + toString(P)) + " blocks"))
122- else if ((0 >= O))
113+ else if ((y > height))
114+ then throw((("Voting Already Running. You can withdraw your CODE Token after " + toString(N)) + " blocks"))
115+ else if ((0 >= M))
123116 then throw("You don't have any dues of CODE balance in this Voting Pair.")
124- else if (isDefined(x.assetId))
117+ else if (isDefined(v.assetId))
125118 then throw("Don't attach any other asset. Please attach 0.1 TN as a fee to release your token")
126- else if ((x.amount != 10000000))
119+ else if ((v.amount != 10000000))
127120 then throw("Please attach 0.1 TN as a fee to release your token.")
128- else [IntegerEntry(((("Votes_Rcvd_" + y) + "_") + h), 0), ScriptTransfer(g.caller, O, b)]
121+ else [IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), 0), ScriptTransfer(f.caller, M, b)]
129122 }
130123
131124
132125
133-@Callable(g)
134-func IssueLPToken (h) = {
135- let Q = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
136- let y = toBase58String(g.caller.bytes)
137- let B = valueOrErrorMessage(getString(this, ("Pair_UV_" + h)), "Asset not Found in Whitelisted Token")
138- let N = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
139- let R = N.name
140- let S = N.decimals
141- let z = "P"
142- let E = valueOrErrorMessage(getString(this, ("Voting_Status_" + h)), ("Voting Status is Missing for " + h))
143- let T = (1 * pow(10, 0, fraction((S + 6), 1, 2), 0, 0, UP))
144- let U = Issue((("LP-" + take(R, 8)) + "-USDT"), (((("LP-" + R) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + h), T, fraction((S + 6), 1, 2), true)
145- let V = calculateAssetId(U)
146- if ((Q != y))
147- then throw((("Your are not allowded to Issue LP Token. Only " + Q) + " can issue the LP Token."))
148- else if ((B != h))
126+@Callable(f)
127+func IssueLPToken (g) = {
128+ let O = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
129+ let w = toBase58String(f.caller.bytes)
130+ let z = valueOrErrorMessage(getString(this, ("Pair_UV_" + g)), "Asset not Found in Whitelisted Token")
131+ let L = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
132+ let P = L.name
133+ let Q = L.decimals
134+ let x = "P"
135+ let C = valueOrErrorMessage(getString(this, ("Voting_Status_" + g)), ("Voting Status is Missing for " + g))
136+ let R = (1 * pow(10, 0, fraction((Q + 6), 1, 2), 0, 0, UP))
137+ let S = Issue((("LP-" + take(P, 8)) + "-USDT"), (((("LP-" + P) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + g), R, fraction((Q + 6), 1, 2), true)
138+ let T = calculateAssetId(S)
139+ if ((O != w))
140+ then throw((("Your are not allowded to Issue LP Token. Only " + O) + " can issue the LP Token."))
141+ else if ((z != g))
149142 then throw("Pair is not available in Voting List.")
150- else if ((E != z))
143+ else if ((C != x))
151144 then throw("LP Token must be a Whitelisted Token.")
152- else [U, StringEntry(("LP_" + h), toBase58String(V)), IntegerEntry(("Total_LP_" + h), T)]
145+ else [S, StringEntry(("LP_" + g), toBase58String(T)), IntegerEntry(("Total_LP_" + g), R)]
153146 }
154147
155148
156149
157-@Callable(g)
158-func SwapAssetToUSDTPairEntry (h) = {
159- let y = toBase58String(g.caller.bytes)
160- let x = if ((size(g.payments) == 1))
161- then g.payments[0]
150+@Callable(f)
151+func SwapAssetToUSDTPairEntry (g) = {
152+ let w = toBase58String(f.caller.bytes)
153+ let v = if ((size(f.payments) == 1))
154+ then f.payments[0]
162155 else throw("Whitelisted Token is required as Attached payment[1].")
163- let B = getString(this, ("Pair_UV_" + h))
164- let E = getStringValue(this, ("Voting_Status_" + h))
165- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
166- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
167- let Y = fraction(W, X, (X + x.amount))
168- let Z = (W - Y)
169- let aa = "F"
170- let ab = 3
171- let ac = ((Z * ab) / 1000)
172- let ad = (Z - ac)
173- let ae = {
174- let G = getInteger(this, ((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(a)))
175- if ($isInstanceOf(G, "Int"))
156+ let z = getString(this, ("Pair_UV_" + g))
157+ let C = getStringValue(this, ("Voting_Status_" + g))
158+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
159+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
160+ let W = fraction(U, V, (V + v.amount))
161+ let X = (U - W)
162+ let Y = "F"
163+ let Z = 6
164+ let aa = ((X * Z) / 1000)
165+ let ab = (X - aa)
166+ let ac = {
167+ let E = getInteger(this, ((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)))
168+ if ($isInstanceOf(E, "Int"))
176169 then {
177- let H = G
178- H
170+ let F = E
171+ F
179172 }
180173 else 0
181174 }
182- let af = (ae + ac)
183- let ag = {
184- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
185- if ($isInstanceOf(G, "Int"))
175+ let ad = (ac + aa)
176+ let ae = {
177+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
178+ if ($isInstanceOf(E, "Int"))
186179 then {
187- let H = G
188- H
180+ let F = E
181+ F
189182 }
190183 else 0
191184 }
192- let ah = (X + x.amount)
193- let ai = {
194- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
195- if ($isInstanceOf(G, "Int"))
185+ let af = (V + v.amount)
186+ let ag = {
187+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
188+ if ($isInstanceOf(E, "Int"))
196189 then {
197- let H = G
198- H
190+ let F = E
191+ F
199192 }
200193 else 0
201194 }
202- let aj = (W - Z)
203- let ak = {
204- let G = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
205- if ($isInstanceOf(G, "Int"))
195+ let ah = (U - X)
196+ let ai = {
197+ let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
198+ if ($isInstanceOf(E, "Int"))
206199 then {
207- let H = G
208- H
200+ let F = E
201+ F
209202 }
210203 else 0
211204 }
212- let al = (ak + 1)
213- if ((h == toBase58String(a)))
205+ let aj = (ai + 1)
206+ if ((g == toBase58String(a)))
214207 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
215- else if ((B != h))
208+ else if ((z != g))
216209 then throw("Pair is not available in Whitelisted Asset.")
217- else if ((E == aa))
218- then throw((h + " is not A Whitelisted Token Yet."))
219- else if ((x.assetId == a))
210+ else if ((C == Y))
211+ then throw((g + " is not A Whitelisted Token Yet."))
212+ else if ((v.assetId == a))
220213 then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are accepted.")
221- else if ((x.assetId != fromBase58String(h)))
222- then throw(("Incorrect asset attached, please attach or send " + h))
223- else if ((W == 0))
214+ else if ((v.assetId != fromBase58String(g)))
215+ then throw(("Incorrect asset attached, please attach or send " + g))
216+ else if ((U == 0))
224217 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
225- else if ((X == 0))
218+ else if ((V == 0))
226219 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
227- else if ((10000000 > Z))
228- then throw((("Your Attached Asset Amount is very low. Attach More " + h) + " Tokens to Claim the minimum Amount of 10 dollar atleast."))
229- else if ((Z > W))
230- then throw((("Pool Only has a Liquidity of " + toString((W / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
231- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(a)), af), IntegerEntry(("Total_of_Pair_Txns_" + h), al), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), ah), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), aj), ScriptTransfer(g.caller, ad, a), ScriptTransfer(e, ac, a)]
220+ else if ((10000000 > X))
221+ then throw((("Your Attached Asset Amount is very low. Attach More " + g) + " Tokens to Claim the minimum Amount of 10 dollar atleast."))
222+ else if ((X > U))
223+ then throw((("Pool Only has a Liquidity of " + toString((U / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
224+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), ad), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, a), ScriptTransfer(d, aa, a)]
232225 }
233226
234227
235228
236-@Callable(g)
237-func SwapUSDTToAssetPairEntry (h) = {
238- let y = toBase58String(g.caller.bytes)
239- let x = if ((size(g.payments) == 1))
240- then g.payments[0]
229+@Callable(f)
230+func SwapUSDTToAssetPairEntry (g) = {
231+ let w = toBase58String(f.caller.bytes)
232+ let v = if ((size(f.payments) == 1))
233+ then f.payments[0]
241234 else throw((("Only " + toBase58String(a)) + " USDT Token is required as an Attached payment[1]."))
242- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
243- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
244- let am = fraction(W, X, (W + x.amount))
245- let Z = (X - am)
246- let B = getString(this, ("Pair_UV_" + h))
247- let E = getStringValue(this, ("Voting_Status_" + h))
248- let aa = "F"
249- let ab = 3
250- let ac = ((Z * ab) / 1000)
251- let ad = (Z - ac)
252- let an = {
253- let G = getInteger(this, ("Total_Swap_Fee_Collected_" + h))
254- if ($isInstanceOf(G, "Int"))
235+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
236+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
237+ let ak = fraction(U, V, (U + v.amount))
238+ let X = (V - ak)
239+ let z = getString(this, ("Pair_UV_" + g))
240+ let C = getStringValue(this, ("Voting_Status_" + g))
241+ let Y = "F"
242+ let Z = 3
243+ let aa = ((X * Z) / 1000)
244+ let ab = (X - aa)
245+ let al = {
246+ let E = getInteger(this, ("Total_Swap_Fee_Collected_" + g))
247+ if ($isInstanceOf(E, "Int"))
255248 then {
256- let H = G
257- H
249+ let F = E
250+ F
258251 }
259252 else 0
260253 }
261- let ao = (an + ac)
262- let ag = {
263- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
264- if ($isInstanceOf(G, "Int"))
254+ let am = (al + aa)
255+ let ae = {
256+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
257+ if ($isInstanceOf(E, "Int"))
265258 then {
266- let H = G
267- H
259+ let F = E
260+ F
268261 }
269262 else 0
270263 }
271- let ah = (X - Z)
272- let ai = {
273- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
274- if ($isInstanceOf(G, "Int"))
264+ let af = (V - X)
265+ let ag = {
266+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
267+ if ($isInstanceOf(E, "Int"))
275268 then {
276- let H = G
277- H
269+ let F = E
270+ F
278271 }
279272 else 0
280273 }
281- let aj = (W + x.amount)
282- let ak = {
283- let G = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
284- if ($isInstanceOf(G, "Int"))
274+ let ah = (U + v.amount)
275+ let ai = {
276+ let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
277+ if ($isInstanceOf(E, "Int"))
285278 then {
286- let H = G
287- H
279+ let F = E
280+ F
288281 }
289282 else 0
290283 }
291- let al = (ak + 1)
292- if ((B != h))
284+ let aj = (ai + 1)
285+ if ((z != g))
293286 then throw("Pair is not available in Whitelisted Asset.")
294- else if ((E == aa))
295- then throw((h + " is not A Whitelisted Token Yet."))
296- else if ((h == toBase58String(a)))
287+ else if ((C == Y))
288+ then throw((g + " is not A Whitelisted Token Yet."))
289+ else if ((g == toBase58String(a)))
297290 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach USDT as an attachment Token in payment[1].")
298- else if ((x.assetId != a))
291+ else if ((v.assetId != a))
299292 then throw("You can Attach USDT as an Attached Payment[1] to Swap USDT To Required Token. Any other asset else than USDT will be rejected.")
300- else if ((10000000 > x.amount))
293+ else if ((10000000 > v.amount))
301294 then throw("Your Attached USDT Amount is very low. Attach Atleast 10 USDT to Claim the minimum Tokens.")
302- else if ((W == 0))
295+ else if ((U == 0))
303296 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
304- else if ((X == 0))
297+ else if ((V == 0))
305298 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
306- else if ((Z > X))
307- then throw((("Pool Only has a Liquidity of " + toString(X)) + " Tokens. Add Liquidity into Pool."))
308- else [IntegerEntry(("Total_Swap_Fee_Collected_" + h), ao), IntegerEntry(("Total_of_Pair_Txns_" + h), al), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), ah), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), aj), ScriptTransfer(g.caller, ad, fromBase58String(h)), ScriptTransfer(f, ac, fromBase58String(h))]
299+ else if ((X > V))
300+ then throw((("Pool Only has a Liquidity of " + toString(V)) + " Tokens. Add Liquidity into Pool."))
301+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + g), am), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, fromBase58String(g)), ScriptTransfer(e, aa, fromBase58String(g))]
309302 }
310303
311304
312305
313-@Callable(g)
314-func AddLiquidity (h) = {
315- let y = toBase58String(g.caller.bytes)
316- let j = value(g.payments[0])
317- let k = value(g.payments[1])
318- let B = getString(this, ("Pair_UV_" + h))
319- let E = getStringValue(this, ("Voting_Status_" + h))
320- let ap = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or May be not Generated."))
321- let aa = "F"
322- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
323- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
324- let aq = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
325- let S = aq.decimals
326- let ar = W
327- let as = X
328- let at = pow((((ar * 1000000) / as) * pow(10, 0, S, 0, 0, UP)), 0, 1, 0, 0, UP)
329- let au = (6 + S)
330- let av = (au / 2)
331- let aw = fraction(at, j.amount, pow(10, 0, au, 0, 0, UP))
332- let ax = pow((fraction(j.amount, 1, pow(10, 0, S, 0, 0, UP)) * fraction(k.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, av, DOWN)
333- let ay = {
334- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
335- if ($isInstanceOf(G, "Int"))
306+@Callable(f)
307+func AddLiquidity (g) = {
308+ let w = toBase58String(f.caller.bytes)
309+ let i = value(f.payments[0])
310+ let j = value(f.payments[1])
311+ let z = getString(this, ("Pair_UV_" + g))
312+ let C = getStringValue(this, ("Voting_Status_" + g))
313+ let an = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or May be not Generated."))
314+ let Y = "F"
315+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
316+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
317+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
318+ let Q = ao.decimals
319+ let ap = U
320+ let aq = V
321+ let ar = pow((((ap * 1000000) / aq) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
322+ let as = (6 + Q)
323+ let at = (as / 2)
324+ let au = fraction(ar, i.amount, pow(10, 0, as, 0, 0, UP))
325+ let av = pow((fraction(i.amount, 1, pow(10, 0, Q, 0, 0, UP)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, at, DOWN)
326+ let aw = {
327+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
328+ if ($isInstanceOf(E, "Int"))
336329 then {
337- let H = G
338- H
330+ let F = E
331+ F
339332 }
340333 else 0
341334 }
342- let az = (ay + k.amount)
343- let aA = {
344- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
345- if ($isInstanceOf(G, "Int"))
335+ let ax = (aw + j.amount)
336+ let ay = {
337+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
338+ if ($isInstanceOf(E, "Int"))
346339 then {
347- let H = G
348- H
340+ let F = E
341+ F
349342 }
350343 else 0
351344 }
352- let aB = (aA + j.amount)
353- let aC = {
354- let G = getIntegerValue(this, ("Total_LP_" + h))
355- if ($isInstanceOf(G, "Int"))
345+ let az = (ay + i.amount)
346+ let aA = {
347+ let E = getIntegerValue(this, ("Total_LP_" + g))
348+ if ($isInstanceOf(E, "Int"))
356349 then {
357- let H = G
358- H
350+ let F = E
351+ F
359352 }
360353 else 0
361354 }
362- let aD = (aC + ax)
363- if ((B != h))
355+ let aB = (aA + av)
356+ if ((z != g))
364357 then throw("Pair is not available in Whitelisted Asset.")
365- else if ((E == aa))
366- then throw((h + " is not A Whitelisted Token Yet."))
367- else if ((h == toBase58String(a)))
358+ else if ((C == Y))
359+ then throw((g + " is not A Whitelisted Token Yet."))
360+ else if ((g == toBase58String(a)))
368361 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach USDT as an attachment Token in payment[2].")
369- else if ((size(g.payments) != 2))
362+ else if ((size(f.payments) != 2))
370363 then throw("Two attached assets expected as payment in 50%-50%. Kindly Attach payment1 = Token you want to add for Liquidity & payment2 = Equivalent Amount of USDT Token.")
371- else if ((j.assetId == a))
364+ else if ((i.assetId == a))
372365 then throw("You Attached USDT asset in payment[1], please attach only whitelisted Token in payment[1] along with USDT in payment[2].")
373- else if ((j.assetId != fromBase58String(h)))
366+ else if ((i.assetId != fromBase58String(g)))
374367 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
375- else if ((j.assetId != fromBase58String(h)))
368+ else if ((i.assetId != fromBase58String(g)))
376369 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
377- else if ((k.assetId != a))
370+ else if ((j.assetId != a))
378371 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDT Token.")
379- else if ((10000000 > k.amount))
372+ else if ((10000000 > j.amount))
380373 then throw("please attach atleast 10 USDT in payment[2] & Equivalent worth of Token in payment[1]")
381- else if ((k.amount != aw))
382- then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as [" + toString(aw)) + "] or ") + toString(fraction(aw, 1, 1000000))) + ".") + takeRight(toString(aw), 6)) + " USDT."))
383- else if ((1 > ax))
384- then throw((("LP Token Outcome is going below " + toString(av)) + " Decimals. Please Attach min. 1 LP token or 10 USDT Atleast."))
385- else [IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), az), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), aB), IntegerEntry(("Total_LP_" + h), aD), Reissue(ap, ax, true), ScriptTransfer(g.caller, ax, ap)]
374+ else if ((j.amount != au))
375+ then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(au)) + "] or ") + toString(fraction(au, 1, 1000000))) + ".") + takeRight(toString(au), 6)) + " USDT."))
376+ else if ((1 > av))
377+ then throw((("LP Token Outcome is going below " + toString(at)) + " Decimals. Please Attach min. 1 LP token or 10 USDT Atleast."))
378+ else [IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), IntegerEntry(("Total_LP_" + g), aB), Reissue(an, av, true), ScriptTransfer(f.caller, av, an)]
386379 }
387380
388381
389382
390-@Callable(g)
391-func RemoveLiquidity (h) = {
392- let y = toBase58String(g.caller.bytes)
393- let x = if ((size(g.payments) == 1))
394- then g.payments[0]
383+@Callable(f)
384+func RemoveLiquidity (g) = {
385+ let w = toBase58String(f.caller.bytes)
386+ let v = if ((size(f.payments) == 1))
387+ then f.payments[0]
395388 else throw("No payment attached, Please Attach LP Token as payment[1].")
396- let B = getString(this, ("Pair_UV_" + h))
397- let E = getStringValue(this, ("Voting_Status_" + h))
398- let aE = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or not Generated."))
399- let aa = "F"
400- let aq = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
401- let S = aq.decimals
402- let au = (6 + S)
403- let av = (au / 2)
404- let aF = getIntegerValue(this, ("Total_LP_" + h))
405- let aG = pow(fraction(x.amount, pow(10, 0, 8, 0, 0, UP), aF), 6, 1, 0, 6, UP)
406- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
407- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
408- let aH = fraction(W, aG, pow(10, 0, 8, 0, 0, UP))
409- let aI = fraction(X, aG, pow(10, 0, 8, 0, 0, UP))
410- let ay = {
411- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
412- if ($isInstanceOf(G, "Int"))
389+ let z = getString(this, ("Pair_UV_" + g))
390+ let C = getStringValue(this, ("Voting_Status_" + g))
391+ let aC = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or not Generated."))
392+ let Y = "F"
393+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
394+ let Q = ao.decimals
395+ let as = (6 + Q)
396+ let at = (as / 2)
397+ let aD = getIntegerValue(this, ("Total_LP_" + g))
398+ let aE = pow(fraction(v.amount, pow(10, 0, 8, 0, 0, UP), aD), 6, 1, 0, 6, UP)
399+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
400+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
401+ let aF = fraction(U, aE, pow(10, 0, 8, 0, 0, UP))
402+ let aG = fraction(V, aE, pow(10, 0, 8, 0, 0, UP))
403+ let aw = {
404+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
405+ if ($isInstanceOf(E, "Int"))
413406 then {
414- let H = G
415- H
407+ let F = E
408+ F
416409 }
417410 else 0
418411 }
419- let az = (ay - aH)
420- let aA = {
421- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
422- if ($isInstanceOf(G, "Int"))
412+ let ax = (aw - aF)
413+ let ay = {
414+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
415+ if ($isInstanceOf(E, "Int"))
423416 then {
424- let H = G
425- H
417+ let F = E
418+ F
426419 }
427420 else 0
428421 }
429- let aB = (aA - aI)
430- let aC = {
431- let G = getIntegerValue(this, ("Total_LP_" + h))
432- if ($isInstanceOf(G, "Int"))
422+ let az = (ay - aG)
423+ let aA = {
424+ let E = getIntegerValue(this, ("Total_LP_" + g))
425+ if ($isInstanceOf(E, "Int"))
433426 then {
434- let H = G
435- H
427+ let F = E
428+ F
436429 }
437430 else 0
438431 }
439- let aD = (aC - x.amount)
440- if ((B != h))
432+ let aB = (aA - v.amount)
433+ if ((z != g))
441434 then throw("Pair is not available in Whitelist.")
442- else if ((E == aa))
443- then throw((h + " is not A Whitelist Token Yet."))
444- else if ((fromBase58String(h) == a))
435+ else if ((C == Y))
436+ then throw((g + " is not A Whitelist Token Yet."))
437+ else if ((fromBase58String(g) == a))
445438 then throw("Don't choose USDT AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
446- else if ((x.assetId != aE))
439+ else if ((v.assetId != aC))
447440 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
448- else if ((1 > aG))
441+ else if ((1 > aE))
449442 then throw("Your LP Token amount % is very low to convert.")
450- else if ((1 > aH))
443+ else if ((1 > aF))
451444 then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 USDT.")
452- else if ((1 > aI))
445+ else if ((1 > aG))
453446 then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
454- else [IntegerEntry("Withdraw_LP_Percentage", aG), Burn(aE, x.amount), IntegerEntry(("Total_LP_" + h), aD), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), az), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), aB), ScriptTransfer(g.caller, aH, a), ScriptTransfer(g.caller, aI, fromBase58String(h))]
447+ else [IntegerEntry("Withdraw_LP_Percentage", aE), Burn(aC, v.amount), IntegerEntry(("Total_LP_" + g), aB), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), ScriptTransfer(f.caller, aF, a), ScriptTransfer(f.caller, aG, fromBase58String(g))]
455448 }
456449
457450
458-@Verifier(aJ)
459-func aK () = {
460- let G = aJ
461- sigVerify(aJ.bodyBytes, aJ.proofs[0], aJ.senderPublicKey)
451+@Verifier(aH)
452+func aI () = {
453+ let E = aH
454+ sigVerify(aH.bodyBytes, aH.proofs[0], aH.senderPublicKey)
462455 }
463456
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
55
66 let b = base58'44Mq8KqUhM94t93MiBq3S22iiuGczMxpKmse5dBy2w5y'
77
8-let c = base58'Zn3cLHW7aAVPm5aACcTjvg7e7iEy2cKDtbowok5qa9H'
8+let c = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
99
1010 let d = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
1111
1212 let e = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
1313
14-let f = addressFromPublicKey(base58'6Z73KxcX3sugpiStpSRXxKxTmWqCaLVwFeM6kwyiKVDR')
15-
16-@Callable(g)
17-func RegisterPairForVoting (h,i) = {
18- let j = value(g.payments[0])
19- let k = value(g.payments[1])
20- let l = value(g.payments[2])
21- let m = 90
22- let n = toBase58String(g.caller.bytes)
23- let o = !(isDefined(k.assetId))
24- let p = 1440
25- let q = (p * i)
26- let r = (q - 43199)
27- let s = ((100000 + ((11574 * r) / 10000)) * 100000000)
28- let t = (height + q)
29- let u = getString(this, ("Pair_UV_" + h))
30- let v = "F"
31- let w = fromBase58String(h)
32- if ((43 > size(h)))
14+@Callable(f)
15+func RegisterPairForVoting (g,h) = {
16+ let i = value(f.payments[0])
17+ let j = value(f.payments[1])
18+ let k = 90
19+ let l = toBase58String(f.caller.bytes)
20+ let m = !(isDefined(j.assetId))
21+ let n = 1440
22+ let o = (n * h)
23+ let p = (o - 43199)
24+ let q = ((100000 + ((11574 * p) / 10000)) * 100000000)
25+ let r = (height + o)
26+ let s = getString(this, ("Pair_UV_" + g))
27+ let t = "F"
28+ let u = fromBase58String(g)
29+ if ((43 > size(g)))
3330 then throw("Wrong AssetID is Entered for Voting. Please Enter a Valid AssetID. Probably you entered an AssetID less than 43 Chars.")
34- else if ((29 >= i))
31+ else if ((29 >= h))
3532 then throw("Enter no. of days in between 30 to 90.")
36- else if ((i > m))
33+ else if ((h > k))
3734 then throw("You Entered days greater than 90 please Enter no. of days in between 1 to 90.")
38- else if ((u == h))
35+ else if ((s == g))
3936 then throw("Pair Already Exist in Voting List.")
40- else if ((size(g.payments) != 3))
41- then throw("Three attached assets expected as payment. Kindly Attach payment1 = 1000 CODE Token & payment2 = Token you want to List for Voting. & payment3 = 1000 xUSD")
42- else if ((j.assetId != b))
43- then throw("Incorrect asset attached for Voting in payment[1], please attach 1000 CODE Token only.")
44- else if ((j.amount != 10000000))
45- then throw((((("You attached only " + toString(fraction(j.amount, 1, 100000000))) + ".") + toString(fraction(j.amount, 1, 10000000))) + " CODE for Voting in payment[1], please attach 1000 CODE Token."))
46- else if ((k.assetId != w))
37+ else if ((size(f.payments) != 2))
38+ then throw("Two attached assets expected as payment. Kindly Attach payment1 = CODE Token & payment2 = Token you want to List for Voting.")
39+ else if ((i.assetId != b))
40+ then throw("Incorrect asset attached for Voting in payment[1], please attach 2000 CODE Token only.")
41+ else if ((i.amount != 200000000000))
42+ then throw((((("You attached only " + toString(fraction(i.amount, 1, 100000000))) + ".") + toString(fraction(i.amount, 1, 10000000))) + " CODE for Voting in payment[1], please attach 2000 CODE Token."))
43+ else if ((j.assetId != u))
4744 then throw("Input String & Attached AssetID in payment2 is not matching.")
48- else if ((o == true))
45+ else if ((m == true))
4946 then throw("You Attached TN Asset ID for Voting, please attach fsTN instead of TN or Token You want to list in payment[2].")
50- else if ((l.assetId != c))
51- then throw("Incorrect asset attached for Voting in payment[3], please attach 1000 xUSD Token only.")
52- else if ((l.amount != 10000000))
53- then throw((((("You attached only " + toString(fraction(l.amount, 1, 100000000))) + ".") + toString(fraction(l.amount, 1, 10000000))) + " xUSD for Voting in payment[3], please attach 1000 xUSD Token."))
54- else [StringEntry(("Pair_UV_" + h), h), StringEntry(("Voting_Status_" + h), v), IntegerEntry(("Voting_SH_" + h), height), IntegerEntry(("Voting_EH_" + h), t), IntegerEntry(("Voting_Period_" + h), q), IntegerEntry(("Listing_Fee_" + h), j.amount), IntegerEntry(("xUSD_Listing_Fee_" + h), l.amount), IntegerEntry(("Votes_Req_" + h), (s / 3)), IntegerEntry(("Votes_Rcvd_" + h), 0), ScriptTransfer(d, j.amount, b)]
47+ else [StringEntry(("Pair_UV_" + g), g), StringEntry(("Voting_Status_" + g), t), IntegerEntry(("Voting_SH_" + g), height), IntegerEntry(("Voting_EH_" + g), r), IntegerEntry(("Voting_Period_" + g), o), IntegerEntry(("Listing_Fee_" + g), i.amount), IntegerEntry(("Votes_Req_" + g), (q / 3)), IntegerEntry(("Votes_Rcvd_" + g), 0), ScriptTransfer(c, i.amount, b)]
5548 }
5649
5750
5851
59-@Callable(g)
60-func DoVoting (h) = {
61- let x = if ((size(g.payments) == 1))
62- then g.payments[0]
52+@Callable(f)
53+func DoVoting (g) = {
54+ let v = if ((size(f.payments) == 1))
55+ then f.payments[0]
6356 else throw((toBase58String(b) + "CODE Token is required as Attached payment"))
64- let y = toBase58String(g.caller.bytes)
65- let z = "P"
66- let A = getIntegerValue(this, ("Voting_EH_" + h))
67- let B = getString(this, ("Pair_UV_" + h))
68- let C = getIntegerValue(this, ("Votes_Req_" + h))
69- let D = getIntegerValue(this, ("Votes_Rcvd_" + h))
70- let E = getStringValue(this, ("Voting_Status_" + h))
71- let F = {
72- let G = getInteger(this, ("Votes_Rcvd_" + h))
73- if ($isInstanceOf(G, "Int"))
57+ let w = toBase58String(f.caller.bytes)
58+ let x = "P"
59+ let y = getIntegerValue(this, ("Voting_EH_" + g))
60+ let z = getString(this, ("Pair_UV_" + g))
61+ let A = getIntegerValue(this, ("Votes_Req_" + g))
62+ let B = getIntegerValue(this, ("Votes_Rcvd_" + g))
63+ let C = getStringValue(this, ("Voting_Status_" + g))
64+ let D = {
65+ let E = getInteger(this, ("Votes_Rcvd_" + g))
66+ if ($isInstanceOf(E, "Int"))
7467 then {
75- let H = G
76- H
68+ let F = E
69+ F
7770 }
7871 else 0
7972 }
80- let I = (F + x.amount)
81- let J = {
82- let G = getInteger(this, ((("Votes_Rcvd_" + y) + "_") + h))
83- if ($isInstanceOf(G, "Int"))
73+ let G = (D + v.amount)
74+ let H = {
75+ let E = getInteger(this, ((("Votes_Rcvd_" + w) + "_") + g))
76+ if ($isInstanceOf(E, "Int"))
8477 then {
85- let K = G
86- K
78+ let I = E
79+ I
8780 }
8881 else 0
8982 }
90- let L = (J + x.amount)
91- let M = (D >= C)
92- let N = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
93- if ((B != h))
83+ let J = (H + v.amount)
84+ let K = (B >= A)
85+ let L = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
86+ if ((z != g))
9487 then throw("Pair is not available in Voting List.")
95- else if ((height > A))
96- then throw((("Voting timeline for " + h) + " is expired."))
97- else if ((x.assetId != b))
88+ else if ((height > y))
89+ then throw((("Voting timeline for " + g) + " is expired."))
90+ else if ((v.assetId != b))
9891 then throw((("Kindly Attach Only " + toBase58String(b)) + " Token."))
99- else if ((E == z))
100- then throw((("Voting for " + h) + " pair is completed & it’s available in whitelist."))
101- else if (M)
102- then [StringEntry(("Voting_Status_" + h), z), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), 0), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), 0), IntegerEntry(("Total_of_Pair_Txns_" + h), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(a)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + h), 0), IntegerEntry(((("Votes_Rcvd_" + y) + "_") + h), L)]
103- else [IntegerEntry(("Votes_Rcvd_" + h), I), IntegerEntry(((("Votes_Rcvd_" + y) + "_") + h), L)]
92+ else if ((C == x))
93+ then throw((("Voting for " + g) + " pair is completed & it’s available in whitelist."))
94+ else if (K)
95+ then [StringEntry(("Voting_Status_" + g), x), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), 0), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), 0), IntegerEntry(("Total_of_Pair_Txns_" + g), 0), IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), 0), IntegerEntry(("Total_Swap_Fee_Collected_" + g), 0), IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), J)]
96+ else [IntegerEntry(("Votes_Rcvd_" + g), G), IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), J)]
10497 }
10598
10699
107100
108-@Callable(g)
109-func WithdrawVotedTokens (h) = {
110- let x = if ((size(g.payments) == 1))
111- then g.payments[0]
101+@Callable(f)
102+func WithdrawVotedTokens (g) = {
103+ let v = if ((size(f.payments) == 1))
104+ then f.payments[0]
112105 else throw("0.1 TN Token is required as Attached payment.")
113- let y = toBase58String(g.caller.bytes)
114- let A = getIntegerValue(this, ("Voting_EH_" + h))
115- let B = getString(this, ("Pair_UV_" + h))
116- let O = valueOrErrorMessage(getInteger(this, ((("Votes_Rcvd_" + y) + "_") + h)), (y + " Address never voted & exist in list."))
117- let P = (A - height)
118- if ((B != h))
106+ let w = toBase58String(f.caller.bytes)
107+ let y = getIntegerValue(this, ("Voting_EH_" + g))
108+ let z = getString(this, ("Pair_UV_" + g))
109+ let M = valueOrErrorMessage(getInteger(this, ((("Votes_Rcvd_" + w) + "_") + g)), (w + " Address never voted & exist in list."))
110+ let N = (y - height)
111+ if ((z != g))
119112 then throw("Pair is not available in Voting List.")
120- else if ((A > height))
121- then throw((("Voting Already Running. You can withdraw your CODE Token after " + toString(P)) + " blocks"))
122- else if ((0 >= O))
113+ else if ((y > height))
114+ then throw((("Voting Already Running. You can withdraw your CODE Token after " + toString(N)) + " blocks"))
115+ else if ((0 >= M))
123116 then throw("You don't have any dues of CODE balance in this Voting Pair.")
124- else if (isDefined(x.assetId))
117+ else if (isDefined(v.assetId))
125118 then throw("Don't attach any other asset. Please attach 0.1 TN as a fee to release your token")
126- else if ((x.amount != 10000000))
119+ else if ((v.amount != 10000000))
127120 then throw("Please attach 0.1 TN as a fee to release your token.")
128- else [IntegerEntry(((("Votes_Rcvd_" + y) + "_") + h), 0), ScriptTransfer(g.caller, O, b)]
121+ else [IntegerEntry(((("Votes_Rcvd_" + w) + "_") + g), 0), ScriptTransfer(f.caller, M, b)]
129122 }
130123
131124
132125
133-@Callable(g)
134-func IssueLPToken (h) = {
135- let Q = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
136- let y = toBase58String(g.caller.bytes)
137- let B = valueOrErrorMessage(getString(this, ("Pair_UV_" + h)), "Asset not Found in Whitelisted Token")
138- let N = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
139- let R = N.name
140- let S = N.decimals
141- let z = "P"
142- let E = valueOrErrorMessage(getString(this, ("Voting_Status_" + h)), ("Voting Status is Missing for " + h))
143- let T = (1 * pow(10, 0, fraction((S + 6), 1, 2), 0, 0, UP))
144- let U = Issue((("LP-" + take(R, 8)) + "-USDT"), (((("LP-" + R) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + h), T, fraction((S + 6), 1, 2), true)
145- let V = calculateAssetId(U)
146- if ((Q != y))
147- then throw((("Your are not allowded to Issue LP Token. Only " + Q) + " can issue the LP Token."))
148- else if ((B != h))
126+@Callable(f)
127+func IssueLPToken (g) = {
128+ let O = valueOrErrorMessage(getString(this, "LP_Admin_Rights"), "LP Admin Rights are Not Included into Smart Contract. Deploy Admin Rights First.")
129+ let w = toBase58String(f.caller.bytes)
130+ let z = valueOrErrorMessage(getString(this, ("Pair_UV_" + g)), "Asset not Found in Whitelisted Token")
131+ let L = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
132+ let P = L.name
133+ let Q = L.decimals
134+ let x = "P"
135+ let C = valueOrErrorMessage(getString(this, ("Voting_Status_" + g)), ("Voting Status is Missing for " + g))
136+ let R = (1 * pow(10, 0, fraction((Q + 6), 1, 2), 0, 0, UP))
137+ let S = Issue((("LP-" + take(P, 8)) + "-USDT"), (((("LP-" + P) + "-USDT") + " is a Liquidity Provider Token Issued Against ") + g), R, fraction((Q + 6), 1, 2), true)
138+ let T = calculateAssetId(S)
139+ if ((O != w))
140+ then throw((("Your are not allowded to Issue LP Token. Only " + O) + " can issue the LP Token."))
141+ else if ((z != g))
149142 then throw("Pair is not available in Voting List.")
150- else if ((E != z))
143+ else if ((C != x))
151144 then throw("LP Token must be a Whitelisted Token.")
152- else [U, StringEntry(("LP_" + h), toBase58String(V)), IntegerEntry(("Total_LP_" + h), T)]
145+ else [S, StringEntry(("LP_" + g), toBase58String(T)), IntegerEntry(("Total_LP_" + g), R)]
153146 }
154147
155148
156149
157-@Callable(g)
158-func SwapAssetToUSDTPairEntry (h) = {
159- let y = toBase58String(g.caller.bytes)
160- let x = if ((size(g.payments) == 1))
161- then g.payments[0]
150+@Callable(f)
151+func SwapAssetToUSDTPairEntry (g) = {
152+ let w = toBase58String(f.caller.bytes)
153+ let v = if ((size(f.payments) == 1))
154+ then f.payments[0]
162155 else throw("Whitelisted Token is required as Attached payment[1].")
163- let B = getString(this, ("Pair_UV_" + h))
164- let E = getStringValue(this, ("Voting_Status_" + h))
165- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
166- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
167- let Y = fraction(W, X, (X + x.amount))
168- let Z = (W - Y)
169- let aa = "F"
170- let ab = 3
171- let ac = ((Z * ab) / 1000)
172- let ad = (Z - ac)
173- let ae = {
174- let G = getInteger(this, ((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(a)))
175- if ($isInstanceOf(G, "Int"))
156+ let z = getString(this, ("Pair_UV_" + g))
157+ let C = getStringValue(this, ("Voting_Status_" + g))
158+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
159+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
160+ let W = fraction(U, V, (V + v.amount))
161+ let X = (U - W)
162+ let Y = "F"
163+ let Z = 6
164+ let aa = ((X * Z) / 1000)
165+ let ab = (X - aa)
166+ let ac = {
167+ let E = getInteger(this, ((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)))
168+ if ($isInstanceOf(E, "Int"))
176169 then {
177- let H = G
178- H
170+ let F = E
171+ F
179172 }
180173 else 0
181174 }
182- let af = (ae + ac)
183- let ag = {
184- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
185- if ($isInstanceOf(G, "Int"))
175+ let ad = (ac + aa)
176+ let ae = {
177+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
178+ if ($isInstanceOf(E, "Int"))
186179 then {
187- let H = G
188- H
180+ let F = E
181+ F
189182 }
190183 else 0
191184 }
192- let ah = (X + x.amount)
193- let ai = {
194- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
195- if ($isInstanceOf(G, "Int"))
185+ let af = (V + v.amount)
186+ let ag = {
187+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
188+ if ($isInstanceOf(E, "Int"))
196189 then {
197- let H = G
198- H
190+ let F = E
191+ F
199192 }
200193 else 0
201194 }
202- let aj = (W - Z)
203- let ak = {
204- let G = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
205- if ($isInstanceOf(G, "Int"))
195+ let ah = (U - X)
196+ let ai = {
197+ let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
198+ if ($isInstanceOf(E, "Int"))
206199 then {
207- let H = G
208- H
200+ let F = E
201+ F
209202 }
210203 else 0
211204 }
212- let al = (ak + 1)
213- if ((h == toBase58String(a)))
205+ let aj = (ai + 1)
206+ if ((g == toBase58String(a)))
214207 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach Whitelisted Asset as an attachment Token in payment[1].")
215- else if ((B != h))
208+ else if ((z != g))
216209 then throw("Pair is not available in Whitelisted Asset.")
217- else if ((E == aa))
218- then throw((h + " is not A Whitelisted Token Yet."))
219- else if ((x.assetId == a))
210+ else if ((C == Y))
211+ then throw((g + " is not A Whitelisted Token Yet."))
212+ else if ((v.assetId == a))
220213 then throw("You can't Attach USDT as an Attached Payment. Only Whitelisted Tokens are accepted.")
221- else if ((x.assetId != fromBase58String(h)))
222- then throw(("Incorrect asset attached, please attach or send " + h))
223- else if ((W == 0))
214+ else if ((v.assetId != fromBase58String(g)))
215+ then throw(("Incorrect asset attached, please attach or send " + g))
216+ else if ((U == 0))
224217 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
225- else if ((X == 0))
218+ else if ((V == 0))
226219 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
227- else if ((10000000 > Z))
228- then throw((("Your Attached Asset Amount is very low. Attach More " + h) + " Tokens to Claim the minimum Amount of 10 dollar atleast."))
229- else if ((Z > W))
230- then throw((("Pool Only has a Liquidity of " + toString((W / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
231- else [IntegerEntry(((("Total_Swap_Fee_Collected_" + h) + "_") + toBase58String(a)), af), IntegerEntry(("Total_of_Pair_Txns_" + h), al), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), ah), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), aj), ScriptTransfer(g.caller, ad, a), ScriptTransfer(e, ac, a)]
220+ else if ((10000000 > X))
221+ then throw((("Your Attached Asset Amount is very low. Attach More " + g) + " Tokens to Claim the minimum Amount of 10 dollar atleast."))
222+ else if ((X > U))
223+ then throw((("Pool Only has a Liquidity of " + toString((U / pow(10, 0, 6, 0, 0, UP)))) + " USDT. Add Liquidity into Pool."))
224+ else [IntegerEntry(((("Total_Swap_Fee_Collected_" + g) + "_") + toBase58String(a)), ad), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, a), ScriptTransfer(d, aa, a)]
232225 }
233226
234227
235228
236-@Callable(g)
237-func SwapUSDTToAssetPairEntry (h) = {
238- let y = toBase58String(g.caller.bytes)
239- let x = if ((size(g.payments) == 1))
240- then g.payments[0]
229+@Callable(f)
230+func SwapUSDTToAssetPairEntry (g) = {
231+ let w = toBase58String(f.caller.bytes)
232+ let v = if ((size(f.payments) == 1))
233+ then f.payments[0]
241234 else throw((("Only " + toBase58String(a)) + " USDT Token is required as an Attached payment[1]."))
242- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
243- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
244- let am = fraction(W, X, (W + x.amount))
245- let Z = (X - am)
246- let B = getString(this, ("Pair_UV_" + h))
247- let E = getStringValue(this, ("Voting_Status_" + h))
248- let aa = "F"
249- let ab = 3
250- let ac = ((Z * ab) / 1000)
251- let ad = (Z - ac)
252- let an = {
253- let G = getInteger(this, ("Total_Swap_Fee_Collected_" + h))
254- if ($isInstanceOf(G, "Int"))
235+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
236+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
237+ let ak = fraction(U, V, (U + v.amount))
238+ let X = (V - ak)
239+ let z = getString(this, ("Pair_UV_" + g))
240+ let C = getStringValue(this, ("Voting_Status_" + g))
241+ let Y = "F"
242+ let Z = 3
243+ let aa = ((X * Z) / 1000)
244+ let ab = (X - aa)
245+ let al = {
246+ let E = getInteger(this, ("Total_Swap_Fee_Collected_" + g))
247+ if ($isInstanceOf(E, "Int"))
255248 then {
256- let H = G
257- H
249+ let F = E
250+ F
258251 }
259252 else 0
260253 }
261- let ao = (an + ac)
262- let ag = {
263- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
264- if ($isInstanceOf(G, "Int"))
254+ let am = (al + aa)
255+ let ae = {
256+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
257+ if ($isInstanceOf(E, "Int"))
265258 then {
266- let H = G
267- H
259+ let F = E
260+ F
268261 }
269262 else 0
270263 }
271- let ah = (X - Z)
272- let ai = {
273- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
274- if ($isInstanceOf(G, "Int"))
264+ let af = (V - X)
265+ let ag = {
266+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
267+ if ($isInstanceOf(E, "Int"))
275268 then {
276- let H = G
277- H
269+ let F = E
270+ F
278271 }
279272 else 0
280273 }
281- let aj = (W + x.amount)
282- let ak = {
283- let G = getIntegerValue(this, ("Total_of_Pair_Txns_" + h))
284- if ($isInstanceOf(G, "Int"))
274+ let ah = (U + v.amount)
275+ let ai = {
276+ let E = getIntegerValue(this, ("Total_of_Pair_Txns_" + g))
277+ if ($isInstanceOf(E, "Int"))
285278 then {
286- let H = G
287- H
279+ let F = E
280+ F
288281 }
289282 else 0
290283 }
291- let al = (ak + 1)
292- if ((B != h))
284+ let aj = (ai + 1)
285+ if ((z != g))
293286 then throw("Pair is not available in Whitelisted Asset.")
294- else if ((E == aa))
295- then throw((h + " is not A Whitelisted Token Yet."))
296- else if ((h == toBase58String(a)))
287+ else if ((C == Y))
288+ then throw((g + " is not A Whitelisted Token Yet."))
289+ else if ((g == toBase58String(a)))
297290 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input & Attach USDT as an attachment Token in payment[1].")
298- else if ((x.assetId != a))
291+ else if ((v.assetId != a))
299292 then throw("You can Attach USDT as an Attached Payment[1] to Swap USDT To Required Token. Any other asset else than USDT will be rejected.")
300- else if ((10000000 > x.amount))
293+ else if ((10000000 > v.amount))
301294 then throw("Your Attached USDT Amount is very low. Attach Atleast 10 USDT to Claim the minimum Tokens.")
302- else if ((W == 0))
295+ else if ((U == 0))
303296 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
304- else if ((X == 0))
297+ else if ((V == 0))
305298 then throw("Swap Pair Need to Add Liquidity first into Pool. Only After that Pair will be activated for Swapping.")
306- else if ((Z > X))
307- then throw((("Pool Only has a Liquidity of " + toString(X)) + " Tokens. Add Liquidity into Pool."))
308- else [IntegerEntry(("Total_Swap_Fee_Collected_" + h), ao), IntegerEntry(("Total_of_Pair_Txns_" + h), al), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), ah), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), aj), ScriptTransfer(g.caller, ad, fromBase58String(h)), ScriptTransfer(f, ac, fromBase58String(h))]
299+ else if ((X > V))
300+ then throw((("Pool Only has a Liquidity of " + toString(V)) + " Tokens. Add Liquidity into Pool."))
301+ else [IntegerEntry(("Total_Swap_Fee_Collected_" + g), am), IntegerEntry(("Total_of_Pair_Txns_" + g), aj), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), af), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ah), ScriptTransfer(f.caller, ab, fromBase58String(g)), ScriptTransfer(e, aa, fromBase58String(g))]
309302 }
310303
311304
312305
313-@Callable(g)
314-func AddLiquidity (h) = {
315- let y = toBase58String(g.caller.bytes)
316- let j = value(g.payments[0])
317- let k = value(g.payments[1])
318- let B = getString(this, ("Pair_UV_" + h))
319- let E = getStringValue(this, ("Voting_Status_" + h))
320- let ap = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or May be not Generated."))
321- let aa = "F"
322- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
323- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
324- let aq = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
325- let S = aq.decimals
326- let ar = W
327- let as = X
328- let at = pow((((ar * 1000000) / as) * pow(10, 0, S, 0, 0, UP)), 0, 1, 0, 0, UP)
329- let au = (6 + S)
330- let av = (au / 2)
331- let aw = fraction(at, j.amount, pow(10, 0, au, 0, 0, UP))
332- let ax = pow((fraction(j.amount, 1, pow(10, 0, S, 0, 0, UP)) * fraction(k.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, av, DOWN)
333- let ay = {
334- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
335- if ($isInstanceOf(G, "Int"))
306+@Callable(f)
307+func AddLiquidity (g) = {
308+ let w = toBase58String(f.caller.bytes)
309+ let i = value(f.payments[0])
310+ let j = value(f.payments[1])
311+ let z = getString(this, ("Pair_UV_" + g))
312+ let C = getStringValue(this, ("Voting_Status_" + g))
313+ let an = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or May be not Generated."))
314+ let Y = "F"
315+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
316+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
317+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
318+ let Q = ao.decimals
319+ let ap = U
320+ let aq = V
321+ let ar = pow((((ap * 1000000) / aq) * pow(10, 0, Q, 0, 0, UP)), 0, 1, 0, 0, UP)
322+ let as = (6 + Q)
323+ let at = (as / 2)
324+ let au = fraction(ar, i.amount, pow(10, 0, as, 0, 0, UP))
325+ let av = pow((fraction(i.amount, 1, pow(10, 0, Q, 0, 0, UP)) * fraction(j.amount, 1, pow(10, 0, 6, 0, 0, UP))), 0, 5, 1, at, DOWN)
326+ let aw = {
327+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
328+ if ($isInstanceOf(E, "Int"))
336329 then {
337- let H = G
338- H
330+ let F = E
331+ F
339332 }
340333 else 0
341334 }
342- let az = (ay + k.amount)
343- let aA = {
344- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
345- if ($isInstanceOf(G, "Int"))
335+ let ax = (aw + j.amount)
336+ let ay = {
337+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
338+ if ($isInstanceOf(E, "Int"))
346339 then {
347- let H = G
348- H
340+ let F = E
341+ F
349342 }
350343 else 0
351344 }
352- let aB = (aA + j.amount)
353- let aC = {
354- let G = getIntegerValue(this, ("Total_LP_" + h))
355- if ($isInstanceOf(G, "Int"))
345+ let az = (ay + i.amount)
346+ let aA = {
347+ let E = getIntegerValue(this, ("Total_LP_" + g))
348+ if ($isInstanceOf(E, "Int"))
356349 then {
357- let H = G
358- H
350+ let F = E
351+ F
359352 }
360353 else 0
361354 }
362- let aD = (aC + ax)
363- if ((B != h))
355+ let aB = (aA + av)
356+ if ((z != g))
364357 then throw("Pair is not available in Whitelisted Asset.")
365- else if ((E == aa))
366- then throw((h + " is not A Whitelisted Token Yet."))
367- else if ((h == toBase58String(a)))
358+ else if ((C == Y))
359+ then throw((g + " is not A Whitelisted Token Yet."))
360+ else if ((g == toBase58String(a)))
368361 then throw("Input can Never be a USDT AssetID. Enter Whitelisted AssetID in input as well as in payment[1] & Attach USDT as an attachment Token in payment[2].")
369- else if ((size(g.payments) != 2))
362+ else if ((size(f.payments) != 2))
370363 then throw("Two attached assets expected as payment in 50%-50%. Kindly Attach payment1 = Token you want to add for Liquidity & payment2 = Equivalent Amount of USDT Token.")
371- else if ((j.assetId == a))
364+ else if ((i.assetId == a))
372365 then throw("You Attached USDT asset in payment[1], please attach only whitelisted Token in payment[1] along with USDT in payment[2].")
373- else if ((j.assetId != fromBase58String(h)))
366+ else if ((i.assetId != fromBase58String(g)))
374367 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
375- else if ((j.assetId != fromBase58String(h)))
368+ else if ((i.assetId != fromBase58String(g)))
376369 then throw("Incorrect asset attached for Liquidity in payment[1], please attach String Asset or Whitelisted Token only.")
377- else if ((k.assetId != a))
370+ else if ((j.assetId != a))
378371 then throw("Wrong Asset Attached in payments[2], Please attach payment[1] = Liquidity Token & payment[2] = USDT Token.")
379- else if ((10000000 > k.amount))
372+ else if ((10000000 > j.amount))
380373 then throw("please attach atleast 10 USDT in payment[2] & Equivalent worth of Token in payment[1]")
381- else if ((k.amount != aw))
382- then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as [" + toString(aw)) + "] or ") + toString(fraction(aw, 1, 1000000))) + ".") + takeRight(toString(aw), 6)) + " USDT."))
383- else if ((1 > ax))
384- then throw((("LP Token Outcome is going below " + toString(av)) + " Decimals. Please Attach min. 1 LP token or 10 USDT Atleast."))
385- else [IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), az), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), aB), IntegerEntry(("Total_LP_" + h), aD), Reissue(ap, ax, true), ScriptTransfer(g.caller, ax, ap)]
374+ else if ((j.amount != au))
375+ then throw((((((("Attached payment[2] qty is not matching as per attached payment[1].payment[2] must be as int [" + toString(au)) + "] or ") + toString(fraction(au, 1, 1000000))) + ".") + takeRight(toString(au), 6)) + " USDT."))
376+ else if ((1 > av))
377+ then throw((("LP Token Outcome is going below " + toString(at)) + " Decimals. Please Attach min. 1 LP token or 10 USDT Atleast."))
378+ else [IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), IntegerEntry(("Total_LP_" + g), aB), Reissue(an, av, true), ScriptTransfer(f.caller, av, an)]
386379 }
387380
388381
389382
390-@Callable(g)
391-func RemoveLiquidity (h) = {
392- let y = toBase58String(g.caller.bytes)
393- let x = if ((size(g.payments) == 1))
394- then g.payments[0]
383+@Callable(f)
384+func RemoveLiquidity (g) = {
385+ let w = toBase58String(f.caller.bytes)
386+ let v = if ((size(f.payments) == 1))
387+ then f.payments[0]
395388 else throw("No payment attached, Please Attach LP Token as payment[1].")
396- let B = getString(this, ("Pair_UV_" + h))
397- let E = getStringValue(this, ("Voting_Status_" + h))
398- let aE = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + h)), "LP Token is Missing or not Generated."))
399- let aa = "F"
400- let aq = valueOrErrorMessage(assetInfo(fromBase58String(h)), (("Asset " + h) + " doesn't exist"))
401- let S = aq.decimals
402- let au = (6 + S)
403- let av = (au / 2)
404- let aF = getIntegerValue(this, ("Total_LP_" + h))
405- let aG = pow(fraction(x.amount, pow(10, 0, 8, 0, 0, UP), aF), 6, 1, 0, 6, UP)
406- let W = getIntegerValue(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
407- let X = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
408- let aH = fraction(W, aG, pow(10, 0, 8, 0, 0, UP))
409- let aI = fraction(X, aG, pow(10, 0, 8, 0, 0, UP))
410- let ay = {
411- let G = getInteger(this, ((("Balance_of_" + h) + "_") + toBase58String(a)))
412- if ($isInstanceOf(G, "Int"))
389+ let z = getString(this, ("Pair_UV_" + g))
390+ let C = getStringValue(this, ("Voting_Status_" + g))
391+ let aC = fromBase58String(valueOrErrorMessage(getString(this, ("LP_" + g)), "LP Token is Missing or not Generated."))
392+ let Y = "F"
393+ let ao = valueOrErrorMessage(assetInfo(fromBase58String(g)), (("Asset " + g) + " doesn't exist"))
394+ let Q = ao.decimals
395+ let as = (6 + Q)
396+ let at = (as / 2)
397+ let aD = getIntegerValue(this, ("Total_LP_" + g))
398+ let aE = pow(fraction(v.amount, pow(10, 0, 8, 0, 0, UP), aD), 6, 1, 0, 6, UP)
399+ let U = getIntegerValue(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
400+ let V = getIntegerValue(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
401+ let aF = fraction(U, aE, pow(10, 0, 8, 0, 0, UP))
402+ let aG = fraction(V, aE, pow(10, 0, 8, 0, 0, UP))
403+ let aw = {
404+ let E = getInteger(this, ((("Balance_of_" + g) + "_") + toBase58String(a)))
405+ if ($isInstanceOf(E, "Int"))
413406 then {
414- let H = G
415- H
407+ let F = E
408+ F
416409 }
417410 else 0
418411 }
419- let az = (ay - aH)
420- let aA = {
421- let G = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + h))
422- if ($isInstanceOf(G, "Int"))
412+ let ax = (aw - aF)
413+ let ay = {
414+ let E = getInteger(this, ((("Balance_of_" + toBase58String(a)) + "_") + g))
415+ if ($isInstanceOf(E, "Int"))
423416 then {
424- let H = G
425- H
417+ let F = E
418+ F
426419 }
427420 else 0
428421 }
429- let aB = (aA - aI)
430- let aC = {
431- let G = getIntegerValue(this, ("Total_LP_" + h))
432- if ($isInstanceOf(G, "Int"))
422+ let az = (ay - aG)
423+ let aA = {
424+ let E = getIntegerValue(this, ("Total_LP_" + g))
425+ if ($isInstanceOf(E, "Int"))
433426 then {
434- let H = G
435- H
427+ let F = E
428+ F
436429 }
437430 else 0
438431 }
439- let aD = (aC - x.amount)
440- if ((B != h))
432+ let aB = (aA - v.amount)
433+ if ((z != g))
441434 then throw("Pair is not available in Whitelist.")
442- else if ((E == aa))
443- then throw((h + " is not A Whitelist Token Yet."))
444- else if ((fromBase58String(h) == a))
435+ else if ((C == Y))
436+ then throw((g + " is not A Whitelist Token Yet."))
437+ else if ((fromBase58String(g) == a))
445438 then throw("Don't choose USDT AssetID as Input, Only Whitelisted Asset as Input String & Attach LP Tokens as payment[1]")
446- else if ((x.assetId != aE))
439+ else if ((v.assetId != aC))
447440 then throw("Wrong Asset is attached in payment[1] or LP Token Not Found or Missing.")
448- else if ((1 > aG))
441+ else if ((1 > aE))
449442 then throw("Your LP Token amount % is very low to convert.")
450- else if ((1 > aH))
443+ else if ((1 > aF))
451444 then throw("Your LP Token conversion amount is very low to convert or less than 0.000001 USDT.")
452- else if ((1 > aI))
445+ else if ((1 > aG))
453446 then throw("Your LP Token conversion amount is very low to convert or less than fraction value of Token.")
454- else [IntegerEntry("Withdraw_LP_Percentage", aG), Burn(aE, x.amount), IntegerEntry(("Total_LP_" + h), aD), IntegerEntry(((("Balance_of_" + h) + "_") + toBase58String(a)), az), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + h), aB), ScriptTransfer(g.caller, aH, a), ScriptTransfer(g.caller, aI, fromBase58String(h))]
447+ else [IntegerEntry("Withdraw_LP_Percentage", aE), Burn(aC, v.amount), IntegerEntry(("Total_LP_" + g), aB), IntegerEntry(((("Balance_of_" + g) + "_") + toBase58String(a)), ax), IntegerEntry(((("Balance_of_" + toBase58String(a)) + "_") + g), az), ScriptTransfer(f.caller, aF, a), ScriptTransfer(f.caller, aG, fromBase58String(g))]
455448 }
456449
457450
458-@Verifier(aJ)
459-func aK () = {
460- let G = aJ
461- sigVerify(aJ.bodyBytes, aJ.proofs[0], aJ.senderPublicKey)
451+@Verifier(aH)
452+func aI () = {
453+ let E = aH
454+ sigVerify(aH.bodyBytes, aH.proofs[0], aH.senderPublicKey)
462455 }
463456

github/deemru/w8io/169f3d6 
207.87 ms