tx · DVX22nRt1mjPq68jUi8X8J8fbnrfJexJP7uER6eTwRns

3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH:  -0.01400000 Waves

2021.03.29 11:37 [1458803] smart account 3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH > SELF 0.00000000 Waves

{ "type": 13, "id": "DVX22nRt1mjPq68jUi8X8J8fbnrfJexJP7uER6eTwRns", "fee": 1400000, "feeAssetId": null, "timestamp": 1617007115061, "version": 1, "sender": "3NC9wWawxuFG6a3sZdfckGwoMeVhLFjZFwH", "senderPublicKey": "HoEvP2nFKMAsffQ9PUyAm6auWisyHgusY9HxDeMASrzZ", "proofs": [ "CQvGrT6XSy1GTc9oL911vFBXeZ3jcJhFyGmo5QTXSwYhnVDUnPLBWUe53bEgttMGqBLnEe5THXZr2CnJKtXfcsW" ], "script": "base64:AAIEAAAAAAAAADsIAhIQCg4ICAgBCAEBAQgBAQEBCBIDCgEBEgASABIFCgMICAgSBQoDCAgIEgMKAQgSBAoCCAESAwoBCAAAAEsAAAAAA1NFUAIAAAACX18BAAAAD2dldFN0cmluZ09yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AQAAABBnZXRCb29sZWFuT3JGYWlsAAAAAQAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABBsAAAACBQAAAAR0aGlzBQAAAANrZXkJAAEsAAAAAgIAAAAVTm8gZGF0YSBmb3IgdGhpcy5rZXk9BQAAAANrZXkBAAAADGdldEludE9yRmFpbAAAAAEAAAADa2V5CQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5CQABLAAAAAICAAAAFU5vIGRhdGEgZm9yIHRoaXMua2V5PQUAAAADa2V5AQAAAA5mYWlsRXhlY3V0ZUdldAAAAAUAAAADbXNnAAAADGJhc2VBc3NldFN0cgAAAA51c2VyQWRkcmVzc1N0cgAAAA1zdWJtaXRUeElkU3RyAAAADW9wZXJhdGlvblR5cGUJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAAA21zZwIAAAAPOiBiYXNlQXNzZXRTdHI9BQAAAAxiYXNlQXNzZXRTdHICAAAAECB1c2VyQWRkcmVzc1N0cj0FAAAADnVzZXJBZGRyZXNzU3RyAgAAAA8gc3VibWl0VHhJZFN0cj0FAAAADXN1Ym1pdFR4SWRTdHICAAAADyBvcGVyYXRpb25UeXBlPQUAAAANb3BlcmF0aW9uVHlwZQEAAAAXZmFpbFN1Ym1pdExpbWl0c0V4Y2VlZHMAAAAEAAAADXJlbWFpbmluZ0Jhc2UAAAAOcmVtYWluaW5nU2hhcmUAAAAQbmV3UmVtYWluaW5nQmFzZQAAABFuZXdSZW1haW5pbmdTaGFyZQkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAArc3VibWl0IG9wZXJhdGlvbiBsaW1pdHMgaGF2ZSBiZWVuIHJlYWNoZWQ6IAIAAAAPIHJlbWFpbmluZ0Jhc2U9CQABpAAAAAEFAAAADXJlbWFpbmluZ0Jhc2UCAAAAECByZW1haW5pbmdTaGFyZT0JAAGkAAAAAQUAAAAOcmVtYWluaW5nU2hhcmUCAAAAEiBuZXdSZW1haW5pbmdCYXNlPQkAAaQAAAABBQAAABBuZXdSZW1haW5pbmdCYXNlAgAAABMgbmV3UmVtYWluaW5nU2hhcmU9CQABpAAAAAEFAAAAEW5ld1JlbWFpbmluZ1NoYXJlAQAAABRmYWlsVG9wdXBNYW5hZ2VyT25seQAAAAEAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAjb3BlcnRpb24gZGVuaWVkOiBvbmx5IHRvcFVwTWFuYWdlcj0FAAAAE3RvcHVwTWFuYWdlckFkZHJlc3MCAAAAGyBjYW4gc2VuZCBzdWNoIHRyYW5zYWN0aW9ucwEAAAARY29udmVydFNoYXJlMkJhc2UAAAADAAAAC3NoYXJlQW1vdW50AAAABXByaWNlAAAACXByaWNlTXVsdAkAAGsAAAADBQAAAAtzaGFyZUFtb3VudAUAAAAFcHJpY2UFAAAACXByaWNlTXVsdAEAAAARY29udmVydEJhc2UyU2hhcmUAAAADAAAACmJhc2VBbW91bnQAAAAFcHJpY2UAAAAJcHJpY2VNdWx0CQAAawAAAAMFAAAACmJhc2VBbW91bnQFAAAACXByaWNlTXVsdAUAAAAFcHJpY2UBAAAAC2tleUFzc2V0Q2ZnAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAXJXMlcyVzX19jb25maWdfX2Fzc2V0X18FAAAADGJhc2VBc3NldFN0cgEAAAAWa2V5TmV4dEludGVybmFsQXNzZXRJZAAAAAACAAAAFyVzX19uZXh0SW50ZXJuYWxBc3NldElkAQAAAAxrZXlQcmljZUxhc3QAAAABAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkAASwAAAACAgAAABUlcyVzJWRfX3ByaWNlX19sYXN0X18FAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgEAAAALa2V5UHJpY2VBVEgAAAABAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkAASwAAAACAgAAABQlcyVzJWRfX3ByaWNlX19hdGhfXwUAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyAQAAABJrZXlQcmljZUJ5VG9wVXBJZHgAAAACAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAACHRvcFVwSWR4CQAEuQAAAAIJAARMAAAAAgIAAAAbJXMlcyVkJWRfX3ByaWNlX19ieVRvcFVwSWR4CQAETAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQAETAAAAAIJAAGkAAAAAQUAAAAIdG9wVXBJZHgFAAAAA25pbAUAAAADU0VQAQAAAA9rZXlQcmljZUhpc3RvcnkAAAADAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgAAAAFoAAAACXRpbWVzdGFtcAkABLkAAAACCQAETAAAAAICAAAAGiVzJXMlZCVkJWRfX3ByaWNlX19oaXN0b3J5CQAETAAAAAIFAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkABEwAAAACCQABpAAAAAEFAAAAAWgJAARMAAAAAgkAAaQAAAABBQAAAAl0aW1lc3RhbXAFAAAAA25pbAUAAAADU0VQAQAAAA5rZXlUb3RhbExvY2tlZAAAAAEAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyCQABLAAAAAICAAAAFyVzJXMlZF9fdG90YWxfX2xvY2tlZF9fBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIBAAAAFGtleVRvdGFsTG9ja2VkQnlVc2VyAAAAAgAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAA51c2VyQWRkcmVzc1N0cgkABLkAAAACCQAETAAAAAICAAAAFyVzJXMlZCVzX190b3RhbF9fbG9ja2VkCQAETAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQAETAAAAAIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAANuaWwFAAAAA1NFUAEAAAAfa2V5TWFwcGluZ3NJbnRlcm5hbDJiYXNlQXNzZXRJZAAAAAEAAAARaW50ZXJuYWxCYXNlQXNzZXQJAAEsAAAAAgIAAAAoJXMlcyVkX19tYXBwaW5nc19faW50ZXJuYWwyYmFzZUFzc2V0SWRfXwkAAaQAAAABBQAAABFpbnRlcm5hbEJhc2VBc3NldAEAAAAfa2V5TWFwcGluZ3NCYXNlQXNzZXQyaW50ZXJuYWxJZAAAAAEAAAAMYmFzZUFzc2V0U3RyCQABLAAAAAICAAAAKCVzJXMlc19fbWFwcGluZ3NfX2Jhc2VBc3NldDJpbnRlcm5hbElkX18FAAAADGJhc2VBc3NldFN0cgEAAAAca2V5TWFwcGluZ3NTaGFyZTJiYXNlQXNzZXRJZAAAAAEAAAANc2hhcmVBc3NldFN0cgkAASwAAAACAgAAACUlcyVzJXNfX21hcHBpbmdzX19zaGFyZTJiYXNlQXNzZXRJZF9fBQAAAA1zaGFyZUFzc2V0U3RyAQAAABxrZXlNYXBwaW5nc0Jhc2VBc3NldDJzaGFyZUlkAAAAAQAAAAxiYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAlJXMlcyVzX19tYXBwaW5nc19fYmFzZUFzc2V0MnNoYXJlSWRfXwUAAAAMYmFzZUFzc2V0U3RyAQAAABdrZXlTaHV0ZG93blB1dE9wZXJhdGlvbgAAAAEAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAXJXMlcyVkX19zaHV0ZG93bl9fcHV0X18FAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAQAAABJrZXlTaHV0ZG93bk1hbmFnZXIAAAABAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABLAAAAAICAAAAGyVzJXMlZF9fc2h1dGRvd25fX21hbmFnZXJfXwUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIBAAAAEmtleVRvcFVwQ3VycmVudElkeAAAAAEAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAEsAAAAAgIAAAAbJXMlcyVkX190b3B1cF9fY3VycmVudElkeF9fBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgEAAAASa2V5VG9wVXBMYXN0SGVpZ2h0AAAAAgAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIAAAAGc2VuZGVyCQAEuQAAAAIJAARMAAAAAgIAAAAfJXMlcyVzJWQlc19fdG9wdXBfX2xhc3RfX2hlaWdodAkABEwAAAACBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIJAARMAAAAAgUAAAAGc2VuZGVyBQAAAANuaWwFAAAAA1NFUAEAAAAOa2V5VG9wdXBNdXRleHQAAAABAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkAASwAAAACAgAAABYlcyVzJWRfX3RvcHVwX19tdXRleF9fBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIBAAAAD2tleVRvcHVwSGlzdG9yeQAAAAIAAAAVaW50ZXJuYWxCYXNldEFzc2V0U3RyAAAACHRvcHVwSWR4CQAEuQAAAAIJAARMAAAAAgIAAAAYJXMlcyVkJWRfX3RvcHVwX19oaXN0b3J5CQAETAAAAAIFAAAAFWludGVybmFsQmFzZXRBc3NldFN0cgkABEwAAAACCQABpAAAAAEFAAAACHRvcHVwSWR4BQAAAANuaWwFAAAAA1NFUAEAAAASa2V5TGltaXRzUmVtYWluaW5nAAAAAQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIJAAEsAAAAAgIAAAAbJXMlcyVkX19saW1pdHNfX3JlbWFpbmluZ19fBQAAABVpbnRlcm5hbEJhc2V0QXNzZXRTdHIAAAAAEklkeENmZ1NoYXJlQXNzZXRJZAAAAAAAAAAAAQAAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQAAAAAAAAAAAIAAAAAHElkeENmZ0RlY2ltYWxzTXVsdEJvdGhBc3NldHMAAAAAAAAAAAMAAAAAF0lkeENmZ0RlY2ltYWxzTXVsdFByaWNlAAAAAAAAAAAEAAAAABRJZHhDZmdHZXREZWxheUJsb2NrcwAAAAAAAAAABQAAAAAbSWR4Q2ZnVG9wdXBJbnRlcnZhbEluQmxvY2tzAAAAAAAAAAAGAAAAABpJZHhDZmdUb3B1cE1heE5lZ2F0aXZlUGFydAAAAAAAAAAABwAAAAAZSWR4Q2ZnVG9wdXBNYW5hZ2VyQWRkcmVzcwAAAAAAAAAACAAAAAAZSWR4Q2ZnU3VibWl0TGltaXRzQmFzZU1heAAAAAAAAAAACQAAAAAbSWR4Q2ZnU3VibWl0TGltaXRzQmFzZVJlc2V0AAAAAAAAAAAKAAAAABpJZHhDZmdTdWJtaXRMaW1pdHNTaGFyZU1heAAAAAAAAAAACwAAAAAcSWR4Q2ZnU3VibWl0TGltaXRzU2hhcmVSZXNldAAAAAAAAAAADAAAAAASSWR4Q2ZnQWRtaW5BZGRyZXNzAAAAAAAAAAANAQAAAAxkYXRhQXNzZXRDZmcAAAANAAAADXNoYXJlQXNzZXRTdHIAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwAAABFkZWNpbWFsc011bHRQcmljZQAAABBnZXREZWxheUluQmxvY2tzAAAAFXRvcHVwSW50ZXJ2YWxJbkJsb2NrcwAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAAAABN0b3B1cE1hbmFnZXJBZGRyZXNzAAAAE3N1Ym1pdExpbWl0c0Jhc2VNYXgAAAAVc3VibWl0TGltaXRzQmFzZVJlc2V0AAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4AAAAFnN1Ym1pdExpbWl0c1NoYXJlUmVzZXQAAAAMYWRtaW5BZGRyZXNzCQAEuQAAAAIJAARMAAAAAgIAAAAYJXMlZCVkJWQlZCVkJWQlcyVkJWQlZCVkCQAETAAAAAIFAAAADXNoYXJlQXNzZXRTdHIJAARMAAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAARMAAAAAgkAAaQAAAABBQAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzCQAETAAAAAIJAAGkAAAAAQUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAARMAAAAAgkAAaQAAAABBQAAABBnZXREZWxheUluQmxvY2tzCQAETAAAAAIJAAGkAAAAAQUAAAAVdG9wdXBJbnRlcnZhbEluQmxvY2tzCQAETAAAAAIJAAGkAAAAAQUAAAAUdG9wdXBNYXhOZWdhdGl2ZVBhcnQJAARMAAAAAgUAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwkABEwAAAACCQABpAAAAAEFAAAAE3N1Ym1pdExpbWl0c0Jhc2VNYXgJAARMAAAAAgkAAaQAAAABBQAAABVzdWJtaXRMaW1pdHNCYXNlUmVzZXQJAARMAAAAAgkAAaQAAAABBQAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAkABEwAAAACCQABpAAAAAEFAAAAFnN1Ym1pdExpbWl0c1NoYXJlUmVzZXQJAARMAAAAAgUAAAAMYWRtaW5BZGRyZXNzBQAAAANuaWwFAAAAA1NFUAAAAAAVSWR4VG90YWxMb2NrZWRJblNoYXJlAAAAAAAAAAABAAAAABVJZHhUb3RhbExvY2tlZE91dEJhc2UAAAAAAAAAAAIAAAAAFElkeFRvdGFsTG9ja2VkSW5CYXNlAAAAAAAAAAADAAAAABZJZHhUb3RhbExvY2tlZE91dFNoYXJlAAAAAAAAAAAEAQAAAA9kYXRhVG90YWxMb2NrZWQAAAAEAAAADWluU2hhcmVBbW91bnQAAAANb3V0QmFzZUFtb3VudAAAAAxpbkJhc2VBbW91bnQAAAAOb3V0U2hhcmVBbW91bnQJAAS5AAAAAgkABEwAAAACAgAAAAglZCVkJWQlZAkABEwAAAACCQABpAAAAAEFAAAADWluU2hhcmVBbW91bnQJAARMAAAAAgkAAaQAAAABBQAAAA1vdXRCYXNlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAMaW5CYXNlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAOb3V0U2hhcmVBbW91bnQFAAAAA25pbAUAAAADU0VQAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAADWluU2hhcmVBbW91bnQAAAANb3V0QmFzZUFtb3VudAAAAAxpbkJhc2VBbW91bnQAAAAOb3V0U2hhcmVBbW91bnQJAARMAAAAAgD//////////wkABEwAAAACBQAAAA1pblNoYXJlQW1vdW50CQAETAAAAAIFAAAADW91dEJhc2VBbW91bnQJAARMAAAAAgUAAAAMaW5CYXNlQW1vdW50CQAETAAAAAIFAAAADm91dFNoYXJlQW1vdW50BQAAAANuaWwBAAAAD3JlYWRUb3RhbExvY2tlZAAAAAEAAAADa2V5BAAAABB0b3RhbExvY2tlZEFycmF5CQAEtQAAAAIJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5CQEAAAAPZGF0YVRvdGFsTG9ja2VkAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAADU0VQCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFUlkeFRvdGFsTG9ja2VkT3V0QmFzZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFElkeFRvdGFsTG9ja2VkSW5CYXNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQEAAAATY2FsY1RvdGFsTG9ja2VkRGlmZgAAAAgAAAAJZGlyZWN0aW9uAAAADW9wZXJhdGlvblR5cGUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAFcHJpY2UAAAAJcHJpY2VNdWx0AAAACGluQW1vdW50AAAAC2Jhc2VBc3NldElkAAAADHNoYXJlQXNzZXRJZAQAAAABdAkAASwAAAACBQAAAAlkaXJlY3Rpb24FAAAADW9wZXJhdGlvblR5cGUDCQAAAAAAAAIFAAAAAXQCAAAAB3N1Ym1pdFAEAAAACXRvdGFsRGlmZgkBAAAAEmRhdGFUb3RhbExvY2tlZEludAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAFAAAACGluQW1vdW50AAAAAAAAAAAABAAAAAh1c2VyRGlmZgUAAAAJdG90YWxEaWZmCQAFFgAAAAQFAAAACXRvdGFsRGlmZgUAAAAIdXNlckRpZmYAAAAAAAAAAAAJAAJZAAAAAQIAAAAAAwkAAAAAAAACBQAAAAF0AgAAAAdzdWJtaXRHBAAAAAl0b3RhbERpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEBQAAAAhpbkFtb3VudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIdXNlckRpZmYFAAAACXRvdGFsRGlmZgkABRYAAAAEBQAAAAl0b3RhbERpZmYFAAAACHVzZXJEaWZmAAAAAAAAAAAACQACWQAAAAECAAAAAAMJAAAAAAAAAgUAAAABdAIAAAAIZXhlY3V0ZVAEAAAACW91dEFtb3VudAkBAAAAEWNvbnZlcnRCYXNlMlNoYXJlAAAAAwUAAAAIaW5BbW91bnQFAAAABXByaWNlBQAAAAlwcmljZU11bHQEAAAACXRvdGFsRGlmZgkBAAAAEmRhdGFUb3RhbExvY2tlZEludAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAACW91dEFtb3VudAQAAAAIdXNlckRpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEAAAAAAAAAAAAAAAAAAAAAAAABQAAAAhpbkFtb3VudAAAAAAAAAAAAAkABRYAAAAEBQAAAAl0b3RhbERpZmYFAAAACHVzZXJEaWZmBQAAAAlvdXRBbW91bnQFAAAADHNoYXJlQXNzZXRJZAMJAAAAAAAAAgUAAAABdAIAAAAIZXhlY3V0ZUcEAAAACW91dEFtb3VudAkBAAAAEWNvbnZlcnRTaGFyZTJCYXNlAAAAAwUAAAAIaW5BbW91bnQFAAAABXByaWNlBQAAAAlwcmljZU11bHQEAAAACXRvdGFsRGlmZgkBAAAAEmRhdGFUb3RhbExvY2tlZEludAAAAAQAAAAAAAAAAAAFAAAACW91dEFtb3VudAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIdXNlckRpZmYJAQAAABJkYXRhVG90YWxMb2NrZWRJbnQAAAAEBQAAAAhpbkFtb3VudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkABRYAAAAEBQAAAAl0b3RhbERpZmYFAAAACHVzZXJEaWZmBQAAAAlvdXRBbW91bnQFAAAAC2Jhc2VBc3NldElkAwkAAAAAAAACBQAAAAF0AgAAAAV0b3B1cAQAAAAQdG90YWxMb2NrZWRBcnJheQkBAAAAD3JlYWRUb3RhbExvY2tlZAAAAAEJAQAAAA5rZXlUb3RhbExvY2tlZAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAABd0b3RhbExvY2tlZEluQmFzZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQQAAAAYdG90YWxMb2NrZWRJblNoYXJlQW1vdW50CQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQQAAAAJdG90YWxEaWZmCQEAAAASZGF0YVRvdGFsTG9ja2VkSW50AAAABAUAAAAYdG90YWxMb2NrZWRJblNoYXJlQW1vdW50CQAAaAAAAAIA//////////8JAQAAABFjb252ZXJ0U2hhcmUyQmFzZQAAAAMFAAAAGHRvdGFsTG9ja2VkSW5TaGFyZUFtb3VudAUAAAAFcHJpY2UFAAAACXByaWNlTXVsdAUAAAAXdG90YWxMb2NrZWRJbkJhc2VBbW91bnQJAABoAAAAAgD//////////wkBAAAAEWNvbnZlcnRCYXNlMlNoYXJlAAAAAwUAAAAXdG90YWxMb2NrZWRJbkJhc2VBbW91bnQFAAAABXByaWNlBQAAAAlwcmljZU11bHQJAAUWAAAABAUAAAAJdG90YWxEaWZmBQAAAANuaWwAAAAAAAAAAAAJAAJZAAAAAQIAAAAACQAAAgAAAAEJAAEsAAAAAgIAAAARVW5zdXBwb3J0ZWQgVHlwZSAFAAAAAXQBAAAAFlRvdGFsTG9ja2VkU3RyaW5nRW50cnkAAAADAAAABmFjdGlvbgAAAANrZXkAAAAEZGlmZgoBAAAABlVQREFURQAAAAIAAAABYQAAAAFiAwkAAAAAAAACBQAAAAZhY3Rpb24CAAAACUlOQ1JFTUVOVAkAAGQAAAACBQAAAAFhBQAAAAFiAwkAAAAAAAACBQAAAAZhY3Rpb24CAAAACURFQ1JFTUVOVAkAAGUAAAACBQAAAAFhBQAAAAFiCQAAAgAAAAEJAAEsAAAAAgIAAAATVW5zdXBwb3J0ZWQgYWN0aW9uIAUAAAAGYWN0aW9uBAAAAAlkYXRhQXJyYXkJAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABBQAAAANrZXkJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAA2tleQkBAAAAD2RhdGFUb3RhbExvY2tlZAAAAAQJAQAAAAZVUERBVEUAAAACCQABkQAAAAIFAAAACWRhdGFBcnJheQUAAAAVSWR4VG90YWxMb2NrZWRJblNoYXJlCQABkQAAAAIFAAAABGRpZmYFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQkBAAAABlVQREFURQAAAAIJAAGRAAAAAgUAAAAJZGF0YUFycmF5BQAAABVJZHhUb3RhbExvY2tlZE91dEJhc2UJAAGRAAAAAgUAAAAEZGlmZgUAAAAVSWR4VG90YWxMb2NrZWRPdXRCYXNlCQEAAAAGVVBEQVRFAAAAAgkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAFElkeFRvdGFsTG9ja2VkSW5CYXNlCQABkQAAAAIFAAAABGRpZmYFAAAAFElkeFRvdGFsTG9ja2VkSW5CYXNlCQEAAAAGVVBEQVRFAAAAAgkAAZEAAAACBQAAAAlkYXRhQXJyYXkFAAAAFklkeFRvdGFsTG9ja2VkT3V0U2hhcmUJAAGRAAAAAgUAAAAEZGlmZgUAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQEAAAAMa2V5T3BlcmF0aW9uAAAABAAAAA1vcGVyYXRpb25UeXBlAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAAC3VzZXJBZGRyZXNzAAAABHR4SWQJAAS5AAAAAgkABEwAAAACAgAAAAglcyVkJXMlcwkABEwAAAACBQAAAA1vcGVyYXRpb25UeXBlCQAETAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQAETAAAAAIFAAAAC3VzZXJBZGRyZXNzCQAETAAAAAIFAAAABHR4SWQFAAAAA25pbAUAAAADU0VQAAAAAA1JZHhPcGVyU3RhdHVzAAAAAAAAAAABAAAAAA9JZHhPcGVySW5BbW91bnQAAAAAAAAAAAIAAAAADElkeE9wZXJQcmljZQAAAAAAAAAAAwAAAAAQSWR4T3Blck91dEFtb3VudAAAAAAAAAAABAAAAAASSWR4T3BlclN0YXJ0SGVpZ2h0AAAAAAAAAAAFAAAAABVJZHhPcGVyU3RhcnRUaW1lc3RhbXAAAAAAAAAAAAYAAAAAEElkeE9wZXJFbmRIZWlnaHQAAAAAAAAAAAcAAAAAE0lkeE9wZXJFbmRUaW1lc3RhbXAAAAAAAAAAAAgAAAAAFUlkeE9wZXJUb3B1cFVubG9ja0lkeAAAAAAAAAAACQEAAAAecHJpdmF0ZURhdGFPcGVyYXRpb25BbGxTdHJpbmdzAAAACQAAAAZzdGF0dXMAAAANaW5Bc3NldEFtb3VudAAAAAVwcmljZQAAAA5vdXRBc3NldEFtb3VudAAAAAtzdGFydEhlaWdodAAAAA5zdGFydFRpbWVzdGFtcAAAAAllbmRIZWlnaHQAAAAMZW5kVGltZXN0YW1wAAAABGxvY2sJAAS5AAAAAgkABEwAAAACAgAAABIlcyVkJWQlZCVkJWQlZCVkJWQJAARMAAAAAgUAAAAGc3RhdHVzCQAETAAAAAIFAAAADWluQXNzZXRBbW91bnQJAARMAAAAAgUAAAAFcHJpY2UJAARMAAAAAgUAAAAOb3V0QXNzZXRBbW91bnQJAARMAAAAAgUAAAALc3RhcnRIZWlnaHQJAARMAAAAAgUAAAAOc3RhcnRUaW1lc3RhbXAJAARMAAAAAgUAAAAJZW5kSGVpZ2h0CQAETAAAAAIFAAAADGVuZFRpbWVzdGFtcAkABEwAAAACBQAAAARsb2NrBQAAAANuaWwFAAAAA1NFUAEAAAANZGF0YU9wZXJhdGlvbgAAAAkAAAAGc3RhdHVzAAAADWluQXNzZXRBbW91bnQAAAAFcHJpY2UAAAAOb3V0QXNzZXRBbW91bnQAAAALc3RhcnRIZWlnaHQAAAAOc3RhcnRUaW1lc3RhbXAAAAAJZW5kSGVpZ2h0AAAADGVuZFRpbWVzdGFtcAAAAA50b3B1cFVubG9ja0lkeAkBAAAAHnByaXZhdGVEYXRhT3BlcmF0aW9uQWxsU3RyaW5ncwAAAAkFAAAABnN0YXR1cwkAAaQAAAABBQAAAA1pbkFzc2V0QW1vdW50CQABpAAAAAEFAAAABXByaWNlCQABpAAAAAEFAAAADm91dEFzc2V0QW1vdW50CQABpAAAAAEFAAAAC3N0YXJ0SGVpZ2h0CQABpAAAAAEFAAAADnN0YXJ0VGltZXN0YW1wCQABpAAAAAEFAAAACWVuZEhlaWdodAkAAaQAAAABBQAAAAxlbmRUaW1lc3RhbXAJAAGkAAAAAQUAAAAOdG9wdXBVbmxvY2tJZHgBAAAAHGRhdGFPcGVyYXRpb25FeGVjdXRpb25VcGRhdGUAAAAEAAAADWN1cnJPcGVyQXJyYXkAAAAJbmV3U3RhdHVzAAAACG5ld1ByaWNlAAAADG5ld091dEFtb3VudAkBAAAAHnByaXZhdGVEYXRhT3BlcmF0aW9uQWxsU3RyaW5ncwAAAAkFAAAACW5ld1N0YXR1cwkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAAA9JZHhPcGVySW5BbW91bnQJAAGkAAAAAQUAAAAIbmV3UHJpY2UJAAGkAAAAAQUAAAAMbmV3T3V0QW1vdW50CQABkQAAAAIFAAAADWN1cnJPcGVyQXJyYXkFAAAAEklkeE9wZXJTdGFydEhlaWdodAkAAZEAAAACBQAAAA1jdXJyT3BlckFycmF5BQAAABVJZHhPcGVyU3RhcnRUaW1lc3RhbXAJAAGkAAAAAQUAAAAGaGVpZ2h0CQABpAAAAAEIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wCQABkQAAAAIFAAAADWN1cnJPcGVyQXJyYXkFAAAAFUlkeE9wZXJUb3B1cFVubG9ja0lkeAEAAAAScmVhZEFzc2V0Q2ZnT3JGYWlsAAAAAQAAAAxiYXNlQXNzZXRTdHIEAAAAA2tleQkBAAAAC2tleUFzc2V0Q2ZnAAAAAQUAAAAMYmFzZUFzc2V0U3RyCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABBQAAAANrZXkFAAAAA1NFUAAAAAAWSWR4TGltaXRzUmVtYWluaW5nQmFzZQAAAAAAAAAAAQAAAAAXSWR4TGltaXRzUmVtYWluaW5nU2hhcmUAAAAAAAAAAAIBAAAAGlJlbWFpbmluZ0xpbWl0c1N0cmluZ0VudHJ5AAAAAwAAAANrZXkAAAASYmFzZVJlbWFpbmluZ0xpbWl0AAAAE3NoYXJlUmVtYWluaW5nTGltaXQJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAA2tleQkABLkAAAACCQAETAAAAAICAAAABCVkJWQJAARMAAAAAgkAAaQAAAABBQAAABJiYXNlUmVtYWluaW5nTGltaXQJAARMAAAAAgkAAaQAAAABBQAAABNzaGFyZVJlbWFpbmluZ0xpbWl0BQAAAANuaWwFAAAAA1NFUAEAAAASVG9wdXBNdXRleEludEVudHJ5AAAAAgAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAA5hY3F1aXJlZEhlaWdodAkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA5rZXlUb3B1cE11dGV4dAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA5hY3F1aXJlZEhlaWdodAEAAAARVG9wdXBIaXN0b3J5RW50cnkAAAACAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAACHRvcHVwSWR4AgAAAAABAAAAEGdlbmVyaWNDYWxjUHJpY2UAAAAFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyAAAAC2Jhc2VBc3NldElkAAAAD3RvcFVwQmFzZUFtb3VudAAAAAxzaGFyZUFzc2V0SWQAAAARZGVjaW1hbHNNdWx0UHJpY2UEAAAAEHRvdGFsTG9ja2VkQXJyYXkJAQAAAA9yZWFkVG90YWxMb2NrZWQAAAABCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAYdG90YWxMb2NrZWRPdXRCYXNlQW1vdW50CQABkQAAAAIFAAAAEHRvdGFsTG9ja2VkQXJyYXkFAAAAFUlkeFRvdGFsTG9ja2VkT3V0QmFzZQQAAAAZY3Vyckl0ZXJUb3RhbEluQmFzZUFtb3VudAkAAZEAAAACBQAAABB0b3RhbExvY2tlZEFycmF5BQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQQAAAAQYmFzZUFzc2V0QmFsYW5jZQkAA/AAAAACBQAAAAR0aGlzBQAAAAtiYXNlQXNzZXRJZAQAAAATYmFzZUFzc2V0QmFsYW5jZVdDTwkAAGUAAAACCQAAZQAAAAIJAABkAAAAAgUAAAAQYmFzZUFzc2V0QmFsYW5jZQUAAAAPdG9wVXBCYXNlQW1vdW50BQAAABljdXJySXRlclRvdGFsSW5CYXNlQW1vdW50BQAAABh0b3RhbExvY2tlZE91dEJhc2VBbW91bnQEAAAAGXRvdGFsTG9ja2VkT3V0U2hhcmVBbW91bnQJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQQAAAAaY3Vyckl0ZXJUb3RhbEluU2hhcmVBbW91bnQJAAGRAAAAAgUAAAAQdG90YWxMb2NrZWRBcnJheQUAAAAVSWR4VG90YWxMb2NrZWRJblNoYXJlBAAAAA1zaGFyZUVtaXNzaW9uCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAxzaGFyZUFzc2V0SWQAAAAIcXVhbnRpdHkDCQAAZgAAAAIAAAAAAAAAAAAFAAAAE2Jhc2VBc3NldEJhbGFuY2VXQ08JAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAqYmFzZUFzc2V0QmFsYW5jZVdDTyA8IDA6IGJhc2VBc3NldEJhbGFuY2U9CQABpAAAAAEFAAAAEGJhc2VBc3NldEJhbGFuY2UCAAAAFSBiYXNlQXNzZXRCYWxhbmNlV0NPPQkAAaQAAAABBQAAABNiYXNlQXNzZXRCYWxhbmNlV0NPBAAAAAlsYXN0UHJpY2UJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAAMa2V5UHJpY2VMYXN0AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIEAAAABXByaWNlAwkAAAAAAAACBQAAAA1zaGFyZUVtaXNzaW9uAAAAAAAAAAAABQAAAAlsYXN0UHJpY2UJAABrAAAAAwUAAAATYmFzZUFzc2V0QmFsYW5jZVdDTwUAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAADXNoYXJlRW1pc3Npb24JAAUbAAAACQUAAAAFcHJpY2UFAAAAEGJhc2VBc3NldEJhbGFuY2UA//////////8FAAAAE2Jhc2VBc3NldEJhbGFuY2VXQ08FAAAADXNoYXJlRW1pc3Npb24FAAAAGWN1cnJJdGVyVG90YWxJbkJhc2VBbW91bnQFAAAAGmN1cnJJdGVyVG90YWxJblNoYXJlQW1vdW50BQAAABh0b3RhbExvY2tlZE91dEJhc2VBbW91bnQFAAAAGXRvdGFsTG9ja2VkT3V0U2hhcmVBbW91bnQBAAAACWNhbGNQcmljZQAAAAQAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAALYmFzZUFzc2V0SWQAAAAMc2hhcmVBc3NldElkAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAAQZ2VuZXJpY0NhbGNQcmljZQAAAAUFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAtiYXNlQXNzZXRJZAAAAAAAAAAAAAUAAAAMc2hhcmVBc3NldElkBQAAABFkZWNpbWFsc011bHRQcmljZQEAAAAGc3VibWl0AAAABQAAAA1vcGVyYXRpb25UeXBlAAAAAWkAAAAIaW5BbW91bnQAAAAJaW5Bc3NldElkAAAADGJhc2VBc3NldFN0cgQAAAAKaW5Bc3NldFN0cgkAAlgAAAABBQAAAAlpbkFzc2V0SWQEAAAADnVzZXJBZGRyZXNzU3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAALYmFzZUFzc2V0SWQJAAJZAAAAAQUAAAAMYmFzZUFzc2V0U3RyBAAAAAhjZmdBcnJheQkBAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAANc2hhcmVBc3NldFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAASSWR4Q2ZnU2hhcmVBc3NldElkBAAAAAxzaGFyZUFzc2V0SWQJAAJZAAAAAQUAAAANc2hhcmVBc3NldFN0cgQAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABxJZHhDZmdEZWNpbWFsc011bHRCb3RoQXNzZXRzBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAACWxpbWl0c0tFWQkBAAAAEmtleUxpbWl0c1JlbWFpbmluZwAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAA5saW1pdHNDZmdBcnJheQkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQUAAAAJbGltaXRzS0VZBQAAAANTRVAEAAAAE2xpbWl0c1JlbWFpbmluZ0Jhc2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5saW1pdHNDZmdBcnJheQUAAAAWSWR4TGltaXRzUmVtYWluaW5nQmFzZQQAAAAUbGltaXRzUmVtYWluaW5nU2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5saW1pdHNDZmdBcnJheQUAAAAXSWR4TGltaXRzUmVtYWluaW5nU2hhcmUEAAAADGlzUHV0QmxvY2tlZAkBAAAAEGdldEJvb2xlYW5PckZhaWwAAAABCQEAAAAXa2V5U2h1dGRvd25QdXRPcGVyYXRpb24AAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgMFAAAADGlzUHV0QmxvY2tlZAkAAAIAAAABAgAAABhwdXQgb3BlcmF0aW9uIGlzIGJsb2NrZWQEAAAAD29wZXJhdGlvbnNNdXRleAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzCQEAAAAOa2V5VG9wdXBNdXRleHQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAAAAAAAAAMJAABmAAAAAgkAAGQAAAACBQAAAA9vcGVyYXRpb25zTXV0ZXgAAAAAAAAAADwFAAAABmhlaWdodAkAAAIAAAABAgAAAC5zdWJtaXQgb3BlcmF0aW9ucyBhcmUgYmxvY2tlZCBieSB0b3B1cCBtYW5hZ2VyBAAAAAlkaWZmVHVwbGUJAQAAABNjYWxjVG90YWxMb2NrZWREaWZmAAAACAIAAAAGc3VibWl0BQAAAA1vcGVyYXRpb25UeXBlBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAAAAAAAAAAAAAAAAAAAAAUAAAAIaW5BbW91bnQFAAAAC2Jhc2VBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQEAAAAFmxpbWl0c1JlbWFpbmluZ0Jhc2VOZXcJAABlAAAAAgUAAAATbGltaXRzUmVtYWluaW5nQmFzZQkAAZEAAAACCAUAAAAJZGlmZlR1cGxlAAAAAl8yBQAAABRJZHhUb3RhbExvY2tlZEluQmFzZQQAAAAXbGltaXRzUmVtYWluaW5nU2hhcmVOZXcJAABlAAAAAgUAAAAUbGltaXRzUmVtYWluaW5nU2hhcmUJAAGRAAAAAggFAAAACWRpZmZUdXBsZQAAAAJfMgUAAAAVSWR4VG90YWxMb2NrZWRJblNoYXJlAwMJAABmAAAAAgAAAAAAAAAAAAUAAAAWbGltaXRzUmVtYWluaW5nQmFzZU5ldwYJAABmAAAAAgAAAAAAAAAAAAUAAAAXbGltaXRzUmVtYWluaW5nU2hhcmVOZXcJAQAAABdmYWlsU3VibWl0TGltaXRzRXhjZWVkcwAAAAQFAAAAE2xpbWl0c1JlbWFpbmluZ0Jhc2UFAAAAFGxpbWl0c1JlbWFpbmluZ1NoYXJlBQAAABZsaW1pdHNSZW1haW5pbmdCYXNlTmV3BQAAABdsaW1pdHNSZW1haW5pbmdTaGFyZU5ldwQAAAAPdG9wVXBDdXJyZW50SWR4CQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAAEmtleVRvcFVwQ3VycmVudElkeAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQAETQAAAAIJAARNAAAAAgkABE0AAAACCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxrZXlPcGVyYXRpb24AAAAEBQAAAA1vcGVyYXRpb25UeXBlBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIJAAJYAAAAAQgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAkBAAAADWRhdGFPcGVyYXRpb24AAAAJAgAAAAdQRU5ESU5HBQAAAAhpbkFtb3VudAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAGaGVpZ2h0CAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAAAAAAAAAAAAAAAAAAAAAAAAAkAAGQAAAACBQAAAA90b3BVcEN1cnJlbnRJZHgAAAAAAAAAAAEFAAAAA25pbAkBAAAAFlRvdGFsTG9ja2VkU3RyaW5nRW50cnkAAAADAgAAAAlJTkNSRU1FTlQJAQAAAA5rZXlUb3RhbExvY2tlZAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCAUAAAAJZGlmZlR1cGxlAAAAAl8xCQEAAAAWVG90YWxMb2NrZWRTdHJpbmdFbnRyeQAAAAMCAAAACUlOQ1JFTUVOVAkBAAAAFGtleVRvdGFsTG9ja2VkQnlVc2VyAAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAADnVzZXJBZGRyZXNzU3RyCAUAAAAJZGlmZlR1cGxlAAAAAl8yCQEAAAAaUmVtYWluaW5nTGltaXRzU3RyaW5nRW50cnkAAAADBQAAAAlsaW1pdHNLRVkFAAAAFmxpbWl0c1JlbWFpbmluZ0Jhc2VOZXcFAAAAF2xpbWl0c1JlbWFpbmluZ1NoYXJlTmV3AQAAAAdleGVjdXRlAAAABAAAAA1vcGVyYXRpb25UeXBlAAAADGJhc2VBc3NldFN0cgAAAA51c2VyQWRkcmVzc1N0cgAAAA1zdWJtaXRUeElkU3RyBAAAAAt1c2VyQWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAOdXNlckFkZHJlc3NTdHIEAAAADWFzc2V0Q2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAEklkeENmZ1NoYXJlQXNzZXRJZAQAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAXSWR4Q2ZnSW50ZXJuYWxCYXNlQXNzZXQEAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UEAAAAC2Jhc2VBc3NldElkCQACWQAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAMb3BlcmF0aW9uS2V5CQEAAAAMa2V5T3BlcmF0aW9uAAAABAUAAAANb3BlcmF0aW9uVHlwZQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAA1zdWJtaXRUeElkU3RyBAAAAA5vcGVyYXRpb25BcnJheQkABLUAAAACCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQUAAAAMb3BlcmF0aW9uS2V5BQAAAANTRVAEAAAABnN0YXR1cwkAAZEAAAACBQAAAA5vcGVyYXRpb25BcnJheQUAAAANSWR4T3BlclN0YXR1cwQAAAAIaW5BbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA5vcGVyYXRpb25BcnJheQUAAAAPSWR4T3BlckluQW1vdW50BAAAAA50b3B1cFVubG9ja0lkeAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADm9wZXJhdGlvbkFycmF5BQAAABVJZHhPcGVyVG9wdXBVbmxvY2tJZHgEAAAADGN1cnJUb3BVcElkeAkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAABJrZXlUb3BVcEN1cnJlbnRJZHgAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAOcHJpY2VCeVRvcFVwSWQJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAASa2V5UHJpY2VCeVRvcFVwSWR4AAAAAgUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAADGN1cnJUb3BVcElkeAMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwIAAAAHUEVORElORwkBAAAADmZhaWxFeGVjdXRlR2V0AAAABQIAAAAVU3RhdHVzIGlzIG5vdCBQRU5ESU5HBQAAAAxiYXNlQXNzZXRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAA1zdWJtaXRUeElkU3RyBQAAAA1vcGVyYXRpb25UeXBlAwkAAGYAAAACBQAAAA50b3B1cFVubG9ja0lkeAUAAAAMY3VyclRvcFVwSWR4CQEAAAAOZmFpbEV4ZWN1dGVHZXQAAAAFCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAlPcGVyTG9ja1sJAAGkAAAAAQUAAAAOdG9wdXBVbmxvY2tJZHgCAAAABF0gPiAJAAGkAAAAAQUAAAAMY3VyclRvcFVwSWR4BQAAAAxiYXNlQXNzZXRTdHIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAA1zdWJtaXRUeElkU3RyBQAAAA1vcGVyYXRpb25UeXBlBAAAAAlkaWZmVHVwbGUJAQAAABNjYWxjVG90YWxMb2NrZWREaWZmAAAACAIAAAAHZXhlY3V0ZQUAAAANb3BlcmF0aW9uVHlwZQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAADnByaWNlQnlUb3BVcElkBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAIaW5BbW91bnQFAAAAC2Jhc2VBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQEAAAACW91dEFtb3VudAgFAAAACWRpZmZUdXBsZQAAAAJfMwQAAAAPb3V0VHJhbnNmZXJEYXRhAwkAAAAAAAACCAUAAAAJZGlmZlR1cGxlAAAAAl80BQAAAAtiYXNlQXNzZXRJZAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAt1c2VyQWRkcmVzcwUAAAAJb3V0QW1vdW50BQAAAAtiYXNlQXNzZXRJZAUAAAADbmlsCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAC3VzZXJBZGRyZXNzBQAAAAlvdXRBbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAADbmlsCQAETQAAAAIJAARNAAAAAgkABE0AAAACBQAAAA9vdXRUcmFuc2ZlckRhdGEJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAADG9wZXJhdGlvbktleQkBAAAAHGRhdGFPcGVyYXRpb25FeGVjdXRpb25VcGRhdGUAAAAEBQAAAA5vcGVyYXRpb25BcnJheQIAAAAIRklOSVNIRUQFAAAADnByaWNlQnlUb3BVcElkBQAAAAlvdXRBbW91bnQJAQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwIAAAAJREVDUkVNRU5UCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cggFAAAACWRpZmZUdXBsZQAAAAJfMQkBAAAAFlRvdGFsTG9ja2VkU3RyaW5nRW50cnkAAAADAgAAAAlERUNSRU1FTlQJAQAAABRrZXlUb3RhbExvY2tlZEJ5VXNlcgAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cggFAAAACWRpZmZUdXBsZQAAAAJfMgEAAAAbcHJpdmF0ZUN1cnJlbnRTeXNQYXJhbXNSRVNUAAAAAQAAAAxiYXNlQXNzZXRTdHIEAAAAC2Jhc2VBc3NldElkCQACWQAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAIY2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADXNoYXJlQXNzZXRTdHIJAAGRAAAAAgUAAAAIY2ZnQXJyYXkFAAAAEklkeENmZ1NoYXJlQXNzZXRJZAQAAAAMc2hhcmVBc3NldElkCQACWQAAAAEFAAAADXNoYXJlQXNzZXRTdHIEAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAcSWR4Q2ZnRGVjaW1hbHNNdWx0Qm90aEFzc2V0cwQAAAARZGVjaW1hbHNNdWx0UHJpY2UJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhjZmdBcnJheQUAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABkQAAAAIFAAAACGNmZ0FycmF5BQAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAQAAAALcHJpY2VBdGhLRVkJAQAAAAtrZXlQcmljZUFUSAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBAAAAAhwcmljZUFUSAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAtwcmljZUF0aEtFWQAAAAAAAAAAAAQAAAAMcHJpY2VMYXN0S0VZCQEAAAAMa2V5UHJpY2VMYXN0AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIEAAAACXByaWNlTGFzdAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAxwcmljZUxhc3RLRVkAAAAAAAAAAAAEAAAACHN5c1N0YXRlCQEAAAAJY2FsY1ByaWNlAAAABAUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAC2Jhc2VBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQAFHwAAAA0JAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAVwcmljZQgFAAAACHN5c1N0YXRlAAAAAl8xCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAARZGVjaW1hbHNNdWx0UHJpY2UFAAAAEWRlY2ltYWxzTXVsdFByaWNlCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAAQYmFzZUFzc2V0QmFsYW5jZQgFAAAACHN5c1N0YXRlAAAAAl8yCQEAAAAMSW50ZWdlckVudHJ5AAAAAgIAAAACLTEIBQAAAAhzeXNTdGF0ZQAAAAJfMwkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAE2Jhc2VBc3NldEJhbGFuY2VXQ08IBQAAAAhzeXNTdGF0ZQAAAAJfNAkBAAAADEludGVnZXJFbnRyeQAAAAICAAAADXNoYXJlRW1pc3Npb24IBQAAAAhzeXNTdGF0ZQAAAAJfNQkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGWN1cnJJdGVyVG90YWxJbkJhc2VBbW91bnQIBQAAAAhzeXNTdGF0ZQAAAAJfNgkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGmN1cnJJdGVyVG90YWxJblNoYXJlQW1vdW50CAUAAAAIc3lzU3RhdGUAAAACXzcJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAABh0b3RhbExvY2tlZE91dEJhc2VBbW91bnQIBQAAAAhzeXNTdGF0ZQAAAAJfOAkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAGXRvdGFsTG9ja2VkT3V0U2hhcmVBbW91bnQIBQAAAAhzeXNTdGF0ZQAAAAJfOQkBAAAADEludGVnZXJFbnRyeQAAAAICAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAhwcmljZUFUSAUAAAAIcHJpY2VBVEgJAQAAAAxJbnRlZ2VyRW50cnkAAAACAgAAAAlwcmljZUxhc3QFAAAACXByaWNlTGFzdAAAAAkAAAABaQEAAAASYWRtaW5SZWdpc3RlckFzc2V0AAAADgAAAAxiYXNlQXNzZXRTdHIAAAAOc2hhcmVBc3NldE5hbWUAAAAPc2hhcmVBc3NldERlc2NyAAAAEGdldERlbGF5aW5CbG9ja3MAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwAAAApzdGFydFByaWNlAAAAFXRvcHVwSW50ZXJ2YWxJbkJsb2NrcwAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAAAABN0b3B1cE1hbmFnZXJBZGRyZXNzAAAAE3N1Ym1pdExpbWl0c0Jhc2VNYXgAAAAVc3VibWl0TGltaXRzQmFzZVJlc2V0AAAAFHN1Ym1pdExpbWl0c1NoYXJlTWF4AAAAFnN1Ym1pdExpbWl0c1NoYXJlUmVzZXQAAAAMYWRtaW5BZGRyZXNzBAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAACGRlY2ltYWxzCAkBAAAABXZhbHVlAAAAAQkAA+wAAAABBQAAAAtiYXNlQXNzZXRJZAAAAAhkZWNpbWFscwQAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwkAAGwAAAAGAAAAAAAAAAAKAAAAAAAAAAAABQAAAAhkZWNpbWFscwAAAAAAAAAAAAAAAAAAAAAAAAUAAAAERE9XTgQAAAARZGVjaW1hbHNNdWx0UHJpY2UJAABoAAAAAgkAAGgAAAACAAAAAAAAAABkAAAAAAAAAAPoAAAAAAAAAAPoBAAAABh0b3B1cE1heE5lZ2F0aXZlUGVyY2VudHMJAABrAAAAAwUAAAAUdG9wdXBNYXhOZWdhdGl2ZVBhcnQAAAAAAAAAAGQFAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMEAAAAEGJhc2VBc3NldEJhbGFuY2UJAAPwAAAAAgUAAAAEdGhpcwUAAAALYmFzZUFzc2V0SWQDCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABHRoaXMJAAACAAAAAQIAAAAScGVybWlzc2lvbnMgZGVuaWVkAwkAAAAAAAACBQAAABBiYXNlQXNzZXRCYWxhbmNlAAAAAAAAAAAACQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQAEJQAAAAEFAAAABHRoaXMCAAAAIiBtdXN0IGhhdmUgYW55IGluaXRpYWwgYmFsYW5jZSBvZiAFAAAADGJhc2VBc3NldFN0cgMJAQAAAAlpc0RlZmluZWQAAAABCQAEHQAAAAIFAAAABHRoaXMJAQAAAAtrZXlBc3NldENmZwAAAAEFAAAADGJhc2VBc3NldFN0cgkAAAIAAAABCQABLAAAAAIFAAAADGJhc2VBc3NldFN0cgIAAAAcIGhhcyBiZWVuIGFscmVhZHkgcmVnaXN0ZXJlZAMJAQAAAAIhPQAAAAIJAAQlAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkAAAIAAAABAgAAAB5pbnZhbGlkIHNodXRkb3duTWFuYWdlckFkZHJlc3MDCQEAAAACIT0AAAACCQAEJQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAE3RvcHVwTWFuYWdlckFkZHJlc3MFAAAAE3RvcHVwTWFuYWdlckFkZHJlc3MJAAACAAAAAQIAAAAbaW52YWxpZCB0b3B1cE1hbmFnZXJBZGRyZXNzAwkAAGYAAAACAAAAAAAAAAAABQAAABBnZXREZWxheWluQmxvY2tzCQAAAgAAAAEJAAEsAAAAAgIAAAAZaW52YWxpZCBnZXREZWxheWluQmxvY2tzPQkAAaQAAAABBQAAABBnZXREZWxheWluQmxvY2tzAwMJAABnAAAAAgAAAAAAAAAAAAUAAAAYdG9wdXBNYXhOZWdhdGl2ZVBlcmNlbnRzBgkAAGcAAAACBQAAABh0b3B1cE1heE5lZ2F0aXZlUGVyY2VudHMAAAAAAAAAAGMJAAACAAAAAQIAAAAmaW52YWxpZCB0b3B1cE1heE5lZ2F0aXZlUGFydCBwYXJhbWV0ZXIEAAAAD3NoYXJlSW5pdEFtb3VudAkBAAAAEWNvbnZlcnRCYXNlMlNoYXJlAAAAAwUAAAAQYmFzZUFzc2V0QmFsYW5jZQUAAAAKc3RhcnRQcmljZQUAAAARZGVjaW1hbHNNdWx0UHJpY2UEAAAAFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgkABEIAAAAFBQAAAA5zaGFyZUFzc2V0TmFtZQUAAAAPc2hhcmVBc3NldERlc2NyBQAAAA9zaGFyZUluaXRBbW91bnQFAAAACGRlY2ltYWxzBgQAAAAMc2hhcmVBc3NldElkCQAEOAAAAAEFAAAAFXNoYXJlQXNzZXRJc3N1ZUFjdGlvbgQAAAANc2hhcmVBc3NldFN0cgkAAlgAAAABBQAAAAxzaGFyZUFzc2V0SWQEAAAAE2ludGVybmFsQmFzZUFzc2V0SWQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAAAAAAAAAAAAAABAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAaQAAAABBQAAABNpbnRlcm5hbEJhc2VBc3NldElkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAtrZXlBc3NldENmZwAAAAEFAAAADGJhc2VBc3NldFN0cgkBAAAADGRhdGFBc3NldENmZwAAAA0FAAAADXNoYXJlQXNzZXRTdHIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAABZkZWNpbWFsc011bHRCb3RoQXNzZXRzBQAAABFkZWNpbWFsc011bHRQcmljZQUAAAAQZ2V0RGVsYXlpbkJsb2NrcwUAAAAVdG9wdXBJbnRlcnZhbEluQmxvY2tzBQAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAUAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwUAAAATc3VibWl0TGltaXRzQmFzZU1heAUAAAAVc3VibWl0TGltaXRzQmFzZVJlc2V0BQAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAUAAAAWc3VibWl0TGltaXRzU2hhcmVSZXNldAUAAAAMYWRtaW5BZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAUAAAAMYmFzZUFzc2V0U3RyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAB9rZXlNYXBwaW5nc0Jhc2VBc3NldDJpbnRlcm5hbElkAAAAAQUAAAAMYmFzZUFzc2V0U3RyBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAca2V5TWFwcGluZ3NTaGFyZTJiYXNlQXNzZXRJZAAAAAEFAAAADXNoYXJlQXNzZXRTdHIFAAAADGJhc2VBc3NldFN0cgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAca2V5TWFwcGluZ3NCYXNlQXNzZXQyc2hhcmVJZAAAAAEFAAAADGJhc2VBc3NldFN0cgUAAAANc2hhcmVBc3NldFN0cgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAF2tleVNodXRkb3duUHV0T3BlcmF0aW9uAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlTaHV0ZG93bk1hbmFnZXIAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleU5leHRJbnRlcm5hbEFzc2V0SWQAAAAACQAAZAAAAAIFAAAAE2ludGVybmFsQmFzZUFzc2V0SWQAAAAAAAAAAAEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAAxrZXlQcmljZUxhc3QAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAKc3RhcnRQcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAMFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAApzdGFydFByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASa2V5VG9wVXBDdXJyZW50SWR4AAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIAAAAAAAAAAAAJAARMAAAAAgkBAAAAGlJlbWFpbmluZ0xpbWl0c1N0cmluZ0VudHJ5AAAAAwkBAAAAEmtleUxpbWl0c1JlbWFpbmluZwAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAABNzdWJtaXRMaW1pdHNCYXNlTWF4BQAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAkABEwAAAACBQAAABVzaGFyZUFzc2V0SXNzdWVBY3Rpb24JAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAATdG9wdXBNYW5hZ2VyQWRkcmVzcwUAAAAPc2hhcmVJbml0QW1vdW50BQAAAAxzaGFyZUFzc2V0SWQFAAAAA25pbAAAAAFpAQAAAAtzaHV0ZG93blB1dAAAAAEAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAQAAAAWaW50ZXJuYWxCYXNlQXNzZXRJZFN0cgkAAaQAAAABBQAAABNpbnRlcm5hbEJhc2VBc3NldElkBAAAAA5iYXNlQXNzZXRJZFN0cgkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAAB9rZXlNYXBwaW5nc0ludGVybmFsMmJhc2VBc3NldElkAAAAAQUAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAQAAAAWc2h1dGRvd25NYW5hZ2VyQWRkcmVzcwkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABJrZXlTaHV0ZG93bk1hbmFnZXIAAAABBQAAABZpbnRlcm5hbEJhc2VBc3NldElkU3RyAwkAAGYAAAACAAAAAAAAAAABCQABMQAAAAEFAAAADmJhc2VBc3NldElkU3RyCQAAAgAAAAECAAAAG2ludmFsaWQgaW50ZXJuYWxCYXNlQXNzZXRJZAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABZzaHV0ZG93bk1hbmFnZXJBZGRyZXNzCQAAAgAAAAECAAAADWFjY2VzcyBkZW5pZWQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAABdrZXlTaHV0ZG93blB1dE9wZXJhdGlvbgAAAAEJAAGkAAAAAQUAAAATaW50ZXJuYWxCYXNlQXNzZXRJZAYFAAAAA25pbAAAAAFpAQAAAAlzdWJtaXRQdXQAAAAABAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACGluQW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAJaW5Bc3NldElkCQEAAAAFdmFsdWUAAAABCAUAAAADcG10AAAAB2Fzc2V0SWQEAAAADGJhc2VBc3NldFN0cgkAAlgAAAABBQAAAAlpbkFzc2V0SWQJAQAAAAZzdWJtaXQAAAAFAgAAAAFQBQAAAAFpBQAAAAhpbkFtb3VudAUAAAAJaW5Bc3NldElkBQAAAAxiYXNlQXNzZXRTdHIAAAABaQEAAAAJc3VibWl0R2V0AAAAAAQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAhpbkFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQEAAAACWluQXNzZXRJZAkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAA1zaGFyZUFzc2V0U3RyCQACWAAAAAEFAAAACWluQXNzZXRJZAQAAAAMYmFzZUFzc2V0U3RyCQEAAAAPZ2V0U3RyaW5nT3JGYWlsAAAAAQkBAAAAHGtleU1hcHBpbmdzU2hhcmUyYmFzZUFzc2V0SWQAAAABBQAAAA1zaGFyZUFzc2V0U3RyCQEAAAAGc3VibWl0AAAABQIAAAABRwUAAAABaQUAAAAIaW5BbW91bnQFAAAACWluQXNzZXRJZAUAAAAMYmFzZUFzc2V0U3RyAAAAAWkBAAAACmV4ZWN1dGVQdXQAAAADAAAADGJhc2VBc3NldFN0cgAAAA51c2VyQWRkcmVzc1N0cgAAAA1zdWJtaXRUeElkU3RyCQEAAAAHZXhlY3V0ZQAAAAQCAAAAAVAFAAAADGJhc2VBc3NldFN0cgUAAAAOdXNlckFkZHJlc3NTdHIFAAAADXN1Ym1pdFR4SWRTdHIAAAABaQEAAAAKZXhlY3V0ZUdldAAAAAMAAAAMYmFzZUFzc2V0U3RyAAAADnVzZXJBZGRyZXNzU3RyAAAADXN1Ym1pdFR4SWRTdHIJAQAAAAdleGVjdXRlAAAABAIAAAABRwUAAAAMYmFzZUFzc2V0U3RyBQAAAA51c2VyQWRkcmVzc1N0cgUAAAANc3VibWl0VHhJZFN0cgAAAAFpAQAAAA9vcGVyYXRpb25zTXV0ZXgAAAABAAAADGJhc2VBc3NldFN0cgQAAAANYXNzZXRDZmdBcnJheQkBAAAAEnJlYWRBc3NldENmZ09yRmFpbAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAWdG9wVXBNYW5hZ2VyQWRkcmVzc1N0cgkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABlJZHhDZmdUb3B1cE1hbmFnZXJBZGRyZXNzBAAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABdJZHhDZmdJbnRlcm5hbEJhc2VBc3NldAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQEAAAAUZmFpbFRvcHVwTWFuYWdlck9ubHkAAAABBQAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQAETAAAAAIJAQAAABJUb3B1cE11dGV4SW50RW50cnkAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAGaGVpZ2h0BQAAAANuaWwAAAABaQEAAAAMdG9wVXBCYWxhbmNlAAAAAgAAAAxiYXNlQXNzZXRTdHIAAAAGYW1vdW50BAAAAAtiYXNlQXNzZXRJZAkAAlkAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADWFzc2V0Q2ZnQXJyYXkJAQAAABJyZWFkQXNzZXRDZmdPckZhaWwAAAABBQAAAAxiYXNlQXNzZXRTdHIEAAAADHNoYXJlQXNzZXRJZAkAAlkAAAABCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAEklkeENmZ1NoYXJlQXNzZXRJZAQAAAAJcHJpY2VNdWx0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAXSWR4Q2ZnRGVjaW1hbHNNdWx0UHJpY2UEAAAADWJvdGhBc3NldE11bHQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABxJZHhDZmdEZWNpbWFsc011bHRCb3RoQXNzZXRzBAAAABV0b3B1cEludGVydmFsSW5CbG9ja3MJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABtJZHhDZmdUb3B1cEludGVydmFsSW5CbG9ja3MEAAAAFHRvcHVwTWF4TmVnYXRpdmVQYXJ0CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAANYXNzZXRDZmdBcnJheQUAAAAaSWR4Q2ZnVG9wdXBNYXhOZWdhdGl2ZVBhcnQEAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAF0lkeENmZ0ludGVybmFsQmFzZUFzc2V0BAAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAGUlkeENmZ1RvcHVwTWFuYWdlckFkZHJlc3MEAAAAE3N1Ym1pdExpbWl0c0Jhc2VNYXgJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAA1hc3NldENmZ0FycmF5BQAAABlJZHhDZmdTdWJtaXRMaW1pdHNCYXNlTWF4BAAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADWFzc2V0Q2ZnQXJyYXkFAAAAGklkeENmZ1N1Ym1pdExpbWl0c1NoYXJlTWF4BAAAABJ0b3BVcEN1cnJlbnRJZHhLRVkJAQAAABJrZXlUb3BVcEN1cnJlbnRJZHgAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgQAAAAMcHJldlRvcFVwSWR4CQEAAAAMZ2V0SW50T3JGYWlsAAAAAQUAAAASdG9wVXBDdXJyZW50SWR4S0VZBAAAAA9jdXJyZW50VG9wVXBJZHgJAABkAAAAAgUAAAAMcHJldlRvcFVwSWR4AAAAAAAAAAABBAAAAAV2YWxpZAMJAABmAAAAAgUAAAAGYW1vdW50AAAAAAAAAAAABAAAAANwbXQJAQAAAAV2YWx1ZQAAAAEJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAACnBtdEFzc2V0SWQJAQAAAAV2YWx1ZQAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAMJAQAAAAIhPQAAAAIFAAAAC2Jhc2VBc3NldElkBQAAAApwbXRBc3NldElkCQAAAgAAAAECAAAAPmF0dGFjaGVkIHBheW1lbnQncyBhc3NldCBpZCBpcyBOT1QgbWF0Y2hlZCBwYXNzZWQgYmFzZUFzc2V0U3RyAwkAAGYAAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAIG9ubHkgb25lIHBheW1lbnQgY2FuIGJlIGF0dGFjaGVkAwkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAABmFtb3VudAkAAAIAAAABAgAAAD1hdHRhY2hlZCBwYXltZW50LmFtb3VudCBpcyBOT1QgbWF0Y2hlZCBwYXNzZWQgYW1vdW50IGFyZ3VtZW50BgMJAABmAAAAAgAAAAAAAAAAAAUAAAAGYW1vdW50BAAAAAtiYXNlQmFsYW5jZQkAA/AAAAACBQAAAAR0aGlzBQAAAAtiYXNlQXNzZXRJZAQAAAANYWxsb3dlZEFtb3VudAkAAGsAAAADBQAAABR0b3B1cE1heE5lZ2F0aXZlUGFydAUAAAALYmFzZUJhbGFuY2UFAAAADWJvdGhBc3NldE11bHQDCQAAZgAAAAIJAQAAAAEtAAAAAQUAAAAGYW1vdW50BQAAAA1hbGxvd2VkQW1vdW50CQAAAgAAAAEJAAEsAAAAAgIAAAAvdG9wdXAgbmVnYXRpdmUgYW1vdW50IGNvdWxkbid0IGJlIGdyZWF0ZXIgdGhhbiAJAAGkAAAAAQUAAAANYWxsb3dlZEFtb3VudAYJAAACAAAAAQIAAAAaemVybyBhbW91bnQgaXMgbm90IGFsbG93ZWQEAAAAEnRvcFVwTGFzdEhlaWdodEtFWQkBAAAAEmtleVRvcFVwTGFzdEhlaWdodAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAAPdG9wVXBMYXN0SGVpZ2h0CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAAEnRvcFVwTGFzdEhlaWdodEtFWQAAAAAAAAAAAAMJAQAAAAIhPQAAAAIJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBQAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyCQEAAAAUZmFpbFRvcHVwTWFuYWdlck9ubHkAAAABBQAAABZ0b3BVcE1hbmFnZXJBZGRyZXNzU3RyAwkBAAAAASEAAAABBQAAAAV2YWxpZAkAAAIAAAABAgAAABF2YWxpZGF0aW9uIGZhaWxlZAMJAABmAAAAAgUAAAAVdG9wdXBJbnRlcnZhbEluQmxvY2tzCQAAZQAAAAIFAAAABmhlaWdodAUAAAAPdG9wVXBMYXN0SGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAwxIHRvcHVwIHBlciAJAAGkAAAAAQUAAAAVdG9wdXBJbnRlcnZhbEluQmxvY2tzAgAAACggYmxvY2tzIGZyb20gdGhlIHNhbWUgYWRkcmVzcyBpcyBhbGxvd2VkBAAAAAVwcmljZQgJAQAAABBnZW5lcmljQ2FsY1ByaWNlAAAABQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAAC2Jhc2VBc3NldElkBQAAAAZhbW91bnQFAAAADHNoYXJlQXNzZXRJZAUAAAAJcHJpY2VNdWx0AAAAAl8xBAAAAAlkaWZmVHVwbGUJAQAAABNjYWxjVG90YWxMb2NrZWREaWZmAAAACAIAAAAFdG9wdXACAAAAAAUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIFAAAABXByaWNlBQAAAAlwcmljZU11bHQAAAAAAAAAAAAFAAAAC2Jhc2VBc3NldElkBQAAAAxzaGFyZUFzc2V0SWQEAAAADnRvcHVwVG90YWxEaWZmCAUAAAAJZGlmZlR1cGxlAAAAAl8xBAAAAAtwcmljZUF0aEtFWQkBAAAAC2tleVByaWNlQVRIAAAAAQUAAAAUaW50ZXJuYWxCYXNlQXNzZXRTdHIEAAAADHByZXZQcmljZUFUSAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAAtwcmljZUF0aEtFWQAAAAAAAAAAAAkABE4AAAACCQAETQAAAAIJAARNAAAAAgkABE0AAAACCQAETQAAAAIJAARNAAAAAgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleVByaWNlTGFzdAAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2tleVByaWNlSGlzdG9yeQAAAAMFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAAZoZWlnaHQIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAVwcmljZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEmtleVByaWNlQnlUb3BVcElkeAAAAAIFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAAA9jdXJyZW50VG9wVXBJZHgFAAAABXByaWNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJ0b3BVcEN1cnJlbnRJZHhLRVkFAAAAD2N1cnJlbnRUb3BVcElkeAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAALcHJpY2VBdGhLRVkDCQAAZgAAAAIFAAAABXByaWNlBQAAAAxwcmV2UHJpY2VBVEgFAAAABXByaWNlBQAAAAxwcmV2UHJpY2VBVEgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEnRvcFVwTGFzdEhlaWdodEtFWQUAAAAGaGVpZ2h0BQAAAANuaWwJAQAAABZUb3RhbExvY2tlZFN0cmluZ0VudHJ5AAAAAwIAAAAJREVDUkVNRU5UCQEAAAAOa2V5VG90YWxMb2NrZWQAAAABBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgUAAAAOdG9wdXBUb3RhbERpZmYJAQAAABJUb3B1cE11dGV4SW50RW50cnkAAAACBQAAABRpbnRlcm5hbEJhc2VBc3NldFN0cgAAAAAAAAAAAAkBAAAAGlJlbWFpbmluZ0xpbWl0c1N0cmluZ0VudHJ5AAAAAwkBAAAAEmtleUxpbWl0c1JlbWFpbmluZwAAAAEFAAAAFGludGVybmFsQmFzZUFzc2V0U3RyBQAAABNzdWJtaXRMaW1pdHNCYXNlTWF4BQAAABRzdWJtaXRMaW1pdHNTaGFyZU1heAkBAAAABEJ1cm4AAAACBQAAAAxzaGFyZUFzc2V0SWQJAAGRAAAAAgUAAAAOdG9wdXBUb3RhbERpZmYFAAAAFUlkeFRvdGFsTG9ja2VkSW5TaGFyZQkBAAAAB1JlaXNzdWUAAAADBQAAAAxzaGFyZUFzc2V0SWQJAQAAAAEtAAAAAQkAAZEAAAACBQAAAA50b3B1cFRvdGFsRGlmZgUAAAAWSWR4VG90YWxMb2NrZWRPdXRTaGFyZQYDCQAAZgAAAAIAAAAAAAAAAAAFAAAABmFtb3VudAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCAUAAAABaQAAAAZjYWxsZXIJAQAAAAEtAAAAAQUAAAAGYW1vdW50BQAAAAtiYXNlQXNzZXRJZAUAAAADbmlsBQAAAANuaWwAAAABaQEAAAAUY3VycmVudFN5c1BhcmFtc1JFU1QAAAABAAAADGJhc2VBc3NldFN0cgQAAAANc3lzU3RhdGVUdXBsZQkBAAAAG3ByaXZhdGVDdXJyZW50U3lzUGFyYW1zUkVTVAAAAAEFAAAADGJhc2VBc3NldFN0cgQAAAAFcHJpY2UICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfMQAAAAV2YWx1ZQQAAAARZGVjaW1hbHNNdWx0UHJpY2UICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfMgAAAAV2YWx1ZQQAAAAQYmFzZUFzc2V0QmFsYW5jZQgIBQAAAA1zeXNTdGF0ZVR1cGxlAAAAAl8zAAAABXZhbHVlBAAAABV0b3RhbExvY2tlZEJhc2VBbW91bnQICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfNAAAAAV2YWx1ZQQAAAATYmFzZUFzc2V0QmFsYW5jZVdDTwgIBQAAAA1zeXNTdGF0ZVR1cGxlAAAAAl81AAAABXZhbHVlBAAAAA1zaGFyZUVtaXNzaW9uCAgFAAAADXN5c1N0YXRlVHVwbGUAAAACXzYAAAAFdmFsdWUEAAAAGWN1cnJJdGVyVG90YWxJbkJhc2VBbW91bnQICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfNwAAAAV2YWx1ZQQAAAAaY3Vyckl0ZXJUb3RhbEluU2hhcmVBbW91bnQICAUAAAANc3lzU3RhdGVUdXBsZQAAAAJfOAAAAAV2YWx1ZQQAAAAYdG90YWxMb2NrZWRPdXRCYXNlQW1vdW50CAgFAAAADXN5c1N0YXRlVHVwbGUAAAACXzkAAAAFdmFsdWUEAAAAGXRvdGFsTG9ja2VkT3V0U2hhcmVBbW91bnQICAUAAAANc3lzU3RhdGVUdXBsZQAAAANfMTAAAAAFdmFsdWUEAAAAFmRlY2ltYWxzTXVsdEJvdGhBc3NldHMICAUAAAANc3lzU3RhdGVUdXBsZQAAAANfMTEAAAAFdmFsdWUEAAAACHByaWNlQVRICAgFAAAADXN5c1N0YXRlVHVwbGUAAAADXzEyAAAABXZhbHVlBAAAAAlwcmljZUxhc3QICAUAAAANc3lzU3RhdGVUdXBsZQAAAANfMTMAAAAFdmFsdWUEAAAACHJlc3REYXRhCQAEuQAAAAIJAARMAAAAAgIAAAAZc3RhcnRDdXJyZW50U3lzUGFyYW1zUkVTVAkABEwAAAACCQABpAAAAAEFAAAABXByaWNlCQAETAAAAAIJAAGkAAAAAQUAAAARZGVjaW1hbHNNdWx0UHJpY2UJAARMAAAAAgkAAaQAAAABBQAAABBiYXNlQXNzZXRCYWxhbmNlCQAETAAAAAIJAAGkAAAAAQUAAAAVdG90YWxMb2NrZWRCYXNlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAATYmFzZUFzc2V0QmFsYW5jZVdDTwkABEwAAAACCQABpAAAAAEFAAAADXNoYXJlRW1pc3Npb24JAARMAAAAAgkAAaQAAAABBQAAABljdXJySXRlclRvdGFsSW5CYXNlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAaY3Vyckl0ZXJUb3RhbEluU2hhcmVBbW91bnQJAARMAAAAAgkAAaQAAAABBQAAABh0b3RhbExvY2tlZE91dEJhc2VBbW91bnQJAARMAAAAAgkAAaQAAAABBQAAABl0b3RhbExvY2tlZE91dFNoYXJlQW1vdW50CQAETAAAAAIJAAGkAAAAAQUAAAAWZGVjaW1hbHNNdWx0Qm90aEFzc2V0cwkABEwAAAACCQABpAAAAAEFAAAACHByaWNlQVRICQAETAAAAAIJAAGkAAAAAQUAAAAJcHJpY2VMYXN0CQAETAAAAAICAAAAF2VuZEN1cnJlbnRTeXNQYXJhbXNSRVNUBQAAAANuaWwFAAAAA1NFUAkAAAIAAAABBQAAAAhyZXN0RGF0YQAAAADr69MZ", "chainId": 84, "height": 1458803, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 24w2yoHRoB44ajZVdmtj6acdRUA8Vhf5Xr9niZFGveAw Next: Es5keHQxj8Temxf8TjGc9o6nuZjG1QDJmFBsCGDEc7FE Diff:
OldNewDifferences
108108
109109 let al = 12
110110
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)
111+let am = 13
112+
113+func an (P,E,ao,ap,aq,ar,as,r,at,au,av,aw,ax) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", P, E, toString(ao), toString(ap), toString(aq), toString(ar), toString(as), r, toString(at), toString(au), toString(av), toString(aw), ax], a)
112114
113115
114-let aw = 1
116+let ay = 1
115117
116-let ax = 2
118+let az = 2
117119
118-let ay = 3
120+let aA = 3
119121
120-let az = 4
122+let aB = 4
121123
122-func aA (aB,aC,aD,aE) = makeString(["%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE)], a)
124+func aC (aD,aE,aF,aG) = makeString(["%d%d%d%d", toString(aD), toString(aE), toString(aF), toString(aG)], a)
123125
124126
125-func aF (aB,aC,aD,aE) = [-1, aB, aC, aD, aE]
127+func aH (aD,aE,aF,aG) = [-1, aD, aE, aF, aG]
126128
127129
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]))
130+func aI (c) = {
131+ let aJ = split(valueOrElse(getString(this, c), aC(0, 0, 0, 0)), a)
132+ aH(parseIntValue(aJ[ay]), parseIntValue(aJ[az]), parseIntValue(aJ[aA]), parseIntValue(aJ[aB]))
131133 }
132134
133135
134-func aI (aJ,k,E,u,v,aK,aL,aM) = {
135- let aN = (aJ + k)
136- if ((aN == "submitP"))
136+func aK (aL,k,E,u,v,aM,aN,aO) = {
137+ let aP = (aL + k)
138+ if ((aP == "submitP"))
137139 then {
138- let aO = aF(0, 0, aK, 0)
139- let aP = aO
140- $Tuple4(aO, aP, 0, fromBase58String(""))
140+ let aQ = aH(0, 0, aM, 0)
141+ let aR = aQ
142+ $Tuple4(aQ, aR, 0, fromBase58String(""))
141143 }
142- else if ((aN == "submitG"))
144+ else if ((aP == "submitG"))
143145 then {
144- let aO = aF(aK, 0, 0, 0)
145- let aP = aO
146- $Tuple4(aO, aP, 0, fromBase58String(""))
146+ let aQ = aH(aM, 0, 0, 0)
147+ let aR = aQ
148+ $Tuple4(aQ, aR, 0, fromBase58String(""))
147149 }
148- else if ((aN == "executeP"))
150+ else if ((aP == "executeP"))
149151 then {
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)
152+ let aS = w(aM, u, v)
153+ let aQ = aH(0, 0, 0, aS)
154+ let aR = aH(0, 0, aM, 0)
155+ $Tuple4(aQ, aR, aS, aO)
154156 }
155- else if ((aN == "executeG"))
157+ else if ((aP == "executeG"))
156158 then {
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)
159+ let aS = s(aM, u, v)
160+ let aQ = aH(0, aS, 0, 0)
161+ let aR = aH(aM, 0, 0, 0)
162+ $Tuple4(aQ, aR, aS, aN)
161163 }
162- else if ((aN == "topup"))
164+ else if ((aP == "topup"))
163165 then {
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(""))
166+ let aJ = aI(J(E))
167+ let aT = aJ[aA]
168+ let aU = aJ[ay]
169+ let aQ = aH(aU, (-1 * s(aU, u, v)), aT, (-1 * w(aT, u, v)))
170+ $Tuple4(aQ, nil, 0, fromBase58String(""))
169171 }
170- else throw(("Unsupported Type " + aN))
172+ else throw(("Unsupported Type " + aP))
171173 }
172174
173175
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))
176+func aV (aW,c,aX) = {
177+ func aY (aZ,ba) = if ((aW == "INCREMENT"))
178+ then (aZ + ba)
179+ else if ((aW == "DECREMENT"))
180+ then (aZ - ba)
181+ else throw(("Unsupported action " + aW))
180182
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])))
183+ let bb = aI(c)
184+ StringEntry(c, aC(aY(bb[ay], aX[ay]), aY(bb[az], aX[az]), aY(bb[aA], aX[aA]), aY(bb[aB], aX[aB])))
183185 }
184186
185187
186-func ba (k,E,bb,bc) = makeString(["%s%d%s%s", k, E, bb, bc], a)
188+func bc (k,E,bd,be) = makeString(["%s%d%s%s", k, E, bd, be], a)
187189
188190
189-let bd = 1
191+let bf = 1
190192
191-let be = 2
193+let bg = 2
192194
193-let bf = 3
195+let bh = 3
194196
195-let bg = 4
197+let bi = 4
196198
197-let bh = 5
199+let bj = 5
198200
199-let bi = 6
201+let bk = 6
200202
201-let bj = 7
203+let bl = 7
202204
203-let bk = 8
205+let bm = 8
204206
205-let bl = 9
207+let bn = 9
206208
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)
209+func bo (bp,bq,u,br,bs,bt,bu,bv,bw) = makeString(["%s%d%d%d%d%d%d%d%d", bp, bq, u, br, bs, bt, bu, bv, bw], a)
208210
209211
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))
212+func bx (bp,bq,u,br,bs,bt,bu,bv,by) = bo(bp, toString(bq), toString(u), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(by))
211213
212214
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])
215+func bz (bA,bB,bC,bD) = bo(bB, bA[bg], toString(bC), toString(bD), bA[bj], bA[bk], toString(height), toString(lastBlock.timestamp), bA[bn])
214216
215217
216-func bC (h) = {
218+func bE (h) = {
217219 let c = y(h)
218220 split(b(c), a)
219221 }
220222
221223
222-let bD = 1
224+let bF = 1
223225
224-let bE = 2
226+let bG = 2
225227
226-func bF (c,bG,bH) = StringEntry(c, makeString(["%d%d", toString(bG), toString(bH)], a))
228+func bH (c,bI,bJ) = StringEntry(c, makeString(["%d%d", toString(bI), toString(bJ)], a))
227229
228230
229-func bI (E,bJ) = IntegerEntry(W(E), bJ)
231+func bK (E,bL) = IntegerEntry(W(E), bL)
230232
231233
232-func bK (E,Y) = ""
234+func bM (E,Y) = ""
233235
234236
235-func bL (E,aL,bM,aM,ao) = {
236- let aH = aG(J(E))
237- let bN = aH[ax]
238- let bO = aH[ay]
239- let bP = assetBalance(this, aL)
240- let bQ = (((bP + bM) - bO) - bN)
241- let bR = aH[az]
242- let bS = aH[aw]
243- let bT = value(assetInfo(aM)).quantity
244- if ((0 > bQ))
245- then throw(((("baseAssetBalanceWCO < 0: baseAssetBalance=" + toString(bP)) + " baseAssetBalanceWCO=") + toString(bQ)))
237+func bN (E,aN,bO,aO,ap) = {
238+ let aJ = aI(J(E))
239+ let bP = aJ[az]
240+ let bQ = aJ[aA]
241+ let bR = assetBalance(this, aN)
242+ let bS = (((bR + bO) - bQ) - bP)
243+ let bT = aJ[aB]
244+ let bU = aJ[ay]
245+ let bV = value(assetInfo(aO)).quantity
246+ if ((0 > bS))
247+ then throw(((("baseAssetBalanceWCO < 0: baseAssetBalance=" + toString(bR)) + " baseAssetBalanceWCO=") + toString(bS)))
246248 else {
247- let bU = e(A(E))
248- let u = if ((bT == 0))
249- then bU
250- else fraction(bQ, ao, bT)
251- $Tuple9(u, bP, -1, bQ, bT, bO, bS, bN, bR)
249+ let bW = e(A(E))
250+ let u = if ((bV == 0))
251+ then bW
252+ else fraction(bS, ap, bV)
253+ $Tuple9(u, bR, -1, bS, bV, bQ, bU, bP, bT)
252254 }
253255 }
254256
255257
256-func bV (E,aL,aM,ao) = bL(E, aL, 0, aM, ao)
258+func bX (E,aN,aO,ap) = bN(E, aN, 0, aO, ap)
257259
258260
259-func bW (k,bX,aK,bY,h) = {
260- let bZ = toBase58String(bY)
261- let i = toString(bX.caller)
262- let aL = fromBase58String(h)
263- let ca = bC(h)
264- let P = ca[aa]
265- let aM = fromBase58String(P)
266- let an = parseIntValue(ca[ac])
267- let E = ca[ab]
268- let cb = Z(E)
269- let cc = split(b(cb), a)
270- let cd = parseIntValue(cc[bD])
271- let ce = parseIntValue(cc[bE])
272- let cf = d(R(E))
273- if (cf)
261+func bY (k,bZ,aM,ca,h) = {
262+ let cb = toBase58String(ca)
263+ let i = toString(bZ.caller)
264+ let aN = fromBase58String(h)
265+ let cc = bE(h)
266+ let P = cc[aa]
267+ let aO = fromBase58String(P)
268+ let ao = parseIntValue(cc[ac])
269+ let E = cc[ab]
270+ let cd = Z(E)
271+ let ce = split(b(cd), a)
272+ let cf = parseIntValue(ce[bF])
273+ let cg = parseIntValue(ce[bG])
274+ let ch = d(R(E))
275+ if (ch)
274276 then throw("put operation is blocked")
275277 else {
276- let cg = valueOrElse(getInteger(this, W(E)), 0)
277- if (((cg + 60) > height))
278+ let ci = valueOrElse(getInteger(this, W(E)), 0)
279+ if (((ci + 60) > height))
278280 then throw("submit operations are blocked by topup manager")
279281 else {
280- let ch = aI("submit", k, E, 0, 0, aK, aL, aM)
281- let ci = (cd - ch._2[ay])
282- let cj = (ce - ch._2[aw])
283- if (if ((0 > ci))
282+ let cj = aK("submit", k, E, 0, 0, aM, aN, aO)
283+ let ck = (cf - cj._2[aA])
284+ let cl = (cg - cj._2[ay])
285+ if (if ((0 > ck))
284286 then true
285- else (0 > cj))
286- then l(cd, ce, ci, cj)
287+ else (0 > cl))
288+ then l(cf, cg, ck, cl)
287289 else {
288- let ck = e(T(E))
289- ((([StringEntry(ba(k, E, i, toBase58String(bX.transactionId)), bv("PENDING", aK, 0, 0, height, lastBlock.timestamp, 0, 0, (ck + 1)))] :+ aT("INCREMENT", J(E), ch._1)) :+ aT("INCREMENT", K(E, i), ch._2)) :+ bF(cb, ci, cj))
290+ let cm = e(T(E))
291+ ((([StringEntry(bc(k, E, i, toBase58String(bZ.transactionId)), bx("PENDING", aM, 0, 0, height, lastBlock.timestamp, 0, 0, (cm + 1)))] :+ aV("INCREMENT", J(E), cj._1)) :+ aV("INCREMENT", K(E, i), cj._2)) :+ bH(cd, ck, cl))
290292 }
291293 }
292294 }
293295 }
294296
295297
296-func cl (k,h,i,j) = {
297- let bb = addressFromStringValue(i)
298- let cm = bC(h)
299- let aM = fromBase58String(cm[aa])
300- let E = cm[ab]
301- let ao = parseIntValue(cm[ad])
302- let aL = fromBase58String(h)
303- let cn = ba(k, E, i, j)
304- let co = split(b(cn), a)
305- let bn = co[bd]
306- let aK = parseIntValue(co[be])
307- let bw = parseIntValue(co[bl])
308- let cp = e(T(E))
309- let cq = e(D(E, cp))
310- if ((bn != "PENDING"))
298+func cn (k,h,i,j) = {
299+ let bd = addressFromStringValue(i)
300+ let co = bE(h)
301+ let aO = fromBase58String(co[aa])
302+ let E = co[ab]
303+ let ap = parseIntValue(co[ad])
304+ let aN = fromBase58String(h)
305+ let cp = bc(k, E, i, j)
306+ let cq = split(b(cp), a)
307+ let bp = cq[bf]
308+ let aM = parseIntValue(cq[bg])
309+ let by = parseIntValue(cq[bn])
310+ let cr = e(T(E))
311+ let cs = e(D(E, cr))
312+ if ((bp != "PENDING"))
311313 then f("Status is not PENDING", h, i, j, k)
312- else if ((bw > cp))
313- then f(((("OperLock[" + toString(bw)) + "] > ") + toString(cp)), h, i, j, k)
314+ else if ((by > cr))
315+ then f(((("OperLock[" + toString(by)) + "] > ") + toString(cr)), h, i, j, k)
314316 else {
315- let ch = aI("execute", k, E, cq, ao, aK, aL, aM)
316- let aQ = ch._3
317- let cr = if ((ch._4 == aL))
318- then [ScriptTransfer(bb, aQ, aL)]
319- else [ScriptTransfer(bb, aQ, aM)]
320- (((cr :+ StringEntry(cn, bx(co, "FINISHED", cq, aQ))) :+ aT("DECREMENT", J(E), ch._1)) :+ aT("DECREMENT", K(E, i), ch._2))
317+ let cj = aK("execute", k, E, cs, ap, aM, aN, aO)
318+ let aS = cj._3
319+ let ct = if ((cj._4 == aN))
320+ then [ScriptTransfer(bd, aS, aN)]
321+ else [ScriptTransfer(bd, aS, aO)]
322+ (((ct :+ StringEntry(cp, bz(cq, "FINISHED", cs, aS))) :+ aV("DECREMENT", J(E), cj._1)) :+ aV("DECREMENT", K(E, i), cj._2))
321323 }
322324 }
323325
324326
325-func cs (h) = {
326- let aL = fromBase58String(h)
327- let ca = bC(h)
328- let P = ca[aa]
329- let aM = fromBase58String(P)
330- let an = parseIntValue(ca[ac])
331- let ao = parseIntValue(ca[ad])
332- let E = ca[ab]
333- let ct = C(E)
334- let cu = valueOrElse(getInteger(this, ct), 0)
335- let cv = bV(E, aL, aM, ao)
336- $Tuple12(IntegerEntry("price", cv._1), IntegerEntry("decimalsMultPrice", ao), IntegerEntry("baseAssetBalance", cv._2), IntegerEntry("-1", cv._3), IntegerEntry("baseAssetBalanceWCO", cv._4), IntegerEntry("shareEmission", cv._5), IntegerEntry("currIterTotalInBaseAmount", cv._6), IntegerEntry("currIterTotalInShareAmount", cv._7), IntegerEntry("totalLockedOutBaseAmount", cv._8), IntegerEntry("totalLockedOutShareAmount", cv._9), IntegerEntry("decimalsMultBothAssets", an), IntegerEntry("priceATH", cu))
327+func cu (h) = {
328+ let aN = fromBase58String(h)
329+ let cc = bE(h)
330+ let P = cc[aa]
331+ let aO = fromBase58String(P)
332+ let ao = parseIntValue(cc[ac])
333+ let ap = parseIntValue(cc[ad])
334+ let E = cc[ab]
335+ let cv = C(E)
336+ let cw = valueOrElse(getInteger(this, cv), 0)
337+ let cx = A(E)
338+ let cy = valueOrElse(getInteger(this, cx), 0)
339+ let cz = bX(E, aN, aO, ap)
340+ $Tuple13(IntegerEntry("price", cz._1), IntegerEntry("decimalsMultPrice", ap), IntegerEntry("baseAssetBalance", cz._2), IntegerEntry("-1", cz._3), IntegerEntry("baseAssetBalanceWCO", cz._4), IntegerEntry("shareEmission", cz._5), IntegerEntry("currIterTotalInBaseAmount", cz._6), IntegerEntry("currIterTotalInShareAmount", cz._7), IntegerEntry("totalLockedOutBaseAmount", cz._8), IntegerEntry("totalLockedOutShareAmount", cz._9), IntegerEntry("decimalsMultBothAssets", ao), IntegerEntry("priceATH", cw), IntegerEntry("priceLast", cy))
337341 }
338342
339343
340-@Callable(bX)
341-func adminRegisterAsset (h,cw,cx,cy,cz,cA,aq,ar,r,as,at,au,av) = {
342- let aL = fromBase58String(h)
343- let cB = value(assetInfo(aL)).decimals
344- let an = pow(10, 0, cB, 0, 0, DOWN)
345- let ao = ((100 * 1000) * 1000)
346- let cC = fraction(ar, 100, an)
347- let bP = assetBalance(this, aL)
348- if ((bX.caller != this))
344+@Callable(bZ)
345+func adminRegisterAsset (h,cA,cB,cC,cD,cE,ar,as,r,at,au,av,aw,ax) = {
346+ let aN = fromBase58String(h)
347+ let cF = value(assetInfo(aN)).decimals
348+ let ao = pow(10, 0, cF, 0, 0, DOWN)
349+ let ap = ((100 * 1000) * 1000)
350+ let cG = fraction(as, 100, ao)
351+ let bR = assetBalance(this, aN)
352+ if ((bZ.caller != this))
349353 then throw("permissions denied")
350- else if ((bP == 0))
354+ else if ((bR == 0))
351355 then throw(((toString(this) + " must have any initial balance of ") + h))
352356 else if (isDefined(getString(this, y(h))))
353357 then throw((h + " has been already registered"))
354- else if ((toString(addressFromStringValue(cz)) != cz))
358+ else if ((toString(addressFromStringValue(cD)) != cD))
355359 then throw("invalid shutdownManagerAddress")
356360 else if ((toString(addressFromStringValue(r)) != r))
357361 then throw("invalid topupManagerAddress")
358- else if ((0 > cy))
359- then throw(("invalid getDelayinBlocks=" + toString(cy)))
360- else if (if ((0 >= cC))
362+ else if ((0 > cC))
363+ then throw(("invalid getDelayinBlocks=" + toString(cC)))
364+ else if (if ((0 >= cG))
361365 then true
362- else (cC >= 99))
366+ else (cG >= 99))
363367 then throw("invalid topupMaxNegativePart parameter")
364368 else {
365- let cD = w(bP, cA, ao)
366- let cE = Issue(cw, cx, cD, cB, true)
367- let aM = calculateAssetId(cE)
368- let P = toBase58String(aM)
369- let cF = valueOrElse(getInteger(this, z()), 0)
370- let E = toString(cF)
371-[StringEntry(y(h), am(P, E, an, ao, cy, aq, ar, r, as, at, au, av)), StringEntry(L(cF), h), StringEntry(N(h), E), StringEntry(O(P), h), StringEntry(Q(h), P), BooleanEntry(R(E), false), StringEntry(S(E), cz), IntegerEntry(z(), (cF + 1)), IntegerEntry(A(E), cA), IntegerEntry(G(E, height, lastBlock.timestamp), cA), IntegerEntry(T(E), 0), bF(Z(E), as, au), cE]
369+ let cH = w(bR, cE, ap)
370+ let cI = Issue(cA, cB, cH, cF, true)
371+ let aO = calculateAssetId(cI)
372+ let P = toBase58String(aO)
373+ let cJ = valueOrElse(getInteger(this, z()), 0)
374+ let E = toString(cJ)
375+[StringEntry(y(h), an(P, E, ao, ap, cC, ar, as, r, at, au, av, aw, ax)), StringEntry(L(cJ), h), StringEntry(N(h), E), StringEntry(O(P), h), StringEntry(Q(h), P), BooleanEntry(R(E), false), StringEntry(S(E), cD), IntegerEntry(z(), (cJ + 1)), IntegerEntry(A(E), cE), IntegerEntry(G(E, height, lastBlock.timestamp), cE), IntegerEntry(T(E), 0), bH(Z(E), at, av), cI, ScriptTransfer(addressFromStringValue(r), cH, aO)]
372376 }
373377 }
374378
375379
376380
377-@Callable(bX)
378-func shutdownPut (cF) = {
379- let cG = toString(cF)
380- let cH = b(L(cF))
381- let cz = b(S(cG))
382- if ((1 > size(cH)))
381+@Callable(bZ)
382+func shutdownPut (cJ) = {
383+ let cK = toString(cJ)
384+ let cL = b(L(cJ))
385+ let cD = b(S(cK))
386+ if ((1 > size(cL)))
383387 then throw("invalid internalBaseAssetId")
384- else if ((toString(bX.caller) != cz))
388+ else if ((toString(bZ.caller) != cD))
385389 then throw("access denied")
386- else [BooleanEntry(R(toString(cF)), true)]
390+ else [BooleanEntry(R(toString(cJ)), true)]
387391 }
388392
389393
390394
391-@Callable(bX)
395+@Callable(bZ)
392396 func submitPut () = {
393- let cI = value(bX.payments[0])
394- let aK = cI.amount
395- let bY = value(cI.assetId)
396- let h = toBase58String(bY)
397- bW("P", bX, aK, bY, h)
397+ let cM = value(bZ.payments[0])
398+ let aM = cM.amount
399+ let ca = value(cM.assetId)
400+ let h = toBase58String(ca)
401+ bY("P", bZ, aM, ca, h)
398402 }
399403
400404
401405
402-@Callable(bX)
406+@Callable(bZ)
403407 func submitGet () = {
404- let cI = value(bX.payments[0])
405- let aK = cI.amount
406- let bY = value(cI.assetId)
407- let P = toBase58String(bY)
408+ let cM = value(bZ.payments[0])
409+ let aM = cM.amount
410+ let ca = value(cM.assetId)
411+ let P = toBase58String(ca)
408412 let h = b(O(P))
409- bW("G", bX, aK, bY, h)
413+ bY("G", bZ, aM, ca, h)
410414 }
411415
412416
413417
414-@Callable(bX)
415-func executePut (h,i,j) = cl("P", h, i, j)
418+@Callable(bZ)
419+func executePut (h,i,j) = cn("P", h, i, j)
416420
417421
418422
419-@Callable(bX)
420-func executeGet (h,i,j) = cl("G", h, i, j)
423+@Callable(bZ)
424+func executeGet (h,i,j) = cn("G", h, i, j)
421425
422426
423427
424-@Callable(bX)
428+@Callable(bZ)
425429 func operationsMutex (h) = {
426- let cm = bC(h)
427- let cJ = cm[ah]
428- let E = cm[ab]
429- if ((toString(bX.caller) != cJ))
430- then q(cJ)
431- else [bI(E, height)]
430+ let co = bE(h)
431+ let cN = co[ah]
432+ let E = co[ab]
433+ if ((toString(bZ.caller) != cN))
434+ then q(cN)
435+ else [bK(E, height)]
432436 }
433437
434438
435439
436-@Callable(bX)
437-func topUpBalance (h,cK) = {
438- let aL = fromBase58String(h)
439- let cm = bC(h)
440- let aM = fromBase58String(cm[aa])
441- let v = parseIntValue(cm[ad])
442- let cL = parseIntValue(cm[ac])
443- let aq = parseIntValue(cm[af])
444- let ar = parseIntValue(cm[ag])
445- let E = cm[ab]
446- let cJ = cm[ah]
447- let cM = T(E)
448- let cN = e(cM)
449- let cO = (cN + 1)
450- let cP = if ((cK > 0))
440+@Callable(bZ)
441+func topUpBalance (h,cO) = {
442+ let aN = fromBase58String(h)
443+ let co = bE(h)
444+ let aO = fromBase58String(co[aa])
445+ let v = parseIntValue(co[ad])
446+ let cP = parseIntValue(co[ac])
447+ let ar = parseIntValue(co[af])
448+ let as = parseIntValue(co[ag])
449+ let E = co[ab]
450+ let cN = co[ah]
451+ let at = parseIntValue(co[ai])
452+ let av = parseIntValue(co[ak])
453+ let cQ = T(E)
454+ let cR = e(cQ)
455+ let cS = (cR + 1)
456+ let cT = if ((cO > 0))
451457 then {
452- let cI = value(bX.payments[0])
453- let cQ = value(cI.assetId)
454- if ((aL != cQ))
458+ let cM = value(bZ.payments[0])
459+ let cU = value(cM.assetId)
460+ if ((aN != cU))
455461 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
456- else if ((size(bX.payments) > 1))
462+ else if ((size(bZ.payments) > 1))
457463 then throw("only one payment can be attached")
458- else if ((cI.amount != cK))
464+ else if ((cM.amount != cO))
459465 then throw("attached payment.amount is NOT matched passed amount argument")
460466 else true
461467 }
462- else if ((0 > cK))
468+ else if ((0 > cO))
463469 then {
464- let cR = assetBalance(this, aL)
465- let cS = fraction(ar, cR, cL)
466- if ((-(cK) > cS))
467- then throw(("topup negative amount couldn't be greater than " + toString(cS)))
470+ let cV = assetBalance(this, aN)
471+ let cW = fraction(as, cV, cP)
472+ if ((-(cO) > cW))
473+ then throw(("topup negative amount couldn't be greater than " + toString(cW)))
468474 else true
469475 }
470476 else throw("zero amount is not allowed")
471- let cT = U(E, toString(bX.caller))
472- let cU = valueOrElse(getInteger(this, cT), 0)
473- if ((toString(bX.caller) != cJ))
474- then q(cJ)
475- else if (!(cP))
477+ let cX = U(E, toString(bZ.caller))
478+ let cY = valueOrElse(getInteger(this, cX), 0)
479+ if ((toString(bZ.caller) != cN))
480+ then q(cN)
481+ else if (!(cT))
476482 then throw("validation failed")
477- else if ((aq > (height - cU)))
478- then throw((("1 topup per " + toString(aq)) + " blocks from the same address is allowed"))
483+ else if ((ar > (height - cY)))
484+ then throw((("1 topup per " + toString(ar)) + " blocks from the same address is allowed"))
479485 else {
480- let u = bL(E, aL, cK, aM, v)._1
481- let ch = aI("topup", "", E, u, v, 0, aL, aM)
482- let cV = ch._1
483- let ct = C(E)
484- let cW = valueOrElse(getInteger(this, ct), 0)
485- ((((([IntegerEntry(A(E), u), IntegerEntry(G(E, height, lastBlock.timestamp), u), IntegerEntry(D(E, cO), u), IntegerEntry(cM, cO), IntegerEntry(ct, if ((u > cW))
486+ let u = bN(E, aN, cO, aO, v)._1
487+ let cj = aK("topup", "", E, u, v, 0, aN, aO)
488+ let cZ = cj._1
489+ let cv = C(E)
490+ let da = valueOrElse(getInteger(this, cv), 0)
491+ (((((([IntegerEntry(A(E), u), IntegerEntry(G(E, height, lastBlock.timestamp), u), IntegerEntry(D(E, cS), u), IntegerEntry(cQ, cS), IntegerEntry(cv, if ((u > da))
486492 then u
487- else cW), IntegerEntry(cT, height)] :+ aT("DECREMENT", J(E), cV)) :+ bI(E, 0)) :+ Burn(aM, cV[aw])) :+ Reissue(aM, -(cV[az]), true)) ++ (if ((0 > cK))
488- then [ScriptTransfer(bX.caller, -(cK), aL)]
493+ else da), IntegerEntry(cX, height)] :+ aV("DECREMENT", J(E), cZ)) :+ bK(E, 0)) :+ bH(Z(E), at, av)) :+ Burn(aO, cZ[ay])) :+ Reissue(aO, -(cZ[aB]), true)) ++ (if ((0 > cO))
494+ then [ScriptTransfer(bZ.caller, -(cO), aN)]
489495 else nil))
490496 }
491497 }
492498
493499
494500
495-@Callable(bX)
501+@Callable(bZ)
496502 func currentSysParamsREST (h) = {
497- let cX = cs(h)
498- let u = cX._1.value
499- let ao = cX._2.value
500- let bP = cX._3.value
501- let cY = cX._4.value
502- let bQ = cX._5.value
503- let bT = cX._6.value
504- let bO = cX._7.value
505- let bS = cX._8.value
506- let bN = cX._9.value
507- let bR = cX._10.value
508- let an = cX._11.value
509- let cu = cX._12.value
510- let cZ = makeString(["startCurrentSysParamsREST", toString(u), toString(ao), toString(bP), toString(cY), toString(bQ), toString(bT), toString(bO), toString(bS), toString(bN), toString(bR), toString(an), toString(cu), "endCurrentSysParamsREST"], a)
511- throw(cZ)
503+ let db = cu(h)
504+ let u = db._1.value
505+ let ap = db._2.value
506+ let bR = db._3.value
507+ let dc = db._4.value
508+ let bS = db._5.value
509+ let bV = db._6.value
510+ let bQ = db._7.value
511+ let bU = db._8.value
512+ let bP = db._9.value
513+ let bT = db._10.value
514+ let ao = db._11.value
515+ let cw = db._12.value
516+ let cy = db._13.value
517+ let dd = makeString(["startCurrentSysParamsREST", toString(u), toString(ap), toString(bR), toString(dc), toString(bS), toString(bV), toString(bQ), toString(bU), toString(bP), toString(bT), toString(ao), toString(cw), toString(cy), "endCurrentSysParamsREST"], a)
518+ throw(dd)
512519 }
513520
514521
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) = throw((("opertion denied: only topUpManager=" + r) + " can send such transactions"))
2222
2323
2424 func s (t,u,v) = fraction(t, u, v)
2525
2626
2727 func w (x,u,v) = fraction(x, v, u)
2828
2929
3030 func y (h) = ("%s%s%s__config__asset__" + h)
3131
3232
3333 func z () = "%s__nextInternalAssetId"
3434
3535
3636 func A (B) = ("%s%s%d__price__last__" + B)
3737
3838
3939 func C (B) = ("%s%s%d__price__ath__" + B)
4040
4141
4242 func D (E,F) = makeString(["%s%s%d%d__price__byTopUpIdx", E, toString(F)], a)
4343
4444
4545 func G (B,H,I) = makeString(["%s%s%d%d%d__price__history", B, toString(H), toString(I)], a)
4646
4747
4848 func J (B) = ("%s%s%d__total__locked__" + B)
4949
5050
5151 func K (E,i) = makeString(["%s%s%d%s__total__locked", E, i], a)
5252
5353
5454 func L (M) = ("%s%s%d__mappings__internal2baseAssetId__" + toString(M))
5555
5656
5757 func N (h) = ("%s%s%s__mappings__baseAsset2internalId__" + h)
5858
5959
6060 func O (P) = ("%s%s%s__mappings__share2baseAssetId__" + P)
6161
6262
6363 func Q (h) = ("%s%s%s__mappings__baseAsset2shareId__" + h)
6464
6565
6666 func R (E) = ("%s%s%d__shutdown__put__" + E)
6767
6868
6969 func S (E) = ("%s%s%d__shutdown__manager__" + E)
7070
7171
7272 func T (E) = ("%s%s%d__topup__currentIdx__" + E)
7373
7474
7575 func U (B,V) = makeString(["%s%s%s%d%s__topup__last__height", B, V], a)
7676
7777
7878 func W (B) = ("%s%s%d__topup__mutex__" + B)
7979
8080
8181 func X (B,Y) = makeString(["%s%s%d%d__topup__history", B, toString(Y)], a)
8282
8383
8484 func Z (B) = ("%s%s%d__limits__remaining__" + B)
8585
8686
8787 let aa = 1
8888
8989 let ab = 2
9090
9191 let ac = 3
9292
9393 let ad = 4
9494
9595 let ae = 5
9696
9797 let af = 6
9898
9999 let ag = 7
100100
101101 let ah = 8
102102
103103 let ai = 9
104104
105105 let aj = 10
106106
107107 let ak = 11
108108
109109 let al = 12
110110
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)
111+let am = 13
112+
113+func an (P,E,ao,ap,aq,ar,as,r,at,au,av,aw,ax) = makeString(["%s%d%d%d%d%d%d%s%d%d%d%d", P, E, toString(ao), toString(ap), toString(aq), toString(ar), toString(as), r, toString(at), toString(au), toString(av), toString(aw), ax], a)
112114
113115
114-let aw = 1
116+let ay = 1
115117
116-let ax = 2
118+let az = 2
117119
118-let ay = 3
120+let aA = 3
119121
120-let az = 4
122+let aB = 4
121123
122-func aA (aB,aC,aD,aE) = makeString(["%d%d%d%d", toString(aB), toString(aC), toString(aD), toString(aE)], a)
124+func aC (aD,aE,aF,aG) = makeString(["%d%d%d%d", toString(aD), toString(aE), toString(aF), toString(aG)], a)
123125
124126
125-func aF (aB,aC,aD,aE) = [-1, aB, aC, aD, aE]
127+func aH (aD,aE,aF,aG) = [-1, aD, aE, aF, aG]
126128
127129
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]))
130+func aI (c) = {
131+ let aJ = split(valueOrElse(getString(this, c), aC(0, 0, 0, 0)), a)
132+ aH(parseIntValue(aJ[ay]), parseIntValue(aJ[az]), parseIntValue(aJ[aA]), parseIntValue(aJ[aB]))
131133 }
132134
133135
134-func aI (aJ,k,E,u,v,aK,aL,aM) = {
135- let aN = (aJ + k)
136- if ((aN == "submitP"))
136+func aK (aL,k,E,u,v,aM,aN,aO) = {
137+ let aP = (aL + k)
138+ if ((aP == "submitP"))
137139 then {
138- let aO = aF(0, 0, aK, 0)
139- let aP = aO
140- $Tuple4(aO, aP, 0, fromBase58String(""))
140+ let aQ = aH(0, 0, aM, 0)
141+ let aR = aQ
142+ $Tuple4(aQ, aR, 0, fromBase58String(""))
141143 }
142- else if ((aN == "submitG"))
144+ else if ((aP == "submitG"))
143145 then {
144- let aO = aF(aK, 0, 0, 0)
145- let aP = aO
146- $Tuple4(aO, aP, 0, fromBase58String(""))
146+ let aQ = aH(aM, 0, 0, 0)
147+ let aR = aQ
148+ $Tuple4(aQ, aR, 0, fromBase58String(""))
147149 }
148- else if ((aN == "executeP"))
150+ else if ((aP == "executeP"))
149151 then {
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)
152+ let aS = w(aM, u, v)
153+ let aQ = aH(0, 0, 0, aS)
154+ let aR = aH(0, 0, aM, 0)
155+ $Tuple4(aQ, aR, aS, aO)
154156 }
155- else if ((aN == "executeG"))
157+ else if ((aP == "executeG"))
156158 then {
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)
159+ let aS = s(aM, u, v)
160+ let aQ = aH(0, aS, 0, 0)
161+ let aR = aH(aM, 0, 0, 0)
162+ $Tuple4(aQ, aR, aS, aN)
161163 }
162- else if ((aN == "topup"))
164+ else if ((aP == "topup"))
163165 then {
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(""))
166+ let aJ = aI(J(E))
167+ let aT = aJ[aA]
168+ let aU = aJ[ay]
169+ let aQ = aH(aU, (-1 * s(aU, u, v)), aT, (-1 * w(aT, u, v)))
170+ $Tuple4(aQ, nil, 0, fromBase58String(""))
169171 }
170- else throw(("Unsupported Type " + aN))
172+ else throw(("Unsupported Type " + aP))
171173 }
172174
173175
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))
176+func aV (aW,c,aX) = {
177+ func aY (aZ,ba) = if ((aW == "INCREMENT"))
178+ then (aZ + ba)
179+ else if ((aW == "DECREMENT"))
180+ then (aZ - ba)
181+ else throw(("Unsupported action " + aW))
180182
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])))
183+ let bb = aI(c)
184+ StringEntry(c, aC(aY(bb[ay], aX[ay]), aY(bb[az], aX[az]), aY(bb[aA], aX[aA]), aY(bb[aB], aX[aB])))
183185 }
184186
185187
186-func ba (k,E,bb,bc) = makeString(["%s%d%s%s", k, E, bb, bc], a)
188+func bc (k,E,bd,be) = makeString(["%s%d%s%s", k, E, bd, be], a)
187189
188190
189-let bd = 1
191+let bf = 1
190192
191-let be = 2
193+let bg = 2
192194
193-let bf = 3
195+let bh = 3
194196
195-let bg = 4
197+let bi = 4
196198
197-let bh = 5
199+let bj = 5
198200
199-let bi = 6
201+let bk = 6
200202
201-let bj = 7
203+let bl = 7
202204
203-let bk = 8
205+let bm = 8
204206
205-let bl = 9
207+let bn = 9
206208
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)
209+func bo (bp,bq,u,br,bs,bt,bu,bv,bw) = makeString(["%s%d%d%d%d%d%d%d%d", bp, bq, u, br, bs, bt, bu, bv, bw], a)
208210
209211
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))
212+func bx (bp,bq,u,br,bs,bt,bu,bv,by) = bo(bp, toString(bq), toString(u), toString(br), toString(bs), toString(bt), toString(bu), toString(bv), toString(by))
211213
212214
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])
215+func bz (bA,bB,bC,bD) = bo(bB, bA[bg], toString(bC), toString(bD), bA[bj], bA[bk], toString(height), toString(lastBlock.timestamp), bA[bn])
214216
215217
216-func bC (h) = {
218+func bE (h) = {
217219 let c = y(h)
218220 split(b(c), a)
219221 }
220222
221223
222-let bD = 1
224+let bF = 1
223225
224-let bE = 2
226+let bG = 2
225227
226-func bF (c,bG,bH) = StringEntry(c, makeString(["%d%d", toString(bG), toString(bH)], a))
228+func bH (c,bI,bJ) = StringEntry(c, makeString(["%d%d", toString(bI), toString(bJ)], a))
227229
228230
229-func bI (E,bJ) = IntegerEntry(W(E), bJ)
231+func bK (E,bL) = IntegerEntry(W(E), bL)
230232
231233
232-func bK (E,Y) = ""
234+func bM (E,Y) = ""
233235
234236
235-func bL (E,aL,bM,aM,ao) = {
236- let aH = aG(J(E))
237- let bN = aH[ax]
238- let bO = aH[ay]
239- let bP = assetBalance(this, aL)
240- let bQ = (((bP + bM) - bO) - bN)
241- let bR = aH[az]
242- let bS = aH[aw]
243- let bT = value(assetInfo(aM)).quantity
244- if ((0 > bQ))
245- then throw(((("baseAssetBalanceWCO < 0: baseAssetBalance=" + toString(bP)) + " baseAssetBalanceWCO=") + toString(bQ)))
237+func bN (E,aN,bO,aO,ap) = {
238+ let aJ = aI(J(E))
239+ let bP = aJ[az]
240+ let bQ = aJ[aA]
241+ let bR = assetBalance(this, aN)
242+ let bS = (((bR + bO) - bQ) - bP)
243+ let bT = aJ[aB]
244+ let bU = aJ[ay]
245+ let bV = value(assetInfo(aO)).quantity
246+ if ((0 > bS))
247+ then throw(((("baseAssetBalanceWCO < 0: baseAssetBalance=" + toString(bR)) + " baseAssetBalanceWCO=") + toString(bS)))
246248 else {
247- let bU = e(A(E))
248- let u = if ((bT == 0))
249- then bU
250- else fraction(bQ, ao, bT)
251- $Tuple9(u, bP, -1, bQ, bT, bO, bS, bN, bR)
249+ let bW = e(A(E))
250+ let u = if ((bV == 0))
251+ then bW
252+ else fraction(bS, ap, bV)
253+ $Tuple9(u, bR, -1, bS, bV, bQ, bU, bP, bT)
252254 }
253255 }
254256
255257
256-func bV (E,aL,aM,ao) = bL(E, aL, 0, aM, ao)
258+func bX (E,aN,aO,ap) = bN(E, aN, 0, aO, ap)
257259
258260
259-func bW (k,bX,aK,bY,h) = {
260- let bZ = toBase58String(bY)
261- let i = toString(bX.caller)
262- let aL = fromBase58String(h)
263- let ca = bC(h)
264- let P = ca[aa]
265- let aM = fromBase58String(P)
266- let an = parseIntValue(ca[ac])
267- let E = ca[ab]
268- let cb = Z(E)
269- let cc = split(b(cb), a)
270- let cd = parseIntValue(cc[bD])
271- let ce = parseIntValue(cc[bE])
272- let cf = d(R(E))
273- if (cf)
261+func bY (k,bZ,aM,ca,h) = {
262+ let cb = toBase58String(ca)
263+ let i = toString(bZ.caller)
264+ let aN = fromBase58String(h)
265+ let cc = bE(h)
266+ let P = cc[aa]
267+ let aO = fromBase58String(P)
268+ let ao = parseIntValue(cc[ac])
269+ let E = cc[ab]
270+ let cd = Z(E)
271+ let ce = split(b(cd), a)
272+ let cf = parseIntValue(ce[bF])
273+ let cg = parseIntValue(ce[bG])
274+ let ch = d(R(E))
275+ if (ch)
274276 then throw("put operation is blocked")
275277 else {
276- let cg = valueOrElse(getInteger(this, W(E)), 0)
277- if (((cg + 60) > height))
278+ let ci = valueOrElse(getInteger(this, W(E)), 0)
279+ if (((ci + 60) > height))
278280 then throw("submit operations are blocked by topup manager")
279281 else {
280- let ch = aI("submit", k, E, 0, 0, aK, aL, aM)
281- let ci = (cd - ch._2[ay])
282- let cj = (ce - ch._2[aw])
283- if (if ((0 > ci))
282+ let cj = aK("submit", k, E, 0, 0, aM, aN, aO)
283+ let ck = (cf - cj._2[aA])
284+ let cl = (cg - cj._2[ay])
285+ if (if ((0 > ck))
284286 then true
285- else (0 > cj))
286- then l(cd, ce, ci, cj)
287+ else (0 > cl))
288+ then l(cf, cg, ck, cl)
287289 else {
288- let ck = e(T(E))
289- ((([StringEntry(ba(k, E, i, toBase58String(bX.transactionId)), bv("PENDING", aK, 0, 0, height, lastBlock.timestamp, 0, 0, (ck + 1)))] :+ aT("INCREMENT", J(E), ch._1)) :+ aT("INCREMENT", K(E, i), ch._2)) :+ bF(cb, ci, cj))
290+ let cm = e(T(E))
291+ ((([StringEntry(bc(k, E, i, toBase58String(bZ.transactionId)), bx("PENDING", aM, 0, 0, height, lastBlock.timestamp, 0, 0, (cm + 1)))] :+ aV("INCREMENT", J(E), cj._1)) :+ aV("INCREMENT", K(E, i), cj._2)) :+ bH(cd, ck, cl))
290292 }
291293 }
292294 }
293295 }
294296
295297
296-func cl (k,h,i,j) = {
297- let bb = addressFromStringValue(i)
298- let cm = bC(h)
299- let aM = fromBase58String(cm[aa])
300- let E = cm[ab]
301- let ao = parseIntValue(cm[ad])
302- let aL = fromBase58String(h)
303- let cn = ba(k, E, i, j)
304- let co = split(b(cn), a)
305- let bn = co[bd]
306- let aK = parseIntValue(co[be])
307- let bw = parseIntValue(co[bl])
308- let cp = e(T(E))
309- let cq = e(D(E, cp))
310- if ((bn != "PENDING"))
298+func cn (k,h,i,j) = {
299+ let bd = addressFromStringValue(i)
300+ let co = bE(h)
301+ let aO = fromBase58String(co[aa])
302+ let E = co[ab]
303+ let ap = parseIntValue(co[ad])
304+ let aN = fromBase58String(h)
305+ let cp = bc(k, E, i, j)
306+ let cq = split(b(cp), a)
307+ let bp = cq[bf]
308+ let aM = parseIntValue(cq[bg])
309+ let by = parseIntValue(cq[bn])
310+ let cr = e(T(E))
311+ let cs = e(D(E, cr))
312+ if ((bp != "PENDING"))
311313 then f("Status is not PENDING", h, i, j, k)
312- else if ((bw > cp))
313- then f(((("OperLock[" + toString(bw)) + "] > ") + toString(cp)), h, i, j, k)
314+ else if ((by > cr))
315+ then f(((("OperLock[" + toString(by)) + "] > ") + toString(cr)), h, i, j, k)
314316 else {
315- let ch = aI("execute", k, E, cq, ao, aK, aL, aM)
316- let aQ = ch._3
317- let cr = if ((ch._4 == aL))
318- then [ScriptTransfer(bb, aQ, aL)]
319- else [ScriptTransfer(bb, aQ, aM)]
320- (((cr :+ StringEntry(cn, bx(co, "FINISHED", cq, aQ))) :+ aT("DECREMENT", J(E), ch._1)) :+ aT("DECREMENT", K(E, i), ch._2))
317+ let cj = aK("execute", k, E, cs, ap, aM, aN, aO)
318+ let aS = cj._3
319+ let ct = if ((cj._4 == aN))
320+ then [ScriptTransfer(bd, aS, aN)]
321+ else [ScriptTransfer(bd, aS, aO)]
322+ (((ct :+ StringEntry(cp, bz(cq, "FINISHED", cs, aS))) :+ aV("DECREMENT", J(E), cj._1)) :+ aV("DECREMENT", K(E, i), cj._2))
321323 }
322324 }
323325
324326
325-func cs (h) = {
326- let aL = fromBase58String(h)
327- let ca = bC(h)
328- let P = ca[aa]
329- let aM = fromBase58String(P)
330- let an = parseIntValue(ca[ac])
331- let ao = parseIntValue(ca[ad])
332- let E = ca[ab]
333- let ct = C(E)
334- let cu = valueOrElse(getInteger(this, ct), 0)
335- let cv = bV(E, aL, aM, ao)
336- $Tuple12(IntegerEntry("price", cv._1), IntegerEntry("decimalsMultPrice", ao), IntegerEntry("baseAssetBalance", cv._2), IntegerEntry("-1", cv._3), IntegerEntry("baseAssetBalanceWCO", cv._4), IntegerEntry("shareEmission", cv._5), IntegerEntry("currIterTotalInBaseAmount", cv._6), IntegerEntry("currIterTotalInShareAmount", cv._7), IntegerEntry("totalLockedOutBaseAmount", cv._8), IntegerEntry("totalLockedOutShareAmount", cv._9), IntegerEntry("decimalsMultBothAssets", an), IntegerEntry("priceATH", cu))
327+func cu (h) = {
328+ let aN = fromBase58String(h)
329+ let cc = bE(h)
330+ let P = cc[aa]
331+ let aO = fromBase58String(P)
332+ let ao = parseIntValue(cc[ac])
333+ let ap = parseIntValue(cc[ad])
334+ let E = cc[ab]
335+ let cv = C(E)
336+ let cw = valueOrElse(getInteger(this, cv), 0)
337+ let cx = A(E)
338+ let cy = valueOrElse(getInteger(this, cx), 0)
339+ let cz = bX(E, aN, aO, ap)
340+ $Tuple13(IntegerEntry("price", cz._1), IntegerEntry("decimalsMultPrice", ap), IntegerEntry("baseAssetBalance", cz._2), IntegerEntry("-1", cz._3), IntegerEntry("baseAssetBalanceWCO", cz._4), IntegerEntry("shareEmission", cz._5), IntegerEntry("currIterTotalInBaseAmount", cz._6), IntegerEntry("currIterTotalInShareAmount", cz._7), IntegerEntry("totalLockedOutBaseAmount", cz._8), IntegerEntry("totalLockedOutShareAmount", cz._9), IntegerEntry("decimalsMultBothAssets", ao), IntegerEntry("priceATH", cw), IntegerEntry("priceLast", cy))
337341 }
338342
339343
340-@Callable(bX)
341-func adminRegisterAsset (h,cw,cx,cy,cz,cA,aq,ar,r,as,at,au,av) = {
342- let aL = fromBase58String(h)
343- let cB = value(assetInfo(aL)).decimals
344- let an = pow(10, 0, cB, 0, 0, DOWN)
345- let ao = ((100 * 1000) * 1000)
346- let cC = fraction(ar, 100, an)
347- let bP = assetBalance(this, aL)
348- if ((bX.caller != this))
344+@Callable(bZ)
345+func adminRegisterAsset (h,cA,cB,cC,cD,cE,ar,as,r,at,au,av,aw,ax) = {
346+ let aN = fromBase58String(h)
347+ let cF = value(assetInfo(aN)).decimals
348+ let ao = pow(10, 0, cF, 0, 0, DOWN)
349+ let ap = ((100 * 1000) * 1000)
350+ let cG = fraction(as, 100, ao)
351+ let bR = assetBalance(this, aN)
352+ if ((bZ.caller != this))
349353 then throw("permissions denied")
350- else if ((bP == 0))
354+ else if ((bR == 0))
351355 then throw(((toString(this) + " must have any initial balance of ") + h))
352356 else if (isDefined(getString(this, y(h))))
353357 then throw((h + " has been already registered"))
354- else if ((toString(addressFromStringValue(cz)) != cz))
358+ else if ((toString(addressFromStringValue(cD)) != cD))
355359 then throw("invalid shutdownManagerAddress")
356360 else if ((toString(addressFromStringValue(r)) != r))
357361 then throw("invalid topupManagerAddress")
358- else if ((0 > cy))
359- then throw(("invalid getDelayinBlocks=" + toString(cy)))
360- else if (if ((0 >= cC))
362+ else if ((0 > cC))
363+ then throw(("invalid getDelayinBlocks=" + toString(cC)))
364+ else if (if ((0 >= cG))
361365 then true
362- else (cC >= 99))
366+ else (cG >= 99))
363367 then throw("invalid topupMaxNegativePart parameter")
364368 else {
365- let cD = w(bP, cA, ao)
366- let cE = Issue(cw, cx, cD, cB, true)
367- let aM = calculateAssetId(cE)
368- let P = toBase58String(aM)
369- let cF = valueOrElse(getInteger(this, z()), 0)
370- let E = toString(cF)
371-[StringEntry(y(h), am(P, E, an, ao, cy, aq, ar, r, as, at, au, av)), StringEntry(L(cF), h), StringEntry(N(h), E), StringEntry(O(P), h), StringEntry(Q(h), P), BooleanEntry(R(E), false), StringEntry(S(E), cz), IntegerEntry(z(), (cF + 1)), IntegerEntry(A(E), cA), IntegerEntry(G(E, height, lastBlock.timestamp), cA), IntegerEntry(T(E), 0), bF(Z(E), as, au), cE]
369+ let cH = w(bR, cE, ap)
370+ let cI = Issue(cA, cB, cH, cF, true)
371+ let aO = calculateAssetId(cI)
372+ let P = toBase58String(aO)
373+ let cJ = valueOrElse(getInteger(this, z()), 0)
374+ let E = toString(cJ)
375+[StringEntry(y(h), an(P, E, ao, ap, cC, ar, as, r, at, au, av, aw, ax)), StringEntry(L(cJ), h), StringEntry(N(h), E), StringEntry(O(P), h), StringEntry(Q(h), P), BooleanEntry(R(E), false), StringEntry(S(E), cD), IntegerEntry(z(), (cJ + 1)), IntegerEntry(A(E), cE), IntegerEntry(G(E, height, lastBlock.timestamp), cE), IntegerEntry(T(E), 0), bH(Z(E), at, av), cI, ScriptTransfer(addressFromStringValue(r), cH, aO)]
372376 }
373377 }
374378
375379
376380
377-@Callable(bX)
378-func shutdownPut (cF) = {
379- let cG = toString(cF)
380- let cH = b(L(cF))
381- let cz = b(S(cG))
382- if ((1 > size(cH)))
381+@Callable(bZ)
382+func shutdownPut (cJ) = {
383+ let cK = toString(cJ)
384+ let cL = b(L(cJ))
385+ let cD = b(S(cK))
386+ if ((1 > size(cL)))
383387 then throw("invalid internalBaseAssetId")
384- else if ((toString(bX.caller) != cz))
388+ else if ((toString(bZ.caller) != cD))
385389 then throw("access denied")
386- else [BooleanEntry(R(toString(cF)), true)]
390+ else [BooleanEntry(R(toString(cJ)), true)]
387391 }
388392
389393
390394
391-@Callable(bX)
395+@Callable(bZ)
392396 func submitPut () = {
393- let cI = value(bX.payments[0])
394- let aK = cI.amount
395- let bY = value(cI.assetId)
396- let h = toBase58String(bY)
397- bW("P", bX, aK, bY, h)
397+ let cM = value(bZ.payments[0])
398+ let aM = cM.amount
399+ let ca = value(cM.assetId)
400+ let h = toBase58String(ca)
401+ bY("P", bZ, aM, ca, h)
398402 }
399403
400404
401405
402-@Callable(bX)
406+@Callable(bZ)
403407 func submitGet () = {
404- let cI = value(bX.payments[0])
405- let aK = cI.amount
406- let bY = value(cI.assetId)
407- let P = toBase58String(bY)
408+ let cM = value(bZ.payments[0])
409+ let aM = cM.amount
410+ let ca = value(cM.assetId)
411+ let P = toBase58String(ca)
408412 let h = b(O(P))
409- bW("G", bX, aK, bY, h)
413+ bY("G", bZ, aM, ca, h)
410414 }
411415
412416
413417
414-@Callable(bX)
415-func executePut (h,i,j) = cl("P", h, i, j)
418+@Callable(bZ)
419+func executePut (h,i,j) = cn("P", h, i, j)
416420
417421
418422
419-@Callable(bX)
420-func executeGet (h,i,j) = cl("G", h, i, j)
423+@Callable(bZ)
424+func executeGet (h,i,j) = cn("G", h, i, j)
421425
422426
423427
424-@Callable(bX)
428+@Callable(bZ)
425429 func operationsMutex (h) = {
426- let cm = bC(h)
427- let cJ = cm[ah]
428- let E = cm[ab]
429- if ((toString(bX.caller) != cJ))
430- then q(cJ)
431- else [bI(E, height)]
430+ let co = bE(h)
431+ let cN = co[ah]
432+ let E = co[ab]
433+ if ((toString(bZ.caller) != cN))
434+ then q(cN)
435+ else [bK(E, height)]
432436 }
433437
434438
435439
436-@Callable(bX)
437-func topUpBalance (h,cK) = {
438- let aL = fromBase58String(h)
439- let cm = bC(h)
440- let aM = fromBase58String(cm[aa])
441- let v = parseIntValue(cm[ad])
442- let cL = parseIntValue(cm[ac])
443- let aq = parseIntValue(cm[af])
444- let ar = parseIntValue(cm[ag])
445- let E = cm[ab]
446- let cJ = cm[ah]
447- let cM = T(E)
448- let cN = e(cM)
449- let cO = (cN + 1)
450- let cP = if ((cK > 0))
440+@Callable(bZ)
441+func topUpBalance (h,cO) = {
442+ let aN = fromBase58String(h)
443+ let co = bE(h)
444+ let aO = fromBase58String(co[aa])
445+ let v = parseIntValue(co[ad])
446+ let cP = parseIntValue(co[ac])
447+ let ar = parseIntValue(co[af])
448+ let as = parseIntValue(co[ag])
449+ let E = co[ab]
450+ let cN = co[ah]
451+ let at = parseIntValue(co[ai])
452+ let av = parseIntValue(co[ak])
453+ let cQ = T(E)
454+ let cR = e(cQ)
455+ let cS = (cR + 1)
456+ let cT = if ((cO > 0))
451457 then {
452- let cI = value(bX.payments[0])
453- let cQ = value(cI.assetId)
454- if ((aL != cQ))
458+ let cM = value(bZ.payments[0])
459+ let cU = value(cM.assetId)
460+ if ((aN != cU))
455461 then throw("attached payment's asset id is NOT matched passed baseAssetStr")
456- else if ((size(bX.payments) > 1))
462+ else if ((size(bZ.payments) > 1))
457463 then throw("only one payment can be attached")
458- else if ((cI.amount != cK))
464+ else if ((cM.amount != cO))
459465 then throw("attached payment.amount is NOT matched passed amount argument")
460466 else true
461467 }
462- else if ((0 > cK))
468+ else if ((0 > cO))
463469 then {
464- let cR = assetBalance(this, aL)
465- let cS = fraction(ar, cR, cL)
466- if ((-(cK) > cS))
467- then throw(("topup negative amount couldn't be greater than " + toString(cS)))
470+ let cV = assetBalance(this, aN)
471+ let cW = fraction(as, cV, cP)
472+ if ((-(cO) > cW))
473+ then throw(("topup negative amount couldn't be greater than " + toString(cW)))
468474 else true
469475 }
470476 else throw("zero amount is not allowed")
471- let cT = U(E, toString(bX.caller))
472- let cU = valueOrElse(getInteger(this, cT), 0)
473- if ((toString(bX.caller) != cJ))
474- then q(cJ)
475- else if (!(cP))
477+ let cX = U(E, toString(bZ.caller))
478+ let cY = valueOrElse(getInteger(this, cX), 0)
479+ if ((toString(bZ.caller) != cN))
480+ then q(cN)
481+ else if (!(cT))
476482 then throw("validation failed")
477- else if ((aq > (height - cU)))
478- then throw((("1 topup per " + toString(aq)) + " blocks from the same address is allowed"))
483+ else if ((ar > (height - cY)))
484+ then throw((("1 topup per " + toString(ar)) + " blocks from the same address is allowed"))
479485 else {
480- let u = bL(E, aL, cK, aM, v)._1
481- let ch = aI("topup", "", E, u, v, 0, aL, aM)
482- let cV = ch._1
483- let ct = C(E)
484- let cW = valueOrElse(getInteger(this, ct), 0)
485- ((((([IntegerEntry(A(E), u), IntegerEntry(G(E, height, lastBlock.timestamp), u), IntegerEntry(D(E, cO), u), IntegerEntry(cM, cO), IntegerEntry(ct, if ((u > cW))
486+ let u = bN(E, aN, cO, aO, v)._1
487+ let cj = aK("topup", "", E, u, v, 0, aN, aO)
488+ let cZ = cj._1
489+ let cv = C(E)
490+ let da = valueOrElse(getInteger(this, cv), 0)
491+ (((((([IntegerEntry(A(E), u), IntegerEntry(G(E, height, lastBlock.timestamp), u), IntegerEntry(D(E, cS), u), IntegerEntry(cQ, cS), IntegerEntry(cv, if ((u > da))
486492 then u
487- else cW), IntegerEntry(cT, height)] :+ aT("DECREMENT", J(E), cV)) :+ bI(E, 0)) :+ Burn(aM, cV[aw])) :+ Reissue(aM, -(cV[az]), true)) ++ (if ((0 > cK))
488- then [ScriptTransfer(bX.caller, -(cK), aL)]
493+ else da), IntegerEntry(cX, height)] :+ aV("DECREMENT", J(E), cZ)) :+ bK(E, 0)) :+ bH(Z(E), at, av)) :+ Burn(aO, cZ[ay])) :+ Reissue(aO, -(cZ[aB]), true)) ++ (if ((0 > cO))
494+ then [ScriptTransfer(bZ.caller, -(cO), aN)]
489495 else nil))
490496 }
491497 }
492498
493499
494500
495-@Callable(bX)
501+@Callable(bZ)
496502 func currentSysParamsREST (h) = {
497- let cX = cs(h)
498- let u = cX._1.value
499- let ao = cX._2.value
500- let bP = cX._3.value
501- let cY = cX._4.value
502- let bQ = cX._5.value
503- let bT = cX._6.value
504- let bO = cX._7.value
505- let bS = cX._8.value
506- let bN = cX._9.value
507- let bR = cX._10.value
508- let an = cX._11.value
509- let cu = cX._12.value
510- let cZ = makeString(["startCurrentSysParamsREST", toString(u), toString(ao), toString(bP), toString(cY), toString(bQ), toString(bT), toString(bO), toString(bS), toString(bN), toString(bR), toString(an), toString(cu), "endCurrentSysParamsREST"], a)
511- throw(cZ)
503+ let db = cu(h)
504+ let u = db._1.value
505+ let ap = db._2.value
506+ let bR = db._3.value
507+ let dc = db._4.value
508+ let bS = db._5.value
509+ let bV = db._6.value
510+ let bQ = db._7.value
511+ let bU = db._8.value
512+ let bP = db._9.value
513+ let bT = db._10.value
514+ let ao = db._11.value
515+ let cw = db._12.value
516+ let cy = db._13.value
517+ let dd = makeString(["startCurrentSysParamsREST", toString(u), toString(ap), toString(bR), toString(dc), toString(bS), toString(bV), toString(bQ), toString(bU), toString(bP), toString(bT), toString(ao), toString(cw), toString(cy), "endCurrentSysParamsREST"], a)
518+ throw(dd)
512519 }
513520
514521

github/deemru/w8io/169f3d6 
163.40 ms