# Copyright 2023 UMH Systems GmbH # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. --- # Please adjust the following lines # _000_commonConfig contains the most common configuration options. To go into the details you can look into the configurations option after _000_commonConfig _000_commonConfig: serialNumber: "default" # usually the hostname # This allows to specify data sources, which is mostly used for instances running on the edge datasources: # barcodereader reads out connected USB barcodereaders emulating a keyboard barcodereader: enabled: false USBDeviceName: "Datalogic ADC, Inc. Handheld Barcode Scanner" USBDevicePath: "" # Linux device path, if empty, USBDeviceName is used customerID: "raw" location: "barcodereader" machineID: "barcodereader" # sensorconnect searches for ifm IO-Link gateways and reads out the connected sensors sensorconnect: enabled: false iprange: "192.168.1.1/24" # IP Range in CIDR notation enableKafka: true enableMQTT: false # iotsensorsmqtt simulates IoT sensor data and publishes it over MQTT. # Learn more : https://github.com/amine-amaach/simulators/tree/main/ioTSensorsMQTT iotsensorsmqtt: enabled: false # iotsensorsmqtt simulates IoT sensor data as over OPC UA. # Learn more : https://github.com/amine-amaach/simulators/tree/main/ioTSensorsOPCUA opcuasimulator: enabled: false # packmlmqttsimulator simulates PackML state data and publishes it over MQTT # Learn more: https://github.com/Spruik/PackML-MQTT-Simulator packmlmqttsimulator: enabled: true # dataprocessing involves microservices, whose main purpose is to process the data dataprocessing: nodered: enabled: true defaultFlows: true # Infrastructure infrastructure: # hivemq mqtt: enabled: true adminUser: enabled: false name: "admin-user" encryptedPassword: M0p0Y1hhR2VGbzRGTkV3aXVkOHFab05uTTE1dHl3R0U=:100:MaQCaaTWf260vQou02+Z5XKPtjxQJbS/cUfB0kxKf9qFzZQ1V4R2YtCH4GDSguE+CLIrhEG8m3XbuvdbWdKBnA== tls: useTLS: true insecureSkipVerify: true # Setting this to true will disable TLS certificate verification keystoreBase64: | MIIQQwIBAzCCD/wGCSqGSIb3DQEHAaCCD+0Egg/pMIIP5TCCCekGCSqGSIb3DQEHAaCCCdoEggnWMIIJ0jCCCc4GCyqGSIb3DQEMCgECoIIJezCCCXcwKQYKKoZIhvcNAQwBAzAbBBThGcyvS/619i/hSkDkgnlzRO7uqgIDAMNQBIIJSKr11ZcJIYLJIZyUYaP6f8atEZ8kPHC4766I5kq2vDhEjWVGz4Om3pn/LXPkMk51u91EZ4hzGki3Zsp4IcwSDzf2c9U+EZEeab6mYGRxscQW6JGJp4ghE85osS9Ah6cvJujJC/VQaBCg6SNQVMsJINyPxG8y8QCX0LBIR49fr6Ok902BCSN/oV6NuwOU3ZGAKnJKsyeVw3NKa+Z1ctL7sGHZ51MmtquGjAtrjJ878TciGW91uq20hV4pLb74LUD9dubvJCxIsT0xp+fVsGQKkJT/tSbLao1igL9nhpUMcbponRfpHXh6CprLbNqVCcpF9pRhleDjHNCEmX8UHR6upIwiCXBbWJML9O6hWJA1I+prh5tykb5eFZnyWQ9QcFMRzFVoFu2YS1gdWlWOoBlrqbSarfJSems3+2iwjBCzwvG1WBkG18elvP9iEdx03ydbB6Jd9Zbqa7x1IlzTGA2Ne7dca0ZYpVSpxLiFCfs7CcQC7lpUjbyJcJUZnFkfC64MMDW5fz74DX7X4ZZblLMhJHzjPgeCxQCXFOdZb2yB5xV4A7HNXwq+ITILOxEuM7WnPRhPQlvK4DBgnUTHje7PKfQV6WTxq/xVi8YNhrGSoYso7DQv6GlG7Y8xz7K1uhNph8vGnPbJUaThr7GRKmFBbkU0lCqvtOUks693yWN9L7UWmdexDyqimyAHHE4HSV81wMw6177YyqGoGnYVUvnppmvurI4VMoI9h5pUU81EQcjyfK1CmfX0KgYPJNumc/VuTFqrAFEJmYQCjRrxOMNlwRN43LOfgtb5yXtkSioFo1RE4c94jmgrbSxey+c3X7z66VaUJGjNzm84JlYpa5C0+8lgqyH8Ln2klQcf9qlqy0oE2MfXD1AXW6ic31ZZaJFlEomNszN372BavYGz6Bc6h860+P2AZenpGoFpHpj/ktn3t6heJiFlFd7T0D5CZFBFAKTayIADm8RMctV8kp3ncwpHCTAeUfrNG+0B4d5FXhodvtU4poYCAbKkie1OaOGWG6qTflHOUXqSMzhPYYarzihzC7y9kBki+vnNWM/jFWDs5X0qRMGJXxqVsKxHuSmBQi+1pRkPr4ntjR77nyy7ynAN/EEoY29YJUvpaSG/1aJFinvcVGogKXIruFAIAB14n6ScACgwf+CtpPDil4FcII5iEahjD9NgiOwGupZcXPeJEr760ZPd5BnqrPHuau8/Nc6kykPEng6em+D9uZAmyZOqWEArvQKTDFcuEaNO0xTVY+VgqhNsGxanrugU5giJjDEP5Q29ve5j4+v1VvWDS31oA6H1pazn72clMYV9YwjKLItx7RsWu81HNv/tknU2UgP1SeJuPxUZFNs3o+wNJY+OV8lA/w7xlnnGLOb+rafzZKt2Hmm/rF6H3prJPOeykhO5W3pHBO9WEA6HwwtKKXEQJhw8ugi4NZM/SIMGgFdcPO/tM+AwMQzQjtDZ7RgK4SFlZViBDFoEjbgD93iihT4tH6wrwmHyFi2gVEkZ5LVvK0nMR7HPmRo8fljGE71KCTmltyoeYps6tD09JNy9PdcqwH17YehJwLByzSDQa5K1uFRShqtWu4ELee+w5xVN+ouIBnWWIG7cy9Ok4pebFWMZrEXS9BtelNm+00HJbCtLhyA6WNDvGL2FzslH97ok2GS8YHPR+Mf4P83zezxjgnskSI17ihAF72MwBSra4VBIJ2Ky/y6WnlROxcibcorIGCT1pr5rZfY1bFJkzRy8OgYg/Ru6AoX6J+LeOxH0irvFKZm0legBG7GeHfMzBRBS+1o+6aKDMTptncIxqN59GhrtQJ8gF1AzplXesgH8oxl61TKvRUwDNPoSFyAFcp/s9+N+Arm5S5bTjgInm1Y6dyQBeFSHpihO2uqCiOoLw5nmURF3l13yMjrxJCWZqhbZRc0Z/eUdqeJfC3jdC3gMKkETzT3vr+enby16z13gfmLk4TWfUUOlwetmMR22W5eTJSRBHzseK9YlO+3N7cihsTGPRYpgaJoKwRI6KOGaUEC/zMsb+LU/Gwpcsg7oXlEbKLQiFHYNND8iMNQUynmfiljrtkHNVNrrXblIYHP0C2Rd9EHF5UratnUPVoirLjUQ45IfcfzlCFlJvkd5cm0nRper/TC+jZ/UygJHdyNxILN4u2JA5D2J6cqrp4podvy0/nN2ueECv+PZNq+oFIPnrO7HJ6telBgbK9N/+1/VsFUvwZhVLTAjiy0MaMYekgzj3xDXVcdOpjCC48lMtap3aFvJU2UACPxJPCebnW5rt8QohS1mQZ/0gEHWkOcD3Yqmd6iixMAIKwAKe0xXAAS2SvnLfNHrjGXPboa9/EGWPzGoPKzDB9GV+ep/GmH4OCAfx0etyog9ogFg6PXWiiVKXskm5FlwhK4aOCEQg6xhyHV6JPP6u+FmBZDZWvCqgcyLjWnRJBt8zM7hq/rcE8r78iTmm8EQw6kpzKtqGqVTPNC5THkUs5q1YnveUPDNzaYO981V6dn1R2n+ocv8xAOpKJuI3H1pjHlieFhHqcY2/c3+9b7Ni5w9o1Hganunr9/MRN7aBwIAfaaLxQ7GHMf47Hu2Y+vT8I2OG+n9Dbdf5OWDHg0EcKn8wLvi4vIMBCPO9DmCDtsfP90bWYKpT3FIOrTzFxdk+DLqgzyz6o57goF/Sh9S9YrN6XnDGJhsYsyitWMSDLqsyznOpeCG2gqugQiBYqGx51g+dJHulSQhJLQUiYDkrsJVuRtyTRgLK5ZCPscg7KOy/oii1YSbnezuMvg2LkW0oaw5xwVO9YcSUTvYEUxRQw6FSTNyZkt6QXhmQcrt6trFq1IzG4ykI1u9pEfjmEg6WIkXsVgg8Mz7LAZPVTGekWwKNKgLGUjwtkgEDdcSoqavE/dYIRRAsXBbBsm1rkp7B99dX4N7ZS0fc+alMTYHJGxv3RPZLxE4ifrU0K2XFQ02RPMH/7ylOm7aPJngCSVGuhQGhBp+3Rk4ovILOWs4HLdtYDCN7+InUncDRyPYDUptw6gjVhETAFeYU2jbMHNqiRbi4c0ByUoPZT1fovUn0TQ+HjSA3TbMdr8oDQeMZDyCpLHd7DKq2N/Rd25HhEHoon8y6L1vf604IGzNMq9kbErGQROtjQn7LKwp1SE2+SCx2TFjiqmU6GsspYJ8CdmZVH0tWDFAMBsGCSqGSIb3DQEJFDEOHgwAaABpAHYAZQBtAHEwIQYJKoZIhvcNAQkVMRQEElRpbWUgMTY2OTYyNjE3MzA2OTCCBfQGCSqGSIb3DQEHBqCCBeUwggXhAgEAMIIF2gYJKoZIhvcNAQcBMCkGCiqGSIb3DQEMAQYwGwQUtr0R8/w+RYVrDdbJ2moaSFIQcKICAwDDUICCBaAsCD6y1vnqSvKZ9ScKBWMytftv3p5PHUkelPqGtR51aH2celoiwTVNqyoKIBTECnAR5dM20dD6yVTNoTAop7zp5uGaOWYsdCz7qrlwaGu/Gi5JeZMcqotyaHkoK9UV5r5+HgNhtwTIGah5OJDmCR0JYNy2n3YjdE//7VVDjGj/s1yW886WsgXma1GTed4GWE3kCGGzY8YLOT1QwQ6l+Cwmy9Q72Pq1XVmkUflYeGPh6idKzDHoLjG8LTF7xo4ewxDU9VeWAG+mzamClvZ8lySzjcMgigAOqmqzKZ0/ZqSig3xTNX66X4piLzlgVmoA4ISfmpOFjkltp3/cCvcd9nUjbBJLskLeqviFIruoOJE5QdGs9qJ9hxltDEqHYvuJeFLWy8dtcs+S3v/WV0VJfeHDHymaUX+9ScmrXRtUu+Uly08rDtiHHt9YGObmz2INEQdGqJ8U5Rh8xsj1U3TmWL1mu42pC+Xf8Dmu2qVGwgEJcaphBjlm8/zHE9z8e7yL5vFlgCh/RD4Q2nJYC4Lt6iuvjNIkhSc15wVQ97BbjiLG2P0YGmdfTtdmS0T+P2WKYrYdt+N4Fy+HXWPCGSHeMysBb4/4p2FemgqiyNDeg+hoPqSXl21OXmu34hazACN214ywqltaQoi9d4yzn3i7yCTEgRAH7aECwIxj0auA/aVWBkYmNYAxuYw2NuQTQQH5g/Sd3EhG8k3uvRa2zd3J5+o3GN6CA4DR8OtIedg2vJhxEj7hHwG4U81O5nqppe/zgCgCSyK2s4s4MLhbAWPCxWGSKwAlWHg/eaYjumpp6ioN03JTlfEElK2yX+PDkCl7lZcy0Gu4e8vX3R7GCUmbukuIwP4wbDATX/ZjDPWc6oUE+DmO+4UJ4TM/qWk3mAGAUHoa2kUqMFBaBEDJZnBdZ2ETupukLT0/jWjX2ELO23NxaGfhgmrMP/3cW5KcpTpiBf7Io0QFfCk5VvnhBnvwyjem7hPEZiBGcI2nh/S2cfDmDrv0lZyNF3sOWw7ibtK0wnr3w8qBMZz5WA5Ixm66WpOkb4NXTLeXu67h4uYeAjqm26gOz3EF8zk0Jz7qXn36AJkRFhje03kRG6RxTRDdKRn5WKd4ctQ4kMwSjIxlM8rcXNgSUfSyCU1cbSbwHZ9fBW6lG18D8mh1HXJqMVp8jYXDJluzWGXhHB09NOZwPV5+jeNe95Vzbm/e0RVua27LETa8WXvb54S2cI4DMwtnSL98e+s8swbltYkt0k/vWlTQJx35Ti57ew809fbMFxz/7ZOQyJw8Ji/aGfJzIEDi8X2gGvwrNy0cMlCmUVNQSFNzJBIaSPGMCc4hjVQyr7drzZYSStI9VOyHZcAXwB/uGccAkBS0iy2o5oFJyjz6jtYWGsk6TNL0HtEgUZTQZkEN+Mf18CuAsRBrxUX46y4lMzB7NeDrSlW7wAL1/n/K4FpVX/CCcSm9HlGTxCP5Q4EelzZvg88uD+hkaj6NMsHnhy2GlxL81dkQBTT6mPGVW3cPntQosyPLGsxVVuKyvmshSKojlyABZeeuo7kz/jTUOgCM231wuI//MfP8KMLQNeUO1hGH+PyFffB0Gl+YPjWoqgzyg6DFEjscEkqUR2TKwjNLQLeowYVOfGxqLAeTjfYafNwzYUFakdyqSe35ZEQ631MG1sGHCyVm8J8M2C/JHzYcOHEIuJdoT4DXg4SX3GTdUpDGOJjWIRDc1zmPryHj2rGuGQnLM8iaG2JP3Oo7Wrf8H21PBKZcmxx1Y4NmVGAoIf29nQHayZ5ohJ6bT4d6tPJelRg9LZwKps0pwOum0DX4IbSw4RqY/IHbARrMiHPaMP8ssx/5fDelMXnH4bzzCDWI+uyMmRL/sjSNBkh9+XKu3K2yKLsTdoLL6wvrAoj2y6knYab6kD4JQH918JxMbKcwPjAhMAkGBSsOAwIaBQAEFJ7DT0lNh2KhS/+G8LvyytX9MKkvBBRrf60+Fj4zC1CFYfer95AoYINgfAIDAYag keystorePassword: "changeme" privateKeyPassword: "changeme" truststoreBase64: | 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 truststorePassword: "changeme" caCert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGSkRDQ0F3eWdBd0lCQWdJRUNtMFVRekFOQmdrcWhraUc5dzBCQVF3RkFEQTZNVGd3TmdZRFZRUURFeTkxDQpibWwwWldRdGJXRnVkV1poWTNSMWNtbHVaeTFvZFdJdGFHbDJaVzF4WTJVdGJHOWpZV3d0YzJWeWRtbGpaVEFlDQpGdzB5TWpFeE1qZ3dPVEF5TlROYUZ3MHpNakV3TURZd09UQXlOVE5hTURveE9EQTJCZ05WQkFNVEwzVnVhWFJsDQpaQzF0WVc1MVptRmpkSFZ5YVc1bkxXaDFZaTFvYVhabGJYRmpaUzFzYjJOaGJDMXpaWEoyYVdObE1JSUNJakFODQpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUEzTXpSTnZuZ0lMM2ZIU3IxK1NaWGp6NjZjdGtQDQpESi9KOU9BK01abzBSeUpVVVVOcUdSRFo4Vk13UjN3ZE0yY1c4M25oZVkxU2JNaWJvMGx0TmZkZ1JwNDlqeGdTDQpPbzNXWjlPeC9qS2ZkOHE4M0tRVU1QR2wyNzE2REVWSXNVaVZ1SjloRisyZlp4VHlnLzB1eHR1TVQ2ZDE2ZXgwDQpEalBxTHlBZFZhcTJjdGJtWWs2Rkt1T2lWQkJsSWRkSzdGY1J0SE0wU09ONEcxNUcrR2o0bmVRYWhlc1F2cHNGDQpjKzNEQ3huYi8yUFR3U1ZGR2JOQ0c4ZkJhL3hTdjlDdUpxQmRPWStPYzRIR2xkT0cxenRWeUtMWW1JakpyYVJhDQo0Q29WTm1hQ2FIenUwVmsxb2RmVU83eXdRTjU0aS9nVlM0THVNbkRPaFFwOEdwV3BsZFdHc2hvNWdCaWs5UDVPDQptS0ZHK1UwSlp5aVpPRDF0QTQwOFlmUjl2YlJXc0Y1bC93bStQMElvVStQSVJPbWJVNHJzT3dER2cxSHg2U2NEDQo3TzR1UXRUZjhOQUMyR3ovV3JScmFkV0JQaW9QbkZhU29vT1Qva2xxVWhPKzJmNzZXakNNUlVqajd3cUlpOVJYDQpvNWtiTGJ5T2RpWFFxS1JTUW1TOFJpUTBuN1pVSG5OZjNRT2dCNzhGWmpxV2NFUG5LZHVDUlF6VmlHUG53Q0VlDQp6aXJFY3VxTllsaEkrMTF6RmdJL0RHUDJEVmsxem11TmxOT09uaU1HS2poSGR2dkR4QkZJakRsYWtYYUx0SENBDQowNVE1aThsb0F2dTgrc1pXVHJtL3NDRnBnWTV4R09VS3o3bDhxMG9vRVErUjlGclN0Tk15U0JyKytONnQvUktIDQpsdy9kYit0K1FKcjA5RThDQXdFQUFhTXlNREF3SFFZRFZSME9CQllFRlBkU29jZWFSaEpwOXNTOHhYOHJHWElTDQpVdzlmTUE4R0ExVWRFUVFJTUFhSEJIOEFBQUV3RFFZSktvWklodmNOQVFFTUJRQURnZ0lCQU5yMGloZDU0amxMDQpCTUo4S1NOQi9VdTJ2TUxuWlEyRzVOdENzMENwellnenZTOCsySFE0ZXlEeHF2aXJmVlQ1TGYxZnZ0OGVDVXR4DQpxbGdHdHZFVkN1TmVhbk1PdE9IZDFobVZISTNIMGQ2MXdheWtJNWpzZmlVYVVucmxkU1hIS2pOdUUrUjNEYmFnDQpLNVgrUnRpWlcvWUl3QU9sSzgzaTdUVEpqakhIc3o2S1BlbUUxdU8rb2hyOEtCTjgvbmJUdGIzb3RkTC84RmRCDQo3RlpQNmxFOG9BU0RGSm4rVFVQRUYwZkJ3Wnd1bDd1Mm1UV09hMEZWLzJyb3QvQytZam5CWUNEbEdCRlM4VDk0DQpLMG9EUFBMWXpwYjdLQW9QampCM1h3QXhDajJOV0tQYzhMam5YTVBZcm9KQmovMGFQTVNBNG5WVWt5am5MVjBoDQpXTXFZcHF2VTUyTGZhdHlMOFhIaVhERXA5TFVBMmxZNndaN2tRSjEycXVDNWx6aVA4Q0JJNkI3Tmt5MzlHYkFrDQo4bmI3bVJzUHQ1ZjFwWnJ3eEEra2svS0R5QWkzQ2l3L0NtL0oyOXBTVmErRnRrVkFsSzVSZkszdHc5eVg5MXlWDQpIcGc3VzlNZngwZVBKRzBObXFNQVJEbGlHMjdHY21vcDhMWHVaNms2N3RnNjNsNXR0V2FWd2JCLzhqR2szQXk3DQo3UTNoRDhtZEoxdlNLZm5ITDhpdW05U3VRZzdmR0Z1a3BldzViN281ZERhdGJmdEVLVEM4OVdUYmpHcDliWldSDQo1dkJIdzhrbjB5ampkSUdQMUFUeW05aUZIL3VSY3VrR3Z4bmc4UmZRZkVubmJ6MWF0S05wN3JMbFE5ZjdJOERyDQovUVgwVHVxbGJQdHdaKzdHQXc2amV0MGxzQnd5M0d2Kw0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0K factoryinput: cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGRHpDQ0F2ZWdBd0lCQWdJVWJ6UER4R29xalJvck5maTBBK09PbmhRcEZtb3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3RnpFVk1CTUdBMVVFQXd3TVptRmpkRzl5ZVdsdWNIVjBNQjRYRFRJeU1URXlPREV3TWpneU9Wb1hEVE15DQpNVEF3TmpFd01qZ3lPVm93RnpFVk1CTUdBMVVFQXd3TVptRmpkRzl5ZVdsdWNIVjBNSUlDSWpBTkJna3Foa2lHDQo5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBdTRIQnZXMGZpTU5wRDJ5M2RFcXltRnpHcUdseE9wbEZRc05qDQpJcEhNVkN1NHU0dUVla2cwODNqTDV0T0ZweU5Ubnl4SkFrWUUrQXR3SjBkNnFhc3ZxbGNMbVc0N1N0Y1IzQ2hqDQp5RnV5VTFJaFR5VVpTNDIxUGk4UkgrSjJNUGhtYkErTXJIWVRnSmNTWWlFYzg4Nit4NWJqTGZXa2dJWTNmTG1SDQp2ajNYc1paQVBQNVdPUTVKZFZYSXg0WXNMMDQxcUFGR2RRSm9XcXF6c0F6T3M2eW5PbFR0YmovR3VhcGNxS1FoDQprWWxUU2hkREZoQmFVVUVjUGtIRGJucm1zaVpodTlwS0pSQ0NxYTdJY3BDQ0FSRTJwNllkSnRkTGRTaDFjYXNRDQpYdUp6bWZsYmZtaUEwSnZkREpNVDd5Z0VzMzQvVm03djNPOW9uMUxGZUZsc3Z3YmFWankveEJ1eXVLdWZsTjdGDQpma2lWb241ZTV0ZFhOMG91cGNma1hBci9hMVFvLzJRdUZvNjBqeWJQZVNqeGpOZy93dFNrYXlINUZaZ2FyZjBRDQo2NmVGbVNvQ28zYjFDai84TEpMNzZwTmZNU2ZZbE9JdVhlSFBRc1VDVGtPWGp2QTZGSVBXdFpocm5jSkczSkFSDQpxemRtTUN4cEthbDZKQ3NtcW1CZFpucXM5QVdNUHVSeHVZNklOK05HbVhzOHlqZzdMbUNxL3lGeEljZkhoZU5uDQp5RTNIWlZXQ3h2U3RTNGYxeHdyTDlQdGV3Vy9yRVNTV09xcXBiUnUxNUdMQlVhUnBZanZTR1BBOHBPckkvcW1uDQpxQ1U4ZS9ic1BHUlUraVVxV2ptdDRpekZ6VS9nYWpXaVBzVWFDYzU4SXpUMDZ5TndMQ2IyblZZTVlVclR2dW9wDQo4My9XaGMwQ0F3RUFBYU5UTUZFd0hRWURWUjBPQkJZRUZHU0xWQ0o1LzlDaWdUNFNiS3FNNzN2Z0ZicjRNQjhHDQpBMVVkSXdRWU1CYUFGR1NMVkNKNS85Q2lnVDRTYktxTTczdmdGYnI0TUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3DQpEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBSEhEMkFzbTFjZGpEdUx2bFU5UG1kWlgzRkRJWG9mMXdRZUlFU1hBDQpoMTA5MDZpWFdPTXRETjF2Q2I0NStpclhPcTZvb1l2YkRYc0h2WUpsSUJFbll6MXM3VGNmM1Z0cERYd3JLVjFkDQorYUNBMWo2OGNNUE5tb0xyeHpmYm9BcHZOOVp6ZWNvbG1WM3RVZHF5bnJ2eHk5YnhKTDV1TERQZkdadTRaWDNWDQpoM2RTNGcyRE9LNDJycjQ3QnRhWElWc2xwSkJNVDlMK1ZtRzFVclUxWk9ZOFFvcjViSXBvSzROMGw3ZlRjOG5mDQpYc2FyWWRvTGhGTGQvZUx0aGVUcGk3VlFsVGtxME5IKzVNbys1MFpFd0Z3aFhOeHFpWHRkY1d5VGlWaHBocnI0DQo0b0IvR0g2L2VzeVNqRSt4L3NnT0dQblo3UndRSGlJQ0RHMWVja0U3djhSYStCVFJoN3VHUnRmenlIdmJKUlFKDQo4cVlsMG8vTEltdHhMQ1NjQU0wekJuTHZKZFZjTUpXZVdiSnNXd21nbzAzN1Q0L1B5NFNXeElOMVhHbWtzYkhXDQpHckd2QTY0VHBnWlpVT0pyQ21NNFcxMEwyMjZ2cUZkdGRla21sS2ozVXlzOUNGRDY3Rll6NUZTRE12c2wwS1RTDQpOVzlvRWlLZHh3K2FWelZITjFlcG9KV2NkdHdRMUtUTEtlb3JVSSthaDI0WDBRQmNHQnlqQTFRMjJuejdIeENWDQpxc1B3bXUrQk85Zk1kdVcxaDlYcWNWem5LSWxPQThVVkNBUExIcVAwZjczaEgrdFBiTVJwbTU3OUV1NTdyZzRmDQp6VWU3WUJBVDFqbXhVRHE5RkVVVCsrYS9LREFLbG5reG8xQ1M2TGtoenJ1R1Fvb3dQWkpmejAyc240VkNFSkY5DQo3TnZNDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo= key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUkFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTNHdnZ2txQWdFQUFvSUNBUUM3Z2NHOWJSK0l3MmtQDQpiTGQwU3JLWVhNYW9hWEU2bVVWQ3cyTWlrY3hVSzdpN2k0UjZTRFR6ZU12bTA0V25JMU9mTEVrQ1JnVDRDM0FuDQpSM3FwcXkrcVZ3dVpianRLMXhIY0tHUElXN0pUVWlGUEpSbExqYlUrTHhFZjRuWXcrR1pzRDR5c2RoT0FseEppDQpJUnp6enI3SGx1TXQ5YVNBaGpkOHVaRytQZGV4bGtBOC9sWTVEa2wxVmNqSGhpd3ZUaldvQVVaMUFtaGFxck93DQpETTZ6cktjNlZPMXVQOGE1cWx5b3BDR1JpVk5LRjBNV0VGcFJRUncrUWNOdWV1YXlKbUc3MmtvbEVJS3Byc2h5DQprSUlCRVRhbnBoMG0xMHQxS0hWeHF4QmU0bk9aK1Z0K2FJRFFtOTBNa3hQdktBU3pmajlXYnUvYzcyaWZVc1Y0DQpXV3kvQnRwV1BML0VHN0s0cTUrVTNzVitTSldpZmw3bTExYzNTaTZseCtSY0N2OXJWQ2ovWkM0V2pyU1BKczk1DQpLUEdNMkQvQzFLUnJJZmtWbUJxdC9SRHJwNFdaS2dLamR2VUtQL3dza3Z2cWsxOHhKOWlVNGk1ZDRjOUN4UUpPDQpRNWVPOERvVWc5YTFtR3Vkd2tiY2tCR3JOMll3TEdrcHFYb2tLeWFxWUYxbWVxejBCWXcrNUhHNWpvZzM0MGFaDQplenpLT0RzdVlLci9JWEVoeDhlRjQyZklUY2RsVllMRzlLMUxoL1hIQ3N2MCsxN0JiK3NSSkpZNnFxbHRHN1hrDQpZc0ZScEdsaU85SVk4RHlrNnNqK3FhZW9KVHg3OXV3OFpGVDZKU3BhT2EzaUxNWE5UK0JxTmFJK3hSb0p6bndqDQpOUFRySTNBc0p2YWRWZ3hoU3RPKzZpbnpmOWFGelFJREFRQUJBb0lDQUVTL0FpVk5TTzUvbHBsTkpzWEFUVktIDQpVVjZWcWludDMvTG1hQVpZcGkyR0NpallzaTJUSTdiUVp4R3VJNlp2MFV6ZWs3WDlyZnl6Vk45UjJhc3pWRHFEDQp4NER0WlZlL0dwRTVUYnc3d2xuQ0Z1eEprY2lkb0FHNGgvTEV1TWlqaWdtOGVic1JYMzBaNW1lTDlHMS9NM3RCDQoydkVTeXNsRWJEdVNYZGorRzRMRXI3Q3RIemUwQVVLL3ZPbEtUQkRiLzlnay80d080ZXU4QWoxZHRMc3paZXlCDQpEcndKTGZjTWV3UnBpTlV2SUJaZUNQNmg2RHM2UC95alo5K3R0NzlCU3p2d2dKYXVRdm1yVjFxSm1PQ0RTeUtVDQpTTVBnMDQyVTA5cGsrWStRUHdvSTNuNnVHZXhoK04yUFh4T2ovSFZDcUQ0c1ZrME9pYkZBUzU0Z1N6cU9iS1hvDQp3QytDYTRYZFhjWjV2THBDSGVFKzkrdWpuSjZBNm1ubUtzYkEwbmg5OUNNTlRJVDg5bEpRL042UWFNeDllVU5jDQp1Wmsrb0FjVUY0dE9YTjFjUFRzeW92b0hXa21MOXRrWUllUFF6djcwN0s4aXB4T1RaL3l1NDM1MVVzamp0NndZDQpZeHJTMjk0MWNFOG15QWZUOTJWYW5Wc1VidzBpMW4xcCtIL3Vwam1ENmFPMlQ0aVpFT0IwcC96dnBYWElZbDlnDQprNzJhRk5ySHpYOTNTeEFybGxOMXVqRVlsaVJRNmxsOXpoMmUwcjhXcnBSTXg4RXlQYmg0ejhZd1picnJydUUrDQpsdFVBRHVHTkJBVEw0ZlNSRVhZTHhzMkhVckhmd29aN2V4YXB3QWYxYzRCY3ArbkxPZ0JKOTM4ZGVyemVWTUIrDQptVWJjT2lPT2R2N3VRV2hZYlJjQkFvSUJBUURqNVExMVg1THd0cGEzOGFhYUVSb0RWUFlqUkNGd2Jsd3ZWT2p2DQpTTnFKcEFtUXBnQkVTNng5RXVlWE9xbXZPOUZZanBvOXVMK3BNNlZnRVF5R2VsNDEwcGVya0wrNVlyYUF1R1I3DQo3azNQalpYWWQweHRTUjZHZFRwRnJSVGtpUGVZaE9SSWhEMXlEWEhmMnpTK0w1RDJFTjdaRXZVanRndDkrWTU1DQpWL2NRTjJFQlJCS0pVanh1MldPYTIrRnVyRlVCRUhUc0JDdkg2S3BsSmlTV2hoL0RpODRZdnpCWDE2a1dOKzRyDQordVF2LzFUQXcwM0oyQWlxOUs4ZDFIRTczbDF2aTE0WHZFd2tmd3E4Q25jSHRPOCtTOGU5UHdZNTNqN0lRaXFwDQpyUnFMMU51WjdweEp6VWlBeXpxSENVQ2ZRbW5wSjRhb2lqbEpjNTkreW1CcU9rZ2RBb0lCQVFEU29acWZZM2QxDQp2eVVHQlYwSzNmNHQrWmNWdi9XemVLazQ0TXVycVAvWXFWZ3J3TlFYTys2bFVDZm9mVUo0V1hkemdrdzVBTHVvDQptV1JZNVZMK0o5VU80cVdJR0tMdWxLSmNlSDlKWnBQSHA2VVVwT08rVEcveHF4RHFLOGp5RXJVd1hobUc1TVBsDQpMN0djMUt2MU1iL2d5S2V6TUJBeVp0dlNXSHpGZVkwOGphM2IwRXBTZGEycG01cDAxSmxmVC9MMGJuTmpvNHRIDQpsNFpBT01mcGVVZlVDOGdlU3ZWN1pMVW9uaUlJUjZHbjdsaXNVSlRsUXZydndDYy9GbTkxV2YvV3QzVEFyZ1BYDQpFREFFNVd3OFJ2NlVtejRVa1BtbGNhRDdzaTZ6NkNPdlZzeWRPNlJTeGZaOVliY1FGeHcvNDU0bTNMWGc3N29NDQpGbmM5VitzY2lxVnhBb0lCQVFDLzlia3ZhOURXNThYdXJTTWJWVnBuQWhMT1E5NHkyUkxYWDV0UnF6bEJoU1gxDQpiSTUrK0lzVFUzQTJCMWpVM1BzS3NCdWw3OCtwVTNKeWlBblg0STBvb3ZuVXJ2bC95M0ZVM1h6dWt4MkJ2WTVCDQpwc04rcm4rQzNJMjRFUUd2T3R2cjRjeDBkTWRaSVpBUThwRHJ2aDlKMVk0UXBSSk9BVktPeXozQ1ltRWVqTGN1DQpITXZNVmJQSDMxOHlHeEk1YWZtMENzdWgzaVdPbnlHZ1Q4K3o1c2dzcTc5dlF1UVNxZnFvVjNaTUgycEVMN3VSDQpIekdQMm1QNnRGNHBMMEF1SUxEdGV5UkhzL2tqS011KzlzV3FmVEtrYzZxTWN1RG9yNWFNa29kakl3ZGdUMnltDQpyY0dCdk9QY2NOTWMyYU5RUXQzNVlhemduSVdDcEZ6dHJNUW4xbTNWQW9JQkFRREo2a05Zc2podGRzeGVKandZDQpVOUQ3YjcySEN4clZia0VDbG5TSVhaek5yU0VwNkZNbzVyb1NYWEcwYkllUTZXc2FIdmxFMTlBTmd1WndWWDRtDQp5RFoxYTQzMWxuQnl0NmVoYjUzTjFuaXFONnFIekwzSnltcXh5Q1NSNTJGZHRkTmR4NGMvQ2dSRXEyRGZqL3c4DQpNL0hWNFdUcDRKUldUTVpEc2JJQ2VGQ05rTi91elpEQjFhK2gzTm5IVDVxcmhPL0pwQ3dYZzByY1dZUklBbWFhDQpDVHB6S3N3dlJmcG56SlhobHgzV3hCeFM2S2kybnhUdFpqVTZLZ0UxZUNObTR0emZqOFJyaFNXSFFDeFlOVHA1DQoyakRvY3Ayamg0cmFMOEI4S0VhZkRsVlBHNjFRdVVFQVhHZTdzRFdXUmlFOW1jMGRRZzFVMFZxUGhlWE90MzVhDQpRUXJ4QW9JQkFRQ0t5dk84c0JNbzBXLzZ6Tnl4UmJEUHhnTm50bzNWWm9qNVh0REJaSDJhOVlubVNqZ3BMOUZBDQp0bjBSWFIyRDhybW5ZMUV3aUJUeUZwRWoyWUV1Y096VmliWXY3SVFzbFFXTlFhWnZFZUZjM2pzbXZORHBLUlpxDQpNR3lYdjJ2d2tTQnVwQW1zWDBqaGY4dEtVbE9xb2s2TTNxMG5KTUx5dENtOTI5OE8xMFZzZUN3Z2hlVTM2UWNNDQpMNW5wc2lFMHVlM1JmSVNEenFrQXZCWWVLZy95QVA4eTdLUG9wczVSMUQyYVdvZHB2K0o4NjQwZSsrdzNyV0tQDQorektzdU0wbzUvL1l1NHM5RHNMRVY2MytEdmZqMXA5OU1sZXZ1UExWVzJBdk56MjJKS1Nua2Z3c3dXZ3p1ZmFhDQpMUGZGbDJYV2pCZUlsWHhwcnNReWlNZlZSbENRZEJCbQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0K mqtt_kafka_bridge: cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGR1RDQ0F3R2dBd0lCQWdJVVkxNEhrQWxWZ1JVWkowR1VlaVJnSXp3dnlxMHdEUVlKS29aSWh2Y05BUUVMDQpCUUF3SERFYU1CZ0dBMVVFQXd3UmJYRjBkRjlyWVdacllWOWljbWxrWjJVd0hoY05Nakl4TVRJNE1EazBOakF6DQpXaGNOTXpJeE1EQTJNRGswTmpBeldqQWNNUm93R0FZRFZRUUREQkZ0Y1hSMFgydGhabXRoWDJKeWFXUm5aVENDDQpBaUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0lQQURDQ0Fnb0NnZ0lCQU90MGN1UnBtSkxSWFdUc1FUUUZkSDRNDQpxNTJTZHMxTVpBYzI4dXlqU2U3TzZGL3FWT0ZobTB2VmFqcnl0Mmw1Qjk2VDhyY1BhZDlFUDhnL0I3MGhtMXp1DQpvZk1IcjBTY1VZREMvYUxrSnRSNjNDTTdYMEdCWm4xUkFzM3hHYWxTdDNCMlBKUE1xdEUyd1hoUGh0cTZQcFgxDQpCVy9HSnhubnN5TGJjTlJNOWtIUjk1Nk9tNUhKMExsTzZBTjQ0UEx3ZkMvaytvUlI5UE13cEtPeVkxZmZJemlnDQoxUUNVcUM3cENUMndlL04ydkEyQlhGZDNVb2h1WXU5YUo2dEg2K1RzWU83L2hDUUc3SjdwU0pCd29SUzBCeTZjDQptdVJHREpDZEVIMm9UYW0zNU5nNkQ0TVVpYUVCZ2tOaWxTczVpMTdocTNvWVl0UEJWVDN2d0ZiSStQSFErZWltDQpkL1hNM2JqYkdQWkhWaHZhaDhqV1hxak1sMUR0TnNkT0NqaWUzWTVGOGFLZW1pcnpOYkJJcnFWeWtuZ1ptS2tGDQo5b2tPa0E1eXlrMTVFc0RIc1oyVWFwN2lJRnZLN3VzN2xJV3drZEdWZm1aRHIrdU9icWIvUXQzMEpBUDhDYXJqDQpPaUF0NG5yT2JON1hRNThNd3F5dFBwQnlyenVYV0pkcWhleTZMdXdNOFc0YkRmT0c2cUdxYklPbjFTemFRZUp5DQpiaXdaL2ZRYzN2aTkwZ2hESGZCS0o4cElWY2lEZmZwT2RXeXdJakNtZDJYY2JqTWFFVWRhUVZXZDFkQXArRjJDDQpXT1NDdGcvbXZXQytwYkY4WG5tTmJvQ3ZzZUMzQ1dWY2JhSk5CN1l2SDdDUEI4NHBoTHhoL3ZUV2w5Z1QxdnNSDQp5emErMHRMV0Y0aWN2d3dKQVF0N0FnTUJBQUdqVXpCUk1CMEdBMVVkRGdRV0JCVEtRb1JSdE9ZVlE5cnNjVHcyDQo2aTJSZDEvWnlEQWZCZ05WSFNNRUdEQVdnQlRLUW9SUnRPWVZROXJzY1R3MjZpMlJkMS9aeURBUEJnTlZIUk1CDQpBZjhFQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUNBUURZWk1ydnBKVUlCRzlrcFRZU0ZEak40Ym5VDQp4ZVg4bVoxTndtQldNcnhmdkRVWTlnOXBXZXdZaitTNXllQy9yczFtbm5wRVJCbG14YS96UUxBWUxMK0M2Znk4DQpwelFSbVFSMVRLSzQ4STYxZnNHUmlNNEZ4TWd2NmdTZGtVbHZHWGVXSklucnB2R2RpM1M4QUNQTXZvNjVubThIDQo3RndhNVJFWTlIdGZJbHJZamdLWXF0dWExb1FwS0hvTjFDNGlHYWZ4RDZ3aGZOQ09hV29vUTR4Z1BsMjFjK1VKDQpaRTVqVEVwTU5EOUtFTDJSSkY1cm1rU1VtZVVPSnA4R0xDTTZrM0NaQVlRSUpCOFRSSTB6Wng4Y2pwRmhZN2MxDQpuT29kK2NXbFFLNFJaUlMvSjRIUTBrSjUxL2pDbUNhclR5TFNxT0IzV3FyUzJ2NlRVc0Q2OWJSU3IzSmtRM29tDQo5VnFUbGNZWGErS1hIMlJDRmFjdmM0aFY4bEtSZTJGdHNFcnpud1ZmbEVEaGN0ckVoZnRGb3JiOURUK05WMThODQpIWDArSGxWYVY0a1p1Njc0MmZZZS96WkgwT0ZqRnk5SkdiZFRHcnJqNlptdk5uNFhTL091c3FJMTlsdkhvWW9mDQpKT3Y5YlpFcGczamR2cTVaNHdSVU9pSmRKaUIxeXV6cnVrN1lqbTAvVldXNS9LS21LTjJlNmNDelZtcEJCRHJHDQpKTURpa1dIQ1plQVdWdWVGWVEyL2xaVFQ4L2RmUGs5NEc4Q2tFSkpvQlV1UzMxa25EandDcGNwdHV1L1lmenpKDQpBUEtnVGJKOW5FRTJOTTZlOENaQjl6UTc1eFlMQnFvNFZndnZ0Z0tMYi9lbXg0ZXJLTXdwQS9tMjFWcDFkUmZLDQpZZEtlRDVZMlNJMkM4cUMva2c9PQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0K key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUXdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTMHdnZ2twQWdFQUFvSUNBUURyZEhMa2FaaVMwVjFrDQo3RUUwQlhSK0RLdWRrbmJOVEdRSE52THNvMG51enVoZjZsVGhZWnRMMVdvNjhyZHBlUWZlay9LM0QybmZSRC9JDQpQd2U5SVp0YzdxSHpCNjlFbkZHQXd2Mmk1Q2JVZXR3ak8xOUJnV1o5VVFMTjhSbXBVcmR3ZGp5VHpLclJOc0Y0DQpUNGJhdWo2VjlRVnZ4aWNaNTdNaTIzRFVUUFpCMGZlZWpwdVJ5ZEM1VHVnRGVPRHk4SHd2NVBxRVVmVHpNS1NqDQpzbU5YM3lNNG9OVUFsS2d1NlFrOXNIdnpkcndOZ1Z4WGQxS0libUx2V2llclIrdms3R0R1LzRRa0J1eWU2VWlRDQpjS0VVdEFjdW5KcmtSZ3lRblJCOXFFMnB0K1RZT2crREZJbWhBWUpEWXBVck9ZdGU0YXQ2R0dMVHdWVTk3OEJXDQp5UGp4MFBub3BuZjF6TjI0MnhqMlIxWWIyb2ZJMWw2b3pKZFE3VGJIVGdvNG50Mk9SZkdpbnBvcTh6V3dTSzZsDQpjcEo0R1ppcEJmYUpEcEFPY3NwTmVSTEF4N0dkbEdxZTRpQmJ5dTdyTzVTRnNKSFJsWDVtUTYvcmptNm0vMExkDQo5Q1FEL0FtcTR6b2dMZUo2em16ZTEwT2ZETUtzclQ2UWNxODdsMWlYYW9Yc3VpN3NEUEZ1R3czemh1cWhxbXlEDQpwOVVzMmtIaWNtNHNHZjMwSE43NHZkSUlReDN3U2lmS1NGWElnMzM2VG5Wc3NDSXdwbmRsM0c0ekdoRkhXa0ZWDQpuZFhRS2ZoZGdsamtncllQNXIxZ3ZxV3hmRjU1alc2QXI3SGd0d2xsWEcyaVRRZTJMeCt3andmT0tZUzhZZjcwDQoxcGZZRTliN0VjczJ2dExTMWhlSW5MOE1DUUVMZXdJREFRQUJBb0lDQVFDQXhCbUZReDZXeEhzZ0UzaUJPNjUrDQp0TzB4Nm9TZ04vUElZa3V1RUlzQldCU0xSL3NObXpTejMwNE9XT2puZkxKS0RuMUJrZU5qbjg2Rjg3cUd1NWRjDQoxb0NwQ1gzWHR1bDMwcXVsWnNLNWwwdEcxVlI5M1lld1p4cHlpRFZ4ZlhRbXcvTFRIYTRaWnFtZDQxZ3J6SWtuDQp0MjAydUpadnUyQWpZd0VzaWI1dk5xWUdCNVdhd0ZVdTByRmVITUJnL0JYZWw0cE56UWg1NnhOUEZ1THZqbStUDQpxNWx4ak5zQmRKNkNKejlTWVkvc2p0OXlVaVpIeUo3QXFYeGlWcDN5ZnpkdjNUdGwvSWR4VE1GTGhOMERGb1dLDQovMGhTS09EOFFYbGdUeWZSOW1qbnU3RDZEY1JLMGlsc01zRERkOS81anM4Wm9iYUNlZ3ZsS0hYMndFZ3M3dzJNDQpHcnZqYUkzTFhlTkVFMms2Wm80M0oyV05HRXpSelltSTFJS3FhNVh1NElJZmV5UGliOTJpQUFOa3VqLy9DN1IxDQpjZ1VOUFd3OXd1VWg4VTN5OG5yclJOamg0UkVSckxFY29QNGZvVGlNQ3liUGNSVGlzVlJjcEg1Y3R6ZXIvQW5MDQpiZ2FYU1NQVXJjRmtTV2QrVjdOaHk3TnFVRTc4QjJVSjBKNmFLZ0t1WFBNT0hwWmx5MGJrVUgxRUdDMDl0K1B1DQorM2FJaVo2OVFwdURGTnE4RkdwVFF6TkNhMDg5MDA3RHN5UzhySHY5R0hVYkx5NkxRUTdaNnVHc2ljRThGVHdpDQo5cnBnZXZkMEpyMVg4dTZRUUlHRU9ldmxIaVdYQllLcmNObC9RSUFPZFJ1RkRTQnRiOFEzOExHYlBTV2VlNVdVDQpUbk50Ri9NRUtyam1zaUhoL2ZRUUFRS0NBUUVBL1RjM3RrV3YrYWZEbWc4aTZYZDBZdHd5NktveS9YS2VZbWErDQo0YXFyMEgwVDVkZ0Q3WEloVTdCcWNZdytxdGt6ZXdER25yZmNyNzR6VGVsNUMwRVZqUWsvRXVOZFhYRlVGelpnDQpqQWZmWURTRk45TVZWYk5zb1o3TVphWVg2S2VWc1J3NkNidnd6K3BjZ3JRR1BrMWRZTGlEZ0F1alJiZU1ZdUdsDQp3WFpONTZvM1JCVkhWM0xPUDBmZ1NvSXRycnI4M21oeWpRVU1aOFdndjBvam1TZzVtWVFneU9rWkRMN1VtYXBtDQpQcnVlY3BtZGozWnJhY0xReUtQaDA5cHJMVGVpRVpCZzUxVjhXZWkrRVUvR2d4OTV2SGtpMFd3SGZNdVBLQllDDQpicGR0cVlHemJaRTJiUmdHUklwcTgyVWxDd1k4bjlkcFcwYldML0Z6SFpnbUZUa29BUUtDQVFFQTdnczhZYTdtDQpIcDFSZzVjcjZjZnc3WjJPWmRvUFFZRWhhY2dSWURvM2dOYzRGL3RSY2MyaGFvbDRwNkxMNDBiWTMxR0JUb2NZDQpaNHp6SlNleFdDaFpkZHJTcEhSQVZhK0Z2ZWFrMjY2Mjhwc1VhUE5ZVFZvUkRiNDdDMDZibGxFWUhrOWZ1NHVsDQpDRGRXNTRlaWVCZFlOSWwrUko3T2w5ekM1OTVCZDZQaFJJOWViVWp3Wm03ZFgyZFJYUm15K0tGL09KbU1tNlF1DQpCR3Q2dUNDQTg0cGo3bkRsRWhLb2k3d1hGZnJuV1hKVXR5V2VZcTc2bkk1cFcxZEZ6d01XbWJZUkdLWEhJWlRFDQpWVVYvc3BGSlRJOUk0QmZIbTV6TlU3NDRIcFE4Z2VWb3JWRHlhMVJHZm5xVm8xVlRZR0dibXVXSG82ajIvQ25JDQpIQWZjUXlnWTZwTFRld0tDQVFBWXdEcjc0QmZ4YVVxZlZuZHRKcllEcTg1Mkc1emNWVVhTRElULy9mVEpibEJ4DQptUW5aUGR5d0Y0QndGT3RUTytQaVZCTVdGSmJIdnVtNDVlZGxDRG1aRFp4U3RsSzcvWVhndHZuODloQUprVmlzDQpPai9ObnJveG1ob1VuWVdjd2pUSm1SNjdNTm03R1FkdDV6YnRCQmJxaTE2Zk40UUFIbzdrWTNZV1VRQVFjdnp2DQo5THlDZWNCYlF5VlRZeUlnQURzVGFsWTRIcFExMklWNzdUMUpqVHNFSEh3djUwa0JpKzJ3RDQzcTk5L25COGowDQo2dmhZNENnVVZLQ1FXcnM3TWtMdlFKT1lTU3pjaFBsL0s3TVZ3Zy9lTW1FSzQycGY4bTNOMTBqcGtuZXZwL1BuDQo4OWZFRmlNV3RBajhQWmkvV1I2MzZSQnRVYUZDRW5IVUpMa2tQZkFCQW9JQkFRQzV2WGlxKys3QldwMmRJUnI1DQp1ckpLcGxMVE5IZ004N1pmdE9XaUFTc0gxR2NIaDJsQWRHUU1IaUpRSTU0VnhGVTZ3MzB6Q2dUSDM5cGxWbmh4DQp3bUl6ck1BSjVFL0N6RWQrS3ZiZUY1RFc4cHpWVzNPK1A1WG85Rk5iK2tVNjRDSUNuSXFsYTB3bGdoREViamdlDQpucENMeGZFSm1DUzVxRjlJejBxa0VQS1lMWXBQbWNkREZpU1Q2YWs2RFBCeVFvbGpYNlN3V1VZeTJxNlI5NExIDQpCV2YrU0libE9EdmRkTEZLekZFeW9SeHJIK1piT0ErQ2t6aXdOZ1BaaUo1YzZBeWsvODNHYlM5WkhmYUxIZ1JrDQp3YlRxYm9Pbzc0dmpXUnl1OTVuUy9XOVZOVUZDOENwbFREOXdpQWFid08zS3ltaXhFZ2xPTDBmZVgxL0Y0d2EyDQpHa1Q3QW9JQkFHN01ZRVhRdm1hUHI4SlR2TEM1dFhxZ3pPcys5bVEwQ3ltUk5kK2VnT2x3OFdxTXVRUk9JcnhnDQphTHQrZm02elU1aURzSE82czFGL0h6TjYwRGdEckdSWFdpdjc5TjE0Yit0VWpCdUQzY1p6Y2hNUEtZV25iaEl5DQpoN2YzbENyQVBXdFl1WlZFRTFjckRwNFFjdytuemNvcENOZmJmVW1qK2xVZ04zaGVHV2taUDUwekdMYU1zN25uDQpKdXNFaUJGdGF2N0UvbnB0aGNBMzBEblU0cXY4VkY3Y1NVc0ZSRjFHQmx0Y3YydFhNOE9JWEZMRFlpdzNJTVhuDQpyTnlNNmRybE5JZE5EdFlaS1U2SnJvSy9wQzYvUnpOcmQxa1o1aEYzSWo0d0txdGtQRlpFMHFCMGgvS0szSFd2DQpJeHdJUjFFMnk1Qi9teTJFaWZYTlkwVVFId2NLVXJJPQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0K mqtt_bridge: local_cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGRFRDQ0F2V2dBd0lCQWdJVU01RFpWai9pYjVRT0JWemM4YWdoK0djQVBRa3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3RmpFVU1CSUdBMVVFQXd3TGJYRjBkRjlpY21sa1oyVXdIaGNOTWpJeE1USTRNRGswTmpFd1doY05Nekl4DQpNREEyTURrME5qRXdXakFXTVJRd0VnWURWUVFEREF0dGNYUjBYMkp5YVdSblpUQ0NBaUl3RFFZSktvWklodmNODQpBUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUJBTk9jMzMxVE85RVN6b2pCTnRwb1NacHo3QXVVcXE2SFN3UUlON0xXDQp6YXpRSXJuOXZDWjNaTEhUaENIdDc3b0wzRm9nUFF3UzNpU1k3aGRQWllaZWVPWjBJaExJY2hhY3RpWnRpK01mDQo3aFNyUHBJemxTMVdHUElhbExYOXc1eGd0VDlzVXc5VTB1T09aNEFBZGl0TDhKdk9XU045QUJqSGdjb1ZzRWxPDQpKdGhVWnNaVTVZS2tNVXY2a3dmQ2t1SmRWdmdKeCtwNVJaYnpLK0p4d0xaMFlWaDNDK3VaV0YxVmlYeDVZOVlODQpHVDZXQXpkYnhmaWZmMzlPV3c1UDg1UHdKSjR2MmpaSDRXTDFTdDVZRlNQY3EvWkg2b01NeFRHN1FXbElZemZXDQp4RS8xN0hKK0JmblBCaEdpL0dSY3hJSWRNMnF3YUVBTEMxZDEydFdqNDU1c0F4QTE2dW5sUUd6cUthV2lHN095DQphL2VnYWREU0gydmNMcko2Q0w3SW1rTDNZVThtUks1RitiTmlTaW9aUGV1azFZRFZBb3phQUQxaWRRcVA5NVpkDQpmTHJrZ2tKUDhqL2FZa3RndUdqdG8zUERmd1dHczd6dmZuLzBQL1p3RDdkTGtMOHArRUNGZU9rY0VlUjFrY1FJDQprQVlMQXBrZVVkL1F5aDIwQlFFNTNyUEgzTU5MTUk0d0xuMFoydmUwck15RDdIbElNb0RDUWtOQVQ2NWErNDVlDQorRlREOXV4K1RwQktTSkJ3S2J4a2REc0hLdTNkdjlkVDdsK24zRUNhVnRsNW4rTDJRaERZdDQyKzR4TW5aUFJTDQpnTXM5Ni9ncjBObldmQXY0dEdUMVZMdUd1ZDZyWGJKK0dnU1hjb0kvekpjTE9MenFqRmIzOHNrQnVzWjVvQkxsDQplWUxuQWdNQkFBR2pVekJSTUIwR0ExVWREZ1FXQkJTQWRzTmlWMDAyR2toREV5d0IxV0IydVAzYzF6QWZCZ05WDQpIU01FR0RBV2dCU0Fkc05pVjAwMkdraERFeXdCMVdCMnVQM2MxekFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHDQpDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmV1aWZ0cjlEZHgrMDVEMWJWRHplc0d6WFdEdUpiVERLNWd3eVdpYjRHDQpDVFFGaExDVlQwdit5SE5vVk91VTBNczcxeFZ1VlFSc28wMGVZVlVncGhQNW5jeVNkRzNJck83eTlwbElEMWhrDQpVMm9USXoveUx6RTNOdHluWWgrZytCMjF2SUtndnh1WUx3QUxOTmtpMzNISklzUEoxMjUwSmVTNXpnTnZCbnYyDQpaL2o4Y0Z3MmFRS09zREdsNXRaVURNNHdqNjdOL0xPNDJMSFkwVzdkN2tGODQwSGlGQThJNS8rSzNITk5yaWRNDQpnaWgwME9uYzVFYStOMGVGTnFGUmNMWlprSXJKbHVIbERXeWpzUnZEQzV5cGcvNno0UXdPNk5yOExWdjEvQnNvDQpTZXNTWkN2aUlLZzlISmZXaVNvb2l1NlRIeDEvWjFtZ1dpQUxHOGliZE5PRksxQ3NtWUgwQ2tidURodDZhNjNtDQo0VlpCM1NaeTNqTDBjSnBuKzlibmFrVTlQSlZ6VENjbVRBR1BPUlUvUUxEbGxIbWpMRjdVbTBhTkNZdExFT2tIDQpDM2FaSU9lUEg3aTRYaU1pVm5oTm1yQjg2T1NSZGk5ZUh4Z0ZWeWFoMnFoUU5yTHZpRkpVUDJuQ3dPVWRHODFrDQpUYVd3N0ZaQ3ZxZk1sRmIvbVlRaUUxU2RES290N0ozUC9KY1pjS2tOR2xQcis2Nm9xa0x5Sk1rRXN5b0cvVWpYDQpLWUtDMWNVbVQ1NWhpME92RzZ5b3YzQ0NabkM4TTdSM0orSmRlcTBublFjcVBtK2JRZlYvdnY4Skg0ZjRmNjBDDQpBVE91ZDFEL1Y0eXhxalpnNS91dS9YSG5FS08rVVp2THp0Wk43WDNTMGxjWHBJOUNlRkE2OVcvUXBJRDk2TThnDQpUQT09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo= local_key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUXdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTMHdnZ2twQWdFQUFvSUNBUURUbk45OVV6dlJFczZJDQp3VGJhYUVtYWMrd0xsS3F1aDBzRUNEZXkxczJzMENLNS9id21kMlN4MDRRaDdlKzZDOXhhSUQwTUV0NGttTzRYDQpUMldHWG5qbWRDSVN5SElXbkxZbWJZdmpIKzRVcXo2U001VXRWaGp5R3BTMS9jT2NZTFUvYkZNUFZOTGpqbWVBDQpBSFlyUy9DYnpsa2pmUUFZeDRIS0ZiQkpUaWJZVkdiR1ZPV0NwREZMK3BNSHdwTGlYVmI0Q2NmcWVVV1c4eXZpDQpjY0MyZEdGWWR3dnJtVmhkVllsOGVXUFdEUmsrbGdNM1c4WDRuMzkvVGxzT1QvT1Q4Q1NlTDlvMlIrRmk5VXJlDQpXQlVqM0t2MlIrcURETVV4dTBGcFNHTTMxc1JQOWV4eWZnWDV6d1lSb3Z4a1hNU0NIVE5xc0doQUN3dFhkZHJWDQpvK09lYkFNUU5lcnA1VUJzNmltbG9odXpzbXYzb0duUTBoOXIzQzZ5ZWdpK3lKcEM5MkZQSmtTdVJmbXpZa29xDQpHVDNycE5XQTFRS00yZ0E5WW5VS2ovZVdYWHk2NUlKQ1QvSS8ybUpMWUxobzdhTnp3MzhGaHJPODczNS85RC8yDQpjQSszUzVDL0tmaEFoWGpwSEJIa2RaSEVDSkFHQ3dLWkhsSGYwTW9kdEFVQk9kNnp4OXpEU3pDT01DNTlHZHIzDQp0S3pNZyt4NVNES0F3a0pEUUUrdVd2dU9YdmhVdy9ic2ZrNlFTa2lRY0NtOFpIUTdCeXJ0M2IvWFUrNWZwOXhBDQptbGJaZVovaTlrSVEyTGVOdnVNVEoyVDBVb0RMUGV2NEs5RFoxbndMK0xSazlWUzdocm5lcTEyeWZob0VsM0tDDQpQOHlYQ3ppODZveFc5L0xKQWJyR2VhQVM1WG1DNXdJREFRQUJBb0lDQVFDdzZ3N09zSy9wOUZkSWJvRjF5SXNBDQozcm9TVkpEK3FZNUdLTGlvaEg0Z1pVTWpUTWZwUVJpbXM3aGN4WmtQYXFzbmpweDdZNnJsM2hYdzF5aUNWcW10DQp3cHBhS2N0NHJEeDlsRWpIOHdJUnRibnljYjNlMFlTNXBROS91Rkc2aEFBRXJvUWk1VUFMa0J0b0lQcXE2Q3FaDQptTU5kc0R4TWUwQS92REpPbDFCU3ZQM1FBMXAvQnRkUU5vYUdqbDVQY3NvclJjSW1mbzEzem9aNkk3Q0Mybm9vDQpoQjhyTW1GMlp2VXpaQ25iNDhlZlU3d01wR1czbjJIeEJZbUxSYnpYaW9hUzJsOE4wcnJWQ1U4MjVWMkhSZzlmDQpNSEVZYjZ6T0QwaDR4VlJ1Y3RoZUliVTFZN2VMUzFJL25JeDNQRGZ1c0lzMFA1aHBNdEtncEovNHpiU1gxcVlYDQplamIxbkdBdVZsbVJwUjh5ekpvRTVRbVlkV2tFVWw2NzB4VWNBN2QvQ0VqYWJ6OG56bGwxMmFDQ2dOOEg3STNIDQpTSjAvcm8vWGh5czd5Z2Q1V294MXhPVzlaQTFPNUVSNnJ2TG5WUXVMYUZkeElVOUswSFRBbTJzY1VYS1h0YTJDDQp4aFNxdmRkSDdUSVR3VGVnTG00MWswVDZrdzlXMGd6dUl2OU1nZnhzLzVjakZzSkQrYUtIUTkzcUNYN3Z4YjdSDQp3YUxxUFZiZUg3UDZJVWZvZkhzanp0blVHNTc0NGx0eFVMZkRSVjUyYkhWZFEwdDVYYWZIdjVRalJUQkpKRWY3DQpCb1o1eEpmWTdhOHpSNFNJTjRUaXBzUGFaK3Bzcy9oekZkcHM0YWNqY00wdWNiSkYxWUxQWGRqVHZBYmdvdlNEDQpQS2RZalgzcHdCNVIwdjlneXFINXdRS0NBUUVBN2F0bW9IWFRITllqam1kZ0o2cGJUY3dDUE83UXV5Z3E4UElqDQprSEE0UkEzWGc5cG5JM3R2RkpvYUx6V0hBbnM4MWxvTldlaUVTcnZGcktTY04wZVR0SHdmUnp3bVl2ZXZpeUJ3DQpKNmpXNEh3dnMxWThscjV5dU4yYnp4Rk9HRjZKdjl0UmI2L3d2bkRvM3daVHowZjVueGFFbzZPbzlKWkN2eHFNDQprRkdtb2VRanlpNWJEMGpQNUlwelQ3SzI1ckUwOVNYd3pUSVBHQW1ZVkJ5RDFRRkRHZm9pMFJHRFpHZG1kMHBGDQoyd0U0N1JJREZCSkErU29Tb1lDcTZmWjhsajg0TTdock9oYXZGK25pb3VZY1JCUmIrUHdUTnhDSlpQTEgydE4wDQpVQjRBWTF3emtBcnhkS3RBNnBlRFhaVkx0S05idVoraXdXSnRZM2NZZHZkbXovbkRzd0tDQVFFQTQrOEFnWURODQo4Mm9mSk81OGh4SWRnU2lqdHhXbUJ3aWhpcnFEQ0RyR01Dc01ueDVVclZoMVZCL1c4YkFqL2NvTFlBR0h4OGtODQpSWnhUTGRjTjRBOVRTWFk0MFI0NFZVWmJkRExWOEFQMGhQU1daR09KaXZOVU5pSktNdUpWdVpUKzhEb1ZyeitlDQpFOStNY3Q3YjRYT0psN2VKZUtjM1E4dkxlNC8zY09IS21PTnEyVHQ4cTIwTjh3VUdJcUI3N3JpMWR2Sjk4S1hGDQo3K1g2dDI4ZnY3d1Y2bkFML3lmeXc4VldlRGE0cStkRng0TWk5cVBZNjBPQ1p6ai9QTW16ZUpXUFMxVkhob3l5DQpoVXVqNkpnSnJNNTNYUHBheWxlaWtlR1lFek5GTmt1WjhtK0FSdkNRb2pyUzdCai9kWUptMXZPeExJb1R3KzhBDQpkcEdqL0t3K0pZNzUvUUtDQVFCQ1BPZlFScVk4dmkyUXJaenQwUnU3TmVWVnlCVWlaQko3cm5CYysvbWlkZDBmDQpvVW5uYUtwUHFwY3JteFp5aVpndUFWRUJRcjFEK3NzZno0eStGMVBDRkdtL043TlhGOEt6MnFtSFZCWDI0SVdHDQp6THo4SWozazZkWlh3bkhxZHNhYlV1dUNYaDJSWmZSdzI5bVZ4bkI2ZHhNbWJDRlZjVjlPMVg1aFpuQXpaRnJaDQpLVXcxbVV4ZlhIckF0b1VsRERRL01vREhIM0YzZUkwY3ZBbTkzcWt0M3ptKzNNdXF1dXFpeW05bmx4S2ZkOHFsDQoyR1NGVE1WK2YxYWkrQkJHNjMybFpIdDE2QWFLZXFPd1ZNT0I4YzZrT05TK0h2eTd4cklPZWFwTC9lQ0wwSkdLDQpUcEoydXBmUUNjUVIyOThLakJDdlRoOVZHREoyYXlYRldqUXNPR2JqQW9JQkFRQ0U5L0I3bkFDSmQrY2pURjBwDQpEdEJYZ0xYQklNZnlZbjZheDZPWk1YQmN1VUJyc3U0REVnK2dPOUxRdThqRFRSTEZ0eDdXMWRzQU9PbnRXLytrDQpMa3lRRm4rZXZ0cHVKTlZGUEVMQitneXpZMXc0eERpQTd1SzVrZGRuUjlKcXFSandXM0k3QWduZDNoTzVEM21HDQpWRGg0WVlHNCtST3NZVDhibmlqam1WVHZTL3dSTGpyVVpwSTBxMEdoQWE1SzNVWS9WY2RTaytLY3lMVXlQWWx2DQorUEZ3Q2wxMVJJREM1R1JGVE9iK29iUjdaMjBHSlI5dVg3dTdLK3o2TVZDWmorWkFORWU5bm1hbWpESGFocGRlDQpVRFFoOFlyMWI1cFBNQ1BmVDVHWTB4SEQ5SGdJNmwzMXhnczE0SDltdGVQNGtjRlNFbHJsZW8veW01UG0yelNHDQpCSnFoQW9JQkFBOE42WU40SDBvQzJibGtNQlBOUlNERU1ybkFjbmNFcGhUT0tVOHg0WVAxMHR3MXFBY2lNaU9FDQpCSnljblJpQzFEUGVoaHVab3VNSnN4eEdmNE1QR1NYaVdlRVdlbW5NU2ZzZVNVS1FVRWFZUnYvaGZrQzJ2ZXl5DQpWSGE0MGpGSHhWNkRRY1JJRHBEdjFBTGd4OE9WNFlaTGFBYVhuc2ZVa25JalFTaDF2d0EzQTlmSGdITnY1NHJMDQpyU1liaWhubXROeEpDdXhZM0J1bFY5aCtHOVNoMXpxR3lQaTVZMzJ1TjFPRXRydVpCUmE1eEFuZVhPVWNPNC9RDQo0Qm1DdnFnQkpESDIwUHp5OStSZjZCQVB6WnFNbkR2NU9xTStDYjBxTEJoV2JkdWFaY24wS2tocFkxLytWdEJhDQpKTnY4a1E0b1hrOENkdkFyVXRybmZJWmJYTTdBODg0PQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0K remote_cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGRFRDQ0F2V2dBd0lCQWdJVU01RFpWai9pYjVRT0JWemM4YWdoK0djQVBRa3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3RmpFVU1CSUdBMVVFQXd3TGJYRjBkRjlpY21sa1oyVXdIaGNOTWpJeE1USTRNRGswTmpFd1doY05Nekl4DQpNREEyTURrME5qRXdXakFXTVJRd0VnWURWUVFEREF0dGNYUjBYMkp5YVdSblpUQ0NBaUl3RFFZSktvWklodmNODQpBUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUJBTk9jMzMxVE85RVN6b2pCTnRwb1NacHo3QXVVcXE2SFN3UUlON0xXDQp6YXpRSXJuOXZDWjNaTEhUaENIdDc3b0wzRm9nUFF3UzNpU1k3aGRQWllaZWVPWjBJaExJY2hhY3RpWnRpK01mDQo3aFNyUHBJemxTMVdHUElhbExYOXc1eGd0VDlzVXc5VTB1T09aNEFBZGl0TDhKdk9XU045QUJqSGdjb1ZzRWxPDQpKdGhVWnNaVTVZS2tNVXY2a3dmQ2t1SmRWdmdKeCtwNVJaYnpLK0p4d0xaMFlWaDNDK3VaV0YxVmlYeDVZOVlODQpHVDZXQXpkYnhmaWZmMzlPV3c1UDg1UHdKSjR2MmpaSDRXTDFTdDVZRlNQY3EvWkg2b01NeFRHN1FXbElZemZXDQp4RS8xN0hKK0JmblBCaEdpL0dSY3hJSWRNMnF3YUVBTEMxZDEydFdqNDU1c0F4QTE2dW5sUUd6cUthV2lHN095DQphL2VnYWREU0gydmNMcko2Q0w3SW1rTDNZVThtUks1RitiTmlTaW9aUGV1azFZRFZBb3phQUQxaWRRcVA5NVpkDQpmTHJrZ2tKUDhqL2FZa3RndUdqdG8zUERmd1dHczd6dmZuLzBQL1p3RDdkTGtMOHArRUNGZU9rY0VlUjFrY1FJDQprQVlMQXBrZVVkL1F5aDIwQlFFNTNyUEgzTU5MTUk0d0xuMFoydmUwck15RDdIbElNb0RDUWtOQVQ2NWErNDVlDQorRlREOXV4K1RwQktTSkJ3S2J4a2REc0hLdTNkdjlkVDdsK24zRUNhVnRsNW4rTDJRaERZdDQyKzR4TW5aUFJTDQpnTXM5Ni9ncjBObldmQXY0dEdUMVZMdUd1ZDZyWGJKK0dnU1hjb0kvekpjTE9MenFqRmIzOHNrQnVzWjVvQkxsDQplWUxuQWdNQkFBR2pVekJSTUIwR0ExVWREZ1FXQkJTQWRzTmlWMDAyR2toREV5d0IxV0IydVAzYzF6QWZCZ05WDQpIU01FR0RBV2dCU0Fkc05pVjAwMkdraERFeXdCMVdCMnVQM2MxekFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTBHDQpDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQmV1aWZ0cjlEZHgrMDVEMWJWRHplc0d6WFdEdUpiVERLNWd3eVdpYjRHDQpDVFFGaExDVlQwdit5SE5vVk91VTBNczcxeFZ1VlFSc28wMGVZVlVncGhQNW5jeVNkRzNJck83eTlwbElEMWhrDQpVMm9USXoveUx6RTNOdHluWWgrZytCMjF2SUtndnh1WUx3QUxOTmtpMzNISklzUEoxMjUwSmVTNXpnTnZCbnYyDQpaL2o4Y0Z3MmFRS09zREdsNXRaVURNNHdqNjdOL0xPNDJMSFkwVzdkN2tGODQwSGlGQThJNS8rSzNITk5yaWRNDQpnaWgwME9uYzVFYStOMGVGTnFGUmNMWlprSXJKbHVIbERXeWpzUnZEQzV5cGcvNno0UXdPNk5yOExWdjEvQnNvDQpTZXNTWkN2aUlLZzlISmZXaVNvb2l1NlRIeDEvWjFtZ1dpQUxHOGliZE5PRksxQ3NtWUgwQ2tidURodDZhNjNtDQo0VlpCM1NaeTNqTDBjSnBuKzlibmFrVTlQSlZ6VENjbVRBR1BPUlUvUUxEbGxIbWpMRjdVbTBhTkNZdExFT2tIDQpDM2FaSU9lUEg3aTRYaU1pVm5oTm1yQjg2T1NSZGk5ZUh4Z0ZWeWFoMnFoUU5yTHZpRkpVUDJuQ3dPVWRHODFrDQpUYVd3N0ZaQ3ZxZk1sRmIvbVlRaUUxU2RES290N0ozUC9KY1pjS2tOR2xQcis2Nm9xa0x5Sk1rRXN5b0cvVWpYDQpLWUtDMWNVbVQ1NWhpME92RzZ5b3YzQ0NabkM4TTdSM0orSmRlcTBublFjcVBtK2JRZlYvdnY4Skg0ZjRmNjBDDQpBVE91ZDFEL1Y0eXhxalpnNS91dS9YSG5FS08rVVp2THp0Wk43WDNTMGxjWHBJOUNlRkE2OVcvUXBJRDk2TThnDQpUQT09DQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tDQo= remote_key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUXdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTMHdnZ2twQWdFQUFvSUNBUURUbk45OVV6dlJFczZJDQp3VGJhYUVtYWMrd0xsS3F1aDBzRUNEZXkxczJzMENLNS9id21kMlN4MDRRaDdlKzZDOXhhSUQwTUV0NGttTzRYDQpUMldHWG5qbWRDSVN5SElXbkxZbWJZdmpIKzRVcXo2U001VXRWaGp5R3BTMS9jT2NZTFUvYkZNUFZOTGpqbWVBDQpBSFlyUy9DYnpsa2pmUUFZeDRIS0ZiQkpUaWJZVkdiR1ZPV0NwREZMK3BNSHdwTGlYVmI0Q2NmcWVVV1c4eXZpDQpjY0MyZEdGWWR3dnJtVmhkVllsOGVXUFdEUmsrbGdNM1c4WDRuMzkvVGxzT1QvT1Q4Q1NlTDlvMlIrRmk5VXJlDQpXQlVqM0t2MlIrcURETVV4dTBGcFNHTTMxc1JQOWV4eWZnWDV6d1lSb3Z4a1hNU0NIVE5xc0doQUN3dFhkZHJWDQpvK09lYkFNUU5lcnA1VUJzNmltbG9odXpzbXYzb0duUTBoOXIzQzZ5ZWdpK3lKcEM5MkZQSmtTdVJmbXpZa29xDQpHVDNycE5XQTFRS00yZ0E5WW5VS2ovZVdYWHk2NUlKQ1QvSS8ybUpMWUxobzdhTnp3MzhGaHJPODczNS85RC8yDQpjQSszUzVDL0tmaEFoWGpwSEJIa2RaSEVDSkFHQ3dLWkhsSGYwTW9kdEFVQk9kNnp4OXpEU3pDT01DNTlHZHIzDQp0S3pNZyt4NVNES0F3a0pEUUUrdVd2dU9YdmhVdy9ic2ZrNlFTa2lRY0NtOFpIUTdCeXJ0M2IvWFUrNWZwOXhBDQptbGJaZVovaTlrSVEyTGVOdnVNVEoyVDBVb0RMUGV2NEs5RFoxbndMK0xSazlWUzdocm5lcTEyeWZob0VsM0tDDQpQOHlYQ3ppODZveFc5L0xKQWJyR2VhQVM1WG1DNXdJREFRQUJBb0lDQVFDdzZ3N09zSy9wOUZkSWJvRjF5SXNBDQozcm9TVkpEK3FZNUdLTGlvaEg0Z1pVTWpUTWZwUVJpbXM3aGN4WmtQYXFzbmpweDdZNnJsM2hYdzF5aUNWcW10DQp3cHBhS2N0NHJEeDlsRWpIOHdJUnRibnljYjNlMFlTNXBROS91Rkc2aEFBRXJvUWk1VUFMa0J0b0lQcXE2Q3FaDQptTU5kc0R4TWUwQS92REpPbDFCU3ZQM1FBMXAvQnRkUU5vYUdqbDVQY3NvclJjSW1mbzEzem9aNkk3Q0Mybm9vDQpoQjhyTW1GMlp2VXpaQ25iNDhlZlU3d01wR1czbjJIeEJZbUxSYnpYaW9hUzJsOE4wcnJWQ1U4MjVWMkhSZzlmDQpNSEVZYjZ6T0QwaDR4VlJ1Y3RoZUliVTFZN2VMUzFJL25JeDNQRGZ1c0lzMFA1aHBNdEtncEovNHpiU1gxcVlYDQplamIxbkdBdVZsbVJwUjh5ekpvRTVRbVlkV2tFVWw2NzB4VWNBN2QvQ0VqYWJ6OG56bGwxMmFDQ2dOOEg3STNIDQpTSjAvcm8vWGh5czd5Z2Q1V294MXhPVzlaQTFPNUVSNnJ2TG5WUXVMYUZkeElVOUswSFRBbTJzY1VYS1h0YTJDDQp4aFNxdmRkSDdUSVR3VGVnTG00MWswVDZrdzlXMGd6dUl2OU1nZnhzLzVjakZzSkQrYUtIUTkzcUNYN3Z4YjdSDQp3YUxxUFZiZUg3UDZJVWZvZkhzanp0blVHNTc0NGx0eFVMZkRSVjUyYkhWZFEwdDVYYWZIdjVRalJUQkpKRWY3DQpCb1o1eEpmWTdhOHpSNFNJTjRUaXBzUGFaK3Bzcy9oekZkcHM0YWNqY00wdWNiSkYxWUxQWGRqVHZBYmdvdlNEDQpQS2RZalgzcHdCNVIwdjlneXFINXdRS0NBUUVBN2F0bW9IWFRITllqam1kZ0o2cGJUY3dDUE83UXV5Z3E4UElqDQprSEE0UkEzWGc5cG5JM3R2RkpvYUx6V0hBbnM4MWxvTldlaUVTcnZGcktTY04wZVR0SHdmUnp3bVl2ZXZpeUJ3DQpKNmpXNEh3dnMxWThscjV5dU4yYnp4Rk9HRjZKdjl0UmI2L3d2bkRvM3daVHowZjVueGFFbzZPbzlKWkN2eHFNDQprRkdtb2VRanlpNWJEMGpQNUlwelQ3SzI1ckUwOVNYd3pUSVBHQW1ZVkJ5RDFRRkRHZm9pMFJHRFpHZG1kMHBGDQoyd0U0N1JJREZCSkErU29Tb1lDcTZmWjhsajg0TTdock9oYXZGK25pb3VZY1JCUmIrUHdUTnhDSlpQTEgydE4wDQpVQjRBWTF3emtBcnhkS3RBNnBlRFhaVkx0S05idVoraXdXSnRZM2NZZHZkbXovbkRzd0tDQVFFQTQrOEFnWURODQo4Mm9mSk81OGh4SWRnU2lqdHhXbUJ3aWhpcnFEQ0RyR01Dc01ueDVVclZoMVZCL1c4YkFqL2NvTFlBR0h4OGtODQpSWnhUTGRjTjRBOVRTWFk0MFI0NFZVWmJkRExWOEFQMGhQU1daR09KaXZOVU5pSktNdUpWdVpUKzhEb1ZyeitlDQpFOStNY3Q3YjRYT0psN2VKZUtjM1E4dkxlNC8zY09IS21PTnEyVHQ4cTIwTjh3VUdJcUI3N3JpMWR2Sjk4S1hGDQo3K1g2dDI4ZnY3d1Y2bkFML3lmeXc4VldlRGE0cStkRng0TWk5cVBZNjBPQ1p6ai9QTW16ZUpXUFMxVkhob3l5DQpoVXVqNkpnSnJNNTNYUHBheWxlaWtlR1lFek5GTmt1WjhtK0FSdkNRb2pyUzdCai9kWUptMXZPeExJb1R3KzhBDQpkcEdqL0t3K0pZNzUvUUtDQVFCQ1BPZlFScVk4dmkyUXJaenQwUnU3TmVWVnlCVWlaQko3cm5CYysvbWlkZDBmDQpvVW5uYUtwUHFwY3JteFp5aVpndUFWRUJRcjFEK3NzZno0eStGMVBDRkdtL043TlhGOEt6MnFtSFZCWDI0SVdHDQp6THo4SWozazZkWlh3bkhxZHNhYlV1dUNYaDJSWmZSdzI5bVZ4bkI2ZHhNbWJDRlZjVjlPMVg1aFpuQXpaRnJaDQpLVXcxbVV4ZlhIckF0b1VsRERRL01vREhIM0YzZUkwY3ZBbTkzcWt0M3ptKzNNdXF1dXFpeW05bmx4S2ZkOHFsDQoyR1NGVE1WK2YxYWkrQkJHNjMybFpIdDE2QWFLZXFPd1ZNT0I4YzZrT05TK0h2eTd4cklPZWFwTC9lQ0wwSkdLDQpUcEoydXBmUUNjUVIyOThLakJDdlRoOVZHREoyYXlYRldqUXNPR2JqQW9JQkFRQ0U5L0I3bkFDSmQrY2pURjBwDQpEdEJYZ0xYQklNZnlZbjZheDZPWk1YQmN1VUJyc3U0REVnK2dPOUxRdThqRFRSTEZ0eDdXMWRzQU9PbnRXLytrDQpMa3lRRm4rZXZ0cHVKTlZGUEVMQitneXpZMXc0eERpQTd1SzVrZGRuUjlKcXFSandXM0k3QWduZDNoTzVEM21HDQpWRGg0WVlHNCtST3NZVDhibmlqam1WVHZTL3dSTGpyVVpwSTBxMEdoQWE1SzNVWS9WY2RTaytLY3lMVXlQWWx2DQorUEZ3Q2wxMVJJREM1R1JGVE9iK29iUjdaMjBHSlI5dVg3dTdLK3o2TVZDWmorWkFORWU5bm1hbWpESGFocGRlDQpVRFFoOFlyMWI1cFBNQ1BmVDVHWTB4SEQ5SGdJNmwzMXhnczE0SDltdGVQNGtjRlNFbHJsZW8veW01UG0yelNHDQpCSnFoQW9JQkFBOE42WU40SDBvQzJibGtNQlBOUlNERU1ybkFjbmNFcGhUT0tVOHg0WVAxMHR3MXFBY2lNaU9FDQpCSnljblJpQzFEUGVoaHVab3VNSnN4eEdmNE1QR1NYaVdlRVdlbW5NU2ZzZVNVS1FVRWFZUnYvaGZrQzJ2ZXl5DQpWSGE0MGpGSHhWNkRRY1JJRHBEdjFBTGd4OE9WNFlaTGFBYVhuc2ZVa25JalFTaDF2d0EzQTlmSGdITnY1NHJMDQpyU1liaWhubXROeEpDdXhZM0J1bFY5aCtHOVNoMXpxR3lQaTVZMzJ1TjFPRXRydVpCUmE1eEFuZVhPVWNPNC9RDQo0Qm1DdnFnQkpESDIwUHp5OStSZjZCQVB6WnFNbkR2NU9xTStDYjBxTEJoV2JkdWFaY24wS2tocFkxLytWdEJhDQpKTnY4a1E0b1hrOENkdkFyVXRybmZJWmJYTTdBODg0PQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0K sensorconnect: cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGRVRDQ0F2bWdBd0lCQWdJVVJQY2JLbGJFUmRzSTlqZHUyOW9Gc25uUEMrMHdEUVlKS29aSWh2Y05BUUVMDQpCUUF3R0RFV01CUUdBMVVFQXd3TmMyVnVjMjl5WTI5dWJtVmpkREFlRncweU1qRXhNamd3T1RRMk1UVmFGdzB6DQpNakV3TURZd09UUTJNVFZhTUJneEZqQVVCZ05WQkFNTURYTmxibk52Y21OdmJtNWxZM1F3Z2dJaU1BMEdDU3FHDQpTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDZFdhVUMySGttNjBFVHo3RzBwWEFrc3N1WXdMMmZIUXQyDQpUUlBLVmN2d1hERURGeWp4ajROZlh1SmYxaHZWaWoxNHdHbDhjVExWZlV0UWk5dENSQ292S3ZpWGJDZzN6aDBrDQpXcGltRkZ0eFZhamhaSmxYRHpqSXZRR2EwZ0hqQXlhMGN5MUVjTzFoOHdRTVljMldaQXAybjFmc3F5cWJaVWhHDQpOZ0psS0NFZnAyTUFQZWpVa1hiSFdyZWNhYmRpOHZiV1ROQVNoVkM0QkZRT3ViSUsxNmVJYTJiQmhRMWI0bkx5DQp4NkdtSEZOeFF0aCt2dWc0cTlOM3V4Qk85L2lLangyNmhKMTdoaGI5eGhJRFU4Y1dGMFFMV0Z1N0lKU055dnB4DQpoZmcyNFMyMlh1S1dWMlEzV1M5NWdNYUxab3pyWVZRSWV5M3RvU1RSbUEvSW5Zd2VrL0MwZUhkUlFtYXQzOGpEDQpvMzhhbnV1YVZIOFE4d0RNUDh3STRvdFJwUC9ldWhOaXBBcEkweUcyZnB5UTJEVGNPUjNlOGluaFVmV0U4VWQwDQpSQmEvTXozb2VKZGpLdVIwMVgvMi92KzhwUENmV0lxc3owVEhBcVpCWmRzcy9abHFZZnZUYk5XNUdMRzZGOGwrDQpjcEVneUdhdG05cXViL29JRktHU0lRbGVFUEJwYS8rQkZtazVPN1haVWR5SFRCSmZXVjVLazdobFB6d3NkSENkDQpHUTlNQi84NWNhR2FwbXhNSlczNTVoUHUxQWNOQjlYUEc5ZXhwT3VlcUJXdEsxcFlFRGttVVZuMDI4eW4xYm81DQpoRjJyVjZpMU0reDhGNzJ0MTVrY01LVzhQdVhKUjR2Ky9LNU5oRVUxS1dlSzhqa1lQZEJ5Y1RjaWFrNzNBMFRTDQp2bTN5eUFBQU9RSURBUUFCbzFNd1VUQWRCZ05WSFE0RUZnUVVSR1AwUGRNTUxQTE1xMHNYYlJiUUpFUFhNUEV3DQpId1lEVlIwakJCZ3dGb0FVUkdQMFBkTU1MUExNcTBzWGJSYlFKRVBYTVBFd0R3WURWUjBUQVFIL0JBVXdBd0VCDQovekFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBRjZSNng2dStUeFRnNG0vMk5uWUJTMG9Id2hyTHZZWjhCMll4DQo3QVZTcU9yVTczcnh6WXVJeFgyVWVPQit5MHBzc0l3ZmI5YzVmMlY1aFFoZFI5Y21UMXVNbWJVcTA5T01nUlNBDQpxYnZIcys4NHE2a2V5eGpHSUpEZnUrR0toZ1MrMTRzSDVlTERYTmJCQVErOVNzZHl3UHQ0L3V5Z3BpNVdvOUpuDQovaWRXNm5MenlHMWFLdWh2Y05XUWtiVnIyYTdVR005cHQxMnZReGU3SmNaL3QyOG5RQTB1dm9tVnBlYjBxZnpqDQo3cDgvL3R2d3VnbURHVzM1QWlVaTRabWYvc1RoT2UrZG1rZERZdDFseU8rSkFMZFp4d3ZrREtoU1pFNWtxOC9vDQpzampZUUZka29ubHErUkZuMHBEOVp4aU44TzNmRUgyejFydmt0T1F4T2tXMWV6MnhZb2lzNU9hR2pSSGcrK084DQppUGdmNnp2YW9MYnQyWWxzeGhoKzdDcHdIczR5V1dkV2N2WVRlUndlTjBHbHh2b3ZEN2ZQa1ExR3plZ3prRlVSDQp3NjY3SVJ4ZmExSnYxT3Y0cjc1d1F1RHJtYWI0aEpWdnFIK0dqODRDQUhQN1RackZuTFNVS2l0VVJXUDgwNm9tDQpwMlo1S2ZQR09yNWRQU3NZUStYTHYvUlNKTm5pU0V5aVBxVGhHQUdvR2xCNkNjWXhqRjlRZ1VYeXVTWHhJUjJwDQpNdG1WQktVZDY1QVg1c05yQnJyYkowajZSQnhMSERLQmQzWFIzeWZsd3N1WTZQU3pKUEg5K0tCdTl6MlViMkg0DQpXVGVHaUFvUUt2bVFxc1RDRGphdWR3elp6RlpQdHcrdXJESEtoMm5ibHBxK0lqQjJITjcvMUt0OENTcm1vL01xDQpkOW90dEVRPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ0K key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUkFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTNHdnZ2txQWdFQUFvSUNBUUNkV2FVQzJIa202MEVUDQp6N0cwcFhBa3NzdVl3TDJmSFF0MlRSUEtWY3Z3WERFREZ5anhqNE5mWHVKZjFodlZpajE0d0dsOGNUTFZmVXRRDQppOXRDUkNvdkt2aVhiQ2czemgwa1dwaW1GRnR4VmFqaFpKbFhEempJdlFHYTBnSGpBeWEwY3kxRWNPMWg4d1FNDQpZYzJXWkFwMm4xZnNxeXFiWlVoR05nSmxLQ0VmcDJNQVBlalVrWGJIV3JlY2FiZGk4dmJXVE5BU2hWQzRCRlFPDQp1YklLMTZlSWEyYkJoUTFiNG5MeXg2R21IRk54UXRoK3Z1ZzRxOU4zdXhCTzkvaUtqeDI2aEoxN2hoYjl4aElEDQpVOGNXRjBRTFdGdTdJSlNOeXZweGhmZzI0UzIyWHVLV1YyUTNXUzk1Z01hTFpvenJZVlFJZXkzdG9TVFJtQS9JDQpuWXdlay9DMGVIZFJRbWF0MzhqRG8zOGFudXVhVkg4UTh3RE1QOHdJNG90UnBQL2V1aE5pcEFwSTB5RzJmcHlRDQoyRFRjT1IzZThpbmhVZldFOFVkMFJCYS9NejNvZUpkakt1UjAxWC8yL3YrOHBQQ2ZXSXFzejBUSEFxWkJaZHNzDQovWmxxWWZ2VGJOVzVHTEc2RjhsK2NwRWd5R2F0bTlxdWIvb0lGS0dTSVFsZUVQQnBhLytCRm1rNU83WFpVZHlIDQpUQkpmV1Y1S2s3aGxQendzZEhDZEdROU1CLzg1Y2FHYXBteE1KVzM1NWhQdTFBY05COVhQRzlleHBPdWVxQld0DQpLMXBZRURrbVVWbjAyOHluMWJvNWhGMnJWNmkxTSt4OEY3MnQxNWtjTUtXOFB1WEpSNHYrL0s1TmhFVTFLV2VLDQo4amtZUGRCeWNUY2lhazczQTBUU3ZtM3l5QUFBT1FJREFRQUJBb0lDQUVwTlFZbGxkVmcyY09XTkJ1bzUwUW5UDQpVQ2JTcFBnVXZBdmgrNzFvNUVPZEZSdlRmT2NNa01taFFaNWx1WUVOcFZkMjdKanh6MEpXeHhEQzZnZVJycVhWDQpVY3dYSzZxbWJzWnk3WEJIWHFMWEEwZGp2TEVLcEJMT2hZcDVMcURuSlFqQzlwWkNDU1plbmdQR3oxRDc3cUR6DQpQNDZuaVJnV0xKblMrVENSVVlyai9QRHBTeC9Oak53NGIwbXg5Z0lJbnh5MDZ2QkQrY2piYW1JRnVCZzhtNFRrDQp5b0lKZFRSMWF6aFBvbnFSRjZuOUdjUklHOXBlOFIyeHZOSzliNlRtVGZCOG5PenVkYjdpSURGb0J6UGNTcXBjDQp6L3crTjBmNW1HZXhEblBEdzFWQjJ4ZUpMdTZmODdZWlpDZ0JoZnZFV3UwaVZaN0hvRjVFd3ZkRnhodk9XalB3DQpra1EvL3YvSkJ6TmpYd3hvMytEa0hyUlZFMDVUNzF4RkZ2V1RSR1hmRlYwOFFGSkxOYkU3T2NBKythTnJhSXVCDQpMODlBMytiU2ViQ0ZNck43bmpyOEhmVkpXR1dvRFd0ditTNExTNzBHTE1WT2pDR2VBQW82QkNraksyY3FIZlAyDQpOT0U1OWhvYm4wdy9HWjErcHZuYnVyNEVkSWtGa1pSdHBtTVlKeXorRzJYazEySzJiaUZINXBrd3psa2RZdlUrDQp2cDdPNjRLbjJmMzd4VlQ5R2h1UWRVbE1vOE0wZ212MDlQU3RXNUxFU1RsZS9mVnlKOElPckdqL0YyMytGWDdMDQpod1RadGNxeW1wcXVlODl2SEVQblZQS3V0cTYzWGE2QjBvTlNNYmJFelY4VnQzd1pESVBFRXJibmZEVG1BQ2xEDQorSG5TNkc4OHVHMEZTaXJUQ1FJdEFvSUJBUURSYlBNZnpGelY5YkZmcTd5MHlqRU1hRmd1ZTBWVnhvdVhGMWliDQozeVE5Wm0wYXJPRUlxeWV6cm01VnJDamFqZk52N1Y3bEE5T3BSc3R5QzROM21GcnVrSzRwVjJwVGJRa2F3Vkd2DQp2Q3FZZzR2RllWbTBiM2h2eEcvK29FbFpvV2RNQU1SVklZNm93YXVzMVcweHRrcDB1Q1NVbVorK2tFUG5QWFVTDQpuc2MrSENWc3cvcDFTU2tnTXVoMFdmRStXdUQ0Q24xdWJHenM0QnlEOFh5QVpzMDFSSlFsc1p3aVp4ZUN3UlJyDQpRbk4wZXgxWnBWKzUrcVUxdnBLUFdtSGRiYnlpdmRucmZFQ3RPSlBTSzhEK01RVVpBVDRCOXZ5UytPdGs1OUlpDQpBOUJwcmtzZVppc2NoQjQxZHU2UU5lQWoxa01PN1R6aGZ6MGw0b3dqbm9ybEJSSExBb0lCQVFEQVYrM3R4Q0ptDQpRaDB3RTRjazFnTVVGODlZSm9BMkw2ME9BM0RCNTRSSWxXV3h3T0hxMXpUa0drbTIwdFU2SmZJSGlsYkswdmpYDQpURHdBSW9GMDhEQWlnaDNsSjdLK21kNm1vclc4RWhEYkMreEdub3IrVHF4YkE4c3IvRzFJRXJPaHc0Z0FrNFR6DQpGYkJLWVJNV3kvcXJSMGttYlA1eFhHUjFwY0NuVjdoOHI1bE9JTFFOUEdmZ3kyTUtIbGduUFRKckhVTHIyY2t1DQpJdlJ0cmlOS1d2OERYbjNZdW4yRUdlb3huZDVhUFdvYVFld0VtRWVUbCtmaGxMNHVDc29SK1lYcU9JbXVWb0VsDQpiMWpGcDhscklaVVhhYWlFb1FScmZsbWRjMDVvVVJGMHBwRzhoc1hveVkvYXg3YVlpS1dNb1N5SGFIOUphVDJPDQptaWdkb0JSZVp5V0xBb0lCQVFDY3N3V3puRWsyZXZFdUlhVkFMUzNJRitjcldHZEh5Qmk0ZytwMEx1SEI0M3J0DQpnNytacWQ4NkRlRld6MHQrUk1xS3pEUzk3VUFabi9Rb01EODlaRTFkeGZuYXl5S3VxNTR0VzhzUVVCNGJJZ3FhDQpOTDVYU1RUM2hDYzhnWmlBclVsS1VDU1hnbFZwSmdpYmVOS01hTmFMUVNGMTR3RHBLSzcyUGtEMEhzUDhVRGtjDQppZ05FY09xSndpMjJxWG5kNjBmN3NIV3NBd3I1cnJNSGN0QnlqdmtxeTFhQ1ljUHU1ZTVza3FZQm42WWQyT1RjDQpKK1pabFJhN0FRNU9ueFV0QnFnbnFTQitsK2tZODRWL3MrZGpDekRDUmZDc3JhN05GZDJrRWVWa09EQmdjdDZZDQpMMkJBcFFhcGdJVCtlS0Z1anlwNzU3MHZDUEtxL3psV2laRnB6WUpEQW9JQkFRQzFmd05MbGdUanUwVXhoV3ZEDQp6WkpRRm51WDhaU1FEUUxlTTA3bUdlR1FZREQ2djBndXdtM3RSQVVFMkFOT2dGblcxYW82YjBOU1hXUk11RUt5DQpKcWMxR05TKzFHdnRRT0tCR1E0bDdtSXJZQi9QTDNGMnNLUWdxZjdBZmN4Yzh4Qy85dkxSb0dJV3d3TjczQWdZDQpQZGhHWU5qY3dvS0NVNjJUK2hsRmp4Zk55Q0VBUVFuRlo1ZVozakdSYmJxL0pCYjhUanRFdEZnTENmN2R0REVtDQp5NkRRL0F3Q1EwK0hKTEVCcXJjVExkcDk5bkNRa1dVUkY0aytLbzRlZ2gzVlFrQWtHTCtLVzZRM3Y4N2pqQVVhDQo2ekIxVEVVeENZTlRMNEcrZWZ5bG9NRzQ4aWlZM2cvSUx0Sm9ub1ZsZjZPL2hLS3hEMkQwMDdLN2FpbXFjdEJsDQptQzByQW9JQkFRQ3JDcmV4VGJ2bGhENlpTMHNqSUg1ejFCY0lGbWtJZWZGMEdqNGRTc3JDYm0rYmtqaDlpb0lhDQpCYmJxcGR2dFVxSGdqZXpPZjV1M3lhT09sYWs5L2tCblNER2FyNWJyLzZiV09qdnEyOXVxdXdiSElIVHFOK1N1DQpkZDlxYjZFaThtUnBFb2Z4NzVRRTlKcnJmM1pHam5BbFBadzRXTWRZOFZBZDl2dlRiaVNNU3YvczFzdWdqSytiDQpKMEE3RjdmZGk4SWlvUkhKVTZqVVArSFBKZjl3MDlkVE5oTy9GWEtKazNzR0d4V0NXbmxUMldQU3grNk9iVW9xDQptUms3eDRvN1ZPNkNDaFhTRUk4TGlQSEsrVnNSa1l1T2t4VDIyM2tEUzFQZExqdGtFa2V2aHlESGx1dnpHSktLDQozOXR6QWFib1N4L09NL29hUWJlR2s2K1QrYTFSaHF3WQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0K iotsensorsmqtt: cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGRXpDQ0F2dWdBd0lCQWdJVWFDck5iTnZ6eXE1NU9XaU5hb0IrY0tyVUlkc3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3R1RFWE1CVUdBMVVFQXd3T2FXOTBjMlZ1YzI5eWMyMXhkSFF3SGhjTk1qSXhNVEk0TURrME5qSTBXaGNODQpNekl4TURBMk1EazBOakkwV2pBWk1SY3dGUVlEVlFRRERBNXBiM1J6Wlc1emIzSnpiWEYwZERDQ0FpSXdEUVlKDQpLb1pJaHZjTkFRRUJCUUFEZ2dJUEFEQ0NBZ29DZ2dJQkFOazZlOWtBdU5FaEwwNWY1NmNvTDg0Tk9Ob09YZk0rDQpkeEd1RlZGeFIzVzlSL2dhck9aNDNna21nZ2Q3WDNkcmNPZDVBM2tDREJ4MEhIejdRR1I0Y29SZm02VGpUZytFDQpYYUU4ZGg3UnE4SWpmbVlMWXF0b1RKcUdvYnZhZkJjb20wcm1wZnpnSEhiNVJuUjUyeWJPbmhNeW1vQ3FjNlJZDQpmcmVsK1R4Z2ViQy9tQlluZ0lFUlZsVDRqVDlQWlQ0b0h0UnFvR2srSkVWZGFwbFJLSG9MaW40ZmNLWGVaeERmDQpVZXd5a0trN2ppY0cxYmNGRGJqK3p1WUl1S1EyK2UzYVdxdDU0S2FuVXpHa3pKVXRUbjhVOEpIK05uVHlyV3M3DQpPV25SeXNpVmhjaEd3Tk5rb0ZoRXVmZnNyeUVQM2FaWHNLSWN4ZFl3cmdqdGJUVjNORlpMYkkvQ0RjamtIY3lZDQo0MGdndi94ckZYcjhsekVEU0hMU3NkRlduL3J5N1c4anhBUkVENFVPVEtRZ3VqNStYL3A4Z3B3NGhFZDgzWWVRDQpYWlFEZ2hxRUdZak5PRG5kKzZIbFNlS2FkdHlsSHVXalhPckYxSUxiZ0ZMSjEyTHlMSWlZZ1RQTzVPdFRuSDdvDQpHTXhyaHJ5Rk5GQUNRakJ3dHdGRmorOVM3NG5iZVJjdkRvd2VJUFJabWZJbVJzQjFJbDdVL0gwYzN4amVMUHNKDQp0N1NJUEl6U0pHa1BORk9UMWtXR0Q5VTMzWmF0OVZCekVWY3NxbEZiWlRQT1o3NmJ0a3d0QkRCSzVQd0RTOGY1DQppS25RUUFlWFRiQ2Z1QWY0RVM4WUl5Y1c2ZEE3dlBCaWZZa0Y0NlRWWTA2Rno0ekdKMDJkRnhtNEtJR1FtM1pFDQpqSGdmYmZydHV6aEpBZ01CQUFHalV6QlJNQjBHQTFVZERnUVdCQlRMNk42Tmsvam0xSzhsUitKMHp1YVBwKzFsDQpiakFmQmdOVkhTTUVHREFXZ0JUTDZONk5rL2ptMUs4bFIrSjB6dWFQcCsxbGJqQVBCZ05WSFJNQkFmOEVCVEFEDQpBUUgvTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFERWtFcmxsSnVyUytTUkxPT1NBVk1TeU9nSEpJWllnY3JLDQpGWlJEa2M5TXF5STMrZEtnU1l5T0hjalhsb3ZEenYwWmozbWo3NFRZanhxZ01BRkc1SVJxNlZDZHFHQ3EwU2wwDQovTHFOZWJRRWwrSkRqZTJjSTM5TUJBa0QzVG1icENJR2RybXV2Nkh6YkdnZnRmeW9yT1JxV1VNTXRhemZRejg2DQpZRWl0R25NWHJyMC8rMUw2ejlGTml0VFlFNndJanRsR3BQSnlBY2d5dTBpZTZFMk8xZWlZSm5lSDJIMFkzeVhaDQpyZHhEbWQ5cjBrRDF5NzJoVkxPaDU5alIxZml4M3orNkc3b0Q2YUxYUFRPallHM0NXaElJS0djeFM3MjB0RUhzDQpyWnc4SWVwVm84V1FRdW1tZ2FPN3JuKzNqM2RVSWptRmd2Q3JNWE9BYWFiaHkyQ3JhYmJ6RDNIUWN3cE1IQjVCDQowUUhhODFiQ0kyeUNtWER1Um5LMTQ3RXo1Unh3MCsxZjA1Z2tsemUrckQ0K0FPbFJDZllKcTRkUnZITHJFRkRaDQp1eW1URERaajhWSFJkMFpwUFV4Skt3d3hkb3V6TmdaUlIrZWJ6NGRxSTdSOWh5OGxxY1NETjNCenZMaDl6bDV3DQpSQVcxQ3k4M3luR1lVNUJLalNTRVZhR3hUL2syK1JQOGRtSjF5ZDhWazJCTkpnZE5NbjBxTmovWitPbFlrWlZVDQo2VzJMR0xlcHVxOFdXdFVaQXVKb2xMMWtrZ0U4VVhoUG1mUDhGQm8xUkZNc3pXS0I3TnRPbWhKT01jdFhtWU91DQpYMXZwcG9QaUV5U3ZKNHNhdGxHNXFOVFFIVERMb3dzN0RrOEFZR0NleVJFN3RmaDZOV214VDFId1MyOFRseFM5DQpxc2h2VlVieTJRPT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg== key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUWdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTd3dnZ2tvQWdFQUFvSUNBUURaT252WkFMalJJUzlPDQpYK2VuS0MvT0RUamFEbDN6UG5jUnJoVlJjVWQxdlVmNEdxem1lTjRKSm9JSGUxOTNhM0RuZVFONUFnd2NkQng4DQorMEJrZUhLRVg1dWs0MDRQaEYyaFBIWWUwYXZDSTM1bUMyS3JhRXlhaHFHNzJud1hLSnRLNXFYODRCeDIrVVowDQplZHNtenA0VE1wcUFxbk9rV0g2M3BmazhZSG13djVnV0o0Q0JFVlpVK0kwL1QyVStLQjdVYXFCcFBpUkZYV3FaDQpVU2g2QzRwK0gzQ2wzbWNRMzFIc01wQ3BPNDRuQnRXM0JRMjQvczdtQ0xpa052bnQybHFyZWVDbXAxTXhwTXlWDQpMVTUvRlBDUi9qWjA4cTFyT3pscDBjcklsWVhJUnNEVFpLQllSTG4zN0s4aEQ5Mm1WN0NpSE1YV01LNEk3VzAxDQpkelJXUzJ5UHdnM0k1QjNNbU9OSUlMLzhheFY2L0pjeEEwaHkwckhSVnAvNjh1MXZJOFFFUkErRkRreWtJTG8rDQpmbC82ZklLY09JUkhmTjJIa0YyVUE0SWFoQm1JelRnNTNmdWg1VW5pbW5iY3BSN2xvMXpxeGRTQzI0QlN5ZGRpDQo4aXlJbUlFenp1VHJVNXgrNkJqTWE0YThoVFJRQWtJd2NMY0JSWS92VXUrSjIza1hMdzZNSGlEMFdabnlKa2JBDQpkU0plMVB4OUhOOFkzaXo3Q2JlMGlEeU0waVJwRHpSVGs5WkZoZy9WTjkyV3JmVlFjeEZYTEtwUlcyVXp6bWUrDQptN1pNTFFRd1N1VDhBMHZIK1lpcDBFQUhsMDJ3bjdnSCtCRXZHQ01uRnVuUU83endZbjJKQmVPazFXTk9oYytNDQp4aWROblJjWnVDaUJrSnQyUkl4NEgyMzY3YnM0U1FJREFRQUJBb0lDQURpS1VtWC9IQnZDeVc5YTR3N05GUFJLDQoyTHRZOWZjMEVRWFhDOUZ3N0txbW82N2VNcGFpYXhoeW4zR1hHUmdhTFA3eXJvYTJrN1JzUEdZRGQ1VXZESStMDQoyeFVsM05HSklGMnhRUVZ3aVlZMGV0ZlFxdFAyaDhuSXRSd1NHQzVtOFZTamlCeXpzSFQvR09tRU5oaDV1d2RBDQpLcHJHd3ViSjZlR2ZINm9wYWtNbyswcjQ2U2V1L1l1TVRpZG1ZUEcydTUrS1NVcGJWRkdCcVJkUzJuZzV2TWhyDQpJb1RweUdYSjJxYmgybWxTQ1FQN2NYRDdyY0N6QWVNNTdlVkFNZmxJMWtTL3FrdDJUZDhrQitQa01RUSt6UWNTDQo1ZFcydkpDbWo2RU5hL3lkZm43TWU3QUtCdm95bVQwQXEreXRGb0lQWFBnMUNRRmhGa3RZa1E1VGdwbmJjOXZVDQpXM0U5MEU2Z1ZqbXJjV3V0eFE1aXphU2RTS21lNWtkOGRlTVcwRlBBbzdyeGJ4ZG1OUkNtTGlob0tDMG5HaVRIDQpVKzlnd1NNVU9wNWZjZjRBTzczUkxiNU1QUWtGR1NRV3ZWNENwL1NkMllDaW53SSswWVg3RWQzY2EwUkZHY05xDQpTNk04cVVjZVhuMjZjQzJxRDFHQW13N2hMOXdrdjlNcE0vNjBoaC9pOUdOblRjcXdObXp5N1VOZU1LUlRrMnFtDQpya3o2WVlrS2RnTVIyT3FudFNOelljSDlUMGEyQUk5YTRhU0xpQWNaY2lQWEVVYmI5T3g4L1dVWWt5M3p5d3R6DQpZSHFWYXhsMWZCQ3N0V2tTUkUrcTc2a01qeElxS3dkUTc1RmR2MGkwK2V5NVBEdEl4bzVnU3NMczV0SDBZT3NTDQpsYzVUYmhsMFI2VmJIb3VSbDkySkFvSUJBUUR3cnFRTjArNzlQSldDOGQvV2RCVHFsU1d2ZGNHSUhnMzlsWlprDQp3T25PcENEQUdsZXoya3Y5U2xMQ2lPL0pZcFM1ODVkZGZaRG01K3kxZ3hRTnZYdGs5bElWVVRjR2wwSGtEUVhSDQpET1hYa0lLNWpscWxqcjhEOTl0VGpJOHdXaHpabXV3SUNYK01ZZElXeUJpVHhRVFlsdDZyTmZoTmo1MTVTUmY5DQpiTXNLT1JZSGNjUFdFdlpXWjZDYmc0ZXcyc1NqbC9qVHQrM05ZQTVyWCtwbTEyaFA4NW1JbjRHM0FseE9UTzlODQpXVFE0SFI1ZDF1NlI5L1prRW1UaXJnQnNaNEZZYUphdDdLOWhrY1B3dXZOMDQ3OGFybTlxL3FlYXh6NjdId0lEDQpBblBQUjc5cjdpbFFwSmFCZVFBM1VSMGNvOHJCUnVVL2dtUTV4SFJFYk03TE5HeGpBb0lCQVFEbkRiZno4MHVMDQpUMkllMnJPQ1puSko1VnZCSG82NFo0dDZkUHZTV09lbDM1S0VVVUJkRFE5YzM4OFFnUmFvRnc1M1FzSUFWTlNTDQorNUtRTEtCdjZRRFJLdFRmNEtMWXFZdWRGcmM0MVAwM3UwS3RWMWZCNklBcUFaejB5Qi9TSXRIY3VJVTMveDJlDQpjY3FRRmhMQmZGT29nVlg0VHdvcEJFREpQcGZyUGdiSzM4QktlUU1aeEZFK3ZxUzhXditKMDhTQ0plZEZsRjNFDQpRLzcxd0pBS1dzcmtWV0w3ekE5MVFnbms5UzczOTlQUHVJLzBQT3VxOXVuRG9XaG1rNDhJTHZXQnVEOHZodW5DDQoxVmFvcHBRMjNRMkpBblBXMFdwVGg2WEpDTkFBdGRQVFVDem5pTE1QeHlwenpEREd3a2JJKy9JeDJScEZyNDI2DQpyeU5NeXptRkE5cGpBb0lCQUFNNlpHcm5EOHFIdUgya0h0dHlmU0ZVVk1nUXJVTFZIRnp0VjdJTVFGYU1Md0JFDQptaTZJWEFLT3I2TjZVTFVEeEhqbUFuNjNnMjBGYVZCWjdMZnVkYXc1L1luWnFBSkhueE9lOVJnRHMwVjc0N1QzDQphdEhUbzA0N1VjN0NFTjJXSjlMbldBa1hqNFZqZm56ZHZDNm5NdFJ3MlpXMFNKdEp0TlArbmZyQkxjdjZUZ2hWDQpoMG5rd1RjUmRyNy9PWit1bjNxT1BFRWlzMmJReGdDOHJaa3BoSFdtRDhZY1ZaSU56dzBoelFmZGpXeS9QendFDQorUGd1T2pqSFltRUQ4bStCeCtOV3E4YXphUHJIQ0xpKzJTc1ZMdWY5dFBMYmJZWU83QkY0YmY5NlZmRk94Z3Q5DQppMEpRb3RBanZsUC9tNE5aMHd0YWx4S04vaWdrTVdjRmlwU0JKSDhDZ2dFQUJqMStuRjRUeWoxb253QzFIRzU3DQo0N2NJRlYwbjZaOFNTMHBoaXJyUDl0RGsraUhmcFNPM0tJRDY3SzB2MlhaVjg2NmY0clpuejFod0N1akpwSHdjDQpnNG11bWlWTkFLRURua2lBeGs0cVVKa0VJZjViNW1iTEgxZFB6K1NmeDJNZFcrSzM1bDFEaFlYNVBJNzhEckcyDQo2TFFsaUVGS092VmNjcEw0TTJoSGNxODhXRWFRYU4rK2VmMVlJYVlyaEtOdGlUNVEwclpCR2cza0V1c1NlTlVlDQo2YS9NcnBSQ1RwNXIrZjBOT2JFOXpUeGsxdW5XUzVYRGxuOERmTkc3YVRNcmVrZHBuWFQ5VnorL3lXcEdVbjBCDQo0cE5vWVlMaVprTWhuUjVaejhzWlgzbW8zTS82VmhEQStzT25CWmMxcGpQM3hKVGllc05WQnBlNFVsaWl3dzdwDQpsUUtDQVFFQXB3aWpkK3FQRGthc2F5TjEyV2dGWnJzOFpQOUd2b0pkMWtZdjJROGtTRmY0SFBvQmdMY1dmME5EDQo5OXc1Skw4dDA5cWhtZTVqdWxVY3pjSHdVZm9iSHkyT3BSRFIyb01pYU9WM3VzUzljREFoYjdTd0RML2oxYmg4DQozbHpuZUVLWTBmRjdJbXF4QlNDeTl3TDJRVVZ1WjRzTGR5dVB4ejNmN2dkRlA2V2QvS3YwT01GVXFPNVYwZ1ZsDQoxcmEzaHYwNDZEdWhJbzBucG13d3VnSkpwOHczSXdQeVMzM3QrS2Q4bXhyaHdCeEx1Z0kzZmlMdnB4ejVxb2xXDQpHdXRXUWxJMnQ2cER1RTlHcE5rL2F5Qm5KM3AzYWYxRE5KU1N2NTdXRlh2YytuYWR2YXZSdzBIUXJnYmt2WXpHDQpPU3Q1a0tUdHJJZ2hSL3JvaTZGUnRyUlFIQmJtclE9PQ0KLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQ0K packmlsimulator: cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGRlRDQ0F2MmdBd0lCQWdJVUhOSCtkMzhZTEF3NFJiK0ZEM3ljRnV2M0R1WXdEUVlKS29aSWh2Y05BUUVMDQpCUUF3R2pFWU1CWUdBMVVFQXd3UGNHRmphMjF4YzJsdGRXeGhkRzl5TUI0WERUSXlNVEV5T0RBNU5EWXpNbG9YDQpEVE15TVRBd05qQTVORFl6TWxvd0dqRVlNQllHQTFVRUF3d1BjR0ZqYTIxeGMybHRkV3hoZEc5eU1JSUNJakFODQpCZ2txaGtpRzl3MEJBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUEybHE0TFpZcktmWmJaNGlJTFRCaWhadXJZMjNhDQpFVFVST3ZKRG1JWWwyNmlzUml2SHV1MGJvSVJEM0g5Qk5EL2ZKWEpWZmxLYXVsK2pHTGE2a3R3SXFoeTBZUjBMDQpOWVY5WTY0bmhLeGl3SlN1MWZoemxYRUI0Q3U5SkRDVUt0aDlpdnNudm80ZHV2aFFlMTBGUkt6YlVCY3Vra0d3DQp3MWNTejNleWpLR0trdzRjc1JyN1AxdWdPaFA4eDVOZWtPempTZzJpbUFmOTBpcnlZUnBOdjNOSm8zMkM1OWNxDQoyYWFpZlZpcjhobEdYYi9rRFoyeEpLbTcrMTdUdmxoWUhyc3ZvdE13Qm5EQjhzRkxDZVRnbmxTcUpjamFmN3NQDQoxbFRnTHhMWU1RdHpHbm1IQmlmNzFscTR6OEJHK0E5TTZIRFhaZkd0VmdhTVFORXRFMkxhMCtFMmFONjV3S1FSDQo5VVRKbFhMOEhVQTJWWVRuV0U4RGNvQkp6VmhIdXcxbG5aY3F5bXYzWjB5YmRta2hwL0NXb05yUTd3ZzBsa1FLDQphRk5OSmRDa2pkaUErMUxDa1pWZS9UdHdTNk4zNXN6dld5NnpTZEFaaUsrZ0FadHV1MldyckF3T2FBYUx0aWM0DQphc1k3SjlwL09TWnNwMjh1TVBXMzlsakhYbG1vR1phTlRGQnVIbm9LOXFaRmFlajQ0eWhKQnBQTVdHd1k3MXNLDQp6bnptZTQ5SW9wVzlUdytDb0cxRWxCdVUvRk43WjVKbll3NWpUaE5LWUhJcHJGT3dTWlRLUmVHdThmQkJySVRSDQpObEpLSE9TYnBqazVjM0VLT2E4NlRxaW9rMmxSRHBJcEtMc25iMUluWGs5V25VWEh6eHI3K3N0cFgyK3Jla2NxDQpweUdjMkIrcFVOZE5EQ01DQXdFQUFhTlRNRkV3SFFZRFZSME9CQllFRkdNdCtWNjdjRFhJUVlVR1RUMWYwMUZRDQovTnpLTUI4R0ExVWRJd1FZTUJhQUZHTXQrVjY3Y0RYSVFZVUdUVDFmMDFGUS9OektNQThHQTFVZEV3RUIvd1FGDQpNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFOakl0SjBUUmloSk01Sjk4Y1daNmkxNU9QSkkvbmFYDQp6RWNRZ3Fyc0kzVjB1YmNpcHE2citNTEhER2FBVElYR2dVaWQrNGJhSDVsNG95Q3hJR1BXL3VrcjFTSGNNVXhnDQp6WjJwM25nS01ac3h4Y3AxWFp6MVFUWXhDZm5XLzBSeUE0YkZhejRGcEpta25hMFc2NWlab0pZc1NuMHdhUTErDQpMQ1U3TlpmSE5TZ3JQU2wvSmQwOHM3azA5bnVXbER0MmFWWjdkRGlpcG9CSTh1N2JwcG0rZ29ZU1RnRVR3dGd4DQppZlIzNldHVXk2TWVJSzBGbktGOHM4eGxUTXJDaHdjOUM0bzdCNmRRbTRRTktVK3U1THBzTkZSWlI4RnQ0Tkx4DQpRY0F4UnJyM3VVQ1JqSytBVXNTN05IU0Y4TnVWVE8xd0VOcjErb25IeHpCM1hxWU9UUjVjLzd6L0JUK0F3b3BIDQp1NzRQUXd6NFZqM3N3T1JXSU1FUDBRMWFjUm5lMjZwdUhIUXh0WkpYbnZmWG5JdG15VmpudXhkeTNURXdHeXAvDQpLMERNL1cyQlpJRUZpeXk5eXdaYjg1K1JUdzBqdjBrNHR2enBnNUQ0QVJ6bXRXeTRLeEZsajBoanBFMHhYSkYwDQpvZFMwQ1A4Q0dtd3V5SW9LZGlnd0NBbExGM0Z6TjQvellDbEVkS0VqRzY2L1l4NjA2b29EMXFIM2dtZGpXeGhZDQovc0pmaVRGbjcxV3NTRFBxZ3NVRVl1ajJ0TG11V2xkTlhxR1ludzFQYnl5dDVYWUgydy9qTnZLTnRzaDdvZmJ1DQppRkNYeVE5WHQrbkhpUTZXNXZLdk5ZcGlZeHNHWitkcnZXOHpMUERuUXRFWWNTNGN0OEhBS2I4WUhZUDlpMjJFDQpmVjhnUkRPUERGT3YNCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg== key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTOHdnZ2tyQWdFQUFvSUNBUURhV3JndGxpc3A5bHRuDQppSWd0TUdLRm02dGpiZG9STlJFNjhrT1loaVhicUt4R0s4ZTY3UnVnaEVQY2YwRTBQOThsY2xWK1VwcTZYNk1ZDQp0cnFTM0FpcUhMUmhIUXMxaFgxanJpZUVyR0xBbEs3VitIT1ZjUUhnSzcwa01KUXEySDJLK3llK2poMjYrRkI3DQpYUVZFck50UUZ5NlNRYkREVnhMUGQ3S01vWXFURGh5eEd2cy9XNkE2RS96SGsxNlE3T05LRGFLWUIvM1NLdkpoDQpHazIvYzBtamZZTG4xeXJacHFKOVdLdnlHVVpkditRTm5iRWtxYnY3WHRPK1dGZ2V1eStpMHpBR2NNSHl3VXNKDQo1T0NlVktvbHlOcC91dy9XVk9BdkV0Z3hDM01hZVljR0ovdldXcmpQd0ViNEQwem9jTmRsOGExV0JveEEwUzBUDQpZdHJUNFRabzNybkFwQkgxUk1tVmN2d2RRRFpWaE9kWVR3TnlnRW5OV0VlN0RXV2RseXJLYS9kblRKdDJhU0duDQo4SmFnMnREdkNEU1dSQXBvVTAwbDBLU04ySUQ3VXNLUmxWNzlPM0JMbzNmbXpPOWJMck5KMEJtSXI2QUJtMjY3DQpaYXVzREE1b0JvdTJKemhxeGpzbjJuODVKbXluYnk0dzliZjJXTWRlV2FnWmxvMU1VRzRlZWdyMnBrVnA2UGpqDQpLRWtHazh4WWJCanZXd3JPZk9aN2owaWlsYjFQRDRLZ2JVU1VHNVQ4VTN0bmttZGpEbU5PRTBwZ2NpbXNVN0JKDQpsTXBGNGE3eDhFR3NoTkUyVWtvYzVKdW1PVGx6Y1FvNXJ6cE9xS2lUYVZFT2tpa291eWR2VWlkZVQxYWRSY2ZQDQpHdnY2eTJsZmI2dDZSeXFuSVp6WUg2bFExMDBNSXdJREFRQUJBb0lDQVFEVjhKVU1kVm9OWDBmbmhTcUh2Q1NMDQo3QjVjNlVFRUl3Nml4c1BjS1hQbWFMbUNkMXJXbDRLK0gxbXVMVERoMU1MNm1hK1NlYlVJYnJRS2Z0OEhEWGVmDQoxVWdXN3JJUTJwNGtrSG8vei9kaDRVdjhjZFl0MGUrWWlNSmxOd08xaHpCYWdBSk0va202NjVsUGhiQ252UVdVDQp6MkhlQTJjQnZjcThZL2NaT3gzZlA3QjFCbzZ0WVVUNElxVkZsZXJON0l3MS9tNFVyNS9OMEM1elhhWlhzc212DQoya1hzaWpGOTEzclZmWS9iUVZCa2dxTWJoQ29RVmczTkdQZzJRN0R6UzB3OUtOYWhPTkdPM0R4OWtUZFRhbmpiDQpWSlJoR2hOR1dScmVoSVEyYVpWNWx5RG9zenhZcGNMMkt0cGVLZitjcnhNYzIxS09PeFFvWGNyZ2Q3Y1lhazAzDQpXN1oxL2xITFBRQUtnTm42cUJad2FWeWJhR0czcVBRaVFRMTlKOXRIU3ZPNXhUTXViTytaSUJncFNSZWR0YXhTDQp2TzV4bm0xR0dERW9iUndhRkRSVzRTN05kdzRyRTVlYUdiVjYwY1h2eW9aT3U2dmpXODg4dkY3ektKVGYzeW1GDQpWWjZOOG82Z3VnZWRmY1l1RTRGaE8vK21tOXVmMHRQN1VOaVpqTW1EQmJYenlWazNYaWFBQTdTcWFYYlpYOWI4DQpUTmM3REE3MFhDN1RLK0ZwZU03TUVtNWIyN1UzTEhzaXBrcUdpNEIweEJkTG9HbjNGemxKWVN6ekNjb2IzK1drDQp5YlZyYTVPRlZGZ010R0duTU1lTXhlUU1NT0RwN2NFRGZJS3JNeVIrZmUwMkFhZS9WZjNXbzJGOTlLM0FCNFVJDQpyb01ockFRZkx1c0FsMjBTTkpsS2dRS0NBUUVBOGN2OFd6eUZMMWxENTRPb1g4SThHYjlGVjBKbm1oMXBDT3hZDQp4bUdpSnZMN0dRamNmaDZEYXliTkhmNzN2RnR3T1JMQmVUV1YrTmhKakZMbkVFS2cxTVRIK3RYcnQ2YVFQcFF2DQpLZExwSVVpM1V0VUNFVW40TEZUWGpDM0FqRkNJcU1PcUhZU1o3dFpVM3JRd3Z3bGV5K1pEU3JXK0MvOEc5M01wDQorNW5CMlhrUGJDTHhiSDRvazhLdFBxaFFaZi9GdmxRZlNxZVlIS3UxMHN2SGNXd0IyeGtzWCt3bkZQVHAzUmxzDQo2QmpFMFhycU5lTEozY1lrcWtJOU94aFpUejFhNE10UXJxQzk5b2tqSTRNUFVYRXQ3b21ScGRiME5yNXdMcjZSDQpZd3NLUC9Db2RPbHpVQyt6WGN4ZVljeGtyMnJKdVl1dmg3aCt2K2xnbDc5Sk90c1Jjd0tDQVFFQTV5NDM2aE9UDQo1K21WTklJMzJzbXpwUDR0aEJHYmg0TUZJZXlyZURYNjN3NEdmMXRaN1pPMnFraTBFT1Q2TUhTSmNOMGF6QVFPDQpIaFZkdzh4dW1WMThhL0xLRXgwTXVUK0xBVkVwSXR4bE9xSlZvSVEwOERMU3hNVkd0VDVxblNCMHV5TDZ3ejdZDQptdU9PNmwwNG54UFpFTjNPTk1pS1RuVXpQbmd4REFWQ1NuWDBMNldFa1FCL053Mk5oSlRhQUdGUHpBblZJMWM4DQpBamxuVFdHbERsK0o5V1ViU0N1V1BoaW05UE5sNnZvVXdWRWgzRlJ3QjlReHZwMUliYXdZeFFXb0tJblhlSjJUDQp2WUVtbktuT1lEeUJHVDk0MUUrK056L0k4aDJZN01kVCtYUDNaV0E3ZWFNNEs0aXQyeSs2SVFONjA0Z1I0Q21SDQp3N0FPWWFxTnNEU3VrUUtDQVFFQWdIcDZLZVI3aEZBek02WVNabWRuMWVwN0pzV0RGVEhCYU50a3hHeUdZNW5DDQpjR2Z6K1JPdmt0VDRNcE1UQWNPNFdxc3JvSU1ub0NVVTEzb0ppdXRNV0NJRGZMWUVYUDRsTVFzK0VFUWdXZTR3DQpjdFA2R0VPc21hbXZLcTM0M05YQjk2S1lGcjBwcWUyN0JPYkw3QVpIbDZKUGFUZ3V0bU1aU1l5bzV5YXBDU3c1DQpWS1V3a1F4cjlTK0JMSVQweTIzZm5hVkhSenpNSjVmWnNodFRhMklQam1MTzRGMHoydi9UOEFhZGhxbjZrckIwDQpHSlBiM1hwMmF2MXRXYVF6ZUZaS25wMkp6bkJjMzgyNG5ScjduYk84eXozUDVVWFZWKzFTNEpPajN2T3p5NHZODQpodW13dXcvTmgrNmF5KzUySlh0aG1yU3RYVGxjS0E4U295OGg4eU1LSHdLQ0FRRUEzdmZ6MDk4SUUzQjFpTXhqDQpaTENQaEgzbWxtK0pDejB4OFJOY0dqZ3QrMzZDZzhrdXhmWm5BbnZXdUVpd2laV01qZitpL2N5WGRTcDBZZ2xGDQpUc1FjNGR5c1M1MEVEWk9jMVN0Yk9wVkpTVEVTMXh0TUY3TmRGNDJSOGZMK1R3ZmpyaTVCbjVoNHY0TGs3MlB6DQozWEgrTk1kSlFCMS9UOGE0SXZNM2t2bHJnM2VhaVczaG14ellsZGVMZTZrNVRZNk5zU1Iybm54ZmsyR2NJY1VnDQp0ZWt0blRIa0MwcUd3T056KytMWmxMV1kyUThRVW5wYUJ5TUF5M0RWVDNuaDlmekx3RFdhVFdubCthdWIreFBIDQp5WWZ4bDlGaEQ1ek53R25UdkxrUktxWGhkMElEQlpLNEtreGpPNUc2NVNGMktxczVodFhCTCt2SCsrNU5JS09uDQp2cUJCRVFLQ0FRRUE1LzJLYVJ5d2FmZlFKSmpnL01PcVJaQ2ZXdUY2SGJhWFFZeGl2ZE1wRi9pS1hCakZDdHpLDQpTV1pZMThrS20weXJCc0Y0RjlMNkR5Q0ZhUHg1ZlhkQUVHNGZwMmN1a2V0S0llWWkyYTdvOXp1SWs3bmludmpHDQpwUEkyUlBqTEgvMWFXd1ROSHZ2bVBqVUVIQ0tXTnpPTVlvc3huZ0xpK2VLenhSM2p0eHJKN09zbGZSM3lENTNXDQpFVjdoWUhsU3orY1lqdnJVN01hRmI4endkYjVBNFlXL3BCRU84N2VSOXNmL2xZb3NaSTRkYmlYQnd2aUs1R1VMDQpmWjRETmlUZlduWnBqQm9XcEw5V3hINUV2ZUVzS1VpOFpuM0Qxb3I0VklaYVE2V2xNbXFWSkREc094eTlzQlN3DQpwWGhSWEg5NFpDcEZoMXJkWjZ6MlRRWk1xOUdqVGUzRENBPT0NCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0NCg== node_red: cert: | LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGQnpDQ0F1K2dBd0lCQWdJVUZaTENOYjFyRzZMK1hYVkpoVGFFZFdIVnRtRXdEUVlKS29aSWh2Y05BUUVMDQpCUUF3RXpFUk1BOEdBMVVFQXd3SWJtOWtaVjl5WldRd0hoY05Nakl4TVRJNE1EazBOalF6V2hjTk16SXhNREEyDQpNRGswTmpReldqQVRNUkV3RHdZRFZRUUREQWh1YjJSbFgzSmxaRENDQWlJd0RRWUpLb1pJaHZjTkFRRUJCUUFEDQpnZ0lQQURDQ0Fnb0NnZ0lCQUxlWVNMR0k1UXBlWC9XK3JpMHZqd3Fva2JwTkcyd2ptcU11N0hSYW5TaE1oQjQ2DQpZWEZjOEdVV3p2UTdrWkFBZEROTElvTGFTczJZMFpPVG9KOUpVbUYxeUVCUzcvRnJ0NmsyTGJLZndSVjhHV0FyDQpDZjg5SURJT1RGSmJmTW1Bakg5YmRPaGN5RjhIeS9nUWZzU3JKYUFVS2xFOWw2WFdNdTNoVU9PSXp2eTJBR0UrDQplb2FSbDVjcnViVmhjYWpSeTlJWjMxMkJDa21VaFBHYnpORlJzOXVoVWpWQ0pOcWd0MDJWQW4rb1NOa0FFSDh0DQpVZ0Q3TG1VdkcwVG90a2NaUnpVekppbTVyYlZrcGtva3B5bjZMZjZkU281amYvMFBYZTJhL3Vnc0hPaDdpazdRDQphTk9hZ1c4OGhBeFZIM3lPMEZkMmVncHUwcmg2MjdUTXBhUVBiZkQxTlJXOFN3R3pzeFQ1RlZwOHJZcldUVGx0DQpnOU1wdTBQV0tuc1NiRitkWEdjd0JVYTcyVFM3ZVJDcTFEMm1WMHY3MjlMQ1BuOTdBYjIzc3pvSmRJZmE2RFI3DQoreG5nNkdwRWZUNmhCSlpwZ0JVOWhLU1ozVURBbzV5N1hTZXdDZ0dzL0huWkhUKzU5MkEwbjFEVGNWQ09JRTNsDQpGc0xncVR0OFpnU2daUGpVWFd0WnBDVEluOElOY2czd0xoNVhOVERSdGJkd29XeDMzVkt4WFFPNlc5KzFqU1NrDQpJR0FSaUJCYzdBRUVnUzdTeENMbEhKZXJPNDdFemZra0JRU0Z0SEVUcTZpYkRMVnZCNDdpbjdJby9IWTFza0g4DQpiTW41UHIzWmRFb21Fbmh2VHlHbEwxODZHVHgzaS9DcncrWjlpQXdQZW9VQ1BLRUIrZkdLUGg3a1JCeFhBZ01CDQpBQUdqVXpCUk1CMEdBMVVkRGdRV0JCUWo2L202VENOQkZzZ1dGWHAzMTI4dXZRRTNJREFmQmdOVkhTTUVHREFXDQpnQlFqNi9tNlRDTkJGc2dXRlhwMzEyOHV2UUUzSURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUEwR0NTcUdTSWIzDQpEUUVCQ3dVQUE0SUNBUUJpY21QcmpMb2RwTmpQMHhiMWE1K2NOYjNXbUZJWXFVSkE2UmkycHNBNzBpNmo0S0dHDQpxRDY2d3IyWVdsOE4vVFJXL2pLYVJtREtHalhZWElFSTNMZXZyaE1aaytMMnBoTDloWnVlK3A0R2NsOGhpLzVsDQpZcWFGWUN1N3BwUm1tTTFlcFJWanYzRmwvTXpRNVltWWRUclpwN3V3NmduOHdqR2o5cm1QTFdHVjFCMTh2VXN6DQpibGRBRVJSTkF4Y3FEZVhpMnRFczRhRHdQNGVNWjZ2MXNoMmIwaVVmTCtLWTM0MExvOHNwa3BWR0xDeVgwSVlODQpyK1FmdzVCRVVOV2htTUpnMUFTZUQ0eUlyWFdoQWJacktXaGIxbHIvdUV2dXJsSGEybTMrK0pNODNtUWkzL1EyDQpaL05GaUpCOGFVbXA3T3ZTVE1OTHk5YXRjWDI1OEpOOWpiSUxPUjFNWVIxMjYvTEYxcHh3ekI3NEhjS1FhUCtqDQp6VlpXV1BmbU5ubmVoOVZKVjZkVDZPeDVuMlBvOTJUTWN5Z2hQZWhMbTlXaHkvYzdkUnYwWEVyb0h0UUxlRnl6DQo4TzBWMW9TUFJiZzUyV2E0cFFXczRubUFYRmhCOEt4bTFVNitMR1c3ZnUyNmdDeXhUUXJBYlFlRXEwL2xvZXlZDQp5ZERNZnFmbDZ5Yi9Gc0t5NlU4YnN3UDg2djhlUGErc2ZtZ1orT0NqVTllK2tndGlmTkFZRHpPMHJ1Q2t3VDBuDQpJUHJTbW5hQUVQS0ZxVlNpVTVBQkRXRlpoTkptbWhqSFhLSTF0NG1pcEt4SjRkMkc2ZmREMVM1UFFBc0g5NTIyDQpGWmlXa3QrQVh2RCtoWFVFS3lLVHZUdnBNVkFWaTc5eTRrUm0wSFBuaHUyOWxlS1J5WFprUHhSYjRBPT0NCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0NCg== key: | LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tDQpNSUlKUVFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0NTc3dnZ2tuQWdFQUFvSUNBUUMzbUVpeGlPVUtYbC8xDQp2cTR0TDQ4S3FKRzZUUnRzSTVxakx1eDBXcDBvVElRZU9tRnhYUEJsRnM3ME81R1FBSFF6U3lLQzJrck5tTkdUDQprNkNmU1ZKaGRjaEFVdS94YTdlcE5pMnluOEVWZkJsZ0t3bi9QU0F5RGt4U1czekpnSXgvVzNUb1hNaGZCOHY0DQpFSDdFcXlXZ0ZDcFJQWmVsMWpMdDRWRGppTTc4dGdCaFBucUdrWmVYSzdtMVlYR28wY3ZTR2Q5ZGdRcEpsSVR4DQptOHpSVWJQYm9WSTFRaVRhb0xkTmxRSi9xRWpaQUJCL0xWSUEreTVsTHh0RTZMWkhHVWMxTXlZcHVhMjFaS1pLDQpKS2NwK2kzK25VcU9ZMy85RDEzdG12N29MQnpvZTRwTzBHalRtb0Z2UElRTVZSOThqdEJYZG5vS2J0SzRldHUwDQp6S1drRDIzdzlUVVZ2RXNCczdNVStSVmFmSzJLMWswNWJZUFRLYnREMWlwN0VteGZuVnhuTUFWR3U5azB1M2tRDQpxdFE5cGxkTCs5dlN3ajUvZXdHOXQ3TTZDWFNIMnVnMGUvc1o0T2hxUkgwK29RU1dhWUFWUFlTa21kMUF3S09jDQp1MTBuc0FvQnJQeDUyUjAvdWZkZ05KOVEwM0ZRamlCTjVSYkM0S2s3ZkdZRW9HVDQxRjFyV2FRa3lKL0NEWElODQo4QzRlVnpVdzBiVzNjS0ZzZDkxU3NWMER1bHZmdFkwa3BDQmdFWWdRWE93QkJJRXUwc1FpNVJ5WHF6dU94TTM1DQpKQVVFaGJSeEU2dW9td3kxYndlTzRwK3lLUHgyTmJKQi9HekorVDY5MlhSS0poSjRiMDhocFM5Zk9oazhkNHZ3DQpxOFBtZllnTUQzcUZBanloQWZueGlqNGU1RVFjVndJREFRQUJBb0lDQUJJR0wwek9wYjNJMmg3a0kzRm9NK0RWDQovOGlNZlY2MmVCNEJJMUdnKzhEVEVqMXRlZGVKU2tpQ1hycjNoaWpmQW9sdW5PcS94NHc3cm9lUWZMcG1sbUhmDQpFRlBRVUtJZzh4ejNwckRjb2pZYnd0b0FIN0VoTFNIODZWMUVnaEcrUHd6Wnk3WnNOWGV1NmtWbVNTdkJxYVgzDQpsTmY0OWdSZjdRd1JqTUZwMHZoWVhkMHVKeFZEQWVEamVBM29qU0lIeHJ6UHNYQWFsUW40UEwwRGtLNFVHVlk4DQpsamVJVU5udDRWRUtpZjVDWlRSNG55WDlLd25SbnhKcjkzOWlZVkxGbG9vUWhYU2ZPQUNRNndwb1lzanFPTTNBDQpYMnR2TlVlQTFMWFkrNkdMZ3lNSHplSkM3NmVtaVlLRUxHcVJpTS9QcllDSXJ4NkxGc0RwdnR3WEkwUGlCK2J2DQplUUdpcEpxb3IyeTJ3b1pGbDRsL0lzaml3V1lyRlNQbjMxWUlIbFFkM2hYMlpVWmRjSWFmNGlyalhkZGduelZJDQo1UUFSc1N3OWNKcUVlUkZhdERaQjRaVm4xV2tpdHlic1VJZThNc3lFWWhSUTlMdk9xVi9QeHpVUjF0VEU3RzZvDQpVMGYvc3k4MldWUlpWT3FiV3krb1IyQWlNVXZWbjh4Zy9TV29ZVkdkK3ZjZ0kvanB2T081Zk9DQUp1LzY4ZVE0DQpyM0hxSU5ocVlBR09Ja1EybVNRLzVGUC9qR3pFSkhmYm4yY3BVK3hHblB5YjhudHRDRStvZGZ0MUErdG9QWmZODQowb29CT1FHTWQ5NG9OTnNWWFhrR1YydWsrUHRIY09FelBlRzVvaklzbEd0VTI2eHdsZFlvVDNPOTZlSXZkRnJ6DQo4eUlTYmpuVzdjN0p5aHBWUVd6QkFvSUJBUURjVzlXQkQ1SGJtY3JETElXdlB5NkR3N09jWXg2U0RMTTBTbUIzDQpjR0RPUU1pdTRvSSs1cW1LSXNPTktXUi9tQ0hKZUFrbDIxT0ViR2lFbHgvUHdicEZNaFk0aVgrdGFJd1NaN1N0DQpqOEtuaGp6NDE5M1NLVjdHYVo5TTRMSWVJZUtmRUh4a2RHNDVIMTRBckVFUEh1YjE1SFhvdUhxc1g0b0g1VEo2DQpBR3ltQ0FHTjdJSFpCblZkVWloU1I3b21hZXpXbHV5WE0rQVBZOUM4aHVtNlBERFE0T3FJUGpkWmY3bzZKd3kzDQpTTnBoWHp6ZERyZDB2YXRidnlEdWI2Nkxja3hGSGJuRFQ1TisxRjJjdGJLVmh3K25TaUNaNEIzLzJ2VHJwTFcyDQpvbmQxaStSMW82akhnTnZ4OHRFYmpUNWhhczEyZ2k2Y0FQKzFKOGVoNkxLTWp6am5Bb0lCQVFEVlNqVGRvOHBhDQpDNHdEZk9JcXRBYm94SkYwRnpMeEozdXB5S0hvanM1V3N3KzVSS01kNVpId3hMbEhwN2NTNktEWHFRK2NmMFBrDQpQenRmc0lWWWJybnM3elFYUHZQaE5JWE9lYVVqTG5QUjhuN3cvMWpvY1FUZHNvUUkzcmFEeGhRenBOWEpoWE1rDQpxL21Bc085eW1yVTIzcVJ2MjRrYVI5emZlVkNkOVdEVzJ1WmVweDgvUTNVRXhWYW50ZGdQVEE0QkxuSDZnSGRaDQo1UzJ0czQwZFJsTHd2dG81SnFtY2g0QTZnMFdadXU2UUQ0c0ptaklKbnVLcDJTSVl6UnBKeTdzbXlyeWprMUxtDQpNa3JRZjFCQ01DY2ovb2d1NFFOK0NlcXFOT3c2Y1RTQ3hXUWd0Rk0wV3RXUys0N3F5WTFsOEw2Z0RJeWIyeXYxDQpEN0FybnQ0K1FHTVJBb0lCQUhyWEh1QkJnN2Y5dGRDem94cWNpQnVnSHlKUkJ4dTN4TGFqdDc4ZGdIbTZGNldXDQpVN0VvK040dW53QzBVSGZvb1AwazAwU3RUWk9HczRVbWtlOUpPY09WTmxueUhLRFlwUzBsYnMxS1ZPTDZyRWEwDQpYODNtamhUaGtKSlV1RGFnQVN0WEQyRVludEZ0TVFRREFvbWhXbk05RnBYVE1WK2lLdHBYNUptcVh1YjNrNVpBDQpmK294OVg4K2E0Zml3RnpsczhlMGZ0T1RjWlppdUZ4QWdVNzJldWdXV2VmMWR2bUhnSk1tYmFwSERLWTNaMEI4DQpFYjBjZHNoQWRlVTFrUUhmaDdFSDd5UjMyZXRjQzR0dXBzMUFhM09BbVVmdWJnclJUck9HTUY1TmwzYUpzNlA0DQp4Zi9oVDd0QzkxcjZsQW5PZGhkWVh3OU1aei9mbXlRaENsZmRCNFVDZ2dFQVZtZFNWVHRGL1FaU2VSTTlOOWxvDQpOeUZ5WHhvS3pBQ1hxeWNZMS9JS0NydE5NbHRvelBLMEZWcE1TSWZidFRCQ0FEdC9sSUZGeXBBSENIT2xBVGNSDQo0TGJpWGt4bFZhVUdVNmVaeTAvRklaYmY3OWN4ZURCWXJVcmxEQWJVM3pyOThoSGpmVml2VlhySmYyV3VDcm83DQprUGZPbTNYTzY3T1MrWURXdExhenZUWStQcmZyQTZEYkpjeWZseDhtWU1RSnBGYmhXMzV4V3h4cFRjVy84ODBLDQpTbmEyUnBLd0FUWXZMd1VBekE4YkY0Y0VaeVp0QU5LNXRkNjlYbGl3UHBibXdRYytOZkcza29OckpWMTk4T0k2DQo2T3p5MURMWlRGVE9HSmVKM3Y3L0s3NjFHajZTdWxIVjFVNU5EallLTHZMQTltcy9CdUJaeFZQT3BVMGRjUkI2DQpVUUtDQVFCU0hFRGQzd1pGR0tEMEl3UlNHS2R5bVJUeDMwRWdwandjYU45eGZ6Z0xsbFR0MGdLTWpJVFpYVFFXDQpBRktseS9ndE91UUIyeGl0ejFsL3NMb3pKNmxyMnZudWdoTXhkNysyTzdLTEp1RHR2a1V4NHRtWm83c0ZtRG1hDQo4QUk1cE1sTFZVQWh6UlhjU01tanllZE1LTHhEaXRHRVBFUmNwL0toenZJMitPM1dodHE5MXI5Vk5OWmpPVmdXDQpDTnIwZWQzR2hBbmwrbktTWXd3bXBhNHdGWG9qM3VlV0VVaW43R04zbUpVb3hKWWhvZDdCL1lyQWE4dEdURUpzDQpRNngwZUFjYStPMjhSNXFxaGlGb1o3RFcrc0dNeDBmVlovNzFzWTBYcEZLeE9zUDNrRGZGbFdsWlV2NXRpYXVWDQp5d2FXZU9neVVkL1RKU3NLMUFOT1UxUkNEV0dwDQotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tDQo= # apache kafka, mqttkafkabridge, kowl, kafkatopostgresql kafka: enabled: true defaultTopics: ia.test.test.test.processValue;ia.test.test.test.count;umh.v1.kafka.newTopic # timescaledb, factoryinsight, grafana, redis # datastorage is the basic infrastructure to get messages from MQTT, storing them in a database and exposing a REST API with KPIs that can be used in Grafana (contains timescaledb, factoryinsight, mqtt-to-postgresql, grafana, vernemq, ) # If you want to enable only some of these components, set enabled to false and enable them in the detailed configuration below 000_commonConfig datastorage: enabled: true db_password: "changeme" # factoryinput, grafanaproxy datainput: enabled: true # mqttBridge allows connecting multiple United Manufacturing Hub clusters, e.g., the installations on the edge with the central cloud mqttBridge: enabled: true localSubTopic: "ia/factoryinsight" # /# will be automatically appended to the string specified here. oneWay: true localPubTopic: "ia" remoteBrokerURL: "ssl://united-manufacturing-hub-hivemq-ce-local-service.united-manufacturing-hub:8883" remoteBrokerSSLEnabled: true remoteSubTopic: "ia" remotePubTopic: "ia/factoryinsight" # /# will be automatically appended to the string specified here. kafkaBridge: enabled: false remotebootstrapServer: "" topicCreationLocalList: ia.test.test.test.processValue;ia.test.test.test.count;umh.v1.kafka.newTopic # ; seperated list of topics to create on local broker, if they do not exist topicCreationRemoteList: ia.test.test.test.processValue;ia.test.test.test.count;umh.v1.kafka.newTopic # ; seperated list of topics to create on remote broker, if they do not exist topicmap: # Example topic map # - bidirectional: false # name: HighIntegrity # send_direction: to_remote # topic: ^ia\.(([^r.](\d|-|\w)*)|(r[b-z](\d|-|\w)*)|(ra[^w]))\.(\d|-|\w|_)+\.(\d|-|\w|_)+\.((addMaintenanceActivity)|(addOrder)|(addParentToChild)|(addProduct)|(addShift)|(count)|(deleteShiftByAssetIdAndBeginTimestamp)|(deleteShiftById)|(endOrder)|(modifyProducedPieces)|(modifyState)|(productTag)|(productTagString)|(recommendation)|(scrapCount)|(startOrder)|(state)|(uniqueProduct)|(scrapUniqueProduct))$ # - bidirectional: false # name: HighThroughput # send_direction: to_remote # topic: ^ia\.(([^r.](\d|-|\w)*)|(r[b-z](\d|-|\w)*)|(ra[^w]))\.(\d|-|\w|_)+\.(\d|-|\w|_)+\.(process[V|v]alue).*$ kafkaStateDetector: enabled: false debug: enableFGTrace: false # Enables https://github.com/felixge/fgtrace. DO NOT USE IN PRODUCTION! tulipconnector: enabled: false domain: "tulip-connector.changeme.com" metrics: # Allow sending of non PII metrics to United Manufacturing Hub enabled: true racedetector: enabled: false _001_customMicroservices: - name: example image: hello-world:latest enabled: false # imagePullPolicy: Always is recommended when using latest tags. Otherwise, please use IfNotPresent imagePullPolicy: Always # these will be passed as environment variables env: - name: LOGGING_LEVEL value: PRODUCTION # service type. NordPort or LoadBalancer serviceType: LoadBalancer # this will expose port 80 on the host on port 8080 port: 80 externalPort: 8080 # startupProbe, livenessProbe, check whether port 9090 "/health" is accessible. # If not (e.g., due to container stuck), the container will be restarted # startupProbe: 100 # livenessProbe: 50 # probePort: 9090 # statefulEnabled will automatically mount a volume under /data, which can be used to store data. # Recommendation is to turn it off statefulEnabled: true - name: example1 image: hello-world:latest enabled: false # imagePullPolicy: Always is recommended when using latest tags. Otherwise, please use IfNotPresent imagePullPolicy: Always # these will be passed as environment variables env: - name: LOGGING_LEVEL value: PRODUCTION # service type. NordPort or LoadBalancer serviceType: LoadBalancer # this will expose port 81 on the host on port 8081 port: 81 externalPort: 8081 # startupProbe, livenessProbe, check whether port 9091 "/health" is accessible. # If not (e.g., due to container stuck), the container will be restarted startupProbe: 200 livenessProbe: 500 probePort: 9091 # statefulEnabled will automatically mount a volume under /data, which can be used to store data. # Recommendation is to turn it off statefulEnabled: false - name: cmtester image: ghcr.io/united-manufacturing-hub/custom-microservice-tester:latest enabled: false # imagePullPolicy: Always is recommended when using latest tags. Otherwise, please use IfNotPresent imagePullPolicy: Always # these will be passed as environment variables env: - name: LOGGING_LEVEL value: PRODUCTION # service type. NordPort or LoadBalancer serviceType: LoadBalancer # this will expose port 81 on the host on port 8081 port: 81 externalPort: 8082 # startupProbe, livenessProbe, check whether port 9091 "/health" is accessible. # If not (e.g., due to container stuck), the container will be restarted startupProbe: 200 livenessProbe: 500 probePort: 9091 # statefulEnabled will automatically mount a volume under /data, which can be used to store data. # Recommendation is to turn it off statefulEnabled: true ##### DO NOT CHANGE ANYTHING BELOW HERE (except when you know what you are doing) ##### serviceAccount: create: true ### kafkastatedetector ### kafkastatedetector: enabled: false image: repository: ghcr.io/united-manufacturing-hub/kafkastatedetector pullPolicy: IfNotPresent activityEnabled: true anomalyEnabled: true ### mqttbridge ### mqttbridge: enabled: false image: ghcr.io/united-manufacturing-hub/mqtt-bridge storageRequest: 1Gi resources: requests: cpu: "100m" memory: "20Mi" limits: cpu: "200m" memory: "100Mi" mqtt: password: INSECURE_INSECURE_INSECURE encryptedPassword: M21tR09vUkI3NTBSUlJWOHdRQUV2R3VCbUJEeGw3WDY=:100:GguBx5OY0JHD0IQhCoVgzf0/cx2dPDbHcC4NXu2fEnu0Oz2Ii2afammPZBd0y0M0Q46Gyf/z/c4lKd5qQ8Oo3Q== ### barcodereader ### barcodereader: enabled: false image: repository: ghcr.io/united-manufacturing-hub/barcodereader pullPolicy: IfNotPresent resources: requests: cpu: "2m" memory: "30Mi" limits: cpu: "10m" memory: "60Mi" scanOnly: false # Debug mode, will not send data to kafka ### sensorconnect ### sensorconnect: storageRequest: 1Gi image: ghcr.io/united-manufacturing-hub/sensorconnect ioddfilepath: "/ioddfiles" lowerPollingTime: 20 # Fastest time, sensors should be requested to serve data upperPollingTime: 1000 # Slowest time, sensors should be requested to serve data pollingSpeedStepUpMs: 20 # Time to add to actual stepping in case of failure pollingSpeedStepDownMs: 1 # Time to add to actual stepping in case of no-failure sensorInitialPollingTimeMs: 100 # Time to begin retrieving sensor data (Set higher then lowerTickSpeedMs to not kill sensors instantly, after they recovered from overload) deviceFinderTimeSec: 20 # Time in sec, before finding new devices deviceFinderTimeoutSec: 1 # HTTP timeout for finding new sensors. NEVER set lower then DeviceFinderFrequenceySec maxSensorErrorCount: 50 # Errors before a sensor is temporarily disabled allowSubTwentyMs: 0 # Set to 1 to allow lowerTickSpeedMs of under 20ms. THIS IS DANGEROUS !!! additionalSleepTimePerActivePortMs: 0.0 # Additional time to add to sleep time, based on active ports (especially helpful if you mix devices with 1-2 sensors and devices with 8 sensors) additionalSlowDownMap: [] # JSON map, allowing for slowing down/speeding up sensors based on serialnumber, productcode or url # Example: # [{"serialnumber":"000200610104","slowdown_ms":-10},{"url":"http://192.168.0.13","slowdown_ms":20},{"productcode":"AL13500","slowdown_ms":20.01}] resources: requests: cpu: "10m" memory: "75Mi" limits: cpu: "100m" memory: "200Mi" mqtt: password: INSECURE_INSECURE_INSECURE encryptedPassword: ZVF5bDJ4TWtjVXVWZVVESlRXZU1DSHA4cDdHbUhKSEc=:100:B42+ySldBE+uilWricvIif+UJ0oW5iXafloUyiZclbYoQOOthOet5NQAKCTHITDSHadxvjbgfiF/908QmwqZOw== ### iotsensorsmqtt ### iotsensorsmqtt: image: amineamaach/sensors-mqtt tag: v1.0.0 resources: requests: cpu: "10m" memory: "20Mi" limits: cpu: "30m" memory: "50Mi" mqtt: password: INSECURE_INSECURE_INSECURE encryptedPassword: T3VSY2szQ0diWDkyOGpoSGpDQzVqc29VZlJ2UkxiOTI=:100:6qxZS+Bhn8QXrF1dUo6fU9Eg/esjw6zipq6xv9uct84Jyhv0mJTUi5SHSBW4TbF66vBOrE3JnZ//rUutEl8/Bw== ### opcuasimulator ### opcuasimulator: image: ghcr.io/united-manufacturing-hub/opcuasimulator tag: 0.1.0 resources: requests: cpu: "10m" memory: "20Mi" limits: cpu: "30m" memory: "50Mi" service: annotations: {} # certadds can add hostnames and ip addresses to the certificate for the simulator so connection to the opcua client is easier certadds: hosts: "united-manufacturing-hub-opcuasimulator-service" #ips: "1.1.1.1" ### kafkabridge ### kafkabridge: image: repository: ghcr.io/united-manufacturing-hub/kafka-bridge pullPolicy: IfNotPresent # tag: development initContainer: repository: ghcr.io/united-manufacturing-hub/kafka-init pullPolicy: IfNotPresent ### nodered ### nodered: mqtt: encryptedPassword: aVptalRWUk5Dd0QxQmtlekRYcnlZemJ3VTJKMTlDZWE=:100:PrJcg4O5Y371AnbS+Qt//rdNhjeBfkpWm24B0TBQPmNC+3ANbjIpFoJUh/gfBZHdE8fI6DwU8/u7RSjBuSTRkA== tag: 3.0.2 port: 1880 storageRequest: 1Gi env: NODE_RED_ENABLE_SAFE_MODE: false timezone: Berlin/Europe serviceType: LoadBalancer ingress: enabled: false publicHost: "" publicHostSecretName: "" flows: |- [{"id":"41c9c6783cbe3070","type":"tab","label":"Example flow","disabled":false,"info":""},{"id":"45f7c4f7.dff1cc","type":"tab","label":"Machine data genenerator","disabled":false,"info":""},{"id":"587a158d.20327c","type":"subflow","name":"addShift","info":"","category":"","in":[{"x":40,"y":100,"wires":[{"id":"d4c91958.7b47b8"}]}],"out":[],"env":[],"meta":{},"color":"#D5F0FF","icon":"font-awesome/fa-calendar"},{"id":"9d0bf5c6.2530b8","type":"subflow","name":"output_to_activity","info":"","category":"ia: nodes","in":[],"out":[],"env":[{"name":"max_duration","type":"num","value":"10","ui":{"icon":"font-awesome/fa-clock-o","label":{"en-US":"max_duration"},"type":"input","opts":{"types":["num"]}}},{"name":"customerID","type":"str","value":"samplecustomerID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"location","type":"str","value":"samplelocation","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"AssetID","type":"str","value":"sampleAssetID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}}],"color":"#D5F0FF","icon":"node-red/sort.svg"},{"id":"882af5a6.a58b28","type":"subflow","name":"state_logic","info":"","category":"ia: nodes","in":[],"out":[],"env":[{"name":"customerID","type":"str","value":"samplecustomerID","ui":{"type":"input","opts":{"types":["str"]}}},{"name":"location","type":"str","value":"samplelocation","ui":{"type":"input","opts":{"types":["str"]}}},{"name":"AssetID","type":"str","value":"sampleAssetID","ui":{"type":"input","opts":{"types":["str"]}}}],"meta":{},"color":"#D5F0FF","icon":"node-red/status.svg"},{"id":"ae592577.420618","type":"subflow","name":"processvalue","info":"","category":"","in":[{"x":60,"y":60,"wires":[{"id":"d996e872.8c0c88"}]}],"out":[],"env":[{"name":"namePV","type":"str","value":"yourProcessValueName","ui":{"icon":"font-awesome/fa-text-width","type":"input","opts":{"types":["str"]}}},{"name":"customerID","type":"str","value":"samplecustomerID","ui":{"type":"input","opts":{"types":["str"]}}},{"name":"location","type":"str","value":"samplelocation","ui":{"type":"input","opts":{"types":["str"]}}},{"name":"AssetID","type":"str","value":"sampleAssetID","ui":{"type":"input","opts":{"types":["str"]}}}],"meta":{},"color":"#D5F0FF","icon":"font-awesome/fa-area-chart"},{"id":"fc9d8f9c.14845","type":"subflow","name":"count","info":"","category":"","in":[{"x":140,"y":120,"wires":[{"id":"a85c6ef3.fcf27"}]}],"out":[],"env":[{"name":"customerID","type":"str","value":"samplecustomerID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"location","type":"str","value":"samplelocation","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"AssetID","type":"str","value":"sampleAssetID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}}],"color":"#D5F0FF","icon":"node-red-dashboard/ui_chart.png"},{"id":"b60b06bc.cdb4c8","type":"subflow","name":"detectedAnomaly","info":"","category":"","in":[{"x":40,"y":80,"wires":[{"id":"c9fa6d5b.84b01"}]}],"out":[],"env":[{"name":"customerID","type":"str","value":"samplecustomerID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"location","type":"str","value":"samplelocation","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"AssetID","type":"str","value":"sampleAssetID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}}],"color":"#D5F0FF","icon":"node-red/alert.svg"},{"id":"b77cb6f5.685178","type":"subflow","name":"activity","info":"","category":"","in":[{"x":60,"y":80,"wires":[{"id":"6e72af6b.e6363"}]}],"out":[],"env":[{"name":"customerID","type":"str","value":"samplecustomerID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"location","type":"str","value":"samplelocation","ui":{"type":"input","opts":{"types":["str"]},"label":{}}},{"name":"AssetID","type":"str","value":"sampleAssetID","ui":{"type":"input","opts":{"types":["str"]},"label":{}}}],"color":"#D5F0FF","icon":"node-red/serial.svg"},{"id":"62375092.d1012","type":"group","z":"45f7c4f7.dff1cc","name":"Sample Data","style":{"stroke":"none","fill":"#DAECF0","label":true,"color":"#000000","label-position":"n"},"nodes":["6e3f046.47cecfc","f8283b61.08d9e8","5b0afc76.d39564","20f4ef35.92e22","5649a4d0.ce43ec","3b5e6754.ff4f18"],"x":34,"y":19},{"id":"7cef6b1d.d23a54","type":"group","z":"45f7c4f7.dff1cc","name":"United Manufacturing Hub Nodered-connectors","style":{"fill":"#2D393D","fill-opacity":"0.66","label":true,"color":"#ffffff","label-position":"n","stroke":"none"},"nodes":["96c50010.c50af","ae8cdaa6.a56a68","c8d8afe1.59fa","246a1685.58379a","7bb0392e.8a3bf8","b34237d9.7d2cc8","e61e8604.509d48"],"x":474,"y":19},{"id":"ba92812b.1beda","type":"group","z":"45f7c4f7.dff1cc","name":"Selection of standard interfaces","style":{"stroke":"none","fill":"#DAECF0","label":true,"label-position":"n","color":"#000000"},"nodes":["c3372d57.50822","37c52f75.d6a81","a8e1a854.89e108","cdd3a9a3.ceed18","28b0d095.a6f2e","15717681.474919","28ac3b5b.0c6e64","37c52f75.d6a81","6c82df5c.fb975","392b9fc.5171e6"],"x":54,"y":459},{"id":"5dff9791.d1b278","type":"mqtt_broker","name":"","broker":"united-manufacturing-hub-hivemqce","port":"1883","clientid":"","usetls":false,"compatmode":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"d4c91958.7b47b8","type":"function","z":"587a158d.20327c","name":"Create Shift","func":"timestamp_ms = Date.now() \ntimestamp_ms_end = timestamp_ms + (msg.duration_in_minutes * 60*1000)\n\nmsg.payload = {\n \"timestamp_ms\": timestamp_ms, \n \"timestamp_ms_end\": timestamp_ms_end,\n}\nmsg.topic = \"ia/\"+env.get(\"customerID\")+\"/\"+env.get(\"location\")+\"/\"+env.get(\"AssetID\")+\"/addShift\"\nreturn msg;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":190,"y":100,"wires":[["38e4349e.30f73c"]]},{"id":"38e4349e.30f73c","type":"mqtt out","z":"587a158d.20327c","name":"MQTT-OUT: Verarbeitete Daten","topic":"","qos":"1","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"5dff9791.d1b278","x":450,"y":100,"wires":[]},{"id":"1a01904d.a305b","type":"json","z":"9d0bf5c6.2530b8","name":"","property":"payload","action":"","pretty":false,"x":250,"y":100,"wires":[["d5821e95.eb077"]]},{"id":"85638585.b5dfb8","type":"mqtt in","z":"9d0bf5c6.2530b8","name":"MQTT-IN: output","topic":"ia/+/+/+/count","qos":"2","datatype":"auto","broker":"5dff9791.d1b278","nl":false,"rap":false,"x":100,"y":100,"wires":[["1a01904d.a305b"]]},{"id":"d5821e95.eb077","type":"function","z":"9d0bf5c6.2530b8","name":"Check for exakt Topic","func":"var topic = \"ia/\"+env.get(\"customerID\")+\"/\"+env.get(\"location\")+\"/\"+env.get(\"AssetID\")+\"/count\"\nif (topic == msg.topic) {\n msg.payload = msg.payload\n} else {\n msg.payload = null;\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":420,"y":100,"wires":[["dc440bb.3e238f8"]]},{"id":"dc440bb.3e238f8","type":"switch","z":"9d0bf5c6.2530b8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"nnull"}],"checkall":"true","repair":false,"outputs":1,"x":590,"y":100,"wires":[["c52cba61.6b62d8"]]},{"id":"b9e10ec3.94988","type":"function","z":"9d0bf5c6.2530b8","name":"Format: activity ","func":"msg.payload = {\n\"timestamp_ms\": Date.now(),\n\"activity\": msg.payload\n}\n\nmsg.topic = \"ia/\"+env.get(\"customerID\")+\"/\"+env.get(\"location\")+\"/\"+env.get(\"AssetID\")+\"/activity\"\nreturn msg;\n\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1400,"y":100,"wires":[["55c7ebc4.703714"]]},{"id":"55c7ebc4.703714","type":"mqtt out","z":"9d0bf5c6.2530b8","name":"MQTT-OUT: Verarbeitete Daten","topic":"","qos":"2","retain":"","broker":"5dff9791.d1b278","x":1670,"y":100,"wires":[]},{"id":"a0736c99.0b8bc","type":"rbe","z":"9d0bf5c6.2530b8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1250,"y":100,"wires":[["b9e10ec3.94988"]]},{"id":"c52cba61.6b62d8","type":"function","z":"9d0bf5c6.2530b8","name":"","func":"flow.set(\"ts_last_output\", Date.now())\nreturn null;","outputs":1,"noerr":0,"x":720,"y":100,"wires":[[]]},{"id":"3f8212b6.7c6b8e","type":"function","z":"9d0bf5c6.2530b8","name":"","func":"if (flow.get(\"ts_last_output\")==undefined) {\n flow.set(\"ts_last_output\", Date.now())\n return null;\n} else if ((Date.now()-flow.get(\"ts_last_output\")).json //flowFile: 'flows.json', // To enabled pretty-printing of the flow within the flow file, set the following // property to true: //flowFilePretty: true, // By default, credentials are encrypted in storage using a generated key. To // specify your own secret, set the following property. // If you want to disable encryption of credentials, set this property to false. // Note: once you set this property, do not change it - doing so will prevent // node-red from being able to decrypt your existing credentials and they will be // lost. //credentialSecret: "a-secret-key", // By default, all user data is stored in a directory called `.node-red` under // the user's home directory. To use a different location, the following // property can be used //userDir: '/home/nol/.node-red/', // Node-RED scans the `nodes` directory in the userDir to find local node files. // The following property can be used to specify an additional directory to scan. //nodesDir: '/home/nol/.node-red/nodes', // By default, the Node-RED UI is available at http://localhost:1880/ // The following property can be used to specify a different root path. // If set to false, this is disabled. //httpAdminRoot: '/admin', // Some nodes, such as HTTP In, can be used to listen for incoming http requests. // By default, these are served relative to '/'. The following property // can be used to specifiy a different root path. If set to false, this is // disabled. //httpNodeRoot: '/red-nodes', // The following property can be used in place of 'httpAdminRoot' and 'httpNodeRoot', // to apply the same root to both parts. httpRoot: '/nodered', // When httpAdminRoot is used to move the UI to a different root path, the // following property can be used to identify a directory of static content // that should be served at http://localhost:1880/. //httpStatic: '/home/nol/node-red-static/', // The maximum size of HTTP request that will be accepted by the runtime api. // Default: 5mb //apiMaxLength: '5mb', // If you installed the optional node-red-dashboard you can set it's path // relative to httpRoot ui: { path: "ui" }, // Securing Node-RED // ----------------- // To password protect the Node-RED editor and admin API, the following // property can be used. See http://nodered.org/docs/security.html for details. //adminAuth: {}, // To password protect the node-defined HTTP endpoints (httpNodeRoot), or // the static content (httpStatic), the following properties can be used. // The pass field is a bcrypt hash of the password. // See http://nodered.org/docs/security.html#generating-the-password-hash //httpNodeAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, //httpStaticAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, // The following property can be used to enable HTTPS // See http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener // for details on its contents. // This property can be either an object, containing both a (private) key and a (public) certificate, // or a function that returns such an object: //// https object: //https: { // key: require("fs").readFileSync('privkey.pem'), // cert: require("fs").readFileSync('cert.pem') //}, ////https function: // https: function() { // // This function should return the options object, or a Promise // // that resolves to the options object // return { // key: require("fs").readFileSync('privkey.pem'), // cert: require("fs").readFileSync('cert.pem') // } // }, // The following property can be used to refresh the https settings at a // regular time interval in hours. // This requires: // - the `https` setting to be a function that can be called to get // the refreshed settings. // - Node.js 11 or later. //httpsRefreshInterval : 12, // The following property can be used to cause insecure HTTP connections to // be redirected to HTTPS. //requireHttps: true, // The following property can be used to disable the editor. The admin API // is not affected by this option. To disable both the editor and the admin // API, use either the httpRoot or httpAdminRoot properties //disableEditor: false, // The following property can be used to configure cross-origin resource sharing // in the HTTP nodes. // See https://github.com/troygoode/node-cors#configuration-options for // details on its contents. The following is a basic permissive set of options: //httpNodeCors: { // origin: "*", // methods: "GET,PUT,POST,DELETE" //}, // If you need to set an http proxy please set an environment variable // called http_proxy (or HTTP_PROXY) outside of Node-RED in the operating system. // For example - http_proxy=http://myproxy.com:8080 // (Setting it here will have no effect) // You may also specify no_proxy (or NO_PROXY) to supply a comma separated // list of domains to not proxy, eg - no_proxy=.acme.co,.acme.co.uk // The following property can be used to add a custom middleware function // in front of all http in nodes. This allows custom authentication to be // applied to all http in nodes, or any other sort of common request processing. //httpNodeMiddleware: function(req,res,next) { // // Handle/reject the request, or pass it on to the http in node by calling next(); // // Optionally skip our rawBodyParser by setting this to true; // //req.skipRawBodyParser = true; // next(); //}, // The following property can be used to add a custom middleware function // in front of all admin http routes. For example, to set custom http // headers // httpAdminMiddleware: function(req,res,next) { // // Set the X-Frame-Options header to limit where the editor // // can be embedded // //res.set('X-Frame-Options', 'sameorigin'); // next(); // }, // The following property can be used to pass custom options to the Express.js // server used by Node-RED. For a full list of available options, refer // to http://expressjs.com/en/api.html#app.settings.table //httpServerOptions: { }, // The following property can be used to verify websocket connection attempts. // This allows, for example, the HTTP request headers to be checked to ensure // they include valid authentication information. //webSocketNodeVerifyClient: function(info) { // // 'info' has three properties: // // - origin : the value in the Origin header // // - req : the HTTP request // // - secure : true if req.connection.authorized or req.connection.encrypted is set // // // // The function should return true if the connection should be accepted, false otherwise. // // // // Alternatively, if this function is defined to accept a second argument, callback, // // it can be used to verify the client asynchronously. // // The callback takes three arguments: // // - result : boolean, whether to accept the connection or not // // - code : if result is false, the HTTP error status to return // // - reason: if result is false, the HTTP reason string to return //}, // The following property can be used to seed Global Context with predefined // values. This allows extra node modules to be made available with the // Function node. // For example, // functionGlobalContext: { os:require('os') } // can be accessed in a function block as: // global.get("os") functionGlobalContext: { // os:require('os'), // jfive:require("johnny-five"), // j5board:require("johnny-five").Board({repl:false}) }, // `global.keys()` returns a list of all properties set in global context. // This allows them to be displayed in the Context Sidebar within the editor. // In some circumstances it is not desirable to expose them to the editor. The // following property can be used to hide any property set in `functionGlobalContext` // from being list by `global.keys()`. // By default, the property is set to false to avoid accidental exposure of // their values. Setting this to true will cause the keys to be listed. exportGlobalContextKeys: false, // Context Storage // The following property can be used to enable context storage. The configuration // provided here will enable file-based context that flushes to disk every 30 seconds. // Refer to the documentation for further options: https://nodered.org/docs/api/context/ // //contextStorage: { // default: { // module:"localfilesystem" // }, //}, // The following property can be used to order the categories in the editor // palette. If a node's category is not in the list, the category will get // added to the end of the palette. // If not set, the following default order is used: //paletteCategories: ['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'], // Configure the logging output logging: { // Only console logging is currently supported console: { // Level of logging to be recorded. Options are: // fatal - only those errors which make the application unusable should be recorded // error - record errors which are deemed fatal for a particular request + fatal errors // warn - record problems which are non fatal + errors + fatal errors // info - record information about the general running of the application + warn + error + fatal errors // debug - record information which is more verbose than info + info + warn + error + fatal errors // trace - record very detailed logging + debug + info + warn + error + fatal errors // off - turn off all logging (doesn't affect metrics or audit) level: "info", // Whether or not to include metric events in the log output metrics: false, // Whether or not to include audit events in the log output audit: false } }, // Customising the editor editorTheme: { projects: { // To enable the Projects feature, set this value to true enabled: false } } } ### factoryinsight ### factoryinsight: enabled: true image: repository: ghcr.io/united-manufacturing-hub/factoryinsight pullPolicy: IfNotPresent # Only specify tag if you want to use a specific version. If not specified the latest stable version is automatically selected # tag: 0.3.2 replicas: 2 user: "factoryinsight" version: 2 # Minimum api version to host (e.g: 2 will host v1 and v2, 3 will host v1, v2 and v3) # Password will be generated automatically db_host: "united-manufacturing-hub" db_database: "factoryinsight" db_user: "factoryinsight" redis: URI: united-manufacturing-hub-redis-headless:6379 service: annotations: {} pdb: enabled: false hpa: enabled: false ingress: enabled: false publicHost: "" publicHostSecretName: "" resources: limits: cpu: 200m memory: 200Mi requests: cpu: 50m memory: 50Mi insecure_no_auth: false # DO NOT ENABLE IN PRODUCTION. This will disable authentication and authorization ### factoryinput ### factoryinput: enabled: true user: factoryinsight service: annotations: {} image: repository: ghcr.io/united-manufacturing-hub/factoryinput pullPolicy: IfNotPresent replicas: 1 storageRequest: 1Gi pdb: enabled: true minAvailable: 1 mqtt: password: INSECURE_INSECURE_INSECURE encryptedPassword: emQ1NHEzcWN3ajVNZnRkaXphbzJDZ1V6aEFsMnlxTlU=:100:wR0Br1UBGt5i2oruSbzNXJEicUEpcSwY/RmR8igExshAuEeLeFeWy82a9AOkkiGVBP2N2IMTBFRvY0W/lvQ8gA== env: loggingLevel: "PRODUCTION" version: "2" mqttQueueHandler: "10" ### grafanaproxy ### grafanaproxy: enabled: false image: repository: ghcr.io/united-manufacturing-hub/grafana-proxy pullPolicy: IfNotPresent replicas: 1 service: annotations: {} type: LoadBalancer port: 2096 targetPort: 80 protocol: TCP labels: {} portName: service name: http resources: limits: cpu: 300m requests: cpu: 100m ### kafka-to-postgresql ### kafkatopostgresql: enabled: false image: repository: ghcr.io/united-manufacturing-hub/kafka-to-postgresql pullPolicy: IfNotPresent # tag: latest initContainer: repository: ghcr.io/united-manufacturing-hub/kafka-init pullPolicy: IfNotPresent replicas: 1 storageRequest: 1Gi listenTopic: # All topics except processValue # Kafka doesn't seem to be able to do negative lookaheads #highIntegrity: '^ia\..+\..+\..+\.((addMaintenanceActivity)|(addOrder)|(addParentToChild)|(addProduct)|(addShift)|(count)|(deleteShiftByAssetIdAndBeginTimestamp)|(deleteShiftById)|(endOrder)|(modifyProducedPieces)|(modifyState)|(productTag)|(productTagString)|(recommendation)|(scrapCount)|(startOrder)|(state)|(uniqueProduct)|(scrapUniqueProduct))$' #highThroughput: '^ia\..+\..+\..+\.(process[V|v]alue).*$' resources: limits: cpu: 200m memory: 300Mi requests: cpu: 50m memory: 150Mi ### timescaleDB ### timescaledb-single: replicaCount: 1 image: # Image was built from # https://github.com/timescale/timescaledb-docker-ha tag: pg13.8-ts2.8.0-p1 pullPolicy: IfNotPresent # This configuration will be passed on to Patroni directly, there are a few things that are # injected/changed, these are: # - archive_command will be set to /bin/true if backup is disabled # - any context sensitive parameter (scope, namespace, name) will be overridden by the Kubernetes context # https://patroni.readthedocs.io/en/latest/SETTINGS.html#settings patroni: postgresql: create_replica_methods: - basebackup postInit: - configMap: name: timescale-post-init optional: false - secret: name: timescale-post-init-pw optional: false service: primary: type: LoadBalancer serviceAccount: create: false ### grafana ### grafana: serviceAccount: create: false ## See `kubectl explain poddisruptionbudget.spec` for more ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ podDisruptionBudget: minAvailable: 1 # maxUnavailable: 1 testFramework: enabled: false ## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service). ## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it. ## ref: http://kubernetes.io/docs/user-guide/services/ ## service: type: LoadBalancer port: 8080 extraInitContainers: - image: ghcr.io/united-manufacturing-hub/grafana-umh:1.2.1 name: init-plugins imagePullPolicy: IfNotPresent command: ['sh', '-c', 'cp -r /plugins /var/lib/grafana/'] volumeMounts: - name: storage mountPath: /var/lib/grafana ## Enable persistence using Persistent Volume Claims0 ## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ ## persistence: enabled: true size: 5Gi initChownData: ## If false, data ownership will not be reset at startup ## This allows the prometheus-server to be run with an arbitrary user enabled: true # Use an existing secret for the admin user. admin: existingSecret: "grafana-secret" userKey: adminuser passwordKey: adminpassword ## Extra environment variables that will be pass onto deployment pods ## ## to provide grafana with access to CloudWatch on AWS EKS: ## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later) ## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the ## same oidc eks provider as noted before (same as the existing line) ## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name ## ## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana", ## ## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess ## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name) ## ## env: ## AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here ## AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token ## AWS_REGION: us-east-1 ## ## 5. uncomment the EKS section in extraSecretMounts: below ## 6. uncomment the annotation section in the serviceAccount: above ## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn env: GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: umh-datasource,umh-factoryinput-panel,umh-v2-datasource ## "valueFrom" environment variable references that will be added to deployment pods ## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core ## Renders in container spec as: ## env: ## ... ## - name: ## valueFrom: ## envValueFrom: FACTORYINSIGHT_BASEURL: secretKeyRef: name: factoryinsight-secret key: baseURL FACTORYINSIGHT_APIKEY: secretKeyRef: name: factoryinsight-secret key: apiKey FACTORYINSIGHT_CUSTOMERID: secretKeyRef: name: factoryinsight-secret key: customerID FACTORYINSIGHT_PASSWORD: secretKeyRef: name: factoryinsight-secret key: password ## Configure grafana datasources ## ref: http://docs.grafana.org/administration/provisioning/#datasources ## datasources: datasources.yaml: apiVersion: 1 datasources: - name: umh-v2-datasource # datasource type. Required type: umh-v2-datasource # access mode. proxy or direct (Server or Browser in the UI). Required access: proxy # org id. will default to orgId 1 if not specified orgId: 1 url: "http://united-manufacturing-hub-factoryinsight-service/" jsonData: customerID: $FACTORYINSIGHT_CUSTOMERID apiKey: $FACTORYINSIGHT_PASSWORD baseURL: "http://united-manufacturing-hub-factoryinsight-service/" apiKeyConfigured: true version: 1 # allow users to edit datasources from the UI. isDefault: false editable: false # name of the datasource. Required - name: umh-datasource # datasource type. Required type: umh-datasource # access mode. proxy or direct (Server or Browser in the UI). Required access: proxy # org id. will default to orgId 1 if not specified orgId: 1 url: "http://united-manufacturing-hub-factoryinsight-service/" jsonData: customerId: $FACTORYINSIGHT_CUSTOMERID apiKey: $FACTORYINSIGHT_PASSWORD serverURL: "http://united-manufacturing-hub-factoryinsight-service/" apiKeyConfigured: true version: 1 # allow users to edit datasources from the UI. isDefault: true editable: false # name of the datasource. Required ## Grafana's primary configuration ## NOTE: values in map will be converted to ini format ## ref: http://docs.grafana.org/installation/configuration/ ## grafana.ini: paths: data: /var/lib/grafana/data logs: /var/log/grafana plugins: /var/lib/grafana/plugins provisioning: /etc/grafana/provisioning database: host: united-manufacturing-hub user: "grafana" name: "grafana" password: "changeme" ssl_mode: require type: postgres log.console: format: json ### packmlmqttsimulator ### packmlmqttsimulator: image: repository: spruiktec/packml-simulator pullPolicy: IfNotPresent hash: 01e2f0da3542f1b4e0de830a8d24135de03fd9174dce184ed329bed3ee688e19 env: area: DefaultArea productionline: DefaultProductionLine site: testLocation mqtt: password: INSECURE_INSECURE_INSECURE encryptedPassword: ZzBCbzEyaWlnZkRjbndTa2RLTW1aSmlsOWtQSWtpak0=:100:9FWqFUN88VPio9yFR59XbE9fr/GUkM1fnKCNn2wvK06MMtKp5LPtUrTCOLhHgkFQ6IMw92wi9HTsLRFxnM+reQ== replicas: 1 resources: requests: cpu: "10m" memory: "20Mi" limits: cpu: "30m" memory: "50Mi" ### tulip-connector ### tulipconnector: image: repository: ghcr.io/united-manufacturing-hub/tulip-connector pullPolicy: IfNotPresent # Only specify tag if you want to use a specific version. If not specified the latest stable version is automatically selected tag: 0.1.0 replicas: 1 env: mode: prod resources: limits: cpu: 30m memory: 50Mi requests: cpu: 10m memory: 20Mi ### mqtt-kafka-bridge ### mqttkafkabridge: enabled: false image: repository: ghcr.io/united-manufacturing-hub/mqtt-kafka-bridge pullPolicy: IfNotPresent pdb: enabled: true minAvailable: 1 initContainer: repository: ghcr.io/united-manufacturing-hub/kafka-init pullPolicy: IfNotPresent resources: requests: cpu: "400m" memory: "300Mi" limits: cpu: "500m" memory: "450Mi" mqttSenderThreads: 1 kafkaSenderThreads: 1 kafkaAcceptNoOrigin: "false" rawMessageLRUSize: 100000 messageLRUSize: 100000 mqtt: password: INSECURE_INSECURE_INSECURE encryptedPassword: WDRkN1c4MnpVb3BsS25qZG5qbkcxSUFuQm5kVVZVbW4=:100:H/o0vsDqmVfzkoLU6rPG8C7+0gzYjkH2E7q3+/5aXKFlSYEyBO/tiin02gxpcB0A/1j7fudGbZhQfI+dZa1GCQ== ### kafka-to-blob ### kafkatoblob: enabled: false image: repository: ghcr.io/united-manufacturing-hub/kafka-to-blob pullPolicy: IfNotPresent replicas: 1 pdb: enabled: true minAvailable: 1 ##### CONFIG FOR APACHE KAFKA ##### redpanda: serviceAccount: create: false fullnameOverride: united-manufacturing-hub-kafka statefulset: replicas: 1 rbac: enabled: true storage: persistentVolume: size: 10Gi listeners: kafka: port: 9092 resources: cpu: cores: 1 memory: enable_memory_locking: true container: max: 2Gi config: cluster: auto_create_topics_enabled: true tls: enabled: false console: serviceAccount: create: false service: type: LoadBalancer port: 8090 targetPort: 8080 console: config: kafka: brokers: - united-manufacturing-hub-kafka:9092 ##### CONFIG FOR REDIS ##### redis: architecture: standalone commonConfiguration: |- # Enable AOF https://redis.io/topics/persistence#append-only-file appendonly yes # Disable RDB persistence, AOF persistence already enabled. save "" # Backwards compatability with Redis version 6.* replica-ignore-disk-write-errors yes master: extraFlags: - --maxmemory 200mb livenessProbe: initialDelaySeconds: 5 readinessProbe: initialDelaySeconds: 120 resources: limits: cpu: 100m memory: 100Mi requests: cpu: 50m memory: 50Mi metrics: enabled: true pdb: create: true minAvailable: 2 serviceAccount: create: false auth: existingSecret: redis-secret existingSecretPasswordKey: redispassword ##### CONFIG FOR HIVEMQ CE ##### you can set a tag if you want a version other than 2022.1 mqtt_broker: image: repository: hivemq/hivemq-ce tag: 2022.1 pullPolicy: IfNotPresent rbacEnabled: false initContainer: hivemqextensioninit: image: repository: ghcr.io/united-manufacturing-hub/hivemq-init tag: 2.0.0 pullPolicy: IfNotPresent resources: limits: cpu: 700m memory: 1700Mi requests: cpu: 300m memory: 1000Mi persistence: extension: size: 100Mi storage: size: 2Gi service: mqtt: enabled: true port: 1883 mqtts: enabled: true port: 8883 tls_versions: - "TLSv1.3" - "TLSv1.2" cipher_suites: - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - TLS_RSA_WITH_AES_128_GCM_SHA256 - TLS_RSA_WITH_AES_128_CBC_SHA - TLS_RSA_WITH_AES_256_CBC_SHA type: LoadBalancer ws: enabled: false port: 8080 wss: enabled: false port: 8443 tls_versions: - "TLSv1.3" - "TLSv1.2" cipher_suites: - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - TLS_RSA_WITH_AES_128_GCM_SHA256 - TLS_RSA_WITH_AES_128_CBC_SHA - TLS_RSA_WITH_AES_256_CBC_SHA metrics: image: repository: ghcr.io/united-manufacturing-hub/metrics pullPolicy: IfNotPresent #tag: latest cronJob: schedule: "0 */4 * * *" # Run every 4 hours