tx · 7rodGGGNeBx6DZ5H97unpj5vRfr3HFt9mb4C1Mnkn7Eg

3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL:  -0.03300000 Waves

2022.06.21 16:49 [2106239] smart account 3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL > SELF 0.00000000 Waves

{ "type": 13, "id": "7rodGGGNeBx6DZ5H97unpj5vRfr3HFt9mb4C1Mnkn7Eg", "fee": 3300000, "feeAssetId": null, "timestamp": 1655819415146, "version": 1, "sender": "3MyVvNfXht9piazyf1e5BVFsqv1R7z5cWJL", "senderPublicKey": "DnPyGWCgpQChvoQrnXQRcC9FtN32mPGrcog2wcKHdkVn", "proofs": [ "5dGDSdrBFq2EjyDUKkbwUjen1ccKdzQyEvr2cZwaU5Q67QYH1LtFWVyAuMvSjkdatfr5cYoStMGUUapoxsFnSB3n" ], "script": "base64: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ABNrZXlNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAUJXNfX21hbmFnZXJQdWJsaWNLZXkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAIAAAAbJXNfX3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAQAAAAHJG1hdGNoMAkABCIAAAABCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAABcwUAAAAHJG1hdGNoMAkAAlkAAAABBQAAAAFzAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BQAAAAR1bml0CQAAAgAAAAECAAAAC01hdGNoIGVycm9yAQAAAB1wZW5kaW5nTWFuYWdlclB1YmxpY0tleU9yVW5pdAAAAAAEAAAAByRtYXRjaDAJAAQiAAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFzBQAAAAckbWF0Y2gwCQACWQAAAAEFAAAAAXMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQFAAAABHVuaXQJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAAAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgkAAAIAAAABAgAAABFQZXJtaXNzaW9uIGRlbmllZAEAAAAIbXVzdFRoaXMAAAABAAAAAWkDCQAAAAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwYFAAAAFXBlcm1pc3Npb25EZW5pZWRFcnJvcgEAAAALbXVzdE1hbmFnZXIAAAABAAAAAWkEAAAAByRtYXRjaDAJAQAAABZtYW5hZ2VyUHVibGljS2V5T3JVbml0AAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAKQnl0ZVZlY3RvcgQAAAACcGsFAAAAByRtYXRjaDADCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQUAAAACcGsGBQAAABVwZXJtaXNzaW9uRGVuaWVkRXJyb3IDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABFVuaXQJAQAAAAhtdXN0VGhpcwAAAAEFAAAAAWkJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IAAAASAAAAAWkBAAAACnNldE1hbmFnZXIAAAABAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BAAAAAtjaGVja0NhbGxlcgkBAAAAC211c3RNYW5hZ2VyAAAAAQUAAAABaQMJAAAAAAAAAgUAAAALY2hlY2tDYWxsZXIFAAAAC2NoZWNrQ2FsbGVyBAAAABVjaGVja01hbmFnZXJQdWJsaWNLZXkJAAJZAAAAAQUAAAAXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkDCQAAAAAAAAIFAAAAFWNoZWNrTWFuYWdlclB1YmxpY0tleQUAAAAVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAAAAAFAAAAF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQAAAANuaWwJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5jb25maXJtTWFuYWdlcgAAAAAEAAAAAnBtCQEAAAAdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQAAAAABAAAAAVoYXNQTQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAAJwbQYJAAACAAAAAQIAAAASTm8gcGVuZGluZyBtYW5hZ2VyAwkAAAAAAAACBQAAAAVoYXNQTQUAAAAFaGFzUE0EAAAAB2NoZWNrUE0DCQAAAAAAAAIIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQkBAAAABXZhbHVlAAAAAQUAAAACcG0GCQAAAgAAAAECAAAAG1lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAAAAAAAAgUAAAAHY2hlY2tQTQUAAAAHY2hlY2tQTQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAATa2V5TWFuYWdlclB1YmxpY0tleQAAAAAJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQUAAAACcG0JAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAAAAAUAAAADbmlsCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0AAAAAgAAAAt1c2VyQWRkcmVzcwAAAAx0YXJnZXRIZWlnaHQEAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQkBAAAADGdldFN0ck9yRmFpbAAAAAIFAAAABHRoaXMFAAAAE2tleUJvb3N0aW5nQ29udHJhY3QCAAAAIWludmFsaWQgYm9vc3RpbmcgY29udHJhY3QgYWRkcmVzcwkABRQAAAACBQAAAANuaWwKAAAAAAFACQAD/AAAAAQFAAAAF2Jvb3N0aW5nQ29udHJhY3RBZGRyZXNzAgAAACBnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHRSRUFET05MWQkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAx0YXJnZXRIZWlnaHQFAAAAA25pbAUAAAADbmlsAwkAAAEAAAACBQAAAAFAAgAAAANJbnQFAAAAAUAJAAACAAAAAQIAAAAYQ291bGRuJ3QgY2FzdCBBbnkgdG8gSW50AAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAABAAAAA9mYWN0b3J5Q29udHJhY3QAAAAfdm90aW5nRW1pc3Npb25DYW5kaWRhdGVDb250cmFjdAAAABBib29zdGluZ0NvbnRyYWN0AAAAC2Vwb2NoTGVuZ3RoBAAAAAVjaGVrcwkABEwAAAACCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpCQAETAAAAAIDCQEAAAACIT0AAAACCQAEJgAAAAEFAAAAD2ZhY3RvcnlDb250cmFjdAUAAAAEdW5pdAYCAAAAIGludmFsaWQgZmFjdG9yeSBjb250cmFjdCBhZGRyZXNzCQAETAAAAAIDCQEAAAACIT0AAAACCQAEJgAAAAEFAAAAH3ZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QFAAAABHVuaXQGAgAAADJpbnZhbGlkIHZvdGluZyBlbWlzc2lvbiBjYW5kaWRhdGUgY29udHJhY3QgYWRkcmVzcwkABEwAAAACAwkBAAAAAiE9AAAAAgkABCYAAAABBQAAABBib29zdGluZ0NvbnRyYWN0BQAAAAR1bml0BgIAAAAhaW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQAETAAAAAIDCQAAZgAAAAIFAAAAC2Vwb2NoTGVuZ3RoAAAAAAAAAAAABgkAAAIAAAABAgAAABRpbnZhbGlkIGVwb2NoIGxlbmd0aAUAAAADbmlsAwkAAAAAAAACBQAAAAVjaGVrcwUAAAAFY2hla3MJAAUUAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABJrZXlGYWN0b3J5Q29udHJhY3QFAAAAD2ZhY3RvcnlDb250cmFjdAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAACJrZXlWb3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0BQAAAB92b3RpbmdFbWlzc2lvbkNhbmRpZGF0ZUNvbnRyYWN0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAE2tleUJvb3N0aW5nQ29udHJhY3QFAAAAEGJvb3N0aW5nQ29udHJhY3QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAADmtleUVwb2NoTGVuZ3RoBQAAAAtlcG9jaExlbmd0aAUAAAADbmlsBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAZjcmVhdGUAAAACAAAADWFtb3VudEFzc2V0SWQAAAAMcHJpY2VBc3NldElkBAAAAAZjaGVja3MJAARMAAAAAgMJAAAAAAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAImtleVZvdGluZ0VtaXNzaW9uQ2FuZGlkYXRlQ29udHJhY3QCAAAAAAYJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkFAAAAA25pbAMJAAAAAAAAAgUAAAAGY2hlY2tzBQAAAAZjaGVja3MEAAAABHBvb2wJAAUUAAAAAgUAAAANYW1vdW50QXNzZXRJZAUAAAAMcHJpY2VBc3NldElkBAAAAA1pbkxpc3RBY3Rpb25zCQAETgAAAAIJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAAAlrZXlJbkxpc3QAAAABBQAAAARwb29sBgUAAAADbmlsCQEAAAARaW5zZXJ0Tm9kZUFjdGlvbnMAAAACBQAAAA1wb29sc0xpc3ROYW1lCQEAAAAMcG9vbFRvU3RyaW5nAAAAAQUAAAAEcG9vbAQAAAAYY3VycmVudEVwb2NoSXNOb3REZWZpbmVkCQAAAAAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPa2V5Q3VycmVudEVwb2NoBQAAAAR1bml0BAAAABJzdGFydEhlaWdodEFjdGlvbnMDBQAAABhjdXJyZW50RXBvY2hJc05vdERlZmluZWQEAAAABWVwb2NoAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA9rZXlDdXJyZW50RXBvY2gFAAAABWVwb2NoCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAAAAAQUAAAAFZXBvY2gFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5U3RhcnRIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa2V5Q3VycmVudEVwb2NoVWkFAAAABWVwb2NoCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABBrZXlTdGFydEhlaWdodFVpBQAAAAZoZWlnaHQFAAAAA25pbAUAAAADbmlsCQAFFAAAAAIJAAROAAAAAgUAAAANaW5MaXN0QWN0aW9ucwUAAAASc3RhcnRIZWlnaHRBY3Rpb25zBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAAR2b3RlAAAAAwAAAA1hbW91bnRBc3NldElkAAAADHByaWNlQXNzZXRJZAAAAAZhbW91bnQEAAAABHBvb2wJAAUUAAAAAgUAAAANYW1vdW50QXNzZXRJZAUAAAAMcHJpY2VBc3NldElkBAAAAAVlcG9jaAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAA9rZXlDdXJyZW50RXBvY2gAAAAAAAAAAAAEAAAAC3N0YXJ0SGVpZ2h0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAAAAAEFAAAABWVwb2NoBAAAAAtlcG9jaExlbmd0aAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMFAAAADmtleUVwb2NoTGVuZ3RoBAAAAAllbmRIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQFAAAAC2Vwb2NoTGVuZ3RoBAAAABdmaW5hbGl6YXRpb25TdGFnZU9yVW5pdAkABBoAAAACBQAAAAR0aGlzBQAAABRrZXlGaW5hbGl6YXRpb25TdGFnZQQAAAAEdXNlZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAHa2V5VXNlZAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAFZXBvY2gAAAAAAAAAAAAEAAAABHZvdGUJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAB2tleVZvdGUAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAABWVwb2NoAAAAAAAAAAAABAAAAApwb29sUmVzdWx0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAA9rZXlWb3RpbmdSZXN1bHQAAAACBQAAAARwb29sBQAAAAVlcG9jaAAAAAAAAAAAAAQAAAAKdG90YWxWb3RlcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAANa2V5VG90YWxWb3RlcwAAAAEFAAAABWVwb2NoAAAAAAAAAAAABAAAABNnd3hBbW91bnRBdEVuZFRvdGFsCgAAAAABQAkAA/wAAAAEBQAAAAR0aGlzAgAAABhnZXRVc2VyR3d4QW1vdW50QXRIZWlnaHQJAARMAAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzCQAETAAAAAIFAAAACWVuZEhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAAUACAAAAA0ludAUAAAABQAkAAAIAAAABAgAAABhDb3VsZG4ndCBjYXN0IEFueSB0byBJbnQEAAAACWF2YWlsYWJsZQkAAGUAAAACBQAAABNnd3hBbW91bnRBdEVuZFRvdGFsBQAAAAR1c2VkBAAAAAduZXdWb3RlCQAAZAAAAAIFAAAABHZvdGUFAAAABmFtb3VudAQAAAAGY2hlY2tzCQAETAAAAAIDCQEAAAACIT0AAAACCQAEIAAAAAEJAQAAAAlrZXlJbkxpc3QAAAABBQAAAARwb29sBQAAAAR1bml0BgkAAAIAAAABAgAAAA5pbnZhbGlkIGFzc2V0cwkABEwAAAACAwkAAGYAAAACBQAAAAllbmRIZWlnaHQFAAAABmhlaWdodAYJAAACAAAAAQIAAAAOaW52YWxpZCBoZWlnaHQJAARMAAAAAgMJAAAAAAAAAgUAAAAXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFAAAABHVuaXQGCQAAAgAAAAECAAAAGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkABEwAAAACAwkAAGYAAAACBQAAABNnd3hBbW91bnRBdEVuZFRvdGFsAAAAAAAAAAAABgkAAAIAAAABAgAAABN5b3UgZG8gbm90IGhhdmUgZ1dYCQAETAAAAAIDAwkAAGYAAAACBQAAAAZhbW91bnQAAAAAAAAAAAAJAABnAAAAAgUAAAAJYXZhaWxhYmxlBQAAAAZhbW91bnQHBgkAAAIAAAABAgAAAA5pbnZhbGlkIGFtb3VudAUAAAADbmlsAwkAAAAAAAACBQAAAAZjaGVja3MFAAAABmNoZWNrcwQAAAANdm90ZXNMaXN0TmFtZQkBAAAAEGdldFZvdGVzTGlzdE5hbWUAAAABBQAAAARwb29sBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAEHZvdGVzTGlzdEFjdGlvbnMDCQEAAAAMY29udGFpbnNOb2RlAAAAAgUAAAANdm90ZXNMaXN0TmFtZQUAAAAOdXNlckFkZHJlc3NTdHIFAAAAA25pbAkBAAAAEWluc2VydE5vZGVBY3Rpb25zAAAAAgUAAAANdm90ZXNMaXN0TmFtZQUAAAAOdXNlckFkZHJlc3NTdHIJAAUUAAAAAgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5VXNlZAAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAFZXBvY2gJAABkAAAAAgUAAAAEdXNlZAUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5Vm90ZQAAAAMFAAAABHBvb2wIBQAAAAFpAAAABmNhbGxlcgUAAAAFZXBvY2gFAAAAB25ld1ZvdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlWb3RpbmdSZXN1bHQAAAACBQAAAARwb29sBQAAAAVlcG9jaAkAAGQAAAACBQAAAApwb29sUmVzdWx0BQAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA1rZXlUb3RhbFZvdGVzAAAAAQUAAAAFZXBvY2gJAABkAAAAAgUAAAAKdG90YWxWb3RlcwUAAAAGYW1vdW50BQAAAANuaWwFAAAAEHZvdGVzTGlzdEFjdGlvbnMFAAAABHVuaXQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAACmNhbmNlbFZvdGUAAAACAAAADWFtb3VudEFzc2V0SWQAAAAMcHJpY2VBc3NldElkBAAAAARwb29sCQAFFAAAAAIFAAAADWFtb3VudEFzc2V0SWQFAAAADHByaWNlQXNzZXRJZAQAAAAFZXBvY2gJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPa2V5Q3VycmVudEVwb2NoAAAAAAAAAAAABAAAAAtzdGFydEhlaWdodAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMJAQAAABVrZXlTdGFydEhlaWdodEJ5RXBvY2gAAAABBQAAAAVlcG9jaAQAAAALZXBvY2hMZW5ndGgJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA5rZXlFcG9jaExlbmd0aAQAAAAJZW5kSGVpZ2h0CQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAtlcG9jaExlbmd0aAQAAAAXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAAQaAAAAAgUAAAAEdGhpcwUAAAAUa2V5RmluYWxpemF0aW9uU3RhZ2UEAAAABHVzZWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAB2tleVVzZWQAAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABWVwb2NoAAAAAAAAAAAABAAAAAR2b3RlCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAAdrZXlWb3RlAAAAAwUAAAAEcG9vbAgFAAAAAWkAAAAGY2FsbGVyBQAAAAVlcG9jaAAAAAAAAAAAAAQAAAAKcG9vbFJlc3VsdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAPa2V5Vm90aW5nUmVzdWx0AAAAAgUAAAAEcG9vbAUAAAAFZXBvY2gAAAAAAAAAAAAEAAAACnRvdGFsVm90ZXMJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAADWtleVRvdGFsVm90ZXMAAAABBQAAAAVlcG9jaAAAAAAAAAAAAAQAAAAGY2hlY2tzCQAETAAAAAIDCQEAAAACIT0AAAACCQAEIAAAAAEJAQAAAAlrZXlJbkxpc3QAAAABBQAAAARwb29sBQAAAAR1bml0BgkAAAIAAAABAgAAAA5pbnZhbGlkIGFzc2V0cwkABEwAAAACAwkAAGYAAAACBQAAAAllbmRIZWlnaHQFAAAABmhlaWdodAYJAAACAAAAAQIAAAAOaW52YWxpZCBoZWlnaHQJAARMAAAAAgMJAAAAAAAAAgUAAAAXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQFAAAABHVuaXQGCQAAAgAAAAECAAAAGGZpbmFsaXphdGlvbiBpbiBwcm9ncmVzcwkABEwAAAACAwkAAGYAAAACBQAAAAR2b3RlAAAAAAAAAAAABgkAAAIAAAABAgAAAAdubyB2b3RlBQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzBAAAAA12b3Rlc0xpc3ROYW1lCQEAAAAQZ2V0Vm90ZXNMaXN0TmFtZQAAAAEFAAAABHBvb2wEAAAADnVzZXJBZGRyZXNzU3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgkABRQAAAACCQAETgAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAdrZXlVc2VkAAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAVlcG9jaAkAAZYAAAABCQAETAAAAAIJAABlAAAAAgUAAAAEdXNlZAUAAAAEdm90ZQkABEwAAAACAAAAAAAAAAAABQAAAANuaWwJAARMAAAAAgkBAAAAC0RlbGV0ZUVudHJ5AAAAAQkBAAAAB2tleVZvdGUAAAADBQAAAARwb29sCAUAAAABaQAAAAZjYWxsZXIFAAAABWVwb2NoCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5Vm90aW5nUmVzdWx0AAAAAgUAAAAEcG9vbAUAAAAFZXBvY2gJAABlAAAAAgUAAAAKcG9vbFJlc3VsdAUAAAAEdm90ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleVRvdGFsVm90ZXMAAAABBQAAAAVlcG9jaAkAAGUAAAACBQAAAAp0b3RhbFZvdGVzBQAAAAR2b3RlBQAAAANuaWwJAQAAABFkZWxldGVOb2RlQWN0aW9ucwAAAAIFAAAADXZvdGVzTGlzdE5hbWUFAAAADnVzZXJBZGRyZXNzU3RyBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgAAAAFpAQAAAA5zZXRFcG9jaExlbmd0aAAAAAEAAAAObmV3RXBvY2hMZW5ndGgEAAAABWNoZWtzCQAETAAAAAIJAQAAAAttdXN0TWFuYWdlcgAAAAEFAAAAAWkJAARMAAAAAgMJAABmAAAAAgUAAAAObmV3RXBvY2hMZW5ndGgAAAAAAAAAAAAGCQAAAgAAAAECAAAAFGludmFsaWQgZXBvY2ggbGVuZ3RoBQAAAANuaWwDCQAAAAAAAAIFAAAABWNoZWtzBQAAAAVjaGVrcwkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAAA5rZXlFcG9jaExlbmd0aAUAAAAObmV3RXBvY2hMZW5ndGgFAAAAA25pbAUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAALc2V0TWF4RGVwdGgAAAABAAAAC25ld01heERlcHRoBAAAAAVjaGVrcwkABEwAAAACCQEAAAALbXVzdE1hbmFnZXIAAAABBQAAAAFpCQAETAAAAAIDCQAAZgAAAAIFAAAAC25ld01heERlcHRoAAAAAAAAAAAABgkAAAIAAAABAgAAABFpbnZhbGlkIG1heCBkZXB0aAUAAAADbmlsAwkAAAAAAAACBQAAAAVjaGVrcwUAAAAFY2hla3MJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALa2V5TWF4RGVwdGgFAAAAC25ld01heERlcHRoBQAAAANuaWwFAAAABHVuaXQJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAE3Byb2Nlc3NWb3RlSU5URVJOQUwAAAACAAAAB3Bvb2xTdHIAAAAOdXNlckFkZHJlc3NTdHIEAAAAC2NoZWNrQ2FsbGVyCQEAAAAIbXVzdFRoaXMAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAC3VzZXJBZGRyZXNzCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQmAAAAAQUAAAAOdXNlckFkZHJlc3NTdHIJAAEsAAAAAgIAAAAqcHJvY2Vzc1ZvdGVJTlRFUk5BTDogaW52YWxpZCB1c2VyIGFkZHJlc3MgBQAAAA51c2VyQWRkcmVzc1N0cgQAAAAFZXBvY2gJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA9rZXlDdXJyZW50RXBvY2gEAAAADWVwb2NoUHJldmlvdXMJAABlAAAAAgUAAAAFZXBvY2gAAAAAAAAAAAEEAAAAC2Vwb2NoTGVuZ3RoCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwUAAAAOa2V5RXBvY2hMZW5ndGgEAAAAC3N0YXJ0SGVpZ2h0CQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAAAAAEFAAAABWVwb2NoBAAAAAllbmRIZWlnaHQJAABkAAAAAgUAAAALc3RhcnRIZWlnaHQFAAAAC2Vwb2NoTGVuZ3RoBAAAABNzdGFydEhlaWdodFByZXZpb3VzCQEAAAAMZ2V0SW50T3JGYWlsAAAAAgUAAAAEdGhpcwkBAAAAFWtleVN0YXJ0SGVpZ2h0QnlFcG9jaAAAAAEFAAAADWVwb2NoUHJldmlvdXMEAAAAEWVuZEhlaWdodFByZXZpb3VzCQAAZAAAAAIFAAAAE3N0YXJ0SGVpZ2h0UHJldmlvdXMFAAAAC2Vwb2NoTGVuZ3RoBAAAABBjaGVja1RhcmdldEVwb2NoAwkAAGcAAAACBQAAAA1lcG9jaFByZXZpb3VzAAAAAAAAAAAABgkAAAIAAAABAgAAACtwcm9jZXNzVm90ZUlOVEVSTkFMOiBpbnZhbGlkIHByZXZpb3VzIGVwb2NoAwkAAAAAAAACBQAAABBjaGVja1RhcmdldEVwb2NoBQAAABBjaGVja1RhcmdldEVwb2NoBAAAAARwb29sCQEAAAAMc3RyaW5nVG9Qb29sAAAAAQUAAAAHcG9vbFN0cgQAAAATZ3d4QW1vdW50QXRFbmRUb3RhbAoAAAAAAUAJAAP8AAAABAUAAAAEdGhpcwIAAAAYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQAETAAAAAIFAAAADnVzZXJBZGRyZXNzU3RyCQAETAAAAAIFAAAACWVuZEhlaWdodAUAAAADbmlsBQAAAANuaWwDCQAAAQAAAAIFAAAAAUACAAAAA0ludAUAAAABQAkAAAIAAAABAgAAABhDb3VsZG4ndCBjYXN0IEFueSB0byBJbnQEAAAAG2d3eEFtb3VudEF0RW5kVG90YWxQcmV2aW91cwoAAAAAAUAJAAP8AAAABAUAAAAEdGhpcwIAAAAYZ2V0VXNlckd3eEFtb3VudEF0SGVpZ2h0CQAETAAAAAIFAAAADnVzZXJBZGRyZXNzU3RyCQAETAAAAAIFAAAAEWVuZEhlaWdodFByZXZpb3VzBQAAAANuaWwFAAAAA25pbAMJAAABAAAAAgUAAAABQAIAAAADSW50BQAAAAFACQAAAgAAAAECAAAAGENvdWxkbid0IGNhc3QgQW55IHRvIEludAQAAAAKdG90YWxWb3RlcwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB8AAAABCQEAAAANa2V5VG90YWxWb3RlcwAAAAEFAAAABWVwb2NoAAAAAAAAAAAABAAAAAx2b3RpbmdSZXN1bHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQfAAAAAQkBAAAAD2tleVZvdGluZ1Jlc3VsdAAAAAIFAAAABHBvb2wFAAAABWVwb2NoAAAAAAAAAAAABAAAAAx2b3RlUHJldmlvdXMJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB8AAAABCQEAAAAHa2V5Vm90ZQAAAAMFAAAABHBvb2wFAAAAC3VzZXJBZGRyZXNzBQAAAA1lcG9jaFByZXZpb3VzCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAFHByb2Nlc3NWb3RlSU5URVJOQUwgBQAAAAdwb29sU3RyAgAAAAEgBQAAAA51c2VyQWRkcmVzc1N0cgIAAAASOiBubyBwcmV2aW91cyB2b3RlBAAAAAR1c2VkCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAAdrZXlVc2VkAAAAAgUAAAALdXNlckFkZHJlc3MFAAAABWVwb2NoAAAAAAAAAAAABAAAAAduZXdWb3RlCQAAawAAAAMFAAAADHZvdGVQcmV2aW91cwUAAAATZ3d4QW1vdW50QXRFbmRUb3RhbAUAAAAbZ3d4QW1vdW50QXRFbmRUb3RhbFByZXZpb3VzBAAAAAdhY3Rpb25zAwkAAGYAAAACBQAAAAduZXdWb3RlAAAAAAAAAAAACQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5Vm90ZQAAAAMFAAAABHBvb2wFAAAAC3VzZXJBZGRyZXNzBQAAAAVlcG9jaAUAAAAHbmV3Vm90ZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleVRvdGFsVm90ZXMAAAABBQAAAAVlcG9jaAkAAGQAAAACBQAAAAp0b3RhbFZvdGVzBQAAAAduZXdWb3RlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPa2V5Vm90aW5nUmVzdWx0AAAAAgUAAAAEcG9vbAUAAAAFZXBvY2gJAABkAAAAAgUAAAAMdm90aW5nUmVzdWx0BQAAAAduZXdWb3RlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAHa2V5VXNlZAAAAAIFAAAAC3VzZXJBZGRyZXNzBQAAAAVlcG9jaAkAAGQAAAACBQAAAAR1c2VkBQAAAAduZXdWb3RlBQAAAANuaWwJAQAAABFkZWxldGVOb2RlQWN0aW9ucwAAAAIJAQAAABBnZXRWb3Rlc0xpc3ROYW1lAAAAAQUAAAAEcG9vbAUAAAAOdXNlckFkZHJlc3NTdHIJAAUUAAAAAgUAAAAHYWN0aW9ucwUAAAAEdW5pdAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAAE3Byb2Nlc3NQb29sSU5URVJOQUwAAAABAAAAB3Bvb2xTdHIEAAAAC2NoZWNrQ2FsbGVyCQEAAAAIbXVzdFRoaXMAAAABBQAAAAFpAwkAAAAAAAACBQAAAAtjaGVja0NhbGxlcgUAAAALY2hlY2tDYWxsZXIEAAAAC3RhcmdldEVwb2NoCQAAZQAAAAIJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA9rZXlDdXJyZW50RXBvY2gAAAAAAAAAAAEEAAAAEGNoZWNrVGFyZ2V0RXBvY2gDCQAAZwAAAAIFAAAAC3RhcmdldEVwb2NoAAAAAAAAAAAABgkAAAIAAAABAgAAAClwcm9jZXNzUG9vbElOVEVSTkFMOiBpbnZhbGlkIHRhcmdldCBlcG9jaAMJAAAAAAAAAgUAAAAQY2hlY2tUYXJnZXRFcG9jaAUAAAAQY2hlY2tUYXJnZXRFcG9jaAQAAAAEcG9vbAkBAAAADHN0cmluZ1RvUG9vbAAAAAEFAAAAB3Bvb2xTdHIEAAAADSR0MDE2Nzg3MTY4MjcFAAAABHBvb2wEAAAADWFtb3VudEFzc2V0SWQIBQAAAA0kdDAxNjc4NzE2ODI3AAAAAl8xBAAAAAxwcmljZUFzc2V0SWQIBQAAAA0kdDAxNjc4NzE2ODI3AAAAAl8yBAAAAAp0b3RhbFZvdGVzCQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMJAQAAAA1rZXlUb3RhbFZvdGVzAAAAAQUAAAALdGFyZ2V0RXBvY2gAAAAAAAAAAAAEAAAADHZvdGluZ1Jlc3VsdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAPa2V5Vm90aW5nUmVzdWx0AAAAAgUAAAAEcG9vbAUAAAALdGFyZ2V0RXBvY2gAAAAAAAAAAAAEAAAABXNoYXJlAwkAAAAAAAACBQAAAAp0b3RhbFZvdGVzAAAAAAAAAAAAAAAAAAAAAAAACQAAawAAAAMFAAAADHZvdGluZ1Jlc3VsdAUAAAAOcG9vbFdlaWdodE11bHQFAAAACnRvdGFsVm90ZXMEAAAAD2ZhY3RvcnlDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAADGdldFN0ck9yRmFpbAAAAAIFAAAABHRoaXMFAAAAEmtleUZhY3RvcnlDb250cmFjdAQAAAAPbW9kaWZ5V2VpZ2h0SW52CQAD/AAAAAQFAAAAD2ZhY3RvcnlDb250cmFjdAIAAAAMbW9kaWZ5V2VpZ2h0CQAETAAAAAIFAAAADWFtb3VudEFzc2V0SWQJAARMAAAAAgUAAAAMcHJpY2VBc3NldElkCQAETAAAAAIFAAAABXNoYXJlBQAAAANuaWwFAAAAA25pbAMJAAAAAAAAAgUAAAAPbW9kaWZ5V2VpZ2h0SW52BQAAAA9tb2RpZnlXZWlnaHRJbnYJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVBvb2xTaGFyZQAAAAIFAAAABHBvb2wFAAAAC3RhcmdldEVwb2NoBQAAAAVzaGFyZQUAAAADbmlsBQAAAAR1bml0CQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADmZpbmFsaXplSGVscGVyAAAAAAQAAAAFZXBvY2gJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAAPa2V5Q3VycmVudEVwb2NoAAAAAAAAAAAABAAAAA1wcmV2aW91c0Vwb2NoCQAAZQAAAAIFAAAABWVwb2NoAAAAAAAAAAABBAAAAAtzdGFydEhlaWdodAkBAAAADGdldEludE9yRmFpbAAAAAIFAAAABHRoaXMJAQAAABVrZXlTdGFydEhlaWdodEJ5RXBvY2gAAAABBQAAAAVlcG9jaAQAAAALZXBvY2hMZW5ndGgJAQAAAAxnZXRJbnRPckZhaWwAAAACBQAAAAR0aGlzBQAAAA5rZXlFcG9jaExlbmd0aAQAAAAJZW5kSGVpZ2h0CQAAZAAAAAIFAAAAC3N0YXJ0SGVpZ2h0BQAAAAtlcG9jaExlbmd0aAQAAAAXZmluYWxpemF0aW9uU3RhZ2VPclVuaXQJAAQaAAAAAgUAAAAEdGhpcwUAAAAUa2V5RmluYWxpemF0aW9uU3RhZ2UDCQAAZwAAAAIFAAAABmhlaWdodAUAAAAJZW5kSGVpZ2h0BAAAAAhuZXdFcG9jaAkAAGQAAAACBQAAAAVlcG9jaAAAAAAAAAAAAQkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVa2V5U3RhcnRIZWlnaHRCeUVwb2NoAAAAAQUAAAAIbmV3RXBvY2gFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5U3RhcnRIZWlnaHQFAAAABmhlaWdodAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5Q3VycmVudEVwb2NoBQAAAAhuZXdFcG9jaAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUa2V5RmluYWxpemF0aW9uU3RhZ2UFAAAAFmZpbmFsaXphdGlvblN0YWdlVG90YWwFAAAAA25pbAYDCQAAAAAAAAIFAAAAF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQAAAAR1bml0CQAFFAAAAAIFAAAAA25pbAcDCQAAAAAAAAIFAAAAF2ZpbmFsaXphdGlvblN0YWdlT3JVbml0BQAAABZmaW5hbGl6YXRpb25TdGFnZVRvdGFsBAAAAApwb29sT3JVbml0CQAEIgAAAAEFAAAAC2tleU5leHRQb29sBAAAAAp1c2VyT3JVbml0CQAEIgAAAAEFAAAAC2tleU5leHRVc2VyBAAAAAckbWF0Y2gwBQAAAApwb29sT3JVbml0AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAARVbml0BAAAAAckbWF0Y2gxCQAEIgAAAAEJAQAAAAtrZXlMaXN0SGVhZAAAAAEFAAAADXBvb2xzTGlzdE5hbWUDCQAAAQAAAAIFAAAAByRtYXRjaDECAAAABFVuaXQJAAUUAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUa2V5RmluYWxpemF0aW9uU3RhZ2UFAAAAF2ZpbmFsaXphdGlvblN0YWdlU2hhcmVzCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAC2tleU5leHRQb29sCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEFAAAAC2tleU5leHRVc2VyBQAAAANuaWwGAwkAAAEAAAACBQAAAAckbWF0Y2gxAgAAAAZTdHJpbmcEAAAADHBvb2xzSGVhZFN0cgUAAAAHJG1hdGNoMQkABRQAAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAC2tleU5leHRQb29sBQAAAAxwb29sc0hlYWRTdHIFAAAAA25pbAYJAAACAAAAAQIAAAALTWF0Y2ggZXJyb3IDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAABlN0cmluZwQAAAAHcG9vbFN0cgUAAAAHJG1hdGNoMAQAAAAEcG9vbAkBAAAADHN0cmluZ1RvUG9vbAAAAAEFAAAAB3Bvb2xTdHIEAAAADm5leHRVc2VyT3JVbml0BAAAAAckbWF0Y2gxBQAAAAp1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", "chainId": 84, "height": 2106239, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F1CtiBMh5o2FxEiNM1pSobsrtP98N9R1JW5sxkJFuTx5 Next: ELK4b5o9ABp9H6iJxgTtC9s365ch86usH4mwKL82yXw2 Diff:
OldNewDifferences
1919
2020 let i = makeString(["%s", "votingEmissionCandidateContract"], a)
2121
22-let j = makeString(["%s", "boostingContract"], a)
22+let j = makeString(["%s", "factoryContract"], a)
2323
24-let k = makeString(["%s", "finalizationStage"], a)
24+let k = makeString(["%s", "boostingContract"], a)
2525
26-let l = makeString(["%s", "nextPool"], a)
26+let l = makeString(["%s", "finalizationStage"], a)
2727
28-let m = makeString(["%s", "nextUser"], a)
28+let m = makeString(["%s", "nextPool"], a)
2929
30-let n = makeString(["%s", "startHeight"], a)
30+let n = makeString(["%s", "nextUser"], a)
3131
32-let o = makeString(["%s", "currentEpochUi"], a)
32+let o = makeString(["%s", "startHeight"], a)
3333
34-let p = makeString(["%s", "startHeightUi"], a)
34+let p = makeString(["%s", "currentEpochUi"], a)
3535
36-func q (r) = makeString(["%s%d", "startHeight", toString(r)], a)
36+let q = makeString(["%s", "startHeightUi"], a)
37+
38+func r (s) = makeString(["%s%d", "startHeight", toString(s)], a)
3739
3840
39-func s (r) = makeString(["%s%d", "finalized", toString(r)], a)
41+func t (s) = makeString(["%s%d", "finalized", toString(s)], a)
4042
4143
42-func t (u) = {
43- let v = u
44- let w = v._1
45- let x = v._2
46- makeString(["%s%s%s", "inList", w, x], a)
44+func u (v) = {
45+ let w = v
46+ let x = w._1
47+ let y = w._2
48+ makeString(["%s%s%s", "inList", x, y], a)
4749 }
4850
4951
50-func y (z,r) = makeString(["%s%s%d", "used", toString(z), toString(r)], a)
52+func z (A,s) = makeString(["%s%s%d", "used", toString(A), toString(s)], a)
5153
5254
53-func A (u,z,r) = {
54- let B = u
55- let w = B._1
56- let x = B._2
57- makeString(["%s%s%s%s%d", "vote", w, x, toString(z), toString(r)], a)
55+func B (v,A,s) = {
56+ let C = v
57+ let x = C._1
58+ let y = C._2
59+ makeString(["%s%s%s%s%d", "vote", x, y, toString(A), toString(s)], a)
5860 }
5961
6062
61-func C (u,r) = {
62- let D = u
63- let w = D._1
64- let x = D._2
65- makeString(["%s%s%s%d", "votingResult", w, x, toString(r)], a)
63+func D (v,s) = {
64+ let E = v
65+ let x = E._1
66+ let y = E._2
67+ makeString(["%s%s%s%d", "votingResult", x, y, toString(s)], a)
6668 }
6769
6870
69-func E (u,r) = {
70- let F = u
71- let w = F._1
72- let x = F._2
73- makeString(["%s%s%s%d", "poolShare", w, x, toString(r)], a)
71+func F (v,s) = {
72+ let G = v
73+ let x = G._1
74+ let y = G._2
75+ makeString(["%s%s%s%d", "poolShare", x, y, toString(s)], a)
7476 }
7577
7678
77-func G (r) = makeString(["%s%d", "totalVotes", toString(r)], a)
79+func H (s) = makeString(["%s%d", "totalVotes", toString(s)], a)
7880
7981
80-func H (z,I,J) = {
81- let K = makeString(["mandatory ", toString(z), ".", I, " is not defined"], "")
82+func I (A,J,K) = {
83+ let L = makeString(["mandatory ", toString(A), ".", J, " is not defined"], "")
8284 valueOrErrorMessage({
83- let L = J
84- if ($isInstanceOf(L, "String"))
85+ let M = K
86+ if ($isInstanceOf(M, "String"))
8587 then {
86- let M = L
87- getString(z, I)
88+ let N = M
89+ getString(A, J)
8890 }
89- else if ($isInstanceOf(L, "Int"))
91+ else if ($isInstanceOf(M, "Int"))
9092 then {
91- let N = L
92- getInteger(z, I)
93+ let O = M
94+ getInteger(A, J)
9395 }
9496 else throw("invalid entry type")
95- }, K)
97+ }, L)
9698 }
9799
98100
99-func O (z,I) = {
100- let P = H(z, I, "")
101- if ($isInstanceOf(P, "String"))
102- then P
101+func P (A,J) = {
102+ let Q = I(A, J, "")
103+ if ($isInstanceOf(Q, "String"))
104+ then Q
103105 else throw("Couldn't cast Int|String to String")
104106 }
105107
106108
107-func Q (z,I) = {
108- let P = H(z, I, 0)
109- if ($isInstanceOf(P, "Int"))
110- then P
109+func R (A,J) = {
110+ let Q = I(A, J, 0)
111+ if ($isInstanceOf(Q, "Int"))
112+ then Q
111113 else throw("Couldn't cast Int|String to Int")
112114 }
113115
114116
115-func R (u) = ((u._1 + a) + u._2)
117+func S (v) = ((v._1 + a) + v._2)
116118
117119
118-func S (M) = {
119- let T = split(M, a)
120- if ((size(T) == 2))
121- then $Tuple2(T[0], T[1])
120+func T (N) = {
121+ let U = split(N, a)
122+ if ((size(U) == 2))
123+ then $Tuple2(U[0], U[1])
122124 else throw("invalid pool string")
123125 }
124126
125127
126-let U = "pools"
128+let V = "pools"
127129
128-func V (u) = {
129- let W = u
130- let w = W._1
131- let x = W._2
132- makeString(["votes", w, x], a)
130+func W (v) = {
131+ let X = v
132+ let x = X._1
133+ let y = X._2
134+ makeString(["votes", x, y], a)
133135 }
134136
135137
136-func X (Y) = {
137- let Z = if ((Y == U))
138+func Y (Z) = {
139+ let aa = if ((Z == V))
138140 then "%s%s"
139141 else "%s%s%s%s"
140- makeString([Z, Y, "head"], a)
142+ makeString([aa, Z, "head"], a)
141143 }
142144
143145
144-func aa (Y) = {
145- let Z = if ((Y == U))
146+func ab (Z) = {
147+ let aa = if ((Z == V))
146148 then "%s%s"
147149 else "%s%s%s%s"
148- makeString([Z, Y, "size"], a)
150+ makeString([aa, Z, "size"], a)
149151 }
150152
151153
152-func ab (Y,ac) = {
153- let Z = if ((Y == U))
154+func ac (Z,ad) = {
155+ let aa = if ((Z == V))
154156 then "%s%s%s%s"
155157 else "%s%s%s%s%s"
156- makeString([Z, Y, ac, "prev"], a)
158+ makeString([aa, Z, ad, "prev"], a)
157159 }
158160
159161
160-func ad (Y,ac) = {
161- let Z = if ((Y == U))
162+func ae (Z,ad) = {
163+ let aa = if ((Z == V))
162164 then "%s%s%s%s"
163165 else "%s%s%s%s%s"
164- makeString([Z, Y, ac, "next"], a)
166+ makeString([aa, Z, ad, "next"], a)
165167 }
166168
167169
168-func ae (Y,ac) = {
169- let af = getString(this, X(Y))
170- let ag = getString(this, ab(Y, ac))
171- let ah = getString(this, ad(Y, ac))
172- if (if ((ac == valueOrElse(af, "")))
170+func af (Z,ad) = {
171+ let ag = getString(this, Y(Z))
172+ let ah = getString(this, ac(Z, ad))
173+ let ai = getString(this, ae(Z, ad))
174+ if (if ((ad == valueOrElse(ag, "")))
173175 then true
174- else (ag != unit))
176+ else (ah != unit))
175177 then true
176- else (ah != unit)
178+ else (ai != unit)
177179 }
178180
179181
180-func ai (Y,ac) = {
181- let af = getString(this, X(Y))
182- let aj = valueOrElse(getInteger(this, aa(Y)), 0)
183- let ak = if (!(ae(Y, ac)))
182+func aj (Z,ad) = {
183+ let ag = getString(this, Y(Z))
184+ let ak = valueOrElse(getInteger(this, ab(Z)), 0)
185+ let al = if (!(af(Z, ad)))
184186 then true
185187 else throw("Node exists")
186- if ((ak == ak))
187- then (([IntegerEntry(aa(Y), (aj + 1))] ++ (if ((af != unit))
188- then [StringEntry(ad(Y, ac), value(af)), StringEntry(ab(Y, value(af)), ac)]
189- else nil)) ++ [StringEntry(X(Y), ac)])
188+ if ((al == al))
189+ then (([IntegerEntry(ab(Z), (ak + 1))] ++ (if ((ag != unit))
190+ then [StringEntry(ae(Z, ad), value(ag)), StringEntry(ac(Z, value(ag)), ad)]
191+ else nil)) ++ [StringEntry(Y(Z), ad)])
190192 else throw("Strict value is not equal to itself.")
191193 }
192194
193195
194-func al (Y,ac) = {
195- let af = getString(this, X(Y))
196- let aj = valueOrElse(getInteger(this, aa(Y)), 0)
197- let ag = getString(this, ab(Y, ac))
198- let ah = getString(this, ad(Y, ac))
199- ([IntegerEntry(aa(Y), (aj - 1))] ++ (if (if ((ag != unit))
200- then (ah != unit)
196+func am (Z,ad) = {
197+ let ag = getString(this, Y(Z))
198+ let ak = valueOrElse(getInteger(this, ab(Z)), 0)
199+ let ah = getString(this, ac(Z, ad))
200+ let ai = getString(this, ae(Z, ad))
201+ ([IntegerEntry(ab(Z), (ak - 1))] ++ (if (if ((ah != unit))
202+ then (ai != unit)
201203 else false)
202- then [StringEntry(ad(Y, value(ag)), value(ah)), StringEntry(ab(Y, value(ah)), value(ag)), DeleteEntry(ab(Y, ac)), DeleteEntry(ad(Y, ac))]
203- else if ((ah != unit))
204- then [StringEntry(X(Y), value(ah)), DeleteEntry(ad(Y, ac)), DeleteEntry(ab(Y, value(ah)))]
205- else if ((ag != unit))
206- then [DeleteEntry(ab(Y, ac)), DeleteEntry(ad(Y, value(ag)))]
207- else if ((ac == valueOrElse(af, "")))
208- then [DeleteEntry(X(Y))]
209- else throw(((("invalid node: " + Y) + ".") + ac))))
204+ then [StringEntry(ae(Z, value(ah)), value(ai)), StringEntry(ac(Z, value(ai)), value(ah)), DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, ad))]
205+ else if ((ai != unit))
206+ then [StringEntry(Y(Z), value(ai)), DeleteEntry(ae(Z, ad)), DeleteEntry(ac(Z, value(ai)))]
207+ else if ((ah != unit))
208+ then [DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, value(ah)))]
209+ else if ((ad == valueOrElse(ag, "")))
210+ then [DeleteEntry(Y(Z))]
211+ else throw(((("invalid node: " + Z) + ".") + ad))))
210212 }
211213
212214
213-func am () = "%s__managerPublicKey"
215+func an () = "%s__managerPublicKey"
214216
215217
216-func an () = "%s__pendingManagerPublicKey"
218+func ao () = "%s__pendingManagerPublicKey"
217219
218220
219-func ao () = {
220- let L = getString(am())
221- if ($isInstanceOf(L, "String"))
221+func ap () = {
222+ let M = getString(an())
223+ if ($isInstanceOf(M, "String"))
222224 then {
223- let ap = L
224- fromBase58String(ap)
225+ let aq = M
226+ fromBase58String(aq)
225227 }
226- else if ($isInstanceOf(L, "Unit"))
228+ else if ($isInstanceOf(M, "Unit"))
227229 then unit
228230 else throw("Match error")
229231 }
230232
231233
232-func aq () = {
233- let L = getString(an())
234- if ($isInstanceOf(L, "String"))
234+func ar () = {
235+ let M = getString(ao())
236+ if ($isInstanceOf(M, "String"))
235237 then {
236- let ap = L
237- fromBase58String(ap)
238+ let aq = M
239+ fromBase58String(aq)
238240 }
239- else if ($isInstanceOf(L, "Unit"))
241+ else if ($isInstanceOf(M, "Unit"))
240242 then unit
241243 else throw("Match error")
242244 }
243245
244246
245-let ar = throw("Permission denied")
247+let as = throw("Permission denied")
246248
247-func as (at) = if ((at.caller == this))
249+func at (au) = if ((au.caller == this))
248250 then true
249- else ar
251+ else as
250252
251253
252-func au (at) = {
253- let L = ao()
254- if ($isInstanceOf(L, "ByteVector"))
254+func av (au) = {
255+ let M = ap()
256+ if ($isInstanceOf(M, "ByteVector"))
255257 then {
256- let av = L
257- if ((at.callerPublicKey == av))
258+ let aw = M
259+ if ((au.callerPublicKey == aw))
258260 then true
259- else ar
261+ else as
260262 }
261- else if ($isInstanceOf(L, "Unit"))
262- then as(at)
263+ else if ($isInstanceOf(M, "Unit"))
264+ then at(au)
263265 else throw("Match error")
264266 }
265267
266268
267-@Callable(at)
268-func setManager (aw) = {
269- let ax = au(at)
270- if ((ax == ax))
269+@Callable(au)
270+func setManager (ax) = {
271+ let ay = av(au)
272+ if ((ay == ay))
271273 then {
272- let ay = fromBase58String(aw)
273- if ((ay == ay))
274- then [StringEntry(an(), aw)]
274+ let az = fromBase58String(ax)
275+ if ((az == az))
276+ then [StringEntry(ao(), ax)]
275277 else throw("Strict value is not equal to itself.")
276278 }
277279 else throw("Strict value is not equal to itself.")
279281
280282
281283
282-@Callable(at)
284+@Callable(au)
283285 func confirmManager () = {
284- let az = aq()
285- let aA = if (isDefined(az))
286+ let aA = ar()
287+ let aB = if (isDefined(aA))
286288 then true
287289 else throw("No pending manager")
288- if ((aA == aA))
290+ if ((aB == aB))
289291 then {
290- let aB = if ((at.callerPublicKey == value(az)))
292+ let aC = if ((au.callerPublicKey == value(aA)))
291293 then true
292294 else throw("You are not pending manager")
293- if ((aB == aB))
294- then [StringEntry(am(), toBase58String(value(az))), DeleteEntry(an())]
295+ if ((aC == aC))
296+ then [StringEntry(an(), toBase58String(value(aA))), DeleteEntry(ao())]
295297 else throw("Strict value is not equal to itself.")
296298 }
297299 else throw("Strict value is not equal to itself.")
299301
300302
301303
302-@Callable(at)
303-func getUserGwxAmountAtHeight (aC,aD) = {
304- let aE = valueOrErrorMessage(addressFromString(O(this, j)), "invalid boosting contract address")
304+@Callable(au)
305+func getUserGwxAmountAtHeight (aD,aE) = {
306+ let aF = valueOrErrorMessage(addressFromString(P(this, k)), "invalid boosting contract address")
305307 $Tuple2(nil, {
306- let P = invoke(aE, "getUserGwxAmountAtHeightREADONLY", [aC, aD], nil)
307- if ($isInstanceOf(P, "Int"))
308- then P
308+ let Q = invoke(aF, "getUserGwxAmountAtHeightREADONLY", [aD, aE], nil)
309+ if ($isInstanceOf(Q, "Int"))
310+ then Q
309311 else throw("Couldn't cast Any to Int")
310312 })
311313 }
312314
313315
314316
315-@Callable(at)
316-func constructor (aF,aG,aH) = {
317- let aI = [au(at), if ((addressFromString(aF) != unit))
317+@Callable(au)
318+func constructor (aG,aH,aI,aJ) = {
319+ let aK = [av(au), if ((addressFromString(aG) != unit))
318320 then true
319- else "invalid voting emission candidate contract address", if ((addressFromString(aG) != unit))
321+ else "invalid factory contract address", if ((addressFromString(aH) != unit))
320322 then true
321- else "invalid boosting contract address", if ((aH > 0))
323+ else "invalid voting emission candidate contract address", if ((addressFromString(aI) != unit))
324+ then true
325+ else "invalid boosting contract address", if ((aJ > 0))
322326 then true
323327 else throw("invalid epoch length")]
324- if ((aI == aI))
325- then $Tuple2([StringEntry(i, aF), StringEntry(j, aG), IntegerEntry(f, aH)], unit)
328+ if ((aK == aK))
329+ then $Tuple2([StringEntry(j, aG), StringEntry(i, aH), StringEntry(k, aI), IntegerEntry(f, aJ)], unit)
326330 else throw("Strict value is not equal to itself.")
327331 }
328332
329333
330334
331-@Callable(at)
332-func create (w,x) = {
333- let aJ = [if ((toBase58String(at.caller.bytes) == valueOrElse(getString(this, i), "")))
335+@Callable(au)
336+func create (x,y) = {
337+ let aL = [if ((toBase58String(au.caller.bytes) == valueOrElse(getString(this, i), "")))
334338 then true
335- else au(at)]
336- if ((aJ == aJ))
339+ else av(au)]
340+ if ((aL == aL))
337341 then {
338- let u = $Tuple2(w, x)
339- let aK = ([BooleanEntry(t(u), true)] ++ ai(U, R(u)))
340- let aL = (getInteger(this, g) == unit)
341- let aM = if (aL)
342+ let v = $Tuple2(x, y)
343+ let aM = ([BooleanEntry(u(v), true)] ++ aj(V, S(v)))
344+ let aN = (getInteger(this, g) == unit)
345+ let aO = if (aN)
342346 then {
343- let r = 0
344-[IntegerEntry(g, r), IntegerEntry(q(r), height), IntegerEntry(n, height), IntegerEntry(o, r), IntegerEntry(p, height)]
347+ let s = 0
348+[IntegerEntry(g, s), IntegerEntry(r(s), height), IntegerEntry(o, height), IntegerEntry(p, s), IntegerEntry(q, height)]
345349 }
346350 else nil
347- $Tuple2((aK ++ aM), unit)
351+ $Tuple2((aM ++ aO), unit)
348352 }
349353 else throw("Strict value is not equal to itself.")
350354 }
351355
352356
353357
354-@Callable(at)
355-func vote (w,x,aN) = {
356- let u = $Tuple2(w, x)
357- let r = valueOrElse(getInteger(this, g), 0)
358- let aO = Q(this, q(r))
359- let aH = Q(this, f)
360- let aP = (aO + aH)
361- let aQ = getInteger(this, k)
362- let aR = valueOrElse(getInteger(this, y(at.caller, r)), 0)
363- let aS = valueOrElse(getInteger(this, A(u, at.caller, r)), 0)
364- let aT = valueOrElse(getInteger(this, C(u, r)), 0)
365- let aU = valueOrElse(getInteger(this, G(r)), 0)
366- let aV = {
367- let P = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(at.caller.bytes), aP], nil)
368- if ($isInstanceOf(P, "Int"))
369- then P
358+@Callable(au)
359+func vote (x,y,aP) = {
360+ let v = $Tuple2(x, y)
361+ let s = valueOrElse(getInteger(this, g), 0)
362+ let aQ = R(this, r(s))
363+ let aJ = R(this, f)
364+ let aR = (aQ + aJ)
365+ let aS = getInteger(this, l)
366+ let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0)
367+ let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0)
368+ let aV = valueOrElse(getInteger(this, D(v, s)), 0)
369+ let aW = valueOrElse(getInteger(this, H(s)), 0)
370+ let aX = {
371+ let Q = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(au.caller.bytes), aR], nil)
372+ if ($isInstanceOf(Q, "Int"))
373+ then Q
370374 else throw("Couldn't cast Any to Int")
371375 }
372- let aW = (aV - aR)
373- let aX = (aS + aN)
374- let aJ = [if ((getBoolean(t(u)) != unit))
376+ let aY = (aX - aT)
377+ let aZ = (aU + aP)
378+ let aL = [if ((getBoolean(u(v)) != unit))
375379 then true
376- else throw("invalid assets"), if ((aP > height))
380+ else throw("invalid assets"), if ((aR > height))
377381 then true
378- else throw("invalid height"), if ((aQ == unit))
382+ else throw("invalid height"), if ((aS == unit))
379383 then true
380- else throw("finalization in progress"), if ((aV > 0))
384+ else throw("finalization in progress"), if ((aX > 0))
381385 then true
382- else throw("you do not have gWX"), if (if ((aN > 0))
383- then (aW >= aN)
386+ else throw("you do not have gWX"), if (if ((aP > 0))
387+ then (aY >= aP)
384388 else false)
385389 then true
386390 else throw("invalid amount")]
387- if ((aJ == aJ))
391+ if ((aL == aL))
388392 then {
389- let aY = V(u)
390- let aZ = toString(at.caller)
391- let ba = if (ae(aY, aZ))
393+ let ba = W(v)
394+ let bb = toString(au.caller)
395+ let bc = if (af(ba, bb))
392396 then nil
393- else ai(aY, aZ)
394- $Tuple2(([IntegerEntry(y(at.caller, r), (aR + aN)), IntegerEntry(A(u, at.caller, r), aX), IntegerEntry(C(u, r), (aT + aN)), IntegerEntry(G(r), (aU + aN))] ++ ba), unit)
397+ else aj(ba, bb)
398+ $Tuple2(([IntegerEntry(z(au.caller, s), (aT + aP)), IntegerEntry(B(v, au.caller, s), aZ), IntegerEntry(D(v, s), (aV + aP)), IntegerEntry(H(s), (aW + aP))] ++ bc), unit)
395399 }
396400 else throw("Strict value is not equal to itself.")
397401 }
398402
399403
400404
401-@Callable(at)
402-func cancelVote (w,x) = {
403- let u = $Tuple2(w, x)
404- let r = valueOrElse(getInteger(this, g), 0)
405- let aO = Q(this, q(r))
406- let aH = Q(this, f)
407- let aP = (aO + aH)
408- let aQ = getInteger(this, k)
409- let aR = valueOrElse(getInteger(this, y(at.caller, r)), 0)
410- let aS = valueOrElse(getInteger(this, A(u, at.caller, r)), 0)
411- let aT = valueOrElse(getInteger(this, C(u, r)), 0)
412- let aU = valueOrElse(getInteger(this, G(r)), 0)
413- let aJ = [if ((getBoolean(t(u)) != unit))
405+@Callable(au)
406+func cancelVote (x,y) = {
407+ let v = $Tuple2(x, y)
408+ let s = valueOrElse(getInteger(this, g), 0)
409+ let aQ = R(this, r(s))
410+ let aJ = R(this, f)
411+ let aR = (aQ + aJ)
412+ let aS = getInteger(this, l)
413+ let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0)
414+ let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0)
415+ let aV = valueOrElse(getInteger(this, D(v, s)), 0)
416+ let aW = valueOrElse(getInteger(this, H(s)), 0)
417+ let aL = [if ((getBoolean(u(v)) != unit))
414418 then true
415- else throw("invalid assets"), if ((aP > height))
419+ else throw("invalid assets"), if ((aR > height))
416420 then true
417- else throw("invalid height"), if ((aQ == unit))
421+ else throw("invalid height"), if ((aS == unit))
418422 then true
419- else throw("finalization in progress"), if ((aS > 0))
423+ else throw("finalization in progress"), if ((aU > 0))
420424 then true
421425 else throw("no vote")]
422- if ((aJ == aJ))
426+ if ((aL == aL))
423427 then {
424- let aY = V(u)
425- let aZ = toString(at.caller)
426- $Tuple2(([IntegerEntry(y(at.caller, r), max([(aR - aS), 0])), DeleteEntry(A(u, at.caller, r)), IntegerEntry(C(u, r), (aT - aS)), IntegerEntry(G(r), (aU - aS))] ++ al(aY, aZ)), unit)
428+ let ba = W(v)
429+ let bb = toString(au.caller)
430+ $Tuple2(([IntegerEntry(z(au.caller, s), max([(aT - aU), 0])), DeleteEntry(B(v, au.caller, s)), IntegerEntry(D(v, s), (aV - aU)), IntegerEntry(H(s), (aW - aU))] ++ am(ba, bb)), unit)
427431 }
428432 else throw("Strict value is not equal to itself.")
429433 }
430434
431435
432436
433-@Callable(at)
434-func setEpochLength (bb) = {
435- let aI = [au(at), if ((bb > 0))
437+@Callable(au)
438+func setEpochLength (bd) = {
439+ let aK = [av(au), if ((bd > 0))
436440 then true
437441 else throw("invalid epoch length")]
438- if ((aI == aI))
439- then $Tuple2([IntegerEntry(f, bb)], unit)
442+ if ((aK == aK))
443+ then $Tuple2([IntegerEntry(f, bd)], unit)
440444 else throw("Strict value is not equal to itself.")
441445 }
442446
443447
444448
445-@Callable(at)
446-func setMaxDepth (bc) = {
447- let aI = [au(at), if ((bc > 0))
449+@Callable(au)
450+func setMaxDepth (be) = {
451+ let aK = [av(au), if ((be > 0))
448452 then true
449453 else throw("invalid max depth")]
450- if ((aI == aI))
451- then $Tuple2([IntegerEntry(h, bc)], unit)
454+ if ((aK == aK))
455+ then $Tuple2([IntegerEntry(h, be)], unit)
452456 else throw("Strict value is not equal to itself.")
453457 }
454458
455459
456460
457-@Callable(at)
458-func processVoteINTERNAL (bd,aZ) = {
459- let ax = as(at)
460- if ((ax == ax))
461+@Callable(au)
462+func processVoteINTERNAL (bf,bb) = {
463+ let ay = at(au)
464+ if ((ay == ay))
461465 then {
462- let aC = valueOrErrorMessage(addressFromString(aZ), ("processVoteINTERNAL: invalid user address " + aZ))
463- let r = Q(this, g)
464- let be = (r - 1)
465- let aH = Q(this, f)
466- let aO = Q(this, q(r))
467- let aP = (aO + aH)
468- let bf = Q(this, q(be))
469- let bg = (bf + aH)
470- let bh = if ((be >= 0))
466+ let aD = valueOrErrorMessage(addressFromString(bb), ("processVoteINTERNAL: invalid user address " + bb))
467+ let s = R(this, g)
468+ let bg = (s - 1)
469+ let aJ = R(this, f)
470+ let aQ = R(this, r(s))
471+ let aR = (aQ + aJ)
472+ let bh = R(this, r(bg))
473+ let bi = (bh + aJ)
474+ let bj = if ((bg >= 0))
471475 then true
472476 else throw("processVoteINTERNAL: invalid previous epoch")
473- if ((bh == bh))
477+ if ((bj == bj))
474478 then {
475- let u = S(bd)
476- let aV = {
477- let P = invoke(this, "getUserGwxAmountAtHeight", [aZ, aP], nil)
478- if ($isInstanceOf(P, "Int"))
479- then P
479+ let v = T(bf)
480+ let aX = {
481+ let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, aR], nil)
482+ if ($isInstanceOf(Q, "Int"))
483+ then Q
480484 else throw("Couldn't cast Any to Int")
481485 }
482- let bi = {
483- let P = invoke(this, "getUserGwxAmountAtHeight", [aZ, bg], nil)
484- if ($isInstanceOf(P, "Int"))
485- then P
486+ let bk = {
487+ let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, bi], nil)
488+ if ($isInstanceOf(Q, "Int"))
489+ then Q
486490 else throw("Couldn't cast Any to Int")
487491 }
488- let aU = valueOrElse(getInteger(G(r)), 0)
489- let bj = valueOrElse(getInteger(C(u, r)), 0)
490- let bk = valueOrErrorMessage(getInteger(A(u, aC, be)), (((("processVoteINTERNAL " + bd) + " ") + aZ) + ": no previous vote"))
491- let aR = valueOrElse(getInteger(this, y(aC, r)), 0)
492- let aX = fraction(bk, aV, bi)
493- let bl = if ((aX > 0))
494- then [IntegerEntry(A(u, aC, r), aX), IntegerEntry(G(r), (aU + aX)), IntegerEntry(C(u, r), (bj + aX)), IntegerEntry(y(aC, r), (aR + aX))]
495- else al(V(u), aZ)
496- $Tuple2(bl, unit)
492+ let aW = valueOrElse(getInteger(H(s)), 0)
493+ let bl = valueOrElse(getInteger(D(v, s)), 0)
494+ let bm = valueOrErrorMessage(getInteger(B(v, aD, bg)), (((("processVoteINTERNAL " + bf) + " ") + bb) + ": no previous vote"))
495+ let aT = valueOrElse(getInteger(this, z(aD, s)), 0)
496+ let aZ = fraction(bm, aX, bk)
497+ let bn = if ((aZ > 0))
498+ then [IntegerEntry(B(v, aD, s), aZ), IntegerEntry(H(s), (aW + aZ)), IntegerEntry(D(v, s), (bl + aZ)), IntegerEntry(z(aD, s), (aT + aZ))]
499+ else am(W(v), bb)
500+ $Tuple2(bn, unit)
497501 }
498502 else throw("Strict value is not equal to itself.")
499503 }
502506
503507
504508
505-@Callable(at)
506-func processPoolINTERNAL (bd) = {
507- let ax = as(at)
508- if ((ax == ax))
509+@Callable(au)
510+func processPoolINTERNAL (bf) = {
511+ let ay = at(au)
512+ if ((ay == ay))
509513 then {
510- let bm = (Q(this, g) - 1)
511- let bh = if ((bm >= 0))
514+ let bo = (R(this, g) - 1)
515+ let bj = if ((bo >= 0))
512516 then true
513517 else throw("processPoolINTERNAL: invalid target epoch")
514- if ((bh == bh))
518+ if ((bj == bj))
515519 then {
516- let u = S(bd)
517- let aU = valueOrElse(getInteger(this, G(bm)), 0)
518- let bj = valueOrElse(getInteger(this, C(u, bm)), 0)
519- let bn = if ((aU == 0))
520+ let v = T(bf)
521+ let bp = v
522+ let x = bp._1
523+ let y = bp._2
524+ let aW = valueOrElse(getInteger(this, H(bo)), 0)
525+ let bl = valueOrElse(getInteger(this, D(v, bo)), 0)
526+ let bq = if ((aW == 0))
520527 then 0
521- else fraction(bj, b, aU)
522- $Tuple2([IntegerEntry(E(u, bm), bn)], unit)
528+ else fraction(bl, b, aW)
529+ let aG = addressFromStringValue(P(this, j))
530+ let br = invoke(aG, "modifyWeight", [x, y, bq], nil)
531+ if ((br == br))
532+ then $Tuple2([IntegerEntry(F(v, bo), bq)], unit)
533+ else throw("Strict value is not equal to itself.")
523534 }
524535 else throw("Strict value is not equal to itself.")
525536 }
528539
529540
530541
531-@Callable(at)
542+@Callable(au)
532543 func finalizeHelper () = {
533- let r = valueOrElse(getInteger(this, g), 0)
534- let bo = (r - 1)
535- let aO = Q(this, q(r))
536- let aH = Q(this, f)
537- let aP = (aO + aH)
538- let aQ = getInteger(this, k)
539- if ((height >= aP))
544+ let s = valueOrElse(getInteger(this, g), 0)
545+ let bs = (s - 1)
546+ let aQ = R(this, r(s))
547+ let aJ = R(this, f)
548+ let aR = (aQ + aJ)
549+ let aS = getInteger(this, l)
550+ if ((height >= aR))
540551 then {
541- let bp = (r + 1)
542- $Tuple2([IntegerEntry(q(bp), height), IntegerEntry(n, height), IntegerEntry(g, bp), IntegerEntry(k, d)], true)
552+ let bt = (s + 1)
553+ $Tuple2([IntegerEntry(r(bt), height), IntegerEntry(o, height), IntegerEntry(g, bt), IntegerEntry(l, d)], true)
543554 }
544- else if ((aQ == unit))
555+ else if ((aS == unit))
545556 then $Tuple2(nil, false)
546- else if ((aQ == d))
557+ else if ((aS == d))
547558 then {
548- let bq = getString(l)
549- let br = getString(m)
550- let L = bq
551- if ($isInstanceOf(L, "Unit"))
559+ let bu = getString(m)
560+ let bv = getString(n)
561+ let M = bu
562+ if ($isInstanceOf(M, "Unit"))
552563 then {
553- let bs = getString(X(U))
554- if ($isInstanceOf(bs, "Unit"))
555- then $Tuple2([IntegerEntry(k, e), DeleteEntry(l), DeleteEntry(m)], true)
556- else if ($isInstanceOf(bs, "String"))
564+ let bw = getString(Y(V))
565+ if ($isInstanceOf(bw, "Unit"))
566+ then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true)
567+ else if ($isInstanceOf(bw, "String"))
557568 then {
558- let bt = bs
559- $Tuple2([StringEntry(l, bt)], true)
569+ let bx = bw
570+ $Tuple2([StringEntry(m, bx)], true)
560571 }
561572 else throw("Match error")
562573 }
563- else if ($isInstanceOf(L, "String"))
574+ else if ($isInstanceOf(M, "String"))
564575 then {
565- let bd = L
566- let u = S(bd)
567- let bu = {
568- let bs = br
569- if ($isInstanceOf(bs, "Unit"))
570- then getString(X(V(u)))
571- else if ($isInstanceOf(bs, "String"))
576+ let bf = M
577+ let v = T(bf)
578+ let by = {
579+ let bw = bv
580+ if ($isInstanceOf(bw, "Unit"))
581+ then getString(Y(W(v)))
582+ else if ($isInstanceOf(bw, "String"))
572583 then {
573- let bv = bs
574- let bw = invoke(this, "processVoteINTERNAL", [bd, bv], nil)
575- if ((bw == bw))
576- then getString(ad(V(u), bv))
584+ let bz = bw
585+ let bA = invoke(this, "processVoteINTERNAL", [bf, bz], nil)
586+ if ((bA == bA))
587+ then getString(ae(W(v), bz))
577588 else throw("Strict value is not equal to itself.")
578589 }
579590 else throw("Match error")
580591 }
581- let bs = bu
582- if ($isInstanceOf(bs, "Unit"))
592+ let bw = by
593+ if ($isInstanceOf(bw, "Unit"))
583594 then {
584- let bx = getString(ad(U, bd))
585- let by = bx
586- if ($isInstanceOf(by, "Unit"))
587- then $Tuple2([IntegerEntry(k, e), DeleteEntry(l), DeleteEntry(m)], true)
588- else if ($isInstanceOf(by, "String"))
595+ let bB = getString(ae(V, bf))
596+ let bC = bB
597+ if ($isInstanceOf(bC, "Unit"))
598+ then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true)
599+ else if ($isInstanceOf(bC, "String"))
589600 then {
590- let ap = by
591- $Tuple2([StringEntry(l, ap), DeleteEntry(m)], true)
601+ let aq = bC
602+ $Tuple2([StringEntry(m, aq), DeleteEntry(n)], true)
592603 }
593604 else throw("Match error")
594605 }
595- else if ($isInstanceOf(bs, "String"))
606+ else if ($isInstanceOf(bw, "String"))
596607 then {
597- let bz = bs
598- $Tuple2([StringEntry(m, bz)], true)
608+ let bD = bw
609+ $Tuple2([StringEntry(n, bD)], true)
599610 }
600611 else throw("Match error")
601612 }
602613 else throw("Match error")
603614 }
604- else if ((aQ == e))
615+ else if ((aS == e))
605616 then {
606- let bq = getString(l)
607- let L = bq
608- if ($isInstanceOf(L, "Unit"))
617+ let bu = getString(m)
618+ let M = bu
619+ if ($isInstanceOf(M, "Unit"))
609620 then {
610- let bs = getString(X(U))
611- if ($isInstanceOf(bs, "Unit"))
612- then $Tuple2([DeleteEntry(k), BooleanEntry(s(bo), true), IntegerEntry(o, r), IntegerEntry(p, aO)], true)
613- else if ($isInstanceOf(bs, "String"))
621+ let bw = getString(Y(V))
622+ if ($isInstanceOf(bw, "Unit"))
623+ then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ)], true)
624+ else if ($isInstanceOf(bw, "String"))
614625 then {
615- let bA = bs
616- $Tuple2([StringEntry(l, bA)], true)
626+ let bE = bw
627+ $Tuple2([StringEntry(m, bE)], true)
617628 }
618629 else throw("Match error")
619630 }
620- else if ($isInstanceOf(L, "String"))
631+ else if ($isInstanceOf(M, "String"))
621632 then {
622- let bd = L
623- let bB = invoke(this, "processPoolINTERNAL", [bd], nil)
624- if ((bB == bB))
633+ let bf = M
634+ let bF = invoke(this, "processPoolINTERNAL", [bf], nil)
635+ if ((bF == bF))
625636 then {
626- let bx = getString(ad(U, bd))
627- let bs = bx
628- if ($isInstanceOf(bs, "Unit"))
629- then $Tuple2([DeleteEntry(k), BooleanEntry(s(bo), true), IntegerEntry(o, r), IntegerEntry(p, aO), DeleteEntry(l)], true)
630- else if ($isInstanceOf(bs, "String"))
637+ let bB = getString(ae(V, bf))
638+ let bw = bB
639+ if ($isInstanceOf(bw, "Unit"))
640+ then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ), DeleteEntry(m)], true)
641+ else if ($isInstanceOf(bw, "String"))
631642 then {
632- let bA = bs
633- $Tuple2([StringEntry(l, bA)], true)
643+ let bE = bw
644+ $Tuple2([StringEntry(m, bE)], true)
634645 }
635646 else throw("Match error")
636647 }
643654
644655
645656
646-@Callable(at)
647-func finalizeWrapper (bC) = {
648- let bD = {
649- let P = invoke(this, "finalizeHelper", nil, nil)
650- if ($isInstanceOf(P, "Boolean"))
651- then P
657+@Callable(au)
658+func finalizeWrapper (bG) = {
659+ let bH = {
660+ let Q = invoke(this, "finalizeHelper", nil, nil)
661+ if ($isInstanceOf(Q, "Boolean"))
662+ then Q
652663 else throw("Couldn't cast Any to Boolean")
653664 }
654- if ((bD == bD))
655- then if (!(bD))
656- then if ((bC == 0))
665+ if ((bH == bH))
666+ then if (!(bH))
667+ then if ((bG == 0))
657668 then throw("Current voting is not over yet")
658669 else $Tuple2(nil, unit)
659670 else {
660- let bE = valueOrElse(getInteger(this, h), c)
661- if ((bE > bC))
671+ let bI = valueOrElse(getInteger(this, h), c)
672+ if ((bI > bG))
662673 then {
663- let bF = invoke(this, "finalizeWrapper", [(bC + 1)], nil)
664- if ((bF == bF))
674+ let bJ = invoke(this, "finalizeWrapper", [(bG + 1)], nil)
675+ if ((bJ == bJ))
665676 then $Tuple2(nil, unit)
666677 else throw("Strict value is not equal to itself.")
667678 }
672683
673684
674685
675-@Callable(at)
686+@Callable(au)
676687 func finalize () = {
677- let bF = invoke(this, "finalizeWrapper", [0], nil)
678- if ((bF == bF))
688+ let bJ = invoke(this, "finalizeWrapper", [0], nil)
689+ if ((bJ == bJ))
679690 then $Tuple2(nil, unit)
680691 else throw("Strict value is not equal to itself.")
681692 }
682693
683694
684695
685-@Callable(at)
686-func onVerificationLoss (bG) = $Tuple2(nil, unit)
696+@Callable(au)
697+func onVerificationLoss (bK) = $Tuple2(nil, unit)
687698
688699
689700
690-@Callable(at)
691-func containsNodeREADONLY (Y,ac) = $Tuple2(nil, ae(Y, ac))
701+@Callable(au)
702+func containsNodeREADONLY (Z,ad) = $Tuple2(nil, af(Z, ad))
692703
693704
694705
695-@Callable(at)
696-func insertNode (Y,ac) = {
697- let ax = au(at)
698- if ((ax == ax))
699- then $Tuple2(ai(Y, ac), unit)
706+@Callable(au)
707+func insertNode (Z,ad) = {
708+ let ay = av(au)
709+ if ((ay == ay))
710+ then $Tuple2(aj(Z, ad), unit)
700711 else throw("Strict value is not equal to itself.")
701712 }
702713
703714
704715
705-@Callable(at)
706-func deleteNode (Y,ac) = {
707- let ax = au(at)
708- if ((ax == ax))
709- then $Tuple2(al(Y, ac), unit)
716+@Callable(au)
717+func deleteNode (Z,ad) = {
718+ let ay = av(au)
719+ if ((ay == ay))
720+ then $Tuple2(am(Z, ad), unit)
710721 else throw("Strict value is not equal to itself.")
711722 }
712723
713724
714-@Verifier(bH)
715-func bI () = {
716- let bJ = {
717- let L = ao()
718- if ($isInstanceOf(L, "ByteVector"))
725+@Verifier(bL)
726+func bM () = {
727+ let bN = {
728+ let M = ap()
729+ if ($isInstanceOf(M, "ByteVector"))
719730 then {
720- let av = L
721- av
731+ let aw = M
732+ aw
722733 }
723- else if ($isInstanceOf(L, "Unit"))
724- then bH.senderPublicKey
734+ else if ($isInstanceOf(M, "Unit"))
735+ then bL.senderPublicKey
725736 else throw("Match error")
726737 }
727- sigVerify(bH.bodyBytes, bH.proofs[0], bJ)
738+ sigVerify(bL.bodyBytes, bL.proofs[0], bN)
728739 }
729740
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = 100000000
77
88 let c = 10
99
1010 let d = 0
1111
1212 let e = 1
1313
1414 let f = makeString(["%s", "epochLength"], a)
1515
1616 let g = makeString(["%s", "currentEpoch"], a)
1717
1818 let h = makeString(["%s", "maxDepth"], a)
1919
2020 let i = makeString(["%s", "votingEmissionCandidateContract"], a)
2121
22-let j = makeString(["%s", "boostingContract"], a)
22+let j = makeString(["%s", "factoryContract"], a)
2323
24-let k = makeString(["%s", "finalizationStage"], a)
24+let k = makeString(["%s", "boostingContract"], a)
2525
26-let l = makeString(["%s", "nextPool"], a)
26+let l = makeString(["%s", "finalizationStage"], a)
2727
28-let m = makeString(["%s", "nextUser"], a)
28+let m = makeString(["%s", "nextPool"], a)
2929
30-let n = makeString(["%s", "startHeight"], a)
30+let n = makeString(["%s", "nextUser"], a)
3131
32-let o = makeString(["%s", "currentEpochUi"], a)
32+let o = makeString(["%s", "startHeight"], a)
3333
34-let p = makeString(["%s", "startHeightUi"], a)
34+let p = makeString(["%s", "currentEpochUi"], a)
3535
36-func q (r) = makeString(["%s%d", "startHeight", toString(r)], a)
36+let q = makeString(["%s", "startHeightUi"], a)
37+
38+func r (s) = makeString(["%s%d", "startHeight", toString(s)], a)
3739
3840
39-func s (r) = makeString(["%s%d", "finalized", toString(r)], a)
41+func t (s) = makeString(["%s%d", "finalized", toString(s)], a)
4042
4143
42-func t (u) = {
43- let v = u
44- let w = v._1
45- let x = v._2
46- makeString(["%s%s%s", "inList", w, x], a)
44+func u (v) = {
45+ let w = v
46+ let x = w._1
47+ let y = w._2
48+ makeString(["%s%s%s", "inList", x, y], a)
4749 }
4850
4951
50-func y (z,r) = makeString(["%s%s%d", "used", toString(z), toString(r)], a)
52+func z (A,s) = makeString(["%s%s%d", "used", toString(A), toString(s)], a)
5153
5254
53-func A (u,z,r) = {
54- let B = u
55- let w = B._1
56- let x = B._2
57- makeString(["%s%s%s%s%d", "vote", w, x, toString(z), toString(r)], a)
55+func B (v,A,s) = {
56+ let C = v
57+ let x = C._1
58+ let y = C._2
59+ makeString(["%s%s%s%s%d", "vote", x, y, toString(A), toString(s)], a)
5860 }
5961
6062
61-func C (u,r) = {
62- let D = u
63- let w = D._1
64- let x = D._2
65- makeString(["%s%s%s%d", "votingResult", w, x, toString(r)], a)
63+func D (v,s) = {
64+ let E = v
65+ let x = E._1
66+ let y = E._2
67+ makeString(["%s%s%s%d", "votingResult", x, y, toString(s)], a)
6668 }
6769
6870
69-func E (u,r) = {
70- let F = u
71- let w = F._1
72- let x = F._2
73- makeString(["%s%s%s%d", "poolShare", w, x, toString(r)], a)
71+func F (v,s) = {
72+ let G = v
73+ let x = G._1
74+ let y = G._2
75+ makeString(["%s%s%s%d", "poolShare", x, y, toString(s)], a)
7476 }
7577
7678
77-func G (r) = makeString(["%s%d", "totalVotes", toString(r)], a)
79+func H (s) = makeString(["%s%d", "totalVotes", toString(s)], a)
7880
7981
80-func H (z,I,J) = {
81- let K = makeString(["mandatory ", toString(z), ".", I, " is not defined"], "")
82+func I (A,J,K) = {
83+ let L = makeString(["mandatory ", toString(A), ".", J, " is not defined"], "")
8284 valueOrErrorMessage({
83- let L = J
84- if ($isInstanceOf(L, "String"))
85+ let M = K
86+ if ($isInstanceOf(M, "String"))
8587 then {
86- let M = L
87- getString(z, I)
88+ let N = M
89+ getString(A, J)
8890 }
89- else if ($isInstanceOf(L, "Int"))
91+ else if ($isInstanceOf(M, "Int"))
9092 then {
91- let N = L
92- getInteger(z, I)
93+ let O = M
94+ getInteger(A, J)
9395 }
9496 else throw("invalid entry type")
95- }, K)
97+ }, L)
9698 }
9799
98100
99-func O (z,I) = {
100- let P = H(z, I, "")
101- if ($isInstanceOf(P, "String"))
102- then P
101+func P (A,J) = {
102+ let Q = I(A, J, "")
103+ if ($isInstanceOf(Q, "String"))
104+ then Q
103105 else throw("Couldn't cast Int|String to String")
104106 }
105107
106108
107-func Q (z,I) = {
108- let P = H(z, I, 0)
109- if ($isInstanceOf(P, "Int"))
110- then P
109+func R (A,J) = {
110+ let Q = I(A, J, 0)
111+ if ($isInstanceOf(Q, "Int"))
112+ then Q
111113 else throw("Couldn't cast Int|String to Int")
112114 }
113115
114116
115-func R (u) = ((u._1 + a) + u._2)
117+func S (v) = ((v._1 + a) + v._2)
116118
117119
118-func S (M) = {
119- let T = split(M, a)
120- if ((size(T) == 2))
121- then $Tuple2(T[0], T[1])
120+func T (N) = {
121+ let U = split(N, a)
122+ if ((size(U) == 2))
123+ then $Tuple2(U[0], U[1])
122124 else throw("invalid pool string")
123125 }
124126
125127
126-let U = "pools"
128+let V = "pools"
127129
128-func V (u) = {
129- let W = u
130- let w = W._1
131- let x = W._2
132- makeString(["votes", w, x], a)
130+func W (v) = {
131+ let X = v
132+ let x = X._1
133+ let y = X._2
134+ makeString(["votes", x, y], a)
133135 }
134136
135137
136-func X (Y) = {
137- let Z = if ((Y == U))
138+func Y (Z) = {
139+ let aa = if ((Z == V))
138140 then "%s%s"
139141 else "%s%s%s%s"
140- makeString([Z, Y, "head"], a)
142+ makeString([aa, Z, "head"], a)
141143 }
142144
143145
144-func aa (Y) = {
145- let Z = if ((Y == U))
146+func ab (Z) = {
147+ let aa = if ((Z == V))
146148 then "%s%s"
147149 else "%s%s%s%s"
148- makeString([Z, Y, "size"], a)
150+ makeString([aa, Z, "size"], a)
149151 }
150152
151153
152-func ab (Y,ac) = {
153- let Z = if ((Y == U))
154+func ac (Z,ad) = {
155+ let aa = if ((Z == V))
154156 then "%s%s%s%s"
155157 else "%s%s%s%s%s"
156- makeString([Z, Y, ac, "prev"], a)
158+ makeString([aa, Z, ad, "prev"], a)
157159 }
158160
159161
160-func ad (Y,ac) = {
161- let Z = if ((Y == U))
162+func ae (Z,ad) = {
163+ let aa = if ((Z == V))
162164 then "%s%s%s%s"
163165 else "%s%s%s%s%s"
164- makeString([Z, Y, ac, "next"], a)
166+ makeString([aa, Z, ad, "next"], a)
165167 }
166168
167169
168-func ae (Y,ac) = {
169- let af = getString(this, X(Y))
170- let ag = getString(this, ab(Y, ac))
171- let ah = getString(this, ad(Y, ac))
172- if (if ((ac == valueOrElse(af, "")))
170+func af (Z,ad) = {
171+ let ag = getString(this, Y(Z))
172+ let ah = getString(this, ac(Z, ad))
173+ let ai = getString(this, ae(Z, ad))
174+ if (if ((ad == valueOrElse(ag, "")))
173175 then true
174- else (ag != unit))
176+ else (ah != unit))
175177 then true
176- else (ah != unit)
178+ else (ai != unit)
177179 }
178180
179181
180-func ai (Y,ac) = {
181- let af = getString(this, X(Y))
182- let aj = valueOrElse(getInteger(this, aa(Y)), 0)
183- let ak = if (!(ae(Y, ac)))
182+func aj (Z,ad) = {
183+ let ag = getString(this, Y(Z))
184+ let ak = valueOrElse(getInteger(this, ab(Z)), 0)
185+ let al = if (!(af(Z, ad)))
184186 then true
185187 else throw("Node exists")
186- if ((ak == ak))
187- then (([IntegerEntry(aa(Y), (aj + 1))] ++ (if ((af != unit))
188- then [StringEntry(ad(Y, ac), value(af)), StringEntry(ab(Y, value(af)), ac)]
189- else nil)) ++ [StringEntry(X(Y), ac)])
188+ if ((al == al))
189+ then (([IntegerEntry(ab(Z), (ak + 1))] ++ (if ((ag != unit))
190+ then [StringEntry(ae(Z, ad), value(ag)), StringEntry(ac(Z, value(ag)), ad)]
191+ else nil)) ++ [StringEntry(Y(Z), ad)])
190192 else throw("Strict value is not equal to itself.")
191193 }
192194
193195
194-func al (Y,ac) = {
195- let af = getString(this, X(Y))
196- let aj = valueOrElse(getInteger(this, aa(Y)), 0)
197- let ag = getString(this, ab(Y, ac))
198- let ah = getString(this, ad(Y, ac))
199- ([IntegerEntry(aa(Y), (aj - 1))] ++ (if (if ((ag != unit))
200- then (ah != unit)
196+func am (Z,ad) = {
197+ let ag = getString(this, Y(Z))
198+ let ak = valueOrElse(getInteger(this, ab(Z)), 0)
199+ let ah = getString(this, ac(Z, ad))
200+ let ai = getString(this, ae(Z, ad))
201+ ([IntegerEntry(ab(Z), (ak - 1))] ++ (if (if ((ah != unit))
202+ then (ai != unit)
201203 else false)
202- then [StringEntry(ad(Y, value(ag)), value(ah)), StringEntry(ab(Y, value(ah)), value(ag)), DeleteEntry(ab(Y, ac)), DeleteEntry(ad(Y, ac))]
203- else if ((ah != unit))
204- then [StringEntry(X(Y), value(ah)), DeleteEntry(ad(Y, ac)), DeleteEntry(ab(Y, value(ah)))]
205- else if ((ag != unit))
206- then [DeleteEntry(ab(Y, ac)), DeleteEntry(ad(Y, value(ag)))]
207- else if ((ac == valueOrElse(af, "")))
208- then [DeleteEntry(X(Y))]
209- else throw(((("invalid node: " + Y) + ".") + ac))))
204+ then [StringEntry(ae(Z, value(ah)), value(ai)), StringEntry(ac(Z, value(ai)), value(ah)), DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, ad))]
205+ else if ((ai != unit))
206+ then [StringEntry(Y(Z), value(ai)), DeleteEntry(ae(Z, ad)), DeleteEntry(ac(Z, value(ai)))]
207+ else if ((ah != unit))
208+ then [DeleteEntry(ac(Z, ad)), DeleteEntry(ae(Z, value(ah)))]
209+ else if ((ad == valueOrElse(ag, "")))
210+ then [DeleteEntry(Y(Z))]
211+ else throw(((("invalid node: " + Z) + ".") + ad))))
210212 }
211213
212214
213-func am () = "%s__managerPublicKey"
215+func an () = "%s__managerPublicKey"
214216
215217
216-func an () = "%s__pendingManagerPublicKey"
218+func ao () = "%s__pendingManagerPublicKey"
217219
218220
219-func ao () = {
220- let L = getString(am())
221- if ($isInstanceOf(L, "String"))
221+func ap () = {
222+ let M = getString(an())
223+ if ($isInstanceOf(M, "String"))
222224 then {
223- let ap = L
224- fromBase58String(ap)
225+ let aq = M
226+ fromBase58String(aq)
225227 }
226- else if ($isInstanceOf(L, "Unit"))
228+ else if ($isInstanceOf(M, "Unit"))
227229 then unit
228230 else throw("Match error")
229231 }
230232
231233
232-func aq () = {
233- let L = getString(an())
234- if ($isInstanceOf(L, "String"))
234+func ar () = {
235+ let M = getString(ao())
236+ if ($isInstanceOf(M, "String"))
235237 then {
236- let ap = L
237- fromBase58String(ap)
238+ let aq = M
239+ fromBase58String(aq)
238240 }
239- else if ($isInstanceOf(L, "Unit"))
241+ else if ($isInstanceOf(M, "Unit"))
240242 then unit
241243 else throw("Match error")
242244 }
243245
244246
245-let ar = throw("Permission denied")
247+let as = throw("Permission denied")
246248
247-func as (at) = if ((at.caller == this))
249+func at (au) = if ((au.caller == this))
248250 then true
249- else ar
251+ else as
250252
251253
252-func au (at) = {
253- let L = ao()
254- if ($isInstanceOf(L, "ByteVector"))
254+func av (au) = {
255+ let M = ap()
256+ if ($isInstanceOf(M, "ByteVector"))
255257 then {
256- let av = L
257- if ((at.callerPublicKey == av))
258+ let aw = M
259+ if ((au.callerPublicKey == aw))
258260 then true
259- else ar
261+ else as
260262 }
261- else if ($isInstanceOf(L, "Unit"))
262- then as(at)
263+ else if ($isInstanceOf(M, "Unit"))
264+ then at(au)
263265 else throw("Match error")
264266 }
265267
266268
267-@Callable(at)
268-func setManager (aw) = {
269- let ax = au(at)
270- if ((ax == ax))
269+@Callable(au)
270+func setManager (ax) = {
271+ let ay = av(au)
272+ if ((ay == ay))
271273 then {
272- let ay = fromBase58String(aw)
273- if ((ay == ay))
274- then [StringEntry(an(), aw)]
274+ let az = fromBase58String(ax)
275+ if ((az == az))
276+ then [StringEntry(ao(), ax)]
275277 else throw("Strict value is not equal to itself.")
276278 }
277279 else throw("Strict value is not equal to itself.")
278280 }
279281
280282
281283
282-@Callable(at)
284+@Callable(au)
283285 func confirmManager () = {
284- let az = aq()
285- let aA = if (isDefined(az))
286+ let aA = ar()
287+ let aB = if (isDefined(aA))
286288 then true
287289 else throw("No pending manager")
288- if ((aA == aA))
290+ if ((aB == aB))
289291 then {
290- let aB = if ((at.callerPublicKey == value(az)))
292+ let aC = if ((au.callerPublicKey == value(aA)))
291293 then true
292294 else throw("You are not pending manager")
293- if ((aB == aB))
294- then [StringEntry(am(), toBase58String(value(az))), DeleteEntry(an())]
295+ if ((aC == aC))
296+ then [StringEntry(an(), toBase58String(value(aA))), DeleteEntry(ao())]
295297 else throw("Strict value is not equal to itself.")
296298 }
297299 else throw("Strict value is not equal to itself.")
298300 }
299301
300302
301303
302-@Callable(at)
303-func getUserGwxAmountAtHeight (aC,aD) = {
304- let aE = valueOrErrorMessage(addressFromString(O(this, j)), "invalid boosting contract address")
304+@Callable(au)
305+func getUserGwxAmountAtHeight (aD,aE) = {
306+ let aF = valueOrErrorMessage(addressFromString(P(this, k)), "invalid boosting contract address")
305307 $Tuple2(nil, {
306- let P = invoke(aE, "getUserGwxAmountAtHeightREADONLY", [aC, aD], nil)
307- if ($isInstanceOf(P, "Int"))
308- then P
308+ let Q = invoke(aF, "getUserGwxAmountAtHeightREADONLY", [aD, aE], nil)
309+ if ($isInstanceOf(Q, "Int"))
310+ then Q
309311 else throw("Couldn't cast Any to Int")
310312 })
311313 }
312314
313315
314316
315-@Callable(at)
316-func constructor (aF,aG,aH) = {
317- let aI = [au(at), if ((addressFromString(aF) != unit))
317+@Callable(au)
318+func constructor (aG,aH,aI,aJ) = {
319+ let aK = [av(au), if ((addressFromString(aG) != unit))
318320 then true
319- else "invalid voting emission candidate contract address", if ((addressFromString(aG) != unit))
321+ else "invalid factory contract address", if ((addressFromString(aH) != unit))
320322 then true
321- else "invalid boosting contract address", if ((aH > 0))
323+ else "invalid voting emission candidate contract address", if ((addressFromString(aI) != unit))
324+ then true
325+ else "invalid boosting contract address", if ((aJ > 0))
322326 then true
323327 else throw("invalid epoch length")]
324- if ((aI == aI))
325- then $Tuple2([StringEntry(i, aF), StringEntry(j, aG), IntegerEntry(f, aH)], unit)
328+ if ((aK == aK))
329+ then $Tuple2([StringEntry(j, aG), StringEntry(i, aH), StringEntry(k, aI), IntegerEntry(f, aJ)], unit)
326330 else throw("Strict value is not equal to itself.")
327331 }
328332
329333
330334
331-@Callable(at)
332-func create (w,x) = {
333- let aJ = [if ((toBase58String(at.caller.bytes) == valueOrElse(getString(this, i), "")))
335+@Callable(au)
336+func create (x,y) = {
337+ let aL = [if ((toBase58String(au.caller.bytes) == valueOrElse(getString(this, i), "")))
334338 then true
335- else au(at)]
336- if ((aJ == aJ))
339+ else av(au)]
340+ if ((aL == aL))
337341 then {
338- let u = $Tuple2(w, x)
339- let aK = ([BooleanEntry(t(u), true)] ++ ai(U, R(u)))
340- let aL = (getInteger(this, g) == unit)
341- let aM = if (aL)
342+ let v = $Tuple2(x, y)
343+ let aM = ([BooleanEntry(u(v), true)] ++ aj(V, S(v)))
344+ let aN = (getInteger(this, g) == unit)
345+ let aO = if (aN)
342346 then {
343- let r = 0
344-[IntegerEntry(g, r), IntegerEntry(q(r), height), IntegerEntry(n, height), IntegerEntry(o, r), IntegerEntry(p, height)]
347+ let s = 0
348+[IntegerEntry(g, s), IntegerEntry(r(s), height), IntegerEntry(o, height), IntegerEntry(p, s), IntegerEntry(q, height)]
345349 }
346350 else nil
347- $Tuple2((aK ++ aM), unit)
351+ $Tuple2((aM ++ aO), unit)
348352 }
349353 else throw("Strict value is not equal to itself.")
350354 }
351355
352356
353357
354-@Callable(at)
355-func vote (w,x,aN) = {
356- let u = $Tuple2(w, x)
357- let r = valueOrElse(getInteger(this, g), 0)
358- let aO = Q(this, q(r))
359- let aH = Q(this, f)
360- let aP = (aO + aH)
361- let aQ = getInteger(this, k)
362- let aR = valueOrElse(getInteger(this, y(at.caller, r)), 0)
363- let aS = valueOrElse(getInteger(this, A(u, at.caller, r)), 0)
364- let aT = valueOrElse(getInteger(this, C(u, r)), 0)
365- let aU = valueOrElse(getInteger(this, G(r)), 0)
366- let aV = {
367- let P = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(at.caller.bytes), aP], nil)
368- if ($isInstanceOf(P, "Int"))
369- then P
358+@Callable(au)
359+func vote (x,y,aP) = {
360+ let v = $Tuple2(x, y)
361+ let s = valueOrElse(getInteger(this, g), 0)
362+ let aQ = R(this, r(s))
363+ let aJ = R(this, f)
364+ let aR = (aQ + aJ)
365+ let aS = getInteger(this, l)
366+ let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0)
367+ let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0)
368+ let aV = valueOrElse(getInteger(this, D(v, s)), 0)
369+ let aW = valueOrElse(getInteger(this, H(s)), 0)
370+ let aX = {
371+ let Q = invoke(this, "getUserGwxAmountAtHeight", [toBase58String(au.caller.bytes), aR], nil)
372+ if ($isInstanceOf(Q, "Int"))
373+ then Q
370374 else throw("Couldn't cast Any to Int")
371375 }
372- let aW = (aV - aR)
373- let aX = (aS + aN)
374- let aJ = [if ((getBoolean(t(u)) != unit))
376+ let aY = (aX - aT)
377+ let aZ = (aU + aP)
378+ let aL = [if ((getBoolean(u(v)) != unit))
375379 then true
376- else throw("invalid assets"), if ((aP > height))
380+ else throw("invalid assets"), if ((aR > height))
377381 then true
378- else throw("invalid height"), if ((aQ == unit))
382+ else throw("invalid height"), if ((aS == unit))
379383 then true
380- else throw("finalization in progress"), if ((aV > 0))
384+ else throw("finalization in progress"), if ((aX > 0))
381385 then true
382- else throw("you do not have gWX"), if (if ((aN > 0))
383- then (aW >= aN)
386+ else throw("you do not have gWX"), if (if ((aP > 0))
387+ then (aY >= aP)
384388 else false)
385389 then true
386390 else throw("invalid amount")]
387- if ((aJ == aJ))
391+ if ((aL == aL))
388392 then {
389- let aY = V(u)
390- let aZ = toString(at.caller)
391- let ba = if (ae(aY, aZ))
393+ let ba = W(v)
394+ let bb = toString(au.caller)
395+ let bc = if (af(ba, bb))
392396 then nil
393- else ai(aY, aZ)
394- $Tuple2(([IntegerEntry(y(at.caller, r), (aR + aN)), IntegerEntry(A(u, at.caller, r), aX), IntegerEntry(C(u, r), (aT + aN)), IntegerEntry(G(r), (aU + aN))] ++ ba), unit)
397+ else aj(ba, bb)
398+ $Tuple2(([IntegerEntry(z(au.caller, s), (aT + aP)), IntegerEntry(B(v, au.caller, s), aZ), IntegerEntry(D(v, s), (aV + aP)), IntegerEntry(H(s), (aW + aP))] ++ bc), unit)
395399 }
396400 else throw("Strict value is not equal to itself.")
397401 }
398402
399403
400404
401-@Callable(at)
402-func cancelVote (w,x) = {
403- let u = $Tuple2(w, x)
404- let r = valueOrElse(getInteger(this, g), 0)
405- let aO = Q(this, q(r))
406- let aH = Q(this, f)
407- let aP = (aO + aH)
408- let aQ = getInteger(this, k)
409- let aR = valueOrElse(getInteger(this, y(at.caller, r)), 0)
410- let aS = valueOrElse(getInteger(this, A(u, at.caller, r)), 0)
411- let aT = valueOrElse(getInteger(this, C(u, r)), 0)
412- let aU = valueOrElse(getInteger(this, G(r)), 0)
413- let aJ = [if ((getBoolean(t(u)) != unit))
405+@Callable(au)
406+func cancelVote (x,y) = {
407+ let v = $Tuple2(x, y)
408+ let s = valueOrElse(getInteger(this, g), 0)
409+ let aQ = R(this, r(s))
410+ let aJ = R(this, f)
411+ let aR = (aQ + aJ)
412+ let aS = getInteger(this, l)
413+ let aT = valueOrElse(getInteger(this, z(au.caller, s)), 0)
414+ let aU = valueOrElse(getInteger(this, B(v, au.caller, s)), 0)
415+ let aV = valueOrElse(getInteger(this, D(v, s)), 0)
416+ let aW = valueOrElse(getInteger(this, H(s)), 0)
417+ let aL = [if ((getBoolean(u(v)) != unit))
414418 then true
415- else throw("invalid assets"), if ((aP > height))
419+ else throw("invalid assets"), if ((aR > height))
416420 then true
417- else throw("invalid height"), if ((aQ == unit))
421+ else throw("invalid height"), if ((aS == unit))
418422 then true
419- else throw("finalization in progress"), if ((aS > 0))
423+ else throw("finalization in progress"), if ((aU > 0))
420424 then true
421425 else throw("no vote")]
422- if ((aJ == aJ))
426+ if ((aL == aL))
423427 then {
424- let aY = V(u)
425- let aZ = toString(at.caller)
426- $Tuple2(([IntegerEntry(y(at.caller, r), max([(aR - aS), 0])), DeleteEntry(A(u, at.caller, r)), IntegerEntry(C(u, r), (aT - aS)), IntegerEntry(G(r), (aU - aS))] ++ al(aY, aZ)), unit)
428+ let ba = W(v)
429+ let bb = toString(au.caller)
430+ $Tuple2(([IntegerEntry(z(au.caller, s), max([(aT - aU), 0])), DeleteEntry(B(v, au.caller, s)), IntegerEntry(D(v, s), (aV - aU)), IntegerEntry(H(s), (aW - aU))] ++ am(ba, bb)), unit)
427431 }
428432 else throw("Strict value is not equal to itself.")
429433 }
430434
431435
432436
433-@Callable(at)
434-func setEpochLength (bb) = {
435- let aI = [au(at), if ((bb > 0))
437+@Callable(au)
438+func setEpochLength (bd) = {
439+ let aK = [av(au), if ((bd > 0))
436440 then true
437441 else throw("invalid epoch length")]
438- if ((aI == aI))
439- then $Tuple2([IntegerEntry(f, bb)], unit)
442+ if ((aK == aK))
443+ then $Tuple2([IntegerEntry(f, bd)], unit)
440444 else throw("Strict value is not equal to itself.")
441445 }
442446
443447
444448
445-@Callable(at)
446-func setMaxDepth (bc) = {
447- let aI = [au(at), if ((bc > 0))
449+@Callable(au)
450+func setMaxDepth (be) = {
451+ let aK = [av(au), if ((be > 0))
448452 then true
449453 else throw("invalid max depth")]
450- if ((aI == aI))
451- then $Tuple2([IntegerEntry(h, bc)], unit)
454+ if ((aK == aK))
455+ then $Tuple2([IntegerEntry(h, be)], unit)
452456 else throw("Strict value is not equal to itself.")
453457 }
454458
455459
456460
457-@Callable(at)
458-func processVoteINTERNAL (bd,aZ) = {
459- let ax = as(at)
460- if ((ax == ax))
461+@Callable(au)
462+func processVoteINTERNAL (bf,bb) = {
463+ let ay = at(au)
464+ if ((ay == ay))
461465 then {
462- let aC = valueOrErrorMessage(addressFromString(aZ), ("processVoteINTERNAL: invalid user address " + aZ))
463- let r = Q(this, g)
464- let be = (r - 1)
465- let aH = Q(this, f)
466- let aO = Q(this, q(r))
467- let aP = (aO + aH)
468- let bf = Q(this, q(be))
469- let bg = (bf + aH)
470- let bh = if ((be >= 0))
466+ let aD = valueOrErrorMessage(addressFromString(bb), ("processVoteINTERNAL: invalid user address " + bb))
467+ let s = R(this, g)
468+ let bg = (s - 1)
469+ let aJ = R(this, f)
470+ let aQ = R(this, r(s))
471+ let aR = (aQ + aJ)
472+ let bh = R(this, r(bg))
473+ let bi = (bh + aJ)
474+ let bj = if ((bg >= 0))
471475 then true
472476 else throw("processVoteINTERNAL: invalid previous epoch")
473- if ((bh == bh))
477+ if ((bj == bj))
474478 then {
475- let u = S(bd)
476- let aV = {
477- let P = invoke(this, "getUserGwxAmountAtHeight", [aZ, aP], nil)
478- if ($isInstanceOf(P, "Int"))
479- then P
479+ let v = T(bf)
480+ let aX = {
481+ let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, aR], nil)
482+ if ($isInstanceOf(Q, "Int"))
483+ then Q
480484 else throw("Couldn't cast Any to Int")
481485 }
482- let bi = {
483- let P = invoke(this, "getUserGwxAmountAtHeight", [aZ, bg], nil)
484- if ($isInstanceOf(P, "Int"))
485- then P
486+ let bk = {
487+ let Q = invoke(this, "getUserGwxAmountAtHeight", [bb, bi], nil)
488+ if ($isInstanceOf(Q, "Int"))
489+ then Q
486490 else throw("Couldn't cast Any to Int")
487491 }
488- let aU = valueOrElse(getInteger(G(r)), 0)
489- let bj = valueOrElse(getInteger(C(u, r)), 0)
490- let bk = valueOrErrorMessage(getInteger(A(u, aC, be)), (((("processVoteINTERNAL " + bd) + " ") + aZ) + ": no previous vote"))
491- let aR = valueOrElse(getInteger(this, y(aC, r)), 0)
492- let aX = fraction(bk, aV, bi)
493- let bl = if ((aX > 0))
494- then [IntegerEntry(A(u, aC, r), aX), IntegerEntry(G(r), (aU + aX)), IntegerEntry(C(u, r), (bj + aX)), IntegerEntry(y(aC, r), (aR + aX))]
495- else al(V(u), aZ)
496- $Tuple2(bl, unit)
492+ let aW = valueOrElse(getInteger(H(s)), 0)
493+ let bl = valueOrElse(getInteger(D(v, s)), 0)
494+ let bm = valueOrErrorMessage(getInteger(B(v, aD, bg)), (((("processVoteINTERNAL " + bf) + " ") + bb) + ": no previous vote"))
495+ let aT = valueOrElse(getInteger(this, z(aD, s)), 0)
496+ let aZ = fraction(bm, aX, bk)
497+ let bn = if ((aZ > 0))
498+ then [IntegerEntry(B(v, aD, s), aZ), IntegerEntry(H(s), (aW + aZ)), IntegerEntry(D(v, s), (bl + aZ)), IntegerEntry(z(aD, s), (aT + aZ))]
499+ else am(W(v), bb)
500+ $Tuple2(bn, unit)
497501 }
498502 else throw("Strict value is not equal to itself.")
499503 }
500504 else throw("Strict value is not equal to itself.")
501505 }
502506
503507
504508
505-@Callable(at)
506-func processPoolINTERNAL (bd) = {
507- let ax = as(at)
508- if ((ax == ax))
509+@Callable(au)
510+func processPoolINTERNAL (bf) = {
511+ let ay = at(au)
512+ if ((ay == ay))
509513 then {
510- let bm = (Q(this, g) - 1)
511- let bh = if ((bm >= 0))
514+ let bo = (R(this, g) - 1)
515+ let bj = if ((bo >= 0))
512516 then true
513517 else throw("processPoolINTERNAL: invalid target epoch")
514- if ((bh == bh))
518+ if ((bj == bj))
515519 then {
516- let u = S(bd)
517- let aU = valueOrElse(getInteger(this, G(bm)), 0)
518- let bj = valueOrElse(getInteger(this, C(u, bm)), 0)
519- let bn = if ((aU == 0))
520+ let v = T(bf)
521+ let bp = v
522+ let x = bp._1
523+ let y = bp._2
524+ let aW = valueOrElse(getInteger(this, H(bo)), 0)
525+ let bl = valueOrElse(getInteger(this, D(v, bo)), 0)
526+ let bq = if ((aW == 0))
520527 then 0
521- else fraction(bj, b, aU)
522- $Tuple2([IntegerEntry(E(u, bm), bn)], unit)
528+ else fraction(bl, b, aW)
529+ let aG = addressFromStringValue(P(this, j))
530+ let br = invoke(aG, "modifyWeight", [x, y, bq], nil)
531+ if ((br == br))
532+ then $Tuple2([IntegerEntry(F(v, bo), bq)], unit)
533+ else throw("Strict value is not equal to itself.")
523534 }
524535 else throw("Strict value is not equal to itself.")
525536 }
526537 else throw("Strict value is not equal to itself.")
527538 }
528539
529540
530541
531-@Callable(at)
542+@Callable(au)
532543 func finalizeHelper () = {
533- let r = valueOrElse(getInteger(this, g), 0)
534- let bo = (r - 1)
535- let aO = Q(this, q(r))
536- let aH = Q(this, f)
537- let aP = (aO + aH)
538- let aQ = getInteger(this, k)
539- if ((height >= aP))
544+ let s = valueOrElse(getInteger(this, g), 0)
545+ let bs = (s - 1)
546+ let aQ = R(this, r(s))
547+ let aJ = R(this, f)
548+ let aR = (aQ + aJ)
549+ let aS = getInteger(this, l)
550+ if ((height >= aR))
540551 then {
541- let bp = (r + 1)
542- $Tuple2([IntegerEntry(q(bp), height), IntegerEntry(n, height), IntegerEntry(g, bp), IntegerEntry(k, d)], true)
552+ let bt = (s + 1)
553+ $Tuple2([IntegerEntry(r(bt), height), IntegerEntry(o, height), IntegerEntry(g, bt), IntegerEntry(l, d)], true)
543554 }
544- else if ((aQ == unit))
555+ else if ((aS == unit))
545556 then $Tuple2(nil, false)
546- else if ((aQ == d))
557+ else if ((aS == d))
547558 then {
548- let bq = getString(l)
549- let br = getString(m)
550- let L = bq
551- if ($isInstanceOf(L, "Unit"))
559+ let bu = getString(m)
560+ let bv = getString(n)
561+ let M = bu
562+ if ($isInstanceOf(M, "Unit"))
552563 then {
553- let bs = getString(X(U))
554- if ($isInstanceOf(bs, "Unit"))
555- then $Tuple2([IntegerEntry(k, e), DeleteEntry(l), DeleteEntry(m)], true)
556- else if ($isInstanceOf(bs, "String"))
564+ let bw = getString(Y(V))
565+ if ($isInstanceOf(bw, "Unit"))
566+ then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true)
567+ else if ($isInstanceOf(bw, "String"))
557568 then {
558- let bt = bs
559- $Tuple2([StringEntry(l, bt)], true)
569+ let bx = bw
570+ $Tuple2([StringEntry(m, bx)], true)
560571 }
561572 else throw("Match error")
562573 }
563- else if ($isInstanceOf(L, "String"))
574+ else if ($isInstanceOf(M, "String"))
564575 then {
565- let bd = L
566- let u = S(bd)
567- let bu = {
568- let bs = br
569- if ($isInstanceOf(bs, "Unit"))
570- then getString(X(V(u)))
571- else if ($isInstanceOf(bs, "String"))
576+ let bf = M
577+ let v = T(bf)
578+ let by = {
579+ let bw = bv
580+ if ($isInstanceOf(bw, "Unit"))
581+ then getString(Y(W(v)))
582+ else if ($isInstanceOf(bw, "String"))
572583 then {
573- let bv = bs
574- let bw = invoke(this, "processVoteINTERNAL", [bd, bv], nil)
575- if ((bw == bw))
576- then getString(ad(V(u), bv))
584+ let bz = bw
585+ let bA = invoke(this, "processVoteINTERNAL", [bf, bz], nil)
586+ if ((bA == bA))
587+ then getString(ae(W(v), bz))
577588 else throw("Strict value is not equal to itself.")
578589 }
579590 else throw("Match error")
580591 }
581- let bs = bu
582- if ($isInstanceOf(bs, "Unit"))
592+ let bw = by
593+ if ($isInstanceOf(bw, "Unit"))
583594 then {
584- let bx = getString(ad(U, bd))
585- let by = bx
586- if ($isInstanceOf(by, "Unit"))
587- then $Tuple2([IntegerEntry(k, e), DeleteEntry(l), DeleteEntry(m)], true)
588- else if ($isInstanceOf(by, "String"))
595+ let bB = getString(ae(V, bf))
596+ let bC = bB
597+ if ($isInstanceOf(bC, "Unit"))
598+ then $Tuple2([IntegerEntry(l, e), DeleteEntry(m), DeleteEntry(n)], true)
599+ else if ($isInstanceOf(bC, "String"))
589600 then {
590- let ap = by
591- $Tuple2([StringEntry(l, ap), DeleteEntry(m)], true)
601+ let aq = bC
602+ $Tuple2([StringEntry(m, aq), DeleteEntry(n)], true)
592603 }
593604 else throw("Match error")
594605 }
595- else if ($isInstanceOf(bs, "String"))
606+ else if ($isInstanceOf(bw, "String"))
596607 then {
597- let bz = bs
598- $Tuple2([StringEntry(m, bz)], true)
608+ let bD = bw
609+ $Tuple2([StringEntry(n, bD)], true)
599610 }
600611 else throw("Match error")
601612 }
602613 else throw("Match error")
603614 }
604- else if ((aQ == e))
615+ else if ((aS == e))
605616 then {
606- let bq = getString(l)
607- let L = bq
608- if ($isInstanceOf(L, "Unit"))
617+ let bu = getString(m)
618+ let M = bu
619+ if ($isInstanceOf(M, "Unit"))
609620 then {
610- let bs = getString(X(U))
611- if ($isInstanceOf(bs, "Unit"))
612- then $Tuple2([DeleteEntry(k), BooleanEntry(s(bo), true), IntegerEntry(o, r), IntegerEntry(p, aO)], true)
613- else if ($isInstanceOf(bs, "String"))
621+ let bw = getString(Y(V))
622+ if ($isInstanceOf(bw, "Unit"))
623+ then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ)], true)
624+ else if ($isInstanceOf(bw, "String"))
614625 then {
615- let bA = bs
616- $Tuple2([StringEntry(l, bA)], true)
626+ let bE = bw
627+ $Tuple2([StringEntry(m, bE)], true)
617628 }
618629 else throw("Match error")
619630 }
620- else if ($isInstanceOf(L, "String"))
631+ else if ($isInstanceOf(M, "String"))
621632 then {
622- let bd = L
623- let bB = invoke(this, "processPoolINTERNAL", [bd], nil)
624- if ((bB == bB))
633+ let bf = M
634+ let bF = invoke(this, "processPoolINTERNAL", [bf], nil)
635+ if ((bF == bF))
625636 then {
626- let bx = getString(ad(U, bd))
627- let bs = bx
628- if ($isInstanceOf(bs, "Unit"))
629- then $Tuple2([DeleteEntry(k), BooleanEntry(s(bo), true), IntegerEntry(o, r), IntegerEntry(p, aO), DeleteEntry(l)], true)
630- else if ($isInstanceOf(bs, "String"))
637+ let bB = getString(ae(V, bf))
638+ let bw = bB
639+ if ($isInstanceOf(bw, "Unit"))
640+ then $Tuple2([DeleteEntry(l), BooleanEntry(t(bs), true), IntegerEntry(p, s), IntegerEntry(q, aQ), DeleteEntry(m)], true)
641+ else if ($isInstanceOf(bw, "String"))
631642 then {
632- let bA = bs
633- $Tuple2([StringEntry(l, bA)], true)
643+ let bE = bw
644+ $Tuple2([StringEntry(m, bE)], true)
634645 }
635646 else throw("Match error")
636647 }
637648 else throw("Strict value is not equal to itself.")
638649 }
639650 else throw("Match error")
640651 }
641652 else throw("finalization is broken")
642653 }
643654
644655
645656
646-@Callable(at)
647-func finalizeWrapper (bC) = {
648- let bD = {
649- let P = invoke(this, "finalizeHelper", nil, nil)
650- if ($isInstanceOf(P, "Boolean"))
651- then P
657+@Callable(au)
658+func finalizeWrapper (bG) = {
659+ let bH = {
660+ let Q = invoke(this, "finalizeHelper", nil, nil)
661+ if ($isInstanceOf(Q, "Boolean"))
662+ then Q
652663 else throw("Couldn't cast Any to Boolean")
653664 }
654- if ((bD == bD))
655- then if (!(bD))
656- then if ((bC == 0))
665+ if ((bH == bH))
666+ then if (!(bH))
667+ then if ((bG == 0))
657668 then throw("Current voting is not over yet")
658669 else $Tuple2(nil, unit)
659670 else {
660- let bE = valueOrElse(getInteger(this, h), c)
661- if ((bE > bC))
671+ let bI = valueOrElse(getInteger(this, h), c)
672+ if ((bI > bG))
662673 then {
663- let bF = invoke(this, "finalizeWrapper", [(bC + 1)], nil)
664- if ((bF == bF))
674+ let bJ = invoke(this, "finalizeWrapper", [(bG + 1)], nil)
675+ if ((bJ == bJ))
665676 then $Tuple2(nil, unit)
666677 else throw("Strict value is not equal to itself.")
667678 }
668679 else $Tuple2(nil, unit)
669680 }
670681 else throw("Strict value is not equal to itself.")
671682 }
672683
673684
674685
675-@Callable(at)
686+@Callable(au)
676687 func finalize () = {
677- let bF = invoke(this, "finalizeWrapper", [0], nil)
678- if ((bF == bF))
688+ let bJ = invoke(this, "finalizeWrapper", [0], nil)
689+ if ((bJ == bJ))
679690 then $Tuple2(nil, unit)
680691 else throw("Strict value is not equal to itself.")
681692 }
682693
683694
684695
685-@Callable(at)
686-func onVerificationLoss (bG) = $Tuple2(nil, unit)
696+@Callable(au)
697+func onVerificationLoss (bK) = $Tuple2(nil, unit)
687698
688699
689700
690-@Callable(at)
691-func containsNodeREADONLY (Y,ac) = $Tuple2(nil, ae(Y, ac))
701+@Callable(au)
702+func containsNodeREADONLY (Z,ad) = $Tuple2(nil, af(Z, ad))
692703
693704
694705
695-@Callable(at)
696-func insertNode (Y,ac) = {
697- let ax = au(at)
698- if ((ax == ax))
699- then $Tuple2(ai(Y, ac), unit)
706+@Callable(au)
707+func insertNode (Z,ad) = {
708+ let ay = av(au)
709+ if ((ay == ay))
710+ then $Tuple2(aj(Z, ad), unit)
700711 else throw("Strict value is not equal to itself.")
701712 }
702713
703714
704715
705-@Callable(at)
706-func deleteNode (Y,ac) = {
707- let ax = au(at)
708- if ((ax == ax))
709- then $Tuple2(al(Y, ac), unit)
716+@Callable(au)
717+func deleteNode (Z,ad) = {
718+ let ay = av(au)
719+ if ((ay == ay))
720+ then $Tuple2(am(Z, ad), unit)
710721 else throw("Strict value is not equal to itself.")
711722 }
712723
713724
714-@Verifier(bH)
715-func bI () = {
716- let bJ = {
717- let L = ao()
718- if ($isInstanceOf(L, "ByteVector"))
725+@Verifier(bL)
726+func bM () = {
727+ let bN = {
728+ let M = ap()
729+ if ($isInstanceOf(M, "ByteVector"))
719730 then {
720- let av = L
721- av
731+ let aw = M
732+ aw
722733 }
723- else if ($isInstanceOf(L, "Unit"))
724- then bH.senderPublicKey
734+ else if ($isInstanceOf(M, "Unit"))
735+ then bL.senderPublicKey
725736 else throw("Match error")
726737 }
727- sigVerify(bH.bodyBytes, bH.proofs[0], bJ)
738+ sigVerify(bL.bodyBytes, bL.proofs[0], bN)
728739 }
729740

github/deemru/w8io/169f3d6 
249.52 ms