tx · F6XVGrwNfKoawn776NeSWJoTD3C1VpuxQxipH3TbBp3F

3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH:  -0.01400000 Waves

2021.03.25 10:48 [1452996] smart account 3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH > SELF 0.00000000 Waves

{ "type": 13, "id": "F6XVGrwNfKoawn776NeSWJoTD3C1VpuxQxipH3TbBp3F", "fee": 1400000, "feeAssetId": null, "timestamp": 1616658624666, "version": 1, "sender": "3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH", "senderPublicKey": "HoEvP2nFKMAsffQ9PUyAm6auWisyHgusY9HxDeMASrzZ", "proofs": [ "2kyGAfj9tyhgebmJSsXLfhPQkbiKs2cK85eJn2MP1yw71CFtbsAseTTiKkz9BNZkrj1rvCNDdxH8aKLXUVf9KBzk" ], "script": "base64:AAIEAAAAAAAAADUIAhIPCg0ICAgBCAEBAQgBAQEBEgMKAQESABIAEgUKAwgICBIFCgMICAgSBAoCCAESAwoBCAAAAEUAAAAAA1NFUAIAAAACX18BAAAAD2dldFN0cmluZ09yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AQAAABBnZXRCb29sZWFuT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAADGdldEludE9yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AQAAAA5mYWlsRXhlY3V0ZUdldAAAAAUAAAADbXNnAAAADGJhc2VBc3NldFN0cgAAAA51c2VyQWRkcmVzc1N0cgAAAA1zdWJtaXRUeElkU3RyAAAADW9wZXJhdGlvblR5cGUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAA21zZwIAAAAPOiBiYXNlQXNzZXRTdHI9BQAAAAxiYXNlQXNzZXRTdHICAAAAECB1c2VyQWRkcmVzc1N0cj0FAAAADnVzZXJBZGRyZXNzU3RyAgAAAA8gc3VibWl0VHhJZFN0cj0FAAAADXN1Ym1pdFR4SWRTdHICAAAADyBvcGVyYXRpb25UeXBlPQUAAAANb3BlcmF0aW9uVHlwZQEAAAAXZmFpbFN1Ym1pdExpbWl0c0V4Y2VlZHMAAAAEAAAADXJlbWFpbmluZ0Jhc2UAAAAOcmVtYWluaW5nU2hhcmUAAAAQbmV3UmVtYWluaW5nQmFzZQAAABFuZXdSZW1haW5pbmdTaGFyZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAArc3VibWl0IG9wZXJhdGlvbiBsaW1pdHMgaGF2ZSBiZWVuIHJlYWNoZWQ6IAIAAAAPIHJlbWFpbmluZ0Jhc2U9CQABpAAAAAEFAAAADXJlbWFpbmluZ0Jhc2UCAAAAECByZW1haW5pbmdTaGFyZT0JAAGkAAAAAQUAAAAOcmVtYWluaW5nU2hhcmUCAAAAEiBuZXdSZW1haW5pbmdCYXNlPQkAAaQAAAABBQAAABBuZXdSZW1haW5pbmdCYXNlAgAAABMgbmV3UmVtYWluaW5nU2hhcmU9CQABpAAAAAEFAAAAEW5ld1JlbWFpbmluZ1NoYXJlAQAAABFjb252ZXJ0U2hhcmUyQmFzZQAAAAMAAAALc2hhcmVBbW91bnQAAAAFcHJpY2UAAAAJcHJpY2VNdWx0CQAAawAAAAMFAAAAC3NoYXJlQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0AQAAABFjb252ZXJ0QmFzZTJTaGFyZQAAAAMAAAAKYmFzZUFtb3VudAAAAAVwcmljZQAAAAlwcmljZU11bHQJAABrAAAAAwUAAAAKYmFzZUFtb3VudAUAAAAJcHJpY2VNdWx0BQAAAAVwcmljZQEAAAALa2V5QXNzZXRDZmcAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAABclcyVzJXNfX2NvbmZpZ19fYXNzZXRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAAAAIAAAAXJXNfX25leHRJbnRlcm5hbEFzc2V0SWQBAAAADGtleVByaWNlTGFzdAAAAAEAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQABLAAAAAICAAAAFSVzJXMlZF9fcHJpY2VfX2xhc3RfXwUAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyAQAAAAtrZXlQcmljZUFUSAAAAAEAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQABLAAAAAICAAAAFCVzJXMlZF9fcHJpY2VfX2F0aF9fBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIBAAAAEmtleVByaWNlQnlUb3BVcElkeAAAAAIAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAIdG9wVXBJZHgJAAS5AAAAAgkABEwAAAACAgAAABslcyVzJWQlZF9fcHJpY2VfX2J5VG9wVXBJZHgJAARMAAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgkAAaQAAAABBQAAAAh0b3BVcElkeAUAAAADbmlsBQAAAANTRVABAAAAD2tleVByaWNlSGlzdG9yeQAAAAMAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyAAAAAWgAAAAJdGltZXN0YW1wCQAEuQAAAAIJAARMAAAAAgIAAAAaJXMlcyVkJWQlZF9fcHJpY2VfX2hpc3RvcnkJAARMAAAAAgUAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQAETAAAAAIJAAGkAAAAAQUAAAABaAkABEwAAAACCQABpAAAAAEFAAAACXRpbWVzdGFtcAUAAAADbmlsBQAAAANTRVABAAAADmtleVRvdGFsTG9ja2VkAAAAAQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIJAAEsAAAAAgIAAAAXJXMlcyVkX190b3RhbF9fbG9ja2VkX18FAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgEAAAAUa2V5VG90YWxMb2NrZWRCeVVzZXIAAAACAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAADnVzZXJBZGRyZXNzU3RyCQAEuQAAAAIJAARMAAAAAgIAAAAXJXMlcyVkJXNfX3RvdGFsX19sb2NrZWQJAARMAAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgUAAAAOdXNlckFkZHJlc3NTdHIFAAAAA25pbAUAAAADU0VQAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQAAABFpbnRlcm5hbEJhc2VBc3NldAkAASwAAAACAgAAACglcyVzJWRfX21hcHBpbmdzX19pbnRlcm5hbDJiYXNlQXNzZXRJZF9fCQABpAAAAAEFAAAAEWludGVybmFsQmFzZUFzc2V0AQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAoJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MmludGVybmFsSWRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABxrZXlNYXBwaW5nc1NoYXJlMmJhc2VBc3NldElkAAAAAQAAAA1zaGFyZUFzc2V0U3RyCQABLAAAAAICAAAAJSVzJXMlc19fbWFwcGluZ3NfX3NoYXJlMmJhc2VBc3NldElkX18FAAAADXNoYXJlQXNzZXRTdHIBAAAAHGtleU1hcHBpbmdzQmFzZUFzc2V0MnNoYXJlSWQAAAABAAAADGJhc2VBc3NldFN0cgkAASwAAAACAgAAACUlcyVzJXNfX21hcHBpbmdzX19iYXNlQXNzZXQyc2hhcmVJZF9fBQAAAAxiYXNlQXNzZXRTdHIBAAAAF2tleVNodXRkb3duUHV0T3BlcmF0aW9uAAAAAQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAASwAAAACAgAAABclcyVzJWRfX3NodXRkb3duX19wdXRfXwUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIBAAAAEmtleVNodXRkb3duTWFuYWdlcgAAAAEAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAbJXMlcyVkX19zaHV0ZG93bl9fbWFuYWdlcl9fBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgEAAAASa2V5VG9wVXBDdXJyZW50SWR4AAAAAQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAASwAAAACAgAAABslcyVzJWRfX3RvcHVwX19jdXJyZW50SWR4X18FAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAQAAABJrZXlUb3BVcExhc3RIZWlnaHQAAAACAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgAAAAZzZW5kZXIJAAS5AAAAAgkABEwAAAACAgAAAB8lcyVzJXMlZCVzX190b3B1cF9fbGFzdF9faGVpZ2h0CQAETAAAAAIFAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkABEwAAAACBQAAAAZzZW5kZXIFAAAAA25pbAUAAAADU0VQAQAAABJrZXlMaW1pdHNSZW1haW5pbmcAAAABAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkAASwAAAACAgAAABslcyVzJWRfX2xpbWl0c19fcmVtYWluaW5nX18FAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgAAAAASSWR4Q2ZnU2hhcmVBc3NldElkAAAAAAAAAAABAAAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAAAAAAAAAAAAgAAAAAcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aEFzc2V0cwAAAAAAAAAAAwAAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UAAAAAAAAAAAQAAAAAFElkeENmZ0dldERlbGF5QmxvY2tzAAAAAAAAAAAFAAAAABtJZHhDZmdUb3B1cEludGVydmFsSW5CbG9ja3MAAAAAAAAAAAYAAAAAGklkeENmZ1RvcHVwTWF4TmVnYXRpdmVQYXJ0AAAAAAAAAAAHAAAAABlJZHhDZmdUb3B1cE1hbmFnZXJBZGRyZXNzAAAAAAAAAAAIAAAAABlJZHhDZmdTdWJtaXRMaW1pdHNCYXNlTWF4AAAAAAAAAAAJAAAAABtJZHhDZmdTdWJtaXRMaW1pdHNCYXNlUmVzZXQAAAAAAAAAAAoAAAAAGklkeENmZ1N1Ym1pdExpbWl0c1NoYXJlTWF4AAAAAAAAAAALAAAAABxJZHhDZmdTdWJtaXRMaW1pdHNTaGFyZVJlc2V0AAAAAAAAAAAMAQAAAAxkYXRhQXNzZXRDZmcAAAAMAAAADXNoYXJlQXNzZXRTdHIAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwAAABFkZWNpbWFsc011bHRQcmljZQAAABBnZXREZWxheUluQmxvY2tzAAAAFXRvcHVwSW50ZXJ2YWxJbkJsb2NrcwAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAAAABN0b3B1cE1hbmFnZXJBZGRyZXNzAAAAE3N1Ym1pdExpbWl0c0Jhc2VNYXgAAAAVc3VibWl0TGltaXRzQmFzZVJlc2V0AAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4AAAAFnN1Ym1pdExpbWl0c1NoYXJlUmVzZXQJAAS5AAAAAgkABEwAAAACAgAAABglcyVkJWQlZCVkJWQlZCVzJWQlZCVkJWQJAARMAAAAAgUAAAANc2hhcmVBc3NldFN0cgkABEwAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACCQABpAAAAAEFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAARMAAAAAgkAAaQAAAABBQAAABFkZWNpbWFsc011bHRQcmljZQkABEwAAAACCQABpAAAAAEFAAAAEGdldERlbGF5SW5CbG9ja3MJAARMAAAAAgkAAaQAAAABBQAAABV0b3B1cEludGVydmFsSW5CbG9ja3MJAARMAAAAAgkAAaQAAAABBQAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAkABEwAAAACBQAAABN0b3B1cE1hbmFnZXJBZGRyZXNzCQAETAAAAAIJAAGkAAAAAQUAAAATc3VibWl0TGltaXRzQmFzZU1heAkABEwAAAACCQABpAAAAAEFAAAAFXN1Ym1pdExpbWl0c0Jhc2VSZXNldAkABEwAAAACCQABpAAAAAEFAAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4CQAETAAAAAIJAAGkAAAAAQUAAAAWc3VibWl0TGltaXRzU2hhcmVSZXNldAUAAAADbmlsBQAAAANTRVAAAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQAAAAAAAAAAAQAAAAAVSWR4VG90YWxMb2NrZWRPdXRCYXNlAAAAAAAAAAACAAAAABRJZHhUb3RhbExvY2tlZEluQmFzZQAAAAAAAAAAAwAAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQAAAAAAAAAABAEAAAAPZGF0YVRvdGFsTG9ja2VkAAAABAAAAA1pblNoYXJlQW1vdW50AAAADW91dEJhc2VBbW91bnQAAAAMaW5CYXNlQW1vdW50AAAADm91dFNoYXJlQW1vdW50CQAEuQAAAAIJAARMAAAAAgIAAAAIJWQlZCVkJWQJAARMAAAAAgkAAaQAAAABBQAAAA1pblNoYXJlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAANb3V0QmFzZUFtb3VudAkABEwAAAACCQABpAAAAAEFAAAADGluQmFzZUFtb3VudAkABEwAAAACCQABpAAAAAEFAAAADm91dFNoYXJlQW1vdW50BQAAAANuaWwFAAAAA1NFUAEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAAAAA1pblNoYXJlQW1vdW50AAAADW91dEJhc2VBbW91bnQAAAAMaW5CYXNlQW1vdW50AAAADm91dFNoYXJlQW1vdW50CQAETAAAAAIA//////////8JAARMAAAAAgUAAAANaW5TaGFyZUFtb3VudAkABEwAAAACBQAAAA1vdXRCYXNlQW1vdW50CQAETAAAAAIFAAAADGluQmFzZUFtb3VudAkABEwAAAACBQAAAA5vdXRTaGFyZUFtb3VudAUAAAADbmlsAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABAAAAA2tleQQAAAAQdG90YWxMb2NrZWRBcnJheQkABLUAAAACCQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQkBAAAAD2RhdGFUb3RhbExvY2tlZAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAA1NFUAkBAAAAEmRhdGFUb3RhbExvY2tlZEludAAAAAQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABVJZHhUb3RhbExvY2tlZEluU2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABVJZHhUb3RhbExvY2tlZE91dEJhc2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFklkeFRvdGFsTG9ja2VkT3V0U2hhcmUBAAAAE2NhbGNUb3RhbExvY2tlZERpZmYAAAAIAAAACWRpcmVjdGlvbgAAAA1vcGVyYXRpb25UeXBlAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAABXByaWNlAAAACXByaWNlTXVsdAAAAAhpbkFtb3VudAAAAAtiYXNlQXNzZXRJZAAAAAxzaGFyZUFzc2V0SWQEAAAAAXQJAAEsAAAAAgUAAAAJZGlyZWN0aW9uBQAAAA1vcGVyYXRpb25UeXBlAwkAAAAAAAACBQAAAAF0AgAAAAdzdWJtaXRQBAAAAAl0b3RhbERpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhpbkFtb3VudAAAAAAAAAAAAAQAAAAIdXNlckRpZmYFAAAACXRvdGFsRGlmZgkABRYAAAAEBQAAAAl0b3RhbERpZmYFAAAACHVzZXJEaWZmAAAAAAAAAAAACQACWQAAAAECAAAAAAMJAAAAAAAAAgUAAAABdAIAAAAHc3VibWl0RwQAAAAJdG90YWxEaWZmCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAUAAAAIaW5BbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACHVzZXJEaWZmBQAAAAl0b3RhbERpZmYJAAUWAAAABAUAAAAJdG90YWxEaWZmBQAAAAh1c2VyRGlmZgAAAAAAAAAAAAkAAlkAAAABAgAAAAADCQAAAAAAAAIFAAAAAXQCAAAACGV4ZWN1dGVQBAAAAAlvdXRBbW91bnQJAQAAABFjb252ZXJ0QmFzZTJTaGFyZQAAAAMFAAAACGluQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0BAAAAAl0b3RhbERpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAlvdXRBbW91bnQEAAAACHVzZXJEaWZmCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAIaW5BbW91bnQAAAAAAAAAAAAJAAUWAAAABAUAAAAJdG90YWxEaWZmBQAAAAh1c2VyRGlmZgUAAAAJb3V0QW1vdW50BQAAAAxzaGFyZUFzc2V0SWQDCQAAAAAAAAIFAAAAAXQCAAAACGV4ZWN1dGVHBAAAAAlvdXRBbW91bnQJAQAAABFjb252ZXJ0U2hhcmUyQmFzZQAAAAMFAAAACGluQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0BAAAAAl0b3RhbERpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAAAAAAAAAABQAAAAlvdXRBbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAEAAAACHVzZXJEaWZmCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAUAAAAIaW5BbW91bnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAUWAAAABAUAAAAJdG90YWxEaWZmBQAAAAh1c2VyRGlmZgUAAAAJb3V0QW1vdW50BQAAAAtiYXNlQXNzZXRJZAMJAAAAAAAAAgUAAAABdAIAAAAFdG9wdXAEAAAAEHRvdGFsTG9ja2VkQXJyYXkJAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAXdG90YWxMb2NrZWRJbkJhc2VBbW91bnQJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAUSWR4VG90YWxMb2NrZWRJbkJhc2UEAAAAGHRvdGFsTG9ja2VkSW5TaGFyZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABVJZHhUb3RhbExvY2tlZEluU2hhcmUEAAAACXRvdGFsRGlmZgkBAAAAEmRhdGFUb3RhbExvY2tlZEludAAAAAQFAAAAGHRvdGFsTG9ja2VkSW5TaGFyZUFtb3VudAkAAGgAAAACAP//////////CQEAAAARY29udmVydFNoYXJlMkJhc2UAAAADBQAAABh0b3RhbExvY2tlZEluU2hhcmVBbW91bnQFAAAABXByaWNlBQAAAAlwcmljZU11bHQFAAAAF3RvdGFsTG9ja2VkSW5CYXNlQW1vdW50CQAAaAAAAAIA//////////8JAQAAABFjb252ZXJ0QmFzZTJTaGFyZQAAAAMFAAAAF3RvdGFsTG9ja2VkSW5CYXNlQW1vdW50BQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0CQAFFgAAAAQFAAAACXRvdGFsRGlmZgUAAAADbmlsAAAAAAAAAAAACQACWQAAAAECAAAAAAkAAAIAAAABCQABLAAAAAICAAAAEVVuc3VwcG9ydGVkIFR5cGUgBQAAAAF0AQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwAAAAZhY3Rpb24AAAADa2V5AAAABGRpZmYKAQAAAAZVUERBVEUAAAACAAAAAWEAAAABYgMJAAAAAAAAAgUAAAAGYWN0aW9uAgAAAAlJTkNSRU1FTlQJAABkAAAAAgUAAAABYQUAAAABYgMJAAAAAAAAAgUAAAAGYWN0aW9uAgAAAAlERUNSRU1FTlQJAABlAAAAAgUAAAABYQUAAAABYgkAAAIAAAABCQABLAAAAAICAAAAE1Vuc3VwcG9ydGVkIGFjdGlvbiAFAAAABmFjdGlvbgQAAAAJZGF0YUFycmF5CQEAAAAPcmVhZFRvdGFsTG9ja2VkAAAAAQUAAAADa2V5CQEAAAALU3RyaW5nRW50cnkAAAACBQAAAANrZXkJAQAAAA9kYXRhVG90YWxMb2NrZWQAAAAECQEAAAAGVVBEQVRFAAAAAgkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQkAAZEAAAACBQAAAARkaWZmBQAAABVJZHhUb3RhbExvY2tlZEluU2hhcmUJAQAAAAZVUERBVEUAAAACCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAVSWR4VG90YWxMb2NrZWRPdXRCYXNlCQABkQAAAAIFAAAABGRpZmYFAAAAFUlkeFRvdGFsTG9ja2VkT3V0QmFzZQkBAAAABlVQREFURQAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQkAAZEAAAACBQAAAARkaWZmBQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQkBAAAABlVQREFURQAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABZJZHhUb3RhbExvY2tlZE91dFNoYXJlCQABkQAAAAIFAAAABGRpZmYFAAAAFklkeFRvdGFsTG9ja2VkT3V0U2hhcmUBAAAADGtleU9wZXJhdGlvbgAAAAQAAAANb3BlcmF0aW9uVHlwZQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAt1c2VyQWRkcmVzcwAAAAR0eElkCQAEuQAAAAIJAARMAAAAAgIAAAAIJXMlZCVzJXMJAARMAAAAAgUAAAANb3BlcmF0aW9uVHlwZQkABEwAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACBQAAAAt1c2VyQWRkcmVzcwkABEwAAAACBQAAAAR0eElkBQAAAANuaWwFAAAAA1NFUAAAAAANSWR4T3BlclN0YXR1cwAAAAAAAAAAAQAAAAAPSWR4T3BlckluQW1vdW50AAAAAAAAAAACAAAAAAxJZHhPcGVyUHJpY2UAAAAAAAAAAAMAAAAAEElkeE9wZXJPdXRBbW91bnQAAAAAAAAAAAQAAAAAEklkeE9wZXJTdGFydEhlaWdodAAAAAAAAAAABQAAAAAVSWR4T3BlclN0YXJ0VGltZXN0YW1wAAAAAAAAAAAGAAAAABBJZHhPcGVyRW5kSGVpZ2h0AAAAAAAAAAAHAAAAABNJZHhPcGVyRW5kVGltZXN0YW1wAAAAAAAAAAAIAAAAAAtJZHhPcGVyTG9jawAAAAAAAAAACQEAAAAecHJpdmF0ZURhdGFPcGVyYXRpb25BbGxTdHJpbmdzAAAACQAAAAZzdGF0dXMAAAANaW5Bc3NldEFtb3VudAAAAAVwcmljZQAAAA5vdXRBc3NldEFtb3VudAAAAAtzdGFydEhlaWdodAAAAA5zdGFydFRpbWVzdGFtcAAAAAllbmRIZWlnaHQAAAAMZW5kVGltZXN0YW1wAAAABGxvY2sJAAS5AAAAAgkABEwAAAACAgAAABIlcyVkJWQlZCVkJWQlZCVkJWQJAARMAAAAAgUAAAAGc3RhdHVzCQAETAAAAAIFAAAADWluQXNzZXRBbW91bnQJAARMAAAAAgUAAAAFcHJpY2UJAARMAAAAAgUAAAAOb3V0QXNzZXRBbW91bnQJAARMAAAAAgUAAAALc3RhcnRIZWlnaHQJAARMAAAAAgUAAAAOc3RhcnRUaW1lc3RhbXAJAARMAAAAAgUAAAAJZW5kSGVpZ2h0CQAETAAAAAIFAAAADGVuZFRpbWVzdGFtcAkABEwAAAACBQAAAARsb2NrBQAAAANuaWwFAAAAA1NFUAEAAAANZGF0YU9wZXJhdGlvbgAAAAkAAAAGc3RhdHVzAAAADWluQXNzZXRBbW91bnQAAAAFcHJpY2UAAAAOb3V0QXNzZXRBbW91bnQAAAALc3RhcnRIZWlnaHQAAAAOc3RhcnRUaW1lc3RhbXAAAAAJZW5kSGVpZ2h0AAAADGVuZFRpbWVzdGFtcAAAAARsb2NrCQEAAAAecHJpdmF0ZURhdGFPcGVyYXRpb25BbGxTdHJpbmdzAAAACQUAAAAGc3RhdHVzCQABpAAAAAEFAAAADWluQXNzZXRBbW91bnQJAAGkAAAAAQUAAAAFcHJpY2UJAAGkAAAAAQUAAAAOb3V0QXNzZXRBbW91bnQJAAGkAAAAAQUAAAALc3RhcnRIZWlnaHQJAAGkAAAAAQUAAAAOc3RhcnRUaW1lc3RhbXAJAAGkAAAAAQUAAAAJZW5kSGVpZ2h0CQABpAAAAAEFAAAADGVuZFRpbWVzdGFtcAkAAaQAAAABBQAAAARsb2NrAQAAABxkYXRhT3BlcmF0aW9uRXhlY3V0aW9uVXBkYXRlAAAABAAAAA1jdXJyT3BlckFycmF5AAAACW5ld1N0YXR1cwAAAAhuZXdQcmljZQAAAAxuZXdPdXRBbW91bnQJAQAAAB5wcml2YXRlRGF0YU9wZXJhdGlvbkFsbFN0cmluZ3MAAAAJBQAAAAluZXdTdGF0dXMJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAAPSWR4T3BlckluQW1vdW50CQABpAAAAAEFAAAACG5ld1ByaWNlCQABpAAAAAEFAAAADG5ld091dEFtb3VudAkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAABJJZHhPcGVyU3RhcnRIZWlnaHQJAAGRAAAAAgUAAAANY3Vyck9wZXJBcnJheQUAAAAVSWR4T3BlclN0YXJ0VGltZXN0YW1wCQABpAAAAAEFAAAABmhlaWdodAkAAaQAAAABCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAAAtJZHhPcGVyTG9jawEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQAAAAxiYXNlQXNzZXRTdHIEAAAAA2tleQkBAAAAC2tleUFzc2V0Q2ZnAAAAAQUAAAAMYmFzZUFzc2V0U3RyCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABBQAAAANrZXkFAAAAA1NFUAAAAAAWSWR4TGltaXRzUmVtYWluaW5nQmFzZQAAAAAAAAAAAQAAAAAXSWR4TGltaXRzUmVtYWluaW5nU2hhcmUAAAAAAAAAAAIBAAAAGlJlbWFpbmluZ0xpbWl0c1N0cmluZ0VudHJ5AAAAAwAAAANrZXkAAAASYmFzZVJlbWFpbmluZ0xpbWl0AAAAE3NoYXJlUmVtYWluaW5nTGltaXQJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAABCVkJWQJAARMAAAAAgkAAaQAAAABBQAAABJiYXNlUmVtYWluaW5nTGltaXQJAARMAAAAAgkAAaQAAAABBQAAABNzaGFyZVJlbWFpbmluZ0xpbWl0BQAAAANuaWwFAAAAA1NFUAEAAAAQZ2VuZXJpY0NhbGNQcmljZQAAAAUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAALYmFzZUFzc2V0SWQAAAAPdG9wVXBCYXNlQW1vdW50AAAADHNoYXJlQXNzZXRJZAAAABFkZWNpbWFsc011bHRQcmljZQQAAAAQdG90YWxMb2NrZWRBcnJheQkBAAAAD3JlYWRUb3RhbExvY2tlZAAAAAEJAQAAAA5rZXlUb3RhbExvY2tlZAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAABh0b3RhbExvY2tlZE91dEJhc2VBbW91bnQJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAVSWR4VG90YWxMb2NrZWRPdXRCYXNlBAAAABd0b3RhbExvY2tlZEluQmFzZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQQAAAAQYmFzZUFzc2V0QmFsYW5jZQkAA/AAAAACBQAAAAR0aGlzBQAAAAtiYXNlQXNzZXRJZAQAAAAUYmFzZUFzc2V0QmFsYW5jZUNBTEMJAABlAAAAAgkAAGUAAAACCQAAZAAAAAIFAAAAEGJhc2VBc3NldEJhbGFuY2UFAAAAD3RvcFVwQmFzZUFtb3VudAUAAAAXdG90YWxMb2NrZWRJbkJhc2VBbW91bnQFAAAAGHRvdGFsTG9ja2VkT3V0QmFzZUFtb3VudAQAAAAZdG90YWxMb2NrZWRPdXRTaGFyZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABZJZHhUb3RhbExvY2tlZE91dFNoYXJlBAAAABh0b3RhbExvY2tlZEluU2hhcmVBbW91bnQJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAVSWR4VG90YWxMb2NrZWRJblNoYXJlBAAAAA1zaGFyZUVtaXNzaW9uCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAxzaGFyZUFzc2V0SWQAAAAIcXVhbnRpdHkEAAAAEXNoYXJlRW1pc3Npb25DQUxDCQAAZAAAAAIFAAAADXNoYXJlRW1pc3Npb24FAAAAGXRvdGFsTG9ja2VkT3V0U2hhcmVBbW91bnQDCQAAZgAAAAIAAAAAAAAAAAAFAAAAFGJhc2VBc3NldEJhbGFuY2VDQUxDCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAAK2Jhc2VBc3NldEJhbGFuY2VDQUxDIDwgMDogYmFzZUFzc2V0QmFsYW5jZT0JAAGkAAAAAQUAAAAQYmFzZUFzc2V0QmFsYW5jZQIAAAAWIGJhc2VBc3NldEJhbGFuY2VDQUxDPQkAAaQAAAABBQAAABRiYXNlQXNzZXRCYWxhbmNlQ0FMQwQAAAAJbGFzdFByaWNlCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAADGtleVByaWNlTGFzdAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAAVwcmljZQMJAAAAAAAAAgUAAAANc2hhcmVFbWlzc2lvbgAAAAAAAAAAAAUAAAAJbGFzdFByaWNlCQAAawAAAAMFAAAAFGJhc2VBc3NldEJhbGFuY2VDQUxDBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAARc2hhcmVFbWlzc2lvbkNBTEMJAAUXAAAABQUAAAAFcHJpY2UFAAAAEGJhc2VBc3NldEJhbGFuY2UFAAAAGHRvdGFsTG9ja2VkT3V0QmFzZUFtb3VudAUAAAAUYmFzZUFzc2V0QmFsYW5jZUNBTEMFAAAADXNoYXJlRW1pc3Npb24BAAAACWNhbGNQcmljZQAAAAQAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAALYmFzZUFzc2V0SWQAAAAMc2hhcmVBc3NldElkAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAAQZ2VuZXJpY0NhbGNQcmljZQAAAAUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAtiYXNlQXNzZXRJZAAAAAAAAAAAAAUAAAAMc2hhcmVBc3NldElkBQAAABFkZWNpbWFsc011bHRQcmljZQEAAAAGc3VibWl0AAAABQAAAA1vcGVyYXRpb25UeXBlAAAAAWkAAAAIaW5BbW91bnQAAAAJaW5Bc3NldElkAAAADGJhc2VBc3NldFN0cgQAAAAKaW5Bc3NldFN0cgkAAlgAAAABBQAAAAlpbkFzc2V0SWQEAAAADnVzZXJBZGRyZXNzU3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAALYmFzZUFzc2V0SWQJAAJZAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAAhjZmdBcnJheQkBAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAANc2hhcmVBc3NldFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnU2hhcmVBc3NldElkBAAAAAxzaGFyZUFzc2V0SWQJAAJZAAAAAQUAAAANc2hhcmVBc3NldFN0cgQAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABxJZHhDZmdEZWNpbWFsc011bHRCb3RoQXNzZXRzBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAACWxpbWl0c0tFWQkBAAAAEmtleUxpbWl0c1JlbWFpbmluZwAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAA5saW1pdHNDZmdBcnJheQkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQUAAAAJbGltaXRzS0VZBQAAAANTRVAEAAAAE2xpbWl0c1JlbWFpbmluZ0Jhc2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5saW1pdHNDZmdBcnJheQUAAAAWSWR4TGltaXRzUmVtYWluaW5nQmFzZQQAAAAUbGltaXRzUmVtYWluaW5nU2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5saW1pdHNDZmdBcnJheQUAAAAXSWR4TGltaXRzUmVtYWluaW5nU2hhcmUEAAAADGlzUHV0QmxvY2tlZAkBAAAAEGdldEJvb2xlYW5PckZhaWwAAAABCQEAAAAXa2V5U2h1dGRvd25QdXRPcGVyYXRpb24AAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgMFAAAADGlzUHV0QmxvY2tlZAkAAAIAAAABAgAAABhwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQEAAAACWRpZmZUdXBsZQkBAAAAE2NhbGNUb3RhbExvY2tlZERpZmYAAAAIAgAAAAZzdWJtaXQFAAAADW9wZXJhdGlvblR5cGUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhpbkFtb3VudAUAAAALYmFzZUFzc2V0SWQFAAAADHNoYXJlQXNzZXRJZAQAAAAWbGltaXRzUmVtYWluaW5nQmFzZU5ldwkAAGUAAAACBQAAABNsaW1pdHNSZW1haW5pbmdCYXNlCQABkQAAAAIIBQAAAAlkaWZmVHVwbGUAAAACXzIFAAAAFElkeFRvdGFsTG9ja2VkSW5CYXNlBAAAABdsaW1pdHNSZW1haW5pbmdTaGFyZU5ldwkAAGUAAAACBQAAABRsaW1pdHNSZW1haW5pbmdTaGFyZQkAAZEAAAACCAUAAAAJZGlmZlR1cGxlAAAAAl8yBQAAABVJZHhUb3RhbExvY2tlZEluU2hhcmUDAwkAAGYAAAACAAAAAAAAAAAABQAAABZsaW1pdHNSZW1haW5pbmdCYXNlTmV3BgkAAGYAAAACAAAAAAAAAAAABQAAABdsaW1pdHNSZW1haW5pbmdTaGFyZU5ldwkBAAAAF2ZhaWxTdWJtaXRMaW1pdHNFeGNlZWRzAAAABAUAAAATbGltaXRzUmVtYWluaW5nQmFzZQUAAAAUbGltaXRzUmVtYWluaW5nU2hhcmUFAAAAFmxpbWl0c1JlbWFpbmluZ0Jhc2VOZXcFAAAAF2xpbWl0c1JlbWFpbmluZ1NoYXJlTmV3BAAAAA90b3BVcEN1cnJlbnRJZHgJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAASa2V5VG9wVXBDdXJyZW50SWR4AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARNAAAAAgkABE0AAAACCQAETQAAAAIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGtleU9wZXJhdGlvbgAAAAQFAAAADW9wZXJhdGlvblR5cGUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQEAAAANZGF0YU9wZXJhdGlvbgAAAAkCAAAAB1BFTkRJTkcFAAAACGluQW1vdW50AAAAAAAAAAAAAAAAAAAAAAAABQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAAAAAAAAAAAAAAAAAAAAAAAACQAAZAAAAAIFAAAAD3RvcFVwQ3VycmVudElkeAAAAAAAAAAAAQUAAAADbmlsCQEAAAAWVG90YWxMb2NrZWRTdHJpbmdFbnRyeQAAAAMCAAAACUlOQ1JFTUVOVAkBAAAADmtleVRvdGFsTG9ja2VkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIIBQAAAAlkaWZmVHVwbGUAAAACXzEJAQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwIAAAAJSU5DUkVNRU5UCQEAAAAUa2V5VG90YWxMb2NrZWRCeVVzZXIAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIIBQAAAAlkaWZmVHVwbGUAAAACXzIJAQAAABpSZW1haW5pbmdMaW1pdHNTdHJpbmdFbnRyeQAAAAMFAAAACWxpbWl0c0tFWQUAAAAWbGltaXRzUmVtYWluaW5nQmFzZU5ldwUAAAAXbGltaXRzUmVtYWluaW5nU2hhcmVOZXcBAAAAB2V4ZWN1dGUAAAAEAAAADW9wZXJhdGlvblR5cGUAAAAMYmFzZUFzc2V0U3RyAAAADnVzZXJBZGRyZXNzU3RyAAAADXN1Ym1pdFR4SWRTdHIEAAAAC3VzZXJBZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAA51c2VyQWRkcmVzc1N0cgQAAAANYXNzZXRDZmdBcnJheQkBAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAMc2hhcmVBc3NldElkCQACWQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAASSWR4Q2ZnU2hhcmVBc3NldElkBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAQAAAARZGVjaW1hbHNNdWx0UHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABdJZHhDZmdEZWNpbWFsc011bHRQcmljZQQAAAALYmFzZUFzc2V0SWQJAAJZAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAAxvcGVyYXRpb25LZXkJAQAAAAxrZXlPcGVyYXRpb24AAAAEBQAAAA1vcGVyYXRpb25UeXBlBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADXN1Ym1pdFR4SWRTdHIEAAAADm9wZXJhdGlvbkFycmF5CQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABBQAAAAxvcGVyYXRpb25LZXkFAAAAA1NFUAQAAAAGc3RhdHVzCQABkQAAAAIFAAAADm9wZXJhdGlvbkFycmF5BQAAAA1JZHhPcGVyU3RhdHVzBAAAAAhpbkFtb3VudAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADm9wZXJhdGlvbkFycmF5BQAAAA9JZHhPcGVySW5BbW91bnQEAAAACG9wZXJMb2NrCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAOb3BlcmF0aW9uQXJyYXkFAAAAC0lkeE9wZXJMb2NrBAAAAAxjdXJyVG9wVXBJZHgJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAASa2V5VG9wVXBDdXJyZW50SWR4AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIEAAAADnByaWNlQnlUb3BVcElkCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAAEmtleVByaWNlQnlUb3BVcElkeAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAxjdXJyVG9wVXBJZHgDCQEAAAACIT0AAAACBQAAAAZzdGF0dXMCAAAAB1BFTkRJTkcJAQAAAA5mYWlsRXhlY3V0ZUdldAAAAAUCAAAAFVN0YXR1cyBpcyBub3QgUEVORElORwUAAAAMYmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANc3VibWl0VHhJZFN0cgUAAAANb3BlcmF0aW9uVHlwZQMJAABmAAAAAgUAAAAIb3BlckxvY2sFAAAADGN1cnJUb3BVcElkeAkBAAAADmZhaWxFeGVjdXRlR2V0AAAABQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAJT3BlckxvY2tbCQABpAAAAAEFAAAACG9wZXJMb2NrAgAAAARdID4gCQABpAAAAAEFAAAADGN1cnJUb3BVcElkeAUAAAAMYmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANc3VibWl0VHhJZFN0cgUAAAANb3BlcmF0aW9uVHlwZQQAAAAJZGlmZlR1cGxlCQEAAAATY2FsY1RvdGFsTG9ja2VkRGlmZgAAAAgCAAAAB2V4ZWN1dGUFAAAADW9wZXJhdGlvblR5cGUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA5wcmljZUJ5VG9wVXBJZAUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAACGluQW1vdW50BQAAAAtiYXNlQXNzZXRJZAUAAAAMc2hhcmVBc3NldElkBAAAAAlvdXRBbW91bnQIBQAAAAlkaWZmVHVwbGUAAAACXzMEAAAAD291dFRyYW5zZmVyRGF0YQMJAAAAAAAAAggFAAAACWRpZmZUdXBsZQAAAAJfNAUAAAALYmFzZUFzc2V0SWQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MFAAAACW91dEFtb3VudAUAAAALYmFzZUFzc2V0SWQFAAAAA25pbAkABEwAAAACCQEAAAAHUmVpc3N1ZQAAAAMFAAAADHNoYXJlQXNzZXRJZAUAAAAJb3V0QW1vdW50BgkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAJb3V0QW1vdW50BQAAAAxzaGFyZUFzc2V0SWQFAAAAA25pbAkABE0AAAACCQAETQAAAAIJAARNAAAAAgUAAAAPb3V0VHJhbnNmZXJEYXRhCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAAxvcGVyYXRpb25LZXkJAQAAABxkYXRhT3BlcmF0aW9uRXhlY3V0aW9uVXBkYXRlAAAABAUAAAAOb3BlcmF0aW9uQXJyYXkCAAAACEZJTklTSEVEBQAAAA5wcmljZUJ5VG9wVXBJZAUAAAAJb3V0QW1vdW50CQEAAAAWVG90YWxMb2NrZWRTdHJpbmdFbnRyeQAAAAMCAAAACURFQ1JFTUVOVAkBAAAADmtleVRvdGFsTG9ja2VkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIIBQAAAAlkaWZmVHVwbGUAAAACXzEJAQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwIAAAAJREVDUkVNRU5UCQEAAAAUa2V5VG90YWxMb2NrZWRCeVVzZXIAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIIBQAAAAlkaWZmVHVwbGUAAAACXzIBAAAAG3ByaXZhdGVDdXJyZW50U3lzUGFyYW1zUkVTVAAAAAEAAAAMYmFzZUFzc2V0U3RyBAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAACGNmZ0FycmF5CQEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAA1zaGFyZUFzc2V0U3RyCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABJJZHhDZmdTaGFyZUFzc2V0SWQEAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABBQAAAA1zaGFyZUFzc2V0U3RyBAAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAHElkeENmZ0RlY2ltYWxzTXVsdEJvdGhBc3NldHMEAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAF0lkeENmZ0RlY2ltYWxzTXVsdFByaWNlBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAACHN5c1N0YXRlCQEAAAAJY2FsY1ByaWNlAAAABAUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAC2Jhc2VBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAFGAAAAAYJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAVwcmljZQgFAAAACHN5c1N0YXRlAAAAAl8xCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQYmFzZUFzc2V0QmFsYW5jZQgFAAAACHN5c1N0YXRlAAAAAl8yCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAVdG90YWxMb2NrZWRCYXNlQW1vdW50CAUAAAAIc3lzU3RhdGUAAAACXzMJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAB9iYXNlQXNzZXRCYWxhbmNlQ29uc2lkZXJpbmdMb2NrCAUAAAAIc3lzU3RhdGUAAAACXzQJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAA1zaGFyZUVtaXNzaW9uCAUAAAAIc3lzU3RhdGUAAAACXzUAAAAIAAAAAWkBAAAAEmFkbWluUmVnaXN0ZXJBc3NldAAAAA0AAAAMYmFzZUFzc2V0U3RyAAAADnNoYXJlQXNzZXROYW1lAAAAD3NoYXJlQXNzZXREZXNjcgAAABBnZXREZWxheWluQmxvY2tzAAAAFnNodXRkb3duTWFuYWdlckFkZHJlc3MAAAAKc3RhcnRQcmljZQAAABV0b3B1cEludGVydmFsSW5CbG9ja3MAAAAUdG9wdXBNYXhOZWdhdGl2ZVBhcnQAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwAAABNzdWJtaXRMaW1pdHNCYXNlTWF4AAAAFXN1Ym1pdExpbWl0c0Jhc2VSZXNldAAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAAAABZzdWJtaXRMaW1pdHNTaGFyZVJlc2V0BAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAACGRlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAtiYXNlQXNzZXRJZAAAAAhkZWNpbWFscwQAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAAhkZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgQAAAARZGVjaW1hbHNNdWx0UHJpY2UJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoBAAAABh0b3B1cE1heE5lZ2F0aXZlUGVyY2VudHMJAABrAAAAAwUAAAAUdG9wdXBNYXhOZWdhdGl2ZVBhcnQAAAAAAAAAAGQFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMEAAAAEGJhc2VBc3NldEJhbGFuY2UJAAPwAAAAAgUAAAAEdGhpcwUAAAALYmFzZUFzc2V0SWQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAScGVybWlzc2lvbnMgZGVuaWVkAwkAAAAAAAACBQAAABBiYXNlQXNzZXRCYWxhbmNlAAAAAAAAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEFAAAABHRoaXMCAAAAIiBtdXN0IGhhdmUgYW55IGluaXRpYWwgYmFsYW5jZSBvZiAFAAAADGJhc2VBc3NldFN0cgMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMJAQAAAAtrZXlBc3NldENmZwAAAAEFAAAADGJhc2VBc3NldFN0cgkAAAIAAAABCQABLAAAAAIFAAAADGJhc2VBc3NldFN0cgIAAAAcIGhhcyBiZWVuIGFscmVhZHkgcmVnaXN0ZXJlZAMJAQAAAAIhPQAAAAIJAAQlAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkAAAIAAAABAgAAAB5pbnZhbGlkIHNodXRkb3duTWFuYWdlckFkZHJlc3MDCQEAAAACIT0AAAACCQAEJQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAE3RvcHVwTWFuYWdlckFkZHJlc3MFAAAAE3RvcHVwTWFuYWdlckFkZHJlc3MJAAACAAAAAQIAAAAbaW52YWxpZCB0b3B1cE1hbmFnZXJBZGRyZXNzAwkAAGYAAAACAAAAAAAAAAAABQAAABBnZXREZWxheWluQmxvY2tzCQAAAgAAAAEJAAEsAAAAAgIAAAAZaW52YWxpZCBnZXREZWxheWluQmxvY2tzPQkAAaQAAAABBQAAABBnZXREZWxheWluQmxvY2tzAwMJAABnAAAAAgAAAAAAAAAAAAUAAAAYdG9wdXBNYXhOZWdhdGl2ZVBlcmNlbnRzBgkAAGcAAAACBQAAABh0b3B1cE1heE5lZ2F0aXZlUGVyY2VudHMAAAAAAAAAAGMJAAACAAAAAQIAAAAmaW52YWxpZCB0b3B1cE1heE5lZ2F0aXZlUGFydCBwYXJhbWV0ZXIEAAAAD3NoYXJlSW5pdEFtb3VudAkBAAAAEWNvbnZlcnRCYXNlMlNoYXJlAAAAAwUAAAAQYmFzZUFzc2V0QmFsYW5jZQUAAAAKc3RhcnRQcmljZQUAAAARZGVjaW1hbHNNdWx0UHJpY2UEAAAAFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgkABEIAAAAFBQAAAA5zaGFyZUFzc2V0TmFtZQUAAAAPc2hhcmVBc3NldERlc2NyBQAAAA9zaGFyZUluaXRBbW91bnQFAAAACGRlY2ltYWxzBgQAAAAMc2hhcmVBc3NldElkCQAEOAAAAAEFAAAAFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgQAAAANc2hhcmVBc3NldFN0cgkAAlgAAAABBQAAAAxzaGFyZUFzc2V0SWQEAAAAE2ludGVybmFsQmFzZUFzc2V0SWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAAAAAAAAAAAAAABAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAaQAAAABBQAAABNpbnRlcm5hbEJhc2VBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlBc3NldENmZwAAAAEFAAAADGJhc2VBc3NldFN0cgkBAAAADGRhdGFBc3NldENmZwAAAAwFAAAADXNoYXJlQXNzZXRTdHIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAQZ2V0RGVsYXlpbkJsb2NrcwUAAAAVdG9wdXBJbnRlcnZhbEluQmxvY2tzBQAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAUAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwUAAAATc3VibWl0TGltaXRzQmFzZU1heAUAAAAVc3VibWl0TGltaXRzQmFzZVJlc2V0BQAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAUAAAAWc3VibWl0TGltaXRzU2hhcmVSZXNldAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEFAAAAE2ludGVybmFsQmFzZUFzc2V0SWQFAAAADGJhc2VBc3NldFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEFAAAADGJhc2VBc3NldFN0cgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAHGtleU1hcHBpbmdzU2hhcmUyYmFzZUFzc2V0SWQAAAABBQAAAA1zaGFyZUFzc2V0U3RyBQAAAAxiYXNlQXNzZXRTdHIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAHGtleU1hcHBpbmdzQmFzZUFzc2V0MnNoYXJlSWQAAAABBQAAAAxiYXNlQXNzZXRTdHIFAAAADXNoYXJlQXNzZXRTdHIJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAABdrZXlTaHV0ZG93blB1dE9wZXJhdGlvbgAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASa2V5U2h1dGRvd25NYW5hZ2VyAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAFnNodXRkb3duTWFuYWdlckFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlOZXh0SW50ZXJuYWxBc3NldElkAAAAAAkAAGQAAAACBQAAABNpbnRlcm5hbEJhc2VBc3NldElkAAAAAAAAAAABCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAMa2V5UHJpY2VMYXN0AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAACnN0YXJ0UHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAADBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAKc3RhcnRQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEmtleVRvcFVwQ3VycmVudElkeAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAAAAAAAAAACQAETAAAAAIJAQAAABpSZW1haW5pbmdMaW1pdHNTdHJpbmdFbnRyeQAAAAMJAQAAABJrZXlMaW1pdHNSZW1haW5pbmcAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAATc3VibWl0TGltaXRzQmFzZU1heAUAAAAUc3VibWl0TGltaXRzU2hhcmVNYXgJAARMAAAAAgUAAAAVc2hhcmVBc3NldElzc3VlQWN0aW9uBQAAAANuaWwAAAABaQEAAAALc2h1dGRvd25QdXQAAAABAAAAE2ludGVybmFsQmFzZUFzc2V0SWQEAAAAFmludGVybmFsQmFzZUFzc2V0SWRTdHIJAAGkAAAAAQUAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAQAAAAOYmFzZUFzc2V0SWRTdHIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEFAAAAE2ludGVybmFsQmFzZUFzc2V0SWQEAAAAFnNodXRkb3duTWFuYWdlckFkZHJlc3MJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAASa2V5U2h1dGRvd25NYW5hZ2VyAAAAAQUAAAAWaW50ZXJuYWxCYXNlQXNzZXRJZFN0cgMJAABmAAAAAgAAAAAAAAAAAQkAATEAAAABBQAAAA5iYXNlQXNzZXRJZFN0cgkAAAIAAAABAgAAABtpbnZhbGlkIGludGVybmFsQmFzZUFzc2V0SWQDCQEAAAACIT0AAAACCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkAAAIAAAABAgAAAA1hY2Nlc3MgZGVuaWVkCQAETAAAAAIJAQAAAAxCb29sZWFuRW50cnkAAAACCQEAAAAXa2V5U2h1dGRvd25QdXRPcGVyYXRpb24AAAABCQABpAAAAAEFAAAAE2ludGVybmFsQmFzZUFzc2V0SWQGBQAAAANuaWwAAAABaQEAAAAJc3VibWl0UHV0AAAAAAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAhpbkFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQEAAAACWluQXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAxiYXNlQXNzZXRTdHIJAAJYAAAAAQUAAAAJaW5Bc3NldElkCQEAAAAGc3VibWl0AAAABQIAAAABUAUAAAABaQUAAAAIaW5BbW91bnQFAAAACWluQXNzZXRJZAUAAAAMYmFzZUFzc2V0U3RyAAAAAWkBAAAACXN1Ym1pdEdldAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAIaW5BbW91bnQIBQAAAANwbXQAAAAGYW1vdW50BAAAAAlpbkFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAQAAAANc2hhcmVBc3NldFN0cgkAAlgAAAABBQAAAAlpbkFzc2V0SWQEAAAADGJhc2VBc3NldFN0cgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABxrZXlNYXBwaW5nc1NoYXJlMmJhc2VBc3NldElkAAAAAQUAAAANc2hhcmVBc3NldFN0cgkBAAAABnN1Ym1pdAAAAAUCAAAAAUcFAAAAAWkFAAAACGluQW1vdW50BQAAAAlpbkFzc2V0SWQFAAAADGJhc2VBc3NldFN0cgAAAAFpAQAAAApleGVjdXRlUHV0AAAAAwAAAAxiYXNlQXNzZXRTdHIAAAAOdXNlckFkZHJlc3NTdHIAAAANc3VibWl0VHhJZFN0cgkBAAAAB2V4ZWN1dGUAAAAEAgAAAAFQBQAAAAxiYXNlQXNzZXRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAA1zdWJtaXRUeElkU3RyAAAAAWkBAAAACmV4ZWN1dGVHZXQAAAADAAAADGJhc2VBc3NldFN0cgAAAA51c2VyQWRkcmVzc1N0cgAAAA1zdWJtaXRUeElkU3RyCQEAAAAHZXhlY3V0ZQAAAAQCAAAAAUcFAAAADGJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADXN1Ym1pdFR4SWRTdHIAAAABaQEAAAAMdG9wVXBCYWxhbmNlAAAAAgAAAAxiYXNlQXNzZXRTdHIAAAAGYW1vdW50BAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADWFzc2V0Q2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAEklkeENmZ1NoYXJlQXNzZXRJZAQAAAAJcHJpY2VNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UEAAAADWJvdGhBc3NldE11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABxJZHhDZmdEZWNpbWFsc011bHRCb3RoQXNzZXRzBAAAABV0b3B1cEludGVydmFsSW5CbG9ja3MJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABtJZHhDZmdUb3B1cEludGVydmFsSW5CbG9ja3MEAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAaSWR4Q2ZnVG9wdXBNYXhOZWdhdGl2ZVBhcnQEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAF0lkeENmZ0ludGVybmFsQmFzZUFzc2V0BAAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAGUlkeENmZ1RvcHVwTWFuYWdlckFkZHJlc3MEAAAAEnRvcFVwQ3VycmVudElkeEtFWQkBAAAAEmtleVRvcFVwQ3VycmVudElkeAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAAxwcmV2VG9wVXBJZHgJAQAAAAxnZXRJbnRPckZhaWwAAAABBQAAABJ0b3BVcEN1cnJlbnRJZHhLRVkEAAAAD2N1cnJlbnRUb3BVcElkeAkAAGQAAAACBQAAAAxwcmV2VG9wVXBJZHgAAAAAAAAAAAEEAAAABXZhbGlkAwkAAGYAAAACBQAAAAZhbW91bnQAAAAAAAAAAAAEAAAAA3BtdAkBAAAABXZhbHVlAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAKcG10QXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkAwkBAAAAAiE9AAAAAgUAAAALYmFzZUFzc2V0SWQFAAAACnBtdEFzc2V0SWQJAAACAAAAAQIAAAA+YXR0YWNoZWQgcGF5bWVudCdzIGFzc2V0IGlkIGlzIE5PVCBtYXRjaGVkIHBhc3NlZCBiYXNlQXNzZXRTdHIDCQAAZgAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAEJAAACAAAAAQIAAAAgb25seSBvbmUgcGF5bWVudCBjYW4gYmUgYXR0YWNoZWQDCQEAAAACIT0AAAACCAUAAAADcG10AAAABmFtb3VudAUAAAAGYW1vdW50CQAAAgAAAAECAAAAPWF0dGFjaGVkIHBheW1lbnQuYW1vdW50IGlzIE5PVCBtYXRjaGVkIHBhc3NlZCBhbW91bnQgYXJndW1lbnQGAwkAAGYAAAACAAAAAAAAAAAABQAAAAZhbW91bnQEAAAAC2Jhc2VCYWxhbmNlCQAD8AAAAAIFAAAABHRoaXMFAAAAC2Jhc2VBc3NldElkBAAAAA1hbGxvd2VkQW1vdW50CQAAawAAAAMFAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0BQAAAAtiYXNlQmFsYW5jZQUAAAANYm90aEFzc2V0TXVsdAMJAABmAAAAAgkBAAAAAS0AAAABBQAAAAZhbW91bnQFAAAADWFsbG93ZWRBbW91bnQJAAACAAAAAQkAASwAAAACAgAAAC9Ub3B1cCBuZWdhdGl2ZSBhbW91bnQgY291bGRuJ3QgYmUgZ3JlYXRlciB0aGFuIAkAAaQAAAABBQAAAA1hbGxvd2VkQW1vdW50BgkAAAIAAAABAgAAABp6ZXJvIGFtb3VudCBpcyBub3QgYWxsb3dlZAQAAAASdG9wVXBMYXN0SGVpZ2h0S0VZCQEAAAASa2V5VG9wVXBMYXN0SGVpZ2h0AAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA90b3BVcExhc3RIZWlnaHQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAASdG9wVXBMYXN0SGVpZ2h0S0VZAAAAAAAAAAAAAwkBAAAAAiE9AAAAAgkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIFAAAAFnRvcFVwTWFuYWdlckFkZHJlc3NTdHIJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAEm9ubHkgdG9wVXBNYW5hZ2VyPQUAAAAWdG9wVXBNYW5hZ2VyQWRkcmVzc1N0cgIAAAAcIGNhbiBzZW5kIHRvcFVwIHRyYW5zYWN0aW9ucwMJAQAAAAEhAAAAAQUAAAAFdmFsaWQJAAACAAAAAQIAAAARdmFsaWRhdGlvbiBmYWlsZWQDCQAAZgAAAAIFAAAAFXRvcHVwSW50ZXJ2YWxJbkJsb2NrcwkAAGUAAAACBQAAAAZoZWlnaHQFAAAAD3RvcFVwTGFzdEhlaWdodAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAMMSB0b3B1cCBwZXIgCQABpAAAAAEFAAAAFXRvcHVwSW50ZXJ2YWxJbkJsb2NrcwIAAAAoIGJsb2NrcyBmcm9tIHRoZSBzYW1lIGFkZHJlc3MgaXMgYWxsb3dlZAQAAAAFcHJpY2UICQEAAAAQZ2VuZXJpY0NhbGNQcmljZQAAAAUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAtiYXNlQXNzZXRJZAUAAAAGYW1vdW50BQAAAAxzaGFyZUFzc2V0SWQFAAAACXByaWNlTXVsdAAAAAJfMQQAAAAJZGlmZlR1cGxlCQEAAAATY2FsY1RvdGFsTG9ja2VkRGlmZgAAAAgCAAAABXRvcHVwAgAAAAAFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAVwcmljZQUAAAAJcHJpY2VNdWx0AAAAAAAAAAAABQAAAAtiYXNlQXNzZXRJZAUAAAAMc2hhcmVBc3NldElkBAAAAA50b3B1cFRvdGFsRGlmZggFAAAACWRpZmZUdXBsZQAAAAJfMQQAAAALcHJpY2VBdGhLRVkJAQAAAAtrZXlQcmljZUFUSAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAAxwcmV2UHJpY2VBVEgJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAALcHJpY2VBdGhLRVkAAAAAAAAAAAAJAAROAAAAAgkABE0AAAACCQAETQAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAFcHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA9rZXlQcmljZUhpc3RvcnkAAAADBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAFcHJpY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJrZXlQcmljZUJ5VG9wVXBJZHgAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAPY3VycmVudFRvcFVwSWR4BQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASdG9wVXBDdXJyZW50SWR4S0VZBQAAAA9jdXJyZW50VG9wVXBJZHgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAC3ByaWNlQXRoS0VZAwkAAGYAAAACBQAAAAVwcmljZQUAAAAMcHJldlByaWNlQVRIBQAAAAVwcmljZQUAAAAMcHJldlByaWNlQVRICQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJ0b3BVcExhc3RIZWlnaHRLRVkFAAAABmhlaWdodAUAAAADbmlsCQEAAAAWVG90YWxMb2NrZWRTdHJpbmdFbnRyeQAAAAMCAAAACURFQ1JFTUVOVAkBAAAADmtleVRvdGFsTG9ja2VkAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAADnRvcHVwVG90YWxEaWZmCQEAAAAEQnVybgAAAAIFAAAADHNoYXJlQXNzZXRJZAkAAZEAAAACBQAAAA50b3B1cFRvdGFsRGlmZgUAAAAVSWR4VG90YWxMb2NrZWRJblNoYXJlAwkAAGYAAAACAAAAAAAAAAAABQAAAAZhbW91bnQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyCQEAAAABLQAAAAEFAAAABmFtb3VudAUAAAALYmFzZUFzc2V0SWQFAAAAA25pbAUAAAADbmlsAAAAAWkBAAAAFGN1cnJlbnRTeXNQYXJhbXNSRVNUAAAAAQAAAAxiYXNlQXNzZXRTdHIEAAAADXN5c1N0YXRlVHVwbGUJAQAAABtwcml2YXRlQ3VycmVudFN5c1BhcmFtc1JFU1QAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAABXByaWNlCAgFAAAADXN5c1N0YXRlVHVwbGUAAAACXzEAAAAFdmFsdWUEAAAAEWRlY2ltYWxzTXVsdFByaWNlCAgFAAAADXN5c1N0YXRlVHVwbGUAAAACXzIAAAAFdmFsdWUEAAAAEGJhc2VBc3NldEJhbGFuY2UICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfMwAAAAV2YWx1ZQQAAAAVdG90YWxMb2NrZWRCYXNlQW1vdW50CAgFAAAADXN5c1N0YXRlVHVwbGUAAAACXzQAAAAFdmFsdWUEAAAAH2Jhc2VBc3NldEJhbGFuY2VDb25zaWRlcmluZ0xvY2sICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfNQAAAAV2YWx1ZQQAAAANc2hhcmVFbWlzc2lvbggIBQAAAA1zeXNTdGF0ZVR1cGxlAAAAAl82AAAABXZhbHVlBAAAAAhyZXN0RGF0YQkABLkAAAACCQAETAAAAAICAAAAGXN0YXJ0Q3VycmVudFN5c1BhcmFtc1JFU1QJAARMAAAAAgkAAaQAAAABBQAAAAVwcmljZQkABEwAAAACCQABpAAAAAEFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAAQYmFzZUFzc2V0QmFsYW5jZQkABEwAAAACCQABpAAAAAEFAAAAFXRvdGFsTG9ja2VkQmFzZUFtb3VudAkABEwAAAACCQABpAAAAAEFAAAAH2Jhc2VBc3NldEJhbGFuY2VDb25zaWRlcmluZ0xvY2sJAARMAAAAAgkAAaQAAAABBQAAAA1zaGFyZUVtaXNzaW9uCQAETAAAAAICAAAAF2VuZEN1cnJlbnRTeXNQYXJhbXNSRVNUBQAAAANuaWwFAAAAA1NFUAkAAAIAAAABBQAAAAhyZXN0RGF0YQAAAACEbu6d", "chainId": 84, "height": 1452996, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AtmcApaBYr5XgwQW1KJ8fpAq4uAU7AWqLAWBaV8f4qns Next: DtnPPqZXor71n3iJtMQAB13ee419iGiCDx5qvcKjrPbD Diff:
OldNewDifferences
230230 if ((0 > bH))
231231 then throw(((("baseAssetBalanceCALC < 0: baseAssetBalance=" + toString(bG)) + " baseAssetBalanceCALC=") + toString(bH)))
232232 else {
233+ let bL = e(y(C))
233234 let s = if ((bJ == 0))
234- then (2 * aj)
235+ then bL
235236 else fraction(bH, aj, bK)
236237 $Tuple5(s, bG, bF, bH, bJ)
237238 }
238239 }
239240
240241
241-func bL (C,aH,aI,aj) = bD(C, aH, 0, aI, aj)
242+func bM (C,aH,aI,aj) = bD(C, aH, 0, aI, aj)
242243
243244
244-func bM (k,bN,aG,bO,h) = {
245- let bP = toBase58String(bO)
246- let i = toString(bN.caller)
245+func bN (k,bO,aG,bP,h) = {
246+ let bQ = toBase58String(bP)
247+ let i = toString(bO.caller)
247248 let aH = fromBase58String(h)
248- let bQ = bx(h)
249- let N = bQ[V]
249+ let bR = bx(h)
250+ let N = bR[V]
250251 let aI = fromBase58String(N)
251- let ai = parseIntValue(bQ[X])
252- let C = bQ[W]
253- let bR = U(C)
254- let bS = split(b(bR), a)
255- let bT = parseIntValue(bS[by])
256- let bU = parseIntValue(bS[bz])
257- let bV = d(P(C))
258- if (bV)
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)
259260 then throw("put operation is blocked")
260261 else {
261- let bW = aE("submit", k, C, 0, 0, aG, aH, aI)
262- let bX = (bT - bW._2[au])
263- let bY = (bU - bW._2[as])
264- if (if ((0 > bX))
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))
265266 then true
266- else (0 > bY))
267- then l(bT, bU, bX, bY)
267+ else (0 > bZ))
268+ then l(bU, bV, bY, bZ)
268269 else {
269- let bZ = e(R(C))
270- ((([StringEntry(aW(k, C, i, toBase58String(bN.transactionId)), br("PENDING", aG, 0, 0, height, lastBlock.timestamp, 0, 0, (bZ + 1)))] :+ aP("INCREMENT", H(C), bW._1)) :+ aP("INCREMENT", I(C, i), bW._2)) :+ bA(bR, bX, bY))
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))
271272 }
272273 }
273274 }
274275
275276
276-func ca (k,h,i,j) = {
277+func cb (k,h,i,j) = {
277278 let aX = addressFromStringValue(i)
278- let cb = bx(h)
279- let aI = fromBase58String(cb[V])
280- let C = cb[W]
281- let aj = parseIntValue(cb[Y])
279+ let cc = bx(h)
280+ let aI = fromBase58String(cc[V])
281+ let C = cc[W]
282+ let aj = parseIntValue(cc[Y])
282283 let aH = fromBase58String(h)
283- let cc = aW(k, C, i, j)
284- let cd = split(b(cc), a)
285- let bj = cd[aZ]
286- let aG = parseIntValue(cd[ba])
287- let ce = parseIntValue(cd[bh])
288- let cf = e(R(C))
289- let cg = e(B(C, cf))
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))
290291 if ((bj != "PENDING"))
291292 then f("Status is not PENDING", h, i, j, k)
292- else if ((ce > cf))
293- then f(((("OperLock[" + toString(ce)) + "] > ") + toString(cf)), h, i, j, k)
293+ else if ((cf > cg))
294+ then f(((("OperLock[" + toString(cf)) + "] > ") + toString(cg)), h, i, j, k)
294295 else {
295- let bW = aE("execute", k, C, cg, aj, aG, aH, aI)
296- let aM = bW._3
297- let ch = if ((bW._4 == aH))
296+ let bX = aE("execute", k, C, ch, aj, aG, aH, aI)
297+ let aM = bX._3
298+ let ci = if ((bX._4 == aH))
298299 then [ScriptTransfer(aX, aM, aH)]
299300 else [Reissue(aI, aM, true), ScriptTransfer(aX, aM, aI)]
300- (((ch :+ StringEntry(cc, bs(cd, "FINISHED", cg, aM))) :+ aP("DECREMENT", H(C), bW._1)) :+ aP("DECREMENT", I(C, i), bW._2))
301+ (((ci :+ StringEntry(cd, bs(ce, "FINISHED", ch, aM))) :+ aP("DECREMENT", H(C), bX._1)) :+ aP("DECREMENT", I(C, i), bX._2))
301302 }
302303 }
303304
304305
305-func ci (h) = {
306+func cj (h) = {
306307 let aH = fromBase58String(h)
307- let bQ = bx(h)
308- let N = bQ[V]
308+ let bR = bx(h)
309+ let N = bR[V]
309310 let aI = fromBase58String(N)
310- let ai = parseIntValue(bQ[X])
311- let aj = parseIntValue(bQ[Y])
312- let C = bQ[W]
313- let cj = bL(C, aH, aI, aj)
314- $Tuple6(IntegerEntry("price", cj._1), IntegerEntry("decimalsMultPrice", aj), IntegerEntry("baseAssetBalance", cj._2), IntegerEntry("totalLockedBaseAmount", cj._3), IntegerEntry("baseAssetBalanceConsideringLock", cj._4), IntegerEntry("shareEmission", cj._5))
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))
315316 }
316317
317318
318-@Callable(bN)
319-func adminRegisterAsset (h,ck,cl,cm,cn,co,al,am,an,ao,ap,aq,ar) = {
319+@Callable(bO)
320+func adminRegisterAsset (h,cl,cm,cn,co,cp,al,am,an,ao,ap,aq,ar) = {
320321 let aH = fromBase58String(h)
321- let cp = value(assetInfo(aH)).decimals
322- let ai = pow(10, 0, cp, 0, 0, DOWN)
322+ let cq = value(assetInfo(aH)).decimals
323+ let ai = pow(10, 0, cq, 0, 0, DOWN)
323324 let aj = ((100 * 1000) * 1000)
324- let cq = fraction(am, 100, ai)
325+ let cr = fraction(am, 100, ai)
325326 let bG = assetBalance(this, aH)
326- if ((bN.caller != this))
327+ if ((bO.caller != this))
327328 then throw("permissions denied")
328329 else if ((bG == 0))
329330 then throw(((toString(this) + " must have any initial balance of ") + h))
330331 else if (isDefined(getString(this, w(h))))
331332 then throw((h + " has been already registered"))
332- else if ((toString(addressFromStringValue(cn)) != cn))
333+ else if ((toString(addressFromStringValue(co)) != co))
333334 then throw("invalid shutdownManagerAddress")
334335 else if ((toString(addressFromStringValue(an)) != an))
335336 then throw("invalid topupManagerAddress")
336- else if ((0 > cm))
337- then throw(("invalid getDelayinBlocks=" + toString(cm)))
338- else if (if ((0 >= cq))
337+ else if ((0 > cn))
338+ then throw(("invalid getDelayinBlocks=" + toString(cn)))
339+ else if (if ((0 >= cr))
339340 then true
340- else (cq >= 99))
341+ else (cr >= 99))
341342 then throw("invalid topupMaxNegativePart parameter")
342343 else {
343- let cr = u(bG, co, aj)
344- let cs = Issue(ck, cl, cr, cp, true)
345- let aI = calculateAssetId(cs)
344+ let cs = u(bG, cp, aj)
345+ let ct = Issue(cl, cm, cs, cq, true)
346+ let aI = calculateAssetId(ct)
346347 let N = toBase58String(aI)
347- let ct = valueOrElse(getInteger(this, x()), 0)
348- let C = toString(ct)
349-[StringEntry(w(h), ah(N, C, ai, aj, cm, al, am, an, ao, ap, aq, ar)), StringEntry(J(ct), h), StringEntry(L(h), C), StringEntry(M(N), h), StringEntry(O(h), N), BooleanEntry(P(C), false), StringEntry(Q(C), cn), IntegerEntry(x(), (ct + 1)), IntegerEntry(y(C), co), IntegerEntry(E(C, height, lastBlock.timestamp), co), IntegerEntry(R(C), 0), bA(U(C), ao, aq), cs]
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]
350351 }
351352 }
352353
353354
354355
355-@Callable(bN)
356-func shutdownPut (ct) = {
357- let cu = toString(ct)
358- let cv = b(J(ct))
359- let cn = b(Q(cu))
360- if ((1 > size(cv)))
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)))
361362 then throw("invalid internalBaseAssetId")
362- else if ((toString(bN.caller) != cn))
363+ else if ((toString(bO.caller) != co))
363364 then throw("access denied")
364- else [BooleanEntry(P(toString(ct)), true)]
365+ else [BooleanEntry(P(toString(cu)), true)]
365366 }
366367
367368
368369
369-@Callable(bN)
370+@Callable(bO)
370371 func submitPut () = {
371- let cw = value(bN.payments[0])
372- let aG = cw.amount
373- let bO = value(cw.assetId)
374- let h = toBase58String(bO)
375- bM("P", bN, aG, bO, h)
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)
376377 }
377378
378379
379380
380-@Callable(bN)
381+@Callable(bO)
381382 func submitGet () = {
382- let cw = value(bN.payments[0])
383- let aG = cw.amount
384- let bO = value(cw.assetId)
385- let N = toBase58String(bO)
383+ let cx = value(bO.payments[0])
384+ let aG = cx.amount
385+ let bP = value(cx.assetId)
386+ let N = toBase58String(bP)
386387 let h = b(M(N))
387- bM("G", bN, aG, bO, h)
388+ bN("G", bO, aG, bP, h)
388389 }
389390
390391
391392
392-@Callable(bN)
393-func executePut (h,i,j) = ca("P", h, i, j)
393+@Callable(bO)
394+func executePut (h,i,j) = cb("P", h, i, j)
394395
395396
396397
397-@Callable(bN)
398-func executeGet (h,i,j) = ca("G", h, i, j)
398+@Callable(bO)
399+func executeGet (h,i,j) = cb("G", h, i, j)
399400
400401
401402
402-@Callable(bN)
403-func topUpBalance (h,cx) = {
403+@Callable(bO)
404+func topUpBalance (h,cy) = {
404405 let aH = fromBase58String(h)
405- let cb = bx(h)
406- let aI = fromBase58String(cb[V])
407- let t = parseIntValue(cb[Y])
408- let cy = parseIntValue(cb[X])
409- let al = parseIntValue(cb[aa])
410- let am = parseIntValue(cb[ab])
411- let C = cb[W]
412- let cz = R(C)
413- let cA = e(cz)
414- let cB = (cA + 1)
415- let cC = if ((cx > 0))
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))
416418 then {
417- let cw = value(bN.payments[0])
418- let cD = value(cw.assetId)
419- if ((aH != cD))
419+ let cx = value(bO.payments[0])
420+ let cF = value(cx.assetId)
421+ if ((aH != cF))
420422 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
421- else if ((size(bN.payments) > 1))
423+ else if ((size(bO.payments) > 1))
422424 then throw("only one payment can be attached")
423- else if ((cw.amount != cx))
425+ else if ((cx.amount != cy))
424426 then throw("attached payment.amount is NOT matched passed amount argument")
425427 else true
426428 }
427- else if ((0 > cx))
429+ else if ((0 > cy))
428430 then {
429- let cE = assetBalance(this, aH)
430- let cF = fraction(am, cE, cy)
431- if ((-(cx) > cF))
432- then throw(("Topup negative amount couldn't be greater than " + toString(cF)))
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)))
433435 else true
434436 }
435437 else throw("zero amount is not allowed")
436- let cG = S(C, toString(bN.caller))
437- let cH = valueOrElse(getInteger(this, cG), 0)
438- if (!(cC))
439- then throw("validation failed")
440- else if ((al > (height - cH)))
441- then throw((("1 topup per " + toString(al)) + " blocks from the same address is allowed"))
442- else {
443- let s = bD(C, aH, cx, aI, t)._1
444- let bW = aE("topup", "", C, s, t, 0, aH, aI)
445- let cI = bW._1
446- let cJ = A(C)
447- let cK = valueOrElse(getInteger(this, cJ), 0)
448- (([IntegerEntry(y(C), s), IntegerEntry(E(C, height, lastBlock.timestamp), s), IntegerEntry(B(C, cB), s), IntegerEntry(cz, cB), IntegerEntry(cJ, if ((s > cK))
449- then s
450- else cK), IntegerEntry(cG, height)] :+ aP("DECREMENT", H(C), cI)) :+ Burn(aI, cI[as]))
451- }
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))
443+ 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"))
446+ 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)]
456+ else nil))
457+ }
452458 }
453459
454460
455461
456-@Callable(bN)
462+@Callable(bO)
457463 func currentSysParamsREST (h) = {
458- let cL = ci(h)
459- let s = cL._1.value
460- let aj = cL._2.value
461- let bG = cL._3.value
462- let cM = cL._4.value
463- let cN = cL._5.value
464- let bJ = cL._6.value
465- let cO = makeString(["startCurrentSysParamsREST", toString(s), toString(aj), toString(bG), toString(cM), toString(cN), toString(bJ), "endCurrentSysParamsREST"], a)
466- throw(cO)
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)
467473 }
468474
469475
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
2121 func q (r,s,t) = fraction(r, s, t)
2222
2323
2424 func u (v,s,t) = fraction(v, t, s)
2525
2626
2727 func w (h) = ("%s%s%s__config__asset__" + h)
2828
2929
3030 func x () = "%s__nextInternalAssetId"
3131
3232
3333 func y (z) = ("%s%s%d__price__last__" + z)
3434
3535
3636 func A (z) = ("%s%s%d__price__ath__" + z)
3737
3838
3939 func B (C,D) = makeString(["%s%s%d%d__price__byTopUpIdx", C, toString(D)], a)
4040
4141
4242 func E (z,F,G) = makeString(["%s%s%d%d%d__price__history", z, toString(F), toString(G)], a)
4343
4444
4545 func H (z) = ("%s%s%d__total__locked__" + z)
4646
4747
4848 func I (C,i) = makeString(["%s%s%d%s__total__locked", C, i], a)
4949
5050
5151 func J (K) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(K))
5252
5353
5454 func L (h) = ("%s%s%s__mappings__baseAsset2internalId__" + h)
5555
5656
5757 func M (N) = ("%s%s%s__mappings__share2baseAssetId__" + N)
5858
5959
6060 func O (h) = ("%s%s%s__mappings__baseAsset2shareId__" + h)
6161
6262
6363 func P (C) = ("%s%s%d__shutdown__put__" + C)
6464
6565
6666 func Q (C) = ("%s%s%d__shutdown__manager__" + C)
6767
6868
6969 func R (C) = ("%s%s%d__topup__currentIdx__" + C)
7070
7171
7272 func S (z,T) = makeString(["%s%s%s%d%s__topup__last__height", z, T], a)
7373
7474
7575 func U (z) = ("%s%s%d__limits__remaining__" + z)
7676
7777
7878 let V = 1
7979
8080 let W = 2
8181
8282 let X = 3
8383
8484 let Y = 4
8585
8686 let Z = 5
8787
8888 let aa = 6
8989
9090 let ab = 7
9191
9292 let ac = 8
9393
9494 let ad = 9
9595
9696 let ae = 10
9797
9898 let af = 11
9999
100100 let ag = 12
101101
102102 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)
103103
104104
105105 let as = 1
106106
107107 let at = 2
108108
109109 let au = 3
110110
111111 let av = 4
112112
113113 func aw (ax,ay,az,aA) = makeString(["%d%d%d%d", toString(ax), toString(ay), toString(az), toString(aA)], a)
114114
115115
116116 func aB (ax,ay,az,aA) = [-1, ax, ay, az, aA]
117117
118118
119119 func aC (c) = {
120120 let aD = split(valueOrElse(getString(this, c), aw(0, 0, 0, 0)), a)
121121 aB(parseIntValue(aD[as]), parseIntValue(aD[at]), parseIntValue(aD[au]), parseIntValue(aD[av]))
122122 }
123123
124124
125125 func aE (aF,k,C,s,t,aG,aH,aI) = {
126126 let aJ = (aF + k)
127127 if ((aJ == "submitP"))
128128 then {
129129 let aK = aB(0, 0, aG, 0)
130130 let aL = aK
131131 $Tuple4(aK, aL, 0, fromBase58String(""))
132132 }
133133 else if ((aJ == "submitG"))
134134 then {
135135 let aK = aB(aG, 0, 0, 0)
136136 let aL = aK
137137 $Tuple4(aK, aL, 0, fromBase58String(""))
138138 }
139139 else if ((aJ == "executeP"))
140140 then {
141141 let aM = u(aG, s, t)
142142 let aK = aB(0, 0, 0, aM)
143143 let aL = aB(0, 0, aG, 0)
144144 $Tuple4(aK, aL, aM, aI)
145145 }
146146 else if ((aJ == "executeG"))
147147 then {
148148 let aM = q(aG, s, t)
149149 let aK = aB(0, aM, 0, 0)
150150 let aL = aB(aG, 0, 0, 0)
151151 $Tuple4(aK, aL, aM, aH)
152152 }
153153 else if ((aJ == "topup"))
154154 then {
155155 let aD = aC(H(C))
156156 let aN = aD[au]
157157 let aO = aD[as]
158158 let aK = aB(aO, (-1 * q(aO, s, t)), aN, (-1 * u(aN, s, t)))
159159 $Tuple4(aK, nil, 0, fromBase58String(""))
160160 }
161161 else throw(("Unsupported Type " + aJ))
162162 }
163163
164164
165165 func aP (aQ,c,aR) = {
166166 func aS (aT,aU) = if ((aQ == "INCREMENT"))
167167 then (aT + aU)
168168 else if ((aQ == "DECREMENT"))
169169 then (aT - aU)
170170 else throw(("Unsupported action " + aQ))
171171
172172 let aV = aC(c)
173173 StringEntry(c, aw(aS(aV[as], aR[as]), aS(aV[at], aR[at]), aS(aV[au], aR[au]), aS(aV[av], aR[av])))
174174 }
175175
176176
177177 func aW (k,C,aX,aY) = makeString(["%s%d%s%s", k, C, aX, aY], a)
178178
179179
180180 let aZ = 1
181181
182182 let ba = 2
183183
184184 let bb = 3
185185
186186 let bc = 4
187187
188188 let bd = 5
189189
190190 let be = 6
191191
192192 let bf = 7
193193
194194 let bg = 8
195195
196196 let bh = 9
197197
198198 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)
199199
200200
201201 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))
202202
203203
204204 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])
205205
206206
207207 func bx (h) = {
208208 let c = w(h)
209209 split(b(c), a)
210210 }
211211
212212
213213 let by = 1
214214
215215 let bz = 2
216216
217217 func bA (c,bB,bC) = StringEntry(c, makeString(["%d%d", toString(bB), toString(bC)], a))
218218
219219
220220 func bD (C,aH,bE,aI,aj) = {
221221 let aD = aC(H(C))
222222 let bF = aD[at]
223223 let aN = aD[au]
224224 let bG = assetBalance(this, aH)
225225 let bH = (((bG + bE) - aN) - bF)
226226 let bI = aD[av]
227227 let aO = aD[as]
228228 let bJ = value(assetInfo(aI)).quantity
229229 let bK = (bJ + bI)
230230 if ((0 > bH))
231231 then throw(((("baseAssetBalanceCALC < 0: baseAssetBalance=" + toString(bG)) + " baseAssetBalanceCALC=") + toString(bH)))
232232 else {
233+ let bL = e(y(C))
233234 let s = if ((bJ == 0))
234- then (2 * aj)
235+ then bL
235236 else fraction(bH, aj, bK)
236237 $Tuple5(s, bG, bF, bH, bJ)
237238 }
238239 }
239240
240241
241-func bL (C,aH,aI,aj) = bD(C, aH, 0, aI, aj)
242+func bM (C,aH,aI,aj) = bD(C, aH, 0, aI, aj)
242243
243244
244-func bM (k,bN,aG,bO,h) = {
245- let bP = toBase58String(bO)
246- let i = toString(bN.caller)
245+func bN (k,bO,aG,bP,h) = {
246+ let bQ = toBase58String(bP)
247+ let i = toString(bO.caller)
247248 let aH = fromBase58String(h)
248- let bQ = bx(h)
249- let N = bQ[V]
249+ let bR = bx(h)
250+ let N = bR[V]
250251 let aI = fromBase58String(N)
251- let ai = parseIntValue(bQ[X])
252- let C = bQ[W]
253- let bR = U(C)
254- let bS = split(b(bR), a)
255- let bT = parseIntValue(bS[by])
256- let bU = parseIntValue(bS[bz])
257- let bV = d(P(C))
258- if (bV)
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)
259260 then throw("put operation is blocked")
260261 else {
261- let bW = aE("submit", k, C, 0, 0, aG, aH, aI)
262- let bX = (bT - bW._2[au])
263- let bY = (bU - bW._2[as])
264- if (if ((0 > bX))
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))
265266 then true
266- else (0 > bY))
267- then l(bT, bU, bX, bY)
267+ else (0 > bZ))
268+ then l(bU, bV, bY, bZ)
268269 else {
269- let bZ = e(R(C))
270- ((([StringEntry(aW(k, C, i, toBase58String(bN.transactionId)), br("PENDING", aG, 0, 0, height, lastBlock.timestamp, 0, 0, (bZ + 1)))] :+ aP("INCREMENT", H(C), bW._1)) :+ aP("INCREMENT", I(C, i), bW._2)) :+ bA(bR, bX, bY))
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))
271272 }
272273 }
273274 }
274275
275276
276-func ca (k,h,i,j) = {
277+func cb (k,h,i,j) = {
277278 let aX = addressFromStringValue(i)
278- let cb = bx(h)
279- let aI = fromBase58String(cb[V])
280- let C = cb[W]
281- let aj = parseIntValue(cb[Y])
279+ let cc = bx(h)
280+ let aI = fromBase58String(cc[V])
281+ let C = cc[W]
282+ let aj = parseIntValue(cc[Y])
282283 let aH = fromBase58String(h)
283- let cc = aW(k, C, i, j)
284- let cd = split(b(cc), a)
285- let bj = cd[aZ]
286- let aG = parseIntValue(cd[ba])
287- let ce = parseIntValue(cd[bh])
288- let cf = e(R(C))
289- let cg = e(B(C, cf))
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))
290291 if ((bj != "PENDING"))
291292 then f("Status is not PENDING", h, i, j, k)
292- else if ((ce > cf))
293- then f(((("OperLock[" + toString(ce)) + "] > ") + toString(cf)), h, i, j, k)
293+ else if ((cf > cg))
294+ then f(((("OperLock[" + toString(cf)) + "] > ") + toString(cg)), h, i, j, k)
294295 else {
295- let bW = aE("execute", k, C, cg, aj, aG, aH, aI)
296- let aM = bW._3
297- let ch = if ((bW._4 == aH))
296+ let bX = aE("execute", k, C, ch, aj, aG, aH, aI)
297+ let aM = bX._3
298+ let ci = if ((bX._4 == aH))
298299 then [ScriptTransfer(aX, aM, aH)]
299300 else [Reissue(aI, aM, true), ScriptTransfer(aX, aM, aI)]
300- (((ch :+ StringEntry(cc, bs(cd, "FINISHED", cg, aM))) :+ aP("DECREMENT", H(C), bW._1)) :+ aP("DECREMENT", I(C, i), bW._2))
301+ (((ci :+ StringEntry(cd, bs(ce, "FINISHED", ch, aM))) :+ aP("DECREMENT", H(C), bX._1)) :+ aP("DECREMENT", I(C, i), bX._2))
301302 }
302303 }
303304
304305
305-func ci (h) = {
306+func cj (h) = {
306307 let aH = fromBase58String(h)
307- let bQ = bx(h)
308- let N = bQ[V]
308+ let bR = bx(h)
309+ let N = bR[V]
309310 let aI = fromBase58String(N)
310- let ai = parseIntValue(bQ[X])
311- let aj = parseIntValue(bQ[Y])
312- let C = bQ[W]
313- let cj = bL(C, aH, aI, aj)
314- $Tuple6(IntegerEntry("price", cj._1), IntegerEntry("decimalsMultPrice", aj), IntegerEntry("baseAssetBalance", cj._2), IntegerEntry("totalLockedBaseAmount", cj._3), IntegerEntry("baseAssetBalanceConsideringLock", cj._4), IntegerEntry("shareEmission", cj._5))
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))
315316 }
316317
317318
318-@Callable(bN)
319-func adminRegisterAsset (h,ck,cl,cm,cn,co,al,am,an,ao,ap,aq,ar) = {
319+@Callable(bO)
320+func adminRegisterAsset (h,cl,cm,cn,co,cp,al,am,an,ao,ap,aq,ar) = {
320321 let aH = fromBase58String(h)
321- let cp = value(assetInfo(aH)).decimals
322- let ai = pow(10, 0, cp, 0, 0, DOWN)
322+ let cq = value(assetInfo(aH)).decimals
323+ let ai = pow(10, 0, cq, 0, 0, DOWN)
323324 let aj = ((100 * 1000) * 1000)
324- let cq = fraction(am, 100, ai)
325+ let cr = fraction(am, 100, ai)
325326 let bG = assetBalance(this, aH)
326- if ((bN.caller != this))
327+ if ((bO.caller != this))
327328 then throw("permissions denied")
328329 else if ((bG == 0))
329330 then throw(((toString(this) + " must have any initial balance of ") + h))
330331 else if (isDefined(getString(this, w(h))))
331332 then throw((h + " has been already registered"))
332- else if ((toString(addressFromStringValue(cn)) != cn))
333+ else if ((toString(addressFromStringValue(co)) != co))
333334 then throw("invalid shutdownManagerAddress")
334335 else if ((toString(addressFromStringValue(an)) != an))
335336 then throw("invalid topupManagerAddress")
336- else if ((0 > cm))
337- then throw(("invalid getDelayinBlocks=" + toString(cm)))
338- else if (if ((0 >= cq))
337+ else if ((0 > cn))
338+ then throw(("invalid getDelayinBlocks=" + toString(cn)))
339+ else if (if ((0 >= cr))
339340 then true
340- else (cq >= 99))
341+ else (cr >= 99))
341342 then throw("invalid topupMaxNegativePart parameter")
342343 else {
343- let cr = u(bG, co, aj)
344- let cs = Issue(ck, cl, cr, cp, true)
345- let aI = calculateAssetId(cs)
344+ let cs = u(bG, cp, aj)
345+ let ct = Issue(cl, cm, cs, cq, true)
346+ let aI = calculateAssetId(ct)
346347 let N = toBase58String(aI)
347- let ct = valueOrElse(getInteger(this, x()), 0)
348- let C = toString(ct)
349-[StringEntry(w(h), ah(N, C, ai, aj, cm, al, am, an, ao, ap, aq, ar)), StringEntry(J(ct), h), StringEntry(L(h), C), StringEntry(M(N), h), StringEntry(O(h), N), BooleanEntry(P(C), false), StringEntry(Q(C), cn), IntegerEntry(x(), (ct + 1)), IntegerEntry(y(C), co), IntegerEntry(E(C, height, lastBlock.timestamp), co), IntegerEntry(R(C), 0), bA(U(C), ao, aq), cs]
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]
350351 }
351352 }
352353
353354
354355
355-@Callable(bN)
356-func shutdownPut (ct) = {
357- let cu = toString(ct)
358- let cv = b(J(ct))
359- let cn = b(Q(cu))
360- if ((1 > size(cv)))
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)))
361362 then throw("invalid internalBaseAssetId")
362- else if ((toString(bN.caller) != cn))
363+ else if ((toString(bO.caller) != co))
363364 then throw("access denied")
364- else [BooleanEntry(P(toString(ct)), true)]
365+ else [BooleanEntry(P(toString(cu)), true)]
365366 }
366367
367368
368369
369-@Callable(bN)
370+@Callable(bO)
370371 func submitPut () = {
371- let cw = value(bN.payments[0])
372- let aG = cw.amount
373- let bO = value(cw.assetId)
374- let h = toBase58String(bO)
375- bM("P", bN, aG, bO, h)
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)
376377 }
377378
378379
379380
380-@Callable(bN)
381+@Callable(bO)
381382 func submitGet () = {
382- let cw = value(bN.payments[0])
383- let aG = cw.amount
384- let bO = value(cw.assetId)
385- let N = toBase58String(bO)
383+ let cx = value(bO.payments[0])
384+ let aG = cx.amount
385+ let bP = value(cx.assetId)
386+ let N = toBase58String(bP)
386387 let h = b(M(N))
387- bM("G", bN, aG, bO, h)
388+ bN("G", bO, aG, bP, h)
388389 }
389390
390391
391392
392-@Callable(bN)
393-func executePut (h,i,j) = ca("P", h, i, j)
393+@Callable(bO)
394+func executePut (h,i,j) = cb("P", h, i, j)
394395
395396
396397
397-@Callable(bN)
398-func executeGet (h,i,j) = ca("G", h, i, j)
398+@Callable(bO)
399+func executeGet (h,i,j) = cb("G", h, i, j)
399400
400401
401402
402-@Callable(bN)
403-func topUpBalance (h,cx) = {
403+@Callable(bO)
404+func topUpBalance (h,cy) = {
404405 let aH = fromBase58String(h)
405- let cb = bx(h)
406- let aI = fromBase58String(cb[V])
407- let t = parseIntValue(cb[Y])
408- let cy = parseIntValue(cb[X])
409- let al = parseIntValue(cb[aa])
410- let am = parseIntValue(cb[ab])
411- let C = cb[W]
412- let cz = R(C)
413- let cA = e(cz)
414- let cB = (cA + 1)
415- let cC = if ((cx > 0))
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))
416418 then {
417- let cw = value(bN.payments[0])
418- let cD = value(cw.assetId)
419- if ((aH != cD))
419+ let cx = value(bO.payments[0])
420+ let cF = value(cx.assetId)
421+ if ((aH != cF))
420422 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
421- else if ((size(bN.payments) > 1))
423+ else if ((size(bO.payments) > 1))
422424 then throw("only one payment can be attached")
423- else if ((cw.amount != cx))
425+ else if ((cx.amount != cy))
424426 then throw("attached payment.amount is NOT matched passed amount argument")
425427 else true
426428 }
427- else if ((0 > cx))
429+ else if ((0 > cy))
428430 then {
429- let cE = assetBalance(this, aH)
430- let cF = fraction(am, cE, cy)
431- if ((-(cx) > cF))
432- then throw(("Topup negative amount couldn't be greater than " + toString(cF)))
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)))
433435 else true
434436 }
435437 else throw("zero amount is not allowed")
436- let cG = S(C, toString(bN.caller))
437- let cH = valueOrElse(getInteger(this, cG), 0)
438- if (!(cC))
439- then throw("validation failed")
440- else if ((al > (height - cH)))
441- then throw((("1 topup per " + toString(al)) + " blocks from the same address is allowed"))
442- else {
443- let s = bD(C, aH, cx, aI, t)._1
444- let bW = aE("topup", "", C, s, t, 0, aH, aI)
445- let cI = bW._1
446- let cJ = A(C)
447- let cK = valueOrElse(getInteger(this, cJ), 0)
448- (([IntegerEntry(y(C), s), IntegerEntry(E(C, height, lastBlock.timestamp), s), IntegerEntry(B(C, cB), s), IntegerEntry(cz, cB), IntegerEntry(cJ, if ((s > cK))
449- then s
450- else cK), IntegerEntry(cG, height)] :+ aP("DECREMENT", H(C), cI)) :+ Burn(aI, cI[as]))
451- }
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))
443+ 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"))
446+ 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)]
456+ else nil))
457+ }
452458 }
453459
454460
455461
456-@Callable(bN)
462+@Callable(bO)
457463 func currentSysParamsREST (h) = {
458- let cL = ci(h)
459- let s = cL._1.value
460- let aj = cL._2.value
461- let bG = cL._3.value
462- let cM = cL._4.value
463- let cN = cL._5.value
464- let bJ = cL._6.value
465- let cO = makeString(["startCurrentSysParamsREST", toString(s), toString(aj), toString(bG), toString(cM), toString(cN), toString(bJ), "endCurrentSysParamsREST"], a)
466- throw(cO)
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)
467473 }
468474
469475

github/deemru/w8io/169f3d6 
121.69 ms