tx · DtnPPqZXor71n3iJtMQAB13ee419iGiCDx5qvcKjrPbD

3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH:  -0.01400000 Waves

2021.03.26 13:36 [1454597] smart account 3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH > SELF 0.00000000 Waves

{ "type": 13, "id": "DtnPPqZXor71n3iJtMQAB13ee419iGiCDx5qvcKjrPbD", "fee": 1400000, "feeAssetId": null, "timestamp": 1616755021238, "version": 1, "sender": "3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH", "senderPublicKey": "HoEvP2nFKMAsffQ9PUyAm6auWisyHgusY9HxDeMASrzZ", "proofs": [ "2kHxkTQKemB8XTgkXTNhvgdZiJRMXDLMaZEUC4emqo3PXNKa2BAgs533yWZNu3dMnyS6Ftw13JftXQeDzs9Jp4Yu" ], "script": "base64:AAIEAAAAAAAAADoIAhIPCg0ICAgBCAEBAQgBAQEBEgMKAQESABIAEgUKAwgICBIFCgMICAgSAwoBCBIECgIIARIDCgEIAAAASgAAAAADU0VQAgAAAAJfXwEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAAEGdldEJvb2xlYW5PckZhaWwAAAABAAAAA2tleQkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQkAASwAAAACAgAAABVObyBkYXRhIGZvciB0aGlzLmtleT0FAAAAA2tleQEAAAAMZ2V0SW50T3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAADmZhaWxFeGVjdXRlR2V0AAAABQAAAANtc2cAAAAMYmFzZUFzc2V0U3RyAAAADnVzZXJBZGRyZXNzU3RyAAAADXN1Ym1pdFR4SWRTdHIAAAANb3BlcmF0aW9uVHlwZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgUAAAADbXNnAgAAAA86IGJhc2VBc3NldFN0cj0FAAAADGJhc2VBc3NldFN0cgIAAAAQIHVzZXJBZGRyZXNzU3RyPQUAAAAOdXNlckFkZHJlc3NTdHICAAAADyBzdWJtaXRUeElkU3RyPQUAAAANc3VibWl0VHhJZFN0cgIAAAAPIG9wZXJhdGlvblR5cGU9BQAAAA1vcGVyYXRpb25UeXBlAQAAABdmYWlsU3VibWl0TGltaXRzRXhjZWVkcwAAAAQAAAANcmVtYWluaW5nQmFzZQAAAA5yZW1haW5pbmdTaGFyZQAAABBuZXdSZW1haW5pbmdCYXNlAAAAEW5ld1JlbWFpbmluZ1NoYXJlCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAACtzdWJtaXQgb3BlcmF0aW9uIGxpbWl0cyBoYXZlIGJlZW4gcmVhY2hlZDogAgAAAA8gcmVtYWluaW5nQmFzZT0JAAGkAAAAAQUAAAANcmVtYWluaW5nQmFzZQIAAAAQIHJlbWFpbmluZ1NoYXJlPQkAAaQAAAABBQAAAA5yZW1haW5pbmdTaGFyZQIAAAASIG5ld1JlbWFpbmluZ0Jhc2U9CQABpAAAAAEFAAAAEG5ld1JlbWFpbmluZ0Jhc2UCAAAAEyBuZXdSZW1haW5pbmdTaGFyZT0JAAGkAAAAAQUAAAARbmV3UmVtYWluaW5nU2hhcmUBAAAAFGZhaWxUb3B1cE1hbmFnZXJPbmx5AAAAAQAAABN0b3B1cE1hbmFnZXJBZGRyZXNzCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAACNvcGVydGlvbiBkZW5pZWQ6IG9ubHkgdG9wVXBNYW5hZ2VyPQUAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwIAAAAbIGNhbiBzZW5kIHN1Y2ggdHJhbnNhY3Rpb25zAQAAABFjb252ZXJ0U2hhcmUyQmFzZQAAAAMAAAALc2hhcmVBbW91bnQAAAAFcHJpY2UAAAAJcHJpY2VNdWx0CQAAawAAAAMFAAAAC3NoYXJlQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0AQAAABFjb252ZXJ0QmFzZTJTaGFyZQAAAAMAAAAKYmFzZUFtb3VudAAAAAVwcmljZQAAAAlwcmljZU11bHQJAABrAAAAAwUAAAAKYmFzZUFtb3VudAUAAAAJcHJpY2VNdWx0BQAAAAVwcmljZQEAAAALa2V5QXNzZXRDZmcAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAABclcyVzJXNfX2NvbmZpZ19fYXNzZXRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAAAAIAAAAXJXNfX25leHRJbnRlcm5hbEFzc2V0SWQBAAAADGtleVByaWNlTGFzdAAAAAEAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQABLAAAAAICAAAAFSVzJXMlZF9fcHJpY2VfX2xhc3RfXwUAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyAQAAAAtrZXlQcmljZUFUSAAAAAEAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQABLAAAAAICAAAAFCVzJXMlZF9fcHJpY2VfX2F0aF9fBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIBAAAAEmtleVByaWNlQnlUb3BVcElkeAAAAAIAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAIdG9wVXBJZHgJAAS5AAAAAgkABEwAAAACAgAAABslcyVzJWQlZF9fcHJpY2VfX2J5VG9wVXBJZHgJAARMAAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgkAAaQAAAABBQAAAAh0b3BVcElkeAUAAAADbmlsBQAAAANTRVABAAAAD2tleVByaWNlSGlzdG9yeQAAAAMAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyAAAAAWgAAAAJdGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAaJXMlcyVkJWQlZF9fcHJpY2VfX2hpc3RvcnkJAARMAAAAAgUAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQAETAAAAAIJAAGkAAAAAQUAAAABaAkABEwAAAACCQABpAAAAAEFAAAACXRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAADmtleVRvdGFsTG9ja2VkAAAAAQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIJAAEsAAAAAgIAAAAXJXMlcyVkX190b3RhbF9fbG9ja2VkX18FAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgEAAAAUa2V5VG90YWxMb2NrZWRCeVVzZXIAAAACAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAADnVzZXJBZGRyZXNzU3RyCQAEuQAAAAIJAARMAAAAAgIAAAAXJXMlcyVkJXNfX3RvdGFsX19sb2NrZWQJAARMAAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAAA25pbAUAAAADU0VQAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQAAABFpbnRlcm5hbEJhc2VBc3NldAkAASwAAAACAgAAACglcyVzJWRfX21hcHBpbmdzX19pbnRlcm5hbDJiYXNlQXNzZXRJZF9fCQABpAAAAAEFAAAAEWludGVybmFsQmFzZUFzc2V0AQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABxrZXlNYXBwaW5nc1NoYXJlMmJhc2VBc3NldElkAAAAAQAAAA1zaGFyZUFzc2V0U3RyCQABLAAAAAICAAAAJSVzJXMlc19fbWFwcGluZ3NfX3NoYXJlMmJhc2VBc3NldElkX18FAAAADXNoYXJlQXNzZXRTdHIBAAAAHGtleU1hcHBpbmdzQmFzZUFzc2V0MnNoYXJlSWQAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAACUlcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyc2hhcmVJZF9fBQAAAAxiYXNlQXNzZXRTdHIBAAAAF2tleVNodXRkb3duUHV0T3BlcmF0aW9uAAAAAQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAASwAAAACAgAAABclcyVzJWRfX3NodXRkb3duX19wdXRfXwUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIBAAAAEmtleVNodXRkb3duTWFuYWdlcgAAAAEAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAbJXMlcyVkX19zaHV0ZG93bl9fbWFuYWdlcl9fBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgEAAAASa2V5VG9wVXBDdXJyZW50SWR4AAAAAQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAASwAAAACAgAAABslcyVzJWRfX3RvcHVwX19jdXJyZW50SWR4X18FAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAQAAABJrZXlUb3BVcExhc3RIZWlnaHQAAAACAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgAAAAZzZW5kZXIJAAS5AAAAAgkABEwAAAACAgAAAB8lcyVzJXMlZCVzX190b3B1cF9fbGFzdF9faGVpZ2h0CQAETAAAAAIFAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkABEwAAAACBQAAAAZzZW5kZXIFAAAAA25pbAUAAAADU0VQAQAAAA5rZXlUb3B1cE11dGV4dAAAAAEAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQABLAAAAAICAAAAFiVzJXMlZF9fdG9wdXBfX211dGV4X18FAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgEAAAAPa2V5VG9wdXBIaXN0b3J5AAAAAgAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIAAAAIdG9wdXBJZHgJAAS5AAAAAgkABEwAAAACAgAAABglcyVzJWQlZF9fdG9wdXBfX2hpc3RvcnkJAARMAAAAAgUAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQAETAAAAAIJAAGkAAAAAQUAAAAIdG9wdXBJZHgFAAAAA25pbAUAAAADU0VQAQAAABJrZXlMaW1pdHNSZW1haW5pbmcAAAABAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkAASwAAAACAgAAABslcyVzJWRfX2xpbWl0c19fcmVtYWluaW5nX18FAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgAAAAASSWR4Q2ZnU2hhcmVBc3NldElkAAAAAAAAAAABAAAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAAAAAAAAAAAAgAAAAAcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aEFzc2V0cwAAAAAAAAAAAwAAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UAAAAAAAAAAAQAAAAAFElkeENmZ0dldERlbGF5QmxvY2tzAAAAAAAAAAAFAAAAABtJZHhDZmdUb3B1cEludGVydmFsSW5CbG9ja3MAAAAAAAAAAAYAAAAAGklkeENmZ1RvcHVwTWF4TmVnYXRpdmVQYXJ0AAAAAAAAAAAHAAAAABlJZHhDZmdUb3B1cE1hbmFnZXJBZGRyZXNzAAAAAAAAAAAIAAAAABlJZHhDZmdTdWJtaXRMaW1pdHNCYXNlTWF4AAAAAAAAAAAJAAAAABtJZHhDZmdTdWJtaXRMaW1pdHNCYXNlUmVzZXQAAAAAAAAAAAoAAAAAGklkeENmZ1N1Ym1pdExpbWl0c1NoYXJlTWF4AAAAAAAAAAALAAAAABxJZHhDZmdTdWJtaXRMaW1pdHNTaGFyZVJlc2V0AAAAAAAAAAAMAQAAAAxkYXRhQXNzZXRDZmcAAAAMAAAADXNoYXJlQXNzZXRTdHIAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwAAABFkZWNpbWFsc011bHRQcmljZQAAABBnZXREZWxheUluQmxvY2tzAAAAFXRvcHVwSW50ZXJ2YWxJbkJsb2NrcwAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAAAABN0b3B1cE1hbmFnZXJBZGRyZXNzAAAAE3N1Ym1pdExpbWl0c0Jhc2VNYXgAAAAVc3VibWl0TGltaXRzQmFzZVJlc2V0AAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4AAAAFnN1Ym1pdExpbWl0c1NoYXJlUmVzZXQJAAS5AAAAAgkABEwAAAACAgAAABglcyVkJWQlZCVkJWQlZCVzJWQlZCVkJWQJAARMAAAAAgUAAAANc2hhcmVBc3NldFN0cgkABEwAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACCQABpAAAAAEFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAARMAAAAAgkAAaQAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQkABEwAAAACCQABpAAAAAEFAAAAEGdldERlbGF5SW5CbG9ja3MJAARMAAAAAgkAAaQAAAABBQAAABV0b3B1cEludGVydmFsSW5CbG9ja3MJAARMAAAAAgkAAaQAAAABBQAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAkABEwAAAACBQAAABN0b3B1cE1hbmFnZXJBZGRyZXNzCQAETAAAAAIJAAGkAAAAAQUAAAATc3VibWl0TGltaXRzQmFzZU1heAkABEwAAAACCQABpAAAAAEFAAAAFXN1Ym1pdExpbWl0c0Jhc2VSZXNldAkABEwAAAACCQABpAAAAAEFAAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4CQAETAAAAAIJAAGkAAAAAQUAAAAWc3VibWl0TGltaXRzU2hhcmVSZXNldAUAAAADbmlsBQAAAANTRVAAAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQAAAAAAAAAAAQAAAAAVSWR4VG90YWxMb2NrZWRPdXRCYXNlAAAAAAAAAAACAAAAABRJZHhUb3RhbExvY2tlZEluQmFzZQAAAAAAAAAAAwAAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQAAAAAAAAAABAEAAAAPZGF0YVRvdGFsTG9ja2VkAAAABAAAAA1pblNoYXJlQW1vdW50AAAADW91dEJhc2VBbW91bnQAAAAMaW5CYXNlQW1vdW50AAAADm91dFNoYXJlQW1vdW50CQAEuQAAAAIJAARMAAAAAgIAAAAIJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA1pblNoYXJlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAANb3V0QmFzZUFtb3VudAkABEwAAAACCQABpAAAAAEFAAAADGluQmFzZUFtb3VudAkABEwAAAACCQABpAAAAAEFAAAADm91dFNoYXJlQW1vdW50BQAAAANuaWwFAAAAA1NFUAEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAAAAA1pblNoYXJlQW1vdW50AAAADW91dEJhc2VBbW91bnQAAAAMaW5CYXNlQW1vdW50AAAADm91dFNoYXJlQW1vdW50CQAETAAAAAIA//////////8JAARMAAAAAgUAAAANaW5TaGFyZUFtb3VudAkABEwAAAACBQAAAA1vdXRCYXNlQW1vdW50CQAETAAAAAIFAAAADGluQmFzZUFtb3VudAkABEwAAAACBQAAAA5vdXRTaGFyZUFtb3VudAUAAAADbmlsAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABAAAAA2tleQQAAAAQdG90YWxMb2NrZWRBcnJheQkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQkBAAAAD2RhdGFUb3RhbExvY2tlZAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAA1NFUAkBAAAAEmRhdGFUb3RhbExvY2tlZEludAAAAAQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABVJZHhUb3RhbExvY2tlZEluU2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABVJZHhUb3RhbExvY2tlZE91dEJhc2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFklkeFRvdGFsTG9ja2VkT3V0U2hhcmUBAAAAE2NhbGNUb3RhbExvY2tlZERpZmYAAAAIAAAACWRpcmVjdGlvbgAAAA1vcGVyYXRpb25UeXBlAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAABXByaWNlAAAACXByaWNlTXVsdAAAAAhpbkFtb3VudAAAAAtiYXNlQXNzZXRJZAAAAAxzaGFyZUFzc2V0SWQEAAAAAXQJAAEsAAAAAgUAAAAJZGlyZWN0aW9uBQAAAA1vcGVyYXRpb25UeXBlAwkAAAAAAAACBQAAAAF0AgAAAAdzdWJtaXRQBAAAAAl0b3RhbERpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhpbkFtb3VudAAAAAAAAAAAAAQAAAAIdXNlckRpZmYFAAAACXRvdGFsRGlmZgkABRYAAAAEBQAAAAl0b3RhbERpZmYFAAAACHVzZXJEaWZmAAAAAAAAAAAACQACWQAAAAECAAAAAAMJAAAAAAAAAgUAAAABdAIAAAAHc3VibWl0RwQAAAAJdG90YWxEaWZmCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAUAAAAIaW5BbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACHVzZXJEaWZmBQAAAAl0b3RhbERpZmYJAAUWAAAABAUAAAAJdG90YWxEaWZmBQAAAAh1c2VyRGlmZgAAAAAAAAAAAAkAAlkAAAABAgAAAAADCQAAAAAAAAIFAAAAAXQCAAAACGV4ZWN1dGVQBAAAAAlvdXRBbW91bnQJAQAAABFjb252ZXJ0QmFzZTJTaGFyZQAAAAMFAAAACGluQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0BAAAAAl0b3RhbERpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAlvdXRBbW91bnQEAAAACHVzZXJEaWZmCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAIaW5BbW91bnQAAAAAAAAAAAAJAAUWAAAABAUAAAAJdG90YWxEaWZmBQAAAAh1c2VyRGlmZgUAAAAJb3V0QW1vdW50BQAAAAxzaGFyZUFzc2V0SWQDCQAAAAAAAAIFAAAAAXQCAAAACGV4ZWN1dGVHBAAAAAlvdXRBbW91bnQJAQAAABFjb252ZXJ0U2hhcmUyQmFzZQAAAAMFAAAACGluQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0BAAAAAl0b3RhbERpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAAAAAAAAAABQAAAAlvdXRBbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACHVzZXJEaWZmCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAUAAAAIaW5BbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAUWAAAABAUAAAAJdG90YWxEaWZmBQAAAAh1c2VyRGlmZgUAAAAJb3V0QW1vdW50BQAAAAtiYXNlQXNzZXRJZAMJAAAAAAAAAgUAAAABdAIAAAAFdG9wdXAEAAAAEHRvdGFsTG9ja2VkQXJyYXkJAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAXdG90YWxMb2NrZWRJbkJhc2VBbW91bnQJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAUSWR4VG90YWxMb2NrZWRJbkJhc2UEAAAAGHRvdGFsTG9ja2VkSW5TaGFyZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABVJZHhUb3RhbExvY2tlZEluU2hhcmUEAAAACXRvdGFsRGlmZgkBAAAAEmRhdGFUb3RhbExvY2tlZEludAAAAAQFAAAAGHRvdGFsTG9ja2VkSW5TaGFyZUFtb3VudAkAAGgAAAACAP//////////CQEAAAARY29udmVydFNoYXJlMkJhc2UAAAADBQAAABh0b3RhbExvY2tlZEluU2hhcmVBbW91bnQFAAAABXByaWNlBQAAAAlwcmljZU11bHQFAAAAF3RvdGFsTG9ja2VkSW5CYXNlQW1vdW50CQAAaAAAAAIA//////////8JAQAAABFjb252ZXJ0QmFzZTJTaGFyZQAAAAMFAAAAF3RvdGFsTG9ja2VkSW5CYXNlQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0CQAFFgAAAAQFAAAACXRvdGFsRGlmZgUAAAADbmlsAAAAAAAAAAAACQACWQAAAAECAAAAAAkAAAIAAAABCQABLAAAAAICAAAAEVVuc3VwcG9ydGVkIFR5cGUgBQAAAAF0AQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwAAAAZhY3Rpb24AAAADa2V5AAAABGRpZmYKAQAAAAZVUERBVEUAAAACAAAAAWEAAAABYgMJAAAAAAAAAgUAAAAGYWN0aW9uAgAAAAlJTkNSRU1FTlQJAABkAAAAAgUAAAABYQUAAAABYgMJAAAAAAAAAgUAAAAGYWN0aW9uAgAAAAlERUNSRU1FTlQJAABlAAAAAgUAAAABYQUAAAABYgkAAAIAAAABCQABLAAAAAICAAAAE1Vuc3VwcG9ydGVkIGFjdGlvbiAFAAAABmFjdGlvbgQAAAAJZGF0YUFycmF5CQEAAAAPcmVhZFRvdGFsTG9ja2VkAAAAAQUAAAADa2V5CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkJAQAAAA9kYXRhVG90YWxMb2NrZWQAAAAECQEAAAAGVVBEQVRFAAAAAgkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQkAAZEAAAACBQAAAARkaWZmBQAAABVJZHhUb3RhbExvY2tlZEluU2hhcmUJAQAAAAZVUERBVEUAAAACCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAVSWR4VG90YWxMb2NrZWRPdXRCYXNlCQABkQAAAAIFAAAABGRpZmYFAAAAFUlkeFRvdGFsTG9ja2VkT3V0QmFzZQkBAAAABlVQREFURQAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQkAAZEAAAACBQAAAARkaWZmBQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQkBAAAABlVQREFURQAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABZJZHhUb3RhbExvY2tlZE91dFNoYXJlCQABkQAAAAIFAAAABGRpZmYFAAAAFklkeFRvdGFsTG9ja2VkT3V0U2hhcmUBAAAADGtleU9wZXJhdGlvbgAAAAQAAAANb3BlcmF0aW9uVHlwZQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQAEuQAAAAIJAARMAAAAAgIAAAAIJXMlZCVzJXMJAARMAAAAAgUAAAANb3BlcmF0aW9uVHlwZQkABEwAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAR0eElkBQAAAANuaWwFAAAAA1NFUAAAAAANSWR4T3BlclN0YXR1cwAAAAAAAAAAAQAAAAAPSWR4T3BlckluQW1vdW50AAAAAAAAAAACAAAAAAxJZHhPcGVyUHJpY2UAAAAAAAAAAAMAAAAAEElkeE9wZXJPdXRBbW91bnQAAAAAAAAAAAQAAAAAEklkeE9wZXJTdGFydEhlaWdodAAAAAAAAAAABQAAAAAVSWR4T3BlclN0YXJ0VGltZXN0YW1wAAAAAAAAAAAGAAAAABBJZHhPcGVyRW5kSGVpZ2h0AAAAAAAAAAAHAAAAABNJZHhPcGVyRW5kVGltZXN0YW1wAAAAAAAAAAAIAAAAABVJZHhPcGVyVG9wdXBVbmxvY2tJZHgAAAAAAAAAAAkBAAAAHnByaXZhdGVEYXRhT3BlcmF0aW9uQWxsU3RyaW5ncwAAAAkAAAAGc3RhdHVzAAAADWluQXNzZXRBbW91bnQAAAAFcHJpY2UAAAAOb3V0QXNzZXRBbW91bnQAAAALc3RhcnRIZWlnaHQAAAAOc3RhcnRUaW1lc3RhbXAAAAAJZW5kSGVpZ2h0AAAADGVuZFRpbWVzdGFtcAAAAARsb2NrCQAEuQAAAAIJAARMAAAAAgIAAAASJXMlZCVkJWQlZCVkJWQlZCVkCQAETAAAAAIFAAAABnN0YXR1cwkABEwAAAACBQAAAA1pbkFzc2V0QW1vdW50CQAETAAAAAIFAAAABXByaWNlCQAETAAAAAIFAAAADm91dEFzc2V0QW1vdW50CQAETAAAAAIFAAAAC3N0YXJ0SGVpZ2h0CQAETAAAAAIFAAAADnN0YXJ0VGltZXN0YW1wCQAETAAAAAIFAAAACWVuZEhlaWdodAkABEwAAAACBQAAAAxlbmRUaW1lc3RhbXAJAARMAAAAAgUAAAAEbG9jawUAAAADbmlsBQAAAANTRVABAAAADWRhdGFPcGVyYXRpb24AAAAJAAAABnN0YXR1cwAAAA1pbkFzc2V0QW1vdW50AAAABXByaWNlAAAADm91dEFzc2V0QW1vdW50AAAAC3N0YXJ0SGVpZ2h0AAAADnN0YXJ0VGltZXN0YW1wAAAACWVuZEhlaWdodAAAAAxlbmRUaW1lc3RhbXAAAAAOdG9wdXBVbmxvY2tJZHgJAQAAAB5wcml2YXRlRGF0YU9wZXJhdGlvbkFsbFN0cmluZ3MAAAAJBQAAAAZzdGF0dXMJAAGkAAAAAQUAAAANaW5Bc3NldEFtb3VudAkAAaQAAAABBQAAAAVwcmljZQkAAaQAAAABBQAAAA5vdXRBc3NldEFtb3VudAkAAaQAAAABBQAAAAtzdGFydEhlaWdodAkAAaQAAAABBQAAAA5zdGFydFRpbWVzdGFtcAkAAaQAAAABBQAAAAllbmRIZWlnaHQJAAGkAAAAAQUAAAAMZW5kVGltZXN0YW1wCQABpAAAAAEFAAAADnRvcHVwVW5sb2NrSWR4AQAAABxkYXRhT3BlcmF0aW9uRXhlY3V0aW9uVXBkYXRlAAAABAAAAA1jdXJyT3BlckFycmF5AAAACW5ld1N0YXR1cwAAAAhuZXdQcmljZQAAAAxuZXdPdXRBbW91bnQJAQAAAB5wcml2YXRlRGF0YU9wZXJhdGlvbkFsbFN0cmluZ3MAAAAJBQAAAAluZXdTdGF0dXMJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAAPSWR4T3BlckluQW1vdW50CQABpAAAAAEFAAAACG5ld1ByaWNlCQABpAAAAAEFAAAADG5ld091dEFtb3VudAkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAABJJZHhPcGVyU3RhcnRIZWlnaHQJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAAVSWR4T3BlclN0YXJ0VGltZXN0YW1wCQABpAAAAAEFAAAABmhlaWdodAkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAABVJZHhPcGVyVG9wdXBVbmxvY2tJZHgBAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEAAAAMYmFzZUFzc2V0U3RyBAAAAANrZXkJAQAAAAtrZXlBc3NldENmZwAAAAEFAAAADGJhc2VBc3NldFN0cgkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQUAAAADa2V5BQAAAANTRVAAAAAAFklkeExpbWl0c1JlbWFpbmluZ0Jhc2UAAAAAAAAAAAEAAAAAF0lkeExpbWl0c1JlbWFpbmluZ1NoYXJlAAAAAAAAAAACAQAAABpSZW1haW5pbmdMaW1pdHNTdHJpbmdFbnRyeQAAAAMAAAADa2V5AAAAEmJhc2VSZW1haW5pbmdMaW1pdAAAABNzaGFyZVJlbWFpbmluZ0xpbWl0CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkJAAS5AAAAAgkABEwAAAACAgAAAAQlZCVkCQAETAAAAAIJAAGkAAAAAQUAAAASYmFzZVJlbWFpbmluZ0xpbWl0CQAETAAAAAIJAAGkAAAAAQUAAAATc2hhcmVSZW1haW5pbmdMaW1pdAUAAAADbmlsBQAAAANTRVABAAAAElRvcHVwTXV0ZXhJbnRFbnRyeQAAAAIAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAOYWNxdWlyZWRIZWlnaHQJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOa2V5VG9wdXBNdXRleHQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOYWNxdWlyZWRIZWlnaHQBAAAAEVRvcHVwSGlzdG9yeUVudHJ5AAAAAgAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAh0b3B1cElkeAIAAAAAAQAAABBnZW5lcmljQ2FsY1ByaWNlAAAABQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAtiYXNlQXNzZXRJZAAAAA90b3BVcEJhc2VBbW91bnQAAAAMc2hhcmVBc3NldElkAAAAEWRlY2ltYWxzTXVsdFByaWNlBAAAABB0b3RhbExvY2tlZEFycmF5CQEAAAAPcmVhZFRvdGFsTG9ja2VkAAAAAQkBAAAADmtleVRvdGFsTG9ja2VkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIEAAAAGHRvdGFsTG9ja2VkT3V0QmFzZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABVJZHhUb3RhbExvY2tlZE91dEJhc2UEAAAAF3RvdGFsTG9ja2VkSW5CYXNlQW1vdW50CQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFElkeFRvdGFsTG9ja2VkSW5CYXNlBAAAABBiYXNlQXNzZXRCYWxhbmNlCQAD8AAAAAIFAAAABHRoaXMFAAAAC2Jhc2VBc3NldElkBAAAABNiYXNlQXNzZXRCYWxhbmNlV0NPCQAAZQAAAAIJAABlAAAAAgkAAGQAAAACBQAAABBiYXNlQXNzZXRCYWxhbmNlBQAAAA90b3BVcEJhc2VBbW91bnQFAAAAF3RvdGFsTG9ja2VkSW5CYXNlQW1vdW50BQAAABh0b3RhbExvY2tlZE91dEJhc2VBbW91bnQEAAAAGXRvdGFsTG9ja2VkT3V0U2hhcmVBbW91bnQJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQQAAAAYdG90YWxMb2NrZWRJblNoYXJlQW1vdW50CQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQQAAAANc2hhcmVFbWlzc2lvbggJAQAAAAV2YWx1ZQAAAAEJAAPsAAAAAQUAAAAMc2hhcmVBc3NldElkAAAACHF1YW50aXR5AwkAAGYAAAACAAAAAAAAAAAABQAAABNiYXNlQXNzZXRCYWxhbmNlV0NPCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAKmJhc2VBc3NldEJhbGFuY2VXQ08gPCAwOiBiYXNlQXNzZXRCYWxhbmNlPQkAAaQAAAABBQAAABBiYXNlQXNzZXRCYWxhbmNlAgAAABUgYmFzZUFzc2V0QmFsYW5jZVdDTz0JAAGkAAAAAQUAAAATYmFzZUFzc2V0QmFsYW5jZVdDTwQAAAAJbGFzdFByaWNlCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAADGtleVByaWNlTGFzdAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAAVwcmljZQMJAAAAAAAAAgUAAAANc2hhcmVFbWlzc2lvbgAAAAAAAAAAAAUAAAAJbGFzdFByaWNlCQAAawAAAAMFAAAAE2Jhc2VBc3NldEJhbGFuY2VXQ08FAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAAA1zaGFyZUVtaXNzaW9uCQAFFwAAAAUFAAAABXByaWNlBQAAABBiYXNlQXNzZXRCYWxhbmNlAP//////////BQAAABNiYXNlQXNzZXRCYWxhbmNlV0NPBQAAAA1zaGFyZUVtaXNzaW9uAQAAAAljYWxjUHJpY2UAAAAEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAAC2Jhc2VBc3NldElkAAAADHNoYXJlQXNzZXRJZAAAABFkZWNpbWFsc011bHRQcmljZQkBAAAAEGdlbmVyaWNDYWxjUHJpY2UAAAAFBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAALYmFzZUFzc2V0SWQAAAAAAAAAAAAFAAAADHNoYXJlQXNzZXRJZAUAAAARZGVjaW1hbHNNdWx0UHJpY2UBAAAABnN1Ym1pdAAAAAUAAAANb3BlcmF0aW9uVHlwZQAAAAFpAAAACGluQW1vdW50AAAACWluQXNzZXRJZAAAAAxiYXNlQXNzZXRTdHIEAAAACmluQXNzZXRTdHIJAAJYAAAAAQUAAAAJaW5Bc3NldElkBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAC2Jhc2VBc3NldElkCQACWQAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAIY2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADXNoYXJlQXNzZXRTdHIJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ1NoYXJlQXNzZXRJZAQAAAAMc2hhcmVBc3NldElkCQACWQAAAAEFAAAADXNoYXJlQXNzZXRTdHIEAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aEFzc2V0cwQAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAF0lkeENmZ0ludGVybmFsQmFzZUFzc2V0BAAAAAlsaW1pdHNLRVkJAQAAABJrZXlMaW1pdHNSZW1haW5pbmcAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAObGltaXRzQ2ZnQXJyYXkJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEFAAAACWxpbWl0c0tFWQUAAAADU0VQBAAAABNsaW1pdHNSZW1haW5pbmdCYXNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAObGltaXRzQ2ZnQXJyYXkFAAAAFklkeExpbWl0c1JlbWFpbmluZ0Jhc2UEAAAAFGxpbWl0c1JlbWFpbmluZ1NoYXJlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAObGltaXRzQ2ZnQXJyYXkFAAAAF0lkeExpbWl0c1JlbWFpbmluZ1NoYXJlBAAAAAxpc1B1dEJsb2NrZWQJAQAAABBnZXRCb29sZWFuT3JGYWlsAAAAAQkBAAAAF2tleVNodXRkb3duUHV0T3BlcmF0aW9uAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIDBQAAAAxpc1B1dEJsb2NrZWQJAAACAAAAAQIAAAAYcHV0IG9wZXJhdGlvbiBpcyBibG9ja2VkBAAAAA9vcGVyYXRpb25zTXV0ZXgJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAADmtleVRvcHVwTXV0ZXh0AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAAAAAAAAADCQAAZgAAAAIJAABkAAAAAgUAAAAPb3BlcmF0aW9uc011dGV4AAAAAAAAAAA8BQAAAAZoZWlnaHQJAAACAAAAAQIAAAAuc3VibWl0IG9wZXJhdGlvbnMgYXJlIGJsb2NrZWQgYnkgdG9wdXAgbWFuYWdlcgQAAAAJZGlmZlR1cGxlCQEAAAATY2FsY1RvdGFsTG9ja2VkRGlmZgAAAAgCAAAABnN1Ym1pdAUAAAANb3BlcmF0aW9uVHlwZQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAAAAAAAAAAAAAAAAAAAAAFAAAACGluQW1vdW50BQAAAAtiYXNlQXNzZXRJZAUAAAAMc2hhcmVBc3NldElkBAAAABZsaW1pdHNSZW1haW5pbmdCYXNlTmV3CQAAZQAAAAIFAAAAE2xpbWl0c1JlbWFpbmluZ0Jhc2UJAAGRAAAAAggFAAAACWRpZmZUdXBsZQAAAAJfMgUAAAAUSWR4VG90YWxMb2NrZWRJbkJhc2UEAAAAF2xpbWl0c1JlbWFpbmluZ1NoYXJlTmV3CQAAZQAAAAIFAAAAFGxpbWl0c1JlbWFpbmluZ1NoYXJlCQABkQAAAAIIBQAAAAlkaWZmVHVwbGUAAAACXzIFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQMDCQAAZgAAAAIAAAAAAAAAAAAFAAAAFmxpbWl0c1JlbWFpbmluZ0Jhc2VOZXcGCQAAZgAAAAIAAAAAAAAAAAAFAAAAF2xpbWl0c1JlbWFpbmluZ1NoYXJlTmV3CQEAAAAXZmFpbFN1Ym1pdExpbWl0c0V4Y2VlZHMAAAAEBQAAABNsaW1pdHNSZW1haW5pbmdCYXNlBQAAABRsaW1pdHNSZW1haW5pbmdTaGFyZQUAAAAWbGltaXRzUmVtYWluaW5nQmFzZU5ldwUAAAAXbGltaXRzUmVtYWluaW5nU2hhcmVOZXcEAAAAD3RvcFVwQ3VycmVudElkeAkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAABJrZXlUb3BVcEN1cnJlbnRJZHgAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABE0AAAACCQAETQAAAAIJAARNAAAAAgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5T3BlcmF0aW9uAAAABAUAAAANb3BlcmF0aW9uVHlwZQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAADnVzZXJBZGRyZXNzU3RyCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQJAQAAAA1kYXRhT3BlcmF0aW9uAAAACQIAAAAHUEVORElORwUAAAAIaW5BbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAFAAAABmhlaWdodAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAAAAAAAAAAAAAAAAAAAAAAAAAJAABkAAAAAgUAAAAPdG9wVXBDdXJyZW50SWR4AAAAAAAAAAABBQAAAANuaWwJAQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwIAAAAJSU5DUkVNRU5UCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cggFAAAACWRpZmZUdXBsZQAAAAJfMQkBAAAAFlRvdGFsTG9ja2VkU3RyaW5nRW50cnkAAAADAgAAAAlJTkNSRU1FTlQJAQAAABRrZXlUb3RhbExvY2tlZEJ5VXNlcgAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cggFAAAACWRpZmZUdXBsZQAAAAJfMgkBAAAAGlJlbWFpbmluZ0xpbWl0c1N0cmluZ0VudHJ5AAAAAwUAAAAJbGltaXRzS0VZBQAAABZsaW1pdHNSZW1haW5pbmdCYXNlTmV3BQAAABdsaW1pdHNSZW1haW5pbmdTaGFyZU5ldwEAAAAHZXhlY3V0ZQAAAAQAAAANb3BlcmF0aW9uVHlwZQAAAAxiYXNlQXNzZXRTdHIAAAAOdXNlckFkZHJlc3NTdHIAAAANc3VibWl0VHhJZFN0cgQAAAALdXNlckFkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBAAAAA1hc3NldENmZ0FycmF5CQEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAAxzaGFyZUFzc2V0SWQJAAJZAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABJJZHhDZmdTaGFyZUFzc2V0SWQEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAF0lkeENmZ0ludGVybmFsQmFzZUFzc2V0BAAAABFkZWNpbWFsc011bHRQcmljZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAF0lkeENmZ0RlY2ltYWxzTXVsdFByaWNlBAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADG9wZXJhdGlvbktleQkBAAAADGtleU9wZXJhdGlvbgAAAAQFAAAADW9wZXJhdGlvblR5cGUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANc3VibWl0VHhJZFN0cgQAAAAOb3BlcmF0aW9uQXJyYXkJAAS1AAAAAgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEFAAAADG9wZXJhdGlvbktleQUAAAADU0VQBAAAAAZzdGF0dXMJAAGRAAAAAgUAAAAOb3BlcmF0aW9uQXJyYXkFAAAADUlkeE9wZXJTdGF0dXMEAAAACGluQW1vdW50CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOb3BlcmF0aW9uQXJyYXkFAAAAD0lkeE9wZXJJbkFtb3VudAQAAAAOdG9wdXBVbmxvY2tJZHgJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5vcGVyYXRpb25BcnJheQUAAAAVSWR4T3BlclRvcHVwVW5sb2NrSWR4BAAAAAxjdXJyVG9wVXBJZHgJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAASa2V5VG9wVXBDdXJyZW50SWR4AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIEAAAADnByaWNlQnlUb3BVcElkCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAAEmtleVByaWNlQnlUb3BVcElkeAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAxjdXJyVG9wVXBJZHgDCQEAAAACIT0AAAACBQAAAAZzdGF0dXMCAAAAB1BFTkRJTkcJAQAAAA5mYWlsRXhlY3V0ZUdldAAAAAUCAAAAFVN0YXR1cyBpcyBub3QgUEVORElORwUAAAAMYmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANc3VibWl0VHhJZFN0cgUAAAANb3BlcmF0aW9uVHlwZQMJAABmAAAAAgUAAAAOdG9wdXBVbmxvY2tJZHgFAAAADGN1cnJUb3BVcElkeAkBAAAADmZhaWxFeGVjdXRlR2V0AAAABQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJT3BlckxvY2tbCQABpAAAAAEFAAAADnRvcHVwVW5sb2NrSWR4AgAAAARdID4gCQABpAAAAAEFAAAADGN1cnJUb3BVcElkeAUAAAAMYmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANc3VibWl0VHhJZFN0cgUAAAANb3BlcmF0aW9uVHlwZQQAAAAJZGlmZlR1cGxlCQEAAAATY2FsY1RvdGFsTG9ja2VkRGlmZgAAAAgCAAAAB2V4ZWN1dGUFAAAADW9wZXJhdGlvblR5cGUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA5wcmljZUJ5VG9wVXBJZAUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAACGluQW1vdW50BQAAAAtiYXNlQXNzZXRJZAUAAAAMc2hhcmVBc3NldElkBAAAAAlvdXRBbW91bnQIBQAAAAlkaWZmVHVwbGUAAAACXzMEAAAAD291dFRyYW5zZmVyRGF0YQMJAAAAAAAAAggFAAAACWRpZmZUdXBsZQAAAAJfNAUAAAALYmFzZUFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAACW91dEFtb3VudAUAAAALYmFzZUFzc2V0SWQFAAAAA25pbAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAJb3V0QW1vdW50BQAAAAxzaGFyZUFzc2V0SWQFAAAAA25pbAkABE0AAAACCQAETQAAAAIJAARNAAAAAgUAAAAPb3V0VHJhbnNmZXJEYXRhCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxvcGVyYXRpb25LZXkJAQAAABxkYXRhT3BlcmF0aW9uRXhlY3V0aW9uVXBkYXRlAAAABAUAAAAOb3BlcmF0aW9uQXJyYXkCAAAACEZJTklTSEVEBQAAAA5wcmljZUJ5VG9wVXBJZAUAAAAJb3V0QW1vdW50CQEAAAAWVG90YWxMb2NrZWRTdHJpbmdFbnRyeQAAAAMCAAAACURFQ1JFTUVOVAkBAAAADmtleVRvdGFsTG9ja2VkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIIBQAAAAlkaWZmVHVwbGUAAAACXzEJAQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwIAAAAJREVDUkVNRU5UCQEAAAAUa2V5VG90YWxMb2NrZWRCeVVzZXIAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIIBQAAAAlkaWZmVHVwbGUAAAACXzIBAAAAG3ByaXZhdGVDdXJyZW50U3lzUGFyYW1zUkVTVAAAAAEAAAAMYmFzZUFzc2V0U3RyBAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAACGNmZ0FycmF5CQEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAA1zaGFyZUFzc2V0U3RyCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdTaGFyZUFzc2V0SWQEAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABBQAAAA1zaGFyZUFzc2V0U3RyBAAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAHElkeENmZ0RlY2ltYWxzTXVsdEJvdGhBc3NldHMEAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAF0lkeENmZ0RlY2ltYWxzTXVsdFByaWNlBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAACHN5c1N0YXRlCQEAAAAJY2FsY1ByaWNlAAAABAUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAC2Jhc2VBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAFGAAAAAYJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAVwcmljZQgFAAAACHN5c1N0YXRlAAAAAl8xCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQYmFzZUFzc2V0QmFsYW5jZQgFAAAACHN5c1N0YXRlAAAAAl8yCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAACLTEIBQAAAAhzeXNTdGF0ZQAAAAJfMwkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAE2Jhc2VBc3NldEJhbGFuY2VXQ08IBQAAAAhzeXNTdGF0ZQAAAAJfNAkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADXNoYXJlRW1pc3Npb24IBQAAAAhzeXNTdGF0ZQAAAAJfNQAAAAkAAAABaQEAAAASYWRtaW5SZWdpc3RlckFzc2V0AAAADQAAAAxiYXNlQXNzZXRTdHIAAAAOc2hhcmVBc3NldE5hbWUAAAAPc2hhcmVBc3NldERlc2NyAAAAEGdldERlbGF5aW5CbG9ja3MAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwAAAApzdGFydFByaWNlAAAAFXRvcHVwSW50ZXJ2YWxJbkJsb2NrcwAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAAAABN0b3B1cE1hbmFnZXJBZGRyZXNzAAAAE3N1Ym1pdExpbWl0c0Jhc2VNYXgAAAAVc3VibWl0TGltaXRzQmFzZVJlc2V0AAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4AAAAFnN1Ym1pdExpbWl0c1NoYXJlUmVzZXQEAAAAC2Jhc2VBc3NldElkCQACWQAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAIZGVjaW1hbHMICQEAAAAFdmFsdWUAAAABCQAD7AAAAAEFAAAAC2Jhc2VBc3NldElkAAAACGRlY2ltYWxzBAAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzCQAAbAAAAAYAAAAAAAAAAAoAAAAAAAAAAAAFAAAACGRlY2ltYWxzAAAAAAAAAAAAAAAAAAAAAAAABQAAAARET1dOBAAAABFkZWNpbWFsc011bHRQcmljZQkAAGgAAAACCQAAaAAAAAIAAAAAAAAAAGQAAAAAAAAAA+gAAAAAAAAAA+gEAAAAGHRvcHVwTWF4TmVnYXRpdmVQZXJjZW50cwkAAGsAAAADBQAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAAAAAAAAAAAZAUAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwQAAAAQYmFzZUFzc2V0QmFsYW5jZQkAA/AAAAACBQAAAAR0aGlzBQAAAAtiYXNlQXNzZXRJZAMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAEdGhpcwkAAAIAAAABAgAAABJwZXJtaXNzaW9ucyBkZW5pZWQDCQAAAAAAAAIFAAAAEGJhc2VBc3NldEJhbGFuY2UAAAAAAAAAAAAJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAQlAAAAAQUAAAAEdGhpcwIAAAAiIG11c3QgaGF2ZSBhbnkgaW5pdGlhbCBiYWxhbmNlIG9mIAUAAAAMYmFzZUFzc2V0U3RyAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwkBAAAAC2tleUFzc2V0Q2ZnAAAAAQUAAAAMYmFzZUFzc2V0U3RyCQAAAgAAAAEJAAEsAAAAAgUAAAAMYmFzZUFzc2V0U3RyAgAAABwgaGFzIGJlZW4gYWxyZWFkeSByZWdpc3RlcmVkAwkBAAAAAiE9AAAAAgkABCUAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAABZzaHV0ZG93bk1hbmFnZXJBZGRyZXNzBQAAABZzaHV0ZG93bk1hbmFnZXJBZGRyZXNzCQAAAgAAAAECAAAAHmludmFsaWQgc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwMJAQAAAAIhPQAAAAIJAAQlAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwUAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwkAAAIAAAABAgAAABtpbnZhbGlkIHRvcHVwTWFuYWdlckFkZHJlc3MDCQAAZgAAAAIAAAAAAAAAAAAFAAAAEGdldERlbGF5aW5CbG9ja3MJAAACAAAAAQkAASwAAAACAgAAABlpbnZhbGlkIGdldERlbGF5aW5CbG9ja3M9CQABpAAAAAEFAAAAEGdldERlbGF5aW5CbG9ja3MDAwkAAGcAAAACAAAAAAAAAAAABQAAABh0b3B1cE1heE5lZ2F0aXZlUGVyY2VudHMGCQAAZwAAAAIFAAAAGHRvcHVwTWF4TmVnYXRpdmVQZXJjZW50cwAAAAAAAAAAYwkAAAIAAAABAgAAACZpbnZhbGlkIHRvcHVwTWF4TmVnYXRpdmVQYXJ0IHBhcmFtZXRlcgQAAAAPc2hhcmVJbml0QW1vdW50CQEAAAARY29udmVydEJhc2UyU2hhcmUAAAADBQAAABBiYXNlQXNzZXRCYWxhbmNlBQAAAApzdGFydFByaWNlBQAAABFkZWNpbWFsc011bHRQcmljZQQAAAAVc2hhcmVBc3NldElzc3VlQWN0aW9uCQAEQgAAAAUFAAAADnNoYXJlQXNzZXROYW1lBQAAAA9zaGFyZUFzc2V0RGVzY3IFAAAAD3NoYXJlSW5pdEFtb3VudAUAAAAIZGVjaW1hbHMGBAAAAAxzaGFyZUFzc2V0SWQJAAQ4AAAAAQUAAAAVc2hhcmVBc3NldElzc3VlQWN0aW9uBAAAAA1zaGFyZUFzc2V0U3RyCQACWAAAAAEFAAAADHNoYXJlQXNzZXRJZAQAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAAAAAAAAAAAAAAEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABpAAAAAEFAAAAE2ludGVybmFsQmFzZUFzc2V0SWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAC2tleUFzc2V0Q2ZnAAAAAQUAAAAMYmFzZUFzc2V0U3RyCQEAAAAMZGF0YUFzc2V0Q2ZnAAAADAUAAAANc2hhcmVBc3NldFN0cgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMFAAAAEWRlY2ltYWxzTXVsdFByaWNlBQAAABBnZXREZWxheWluQmxvY2tzBQAAABV0b3B1cEludGVydmFsSW5CbG9ja3MFAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0BQAAABN0b3B1cE1hbmFnZXJBZGRyZXNzBQAAABNzdWJtaXRMaW1pdHNCYXNlTWF4BQAAABVzdWJtaXRMaW1pdHNCYXNlUmVzZXQFAAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4BQAAABZzdWJtaXRMaW1pdHNTaGFyZVJlc2V0CQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAUAAAAMYmFzZUFzc2V0U3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAMYmFzZUFzc2V0U3RyBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAca2V5TWFwcGluZ3NTaGFyZTJiYXNlQXNzZXRJZAAAAAEFAAAADXNoYXJlQXNzZXRTdHIFAAAADGJhc2VBc3NldFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAca2V5TWFwcGluZ3NCYXNlQXNzZXQyc2hhcmVJZAAAAAEFAAAADGJhc2VBc3NldFN0cgUAAAANc2hhcmVBc3NldFN0cgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAF2tleVNodXRkb3duUHV0T3BlcmF0aW9uAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlTaHV0ZG93bk1hbmFnZXIAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAACQAAZAAAAAIFAAAAE2ludGVybmFsQmFzZUFzc2V0SWQAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAKc3RhcnRQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAMFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAApzdGFydFByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASa2V5VG9wVXBDdXJyZW50SWR4AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAAAAAAAAAJAARMAAAAAgkBAAAAGlJlbWFpbmluZ0xpbWl0c1N0cmluZ0VudHJ5AAAAAwkBAAAAEmtleUxpbWl0c1JlbWFpbmluZwAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAABNzdWJtaXRMaW1pdHNCYXNlTWF4BQAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAkABEwAAAACBQAAABVzaGFyZUFzc2V0SXNzdWVBY3Rpb24FAAAAA25pbAAAAAFpAQAAAAtzaHV0ZG93blB1dAAAAAEAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAQAAAAWaW50ZXJuYWxCYXNlQXNzZXRJZFN0cgkAAaQAAAABBQAAABNpbnRlcm5hbEJhc2VBc3NldElkBAAAAA5iYXNlQXNzZXRJZFN0cgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAQAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABJrZXlTaHV0ZG93bk1hbmFnZXIAAAABBQAAABZpbnRlcm5hbEJhc2VBc3NldElkU3RyAwkAAGYAAAACAAAAAAAAAAABCQABMQAAAAEFAAAADmJhc2VBc3NldElkU3RyCQAAAgAAAAECAAAAG2ludmFsaWQgaW50ZXJuYWxCYXNlQXNzZXRJZAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABZzaHV0ZG93bk1hbmFnZXJBZGRyZXNzCQAAAgAAAAECAAAADWFjY2VzcyBkZW5pZWQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAABdrZXlTaHV0ZG93blB1dE9wZXJhdGlvbgAAAAEJAAGkAAAAAQUAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAYFAAAAA25pbAAAAAFpAQAAAAlzdWJtaXRQdXQAAAAABAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACGluQW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAJaW5Bc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAADGJhc2VBc3NldFN0cgkAAlgAAAABBQAAAAlpbkFzc2V0SWQJAQAAAAZzdWJtaXQAAAAFAgAAAAFQBQAAAAFpBQAAAAhpbkFtb3VudAUAAAAJaW5Bc3NldElkBQAAAAxiYXNlQXNzZXRTdHIAAAABaQEAAAAJc3VibWl0R2V0AAAAAAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAhpbkFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQEAAAACWluQXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAA1zaGFyZUFzc2V0U3RyCQACWAAAAAEFAAAACWluQXNzZXRJZAQAAAAMYmFzZUFzc2V0U3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAHGtleU1hcHBpbmdzU2hhcmUyYmFzZUFzc2V0SWQAAAABBQAAAA1zaGFyZUFzc2V0U3RyCQEAAAAGc3VibWl0AAAABQIAAAABRwUAAAABaQUAAAAIaW5BbW91bnQFAAAACWluQXNzZXRJZAUAAAAMYmFzZUFzc2V0U3RyAAAAAWkBAAAACmV4ZWN1dGVQdXQAAAADAAAADGJhc2VBc3NldFN0cgAAAA51c2VyQWRkcmVzc1N0cgAAAA1zdWJtaXRUeElkU3RyCQEAAAAHZXhlY3V0ZQAAAAQCAAAAAVAFAAAADGJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADXN1Ym1pdFR4SWRTdHIAAAABaQEAAAAKZXhlY3V0ZUdldAAAAAMAAAAMYmFzZUFzc2V0U3RyAAAADnVzZXJBZGRyZXNzU3RyAAAADXN1Ym1pdFR4SWRTdHIJAQAAAAdleGVjdXRlAAAABAIAAAABRwUAAAAMYmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANc3VibWl0VHhJZFN0cgAAAAFpAQAAAA9vcGVyYXRpb25zTXV0ZXgAAAABAAAADGJhc2VBc3NldFN0cgQAAAANYXNzZXRDZmdBcnJheQkBAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAWdG9wVXBNYW5hZ2VyQWRkcmVzc1N0cgkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABlJZHhDZmdUb3B1cE1hbmFnZXJBZGRyZXNzBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQEAAAAUZmFpbFRvcHVwTWFuYWdlck9ubHkAAAABBQAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQAETAAAAAIJAQAAABJUb3B1cE11dGV4SW50RW50cnkAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAAMdG9wVXBCYWxhbmNlAAAAAgAAAAxiYXNlQXNzZXRTdHIAAAAGYW1vdW50BAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADWFzc2V0Q2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAEklkeENmZ1NoYXJlQXNzZXRJZAQAAAAJcHJpY2VNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UEAAAADWJvdGhBc3NldE11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABxJZHhDZmdEZWNpbWFsc011bHRCb3RoQXNzZXRzBAAAABV0b3B1cEludGVydmFsSW5CbG9ja3MJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABtJZHhDZmdUb3B1cEludGVydmFsSW5CbG9ja3MEAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAaSWR4Q2ZnVG9wdXBNYXhOZWdhdGl2ZVBhcnQEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAF0lkeENmZ0ludGVybmFsQmFzZUFzc2V0BAAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAGUlkeENmZ1RvcHVwTWFuYWdlckFkZHJlc3MEAAAAEnRvcFVwQ3VycmVudElkeEtFWQkBAAAAEmtleVRvcFVwQ3VycmVudElkeAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAAxwcmV2VG9wVXBJZHgJAQAAAAxnZXRJbnRPckZhaWwAAAABBQAAABJ0b3BVcEN1cnJlbnRJZHhLRVkEAAAAD2N1cnJlbnRUb3BVcElkeAkAAGQAAAACBQAAAAxwcmV2VG9wVXBJZHgAAAAAAAAAAAEEAAAABXZhbGlkAwkAAGYAAAACBQAAAAZhbW91bnQAAAAAAAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKcG10QXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAgUAAAALYmFzZUFzc2V0SWQFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAA+YXR0YWNoZWQgcGF5bWVudCdzIGFzc2V0IGlkIGlzIE5PVCBtYXRjaGVkIHBhc3NlZCBiYXNlQXNzZXRTdHIDCQAAZgAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAgb25seSBvbmUgcGF5bWVudCBjYW4gYmUgYXR0YWNoZWQDCQEAAAACIT0AAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAGYW1vdW50CQAAAgAAAAECAAAAPWF0dGFjaGVkIHBheW1lbnQuYW1vdW50IGlzIE5PVCBtYXRjaGVkIHBhc3NlZCBhbW91bnQgYXJndW1lbnQGAwkAAGYAAAACAAAAAAAAAAAABQAAAAZhbW91bnQEAAAAC2Jhc2VCYWxhbmNlCQAD8AAAAAIFAAAABHRoaXMFAAAAC2Jhc2VBc3NldElkBAAAAA1hbGxvd2VkQW1vdW50CQAAawAAAAMFAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0BQAAAAtiYXNlQmFsYW5jZQUAAAANYm90aEFzc2V0TXVsdAMJAABmAAAAAgkBAAAAAS0AAAABBQAAAAZhbW91bnQFAAAADWFsbG93ZWRBbW91bnQJAAACAAAAAQkAASwAAAACAgAAAC90b3B1cCBuZWdhdGl2ZSBhbW91bnQgY291bGRuJ3QgYmUgZ3JlYXRlciB0aGFuIAkAAaQAAAABBQAAAA1hbGxvd2VkQW1vdW50BgkAAAIAAAABAgAAABp6ZXJvIGFtb3VudCBpcyBub3QgYWxsb3dlZAQAAAASdG9wVXBMYXN0SGVpZ2h0S0VZCQEAAAASa2V5VG9wVXBMYXN0SGVpZ2h0AAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA90b3BVcExhc3RIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAASdG9wVXBMYXN0SGVpZ2h0S0VZAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAFnRvcFVwTWFuYWdlckFkZHJlc3NTdHIJAQAAABRmYWlsVG9wdXBNYW5hZ2VyT25seQAAAAEFAAAAFnRvcFVwTWFuYWdlckFkZHJlc3NTdHIDCQEAAAABIQAAAAEFAAAABXZhbGlkCQAAAgAAAAECAAAAEXZhbGlkYXRpb24gZmFpbGVkAwkAAGYAAAACBQAAABV0b3B1cEludGVydmFsSW5CbG9ja3MJAABlAAAAAgUAAAAGaGVpZ2h0BQAAAA90b3BVcExhc3RIZWlnaHQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAADDEgdG9wdXAgcGVyIAkAAaQAAAABBQAAABV0b3B1cEludGVydmFsSW5CbG9ja3MCAAAAKCBibG9ja3MgZnJvbSB0aGUgc2FtZSBhZGRyZXNzIGlzIGFsbG93ZWQEAAAABXByaWNlCAkBAAAAEGdlbmVyaWNDYWxjUHJpY2UAAAAFBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAALYmFzZUFzc2V0SWQFAAAABmFtb3VudAUAAAAMc2hhcmVBc3NldElkBQAAAAlwcmljZU11bHQAAAACXzEEAAAACWRpZmZUdXBsZQkBAAAAE2NhbGNUb3RhbExvY2tlZERpZmYAAAAIAgAAAAV0b3B1cAIAAAAABQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAFcHJpY2UFAAAACXByaWNlTXVsdAAAAAAAAAAAAAUAAAALYmFzZUFzc2V0SWQFAAAADHNoYXJlQXNzZXRJZAQAAAAOdG9wdXBUb3RhbERpZmYIBQAAAAlkaWZmVHVwbGUAAAACXzEEAAAAC3ByaWNlQXRoS0VZCQEAAAALa2V5UHJpY2VBVEgAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAMcHJldlByaWNlQVRICQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAC3ByaWNlQXRoS0VZAAAAAAAAAAAACQAETgAAAAIJAARNAAAAAgkABE0AAAACCQAETQAAAAIJAARNAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAMFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEmtleVByaWNlQnlUb3BVcElkeAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA9jdXJyZW50VG9wVXBJZHgFAAAABXByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJ0b3BVcEN1cnJlbnRJZHhLRVkFAAAAD2N1cnJlbnRUb3BVcElkeAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALcHJpY2VBdGhLRVkDCQAAZgAAAAIFAAAABXByaWNlBQAAAAxwcmV2UHJpY2VBVEgFAAAABXByaWNlBQAAAAxwcmV2UHJpY2VBVEgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEnRvcFVwTGFzdEhlaWdodEtFWQUAAAAGaGVpZ2h0BQAAAANuaWwJAQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwIAAAAJREVDUkVNRU5UCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdG9wdXBUb3RhbERpZmYJAQAAABJUb3B1cE11dGV4SW50RW50cnkAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAAAAAAAAAkBAAAABEJ1cm4AAAACBQAAAAxzaGFyZUFzc2V0SWQJAAGRAAAAAgUAAAAOdG9wdXBUb3RhbERpZmYFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQJAQAAAAEtAAAAAQkAAZEAAAACBQAAAA50b3B1cFRvdGFsRGlmZgUAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQYDCQAAZgAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAQAAAAEtAAAAAQUAAAAGYW1vdW50BQAAAAtiYXNlQXNzZXRJZAUAAAADbmlsBQAAAANuaWwAAAABaQEAAAAUY3VycmVudFN5c1BhcmFtc1JFU1QAAAABAAAADGJhc2VBc3NldFN0cgQAAAANc3lzU3RhdGVUdXBsZQkBAAAAG3ByaXZhdGVDdXJyZW50U3lzUGFyYW1zUkVTVAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAFcHJpY2UICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfMQAAAAV2YWx1ZQQAAAARZGVjaW1hbHNNdWx0UHJpY2UICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfMgAAAAV2YWx1ZQQAAAAQYmFzZUFzc2V0QmFsYW5jZQgIBQAAAA1zeXNTdGF0ZVR1cGxlAAAAAl8zAAAABXZhbHVlBAAAABV0b3RhbExvY2tlZEJhc2VBbW91bnQICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfNAAAAAV2YWx1ZQQAAAATYmFzZUFzc2V0QmFsYW5jZVdDTwgIBQAAAA1zeXNTdGF0ZVR1cGxlAAAAAl81AAAABXZhbHVlBAAAAA1zaGFyZUVtaXNzaW9uCAgFAAAADXN5c1N0YXRlVHVwbGUAAAACXzYAAAAFdmFsdWUEAAAACHJlc3REYXRhCQAEuQAAAAIJAARMAAAAAgIAAAAZc3RhcnRDdXJyZW50U3lzUGFyYW1zUkVTVAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAARMAAAAAgkAAaQAAAABBQAAABBiYXNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAVdG90YWxMb2NrZWRCYXNlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAATYmFzZUFzc2V0QmFsYW5jZVdDTwkABEwAAAACCQABpAAAAAEFAAAADXNoYXJlRW1pc3Npb24JAARMAAAAAgIAAAAXZW5kQ3VycmVudFN5c1BhcmFtc1JFU1QFAAAAA25pbAUAAAADU0VQCQAAAgAAAAEFAAAACHJlc3REYXRhAAAAADi3EUU=", "chainId": 84, "height": 1454597, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: F6XVGrwNfKoawn776NeSWJoTD3C1VpuxQxipH3TbBp3F Next: 24w2yoHRoB44ajZVdmtj6acdRUA8Vhf5Xr9niZFGveAw Diff:
OldNewDifferences
1818 func l (m,n,o,p) = throw((((((((("submit operation limits have been reached: " + " remainingBase=") + toString(m)) + " remainingShare=") + toString(n)) + " newRemainingBase=") + toString(o)) + " newRemainingShare=") + toString(p)))
1919
2020
21-func q (r,s,t) = fraction(r, s, t)
21+func q (r) = throw((("opertion denied: only topUpManager=" + r) + " can send such transactions"))
2222
2323
24-func u (v,s,t) = fraction(v, t, s)
24+func s (t,u,v) = fraction(t, u, v)
2525
2626
27-func w (h) = ("%s%s%s__config__asset__" + h)
27+func w (x,u,v) = fraction(x, v, u)
2828
2929
30-func x () = "%s__nextInternalAssetId"
30+func y (h) = ("%s%s%s__config__asset__" + h)
3131
3232
33-func y (z) = ("%s%s%d__price__last__" + z)
33+func z () = "%s__nextInternalAssetId"
3434
3535
36-func A (z) = ("%s%s%d__price__ath__" + z)
36+func A (B) = ("%s%s%d__price__last__" + B)
3737
3838
39-func B (C,D) = makeString(["%s%s%d%d__price__byTopUpIdx", C, toString(D)], a)
39+func C (B) = ("%s%s%d__price__ath__" + B)
4040
4141
42-func E (z,F,G) = makeString(["%s%s%d%d%d__price__history", z, toString(F), toString(G)], a)
42+func D (E,F) = makeString(["%s%s%d%d__price__byTopUpIdx", E, toString(F)], a)
4343
4444
45-func H (z) = ("%s%s%d__total__locked__" + z)
45+func G (B,H,I) = makeString(["%s%s%d%d%d__price__history", B, toString(H), toString(I)], a)
4646
4747
48-func I (C,i) = makeString(["%s%s%d%s__total__locked", C, i], a)
48+func J (B) = ("%s%s%d__total__locked__" + B)
4949
5050
51-func J (K) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(K))
51+func K (E,i) = makeString(["%s%s%d%s__total__locked", E, i], a)
5252
5353
54-func L (h) = ("%s%s%s__mappings__baseAsset2internalId__" + h)
54+func L (M) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(M))
5555
5656
57-func M (N) = ("%s%s%s__mappings__share2baseAssetId__" + N)
57+func N (h) = ("%s%s%s__mappings__baseAsset2internalId__" + h)
5858
5959
60-func O (h) = ("%s%s%s__mappings__baseAsset2shareId__" + h)
60+func O (P) = ("%s%s%s__mappings__share2baseAssetId__" + P)
6161
6262
63-func P (C) = ("%s%s%d__shutdown__put__" + C)
63+func Q (h) = ("%s%s%s__mappings__baseAsset2shareId__" + h)
6464
6565
66-func Q (C) = ("%s%s%d__shutdown__manager__" + C)
66+func R (E) = ("%s%s%d__shutdown__put__" + E)
6767
6868
69-func R (C) = ("%s%s%d__topup__currentIdx__" + C)
69+func S (E) = ("%s%s%d__shutdown__manager__" + E)
7070
7171
72-func S (z,T) = makeString(["%s%s%s%d%s__topup__last__height", z, T], a)
72+func T (E) = ("%s%s%d__topup__currentIdx__" + E)
7373
7474
75-func U (z) = ("%s%s%d__limits__remaining__" + z)
75+func U (B,V) = makeString(["%s%s%s%d%s__topup__last__height", B, V], a)
7676
7777
78-let V = 1
79-
80-let W = 2
81-
82-let X = 3
83-
84-let Y = 4
85-
86-let Z = 5
87-
88-let aa = 6
89-
90-let ab = 7
91-
92-let ac = 8
93-
94-let ad = 9
95-
96-let ae = 10
97-
98-let af = 11
99-
100-let ag = 12
101-
102-func ah (N,C,ai,aj,ak,al,am,an,ao,ap,aq,ar) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", N, C, toString(ai), toString(aj), toString(ak), toString(al), toString(am), an, toString(ao), toString(ap), toString(aq), toString(ar)], a)
78+func W (B) = ("%s%s%d__topup__mutex__" + B)
10379
10480
105-let as = 1
106-
107-let at = 2
108-
109-let au = 3
110-
111-let av = 4
112-
113-func aw (ax,ay,az,aA) = makeString(["%d%d%d%d", toString(ax), toString(ay), toString(az), toString(aA)], a)
81+func X (B,Y) = makeString(["%s%s%d%d__topup__history", B, toString(Y)], a)
11482
11583
116-func aB (ax,ay,az,aA) = [-1, ax, ay, az, aA]
84+func Z (B) = ("%s%s%d__limits__remaining__" + B)
11785
11886
119-func aC (c) = {
120- let aD = split(valueOrElse(getString(this, c), aw(0, 0, 0, 0)), a)
121- aB(parseIntValue(aD[as]), parseIntValue(aD[at]), parseIntValue(aD[au]), parseIntValue(aD[av]))
87+let aa = 1
88+
89+let ab = 2
90+
91+let ac = 3
92+
93+let ad = 4
94+
95+let ae = 5
96+
97+let af = 6
98+
99+let ag = 7
100+
101+let ah = 8
102+
103+let ai = 9
104+
105+let aj = 10
106+
107+let ak = 11
108+
109+let al = 12
110+
111+func am (P,E,an,ao,ap,aq,ar,r,as,at,au,av) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", P, E, toString(an), toString(ao), toString(ap), toString(aq), toString(ar), r, toString(as), toString(at), toString(au), toString(av)], a)
112+
113+
114+let aw = 1
115+
116+let ax = 2
117+
118+let ay = 3
119+
120+let az = 4
121+
122+func aA (aB,aC,aD,aE) = makeString(["%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE)], a)
123+
124+
125+func aF (aB,aC,aD,aE) = [-1, aB, aC, aD, aE]
126+
127+
128+func aG (c) = {
129+ let aH = split(valueOrElse(getString(this, c), aA(0, 0, 0, 0)), a)
130+ aF(parseIntValue(aH[aw]), parseIntValue(aH[ax]), parseIntValue(aH[ay]), parseIntValue(aH[az]))
122131 }
123132
124133
125-func aE (aF,k,C,s,t,aG,aH,aI) = {
126- let aJ = (aF + k)
127- if ((aJ == "submitP"))
134+func aI (aJ,k,E,u,v,aK,aL,aM) = {
135+ let aN = (aJ + k)
136+ if ((aN == "submitP"))
128137 then {
129- let aK = aB(0, 0, aG, 0)
130- let aL = aK
131- $Tuple4(aK, aL, 0, fromBase58String(""))
138+ let aO = aF(0, 0, aK, 0)
139+ let aP = aO
140+ $Tuple4(aO, aP, 0, fromBase58String(""))
132141 }
133- else if ((aJ == "submitG"))
142+ else if ((aN == "submitG"))
134143 then {
135- let aK = aB(aG, 0, 0, 0)
136- let aL = aK
137- $Tuple4(aK, aL, 0, fromBase58String(""))
144+ let aO = aF(aK, 0, 0, 0)
145+ let aP = aO
146+ $Tuple4(aO, aP, 0, fromBase58String(""))
138147 }
139- else if ((aJ == "executeP"))
148+ else if ((aN == "executeP"))
140149 then {
141- let aM = u(aG, s, t)
142- let aK = aB(0, 0, 0, aM)
143- let aL = aB(0, 0, aG, 0)
144- $Tuple4(aK, aL, aM, aI)
150+ let aQ = w(aK, u, v)
151+ let aO = aF(0, 0, 0, aQ)
152+ let aP = aF(0, 0, aK, 0)
153+ $Tuple4(aO, aP, aQ, aM)
145154 }
146- else if ((aJ == "executeG"))
155+ else if ((aN == "executeG"))
147156 then {
148- let aM = q(aG, s, t)
149- let aK = aB(0, aM, 0, 0)
150- let aL = aB(aG, 0, 0, 0)
151- $Tuple4(aK, aL, aM, aH)
157+ let aQ = s(aK, u, v)
158+ let aO = aF(0, aQ, 0, 0)
159+ let aP = aF(aK, 0, 0, 0)
160+ $Tuple4(aO, aP, aQ, aL)
152161 }
153- else if ((aJ == "topup"))
162+ else if ((aN == "topup"))
154163 then {
155- let aD = aC(H(C))
156- let aN = aD[au]
157- let aO = aD[as]
158- let aK = aB(aO, (-1 * q(aO, s, t)), aN, (-1 * u(aN, s, t)))
159- $Tuple4(aK, nil, 0, fromBase58String(""))
164+ let aH = aG(J(E))
165+ let aR = aH[ay]
166+ let aS = aH[aw]
167+ let aO = aF(aS, (-1 * s(aS, u, v)), aR, (-1 * w(aR, u, v)))
168+ $Tuple4(aO, nil, 0, fromBase58String(""))
160169 }
161- else throw(("Unsupported Type " + aJ))
170+ else throw(("Unsupported Type " + aN))
162171 }
163172
164173
165-func aP (aQ,c,aR) = {
166- func aS (aT,aU) = if ((aQ == "INCREMENT"))
167- then (aT + aU)
168- else if ((aQ == "DECREMENT"))
169- then (aT - aU)
170- else throw(("Unsupported action " + aQ))
174+func aT (aU,c,aV) = {
175+ func aW (aX,aY) = if ((aU == "INCREMENT"))
176+ then (aX + aY)
177+ else if ((aU == "DECREMENT"))
178+ then (aX - aY)
179+ else throw(("Unsupported action " + aU))
171180
172- let aV = aC(c)
173- StringEntry(c, aw(aS(aV[as], aR[as]), aS(aV[at], aR[at]), aS(aV[au], aR[au]), aS(aV[av], aR[av])))
181+ let aZ = aG(c)
182+ StringEntry(c, aA(aW(aZ[aw], aV[aw]), aW(aZ[ax], aV[ax]), aW(aZ[ay], aV[ay]), aW(aZ[az], aV[az])))
174183 }
175184
176185
177-func aW (k,C,aX,aY) = makeString(["%s%d%s%s", k, C, aX, aY], a)
186+func ba (k,E,bb,bc) = makeString(["%s%d%s%s", k, E, bb, bc], a)
178187
179188
180-let aZ = 1
189+let bd = 1
181190
182-let ba = 2
191+let be = 2
183192
184-let bb = 3
193+let bf = 3
185194
186-let bc = 4
195+let bg = 4
187196
188-let bd = 5
197+let bh = 5
189198
190-let be = 6
199+let bi = 6
191200
192-let bf = 7
201+let bj = 7
193202
194-let bg = 8
203+let bk = 8
195204
196-let bh = 9
205+let bl = 9
197206
198-func bi (bj,bk,s,bl,bm,bn,bo,bp,bq) = makeString(["%s%d%d%d%d%d%d%d%d", bj, bk, s, bl, bm, bn, bo, bp, bq], a)
207+func bm (bn,bo,u,bp,bq,br,bs,bt,bu) = makeString(["%s%d%d%d%d%d%d%d%d", bn, bo, u, bp, bq, br, bs, bt, bu], a)
199208
200209
201-func br (bj,bk,s,bl,bm,bn,bo,bp,bq) = bi(bj, toString(bk), toString(s), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq))
210+func bv (bn,bo,u,bp,bq,br,bs,bt,bw) = bm(bn, toString(bo), toString(u), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bw))
202211
203212
204-func bs (bt,bu,bv,bw) = bi(bu, bt[ba], toString(bv), toString(bw), bt[bd], bt[be], toString(height), toString(lastBlock.timestamp), bt[bh])
213+func bx (by,bz,bA,bB) = bm(bz, by[be], toString(bA), toString(bB), by[bh], by[bi], toString(height), toString(lastBlock.timestamp), by[bl])
205214
206215
207-func bx (h) = {
208- let c = w(h)
216+func bC (h) = {
217+ let c = y(h)
209218 split(b(c), a)
210219 }
211220
212221
213-let by = 1
222+let bD = 1
214223
215-let bz = 2
224+let bE = 2
216225
217-func bA (c,bB,bC) = StringEntry(c, makeString(["%d%d", toString(bB), toString(bC)], a))
226+func bF (c,bG,bH) = StringEntry(c, makeString(["%d%d", toString(bG), toString(bH)], a))
218227
219228
220-func bD (C,aH,bE,aI,aj) = {
221- let aD = aC(H(C))
222- let bF = aD[at]
223- let aN = aD[au]
224- let bG = assetBalance(this, aH)
225- let bH = (((bG + bE) - aN) - bF)
226- let bI = aD[av]
227- let aO = aD[as]
228- let bJ = value(assetInfo(aI)).quantity
229- let bK = (bJ + bI)
230- if ((0 > bH))
231- then throw(((("baseAssetBalanceCALC < 0: baseAssetBalance=" + toString(bG)) + " baseAssetBalanceCALC=") + toString(bH)))
229+func bI (E,bJ) = IntegerEntry(W(E), bJ)
230+
231+
232+func bK (E,Y) = ""
233+
234+
235+func bL (E,aL,bM,aM,ao) = {
236+ let aH = aG(J(E))
237+ let bN = aH[ax]
238+ let aR = aH[ay]
239+ let bO = assetBalance(this, aL)
240+ let bP = (((bO + bM) - aR) - bN)
241+ let bQ = aH[az]
242+ let aS = aH[aw]
243+ let bR = value(assetInfo(aM)).quantity
244+ if ((0 > bP))
245+ then throw(((("baseAssetBalanceWCO < 0: baseAssetBalance=" + toString(bO)) + " baseAssetBalanceWCO=") + toString(bP)))
232246 else {
233- let bL = e(y(C))
234- let s = if ((bJ == 0))
235- then bL
236- else fraction(bH, aj, bK)
237- $Tuple5(s, bG, bF, bH, bJ)
247+ let bS = e(A(E))
248+ let u = if ((bR == 0))
249+ then bS
250+ else fraction(bP, ao, bR)
251+ $Tuple5(u, bO, -1, bP, bR)
238252 }
239253 }
240254
241255
242-func bM (C,aH,aI,aj) = bD(C, aH, 0, aI, aj)
256+func bT (E,aL,aM,ao) = bL(E, aL, 0, aM, ao)
243257
244258
245-func bN (k,bO,aG,bP,h) = {
246- let bQ = toBase58String(bP)
247- let i = toString(bO.caller)
248- let aH = fromBase58String(h)
249- let bR = bx(h)
250- let N = bR[V]
251- let aI = fromBase58String(N)
252- let ai = parseIntValue(bR[X])
253- let C = bR[W]
254- let bS = U(C)
255- let bT = split(b(bS), a)
256- let bU = parseIntValue(bT[by])
257- let bV = parseIntValue(bT[bz])
258- let bW = d(P(C))
259- if (bW)
259+func bU (k,bV,aK,bW,h) = {
260+ let bX = toBase58String(bW)
261+ let i = toString(bV.caller)
262+ let aL = fromBase58String(h)
263+ let bY = bC(h)
264+ let P = bY[aa]
265+ let aM = fromBase58String(P)
266+ let an = parseIntValue(bY[ac])
267+ let E = bY[ab]
268+ let bZ = Z(E)
269+ let ca = split(b(bZ), a)
270+ let cb = parseIntValue(ca[bD])
271+ let cc = parseIntValue(ca[bE])
272+ let cd = d(R(E))
273+ if (cd)
260274 then throw("put operation is blocked")
261275 else {
262- let bX = aE("submit", k, C, 0, 0, aG, aH, aI)
263- let bY = (bU - bX._2[au])
264- let bZ = (bV - bX._2[as])
265- if (if ((0 > bY))
266- then true
267- else (0 > bZ))
268- then l(bU, bV, bY, bZ)
276+ let ce = valueOrElse(getInteger(this, W(E)), 0)
277+ if (((ce + 60) > height))
278+ then throw("submit operations are blocked by topup manager")
269279 else {
270- let ca = e(R(C))
271- ((([StringEntry(aW(k, C, i, toBase58String(bO.transactionId)), br("PENDING", aG, 0, 0, height, lastBlock.timestamp, 0, 0, (ca + 1)))] :+ aP("INCREMENT", H(C), bX._1)) :+ aP("INCREMENT", I(C, i), bX._2)) :+ bA(bS, bY, bZ))
280+ let cf = aI("submit", k, E, 0, 0, aK, aL, aM)
281+ let cg = (cb - cf._2[ay])
282+ let ch = (cc - cf._2[aw])
283+ if (if ((0 > cg))
284+ then true
285+ else (0 > ch))
286+ then l(cb, cc, cg, ch)
287+ else {
288+ let ci = e(T(E))
289+ ((([StringEntry(ba(k, E, i, toBase58String(bV.transactionId)), bv("PENDING", aK, 0, 0, height, lastBlock.timestamp, 0, 0, (ci + 1)))] :+ aT("INCREMENT", J(E), cf._1)) :+ aT("INCREMENT", K(E, i), cf._2)) :+ bF(bZ, cg, ch))
290+ }
272291 }
273292 }
274293 }
275294
276295
277-func cb (k,h,i,j) = {
278- let aX = addressFromStringValue(i)
279- let cc = bx(h)
280- let aI = fromBase58String(cc[V])
281- let C = cc[W]
282- let aj = parseIntValue(cc[Y])
283- let aH = fromBase58String(h)
284- let cd = aW(k, C, i, j)
285- let ce = split(b(cd), a)
286- let bj = ce[aZ]
287- let aG = parseIntValue(ce[ba])
288- let cf = parseIntValue(ce[bh])
289- let cg = e(R(C))
290- let ch = e(B(C, cg))
291- if ((bj != "PENDING"))
296+func cj (k,h,i,j) = {
297+ let bb = addressFromStringValue(i)
298+ let ck = bC(h)
299+ let aM = fromBase58String(ck[aa])
300+ let E = ck[ab]
301+ let ao = parseIntValue(ck[ad])
302+ let aL = fromBase58String(h)
303+ let cl = ba(k, E, i, j)
304+ let cm = split(b(cl), a)
305+ let bn = cm[bd]
306+ let aK = parseIntValue(cm[be])
307+ let bw = parseIntValue(cm[bl])
308+ let cn = e(T(E))
309+ let co = e(D(E, cn))
310+ if ((bn != "PENDING"))
292311 then f("Status is not PENDING", h, i, j, k)
293- else if ((cf > cg))
294- then f(((("OperLock[" + toString(cf)) + "] > ") + toString(cg)), h, i, j, k)
312+ else if ((bw > cn))
313+ then f(((("OperLock[" + toString(bw)) + "] > ") + toString(cn)), h, i, j, k)
295314 else {
296- let bX = aE("execute", k, C, ch, aj, aG, aH, aI)
297- let aM = bX._3
298- let ci = if ((bX._4 == aH))
299- then [ScriptTransfer(aX, aM, aH)]
300- else [Reissue(aI, aM, true), ScriptTransfer(aX, aM, aI)]
301- (((ci :+ StringEntry(cd, bs(ce, "FINISHED", ch, aM))) :+ aP("DECREMENT", H(C), bX._1)) :+ aP("DECREMENT", I(C, i), bX._2))
315+ let cf = aI("execute", k, E, co, ao, aK, aL, aM)
316+ let aQ = cf._3
317+ let cp = if ((cf._4 == aL))
318+ then [ScriptTransfer(bb, aQ, aL)]
319+ else [ScriptTransfer(bb, aQ, aM)]
320+ (((cp :+ StringEntry(cl, bx(cm, "FINISHED", co, aQ))) :+ aT("DECREMENT", J(E), cf._1)) :+ aT("DECREMENT", K(E, i), cf._2))
302321 }
303322 }
304323
305324
306-func cj (h) = {
307- let aH = fromBase58String(h)
308- let bR = bx(h)
309- let N = bR[V]
310- let aI = fromBase58String(N)
311- let ai = parseIntValue(bR[X])
312- let aj = parseIntValue(bR[Y])
313- let C = bR[W]
314- let ck = bM(C, aH, aI, aj)
315- $Tuple6(IntegerEntry("price", ck._1), IntegerEntry("decimalsMultPrice", aj), IntegerEntry("baseAssetBalance", ck._2), IntegerEntry("totalLockedBaseAmount", ck._3), IntegerEntry("baseAssetBalanceConsideringLock", ck._4), IntegerEntry("shareEmission", ck._5))
325+func cq (h) = {
326+ let aL = fromBase58String(h)
327+ let bY = bC(h)
328+ let P = bY[aa]
329+ let aM = fromBase58String(P)
330+ let an = parseIntValue(bY[ac])
331+ let ao = parseIntValue(bY[ad])
332+ let E = bY[ab]
333+ let cr = bT(E, aL, aM, ao)
334+ $Tuple6(IntegerEntry("price", cr._1), IntegerEntry("decimalsMultPrice", ao), IntegerEntry("baseAssetBalance", cr._2), IntegerEntry("-1", cr._3), IntegerEntry("baseAssetBalanceWCO", cr._4), IntegerEntry("shareEmission", cr._5))
316335 }
317336
318337
319-@Callable(bO)
320-func adminRegisterAsset (h,cl,cm,cn,co,cp,al,am,an,ao,ap,aq,ar) = {
321- let aH = fromBase58String(h)
322- let cq = value(assetInfo(aH)).decimals
323- let ai = pow(10, 0, cq, 0, 0, DOWN)
324- let aj = ((100 * 1000) * 1000)
325- let cr = fraction(am, 100, ai)
326- let bG = assetBalance(this, aH)
327- if ((bO.caller != this))
338+@Callable(bV)
339+func adminRegisterAsset (h,cs,ct,cu,cv,cw,aq,ar,r,as,at,au,av) = {
340+ let aL = fromBase58String(h)
341+ let cx = value(assetInfo(aL)).decimals
342+ let an = pow(10, 0, cx, 0, 0, DOWN)
343+ let ao = ((100 * 1000) * 1000)
344+ let cy = fraction(ar, 100, an)
345+ let bO = assetBalance(this, aL)
346+ if ((bV.caller != this))
328347 then throw("permissions denied")
329- else if ((bG == 0))
348+ else if ((bO == 0))
330349 then throw(((toString(this) + " must have any initial balance of ") + h))
331- else if (isDefined(getString(this, w(h))))
350+ else if (isDefined(getString(this, y(h))))
332351 then throw((h + " has been already registered"))
333- else if ((toString(addressFromStringValue(co)) != co))
352+ else if ((toString(addressFromStringValue(cv)) != cv))
334353 then throw("invalid shutdownManagerAddress")
335- else if ((toString(addressFromStringValue(an)) != an))
354+ else if ((toString(addressFromStringValue(r)) != r))
336355 then throw("invalid topupManagerAddress")
337- else if ((0 > cn))
338- then throw(("invalid getDelayinBlocks=" + toString(cn)))
339- else if (if ((0 >= cr))
356+ else if ((0 > cu))
357+ then throw(("invalid getDelayinBlocks=" + toString(cu)))
358+ else if (if ((0 >= cy))
340359 then true
341- else (cr >= 99))
360+ else (cy >= 99))
342361 then throw("invalid topupMaxNegativePart parameter")
343362 else {
344- let cs = u(bG, cp, aj)
345- let ct = Issue(cl, cm, cs, cq, true)
346- let aI = calculateAssetId(ct)
347- let N = toBase58String(aI)
348- let cu = valueOrElse(getInteger(this, x()), 0)
349- let C = toString(cu)
350-[StringEntry(w(h), ah(N, C, ai, aj, cn, al, am, an, ao, ap, aq, ar)), StringEntry(J(cu), h), StringEntry(L(h), C), StringEntry(M(N), h), StringEntry(O(h), N), BooleanEntry(P(C), false), StringEntry(Q(C), co), IntegerEntry(x(), (cu + 1)), IntegerEntry(y(C), cp), IntegerEntry(E(C, height, lastBlock.timestamp), cp), IntegerEntry(R(C), 0), bA(U(C), ao, aq), ct]
363+ let cz = w(bO, cw, ao)
364+ let cA = Issue(cs, ct, cz, cx, true)
365+ let aM = calculateAssetId(cA)
366+ let P = toBase58String(aM)
367+ let cB = valueOrElse(getInteger(this, z()), 0)
368+ let E = toString(cB)
369+[StringEntry(y(h), am(P, E, an, ao, cu, aq, ar, r, as, at, au, av)), StringEntry(L(cB), h), StringEntry(N(h), E), StringEntry(O(P), h), StringEntry(Q(h), P), BooleanEntry(R(E), false), StringEntry(S(E), cv), IntegerEntry(z(), (cB + 1)), IntegerEntry(A(E), cw), IntegerEntry(G(E, height, lastBlock.timestamp), cw), IntegerEntry(T(E), 0), bF(Z(E), as, au), cA]
351370 }
352371 }
353372
354373
355374
356-@Callable(bO)
357-func shutdownPut (cu) = {
358- let cv = toString(cu)
359- let cw = b(J(cu))
360- let co = b(Q(cv))
361- if ((1 > size(cw)))
375+@Callable(bV)
376+func shutdownPut (cB) = {
377+ let cC = toString(cB)
378+ let cD = b(L(cB))
379+ let cv = b(S(cC))
380+ if ((1 > size(cD)))
362381 then throw("invalid internalBaseAssetId")
363- else if ((toString(bO.caller) != co))
382+ else if ((toString(bV.caller) != cv))
364383 then throw("access denied")
365- else [BooleanEntry(P(toString(cu)), true)]
384+ else [BooleanEntry(R(toString(cB)), true)]
366385 }
367386
368387
369388
370-@Callable(bO)
389+@Callable(bV)
371390 func submitPut () = {
372- let cx = value(bO.payments[0])
373- let aG = cx.amount
374- let bP = value(cx.assetId)
375- let h = toBase58String(bP)
376- bN("P", bO, aG, bP, h)
391+ let cE = value(bV.payments[0])
392+ let aK = cE.amount
393+ let bW = value(cE.assetId)
394+ let h = toBase58String(bW)
395+ bU("P", bV, aK, bW, h)
377396 }
378397
379398
380399
381-@Callable(bO)
400+@Callable(bV)
382401 func submitGet () = {
383- let cx = value(bO.payments[0])
384- let aG = cx.amount
385- let bP = value(cx.assetId)
386- let N = toBase58String(bP)
387- let h = b(M(N))
388- bN("G", bO, aG, bP, h)
402+ let cE = value(bV.payments[0])
403+ let aK = cE.amount
404+ let bW = value(cE.assetId)
405+ let P = toBase58String(bW)
406+ let h = b(O(P))
407+ bU("G", bV, aK, bW, h)
389408 }
390409
391410
392411
393-@Callable(bO)
394-func executePut (h,i,j) = cb("P", h, i, j)
412+@Callable(bV)
413+func executePut (h,i,j) = cj("P", h, i, j)
395414
396415
397416
398-@Callable(bO)
399-func executeGet (h,i,j) = cb("G", h, i, j)
417+@Callable(bV)
418+func executeGet (h,i,j) = cj("G", h, i, j)
400419
401420
402421
403-@Callable(bO)
404-func topUpBalance (h,cy) = {
405- let aH = fromBase58String(h)
406- let cc = bx(h)
407- let aI = fromBase58String(cc[V])
408- let t = parseIntValue(cc[Y])
409- let cz = parseIntValue(cc[X])
410- let al = parseIntValue(cc[aa])
411- let am = parseIntValue(cc[ab])
412- let C = cc[W]
413- let cA = cc[ac]
414- let cB = R(C)
415- let cC = e(cB)
416- let cD = (cC + 1)
417- let cE = if ((cy > 0))
422+@Callable(bV)
423+func operationsMutex (h) = {
424+ let ck = bC(h)
425+ let cF = ck[ah]
426+ let E = ck[ab]
427+ if ((toString(bV.caller) != cF))
428+ then q(cF)
429+ else [bI(E, height)]
430+ }
431+
432+
433+
434+@Callable(bV)
435+func topUpBalance (h,cG) = {
436+ let aL = fromBase58String(h)
437+ let ck = bC(h)
438+ let aM = fromBase58String(ck[aa])
439+ let v = parseIntValue(ck[ad])
440+ let cH = parseIntValue(ck[ac])
441+ let aq = parseIntValue(ck[af])
442+ let ar = parseIntValue(ck[ag])
443+ let E = ck[ab]
444+ let cF = ck[ah]
445+ let cI = T(E)
446+ let cJ = e(cI)
447+ let cK = (cJ + 1)
448+ let cL = if ((cG > 0))
418449 then {
419- let cx = value(bO.payments[0])
420- let cF = value(cx.assetId)
421- if ((aH != cF))
450+ let cE = value(bV.payments[0])
451+ let cM = value(cE.assetId)
452+ if ((aL != cM))
422453 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
423- else if ((size(bO.payments) > 1))
454+ else if ((size(bV.payments) > 1))
424455 then throw("only one payment can be attached")
425- else if ((cx.amount != cy))
456+ else if ((cE.amount != cG))
426457 then throw("attached payment.amount is NOT matched passed amount argument")
427458 else true
428459 }
429- else if ((0 > cy))
460+ else if ((0 > cG))
430461 then {
431- let cG = assetBalance(this, aH)
432- let cH = fraction(am, cG, cz)
433- if ((-(cy) > cH))
434- then throw(("Topup negative amount couldn't be greater than " + toString(cH)))
462+ let cN = assetBalance(this, aL)
463+ let cO = fraction(ar, cN, cH)
464+ if ((-(cG) > cO))
465+ then throw(("topup negative amount couldn't be greater than " + toString(cO)))
435466 else true
436467 }
437468 else throw("zero amount is not allowed")
438- let cI = S(C, toString(bO.caller))
439- let cJ = valueOrElse(getInteger(this, cI), 0)
440- if ((toString(bO.caller) != cA))
441- then throw((("only topUpManager=" + cA) + " can send topUp transactions"))
442- else if (!(cE))
469+ let cP = U(E, toString(bV.caller))
470+ let cQ = valueOrElse(getInteger(this, cP), 0)
471+ if ((toString(bV.caller) != cF))
472+ then q(cF)
473+ else if (!(cL))
443474 then throw("validation failed")
444- else if ((al > (height - cJ)))
445- then throw((("1 topup per " + toString(al)) + " blocks from the same address is allowed"))
475+ else if ((aq > (height - cQ)))
476+ then throw((("1 topup per " + toString(aq)) + " blocks from the same address is allowed"))
446477 else {
447- let s = bD(C, aH, cy, aI, t)._1
448- let bX = aE("topup", "", C, s, t, 0, aH, aI)
449- let cK = bX._1
450- let cL = A(C)
451- let cM = valueOrElse(getInteger(this, cL), 0)
452- ((([IntegerEntry(y(C), s), IntegerEntry(E(C, height, lastBlock.timestamp), s), IntegerEntry(B(C, cD), s), IntegerEntry(cB, cD), IntegerEntry(cL, if ((s > cM))
453- then s
454- else cM), IntegerEntry(cI, height)] :+ aP("DECREMENT", H(C), cK)) :+ Burn(aI, cK[as])) ++ (if ((0 > cy))
455- then [ScriptTransfer(bO.caller, -(cy), aH)]
478+ let u = bL(E, aL, cG, aM, v)._1
479+ let cf = aI("topup", "", E, u, v, 0, aL, aM)
480+ let cR = cf._1
481+ let cS = C(E)
482+ let cT = valueOrElse(getInteger(this, cS), 0)
483+ ((((([IntegerEntry(A(E), u), IntegerEntry(G(E, height, lastBlock.timestamp), u), IntegerEntry(D(E, cK), u), IntegerEntry(cI, cK), IntegerEntry(cS, if ((u > cT))
484+ then u
485+ else cT), IntegerEntry(cP, height)] :+ aT("DECREMENT", J(E), cR)) :+ bI(E, 0)) :+ Burn(aM, cR[aw])) :+ Reissue(aM, -(cR[az]), true)) ++ (if ((0 > cG))
486+ then [ScriptTransfer(bV.caller, -(cG), aL)]
456487 else nil))
457488 }
458489 }
459490
460491
461492
462-@Callable(bO)
493+@Callable(bV)
463494 func currentSysParamsREST (h) = {
464- let cN = cj(h)
465- let s = cN._1.value
466- let aj = cN._2.value
467- let bG = cN._3.value
468- let cO = cN._4.value
469- let cP = cN._5.value
470- let bJ = cN._6.value
471- let cQ = makeString(["startCurrentSysParamsREST", toString(s), toString(aj), toString(bG), toString(cO), toString(cP), toString(bJ), "endCurrentSysParamsREST"], a)
472- throw(cQ)
495+ let cU = cq(h)
496+ let u = cU._1.value
497+ let ao = cU._2.value
498+ let bO = cU._3.value
499+ let cV = cU._4.value
500+ let bP = cU._5.value
501+ let bR = cU._6.value
502+ let cW = makeString(["startCurrentSysParamsREST", toString(u), toString(ao), toString(bO), toString(cV), toString(bP), toString(bR), "endCurrentSysParamsREST"], a)
503+ throw(cW)
473504 }
474505
475506
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 func b (c) = valueOrErrorMessage(getString(this, c), ("No data for this.key=" + c))
77
88
99 func d (c) = valueOrErrorMessage(getBoolean(this, c), ("No data for this.key=" + c))
1010
1111
1212 func e (c) = valueOrErrorMessage(getInteger(this, c), ("No data for this.key=" + c))
1313
1414
1515 func f (g,h,i,j,k) = throw(((((((((g + ": baseAssetStr=") + h) + " userAddressStr=") + i) + " submitTxIdStr=") + j) + " operationType=") + k))
1616
1717
1818 func l (m,n,o,p) = throw((((((((("submit operation limits have been reached: " + " remainingBase=") + toString(m)) + " remainingShare=") + toString(n)) + " newRemainingBase=") + toString(o)) + " newRemainingShare=") + toString(p)))
1919
2020
21-func q (r,s,t) = fraction(r, s, t)
21+func q (r) = throw((("opertion denied: only topUpManager=" + r) + " can send such transactions"))
2222
2323
24-func u (v,s,t) = fraction(v, t, s)
24+func s (t,u,v) = fraction(t, u, v)
2525
2626
27-func w (h) = ("%s%s%s__config__asset__" + h)
27+func w (x,u,v) = fraction(x, v, u)
2828
2929
30-func x () = "%s__nextInternalAssetId"
30+func y (h) = ("%s%s%s__config__asset__" + h)
3131
3232
33-func y (z) = ("%s%s%d__price__last__" + z)
33+func z () = "%s__nextInternalAssetId"
3434
3535
36-func A (z) = ("%s%s%d__price__ath__" + z)
36+func A (B) = ("%s%s%d__price__last__" + B)
3737
3838
39-func B (C,D) = makeString(["%s%s%d%d__price__byTopUpIdx", C, toString(D)], a)
39+func C (B) = ("%s%s%d__price__ath__" + B)
4040
4141
42-func E (z,F,G) = makeString(["%s%s%d%d%d__price__history", z, toString(F), toString(G)], a)
42+func D (E,F) = makeString(["%s%s%d%d__price__byTopUpIdx", E, toString(F)], a)
4343
4444
45-func H (z) = ("%s%s%d__total__locked__" + z)
45+func G (B,H,I) = makeString(["%s%s%d%d%d__price__history", B, toString(H), toString(I)], a)
4646
4747
48-func I (C,i) = makeString(["%s%s%d%s__total__locked", C, i], a)
48+func J (B) = ("%s%s%d__total__locked__" + B)
4949
5050
51-func J (K) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(K))
51+func K (E,i) = makeString(["%s%s%d%s__total__locked", E, i], a)
5252
5353
54-func L (h) = ("%s%s%s__mappings__baseAsset2internalId__" + h)
54+func L (M) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(M))
5555
5656
57-func M (N) = ("%s%s%s__mappings__share2baseAssetId__" + N)
57+func N (h) = ("%s%s%s__mappings__baseAsset2internalId__" + h)
5858
5959
60-func O (h) = ("%s%s%s__mappings__baseAsset2shareId__" + h)
60+func O (P) = ("%s%s%s__mappings__share2baseAssetId__" + P)
6161
6262
63-func P (C) = ("%s%s%d__shutdown__put__" + C)
63+func Q (h) = ("%s%s%s__mappings__baseAsset2shareId__" + h)
6464
6565
66-func Q (C) = ("%s%s%d__shutdown__manager__" + C)
66+func R (E) = ("%s%s%d__shutdown__put__" + E)
6767
6868
69-func R (C) = ("%s%s%d__topup__currentIdx__" + C)
69+func S (E) = ("%s%s%d__shutdown__manager__" + E)
7070
7171
72-func S (z,T) = makeString(["%s%s%s%d%s__topup__last__height", z, T], a)
72+func T (E) = ("%s%s%d__topup__currentIdx__" + E)
7373
7474
75-func U (z) = ("%s%s%d__limits__remaining__" + z)
75+func U (B,V) = makeString(["%s%s%s%d%s__topup__last__height", B, V], a)
7676
7777
78-let V = 1
79-
80-let W = 2
81-
82-let X = 3
83-
84-let Y = 4
85-
86-let Z = 5
87-
88-let aa = 6
89-
90-let ab = 7
91-
92-let ac = 8
93-
94-let ad = 9
95-
96-let ae = 10
97-
98-let af = 11
99-
100-let ag = 12
101-
102-func ah (N,C,ai,aj,ak,al,am,an,ao,ap,aq,ar) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", N, C, toString(ai), toString(aj), toString(ak), toString(al), toString(am), an, toString(ao), toString(ap), toString(aq), toString(ar)], a)
78+func W (B) = ("%s%s%d__topup__mutex__" + B)
10379
10480
105-let as = 1
106-
107-let at = 2
108-
109-let au = 3
110-
111-let av = 4
112-
113-func aw (ax,ay,az,aA) = makeString(["%d%d%d%d", toString(ax), toString(ay), toString(az), toString(aA)], a)
81+func X (B,Y) = makeString(["%s%s%d%d__topup__history", B, toString(Y)], a)
11482
11583
116-func aB (ax,ay,az,aA) = [-1, ax, ay, az, aA]
84+func Z (B) = ("%s%s%d__limits__remaining__" + B)
11785
11886
119-func aC (c) = {
120- let aD = split(valueOrElse(getString(this, c), aw(0, 0, 0, 0)), a)
121- aB(parseIntValue(aD[as]), parseIntValue(aD[at]), parseIntValue(aD[au]), parseIntValue(aD[av]))
87+let aa = 1
88+
89+let ab = 2
90+
91+let ac = 3
92+
93+let ad = 4
94+
95+let ae = 5
96+
97+let af = 6
98+
99+let ag = 7
100+
101+let ah = 8
102+
103+let ai = 9
104+
105+let aj = 10
106+
107+let ak = 11
108+
109+let al = 12
110+
111+func am (P,E,an,ao,ap,aq,ar,r,as,at,au,av) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", P, E, toString(an), toString(ao), toString(ap), toString(aq), toString(ar), r, toString(as), toString(at), toString(au), toString(av)], a)
112+
113+
114+let aw = 1
115+
116+let ax = 2
117+
118+let ay = 3
119+
120+let az = 4
121+
122+func aA (aB,aC,aD,aE) = makeString(["%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE)], a)
123+
124+
125+func aF (aB,aC,aD,aE) = [-1, aB, aC, aD, aE]
126+
127+
128+func aG (c) = {
129+ let aH = split(valueOrElse(getString(this, c), aA(0, 0, 0, 0)), a)
130+ aF(parseIntValue(aH[aw]), parseIntValue(aH[ax]), parseIntValue(aH[ay]), parseIntValue(aH[az]))
122131 }
123132
124133
125-func aE (aF,k,C,s,t,aG,aH,aI) = {
126- let aJ = (aF + k)
127- if ((aJ == "submitP"))
134+func aI (aJ,k,E,u,v,aK,aL,aM) = {
135+ let aN = (aJ + k)
136+ if ((aN == "submitP"))
128137 then {
129- let aK = aB(0, 0, aG, 0)
130- let aL = aK
131- $Tuple4(aK, aL, 0, fromBase58String(""))
138+ let aO = aF(0, 0, aK, 0)
139+ let aP = aO
140+ $Tuple4(aO, aP, 0, fromBase58String(""))
132141 }
133- else if ((aJ == "submitG"))
142+ else if ((aN == "submitG"))
134143 then {
135- let aK = aB(aG, 0, 0, 0)
136- let aL = aK
137- $Tuple4(aK, aL, 0, fromBase58String(""))
144+ let aO = aF(aK, 0, 0, 0)
145+ let aP = aO
146+ $Tuple4(aO, aP, 0, fromBase58String(""))
138147 }
139- else if ((aJ == "executeP"))
148+ else if ((aN == "executeP"))
140149 then {
141- let aM = u(aG, s, t)
142- let aK = aB(0, 0, 0, aM)
143- let aL = aB(0, 0, aG, 0)
144- $Tuple4(aK, aL, aM, aI)
150+ let aQ = w(aK, u, v)
151+ let aO = aF(0, 0, 0, aQ)
152+ let aP = aF(0, 0, aK, 0)
153+ $Tuple4(aO, aP, aQ, aM)
145154 }
146- else if ((aJ == "executeG"))
155+ else if ((aN == "executeG"))
147156 then {
148- let aM = q(aG, s, t)
149- let aK = aB(0, aM, 0, 0)
150- let aL = aB(aG, 0, 0, 0)
151- $Tuple4(aK, aL, aM, aH)
157+ let aQ = s(aK, u, v)
158+ let aO = aF(0, aQ, 0, 0)
159+ let aP = aF(aK, 0, 0, 0)
160+ $Tuple4(aO, aP, aQ, aL)
152161 }
153- else if ((aJ == "topup"))
162+ else if ((aN == "topup"))
154163 then {
155- let aD = aC(H(C))
156- let aN = aD[au]
157- let aO = aD[as]
158- let aK = aB(aO, (-1 * q(aO, s, t)), aN, (-1 * u(aN, s, t)))
159- $Tuple4(aK, nil, 0, fromBase58String(""))
164+ let aH = aG(J(E))
165+ let aR = aH[ay]
166+ let aS = aH[aw]
167+ let aO = aF(aS, (-1 * s(aS, u, v)), aR, (-1 * w(aR, u, v)))
168+ $Tuple4(aO, nil, 0, fromBase58String(""))
160169 }
161- else throw(("Unsupported Type " + aJ))
170+ else throw(("Unsupported Type " + aN))
162171 }
163172
164173
165-func aP (aQ,c,aR) = {
166- func aS (aT,aU) = if ((aQ == "INCREMENT"))
167- then (aT + aU)
168- else if ((aQ == "DECREMENT"))
169- then (aT - aU)
170- else throw(("Unsupported action " + aQ))
174+func aT (aU,c,aV) = {
175+ func aW (aX,aY) = if ((aU == "INCREMENT"))
176+ then (aX + aY)
177+ else if ((aU == "DECREMENT"))
178+ then (aX - aY)
179+ else throw(("Unsupported action " + aU))
171180
172- let aV = aC(c)
173- StringEntry(c, aw(aS(aV[as], aR[as]), aS(aV[at], aR[at]), aS(aV[au], aR[au]), aS(aV[av], aR[av])))
181+ let aZ = aG(c)
182+ StringEntry(c, aA(aW(aZ[aw], aV[aw]), aW(aZ[ax], aV[ax]), aW(aZ[ay], aV[ay]), aW(aZ[az], aV[az])))
174183 }
175184
176185
177-func aW (k,C,aX,aY) = makeString(["%s%d%s%s", k, C, aX, aY], a)
186+func ba (k,E,bb,bc) = makeString(["%s%d%s%s", k, E, bb, bc], a)
178187
179188
180-let aZ = 1
189+let bd = 1
181190
182-let ba = 2
191+let be = 2
183192
184-let bb = 3
193+let bf = 3
185194
186-let bc = 4
195+let bg = 4
187196
188-let bd = 5
197+let bh = 5
189198
190-let be = 6
199+let bi = 6
191200
192-let bf = 7
201+let bj = 7
193202
194-let bg = 8
203+let bk = 8
195204
196-let bh = 9
205+let bl = 9
197206
198-func bi (bj,bk,s,bl,bm,bn,bo,bp,bq) = makeString(["%s%d%d%d%d%d%d%d%d", bj, bk, s, bl, bm, bn, bo, bp, bq], a)
207+func bm (bn,bo,u,bp,bq,br,bs,bt,bu) = makeString(["%s%d%d%d%d%d%d%d%d", bn, bo, u, bp, bq, br, bs, bt, bu], a)
199208
200209
201-func br (bj,bk,s,bl,bm,bn,bo,bp,bq) = bi(bj, toString(bk), toString(s), toString(bl), toString(bm), toString(bn), toString(bo), toString(bp), toString(bq))
210+func bv (bn,bo,u,bp,bq,br,bs,bt,bw) = bm(bn, toString(bo), toString(u), toString(bp), toString(bq), toString(br), toString(bs), toString(bt), toString(bw))
202211
203212
204-func bs (bt,bu,bv,bw) = bi(bu, bt[ba], toString(bv), toString(bw), bt[bd], bt[be], toString(height), toString(lastBlock.timestamp), bt[bh])
213+func bx (by,bz,bA,bB) = bm(bz, by[be], toString(bA), toString(bB), by[bh], by[bi], toString(height), toString(lastBlock.timestamp), by[bl])
205214
206215
207-func bx (h) = {
208- let c = w(h)
216+func bC (h) = {
217+ let c = y(h)
209218 split(b(c), a)
210219 }
211220
212221
213-let by = 1
222+let bD = 1
214223
215-let bz = 2
224+let bE = 2
216225
217-func bA (c,bB,bC) = StringEntry(c, makeString(["%d%d", toString(bB), toString(bC)], a))
226+func bF (c,bG,bH) = StringEntry(c, makeString(["%d%d", toString(bG), toString(bH)], a))
218227
219228
220-func bD (C,aH,bE,aI,aj) = {
221- let aD = aC(H(C))
222- let bF = aD[at]
223- let aN = aD[au]
224- let bG = assetBalance(this, aH)
225- let bH = (((bG + bE) - aN) - bF)
226- let bI = aD[av]
227- let aO = aD[as]
228- let bJ = value(assetInfo(aI)).quantity
229- let bK = (bJ + bI)
230- if ((0 > bH))
231- then throw(((("baseAssetBalanceCALC < 0: baseAssetBalance=" + toString(bG)) + " baseAssetBalanceCALC=") + toString(bH)))
229+func bI (E,bJ) = IntegerEntry(W(E), bJ)
230+
231+
232+func bK (E,Y) = ""
233+
234+
235+func bL (E,aL,bM,aM,ao) = {
236+ let aH = aG(J(E))
237+ let bN = aH[ax]
238+ let aR = aH[ay]
239+ let bO = assetBalance(this, aL)
240+ let bP = (((bO + bM) - aR) - bN)
241+ let bQ = aH[az]
242+ let aS = aH[aw]
243+ let bR = value(assetInfo(aM)).quantity
244+ if ((0 > bP))
245+ then throw(((("baseAssetBalanceWCO < 0: baseAssetBalance=" + toString(bO)) + " baseAssetBalanceWCO=") + toString(bP)))
232246 else {
233- let bL = e(y(C))
234- let s = if ((bJ == 0))
235- then bL
236- else fraction(bH, aj, bK)
237- $Tuple5(s, bG, bF, bH, bJ)
247+ let bS = e(A(E))
248+ let u = if ((bR == 0))
249+ then bS
250+ else fraction(bP, ao, bR)
251+ $Tuple5(u, bO, -1, bP, bR)
238252 }
239253 }
240254
241255
242-func bM (C,aH,aI,aj) = bD(C, aH, 0, aI, aj)
256+func bT (E,aL,aM,ao) = bL(E, aL, 0, aM, ao)
243257
244258
245-func bN (k,bO,aG,bP,h) = {
246- let bQ = toBase58String(bP)
247- let i = toString(bO.caller)
248- let aH = fromBase58String(h)
249- let bR = bx(h)
250- let N = bR[V]
251- let aI = fromBase58String(N)
252- let ai = parseIntValue(bR[X])
253- let C = bR[W]
254- let bS = U(C)
255- let bT = split(b(bS), a)
256- let bU = parseIntValue(bT[by])
257- let bV = parseIntValue(bT[bz])
258- let bW = d(P(C))
259- if (bW)
259+func bU (k,bV,aK,bW,h) = {
260+ let bX = toBase58String(bW)
261+ let i = toString(bV.caller)
262+ let aL = fromBase58String(h)
263+ let bY = bC(h)
264+ let P = bY[aa]
265+ let aM = fromBase58String(P)
266+ let an = parseIntValue(bY[ac])
267+ let E = bY[ab]
268+ let bZ = Z(E)
269+ let ca = split(b(bZ), a)
270+ let cb = parseIntValue(ca[bD])
271+ let cc = parseIntValue(ca[bE])
272+ let cd = d(R(E))
273+ if (cd)
260274 then throw("put operation is blocked")
261275 else {
262- let bX = aE("submit", k, C, 0, 0, aG, aH, aI)
263- let bY = (bU - bX._2[au])
264- let bZ = (bV - bX._2[as])
265- if (if ((0 > bY))
266- then true
267- else (0 > bZ))
268- then l(bU, bV, bY, bZ)
276+ let ce = valueOrElse(getInteger(this, W(E)), 0)
277+ if (((ce + 60) > height))
278+ then throw("submit operations are blocked by topup manager")
269279 else {
270- let ca = e(R(C))
271- ((([StringEntry(aW(k, C, i, toBase58String(bO.transactionId)), br("PENDING", aG, 0, 0, height, lastBlock.timestamp, 0, 0, (ca + 1)))] :+ aP("INCREMENT", H(C), bX._1)) :+ aP("INCREMENT", I(C, i), bX._2)) :+ bA(bS, bY, bZ))
280+ let cf = aI("submit", k, E, 0, 0, aK, aL, aM)
281+ let cg = (cb - cf._2[ay])
282+ let ch = (cc - cf._2[aw])
283+ if (if ((0 > cg))
284+ then true
285+ else (0 > ch))
286+ then l(cb, cc, cg, ch)
287+ else {
288+ let ci = e(T(E))
289+ ((([StringEntry(ba(k, E, i, toBase58String(bV.transactionId)), bv("PENDING", aK, 0, 0, height, lastBlock.timestamp, 0, 0, (ci + 1)))] :+ aT("INCREMENT", J(E), cf._1)) :+ aT("INCREMENT", K(E, i), cf._2)) :+ bF(bZ, cg, ch))
290+ }
272291 }
273292 }
274293 }
275294
276295
277-func cb (k,h,i,j) = {
278- let aX = addressFromStringValue(i)
279- let cc = bx(h)
280- let aI = fromBase58String(cc[V])
281- let C = cc[W]
282- let aj = parseIntValue(cc[Y])
283- let aH = fromBase58String(h)
284- let cd = aW(k, C, i, j)
285- let ce = split(b(cd), a)
286- let bj = ce[aZ]
287- let aG = parseIntValue(ce[ba])
288- let cf = parseIntValue(ce[bh])
289- let cg = e(R(C))
290- let ch = e(B(C, cg))
291- if ((bj != "PENDING"))
296+func cj (k,h,i,j) = {
297+ let bb = addressFromStringValue(i)
298+ let ck = bC(h)
299+ let aM = fromBase58String(ck[aa])
300+ let E = ck[ab]
301+ let ao = parseIntValue(ck[ad])
302+ let aL = fromBase58String(h)
303+ let cl = ba(k, E, i, j)
304+ let cm = split(b(cl), a)
305+ let bn = cm[bd]
306+ let aK = parseIntValue(cm[be])
307+ let bw = parseIntValue(cm[bl])
308+ let cn = e(T(E))
309+ let co = e(D(E, cn))
310+ if ((bn != "PENDING"))
292311 then f("Status is not PENDING", h, i, j, k)
293- else if ((cf > cg))
294- then f(((("OperLock[" + toString(cf)) + "] > ") + toString(cg)), h, i, j, k)
312+ else if ((bw > cn))
313+ then f(((("OperLock[" + toString(bw)) + "] > ") + toString(cn)), h, i, j, k)
295314 else {
296- let bX = aE("execute", k, C, ch, aj, aG, aH, aI)
297- let aM = bX._3
298- let ci = if ((bX._4 == aH))
299- then [ScriptTransfer(aX, aM, aH)]
300- else [Reissue(aI, aM, true), ScriptTransfer(aX, aM, aI)]
301- (((ci :+ StringEntry(cd, bs(ce, "FINISHED", ch, aM))) :+ aP("DECREMENT", H(C), bX._1)) :+ aP("DECREMENT", I(C, i), bX._2))
315+ let cf = aI("execute", k, E, co, ao, aK, aL, aM)
316+ let aQ = cf._3
317+ let cp = if ((cf._4 == aL))
318+ then [ScriptTransfer(bb, aQ, aL)]
319+ else [ScriptTransfer(bb, aQ, aM)]
320+ (((cp :+ StringEntry(cl, bx(cm, "FINISHED", co, aQ))) :+ aT("DECREMENT", J(E), cf._1)) :+ aT("DECREMENT", K(E, i), cf._2))
302321 }
303322 }
304323
305324
306-func cj (h) = {
307- let aH = fromBase58String(h)
308- let bR = bx(h)
309- let N = bR[V]
310- let aI = fromBase58String(N)
311- let ai = parseIntValue(bR[X])
312- let aj = parseIntValue(bR[Y])
313- let C = bR[W]
314- let ck = bM(C, aH, aI, aj)
315- $Tuple6(IntegerEntry("price", ck._1), IntegerEntry("decimalsMultPrice", aj), IntegerEntry("baseAssetBalance", ck._2), IntegerEntry("totalLockedBaseAmount", ck._3), IntegerEntry("baseAssetBalanceConsideringLock", ck._4), IntegerEntry("shareEmission", ck._5))
325+func cq (h) = {
326+ let aL = fromBase58String(h)
327+ let bY = bC(h)
328+ let P = bY[aa]
329+ let aM = fromBase58String(P)
330+ let an = parseIntValue(bY[ac])
331+ let ao = parseIntValue(bY[ad])
332+ let E = bY[ab]
333+ let cr = bT(E, aL, aM, ao)
334+ $Tuple6(IntegerEntry("price", cr._1), IntegerEntry("decimalsMultPrice", ao), IntegerEntry("baseAssetBalance", cr._2), IntegerEntry("-1", cr._3), IntegerEntry("baseAssetBalanceWCO", cr._4), IntegerEntry("shareEmission", cr._5))
316335 }
317336
318337
319-@Callable(bO)
320-func adminRegisterAsset (h,cl,cm,cn,co,cp,al,am,an,ao,ap,aq,ar) = {
321- let aH = fromBase58String(h)
322- let cq = value(assetInfo(aH)).decimals
323- let ai = pow(10, 0, cq, 0, 0, DOWN)
324- let aj = ((100 * 1000) * 1000)
325- let cr = fraction(am, 100, ai)
326- let bG = assetBalance(this, aH)
327- if ((bO.caller != this))
338+@Callable(bV)
339+func adminRegisterAsset (h,cs,ct,cu,cv,cw,aq,ar,r,as,at,au,av) = {
340+ let aL = fromBase58String(h)
341+ let cx = value(assetInfo(aL)).decimals
342+ let an = pow(10, 0, cx, 0, 0, DOWN)
343+ let ao = ((100 * 1000) * 1000)
344+ let cy = fraction(ar, 100, an)
345+ let bO = assetBalance(this, aL)
346+ if ((bV.caller != this))
328347 then throw("permissions denied")
329- else if ((bG == 0))
348+ else if ((bO == 0))
330349 then throw(((toString(this) + " must have any initial balance of ") + h))
331- else if (isDefined(getString(this, w(h))))
350+ else if (isDefined(getString(this, y(h))))
332351 then throw((h + " has been already registered"))
333- else if ((toString(addressFromStringValue(co)) != co))
352+ else if ((toString(addressFromStringValue(cv)) != cv))
334353 then throw("invalid shutdownManagerAddress")
335- else if ((toString(addressFromStringValue(an)) != an))
354+ else if ((toString(addressFromStringValue(r)) != r))
336355 then throw("invalid topupManagerAddress")
337- else if ((0 > cn))
338- then throw(("invalid getDelayinBlocks=" + toString(cn)))
339- else if (if ((0 >= cr))
356+ else if ((0 > cu))
357+ then throw(("invalid getDelayinBlocks=" + toString(cu)))
358+ else if (if ((0 >= cy))
340359 then true
341- else (cr >= 99))
360+ else (cy >= 99))
342361 then throw("invalid topupMaxNegativePart parameter")
343362 else {
344- let cs = u(bG, cp, aj)
345- let ct = Issue(cl, cm, cs, cq, true)
346- let aI = calculateAssetId(ct)
347- let N = toBase58String(aI)
348- let cu = valueOrElse(getInteger(this, x()), 0)
349- let C = toString(cu)
350-[StringEntry(w(h), ah(N, C, ai, aj, cn, al, am, an, ao, ap, aq, ar)), StringEntry(J(cu), h), StringEntry(L(h), C), StringEntry(M(N), h), StringEntry(O(h), N), BooleanEntry(P(C), false), StringEntry(Q(C), co), IntegerEntry(x(), (cu + 1)), IntegerEntry(y(C), cp), IntegerEntry(E(C, height, lastBlock.timestamp), cp), IntegerEntry(R(C), 0), bA(U(C), ao, aq), ct]
363+ let cz = w(bO, cw, ao)
364+ let cA = Issue(cs, ct, cz, cx, true)
365+ let aM = calculateAssetId(cA)
366+ let P = toBase58String(aM)
367+ let cB = valueOrElse(getInteger(this, z()), 0)
368+ let E = toString(cB)
369+[StringEntry(y(h), am(P, E, an, ao, cu, aq, ar, r, as, at, au, av)), StringEntry(L(cB), h), StringEntry(N(h), E), StringEntry(O(P), h), StringEntry(Q(h), P), BooleanEntry(R(E), false), StringEntry(S(E), cv), IntegerEntry(z(), (cB + 1)), IntegerEntry(A(E), cw), IntegerEntry(G(E, height, lastBlock.timestamp), cw), IntegerEntry(T(E), 0), bF(Z(E), as, au), cA]
351370 }
352371 }
353372
354373
355374
356-@Callable(bO)
357-func shutdownPut (cu) = {
358- let cv = toString(cu)
359- let cw = b(J(cu))
360- let co = b(Q(cv))
361- if ((1 > size(cw)))
375+@Callable(bV)
376+func shutdownPut (cB) = {
377+ let cC = toString(cB)
378+ let cD = b(L(cB))
379+ let cv = b(S(cC))
380+ if ((1 > size(cD)))
362381 then throw("invalid internalBaseAssetId")
363- else if ((toString(bO.caller) != co))
382+ else if ((toString(bV.caller) != cv))
364383 then throw("access denied")
365- else [BooleanEntry(P(toString(cu)), true)]
384+ else [BooleanEntry(R(toString(cB)), true)]
366385 }
367386
368387
369388
370-@Callable(bO)
389+@Callable(bV)
371390 func submitPut () = {
372- let cx = value(bO.payments[0])
373- let aG = cx.amount
374- let bP = value(cx.assetId)
375- let h = toBase58String(bP)
376- bN("P", bO, aG, bP, h)
391+ let cE = value(bV.payments[0])
392+ let aK = cE.amount
393+ let bW = value(cE.assetId)
394+ let h = toBase58String(bW)
395+ bU("P", bV, aK, bW, h)
377396 }
378397
379398
380399
381-@Callable(bO)
400+@Callable(bV)
382401 func submitGet () = {
383- let cx = value(bO.payments[0])
384- let aG = cx.amount
385- let bP = value(cx.assetId)
386- let N = toBase58String(bP)
387- let h = b(M(N))
388- bN("G", bO, aG, bP, h)
402+ let cE = value(bV.payments[0])
403+ let aK = cE.amount
404+ let bW = value(cE.assetId)
405+ let P = toBase58String(bW)
406+ let h = b(O(P))
407+ bU("G", bV, aK, bW, h)
389408 }
390409
391410
392411
393-@Callable(bO)
394-func executePut (h,i,j) = cb("P", h, i, j)
412+@Callable(bV)
413+func executePut (h,i,j) = cj("P", h, i, j)
395414
396415
397416
398-@Callable(bO)
399-func executeGet (h,i,j) = cb("G", h, i, j)
417+@Callable(bV)
418+func executeGet (h,i,j) = cj("G", h, i, j)
400419
401420
402421
403-@Callable(bO)
404-func topUpBalance (h,cy) = {
405- let aH = fromBase58String(h)
406- let cc = bx(h)
407- let aI = fromBase58String(cc[V])
408- let t = parseIntValue(cc[Y])
409- let cz = parseIntValue(cc[X])
410- let al = parseIntValue(cc[aa])
411- let am = parseIntValue(cc[ab])
412- let C = cc[W]
413- let cA = cc[ac]
414- let cB = R(C)
415- let cC = e(cB)
416- let cD = (cC + 1)
417- let cE = if ((cy > 0))
422+@Callable(bV)
423+func operationsMutex (h) = {
424+ let ck = bC(h)
425+ let cF = ck[ah]
426+ let E = ck[ab]
427+ if ((toString(bV.caller) != cF))
428+ then q(cF)
429+ else [bI(E, height)]
430+ }
431+
432+
433+
434+@Callable(bV)
435+func topUpBalance (h,cG) = {
436+ let aL = fromBase58String(h)
437+ let ck = bC(h)
438+ let aM = fromBase58String(ck[aa])
439+ let v = parseIntValue(ck[ad])
440+ let cH = parseIntValue(ck[ac])
441+ let aq = parseIntValue(ck[af])
442+ let ar = parseIntValue(ck[ag])
443+ let E = ck[ab]
444+ let cF = ck[ah]
445+ let cI = T(E)
446+ let cJ = e(cI)
447+ let cK = (cJ + 1)
448+ let cL = if ((cG > 0))
418449 then {
419- let cx = value(bO.payments[0])
420- let cF = value(cx.assetId)
421- if ((aH != cF))
450+ let cE = value(bV.payments[0])
451+ let cM = value(cE.assetId)
452+ if ((aL != cM))
422453 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
423- else if ((size(bO.payments) > 1))
454+ else if ((size(bV.payments) > 1))
424455 then throw("only one payment can be attached")
425- else if ((cx.amount != cy))
456+ else if ((cE.amount != cG))
426457 then throw("attached payment.amount is NOT matched passed amount argument")
427458 else true
428459 }
429- else if ((0 > cy))
460+ else if ((0 > cG))
430461 then {
431- let cG = assetBalance(this, aH)
432- let cH = fraction(am, cG, cz)
433- if ((-(cy) > cH))
434- then throw(("Topup negative amount couldn't be greater than " + toString(cH)))
462+ let cN = assetBalance(this, aL)
463+ let cO = fraction(ar, cN, cH)
464+ if ((-(cG) > cO))
465+ then throw(("topup negative amount couldn't be greater than " + toString(cO)))
435466 else true
436467 }
437468 else throw("zero amount is not allowed")
438- let cI = S(C, toString(bO.caller))
439- let cJ = valueOrElse(getInteger(this, cI), 0)
440- if ((toString(bO.caller) != cA))
441- then throw((("only topUpManager=" + cA) + " can send topUp transactions"))
442- else if (!(cE))
469+ let cP = U(E, toString(bV.caller))
470+ let cQ = valueOrElse(getInteger(this, cP), 0)
471+ if ((toString(bV.caller) != cF))
472+ then q(cF)
473+ else if (!(cL))
443474 then throw("validation failed")
444- else if ((al > (height - cJ)))
445- then throw((("1 topup per " + toString(al)) + " blocks from the same address is allowed"))
475+ else if ((aq > (height - cQ)))
476+ then throw((("1 topup per " + toString(aq)) + " blocks from the same address is allowed"))
446477 else {
447- let s = bD(C, aH, cy, aI, t)._1
448- let bX = aE("topup", "", C, s, t, 0, aH, aI)
449- let cK = bX._1
450- let cL = A(C)
451- let cM = valueOrElse(getInteger(this, cL), 0)
452- ((([IntegerEntry(y(C), s), IntegerEntry(E(C, height, lastBlock.timestamp), s), IntegerEntry(B(C, cD), s), IntegerEntry(cB, cD), IntegerEntry(cL, if ((s > cM))
453- then s
454- else cM), IntegerEntry(cI, height)] :+ aP("DECREMENT", H(C), cK)) :+ Burn(aI, cK[as])) ++ (if ((0 > cy))
455- then [ScriptTransfer(bO.caller, -(cy), aH)]
478+ let u = bL(E, aL, cG, aM, v)._1
479+ let cf = aI("topup", "", E, u, v, 0, aL, aM)
480+ let cR = cf._1
481+ let cS = C(E)
482+ let cT = valueOrElse(getInteger(this, cS), 0)
483+ ((((([IntegerEntry(A(E), u), IntegerEntry(G(E, height, lastBlock.timestamp), u), IntegerEntry(D(E, cK), u), IntegerEntry(cI, cK), IntegerEntry(cS, if ((u > cT))
484+ then u
485+ else cT), IntegerEntry(cP, height)] :+ aT("DECREMENT", J(E), cR)) :+ bI(E, 0)) :+ Burn(aM, cR[aw])) :+ Reissue(aM, -(cR[az]), true)) ++ (if ((0 > cG))
486+ then [ScriptTransfer(bV.caller, -(cG), aL)]
456487 else nil))
457488 }
458489 }
459490
460491
461492
462-@Callable(bO)
493+@Callable(bV)
463494 func currentSysParamsREST (h) = {
464- let cN = cj(h)
465- let s = cN._1.value
466- let aj = cN._2.value
467- let bG = cN._3.value
468- let cO = cN._4.value
469- let cP = cN._5.value
470- let bJ = cN._6.value
471- let cQ = makeString(["startCurrentSysParamsREST", toString(s), toString(aj), toString(bG), toString(cO), toString(cP), toString(bJ), "endCurrentSysParamsREST"], a)
472- throw(cQ)
495+ let cU = cq(h)
496+ let u = cU._1.value
497+ let ao = cU._2.value
498+ let bO = cU._3.value
499+ let cV = cU._4.value
500+ let bP = cU._5.value
501+ let bR = cU._6.value
502+ let cW = makeString(["startCurrentSysParamsREST", toString(u), toString(ao), toString(bO), toString(cV), toString(bP), toString(bR), "endCurrentSysParamsREST"], a)
503+ throw(cW)
473504 }
474505
475506

github/deemru/w8io/169f3d6 
200.76 ms