From 80bd5bfcb37a3f3744a6e4752749f85ab106324b Mon Sep 17 00:00:00 2001 From: lo92fr Date: Sat, 29 Jun 2024 12:25:00 +0200 Subject: [PATCH] [siemenshvac] Initial contribution (#14263) Signed-off-by: Laurent ARNAL --- bom/openhab-addons/pom.xml | 5 + .../org.openhab.binding.siemenshvac/NOTICE | 20 + .../org.openhab.binding.siemenshvac/README.md | 98 ++ .../doc/Albatros.jpg | Bin 0 -> 46069 bytes .../doc/Diagram.png | Bin 0 -> 181348 bytes .../org.openhab.binding.siemenshvac/pom.xml | 38 + .../RuntimeTypeAdapterFactory.java | 465 ++++++ .../src/main/feature/feature.xml | 25 + .../SiemensHvacBindingConstants.java | 62 + .../converter/ConverterException.java | 29 + .../internal/converter/ConverterFactory.java | 69 + .../converter/ConverterTypeException.java | 29 + .../internal/converter/TypeConverter.java | 62 + .../converter/type/AbstractTypeConverter.java | 145 ++ .../converter/type/CalendarTypeConverter.java | 77 + .../converter/type/CheckboxTypeConverter.java | 70 + .../converter/type/DateTimeTypeConverter.java | 119 ++ .../converter/type/EnumTypeConverter.java | 76 + .../converter/type/NumericTypeConverter.java | 250 ++++ .../converter/type/RadioTypeConverter.java | 125 ++ .../type/SchedulerTypeConverter.java | 77 + .../converter/type/StringTypeConverter.java | 82 ++ .../type/TimeOfDayTypeConverter.java | 121 ++ .../SiemenesHvacDiscoveryParticipant.java | 111 ++ .../SiemensHvacDeviceDiscoveryService.java | 162 ++ .../factory/SiemensHvacHandlerFactory.java | 100 ++ .../handler/SiemensHvacBridgeConfig.java | 27 + .../SiemensHvacBridgeThingHandler.java | 213 +++ .../handler/SiemensHvacHandlerImpl.java | 451 ++++++ .../metadata/SiemensHvacMetadata.java | 109 ++ .../SiemensHvacMetadataDataPoint.java | 236 +++ .../metadata/SiemensHvacMetadataDevice.java | 103 ++ .../metadata/SiemensHvacMetadataLanguage.java | 64 + .../metadata/SiemensHvacMetadataMenu.java | 49 + .../SiemensHvacMetadataPointChild.java | 69 + .../metadata/SiemensHvacMetadataRegistry.java | 60 + .../SiemensHvacMetadataRegistryImpl.java | 1301 +++++++++++++++++ .../metadata/SiemensHvacMetadataUser.java | 64 + .../internal/network/SiemensHvacCallback.java | 29 + .../network/SiemensHvacConnector.java | 71 + .../network/SiemensHvacConnectorImpl.java | 669 +++++++++ .../network/SiemensHvacRequestHandler.java | 107 ++ .../network/SiemensHvacRequestListener.java | 247 ++++ .../SiemensHvacChannelGroupTypeProvider.java | 41 + ...emensHvacChannelGroupTypeProviderImpl.java | 76 + .../type/SiemensHvacChannelTypeProvider.java | 47 + .../SiemensHvacChannelTypeProviderImpl.java | 76 + .../SiemensHvacConfigDescriptionProvider.java | 57 + ...mensHvacConfigDescriptionProviderImpl.java | 69 + .../internal/type/SiemensHvacException.java | 36 + .../type/SiemensHvacThingTypeProvider.java | 50 + .../SiemensHvacThingTypeProviderImpl.java | 66 + .../siemenshvac/internal/type/UidUtils.java | 165 +++ .../src/main/resources/OH-INF/addon/addon.xml | 24 + .../OH-INF/i18n/siemenshvac.properties | 26 + .../src/main/resources/OH-INF/thing/ozw.xml | 35 + .../internal/type/UidUtilsTest.java | 32 + bundles/pom.xml | 1 + 58 files changed, 7087 insertions(+) create mode 100644 bundles/org.openhab.binding.siemenshvac/NOTICE create mode 100644 bundles/org.openhab.binding.siemenshvac/README.md create mode 100644 bundles/org.openhab.binding.siemenshvac/doc/Albatros.jpg create mode 100644 bundles/org.openhab.binding.siemenshvac/doc/Diagram.png create mode 100644 bundles/org.openhab.binding.siemenshvac/pom.xml create mode 100644 bundles/org.openhab.binding.siemenshvac/src/3rdparty/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/feature/feature.xml create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/constants/SiemensHvacBindingConstants.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterException.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterFactory.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterTypeException.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/TypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/AbstractTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CalendarTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CheckboxTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/DateTimeTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/EnumTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/NumericTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/RadioTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/SchedulerTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/StringTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/TimeOfDayTypeConverter.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/discovery/SiemenesHvacDiscoveryParticipant.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/discovery/SiemensHvacDeviceDiscoveryService.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/factory/SiemensHvacHandlerFactory.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/handler/SiemensHvacBridgeConfig.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/handler/SiemensHvacBridgeThingHandler.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/handler/SiemensHvacHandlerImpl.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadata.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataDataPoint.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataDevice.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataLanguage.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataMenu.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataPointChild.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataRegistry.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataRegistryImpl.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/metadata/SiemensHvacMetadataUser.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/network/SiemensHvacCallback.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/network/SiemensHvacConnector.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/network/SiemensHvacConnectorImpl.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/network/SiemensHvacRequestHandler.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/network/SiemensHvacRequestListener.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacChannelGroupTypeProvider.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacChannelGroupTypeProviderImpl.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacChannelTypeProvider.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacChannelTypeProviderImpl.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacConfigDescriptionProvider.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacConfigDescriptionProviderImpl.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacException.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacThingTypeProvider.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/SiemensHvacThingTypeProviderImpl.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/type/UidUtils.java create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/resources/OH-INF/addon/addon.xml create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/resources/OH-INF/i18n/siemenshvac.properties create mode 100644 bundles/org.openhab.binding.siemenshvac/src/main/resources/OH-INF/thing/ozw.xml create mode 100644 bundles/org.openhab.binding.siemenshvac/src/test/java/org/openhab/binding/siemenshvac/internal/type/UidUtilsTest.java diff --git a/bom/openhab-addons/pom.xml b/bom/openhab-addons/pom.xml index 631c9f7a82f75..bc27b7d2f8f5e 100644 --- a/bom/openhab-addons/pom.xml +++ b/bom/openhab-addons/pom.xml @@ -1626,6 +1626,11 @@ org.openhab.binding.shelly ${project.version} + + org.openhab.addons.bundles + org.openhab.binding.siemenshvac + ${project.version} + org.openhab.addons.bundles org.openhab.binding.siemensrds diff --git a/bundles/org.openhab.binding.siemenshvac/NOTICE b/bundles/org.openhab.binding.siemenshvac/NOTICE new file mode 100644 index 0000000000000..451e1f04ab2bf --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/NOTICE @@ -0,0 +1,20 @@ +This content is produced and maintained by the openHAB project. + +* Project home: https://www.openhab.org + +== Declared Project Licenses + +This program and the accompanying materials are made available under the terms +of the Eclipse Public License 2.0 which is available at +https://www.eclipse.org/legal/epl-2.0/. + +== Source Code + +https://github.com/openhab/openhab-addons + +== Third-party Content + +RuntimeTypeAdapterFactory +* License: Apache License, Version 2.0 +* Project: https://github.com/google/gson +* Source: https://github.com/google/gson/blob/main/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java diff --git a/bundles/org.openhab.binding.siemenshvac/README.md b/bundles/org.openhab.binding.siemenshvac/README.md new file mode 100644 index 0000000000000..43bb340914edd --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/README.md @@ -0,0 +1,98 @@ +# SiemensHVAC Binding + +This binding provides support for the Siemens HVAC controller ecosystem, and the Web Gateway interface OZW672. +A typical system is composed of: + +![Diagram](doc/Diagram.png) + +There's a lot of different HVAC controllers depending on model in lot of different PAC constructors. +Siemens RVS41.813/327 inside a Atlantic Hybrid Duo was used for the development, and is fully supported and tested. + +Siemens have a complete set of controller references under the name "Siemens Albatros". +Here is a picture of such device. +You can also find this device in other types of heating systems: boiler or solar based. + +![](doc/Albatros.jpg) + +You will find some information about the OZW672.01 gateway on the Siemens web site: + +[OZW 672 Page](https://hit.sbt.siemens.com/RWD/app.aspx?rc=FR&lang=fr&module=Catalog&action=ShowProduct&key=BPZ:OZW672.01) + +With this binding, you will be able to: + +- Consult the different parameters of your system, like temperature, current heating mode, water temperature, and many more. +- Modify the functioning mode of your device: temperature set point, heating mode, and others. + +The OZW672 gateway supports many different languages (about 16). +The binding should work with all language choices, but is currently tested more thoroughly with French and English as configured language. +If you use another language, and find some issues, you can report them on the openHAB forum. + +## Discovery + +Discovery of Gateway can be done using UPnP. +Just switch off/on your gateway to make it annonce itself on the network. +The gateway should appear in the Inbox a few minutes after. +Be aware what you will have to modify the password in Gateway parameters just after the discovery to make it work properly. +Be also aware that first initialization is a little long because the binding needs to read all the metadata from the device. + +Currently test was done with the OZW672.x series. +No test was conducted using the OZW772.x series, the code will currently not handle initialization of an OZW772 gateway. +You can request support in the community forum, if you have the gateway model and want it to be supported. + +Discovery of HVAC device inside your PAC (controller of type RVS...) have to be done through the Scan button inside the binding. +Go to the Thing page, click on the "+" button, select the SiemensHVAC binding, and then click Scan. +Your device should appear on the page after a few seconds. +Only test in real conditions with RVS41.813/327 have been done, but it should work with all other types as the API interface is standard. + +## Bridge Configuration + +Parameter | Required | Default | Description +----------------|----------------|----------------|------------------ +baseUrl | yes | | The address of the OZW672 devices +userName | yes | Administrator | The user name to log into the OZW672 +userPass | yes | | The user password to log into the OZW672 + +## Channels + +Channels are auto-discovered, you will find them on the RVS things. +They are organized the same way as the LCD screen of your PAC device, by top level menu functionality, and sub-functionalities. +Each channel is strongly typed, so for example, for heating mode, openHAB will provide you with a list of choices supported by the device. + +Channel | Description | Type | Unit | Security Access Level | ReadOnly | Advanced +--------------------------------|---------------------------------------------------------------------------------------------------|-------------------------------|----------|-------------------------|-----------|---------- +1724#1725-optgmode-hc1 | Set Operating mode heat circuit 1 (`Automatic`, `Comfort`, `Reduced`, `Protection`) | operating-mode-hc | | | R/W | true +1724#1726-roomtemp-comfsetp-hc1 | Romm temperature comfort setpoint HC1 | room-temp-comfort-setpoint-hc | | | R/W | true + +## Full Example + +Things file `.things` + +```java +Bridge siemenshvac:ozw:ozw672_FF00F445 "Ozw672" [ baseUrl="https://192.168.254.42/", userName="Administrator", userPassword="mypass" ] +{ + Thing rvs41-813-327 00770000756A "RVS41.813/327" [ ] + { + Type room-temp-comfort-setpoint-hc : testChannelTemperature "TestChannelTemperature" [ id="1726" ] + Type operating-mode-hc : testChannelCC1 "TestChannelCC1" [ id="1725" ] + } +} +``` + + +Items file `.items` + +```java +Contact Boiler_State_Pump_HWSb "HWS Pump State [%s]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:2237#2259-ppechargeecs" } +Number Boiler_State_HWS "HWS State [%s]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:2032#2035-etat-ecs" } +Number:Temperature Flow_Temperature_Real "Flow Temparature Real [%.1f °C]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:2237#2248-valreelletempdep-cc1" } +Number:Temperature Flow_Temperature_Setpoint "Flow Temperature Setpoint [%.1f °C]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:2237#2249-constdepresultcc1" } +Number Hour_fct_HWS "HWS Hour function" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:2237#2263-heuresfoncpompeecs" } +Number Nb_Start_HWS "HWS Number of start [%.1f]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:2237#2266-comptdemarresel-ecs" } +Number:Temperature Thermostat_Temperature "Thermostat tempeature [%.1f °C]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:2237#2246-tambact-cc1" } +Number:Temperature Thermostat_Setpoint "Thermostat setpoint [%.1f °C]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:1724#1726-consconfort-ta-cc1" } +Number Heat_Mode "Heat mode [%s]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:1724#1725-regime-cc1" } + +Number:Temperature Thermostat_Setpoint_bis "Temperature [%.1f °C]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:testChannelTemperature " } +Number Heat_Mode_bis "Heat mode [%s]" { channel = "siemenshvac:rvs41-813-327:ozw672_FF00F445:00770000756A:testChannelCC1" } + +``` diff --git a/bundles/org.openhab.binding.siemenshvac/doc/Albatros.jpg b/bundles/org.openhab.binding.siemenshvac/doc/Albatros.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4fc744432f7fec58d1635b87c111baeac6299722 GIT binary patch literal 46069 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ì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 DG7R17 literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.siemenshvac/doc/Diagram.png b/bundles/org.openhab.binding.siemenshvac/doc/Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..300cc2f85838738d1915c87989e2724fa6460279 GIT binary patch literal 181348 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ǤI0X zvl?o6G8lc5)P2goe~YEdUZg8YZ=I4hH4u<8pg^pB*!zm$L1?wUI?)0D(8L(e=-af& z57){M6>kldrvI`sgb`SX3)$q4P&wvN`ZFQ<;(1JDx+sl+pNbt`@yesqF%CMEcuXWV zC9yz&juBqaZ`RWqu~1LFZq$kC3f~QBr}AA4PL?Q_!<(R)cMeE{ZxBjJiC~4$=v+K< z5oUo1StE2uz+1W|CMgjTgN_Ty;z7XSI#YnDg^jyeK->wv_~$!^F;M(h!(>D>Whh{rR>QPKV2V>U%Ttz`v zO=0qaE@(%$b2KeHZ#r(K^%`_z7!!}Xx9dNTnjO^=(fsdCgxX`n92gPrn+o+Zl&z56 zm@9L3cY8o@Iz>LyWy0i7&}9~BQcn@E-O+cRDpBQp1EER!X+<#AX<~gt?9Jbv?vWGf zQWJP%^6ab}A3O(l)UX;g$jRth^Af3xh5ayMYjzuoCU%uLf1Q^3#?SJUv!F-L0KQK} z(<=wJSmP`x9O*cC2+7c^tTh!y}HkfMeN=FTH~3(b_`Y!K@rij=zVxI0T!!e#SH8gYp2R+&NGd++|XWsU;I zBIusIo9Qal z-}L?>A5Pk&1H~8&@(&%=eEnsigiuvzNu2tN_@~q7v_Insa3Xn!xVL`VfPY#^S%h4c z)=&qbh#bnapUbsgtOu-Q9MngrK>-Z-Wt623?G5=&blaer(WlGX9^%L}{9-^#~0?S5g( zBy1l0^buKZ&zCsn*_=IIjgWc}byW(5r*LSmkS#u> zh_+iaokFf+Hd=Wb6eH)YdD)d*|Vv$cv?4* zKd;jkp@fXG$mf_AZ;f=30o!}LbbG16=c=dM{?Ad5pSYqWYn#=+FU-AORXAljQhslw~5bC;?%~JYk=Jyfz>^Prj?-C@+-5e z=>|V>ONNJAU!lop?-}`kIpLdpyb+er&&i!SJ<(PJA;0%Ifk+SP86Xn^$TBAQ1*t)A zD)A|x+zro~v?Mpr^XAJv3KFW#_WHe|)<_ez*7t*n$K8qWNoJJfUIvK5l}K;L*F(}f z{O3L)a)v)w7GqS2*(Woq*vx=>H@u^n@!UgV^(^wod;ilRJh==vjIO6I5;Ayi*gJnn zz1Ac>c7nt{kXaAL_79GY%*AUkUT_!=P+{`^juWB*#e4ikdonH#GnIdbpWHbn=E-We zYmANC8vd&H5`K(&9Ff5rq460zWtP5CLa*mI*7{h!CEP*CPntehi#PmxXj=lE1JeGw zS06UXovlPR#650S+P!(I@%7nuxJY0tEgmj*HWy(hoC8P|@ki}*;*SAIN_yYo9uIAr zjD3ae?$R6O8lrnfQD&toxJMACeXVqpV+x$MF;*D4!8=PAWe^B=ft|h_BqVS&YuIKL z77p=n2ZwdM!~YX!M$n>RWvZBopb*>>=UY`XSE6cn5qbr5=&+_3DDQgj&O@}pbe?|a z<%>TUcUd=YX!N|%^H`RnpQhQMN?E)}lzTH#lSo=Sud6G&-EMw1cK{H6>r2q9cMXoR zYA5ar0aAvJd9mNNkmpq{yck{KNG5gz)4D7Mivb_7f^hBd+$F|t^}>xhXnSpXx%_f; z$CTCSScr7N;c3*tHMoT~D{!x`i>K*K4SWBFOhPoIrUf|2C=5|EaylqcMTQi&Esb>1jjbO|9kTcKsZ5+2Am%R8C z(I%pxUO}8BOH7}3z)y$g*hFeEHR73c6SZ}YW7>W-dlU#bv~86YXf}4&0g|foehokP zi4=iF>9fsgJCEW=M4&C+LjbA=xcbl0c93=r*$fpFTI`QI*=ZQ!Vb zdXpxB3Fpj)L`TYLhGTbK9`9T9Eljq$pPG65z30br5g8t2K`1mmTT^?VwrteKv=Lja z38|tKiJb%1_^L=t+s}Ryl9!R6t$sfO;x{N(gqy$q5`lONa&#qYMq#Q!4#UHKFVM$H zuD;HhWv8F+bfDF`A;2M3KAl&xeM zTC@Q2b9O?a_YXo&!m}B71o-ZJj?la^?Tx?AL00xO6aZga0p77I%2>*k!u(^@+a<&g zWtR2)MH0KKE1M3(D_@cq`W`qZ9hw^^z>zyrcDp^ST)S?gRUGk9V1g;KbSqS%#wuWJ zdqTm2B!?Y4Pe~L8J=vBe;cfI-b^U9$#40rtJk?i<=|b03m|;>00S#YqI|O}5O<&-` zy{@aYB3Q|YCA7g_mZ(*d`RD-t!ywnwN8r@zYaKGga0`Ah;XLuT&MuzDhsW5YbAcvo zGn&UXJ~rJY?kvDf45qyj42D~wZEMr3Y>6I!%IKV&DYcU)3$nfCyyxgT9*v+gXih&_ zo0N(E-1{`E>#|um+&kJA!|=sn_ev%|@+hTp?KsgEzBLnP_tpoy*VT*Usi#fv&;66Rs zknQ^(^0izKO|#Y>F*imDhEvYB2Z?FhbpHI(ydrc-6lHbGr{}eX;JF!h1rf~`qiu@X zfGNca?Y4&A6%+!=cpfpKqb2FHw~K>5+>Y$DY_kOMb>_l=aIez}pwBn|LTvtdEBKR{ z@GE=wLmof8dxwix&6IWOpZj1Wa1&o70V<>NkgLCti9DyD|E`l}vrQ1o_@n||Pdzo8 z@vomb<%Tp24f?j5fyUPs!ij$BN`Q_Q@7CgZWn(p44V(Q{u8nj*Gr5>utT(*-r90E+ z?CR=>C;jQwSY1+B%>1C0?}W>tn>p;-nH>~;QIFmLmsZdN+u`o}s?Hwj-o+=k7@y(n zyBUmzw=ZT{k57}Z5i5_x3XSOU>#MAj33K_?n9{}$ZmL)0{i)7QQvk^MmXViUn@0Y zD0R1zLZ-*Ohu#Cc*Sa7N5QWtd1BEB2e}9hN^HU)I_A#;p&|R;rzrR@iv-Se%I`Njy)I>qq-{DD}^pgV% z>_5n)lb=j~BNj(}aHsaM!D&F|6bmPxzXSD$u($Hd|Nj2;=697=RXN{w$fz^^;Yl7a z^!WL1ak3+&YTuaG&7|*ba0z%$13k1C2UyE~sDVn|0mmAYxXlsjA-~ekU-_fLv^_*? z1aZdjL0U0iLebyhS7cJdQj~S{a;VNRfu1F`Vg?q)nqWZ8HUXqf1m)iqD$#=%Ek}`s zk)3|AHn}8$yjU7tnbj8ZJGlDu>bdK3RGzkN_vH&=gtxpt*3~L4tNU*Q(m6NEDBJdD z%u>e4BfXY$)Q6e7A$2y7-xNdXOMY?u?S+9eCwbAI&-?Ob{w_q$TurLmn_L|nXD#_n z@V5u3b1nHj4s#H?=ZUiZivyf9ES~C3l4D!}1XBI5`^$EvGH7sJf~==Q#&s>9wkHsUf0)vFkKf6) zy0KgeT&V85?GF;oc@p;E3I+oIJo+g~TksEWSA+eZ0sp>B)miN5+6JPbll%4w=8ja| z%4Yw%gx&qMeT019atEggrN}oWsf$d?BP9sK-W9vHBrsDH(iz{q9WR^yA_z&T_iuSW|NcFhL+tC#!3&=%rXK6Mm2u@N5BiD{kpio!})~U`Iy8>$5Y&u zw!1^+EP0_DDlY4}Z_qMIiKx$RZW<3y-@(hzi(!^bjC*t@Kn*&V=cZ6ZN!+A;ZRfus z@%nSKJ+-_O{E{SIqs9B~GGX+v{^@-EA*#N-`FkqUqsnP0L7U1e&@Uk0dLkE@*$_G~ zK6*ydusUnXWw7q3ozU^#7{WOJq~5yTtxfM0g*Ms-R_wr?+Q{Ict|uF--Sc9VT?oKQ z54xmGcz;B{`D2LHU(ec-n9Vo}eYn-D!W#9>*e>ol&Hj+&al{ zp84U&7xv&74%WCD+y&o(>~JZ5r}nf%dP zwOSFqzGV6Lk-XR4k)6k=uABP=liNN&c~60-aAcS|nIb)_i@+&t-}9C)qWzTax!!l& zw8KA~T+4rnu@Bm{^YeJBR{8clFD;3L+{nd&Q)`Xu{aE|(hCt5hFV2%f?jo~ILb3;e zsH1yk;7o@<9bF8J#DD#8t`6dPU<|%o{BnTn3x2_+R~a}*Id9Y5!!I0_5$%PeTqzXV zFNV7s6w>bZFsc_)^MVYRf3DVVJcR;=ul{n#9o}Y2ry;ldEvxqWS=KiWJ=xr^HTT_j zwXD2G3l)R`}&0|`hE9%nd1x(B^X8f@$c;_ z+b(CKrN8gwj+zLy$*xJcmLAO0XB}UR9Jaq`Cc6=E5j^DuMw;eT(M7_v#8X$ zS+$GpI&dhZ;5j(k1Ft1&@%a6Y_U(d^P(xo^{Cx5Kum7RJT>eK?fBIeLHi7R(!pO)7 zjo)RzBg1tmEX}r!IO}d<`xppV!Y04&cyZk8d*6Ejo!-C9 zpDrLZj(qK3{_)9`@87HI^Frasy^3a><(m=LW7I48l>~LYFVlOfxOD7MDR2IT@je(J z`uG|u?!EhxgdjBS$DLU30YZ^raJf3(dcNNJrKiCs5qG8=f7hGAGFApvYhX zTJ`$Xs)mp&GuDg}ZEXKnW--+Kr%_vVQQ#^4${?m>SVXraXgTBX?TiGe%YRj}9`85> zO1W}@B{m*Nl|xp-VW`N%4sC6A8#;UT%W)b{>=|}Nx#N!1oG5kZd(!pcfu9>gR*b}@DqIj z@xEM?fbQvv+Y-RqWf|#&A*W?MNVbH!ub5iaP8}fnEXL$t z!|&SlgWv5^lzl+;*C!u1d3eL4B*AmQ#d835 zs8}p38MLt)wEb@K+iHQ#W1+e3_akCYBA%`w*~*0@HV_on5=h|rFdav{Hwn!2$Px;8 zZTF!)p(ypK#&s`MsNv2q0p~>jz5FF6skej=`pd&vFr^U_|$)% zDfk$r{Xof4-cp!D^c-{bE=~d4@?xK_m{V>Gx)8IinI5*?uP)QOu;K7awp~hYHf7~R zTdW_;d>?51QSjC-@0vGKJHyUQuSm(}@9<5R-LN~Jqa+5}1%r?n(5bt+RPNSmjUJT!#z~?hJhjA)I>wzJ#`lKZ0xd(N3IBU-myM065c|+K|_t-h` zf+N@?SR;iw$uriGxYleKWsWS;dhtUYoGtUVdNISV0^d7^ue88>b>$4M5L-9E-Ua zafXM=7HsF@~%d&f^N-;<88?uAX_c z{<@jTsGe$K_RCuNOAZ~Z)C)DCf83eOWY>l)^y=|cPyHwcvECiMG->TB?}umY;x z6BT0Xsb#s10nNq;)wKE`GX2H)ij__ZDLn= z8xQ{N{B-L)U)TS^-D1hxX>ArD@+X`9($t#ZV5#>Qyn~?Ox?<0lD#>2z0s5LwdNSBW zYy9dlw*S;vLF4D!184+X{gKrrp2hP0FNKNo+MEr)X9PF7thP*cTJ`GOwen(23{(|LOS5O}y|Px$ohKeVgTN*tvwb>9h+zQ^?tFxR<0SwNL) z=K1Le45dOg^e7r4z3}g30LF`7O-J}1#yW5 z3Vbi6p=HW8i-JJ(+I`oL;NbIxh^{~djSo=@_*eN-+(!y6_zE9nCyn3q|7QD5qQH^a zXH54Kb-E=GrKK&c|I2uP%4lpCh3?Zwd*Y+xah73QhOFT+7DCO3K~^Jf@e39KaZggy z`D?C8cf7ats2~U9L-j zJtx)*c1->zFOa;q?A8ii#jM*Je^Kl5E;+s4_KH2aMxwxNEE zuk~C1@wJ8?H8>(QI3sKSDQ+2yC#6KFZ{-v`c)neG#xN~Vw{#Eon-FIL?&0T(g;Ppg zNw}|#7Ra-UMqCZwSk?_%iJuHy-I>N4f#CY!4>Wq%;u(ANigE)QL#>+ZkN?tu(RfusgTgH_PecfY@hX< z0=UZZ&NNYXBl5?=hyH;l zsb~Gqf^de{X2EZs1cLAi;Qw4V|IERN2k<14QaM*65Z^hb`KlFfV{i=JZSx28qA}!= zaQQl0qMJ3xwST&{%za58j7rLJ{*6$H~z!**i;Z|A}7>MNnH!H;+s|3+zg!_?Nadma&0Hf!LP zXGnN=``so2yxv$UfHN%L{*ZvikFSQuZW+15n_e)@5Y7XLs|i}(57rM3Ks6L&+&2eV zg}m=E7196(mO7Gvom9i7tQ9TP>^b*IAP+IwyD*|Ut&W>rM$<3iiH zYd>or+^JLEPY*%gUc&)|`$Gg>OZ(cBxDEXW_>CEyzp7=IBAr8~m}Li9A%5ucC))Zjf_DuVgk)RtAn@`Z z#U;9&{=0r;1VPV9nx8&9dujAZq)DX-B`Kg zeZ#l3hDh%|cMT_;#|I9a$G!kj?~dsy?~~P-ygzqUPMr;Bw5E#z8YixS!IT1GO=vky zr#fDo9oKb_%e6;L$IFfS&UZW)ehlxRv;{m>^ZBHB<$iwy1)Nut!~;xw^2PtmWCnPs zd40oXuFXOesIFAcaepC&P8kQze$@3-AqaOF`npf_v`5Q-Ke|;3ZkHV~i9P-kpT8fm zvKPEm=Hh@t&tdImeZ6Zipht>DTSws(F%hDC!M(DPxOHwrYYIN7UZ(*ev02w@B%HTJYyBV$&_;4129#HVa!BxgC^Ki2FMf zJf9Xf3)>rUSq^@dSjVP$e&rOjNs_w=e=8vFj}3a9I~(w+dV;T$uf~?0J!64xd^)3` zr!bzRj(b$o#XuU+Q_&ifpXNzBfocK#oO9L%h3~F3KSw8Tt|uv+AD%)lek8-mK@VYf z=4)4Lz5iI%H_TpM?%aCq;G_`oAj+h(01}_od!@i*&b6qr(+3`Dt0$c$&fw!9-^0~v z%k>>K-;KX#Ke;<^b~?jC_R+-r_DIh!Iv>53{idK7n**Y?Cx2bHRA}HbfsgQ~%A~<( zn9sR-$Q6h2-A{?`q%xP@b=I8ol_QC`kjE}p^I?WLi}Ul>->s~G*1baR*Sc@TJy1)m zdb2J*qwe^MB_VcUS6y2%hdldx5XE69jqr{U0wNQ2_^*>KLI_Dd)zWmkKF_*t&exVG zOTJ`=JlHWI!8bWyP+odN?j;b2lx1z;%eMLpC2S84qq(?}fY<+L5Mu*NhF@^NW?kFS z&w{E^X_U=3&Nc-@u2y{K{sa?uBCKg63!Ylw;qW8)BROm-%xP%9$u9N zAFgeYhFo-RCco@I-}jJ$%7S%8x!fquLf}tnU1|tO9~THT3rA4X#4z?dcKYS$*Yg8T zg#!;%%zDgV{buXpXMV{9DF`vB24V>9v9*Zw0^br;;NS^yz2vkSwv^#Ic&vJ$^pE~8 zgJKWf$_gyQ!$b(W0f#(i+|PcSrlmxaKi(Trq>zdRVk3w*>UO22L&#HH^Y5lSXLN`# zMoa1cSaF@skWiFZbQ|_loqf7tL5dX_)~fotWSG7sVgNOVn2njERLoY76i7BbXe;gkhUYy+f zEavs~EohU`q>rZx!G^q5)v2L`$-$&X0-ywgd9>t!H&s71o8QH7i3=zERU*GrEjx?l zb$AN*I(+v|^htZ`Rn~v@BHQH6Wzix6ey>xt1o_|0ZPSkB`lH#!B(4AJaGvjUWVlr7 z{P?drmC~Q+^e4i*Cz{*pnwyvZ&3MCof_Gpkl>6kXU%qZZ9jCxneyE+TN59CEwh*r` zg2F`A(=|bQ(c^h%aR!Ou5@;se;k{4p zE1iKzJ0pCiIhp;BSO!j+2-3DRlX!%J>oeQSj_X=PR~E*QCy>|XbQr;3%M$AGe3$D3UWi>W=mkT(YvmmQQB zho{V6&U1Ul_D*|LjA$g?4#}dE+atsDy*FE8T)Q)vU1df*3DAASlM<6xu*Uc4a>XC$ z$KEc4krssDt1o*JqHI;0ug{G7?k81S><iLJ`Kt&XQv$b=fG@YY_4 z#k|(Mvb;LuoW}!6eO6$cLJ$O4Nfm@#eH@IEymH0A?7ao$60UhwedP~AsFc#RnQDe#n} zGClWSK4k<;Otz#UHVKI`oWuSvBZgeL2EUcK;+2Sk-_wLpAk^t4B57dVG+mu9b8sy9 z>DsdqtOWXadiJZ%+LVrg#2$mWg+jC^AlGGaL zRQ7uv&jW7q{mvt$DA{VTq@k}n7yDeeHa$v$p_EC4;o1UHZOrI1`Wcx9oSRlkJ&p$@6fZ;RIrT3!5JS^1*je-?7=)LC z3=@BI1QCWZBuk)SqZ+g=(|6;ay|c+{*~Xo2{Rv1% zh`w-wp~Nw1r1U^iEb_po9KnsMCD-mihM2j%`a!wZ7hQ<%05A9`707Jj8zfcyfvNQ~ zZZ$jN@HRe2=+v55G>$LTn{Yx&{;WBgKBI9NFwL9|SwS&1N@d%x`UgyVa7A)4~xe&a^9 zi=F;t8jM)~z&O1Yjg0+Ery4sb&OZsrEBlW=-(Z!>kVQgg5NXk9zHaE-SE_*U<>v}M3}VwyB4E*0I)qmJ_N+mQOi8RWM@aI(x@UB*D- zNN0#WD57PU!yzgv0!|6*o&U2%z6@(r-^_57NV4K|m3;?_vRsVVqj?Z`Ic|EPaq>OS zDJNw>2=RTBuIJcveOq#qazx{b`C|jD$KujUev?s+QhM4&xD%|jY zBS^&^bh69LfX`H#P_i35`dx_#d2X>D?bB8l{~2lZpmpfc z=Azh@05c+b^IE49G0_x4G^now&m(9wCPuzeZ>_s(DFhmMtR*rnh>3pDU++T%C zytosa!2YTSYdOPvC19^W*F|_gWdgHTHI(h50sfin93Tf5V;?%^9?sqKHm#}%b6VPMVW9~ zB+D{)Ue}4>0#XYWYYd&^3)$WU@8&k01zHu?iIXCVwqyH0W<6the`*}(J{&JK;gyt> zi1%9}2DWWpp9y1}r* zU9diK318B`d+lBH<$^9Jw(Eo(dfgyvA5yh+ErOr?3j5?JyKyH;F>DR}JmcJli-74(Ymi1rL3g z0!el0#v*1%!X>LcT_8KF9`M|k1V|zOhEzaLL=t0nE#6Fjg&UkI;$k2kp`7m2mE>Ju zAX{C+0M0w1>ucjDdwSvZ-R*ERuUJGnenUrMFX_2M!S?Nv1LXU_p-OqhQrv-sT;jtR zG~XIXLEYj^TbdYxXXaiskVM;IFG#Yo)F=*)9!k95V`$oF*=WMRZ&P6#vfI{pXOM(; zlp^@ZFXlV-qn!O?7^e>^0FS>%uLaAKxh)*etOL7ZH!$3~P+At)1T_YuQ)=kf5#7jL zP3W|~Vdp>6)NMmy*FD;BSZ33*>5E9WPv$odXd_?R!oANWw*PI49&$w@n=5CJGgBfy zMnvI#Z0|)2aFF&qA!#+^WvWluTZ>ujNp(wYWd$Xy7^ zQNT~rGBPY-_qFu8uRS@9Bp2#jd)W$|=*2G$Na3|tG9$tFyb*}xhbp)h=qVymM;*mR zSDgUL_>#STUlc>#gBZ@f*RmeT5mf(PYA(yjuzz`VrDrl{LiUUI-kSO+py5EI;R-TzgHw2gil-Vb}gspm9laL zc~78~pj|k>M!tB!2MXYo>#qfrgh|9V%C>=v^1gyDbk*e|Y(YJSh4XN~PDu*eBH8@R z0)P0Rw5=f!%EOR`nI>+EP8|S47JJwZvR7$7pYi4lWPivK*flfw@XsgM=8Yo_9T%PFFA?265|-pICjVZ3%OuVR(6@dEr}!PYQT z$}(a^a@A#;5+z%Q{Q8BOp59;nn}y)qFzzKi9koR#OvAlnq^glsD!d*OBEH8K~$c?`b9+@6ph8t zA73{=ydgb> z9{$k&N8(c`e$agzX~fp7PjJ!vg7R%VUHtdwRLGcl6#LF zp2QQ_xDw-ANTNnu!G(a~eNV$I$ZlQ;!S^gRdBSN%LG~dvWGB1y415YwYJG9>3 zTm-@x)$J&rrGe24Ed@p5w!NeyMI*sYPqmH;NR<~P+toQt#TD(Na`aH1Fn5)HWmVX| zyI9bg^^T1gVlaHB=JYA_k6*7{~z6KabQM}qb;%x;Q^8%Y0$lT z&`PV>_BTVJ#fI))Qp&;@^G3!Bm)TPnUIMPGY)F`->jC#0G5z6z$8$~_64|&irT@&QukJ6l`e_J+V<)8Q z(9+nSin37?Vdx{{+lYjklFCayRXQ$t+CVO0TqqU*Dg|tMZ2UnRPS7D0p5k&?W>n4P zp_;NCCA5@i8S*U~&1WvG!Uf;ykXvaE{pqse1pvphSua!A4Qh~#np_$~>ufSkN=jv{ zh#7~4zXp%J5gBeNG!~TxQmd$->?pG3B4?B+BRoqli`yBHW9re8K^~l@!3W%*8CUL$ zN12Lgs2YvdKe2Ur%PT?tM0!L1M0qowUwxTR z^wFUY($ex;z=-`@4(q!6+(x_4ORN$hNY2O+3D=H+A_u{KjeZ^e@zx}^wN-g~Ru`*K zg^v`$XehEyLvQvBiQdt9=+Xkg)eNi=>9mO z3}9>R)bpO!j%PWvyi-~Bo<}S5#H)|IcK8anLH--yS|@fI|K!3J5pCL=S>F&5CqH5q zUsE9+_^I1|wYif-P1lk8@tK($HWr-4e?ZlMR?*)RNQEi7S>(^B^II0tF3eZxcdyhC z8_kVMO=O_e%(+PZGmS)@^5~oI0BktA&c`KIc*t7UH+^EYTt!4R1=`5U%pv|yCP-yL z;!rV@8=s48pHVbKu|2d!lmPcwSwus#21PDsx7W0u8rd$TSwC|7gd4rX-m|3EK^$vt zR9@wV0`(Y8v2;MSa3qZ^IDlMPa9qLpua*$SY`mgF`0A`1p?9A%*sntFX$MVZ-DNqv zCP#Cqkv=XvWjb;!A(Uecf&uyFg&`9EWt|M;dx^kt!qSG*AT+m4U8BY&I`rr|_JO6J z^p*35{C(b!O_1}){0MkkumpAMvq#$lEU%o!G}^od(@~GJ`&as~rbZ3U%nY%;(=TE_ zRdH%p5$I3qLaSR=jmLB5Q=UbQs38#zy(vor+iaVs%%74Em&2UI1yADqr6yuQziX~)@ z16l>U2^-SV>OpBk78$P`|0&Z}M zirMz@X@71*_#&e?4VP1S)s>Vs?0*oEoV7u=8NNl|lCWwqpd5VzRL>V76rQrhRLcg5 z%CzwAer9b?^5<~fUFLXc-M>=fOYidGU4CklMFLt?)#Ap@ z{Km~9;9R)B#k?y~V=&76U#w&o-S*YehWdN58U`W{S|Sg6qT^-xo)3{I0twU?)Vrhk z;Z#()M-TWIt+G@@XHBsJfu@vg`6MMFKG-l*QE6n-9x1^dDN>YRbTOAl;V76Xb2u_y zj}#|8or~YGB-g$q{ceA_-&BqDg_DzOJRQL`?Y^B6N2D+N`vD{6O|VojQ2ZiyZMp0ouX40)B1c@w~yF;);Q>iRa+j;4jYf+R^!ZNY<2 zrz)({g&{Z5Xv1k9#puSLFRe=2>cN3ezcQ-bdBb+R{ZjPg&U}p%!LDjB4W*u{)IXDGgHYNAfT;oiHYR<4EJv>! zv80Ej?+IFlNH^zPZPXI??6HN-=>dx!C@W@TiHOcxPk&qixlCo~n$ zG@>s22S)U_THDb{B8}Z@WR{742F#%VhO|2p;8C#cCoV=E$Os}NIH$sR;CjbDFV1={ zcZTJ3F6|0}SRk+;E%^dgLuqew{dNy5i#mD7?pqYAizwl{2LJUqQyqemhB18s^i=f2 z{dm*5UYKr}-;6m(2NK8`Jg5i<2_}cqND?%5Gw`!%edcQ{=o?WtJpKGy?yYE_tpD&h z$bTT2l<3vzD9Ye6e7^md=c{p@vb76>bDi5go^`@Iz~Fb1yS~%h1OlGRJZR`w61)|=#N6@RYmw_`(rcG5S2r`yqn@bATqr~1&qzTcJ$L!@VsR9d4{>~SkDj3kmYT$ z1PTdqLeDa*+i)fnzIr@U{Z-Xh?|4PBB{TP4<|O?x(l2`uj{qBy6^4TzSUH~C#CAz< zSu`>vqiM6_Pk)4Y(DR-|VWsWR2caMg+2wvkmF4>)IqHu@m(=3p=sHelw0vZP^`mwC ziX$xvToThEVUtvwpr1}>lae{$;mcr?lR40u&g76|NFL58_FsCd-2j+RS*P;82zdV{HyxgR2UBsZY%9tfP-vW_Je_^N%Z2SbiJv zla@&M;l$eoC9zkOnXgP<%r~&0FU@Y#g{<%qRTU%^drfIJdy6Owj!7@|Ui9*%4aEsx&nIOW90!5+$&MbP=9u-8A$hnD{# z;x>yy>e6&=1emX%l!8>hJ#hE6(TYqZ&P%xAcmfDwOd)}=pPX|~!>V+oGQ zFF??M<7VKY9;R{*)9|5ix$=1k#*PtbQQ(qv?YgPV0*^0c6YU|398XsVgTv3M;+Q%%?mLEg_SN5+K42LcJvys*f;x0GPU@{SB{T6< z&Y+Z2D}@T0r7hFQ_8aj1Q3A%15W{)<{OX~+LXQ5u0u1L|IIFZ6K!qv2Yzr`1CUFK# zEJ*o8g&stnM0OfWx&=(KdKkF6Vi)pnO83oyeQN-*<`G~ryA?>e36e$6-j^~gkOKK8 zUFnfMAZ6z*uXb8P|MB_a@P<7Lk>>92;aV5<<{E~Bo-w^9gM8)B9tXq{^5-*wN7!x9PfUmA$Blx?YV#HA^If0H3u>`kVL_ur7b2rdV|`}3Io z>VG~bLkS;BFI?Zuoz@|0{Iv{2Nk73*p8gm@j@I*ovVyp`eW(qnby|@P9<|~w;Aj7falgfe152q68WxRwkpODj zF~ohGb%VJHx%{PZOGmO&UpFB(y{^a9Y0j_#L%epQ1HTvQYuz^JiHL|cDu}oQBKk=* zAR~3~yaP7_^npj==eCby!X|o%s*wbB@Mr&Bv2kv4{3Yg>5n)4S9owP!ptD7GAnFTVYFcD1-{64ELa}j+2WNusL!A@V= zE&Az#O>uOoX_T6L_$^RJ$3>1`w;e}!=Ar!eYTRYqD6nFlkz|SW{X*#E=1n`{VN2>vu_{a4y>CSO=gEfQlyz9klBGO9I=NTOr zLg#d%N>b1cQ%;S!DTl2pW%A-T>FF7w;!+lxbYdg9&bHZaLnzZa#Ko=jW({V#9cl?- z@sG9akNUMM9woTC-Tl}q0@!AnO?8rK>6tDh*o0N4!lWe%Fl^q^z{r_+W{ZnsfB`6k zPmhy2xlsjCYi_Esdel0fyh(HU7XNj$UUu4dV!&|FOoEWfh=g{xLVDROvGT~axY$>C zaZAmOrem8Rr>!zG)XZ#^nUr$%tET32*0QOFIR!B~kkQdFuY8TQ2Vg z^oi9&ImaF*4~gNZS4~amHSLK@_>d;_l!TVrlHOz!DiEM07o&-m98$u*D@*SnTi{wSZ{YanS5Pv4vOG5>YD_W!`Bo+xx`+9Ku=)D=|6-J^2I3QWqRtf=<2>}6rXqJ{>mVw56sqs|uGVE>(EQs@? z%egvy&hS-11un9y_@a^c`8;c_OaI&7#ymJjdZS@Wn(yh)1YHcGW-9aw%WE+B`MvBN z9KuFzW0p<`08radAxe#Rkr`h1Y)mETejJqlSBGrvJ%wW<=v_m5xmTh(`uay4Yd-{GzIwa-&(mMNgp zf_3XquN_M)0?V?;>VBgsOB;8MTPn<9)D2M$eqo7Gf{Sx z`#LQ=qJ2(&VUN^gg>lYLbechi#I^0j3=cTg+?KQm=eHGtb&ivvU@OtQti6MKb1 zuZtvW($=KXIZ^}&&eaH_WNr1WsLJBF^v>; z7?MD79p1ih=U?*xgrSlUq z#3eTdmgp&W{poMU18|{EL$bGSlfRr6$gu+MDaHW;jg#ZBIBs>paYN2P;KyX=2S*K! z8j=Sz$C^rWc4cLOqSjXYbYkOXKk>_}xnkOo%6XSzvzVUZ#BzGFDmK|q2LePyPLdWc z{zN;~GGl!JvWEpx6#UF|XF1IaTOv|tX&bq)!G#gD%eZ(*VU0N<7PeqX&6lM_;Cs4l z4k>5nZ2S6h`&V&sf?#e>Bdu0)e$)YDGv#_?d%54Ztpxi0Edi>RKG8DvgDJO7rvn6V)($4+w_+}>Tcn>QCx}7T| z#Z(Iq<;4yO{8~;%ZR~%oy;jiXhMoE&R9%JM@&iZA5-pR8e5r<11d8jNcpX@qVu2Tm zBQdf(k+asQCx0fV-`cwhe_AzN4f>)C`VxIdA{3`%?Wdy3R0`ROcnT7?c{8yJ9@t7>D(n8&4OwYystK-ymL!9u zzZaXoY{kW40X{3rUpdF0%+AdCd@6t*-ysT^9t5HiVcMS5<27f(DwJiD5k&aZjbtOP zUYE~nh&G7Y#m0bY+fW_(cSLZcZIGum(+D&5eUHH|*KVZru1Urxc59byS3=q&LLvzB z@Qf?ekBW_9J9sNmu+J+uX1aho8WAM zDJn%T6d7Wm&*$T=RxipgIifh)#z10^6z)1h7HkZHR#3toA^t*NQC$#_1i6b1j5vE?lsv1%#g-ZLfltcn!YIAv)8 z7I3?&yeqMHsOoL_Nm%RAk9bEj3u`-2aT?|9%Xc7Ti8pfgPC$7TZA>S%AJXiJKgz4w z<(-|2kgO6LAMAgzOIw*>emlg}R+;FNyZGjyv1SnQn&SgA38Vs1hs@{~XJGH}>%>0$ zbBxUy#AocjcF+GLba?m+b^BL!nR@z!yh^(PTY`iAdXImj{qJfy%@@S@xrSm?&A7Q5 zS&jY1l3OgMgu8Lwgckv_PAuyr?`DY5-A-9nkjAf)W3TZS_RoTCISTC@iRvzLr|^e! zJ~~WH8?#=1(4R{yYG$OtRj4{X$?0q{ z#;YF|=(HS~=b4)l-MIT>Vm`@JSTxOa?fi<#44s%^n{)twW>7_=pZv_nuv6 zmy)$amfe(!+=>oKaPA9_4*B(g&5PshEyLSlUmRrFmhmIN96*+jKsLcjO(}u3r}hB= zz@nqiFUd-t-)EM0mmrW&3lp>mH-o64B?R|%jN7wH3w@}S@Ed8B54uQr7wWoK{|&W^ zrzU1xR5g8Y?;X{j1q92u#=vn)T0c7aO73$byXCVl?DGuK}NwI9i$si*}E|+Wc_%6}A zFPJ|67weO4OOdSOkYG0_>3sf#Lat?=FOiaqwk1_b@Q}Jws-oMQpTXPwaUBn)Dvfrz z>ajbU)ZevgzgLahi&`dd2GMBUNe+@Zw&wf3j%64U(0=Y~CO*5+5h1(SQDO-Zk^_^U zB&;UOC*DN^T3p+LFU1+P24uCz`46l*lHc?p9=4_3gy;LeaUU zA$2YrfI=|59y-*W`=9uo0tXWAIG(hR)9 zqH+2`)lkY!m6jE`%E@PTSuX33`OoI)6svcZ(^;{WA@8P?faecOU&--jk?X4R4-v!) z1Wt#iz2UBoZzxYcT#1{3ra|JCh|iNBu0KJfbCO$jVA(<>mAj!p`ziGASZLUX!B5wz z`zR76D4_)Sm$||DTzqJ#jZw%8>TKEgH#k4m9ea=>$ZbCLYtyoQ%P{2g-fN_&Y2$5= zLEb}6Q<*tYItXwqR>b0?tXV+nw)L8HR(fwUX?7-f6=<8&CUIc3!_U=jX9%4%R5-1G zW}ggpSm(T-uSycN5^LjpowfsUggZRNb%MO*27*qV)MqywX>YeK#U~c@cIy@A?v!r# z(#LqD?QVo}d_e>m<6L$5njAs0e!nE1vtxo3X`XWp4dvmRZ6f(2{u?!PJ?6o|(i0fr zFcjtt5fZaQvL%h_dmd&oTuceS59x1T75F$f+&hM5e7>$_0VT&yljFvm@6>+{9Q!J1 z7;X=NK3V>k0}BwZ2pab8R+6X-bSKj+T7~0)!GpEHV@OHpqHpV>z95ffh@)kj9(LQ* zIe^LhmUAfE=i#dg$ABEE33%#*s9aiJ;AQOo)Lx)w@M+5)m?!+u4E~r|oEXn}%CKnl zpu|j-jLmUh0o*GN^;veO+#Soa>b4&4;I9v@!_+9fr`xhL7F_kU5@C;wtm5IxHsY9s z#)c*+?@9#RNLj0g@h}^Be6>LgkeL-Nyw*@@eV9KeWB4p^HvLC~Ibg>a_A?T<)grlJufVs<6P*0 zIX5v{UXhO9Yqk;8p~%66RaI9t^C~Rx=+KUrasl5m!9;PwYqe2P{z5hcC^c(M1Q8l* zE*$}>K^f>RiSLK%bhc~3ABpci%<8XKux#WkbSxlba-Drvw{%({YnYy*ORAlv?_Nw6 z|2-Z!F%!z$r5c)jns?c(o|_uhJ-Ab8pLLonP-;zmX{#&yI?hhOaL6rFK^LN(>!y)9*QNi) z1LN__CP~&NkAAyqyAmP0vhNIRi0Zx_O84v}OS~AUBF)E)OxfMi7OTgJ^cSf1Pf6rq zL1i!)!_S$+G5V#!3et*^_w`WPaBc=4eI7C?dNLUxg$yl)TsdV88#Ddkc*VACbcoKq zg5wRsHRS(s^_Edlz26@w4BaguCEeXMbPIzZp)?Gjq;xlu5;By6bfc6~(#_BU0@B^x zF>nvx-+$e;?tQ^pyknTN&wlp))N^_iG01y0#=a$79c|-PxW^qs|9GWuBWsA! z-{f2748Q_hb6`!39_bEi!JPXZax-@j6zlkvtWkFPjvSKfp>in{#5OpI^?pni`@FDT zlQl;v)0LAUKE+j`RQ0bAg^+m;zRtv&C~`D$d)d}TAi6b-UQcnvb2HiIJ&HIlwAJ`z zY~ZdSUKgXhR7Rke{gr6JVY%@(q(~1^X^>DiY^Q+yi{Y~fno6z7?}79N-Xjn4Y_2h* z7JPmiBFe>I3Ao^mTP19)g9i=hd11?g?;T|;Tzb?SG37V?Y5k4^aa-KS#hBkF4*474 z4!$r%t0#^x+d6OZy?akXgR4=xRdcf=b6cB?{Rxd;KM&>+TtT-dn=$(KzK}Jynij?w zB9KeSm_B6;CuSQwC;tx#Jt|HT<*(%LI3hDJ{>a<9e8zsf=y!yfK6F}b)fXl3z>Ap3 zexQeENGLo=r;B|6#RHEU8DrTmNx|2D%bMj5Dl0FCnF4Um+^-`%$lv^Uj~zlI zGK(tXsD$KasVx_O--3P+Gq_3GjpexO30Um?K5FHBxDf=s3Ai3B)Q)$LV8l}F`q16^ z0(DKM;orQ=&)+KvcSHntNtixFG2TSxJgpGagI0>q52*g*V$I_e@~gIQOe_QnAAhQA zX^KTBk&tScKI489{?@5cNfwF)V>gw2q*(BrbL<}-9gWh|Z&MOYrc_L|9N`<}x;uPo zF#~p8!Cf`dn=0QVgRpFdjhI{kBFV>cxW6o33QY4&Gl|8r`mu2r()?2XzXi_5Va}4RS_a#wQ zZIkh{rg&+9Ql{oSIy?LZot)N93Dmlp-Xn}TomFrymK+e#qu{EqX*mq8_SH&-mXA(S zfUs+g)oAiT)-<$V)z>}aW3~#Lnk0~6%!>L!!|Xt{eEyl@ z*pOB|RN+610apj45E-g`l>}nw{qu`H@V7K{`2BC$uY4B%RBVrD*}O3VBSAc^*Q-Jh z9$sDp-(NsCndZvLg!^z^-5?v+SY!QYz1?-c#gMno*bMC(1wS@l`+P{~hGCrOlCP>t@8K&?9;4>=S~`TvbD6LKF!cE$%K zAe&*7$fe=$K}Cg|rl=jbOk<46uLpcG=gBwDU%RqBmz|BWd!3tyFEC-w*Rq`Xf<~qo z3L-7l%$Ya(i)AV(mlvK@L+1mw&d|#fCL73Fw)FhI6L4XyEXmO3Mt!1h#o6}`9X4?% zaW2$oK)G!2J03Sk}@js4W%MZQy8w7X%mBwXJN4KBFJ z(><>=SoNy}m*#it&;R6YVMSq9H1y?!Mw=R`44QvKYJwv`NH!p-w7e1dmW#=yuB_3g z-r;9>?>X?;$_XL7(<|1Sf$!rp-k85Mt9q#{=;v=bL+#nnLVF#G+#v0A4GPrxJNXB< zcn*zVD_ASi&^nH9XvMvK@2qp}0z2F0fqH2pl#v-ET0e&qM33})f_a#vMq;IX$M!_|(QweKW^mLmWE@i7xuRV)L#cjg` zL~N=EJA6azwHdNaZ>BwdbGA~zb zHIOdvhs{rnuqcc?%<#7>@jCpdjL3?e##J5Z*6C`)(@>V1WKJzZF?}uXZ@#<0MOE_3 z?1Ojh{_y`8$B(fOt~JRoiK%Uq0o?DZ&QJDckhhH#l2K>Xr{yqHr3S3;^OTPsITd#U zR=*HFIB6D7Tl;xU+}aC8C*2(skHzk>tzy{xot`eD z2LR%nlu^yb%%-%B62ZEi6nitaoC>#*RV7Bth8w_)OhYQ5%rwRG8HgH##~D zBY*eRp7blfgH941g^^;ut{>pKz-rgE5<2{T${cptRMKbiZ@e$JrLJk{zVY=7|0Ws| zU=kVhM1$y?W}pAsJ}PvguleC{0hPYtDge`6FbQsR_T}DgZ(YWd67@*fzyx%i(#sml8lJ?cRtbk7L?STTcdIr&A>9LMlBL1Kg zE_v9XfMku8!mJ17h`L$|GP~YOF6T)ma+HU?T(P70p-D&g^7qA!isr$Xh0Ey*5$>v%ceVL&$ZBlC!1r&4mf9Xtuppo%Uw%ct6s)n~q2 zm$`cp4wxP)!;%J2;rj~l(K0or-#~GnS}z@Qn%UcC0B3+vUBVaIPZcOo8tSjeP^S&v z0j6W(V^JK)-xTzIDm$&>W>qEjaz~sGrX|R7G|y~+fk;S__t}uHx#=yHPk_3Ul`>7` zQUmhWdM7!P0O=SFjp`2*Hn7w*tCP>nY-}9Q%6pyXQWG+2ZLAQtcr!oW)y|BL^0wDG zMi|z(qp53fj{R9}|02A{Z+i%;c=HS2Uf)qx$AVJ7@(t&Miiog?N63K5W*@P8(P2_} zcUGbvPh?U^h9G2!5FlM&zWw3oegk(J%OZ3wL4d>{mR^X1H8 zz145ta1k@q4m*lPyW{65P+|3qw_4`uxAH~TkRz0Q*iqvaE&oYwC4LgHAJ4Wr-pN2% zyi?wW>d@S(M@a_0GHn9ij;31`G>^?q6xJ83hZ-_^d`wafJN^>zi9(n*zwhOK+5vH3vjRk^J z^7Q_DiAw{!$j zt?l1mEGnEAeO*JaQ+%1WnATXVgq<>^>QUQdvo@^n#Ib?MNl;0U)jukiFr8?9x$Nlm zYRP#)?J9Xxc0O%Xx<)fdU%+1BYJlaJV~a6((F9sP%?K%?o3OV7Hm#SgwHmg)I#U}2k-NNK(;sLg#hx_;?_ zJRZ30lRDs>h*I`u-YqB+Ag*2&3@lepz9V6YQvhmfEs7C;5DC66255tu?UoW3D|3^z zBxnI3ChQ45v9Aqw6<~MeI-?UiV>ELgSE3|Lv9vyH_Bk6{T;vISuoj7ivjlwpT*{Yc zL6?_HpV!gQpWWPbr0n8D3#X+B{ujcUdkD9JxDWD-?A0;{g1UB^hq>~zfe#NDD;__pxd0suEA~e8 z%_r3nbeOp9LZ z>dZcKV>X!n8zn>z-FRJ6QbG2PzrBrFLr)j^4z2y?uNVB_FWc5}nw;4Fve=`oob`r;DXzY8WVF48C#L~ZvM~*EUl-*9Jj<8Uly*aZoEkifXW)zPFH`mpWZ7%2-E$N zrq#f#O!Ig*iYs!&LZABi!L__~OONi?f&)MBU&xZVv4B18=pRFm(i+il3^*=^727;p+ z9v_0}lcE6sOSwK4{gB-@yRNGu<(8U*v)A1>K8sL5S6S0icf<|(n_JBxo&h6al=0U5 zB7_CdCj0)tEmw=@tA6K8Spy&S#E3~&1KFMhi>{EI_JJ@XQB*(9tA^)Aq5T`% z#H4R}&l5vS6%K!3Z3kadct_Hr_vHZbeu$&7)0;Lz=Q0Jc3`MbZr9XSJ^G9;@>k+)` zDl>Gl<*ae(ytvM6xXyetXjJ8|$j6iW!n?ya#l^)bL>$tQ`dxM8<)Mq@iv$ls8k-uM z)+$aOE}1V=jV>4FS_xoSrpy&7j@7g;cH(Bw`1x(WApMS`E+QB-vh^~raR7g{Zks3W z9?7hgr50R3({*qGW`7CARKDr$y*Ui{t+z*M>;JVsJqRGvDAY^mdQm%H^9>bFOsx*I zA|;xU-3OSjR?#y)a}ygF=T_JU9`#~bS+e6&IFf&90Od_dwzkS8{7iklSO(*DJ~L(R zyk&j#B>96mrl}c{Qzc!iETLy43AYGFCJ%v>X`9&5^#{coFO-^Zt_;jHuI<{ z>KBEZSSD?o_b}Snfq%;pX&5hBRw<18rAX65>TtjK^qstGRNK{j&g65STwQFuIli{uV!z8k}YM`RZbCy0}ePG*%TL zDtMl-qJ!T+DFEAWPUd%73wB)yUp@aBB?;H)m*1-Atb3lUG@WIZU}DWdck=LQfJFR` z?Fcoi+5g?2TajSEYY^~1c)GGwJo$A_g$jd4RWqw>hMS16`s)ZX|wiRyAg ziJ(sc{+%zXDGaUm}-_4)Zp3*dQ)#tK0lKYhNvkYTRMEKlS>5I#<19urI7TutcD zul2|3_~V-0*^J`I`Yr~KibC_X1VYHlZiL`_yD`%!soiKic2NLMpHe^-J?h0 z+=i$_8pvGk|NeB$UVZ9!;SF|ObYI_mxx}55iIt3(SRS_G@G68oVfIv3P4;1*O>B*miGN$+c}T8X3_+X!{K&;J=ba|8KFiZ6SA8ZUq)*tMrpgALj-2B z&pZ}TLRijdn0VL}9QoE$m~R6#uGwXs%L0&fj6@dzMY}Fh`y2P~;mz-mG=h@Z%#*H! zd#Njlh!!{)zUlgyK@SanWgeW#sG75oFT^SvIpHt<8K1Pt(dGFEXf-rKS|&djn4x_v z@{jvYbitYb5zAbO3R{^(Be+cEAx7e(Ui+7LDgB(Hhrq-QOS4G}s!t<&RK9OM{rnRE ze~_@K23oW|de()Xg{K(>^Y^8#NyJd%pC3e1Lwf^5ZroS30}TYb2);#}akjl9X^8&d zaQue8jK&V4WTWidwWal6wh`j6KxS@d_2w{GAZV67*HuFU5a>3=4u1t?WmS-U5{^NC zpx{!MpKQ|qwVZ?4%P=&!YfV3O0AL2!k!V5d03c0WX_uhg$x_SD^oWZAC2f*87olM9 znS`td!q)Td@lAUrF_GP~vs1P< zCa~{~ig79Lw-iRyvM(!Se5WA>z7e$)o{B;ZQ*G*s`n~27L0qEUZJvOdbnZ>KF-rbY z_Vf@5DwE@|(Db^Xez_$v(S&ExYr$hWdVuK6ubP`vezpeD$0VUQ^$yS)`6$NP z;)}jlVDHVFpw+`5sqnU?J9?+qgCp;YPxVSInaxJ&g3fAG=0`syUO3uX3*BW&J12<& z-{q)symo?0ypF7KwYS-{okd2N5k|*^Ez!A68h*6Li76m5qGs&VBn`fcE;j2v<8AqP z^>~&+@%6CsFNwL|rIcoNtt`^U@J-Lm$;R}5wHq*Y-fzv0FpL7(-`&P={?xdT65(YA=vezHm~sKKqhyncevC=FJtM(+Rp!#fTG&_M01OVh)uu%Tuli884DLW5k?ulFh z%n;GOW)rHxm3-68sWzKaQ<9DwS8Fj6x?`WgfH^A}@OCiVj639OSi(j}JIlCKw zz?1?Ceqd=tZmlFJ_j?ibfebw6DIw>*Ng3|LlM~`Yb|T_2mjMgqKky| zKFjSPJ0*^dkd;4$8a;~9)1@d@f+wcxfB>QOJqLs(-F#iu)RflM?JSNBN|LTgsN;=N(h%P>oE`WokqXNZ5kiP{L`6p^#oOA$%^EHjqj!*+v`&- zfex~apWgWJe420rao)an(Q&ZJF!qsRVaN6P!Jjk_lhQzH9##kZ-wmlk1;QZ%O+$+q zyLWO6>N}3sQCnneS(+?k|56q6Qp`A9jENN2vf9ls`UGmkQCM*7hD)sfPMQD2f;>A? z6OIuV4!p_CGc_1}Wg)+OQ}-wpAdeD&|;X{CrgMEaCq zdG@eM+Bx7wd+|ZRDr|C)nDLgMIFUE@GAY=1eHEkevLZ##w8?dABenu7f06Gj&Vf=Tbf@$&rb3Z^^ej?bcYy8Rq^^PvGJ+Vti z@*F~Xe<14O{~+?!^WN@9a z1B~Z}_aow}M^Qz_eFsVWxn>=UB9O;XS1+5vciEKy?ptzd)Ga9WcDW{DD7&tcJR&3d ziTYDo&PlKG4^NY?|o*)Ml|jm2u}JKP)yT8o-~;QoL|S)w6|4k>odgQfqHT4Dtdm86-nCHE>>HfmTRlZpGcFr!&BKEFtzXqEm-I!77{BPD5;{ zGo{xPybj{E@eDyY=GpP;IQAKH2k5i%0a$`%4EA3y1PbND$#4@OWwoh759W>dNBmFP>qeFXis@-9Oo!znp*3%%+}?2VAsH*>X2lrmE5TeCs>C z(YTr#JU>ZS`<@S8y3i}C?;0)dIwX{BZ2dv|@?{*vW)}yJ1TQQs1hJhNCkESko`)H42$tzUe*bWG7qQ+#-A5wUqydEimE0|PnrrHz`?X}BP z-Ym^1+F^b!&JB?W(hC%Pg@I3PApz%ZcHfN>JQEb!*V83~b9j-==mj?-@PS|%S)-V8 z{KqxAM?#BN7D{&x1MHpSC7;>z2MF1S~Swl zUBATLUW4y8T)^`~MV8BA8{kZ%J+ZvO4-P_$cgMQT=cmsBqo(uiz7y(C4zkPB^f@1# zR15V*F8|vb!#HY5_AF7Oi>2pJMb4(oKME}11%!JmT3#iEIW0Ze6sx8e>q4GW+_YjA_rPkqNf^E#>N6 z42SYD1I4^P_hkzD2DA#vrryM1fuZ5tE2Y81fkD31yZRtepeE9;YY4*y4O?5Gz=Q!}ZzAS>oc2SPt{uyQYC5L`@(#iYGsP7RCHuiU#dMzB z90!B-6fN#;*1l0c7CFJAeD9Z}Ihw}<0r6^z+$83ac_6OmI`H1VJFc;Qs?k!DrMJ}e z&Bc_#1|faB`s(pUE$A1Ed+IKOO#;LjM_(sf6Z`k5Nz5|{JrBOTe!`cJPl_MqUYdN0 z5@ONQ?@L5qep4V|;h!fQ&;3?pIa-CTcdrsb^0nS!H%@8<1Va;h{qMb_eNQSka6tq~ z!fI(TZQq~5SR!n+-;*mB16x@m0w^r?bu2n2Ceg*&0mP3Dk522F8JOS|gcB09)(UY` zRxCiaT;{mzp%+AR{$)yMPS9S#>7shuaqr@K(MuwejhDOYZh>8e^65M4-lx3LwcwkC?uThk9zam$%=O^Wl5+7#Y9(|1aAntE) zF5mE|Jub9wNGc_SbZJDAIA4eV@<=KaULJ(+)nAl<8=<=|z`V)sPNMn@yu{;2+sts7@PwD{-&qi| zogGzv6E#Y~|2!NlfJ_*|yCo#R9fl8koyaDaj;bV}6c*knK$ET+Ew|*3BnQ`Czkb=l zFdv)(TaUpAxbr9WTY! zd%e|(3a^ghmx<@xj^rg9a44w5WFTDkPet4+QBKeuFS-~LySQ=PQojX>@jocaQ@d4E z44%1i>YDcdq<5VUhZ~=NLQt9;EpFvdBz$2}*etYpUZWY=yMPRhPqO0o<4sSoQ{4Lh(VOJ9nkewZS8}IDxYmKu7tlBvrwFBAq z-EI@3ft~_RZEGyZ(ibAp&;76q_BtGj(KJLso zZ_hGkilG~*B8WD}td`~c*YW~2ZB+3lUjZ`yDCUik87%v_c#J1Q8IN4tF1bu0hC%zW z_wEsOI-O`t%=%;`4moo^K;kyzM)EeKH?MtihquEr}T$xonT?%hPH};j1&hPywU&Z|XlkBAQjq~Ozt0}*34#4rOIDq{*ckI}4^I-ZHdJ~Ir+3s?<}3uozu z23p?w>*mZSHzAq7JYUK4Zx(G{YGxf`e(61GKaTj_{~z;dmL8}1gxJwA0cy8BYeG-r z$%?o2TC$WNp3T}}bQBL@uRL_qVoTWYPrh?CExjw=$}hFk57k7z#(b&kXuYL1cRPi8c9ywz_*u1`Qn*ROXEI-kBa$;}ZD^g@l9z9~4e{ zzrR(yTpURg2WX#&MBZv_`3dcT{7?&eZ!YVy3~OyrMkJ32u6MKvdd)^2896xMJ$~{C zT-6iPg1$T@j6Epv&~C8NZ3c}kXYxUMO8M55qsV|Q_!r$Tt-9NqZ+#m|9d-W5$-FJ= z4CgJY#OFsrl%@d}&}z(VO`ncNmJopiV82LjwGJ=9}Ja1&%pk>yzv zqdK>mmnY@o$S?86*pZ&sm#SJ+(`g)(^SwcW$g3%!etgJDGBA|q9vQW!!sloG6i&1f z`mU6eTmXThYd>S6MWniX*`Vak8`RS4!x{7|6}eYYNa&2-7UXtu3mo~gzsj$au2N*= z*>fs*;H>1BuvqdKfuiRYRbg|?KSp=>U1eesdS&=Po{F+=@M3Tc>ZMM1EfN&5_;p~v z*@&_yb3j1bgCRp!jJlhXw=G;(ONIyxMhL~xN^+nj>x#p4mkrV28Rp_ITB#|8S4qxg zRw2{@*Dt&uW{X#Bt75)zbglcS#8mQzxH>uUj7XiipYM8*IyLPm|NJS$xntfG7{aip zoNuhn5_4HcWBA(!<>7n_yw-23vRp}iPgGdQy!vLx_HX5Et5F8F_b~mBj7l!uy#ZH* zah)1x=4-&9Mt@vRUfF*XoVm?L zJ<3_MqjIMxJ8VPhKwBH%{h2>?q|&*j*iIM9y&1;481B7e>23Civ9Az_to>-ULhZ@) z<%bOQumKI;(K5+$T)4D)7glPs?MO*~((sa7wPN9>$ zAF0E^9Kj`uh4VC+Cjz z57}#HqhK=Z93T!&jl9h)ya8>5pQ z5NbsLCT#(JMr9B%LwbIilSLFrQ5@!maps5K9kJbhMi;tQT zciol!5Y-ib&;D?pcJ@bh_V@tX(gW%1tfzq)*_e7z?b&TLm+sYY{M6;pKb?eOYZ1>2 zN*z^X_`SokG}5))NV;~qM{n8@@Z)I1^=F)uZL5T+^A|lmJs>vce?QsrV2y#mO;td* zA8q;l=_J0wT}0`2$yZkt0L!qdjd)%0{8<4WYw*)#)cq1cHYXnDxq zKv01^vcpyP*rB}=*G#;530buZ=RfH{?^I2t9>%mBi!p6N3RgZUnKXo&U6KOgX9!j0=xZ1P~mC0hb?yy@VVyoEiHau z6{GocPk~TGP<*_Gw(S0A(~_1$YN4P94*5?JQ8!tt4gSaCD0ZhRI?q>kSCP9N;$9u1 z_P-L?s`ed<9#SBXhM~jX@5W-#`McBy*BEn~z@Lg-5CtB$J23n;hP`njDOpk>Sf8DY zgM^mET|gKmglmOQj_U;*bBBXSwKSF)voQ;qgO#jCdxTU8p5c|Az4G4F-A-@e96so4U7b7@r)leXv7J zG=P&@sO!>y(jSP`jWvL`!hW8WJ!3hs@hYh`7CiG!H{Dco;)Ex~2A9i+)2ZC-;>w~^BN`nNKu zOKK<$0x<>!%~9b>r2M+z<238c{67Zkp7<2+=$QO%CV#}8do-9R|E%dt9yxHRpC!cq zD9}s4RcF#`$>5`P@p^B&&v#+uw4tB(WzJB)X;J+$6_c^`Sl9gY5dW~S`YU!x>ve(3 z$mxFHxYkthbQ1QQ%u>T!Q@9Y(yPS%RKO%nILq8O_lM{8W)&ki`+X1#VrVC$^RE0L6 zK-I?r8#eJy1$GK#VqIgx62Pm)V!MebC*4*Fom&Kl&mgIz(!fn>;<_&X-W5kx8~Ysy z+c`PCVu1ZlCgL8VhTBhn?`z!3iVP!=CTx4`5(h<{zPYgFrfJw6wQzN?*)n6^-% zp`n4;1P{o6T6yM;%_0gzItDFSCeMis2@US-77 zJ-A|!?yPHZGaUR(b|_m`YAi&x3hzXg!cm4iRHGY?;~xwT!M=Pm!h1&OtoAI}+04xtgM!UO+;GeLJNKff&k4pbDeNGT~3$-H5!e4>7%?rYb6qGH(L7 ztA10vc!wP~$R9U>R#^>a&1*ExUUUe!5y}A9Uhlxjo56^?EAl%)kCdOjd=5JemC3|a z`w#y|B@TxRg<>gx(#-fACWQ?9G)X)gEU;1K9 zZk$h06u6vfp0Z`6vPt$ANcn@Yi|b=08>w7&i1@tR4fU^a@)}E$3+|H&#<4@79Tw zjW0fyA=Zw!bn`RDBX=n)ei@x2SxX`xt{I#Y>Vgv)?FJh;1odMT4fk@YyUu5~^yOwztm=K09PPp~WD?X}ZI8|ZR zfx3w<;Wd55t=a+pcFKhZAO%^tDL*KED@fOp=`#Rza&I-eVb=2TL3@ghTmp9Ur=nj? z2)dVcYD0){nKY3Cw*z7{WycnX)*`guz(c$1=ns|wZwDr8xl@L2>cj_lt-wo*Z&;6-(KW5== zr4)BeTtQ~&nvjwj8OJtVJILQfiW16?ZG}n_h6;|w6bJ_Et6<7$gSc~1zvRm(cH%{) za7FA5-;MKKPuuN0;)tPVt>@ugl9rLR)~ti}X;+*^NPX#B zcT?tXVstkxIE*a(JD1?IQk+Mc4dGsltu0@~)FJ(2+h?+SZ(RitJB z+PVRIm=)lY`22w=X~Hk;YlqEdR-cW6 z)NKZ^h43f5u2gb-%PW{X>ysKGFNaI_K!`7Oj6_5UguoGj*q-mkrKXxU*z-UcBTv({ z!94>iG$Hu}w^-k(A29tx7Es`?1R{axcR36Ms)4CE>8DS4pau;(gpZnxpc)ZdrCA&P z*8KzZ{dx|{@ozvZxtg~s1pAA4y>kFPo4QMTm0M}bGWTasl}>O#Vz;`LcXaT3hIU#Y z1tpDO9tQw4#-g@WN>mudM5>;b>&m1_{MYc|X!Clq96)4+Q@Fo4Q)`R5AHo z3!ulWZP|fDU7eEzPC`Q=0?|mtiu<5`6p#- z=Fk7)B!#H7|Glzz&V#2nF(xXZm5N&ljT+E6U+{T~huP z!95ou`OSEn_wiWC#TMNqCzOQ7b!uiP*HmLh&f4Uaek1qHc_z1l%zYSipW3(bS)-~4 zmC&Y2>?m8fdY%49a&f&a!=YjNnljLoxkeN?HL17Ka<$Y6G;G#D5v~4uK%t~5VLUn5 zxN$#$%d`7nL->bF!tmB*Q5|W>hjq(N(@PF>@P=~BIkVigLt5UtQ!UhblP(o!e%#<; zRddLSk>~>$Gk>_ZL2~!d^dNf1D{*`h85EQ4oHxS;(iXy|GFIlVgMj3yKv6S2L+N^L2#5O4(x3V%_;f zUj}+D%bz*@tEmUT{OVZ#7SVL>CLi}DfzoU}YBYB`;om=BAksfs>~6m{BJgI=%zS$+ zm*HX+pbP%UX1HXqD`LXR%gg^$uK{g*R>t|stfP(XzC%K+RRP#TrIUD#K0#QxS~gPO zc7q*nW3uO!uDRVf;EYt^U@F4KWQ7$ZOAGKS5gjOmtux8<=Up=<*Vm7yD`Df4SBi>v zv;;wI$;(vdf?~H<%I3#FulL7Pr)>t+HBKyhG!fz7CLYfax%sSI^jHw|u3-DD;0bq- zxpp31G3;Kv*gx;wI`2Hf={PE+#(Z5NzxLKEKk#^Txn&hq>|-WqE~W2<)HNaSN6=N4 z7TH=Zr|oD@q=-Ghw;#B69)5_Ca;J^Np_R-P$WP129$`F0p;H80 zjV8F%Vvu>pqSi#&jKqv28ehQpoQZj|qV(U~4=lGs0inZJkAfi4rAsek?-Mc#vGw=O z*8th|jrjT!6^11@Rbq`5(FiCT0|=x)<{FqJa8@=FUCm#)NN}Ucao#P_-E|bd#&{jr8hrb?`RU5ApBok@-JOMl^KhK8}zYvAX};j<>Wom#hGX zryO)=w27F_KreM|$+;yYLFN_-Khh+amn?kuSo>uVeL}4gce&&C+o|dOX4C9HcRF(` z{xCknU@Pbf5Gmcyo;lTf{j}QsSt@n|OFjlz zPC9fvs$jt7I$n3%Tu}F-Qi0aXosg}v?`Y(P=3(g(0lwdzZX?wB<-oWwO$&k|nje~r z!izsCz*GuQMMbEhf}&6@?Jm$)Ohiah67b~^!6bxD_hL+yV$a4ySlflSt$*T* z(@rVit6ZQ2$$EFNg&#P1hw@)j@UOZt?w@sR;dC4jbabVBM`$&GXit_2Pj3lb{FXoX zb=NPLCeXboru$Ay&ag44^LQy;Lg)TW9-$TLw><8GF9}+CXdyZX68eHc7k@uDqC9Ln z`a)k9x2^BvGi~Yn5tarMZoA8W7F(;_A_Vu`rZZWlLPQ*bZ)SH$3FuJaVd!`O4L)xW zQbQF|p%F0v3@#34bx$bi=mH`k^0=?XV`KKmonSNV;-JLDI>{W(4`!R>Kyx0kk$)He2#7DpiN^kT zd71O}>=pCQZFnCBZS&t>bZUIKHEQd4SNsS{GnPTp249T|QKYUVvJ0GFx(}N*%OkA@ zwchd?FFNySf%m4x*7lb$U4pt^)>~O>+2GqQg6oE@I5#2ygb8f(ETe+Xixs%K;QM#H z!onW!GqcK-+EJO0a|fCoLn2JX-%XHm@Fg~?!*gmXSW7Rae8V9&2itux8T^sASP_7C zD})c3pZTgW#m&?w9x203_3sP56e9R3b^Y$I-9&G%f`r#~6S{A+Jl^!oi1GZQ8R;sw z--SR7<6_F*|D2(Y>iw+BG^Z$IJ!NpHfeGi<#i%f>25A*{9Vg>Zvyd>j`mA&^vvF~K zoEx5>)R~x;t1H*I5==&#`>uw3lL5YB1YLG)5ePojj-!S@1e=}bgO-0y+q-A2U8AFqNQBh3)I;|o6ddx7-u7~KVMW^ z%UT~$CKJKK2Q-6LuI_+1zl5#qAX?kZ59nIb7kV$yh4_nwx6)m8TED-o&nqcm%Q_9M zB+%u1^Iu*J_)dbdBQ3@LWMh-^+7$u&+4?3sEdG~ZmCXmTO`a;N#m>~nCg2x~ja90j z-?Nx+4f@VDHg~RT{P9}jG0rurhH4gS=l}!LbyWu@6bL$t*u<3HA;*p&ic=)QQ%b}| zCBnK{j=foqzKfgsiO^AO)^Ya+sE6#(Rh8Sk_b$BN7&Ni%!Py;4N7kqm8Bzu092hj8 z;3~HaLP4aSGi5|)K7_}DSrOHcn9OV2WPkHSYzY+1-zb>jUzRK1pw4~0YWM5OP&M@g z?JFdFJb*8{5J(b_a1y9=jaliqUii4QUJ1P6tnXZ_j2NE41fs_(!U z5oE^cZCd)V=iCFA+rCv~0s`+Q%m@YC{^SFBQA?<7qf6_*&ZQ?>9sF=$P$Ozel>^-tqGAiPfgzR)s_THNa89DY&NH*CkWF33&702G2WBhLK&-eGc zuHS#Iu5-C^Ua$MUpZ8;i4oK|rpYPQA{vGH)&+*GYlRI{k^erWd*7}-}n1IuwM%i+T z_li0WwIa;_ue>P`>qq1MdrYo{v%&25(pb4ztqycD=rFuYDgQ$Z(y1P=f!>T>3yXA9 zPa$tb4P#wpiHbD5*xdJk)Ltqyx=|0cON&l>h4`1eN_CO0tI`Ss*2QCXY2WScwS&B7 zL!RB8J)c|iD`bEwR-xIhxjU~zLqorl5A6RgUAN$T?YmXh?J(c#=&mIAi(7=;G)3@M`4N}91TMtY3Z z^Tj?gW@|qb$(@CmUPpqi_CWFdPTa-)r@mqKrX4h-jrW;dt2vB*Nhdus?(Mv7$yZ@8 zK|?MPhflz-e`ShdPTzlYRB5JH#xX59E$F>UnCgJwJU@u?=uJC+|ARA~C?FcJgY9p2N^^GZwWf39QVuLJju#;jT?$?fY+|~fa;1_RwOoyZAs(ly944>p9mg^GUhWZ%*myD*==M`ct}(P zKw?9xqV!~#XaZvvOcQ$0h5eJ>g@Z1TIM{R0-i}!MUKQZA1&^^rj^)U;&TdF!YE5HG zB}fl~NgXR6t_%B=*W}4hZ5?E`Zw2>lsr*@1?9vXg>t@C>Y-TKOGH;XHcM~ykrlKj4 zz^F3mWSQI}$KsczIL&Gf*#Y$@B{PKPe{ibXf}d3|+L%MMZqT?e7{t#EKSWZ0O$GRDuX@RWywH0S#IAH7i z3QAD4KG*efi@ioSIOf-zV&Z!Pl#BUmhJSzBlhvbrFuEkWk>|p-u@lo5AD)d z=AeaM;Ln~dW@9A&vOdOwb2>kf8fO}fBRCWcDepb&wM>)feDTtj`o(^a;GD}^ z<3CxFpBeV2w%EtsyY1Q|(b}si@yipPKf`@0KwyDtNy8Vps~lo=X`~Y=y3Ym$rV_b0 zhy{j>!$vFUVyWu?k1muEnzAxtNbxsgAoHS@uSK(MJmFtiT@8Kq1k>0I7va$S_@kmg zp1(r_S&*6Hf|>u9PkLNlqi4>H*A264UT{ajY-!E_`YRs=9aCB&TI0lgmJfy>`n@G= z-?Wsgahr^X$bPmO_IBrK$u=yW53yRSfse@h0+;G`q;s$O%3p6>98Wa+;$xesa6t-@oIl=M|{Zn(dfLnXl$yAVD|~|2=qT zBtt9?Vxwz?Tv7e$D)}=}2T&q6o&5J_lneBGAVtJyE9;*FCYQClKPFyfAl(Yv3^pvsqkIgl zRc*7`yCpvvnaKuq-{(Mi`v8|b#O>-YnZ_c>4ebQcNx=Z`#5`KTc-9*_oFCFXW2OnsN|TGz6U0Tf zmB{a81}-vq2v|M!Y!h8~JHMpIn}|02S#yXrD(xoty+T$=#hW)^UR?jC=9zPu6hQ0n z;j~_SBAznOrk{pRdF`L4kQ5qx`7E}l+~X%qLS^?T^{Hoz?21zm>YC0v;aFkiFdOPK zw>P*y#T_~p$FypeOdyuLBRlH;^yiVsqQfMq-Q=P=Z*C{*1dyLUM)dc6o@e%A6DBS6 z5ONftCB-sndA|2>D#*FkCOAD<|3G7MIAKI<5o07x%CUw-GVw=6J4>=5`=Ec9Hxg4{ z?;cON9e3v)%sAfqIrd+(^k0JH`sxL=2pSm>)~t44_EQ+4fe^6}t4U=9xfxAZLGd+h z|DGfD&GAIIUE537#T{3<7j2ppHYqJIyr{8frW@>(TW$yn50VHt=)2+B|a$JS+^s4=71FM=YBjRPF)QM2mSlMdf-$--;)

Tf%`~6m*Ej73A^xXEZ*!7Q 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 literal 0 HcmV?d00001 diff --git a/bundles/org.openhab.binding.siemenshvac/pom.xml b/bundles/org.openhab.binding.siemenshvac/pom.xml new file mode 100644 index 0000000000000..cae4551ca5d30 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/pom.xml @@ -0,0 +1,38 @@ + + + + 4.0.0 + + + org.openhab.addons.bundles + org.openhab.addons.reactor.bundles + 4.2.0-SNAPSHOT + + + org.openhab.binding.siemenshvac + + openHAB Add-ons :: Bundles :: SiemensHvac Binding + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + + add-source + + generate-sources + + + src/3rdparty/java + + + + + + + + diff --git a/bundles/org.openhab.binding.siemenshvac/src/3rdparty/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java b/bundles/org.openhab.binding.siemenshvac/src/3rdparty/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java new file mode 100644 index 0000000000000..a716848fb7412 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/3rdparty/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java @@ -0,0 +1,465 @@ +/* + * Copyright (C) 2011 Google Inc. + * + * 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. + */ + +/* + * Copied from + * https://raw.githubusercontent.com/google/gson/master/extras/src/main/java/com/google/gson/typeadapters/RuntimeTypeAdapterFactory.java + * and repackaged here with additional content from + * com.google.gson.internal.{Streams,TypeAdapters,LazilyParsedNumber} + * to avoid using the internal package. + */ +package com.google.gson.typeadapters; + +import java.io.EOFException; +import java.io.IOException; +import java.io.ObjectStreamException; +import java.math.BigDecimal; +import java.util.LinkedHashMap; +import java.util.Map; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; + +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonIOException; +import com.google.gson.JsonNull; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; +import com.google.gson.JsonPrimitive; +import com.google.gson.JsonSyntaxException; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import com.google.gson.stream.MalformedJsonException; + +/** + * Adapts values whose runtime type may differ from their declaration type. This + * is necessary when a field's type is not the same type that GSON should create + * when deserializing that field. For example, consider these types: + * + *

+ * {
+ *     @code
+ *     abstract class Shape {
+ *         int x;
+ *         int y;
+ *     }
+ *     class Circle extends Shape { 
+ *         int radius;
+ *     }
+ *     class Rectangle extends Shape {
+ *         int width;
+ *         int height;
+ *     }
+ *     class Diamond extends Shape {
+ *         int width;
+ *         int height;
+ *     }
+ *     class Drawing {
+ *         Shape bottomShape;
+ *         Shape topShape;
+ *     }
+ * }
+ * 
+ *

+ * Without additional type information, the serialized JSON is ambiguous. Is + * the bottom shape in this drawing a rectangle or a diamond? + * + *

+ *    {@code
+ *   {
+ *     "bottomShape": {
+ *       "width": 10,
+ *       "height": 5,
+ *       "x": 0,
+ *       "y": 0
+ *     },
+ *     "topShape": {
+ *       "radius": 2,
+ *       "x": 4,
+ *       "y": 1
+ *     }
+ *   }}
+ * 
+ * + * This class addresses this problem by adding type information to the + * serialized JSON and honoring that type information when the JSON is + * deserialized: + * + *
+ *    {@code
+ *   {
+ *     "bottomShape": {
+ *       "type": "Diamond",
+ *       "width": 10,
+ *       "height": 5,
+ *       "x": 0,
+ *       "y": 0
+ *     },
+ *     "topShape": {
+ *       "type": "Circle",
+ *       "radius": 2,
+ *       "x": 4,
+ *       "y": 1
+ *     }
+ *   }}
+ * 
+ * + * Both the type field name ({@code "type"}) and the type labels ({@code + * "Rectangle"}) are configurable. + * + *

Registering Types

+ * Create a {@code RuntimeTypeAdapterFactory} by passing the base type and type field + * name to the {@link #of} factory method. If you don't supply an explicit type + * field name, {@code "type"} will be used. + * + *
+ * {
+ *     @code
+ *     RuntimeTypeAdapterFactory shapeAdapterFactory = RuntimeTypeAdapterFactory.of(Shape.class, "type");
+ * }
+ * 
+ * + * Next register all of your subtypes. Every subtype must be explicitly + * registered. This protects your application from injection attacks. If you + * don't supply an explicit type label, the type's simple name will be used. + * + *
+ *    {@code
+ * shapeAdapter.registerSubtype(Rectangle.class, "Rectangle");
+ * shapeAdapter.registerSubtype(Circle.class, "Circle");
+ * shapeAdapter.registerSubtype(Diamond.class, "Diamond");
+ * }
+ * 
+ * + * Finally, register the type adapter factory in your application's GSON builder: + * + *
+ * {
+ *     @code
+ *     Gson gson = new GsonBuilder().registerTypeAdapterFactory(shapeAdapterFactory).create();
+ * }
+ * 
+ * + * Like {@code GsonBuilder}, this API supports chaining: + * + *
+ * {
+ *     @code
+ *     RuntimeTypeAdapterFactory shapeAdapterFactory = RuntimeTypeAdapterFactory.of(Shape.class)
+ *             .registerSubtype(Rectangle.class).registerSubtype(Circle.class).registerSubtype(Diamond.class);
+ * }
+ * 
+ */ +/** + * @author Jesse Wilson (swankjesse) - Initial contribution + */ +@NonNullByDefault +public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { + private final Class baseType; + private final String typeFieldName; + private final Map> labelToSubtype = new LinkedHashMap>(); + private final Map, String> subtypeToLabel = new LinkedHashMap, String>(); + + private RuntimeTypeAdapterFactory(Class baseType, String typeFieldName) { + this.baseType = baseType; + this.typeFieldName = typeFieldName; + } + + /** + * Creates a new runtime type adapter using for {@code baseType} using {@code + * typeFieldName} as the type field name. Type field names are case sensitive. + */ + public static RuntimeTypeAdapterFactory of(Class baseType, String typeFieldName) { + return new RuntimeTypeAdapterFactory(baseType, typeFieldName); + } + + /** + * Creates a new runtime type adapter for {@code baseType} using {@code "type"} as + * the type field name. + */ + public static RuntimeTypeAdapterFactory of(Class baseType) { + return new RuntimeTypeAdapterFactory(baseType, "type"); + } + + /** + * Registers {@code type} identified by {@code label}. Labels are case + * sensitive. + * + * @throws IllegalArgumentException if either {@code type} or {@code label} + * have already been registered on this type adapter. + */ + public RuntimeTypeAdapterFactory registerSubtype(Class type, String label) { + if (subtypeToLabel.containsKey(type) || labelToSubtype.containsKey(label)) { + throw new IllegalArgumentException("types and labels must be unique"); + } + labelToSubtype.put(label, type); + subtypeToLabel.put(type, label); + return this; + } + + /** + * Registers {@code type} identified by its {@link Class#getSimpleName simple + * name}. Labels are case sensitive. + * + * @throws IllegalArgumentException if either {@code type} or its simple name + * have already been registered on this type adapter. + */ + public RuntimeTypeAdapterFactory registerSubtype(Class type) { + return registerSubtype(type, type.getSimpleName()); + } + + @Override + public @Nullable TypeAdapter create(@Nullable Gson gson, @Nullable TypeToken type) { + if (type == null || type.getRawType() != baseType) { + return null; + } + if (gson == null) { + return null; + } + + final Map> labelToDelegate = new LinkedHashMap>(); + final Map, TypeAdapter> subtypeToDelegate = new LinkedHashMap, TypeAdapter>(); + for (Map.Entry> entry : labelToSubtype.entrySet()) { + TypeAdapter delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue())); + labelToDelegate.put(entry.getKey(), delegate); + subtypeToDelegate.put(entry.getValue(), delegate); + } + + return new TypeAdapter() { + @Override + public @Nullable R read(JsonReader in) throws IOException { + JsonElement jsonElement = RuntimeTypeAdapterFactory.parse(in); + if (jsonElement != null) { + JsonElement labelJsonElement = jsonElement.getAsJsonObject().remove(typeFieldName); + if (labelJsonElement == null) { + throw new JsonParseException("cannot deserialize " + baseType + + " because it does not define a field named " + typeFieldName); + } + String label = labelJsonElement.getAsString(); + @SuppressWarnings("unchecked") // registration requires that subtype extends T + TypeAdapter delegate = (TypeAdapter) labelToDelegate.get(label); + if (delegate == null) { + throw new JsonParseException("cannot deserialize " + baseType + " subtype named " + label + + "; did you forget to register a subtype?"); + } + return delegate.fromJsonTree(jsonElement); + } else { + throw new JsonParseException("cannot deserialize " + baseType + " because jsonElement is null"); + } + } + + @Override + public void write(JsonWriter out, @Nullable R value) throws IOException { + if (value == null) { + return; + } + + Class srcType = value.getClass(); + String label = subtypeToLabel.get(srcType); + @SuppressWarnings("unchecked") // registration requires that subtype extends T + TypeAdapter delegate = (TypeAdapter) subtypeToDelegate.get(srcType); + if (delegate == null) { + throw new JsonParseException( + "cannot serialize " + srcType.getName() + "; did you forget to register a subtype?"); + } + JsonObject jsonObject = delegate.toJsonTree(value).getAsJsonObject(); + if (jsonObject.has(typeFieldName)) { + throw new JsonParseException("cannot serialize " + srcType.getName() + + " because it already defines a field named " + typeFieldName); + } + JsonObject clone = new JsonObject(); + clone.add(typeFieldName, new JsonPrimitive(label)); + for (Map.Entry e : jsonObject.entrySet()) { + clone.add(e.getKey(), e.getValue()); + } + RuntimeTypeAdapterFactory.write(clone, out); + } + }.nullSafe(); + } + + /** + * Takes a reader in any state and returns the next value as a JsonElement. + */ + private static @Nullable JsonElement parse(JsonReader reader) throws JsonParseException { + boolean isEmpty = true; + try { + reader.peek(); + isEmpty = false; + return RuntimeTypeAdapterFactory.JSON_ELEMENT.read(reader); + } catch (EOFException e) { + /* + * For compatibility with JSON 1.5 and earlier, we return a JsonNull for + * empty documents instead of throwing. + */ + if (isEmpty) { + return JsonNull.INSTANCE; + } + // The stream ended prematurely so it is likely a syntax error. + throw new JsonSyntaxException(e); + } catch (MalformedJsonException e) { + throw new JsonSyntaxException(e); + } catch (IOException e) { + throw new JsonIOException(e); + } catch (NumberFormatException e) { + throw new JsonSyntaxException(e); + } + } + + /** + * Writes the JSON element to the writer, recursively. + */ + private static void write(JsonElement element, JsonWriter writer) throws IOException { + RuntimeTypeAdapterFactory.JSON_ELEMENT.write(writer, element); + } + + private static final TypeAdapter JSON_ELEMENT = new TypeAdapter() { + @Override + public @Nullable JsonElement read(JsonReader in) throws IOException { + switch (in.peek()) { + case STRING: + return new JsonPrimitive(in.nextString()); + case NUMBER: + String number = in.nextString(); + return new JsonPrimitive(new LazilyParsedNumber(number)); + case BOOLEAN: + return new JsonPrimitive(in.nextBoolean()); + case NULL: + in.nextNull(); + return JsonNull.INSTANCE; + case BEGIN_ARRAY: + JsonArray array = new JsonArray(); + in.beginArray(); + while (in.hasNext()) { + array.add(read(in)); + } + in.endArray(); + return array; + case BEGIN_OBJECT: + JsonObject object = new JsonObject(); + in.beginObject(); + while (in.hasNext()) { + object.add(in.nextName(), read(in)); + } + in.endObject(); + return object; + case END_DOCUMENT: + case NAME: + case END_OBJECT: + case END_ARRAY: + default: + throw new IllegalArgumentException(); + } + } + + @Override + public void write(JsonWriter out, @Nullable JsonElement value) throws IOException { + if (value == null || value.isJsonNull()) { + out.nullValue(); + } else if (value.isJsonPrimitive()) { + JsonPrimitive primitive = value.getAsJsonPrimitive(); + if (primitive.isNumber()) { + out.value(primitive.getAsNumber()); + } else if (primitive.isBoolean()) { + out.value(primitive.getAsBoolean()); + } else { + out.value(primitive.getAsString()); + } + + } else if (value.isJsonArray()) { + out.beginArray(); + for (JsonElement e : value.getAsJsonArray()) { + write(out, e); + } + out.endArray(); + + } else if (value.isJsonObject()) { + out.beginObject(); + for (Map.Entry e : value.getAsJsonObject().entrySet()) { + out.name(e.getKey()); + write(out, e.getValue()); + } + out.endObject(); + + } else { + throw new IllegalArgumentException("Couldn't write " + value.getClass()); + } + } + }; + + /** + * This class holds a number value that is lazily converted to a specific number type + * + * @author Inderjeet Singh + */ + public static final class LazilyParsedNumber extends Number { + private final String value; + + public LazilyParsedNumber(String value) { + this.value = value; + } + + @Override + public int intValue() { + try { + return Integer.parseInt(value); + } catch (NumberFormatException e) { + try { + return (int) Long.parseLong(value); + } catch (NumberFormatException nfe) { + return new BigDecimal(value).intValue(); + } + } + } + + @Override + public long longValue() { + try { + return Long.parseLong(value); + } catch (NumberFormatException e) { + return new BigDecimal(value).longValue(); + } + } + + @Override + public float floatValue() { + return Float.parseFloat(value); + } + + @Override + public double doubleValue() { + return Double.parseDouble(value); + } + + @Override + public String toString() { + return value; + } + + /** + * If somebody is unlucky enough to have to serialize one of these, serialize + * it as a BigDecimal so that they won't need Gson on the other side to + * deserialize it. + */ + private Object writeReplace() throws ObjectStreamException { + return new BigDecimal(value); + } + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/feature/feature.xml b/bundles/org.openhab.binding.siemenshvac/src/main/feature/feature.xml new file mode 100644 index 0000000000000..a253c87858518 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/feature/feature.xml @@ -0,0 +1,25 @@ + + + + mvn:org.openhab.core.features.karaf/org.openhab.core.features.karaf.openhab-core/${ohc.version}/xml/features + + + openhab-runtime-base + openhab-transport-upnp + openhab-transport-mdns + mvn:org.openhab.addons.bundles/org.openhab.binding.siemenshvac/${project.version} + + diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/constants/SiemensHvacBindingConstants.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/constants/SiemensHvacBindingConstants.java new file mode 100644 index 0000000000000..c4b6acee70f68 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/constants/SiemensHvacBindingConstants.java @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.constants; + +import java.util.Set; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.core.thing.ThingTypeUID; + +/** + * The {@link SiemensHvacBindingConstants} class defines common constants, which are + * used across the whole binding. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class SiemensHvacBindingConstants { + + public static final String BINDING_ID = "siemenshvac"; + + // List of all Thing Type UIDs + public static final ThingTypeUID THING_TYPE_OZW = new ThingTypeUID(BINDING_ID, "ozw"); + + public static final Set SUPPORTED_THING_TYPES = Set.of(SiemensHvacBindingConstants.THING_TYPE_OZW); + + public static final String IP_ADDRESS = "ipAddress"; + public static final String BASE_URL = "baseUrl"; + + public static final String PROPERTY_VENDOR_NAME = "Siemens"; + + public static final String CONFIG_DESCRIPTION_URI_THING_PREFIX = "thing-type"; + + public static final String DPT_TYPE_ENUM = "Enumeration"; + public static final String DPT_TYPE_NUMERIC = "Numeric"; + public static final String DPT_TYPE_RADIO = "RadioButton"; + public static final String DPT_TYPE_DATE_TIME = "DateTime"; + public static final String DPT_TYPE_TIMEOFDAY = "TimeOfDay"; + public static final String DPT_TYPE_STRING = "String"; + + public static final String DPT_TYPE_CHECKBOX = "CheckBox"; + public static final String DPT_TYPE_SCHEDULER = "Scheduler"; + public static final String DPT_TYPE_CALENDAR = "Calendar"; + + public static final String CATEGORY_THING_HVAC = "HVAC"; + + public static final String CATEGORY_CHANNEL_NUMBER = "Number"; + public static final String CATEGORY_CHANNEL_SWITCH = "Switch"; + public static final String CATEGORY_CHANNEL_TEMP = "Temperature"; + public static final String CATEGORY_CHANNEL_TIME = "Time"; + + public static final String CATEGORY_CHANNEL_CONTROL_HEATING = "Heating"; +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterException.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterException.java new file mode 100644 index 0000000000000..d9b73d81070fb --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterException.java @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Exception if something goes wrong when converting values between openHAB and the binding. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class ConverterException extends Exception { + private static final long serialVersionUID = 42567425458545L; + + public ConverterException(String message) { + super(message); + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterFactory.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterFactory.java new file mode 100644 index 0000000000000..757c8eed4cd89 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterFactory.java @@ -0,0 +1,69 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter; + +import java.util.HashMap; +import java.util.Map; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.binding.siemenshvac.internal.constants.SiemensHvacBindingConstants; +import org.openhab.binding.siemenshvac.internal.converter.type.CalendarTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.CheckboxTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.DateTimeTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.EnumTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.NumericTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.RadioTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.SchedulerTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.StringTypeConverter; +import org.openhab.binding.siemenshvac.internal.converter.type.TimeOfDayTypeConverter; +import org.openhab.core.i18n.TimeZoneProvider; + +/** + * A factory for creating converters based on the itemType. + * + * @author Laurent Arnal - Initial contribution + */ + +@NonNullByDefault +public class ConverterFactory { + private static Map converterCache = new HashMap<>(); + + public static void registerConverter(TimeZoneProvider timeZoneProvider) { + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_DATE_TIME, new DateTimeTypeConverter(timeZoneProvider)); + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_ENUM, new EnumTypeConverter()); + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_NUMERIC, new NumericTypeConverter()); + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_RADIO, new RadioTypeConverter()); + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_STRING, new StringTypeConverter()); + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_TIMEOFDAY, new TimeOfDayTypeConverter(timeZoneProvider)); + + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_CHECKBOX, new CheckboxTypeConverter()); + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_SCHEDULER, new SchedulerTypeConverter()); + registerConverter(SiemensHvacBindingConstants.DPT_TYPE_CALENDAR, new CalendarTypeConverter()); + } + + public static void registerConverter(String key, TypeConverter tp) { + converterCache.put(key, tp); + } + + /** + * Returns the converter for an itemType. + */ + public static TypeConverter getConverter(String itemType) throws ConverterTypeException { + TypeConverter converter = converterCache.get(itemType); + if (converter == null) { + throw new ConverterTypeException("Can't find a converter for type '" + itemType + "'"); + } + + return converter; + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterTypeException.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterTypeException.java new file mode 100644 index 0000000000000..3c3c6ba6db8bb --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/ConverterTypeException.java @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter; + +import org.eclipse.jdt.annotation.NonNullByDefault; + +/** + * Exception if converting between two types is not possible due wrong item type or command. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class ConverterTypeException extends ConverterException { + private static final long serialVersionUID = 2546248551752214152L; + + public ConverterTypeException(String message) { + super(message); + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/TypeConverter.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/TypeConverter.java new file mode 100644 index 0000000000000..fbaf5efe0c43b --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/TypeConverter.java @@ -0,0 +1,62 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter; + +import java.util.Locale; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.siemenshvac.internal.metadata.SiemensHvacMetadataDataPoint; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.types.State; +import org.openhab.core.types.Type; + +import com.google.gson.JsonObject; + +/** + * Converter interface for converting between openHAB states/commands and siemensHvac values. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public interface TypeConverter { + + /** + * Converts an openHAB type to a SiemensHVac value. + */ + @Nullable + Object convertToBinding(Type type, ChannelType tp) throws ConverterException; + + /** + * Converts a siemensHvac value to an openHAB type. + */ + State convertFromBinding(JsonObject dp, ChannelType tp, Locale locale) throws ConverterException; + + /** + * get underlying channel type to construct channel type UID + * + */ + String getChannelType(SiemensHvacMetadataDataPoint dpt); + + /** + * get underlying item type on openhab side for this SiemensHvac type + * + */ + String getItemType(SiemensHvacMetadataDataPoint dpt); + + /** + * tell if this type have different subvariant or not + * + */ + boolean hasVariant(); +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/AbstractTypeConverter.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/AbstractTypeConverter.java new file mode 100644 index 0000000000000..69b4485e14d08 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/AbstractTypeConverter.java @@ -0,0 +1,145 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter.type; + +import java.util.Locale; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.siemenshvac.internal.converter.ConverterException; +import org.openhab.binding.siemenshvac.internal.converter.ConverterTypeException; +import org.openhab.binding.siemenshvac.internal.converter.TypeConverter; +import org.openhab.binding.siemenshvac.internal.metadata.SiemensHvacMetadataDataPoint; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.types.Command; +import org.openhab.core.types.State; +import org.openhab.core.types.Type; +import org.openhab.core.types.UnDefType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +/** + * Base class for all Converters with common methods. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public abstract class AbstractTypeConverter implements TypeConverter { + private final Logger logger = LoggerFactory.getLogger(AbstractTypeConverter.class); + + @Override + public @Nullable Object convertToBinding(Type type, ChannelType tp) throws ConverterException { + if (type == UnDefType.NULL) { + return null; + } else if (type.getClass().isEnum()) { + return commandToBinding((Command) type, tp); + } else if (!toBindingValidation(type)) { + String errorMessage = String.format("Can't convert type %s with value '%s' to %s value", + type.getClass().getSimpleName(), type.toString(), this.getClass().getSimpleName()); + throw new ConverterTypeException(errorMessage); + } + + return toBinding(type, tp); + } + + @Override + public State convertFromBinding(JsonObject dp, ChannelType tp, Locale locale) throws ConverterException { + String type = null; + String unit = ""; + JsonElement value = null; + + if (dp.has("Type")) { + type = dp.get("Type").getAsString().trim(); + } + if (dp.has("Value")) { + value = dp.get("Value"); + } + if (dp.has("EnumValue")) { + value = dp.get("EnumValue"); + } + + if (dp.has("Unit")) { + unit = dp.get("Unit").getAsString().trim(); + } + + if (value == null) { + return UnDefType.NULL; + } + + if (type == null) { + logger.debug("siemensHvac:ReadDP:null type {}", dp); + return UnDefType.NULL; + } + + if (!fromBindingValidation(value, unit, type)) { + logger.debug("Can't convert {} value '{}' with {} for '{}'", type, value, this.getClass().getSimpleName(), + dp); + return UnDefType.NULL; + } + + return fromBinding(value, unit, type, tp, locale); + } + + /** + * Converts an openHAB command to a SiemensHvacValue value. + */ + protected @Nullable Object commandToBinding(Command command, ChannelType tp) throws ConverterException { + throw new ConverterException("Unsupported command " + command.getClass().getSimpleName() + " for " + + this.getClass().getSimpleName()); + } + + /** + * Returns true, if the conversion from openHAB to the binding is possible. + */ + protected abstract boolean toBindingValidation(Type type); + + /** + * Converts the type to a datapoint value. + */ + protected abstract @Nullable Object toBinding(Type type, ChannelType tp) throws ConverterException; + + /** + * Returns true, if the conversion from the binding to openHAB is possible. + */ + protected abstract boolean fromBindingValidation(JsonElement value, String unit, String type); + + /** + * Converts the datapoint value to an openHAB type. + */ + protected abstract State fromBinding(JsonElement value, String unit, String type, ChannelType tp, Locale locale) + throws ConverterException; + + /** + * get underlying channel type to construct channel type UID + * + */ + @Override + public abstract String getChannelType(SiemensHvacMetadataDataPoint dpt); + + /** + * get underlying item type on openhab side for this SiemensHvac type + * + */ + @Override + public abstract String getItemType(SiemensHvacMetadataDataPoint dpt); + + /** + * tell if this type have different subvariant or not + * + */ + @Override + public abstract boolean hasVariant(); +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CalendarTypeConverter.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CalendarTypeConverter.java new file mode 100644 index 0000000000000..b6576f74680a4 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CalendarTypeConverter.java @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter.type; + +import java.util.Locale; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.siemenshvac.internal.converter.ConverterException; +import org.openhab.binding.siemenshvac.internal.metadata.SiemensHvacMetadataDataPoint; +import org.openhab.core.library.CoreItemFactory; +import org.openhab.core.library.types.DateTimeType; +import org.openhab.core.library.types.DecimalType; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.types.Type; + +import com.google.gson.JsonElement; + +/** + * Converts between a SiemensHvac datapoint value and an openHAB DecimalType. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class CalendarTypeConverter extends AbstractTypeConverter { + @Override + protected boolean toBindingValidation(Type type) { + return true; + } + + @Override + protected @Nullable Object toBinding(Type type, ChannelType tp) throws ConverterException { + Object valUpdate = null; + + if (type instanceof DateTimeType dateTime) { + valUpdate = dateTime.toString(); + } + + return valUpdate; + } + + @Override + protected boolean fromBindingValidation(JsonElement value, String unit, String type) { + return true; + } + + @Override + protected DecimalType fromBinding(JsonElement value, String unit, String type, ChannelType tp, Locale locale) + throws ConverterException { + throw new ConverterException("NIY"); + } + + @Override + public String getChannelType(SiemensHvacMetadataDataPoint dpt) { + return "datetime"; + } + + @Override + public String getItemType(SiemensHvacMetadataDataPoint dpt) { + return CoreItemFactory.DATETIME; + } + + @Override + public boolean hasVariant() { + return false; + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CheckboxTypeConverter.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CheckboxTypeConverter.java new file mode 100644 index 0000000000000..f6537b407b57b --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/CheckboxTypeConverter.java @@ -0,0 +1,70 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter.type; + +import java.util.Locale; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.siemenshvac.internal.converter.ConverterException; +import org.openhab.binding.siemenshvac.internal.metadata.SiemensHvacMetadataDataPoint; +import org.openhab.core.library.CoreItemFactory; +import org.openhab.core.library.types.DecimalType; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.types.Type; + +import com.google.gson.JsonElement; + +/** + * Converts between a SiemensHvac datapoint value and an openHAB DecimalType. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class CheckboxTypeConverter extends AbstractTypeConverter { + @Override + protected boolean toBindingValidation(Type type) { + return true; + } + + @Override + protected @Nullable Object toBinding(Type type, ChannelType tp) throws ConverterException { + throw new ConverterException("NIY"); + } + + @Override + protected boolean fromBindingValidation(JsonElement value, String unit, String type) { + return true; + } + + @Override + protected DecimalType fromBinding(JsonElement value, String unit, String type, ChannelType tp, Locale locale) + throws ConverterException { + throw new ConverterException("NIY"); + } + + @Override + public String getChannelType(SiemensHvacMetadataDataPoint dpt) { + return "contact"; + } + + @Override + public String getItemType(SiemensHvacMetadataDataPoint dpt) { + return CoreItemFactory.CONTACT; + } + + @Override + public boolean hasVariant() { + return false; + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/DateTimeTypeConverter.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/DateTimeTypeConverter.java new file mode 100644 index 0000000000000..9d6ae69e3655b --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/DateTimeTypeConverter.java @@ -0,0 +1,119 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter.type; + +import java.time.LocalDateTime; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatterBuilder; +import java.time.format.DateTimeParseException; +import java.time.temporal.ChronoField; +import java.util.Locale; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.siemenshvac.internal.converter.ConverterException; +import org.openhab.binding.siemenshvac.internal.metadata.SiemensHvacMetadataDataPoint; +import org.openhab.core.i18n.TimeZoneProvider; +import org.openhab.core.library.CoreItemFactory; +import org.openhab.core.library.types.DateTimeType; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.types.Type; + +import com.google.gson.JsonElement; + +/** + * Converts between a SiemensHvac datapoint value and an openHAB DecimalType. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class DateTimeTypeConverter extends AbstractTypeConverter { + + private final TimeZoneProvider timeZoneProvider; + + public DateTimeTypeConverter(final TimeZoneProvider timeZoneProvider) { + this.timeZoneProvider = timeZoneProvider; + } + + @Override + protected boolean toBindingValidation(Type type) { + return true; + } + + @Override + protected @Nullable Object toBinding(Type type, ChannelType tp) throws ConverterException { + Object valUpdate = null; + + if (type instanceof DateTimeType dateTime) { + valUpdate = dateTime.toString(); + } + + return valUpdate; + } + + @Override + protected boolean fromBindingValidation(JsonElement value, String unit, String type) { + return true; + } + + @Override + protected DateTimeType fromBinding(JsonElement value, String unit, String type, ChannelType tp, Locale locale) + throws ConverterException { + if ("----".equals(value.getAsString())) { + return new DateTimeType(ZonedDateTime.now(this.timeZoneProvider.getTimeZone())); + } else { + String[] formats = { "EEEE, d. LLLL yyyy HH:mm[:ss]", "d. LLLL yyyy HH:mm[:ss]", "d. LLLL yyyy", + "d. LLLL" }; + + for (int i = 0; i < formats.length; i++) { + try { + DateTimeFormatterBuilder formatterBuilder = new DateTimeFormatterBuilder().parseCaseInsensitive() + .appendPattern(formats[i]).parseDefaulting(ChronoField.HOUR_OF_DAY, 0) + .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0) + .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0); + + if (i == 3) { + formatterBuilder = formatterBuilder.parseDefaulting(ChronoField.YEAR, + ZonedDateTime.now(this.timeZoneProvider.getTimeZone()).getYear()); + } + + LocalDateTime parsedDate = LocalDateTime.parse(value.getAsString(), + formatterBuilder.toFormatter(locale)); + + ZonedDateTime zdt = parsedDate.atZone(this.timeZoneProvider.getTimeZone()); + + return new DateTimeType(zdt); + } catch (DateTimeParseException ex) { + // Silently ignore, we are proceeding to next format. + } + } + } + + throw new ConverterException("Can't parse the date for:" + value); + } + + @Override + public String getChannelType(SiemensHvacMetadataDataPoint dpt) { + return "datetime"; + } + + @Override + public String getItemType(SiemensHvacMetadataDataPoint dpt) { + return CoreItemFactory.DATETIME; + } + + @Override + public boolean hasVariant() { + return false; + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/EnumTypeConverter.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/EnumTypeConverter.java new file mode 100644 index 0000000000000..b23bfb1cad8c5 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/EnumTypeConverter.java @@ -0,0 +1,76 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter.type; + +import java.util.Locale; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.siemenshvac.internal.converter.ConverterException; +import org.openhab.binding.siemenshvac.internal.metadata.SiemensHvacMetadataDataPoint; +import org.openhab.core.library.CoreItemFactory; +import org.openhab.core.library.types.DecimalType; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.types.Type; + +import com.google.gson.JsonElement; + +/** + * Converts between a SiemensHvac datapoint value and an openHAB DecimalType. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class EnumTypeConverter extends AbstractTypeConverter { + @Override + protected boolean toBindingValidation(Type type) { + return true; + } + + @Override + protected @Nullable Object toBinding(Type type, ChannelType tp) throws ConverterException { + Object valUpdate = null; + + if (type instanceof DecimalType decimalValue) { + valUpdate = decimalValue.toString(); + } + + return valUpdate; + } + + @Override + protected boolean fromBindingValidation(JsonElement value, String unit, String type) { + return true; + } + + @Override + protected DecimalType fromBinding(JsonElement value, String unit, String type, ChannelType tp, Locale locale) + throws ConverterException { + return new DecimalType(value.getAsInt()); + } + + @Override + public String getChannelType(SiemensHvacMetadataDataPoint dpt) { + return "number"; + } + + @Override + public String getItemType(SiemensHvacMetadataDataPoint dpt) { + return CoreItemFactory.NUMBER; + } + + @Override + public boolean hasVariant() { + return true; + } +} diff --git a/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/NumericTypeConverter.java b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/NumericTypeConverter.java new file mode 100644 index 0000000000000..0b9c895c35a98 --- /dev/null +++ b/bundles/org.openhab.binding.siemenshvac/src/main/java/org/openhab/binding/siemenshvac/internal/converter/type/NumericTypeConverter.java @@ -0,0 +1,250 @@ +/** + * Copyright (c) 2010-2024 Contributors to the openHAB project + * + * See the NOTICE file(s) distributed with this work for additional + * information. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0 + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.openhab.binding.siemenshvac.internal.converter.type; + +import java.util.Locale; + +import javax.measure.Unit; +import javax.measure.quantity.Dimensionless; +import javax.measure.quantity.ElectricPotential; +import javax.measure.quantity.Temperature; +import javax.measure.quantity.Time; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; +import org.openhab.binding.siemenshvac.internal.converter.ConverterException; +import org.openhab.binding.siemenshvac.internal.metadata.SiemensHvacMetadataDataPoint; +import org.openhab.core.library.CoreItemFactory; +import org.openhab.core.library.types.DecimalType; +import org.openhab.core.library.types.QuantityType; +import org.openhab.core.library.unit.ImperialUnits; +import org.openhab.core.library.unit.SIUnits; +import org.openhab.core.library.unit.Units; +import org.openhab.core.thing.type.ChannelType; +import org.openhab.core.types.State; +import org.openhab.core.types.Type; + +import com.google.gson.JsonElement; + +/** + * Converts between a SiemensHvac datapoint value and an openHAB DecimalType. + * + * @author Laurent Arnal - Initial contribution + */ +@NonNullByDefault +public class NumericTypeConverter extends AbstractTypeConverter { + + @Override + protected boolean toBindingValidation(Type type) { + return true; + } + + @Override + protected @Nullable Object toBinding(Type type, ChannelType tp) throws ConverterException { + Object valUpdate = null; + + if (type instanceof QuantityType quantityType) { + Number num = (quantityType); + valUpdate = num.doubleValue(); + } else if (type instanceof DecimalType decimalValue) { + valUpdate = decimalValue.toString(); + } + + return valUpdate; + } + + @Override + protected boolean fromBindingValidation(JsonElement value, String unit, String type) { + return true; + } + + @Override + protected State fromBinding(JsonElement value, String unit, String type, ChannelType tp, Locale locale) + throws ConverterException { + if ("----".equals(value.getAsString())) { + return new DecimalType(0); + } else { + double dValue = value.getAsDouble(); + + String itemType = tp.getItemType(); + + if (itemType != null) { + if ("Number:Temperature".equals(itemType)) { + Unit targetUnit = null; + + if ("°C".equals(unit)) { + targetUnit = SIUnits.CELSIUS; + } else if ("°F".equals(unit)) { + targetUnit = ImperialUnits.FAHRENHEIT; + } + + if (targetUnit != null) { + return new QuantityType<>(dValue, targetUnit); + } + } else if ("Number:ElectricPotential".equals(itemType)) { + Unit targetUnit = null; + + if ("V".equals(unit)) { + targetUnit = Units.VOLT; + } + + if (targetUnit != null) { + return new QuantityType<>(dValue, targetUnit); + } + } else if ("Number:Time".equals(itemType)) { + Unit