From 7953cd25bae41e6327253b2f22376ea7a93ec186 Mon Sep 17 00:00:00 2001 From: bahmcloud Date: Sun, 15 Feb 2026 18:00:55 +0100 Subject: [PATCH] Add light port support --- .idea/PROJECT_STATE.md | 3 +- CHANGELOG.md | 3 + README.md | 42 +- custom_components/ha_knx_bridge/bridge.py | 1096 ++++++++++++++++- .../ha_knx_bridge/config_flow.py | 429 +++++++ custom_components/ha_knx_bridge/const.py | 90 ++ custom_components/ha_knx_bridge/manifest.json | 2 +- custom_components/ha_knx_bridge/strings.json | 233 +++- .../ha_knx_bridge/translations/ar.json | 121 +- .../ha_knx_bridge/translations/bg.json | 121 +- .../ha_knx_bridge/translations/ca.json | 121 +- .../ha_knx_bridge/translations/cs.json | 121 +- .../ha_knx_bridge/translations/da.json | 121 +- .../ha_knx_bridge/translations/de.json | 121 +- .../ha_knx_bridge/translations/el.json | 121 +- .../ha_knx_bridge/translations/en.json | 121 +- .../ha_knx_bridge/translations/es.json | 121 +- .../ha_knx_bridge/translations/et.json | 121 +- .../ha_knx_bridge/translations/fi.json | 121 +- .../ha_knx_bridge/translations/fr.json | 121 +- .../ha_knx_bridge/translations/he.json | 121 +- .../ha_knx_bridge/translations/hi.json | 121 +- .../ha_knx_bridge/translations/hr.json | 121 +- .../ha_knx_bridge/translations/hu.json | 121 +- .../ha_knx_bridge/translations/id.json | 121 +- .../ha_knx_bridge/translations/is.json | 121 +- .../ha_knx_bridge/translations/it.json | 121 +- .../ha_knx_bridge/translations/ja.json | 121 +- .../ha_knx_bridge/translations/ko.json | 121 +- .../ha_knx_bridge/translations/lt.json | 121 +- .../ha_knx_bridge/translations/lv.json | 121 +- .../ha_knx_bridge/translations/nb.json | 121 +- .../ha_knx_bridge/translations/nl.json | 121 +- .../ha_knx_bridge/translations/pl.json | 121 +- .../ha_knx_bridge/translations/pt-BR.json | 121 +- .../ha_knx_bridge/translations/pt.json | 121 +- .../ha_knx_bridge/translations/ro.json | 121 +- .../ha_knx_bridge/translations/ru.json | 121 +- .../ha_knx_bridge/translations/sk.json | 121 +- .../ha_knx_bridge/translations/sl.json | 121 +- .../ha_knx_bridge/translations/sv.json | 121 +- .../ha_knx_bridge/translations/th.json | 121 +- .../ha_knx_bridge/translations/tr.json | 121 +- .../ha_knx_bridge/translations/uk.json | 121 +- .../ha_knx_bridge/translations/vi.json | 121 +- .../ha_knx_bridge/translations/zh-Hans.json | 121 +- .../ha_knx_bridge/translations/zh-Hant.json | 121 +- logo.jpg | Bin 0 -> 141265 bytes 48 files changed, 6122 insertions(+), 495 deletions(-) create mode 100644 logo.jpg diff --git a/.idea/PROJECT_STATE.md b/.idea/PROJECT_STATE.md index dae01f1..bee4c41 100644 --- a/.idea/PROJECT_STATE.md +++ b/.idea/PROJECT_STATE.md @@ -38,7 +38,8 @@ Completed: - Cover HA state -> KNX percent updates (DPT 5.001) - README includes initial DPT mapping and roadmap. - Incoming invert toggles removed; outgoing inversion remains only for state addresses. -- Project version set to 0.0.20 and `CHANGELOG.md` maintained. +- Light port support added with full KNX color/temperature mappings and individual color channels. +- Project version set to 0.0.21 and `CHANGELOG.md` maintained. Files created: - `custom_components/ha_knx_bridge/__init__.py` diff --git a/CHANGELOG.md b/CHANGELOG.md index ab66353..1789804 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 0.0.21 - 2026-02-15 +- Add full light port support with KNX color/temperature mappings and individual color channels. + ## 0.0.20 - 2026-02-15 - Remove incoming invert toggles; keep outgoing inversion only for state addresses. diff --git a/README.md b/README.md index d96dbb9..d9b0b91 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Current minimal scope: - Binary Sensor port (state -> KNX) - Switch port (KNX -> HA commands, HA state -> KNX) - Cover port (KNX -> HA commands, HA state -> KNX) +- Light port (KNX -> HA commands, HA state -> KNX) ## Requirements - Home Assistant 2025.12 or newer (tested for compatibility with 2026.2). @@ -47,6 +48,32 @@ Only state addresses expose an `invert outgoing` toggle to flip KNX payloads. - `command_address` (DPT 1): KNX group address for on/off commands. - `state_address` (DPT 1): KNX group address that receives HA on/off state. +### Light Port +- `entity_id`: the HA light to control/monitor. +- `address` (DPT 1.001): KNX group address for on/off commands. +- `state_address` (DPT 1.001): KNX group address that receives HA on/off state. +- `brightness_address` (DPT 5.001): KNX group address for brightness commands. +- `brightness_state_address` (DPT 5.001): KNX group address that receives HA brightness. +- `color_address` (DPT 232.600): KNX group address for RGB commands. +- `color_state_address` (DPT 232.600): KNX group address that receives HA RGB state. +- `rgbw_address` (DPT 251.600): KNX group address for RGBW commands. +- `rgbw_state_address` (DPT 251.600): KNX group address that receives HA RGBW state. +- `hue_address` (DPT 5.003): KNX group address for hue commands. +- `hue_state_address` (DPT 5.003): KNX group address that receives HA hue state. +- `saturation_address` (DPT 5.001): KNX group address for saturation commands. +- `saturation_state_address` (DPT 5.001): KNX group address that receives HA saturation state. +- `xyy_address` (DPT 242.600): KNX group address for XY color commands. +- `xyy_state_address` (DPT 242.600): KNX group address that receives HA XY color state. +- `color_temperature_address` (DPT 5.001/7.600/9): KNX group address for color temperature commands. +- `color_temperature_state_address` (DPT 5.001/7.600/9): KNX group address that receives HA color temperature state. +- `color_temperature_mode`: `relative` (DPT 5.001 percent), `absolute` (DPT 7.600 Kelvin), or `absolute_float` (DPT 9 Kelvin). +- `min_kelvin` / `max_kelvin`: Kelvin range used for `relative` color temperature mapping. +- Individual colors (DPT 1.001 + 5.001): `red_*`, `green_*`, `blue_*`, `white_*` on/off and brightness addresses with matching state addresses. + +Notes: +- If `state_address` or `*_state_address` is empty, the command address is reused for outgoing updates. +- For XY color, the bridge sends the brightness as the Y (luminance) component. + ## Notes - For DPT 1.008 (Up/Down), the bridge treats `0 = Up/Open` and `1 = Down/Close`. - For DPT 5.001, values are interpreted as 0-100 percent where 0 = closed and 100 = open. @@ -61,13 +88,22 @@ Only state addresses expose an `invert outgoing` toggle to flip KNX payloads. - Cover `position_state_address`: DPT 5.001 - Cover `angle_address`: DPT 5.001 - Cover `angle_state_address`: DPT 5.001 +- Light `address` / `state_address`: DPT 1.001 +- Light `brightness_address` / `brightness_state_address`: DPT 5.001 +- Light `color_address` / `color_state_address`: DPT 232.600 +- Light `rgbw_address` / `rgbw_state_address`: DPT 251.600 +- Light `hue_address` / `hue_state_address`: DPT 5.003 +- Light `saturation_address` / `saturation_state_address`: DPT 5.001 +- Light `xyy_address` / `xyy_state_address`: DPT 242.600 +- Light `color_temperature_address` / `color_temperature_state_address`: DPT 5.001/7.600/9 +- Light `red_*`, `green_*`, `blue_*`, `white_*` brightness: DPT 5.001 +- Light `red_*`, `green_*`, `blue_*`, `white_*` on/off: DPT 1.001 ## Roadmap - Optional standalone KNX connection (without requiring the HA KNX integration). -- Additional entity types (light, switch, sensor, climate). +- Additional entity types (sensor, climate). - Advanced DPT mapping options and inversion settings. ## Versioning and Releases -- Current version: 0.0.20 +- Current version: 0.0.21 - `CHANGELOG.md` lists versions with the newest entries at the top. -- Release creation is manual and only done when explicitly requested. diff --git a/custom_components/ha_knx_bridge/bridge.py b/custom_components/ha_knx_bridge/bridge.py index f10a0a6..a70b3c5 100644 --- a/custom_components/ha_knx_bridge/bridge.py +++ b/custom_components/ha_knx_bridge/bridge.py @@ -4,10 +4,20 @@ from dataclasses import dataclass import logging from typing import Any +from homeassistant.components.light import ( + ATTR_BRIGHTNESS, + ATTR_COLOR_MODE, + ATTR_COLOR_TEMP, + ATTR_HS_COLOR, + ATTR_RGB_COLOR, + ATTR_RGBW_COLOR, + ATTR_XY_COLOR, +) from homeassistant.config_entries import ConfigEntry from homeassistant.core import Event, HomeAssistant, State from homeassistant.exceptions import ConfigEntryNotReady from homeassistant.helpers import event as event_helper +from homeassistant.util import color as color_util from .const import ( CONF_ANGLE_ADDRESS, @@ -16,6 +26,42 @@ from .const import ( ADDRESS_VALUE_TYPE, CONF_COMMAND_ADDRESS, CONF_INVERT_OUTGOING, + CONF_LIGHT_ADDRESS, + CONF_LIGHT_STATE_ADDRESS, + CONF_LIGHT_BRIGHTNESS_ADDRESS, + CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_COLOR_ADDRESS, + CONF_LIGHT_COLOR_STATE_ADDRESS, + CONF_LIGHT_RGBW_ADDRESS, + CONF_LIGHT_RGBW_STATE_ADDRESS, + CONF_LIGHT_HUE_ADDRESS, + CONF_LIGHT_HUE_STATE_ADDRESS, + CONF_LIGHT_SATURATION_ADDRESS, + CONF_LIGHT_SATURATION_STATE_ADDRESS, + CONF_LIGHT_XYY_ADDRESS, + CONF_LIGHT_XYY_STATE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_MODE, + CONF_LIGHT_MIN_KELVIN, + CONF_LIGHT_MAX_KELVIN, + CONF_LIGHT_RED_ADDRESS, + CONF_LIGHT_RED_STATE_ADDRESS, + CONF_LIGHT_RED_BRIGHTNESS_ADDRESS, + CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_GREEN_ADDRESS, + CONF_LIGHT_GREEN_STATE_ADDRESS, + CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS, + CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_BLUE_ADDRESS, + CONF_LIGHT_BLUE_STATE_ADDRESS, + CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS, + CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_WHITE_ADDRESS, + CONF_LIGHT_WHITE_STATE_ADDRESS, + CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS, + CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS, + LIGHT_COLOR_TEMPERATURE_MODES, CONF_MOVE_LONG_ADDRESS, CONF_MOVE_SHORT_ADDRESS, CONF_PORT_ENABLED, @@ -30,6 +76,11 @@ _LOGGER = logging.getLogger(__name__) KNX_DOMAIN = "knx" +try: + from homeassistant.components.light import ATTR_COLOR_TEMP_KELVIN +except ImportError: # pragma: no cover - fallback for older HA + ATTR_COLOR_TEMP_KELVIN = "color_temp_kelvin" + @dataclass(frozen=True) class BinarySensorPort: @@ -66,6 +117,58 @@ class AddressOptions: invert_outgoing: bool +@dataclass(frozen=True) +class LightPort: + entity_id: str + address: str | None + state_address: str | None + state_invert_outgoing: bool + brightness_address: str | None + brightness_state_address: str | None + brightness_state_invert_outgoing: bool + color_address: str | None + color_state_address: str | None + rgbw_address: str | None + rgbw_state_address: str | None + hue_address: str | None + hue_state_address: str | None + saturation_address: str | None + saturation_state_address: str | None + saturation_state_invert_outgoing: bool + xyy_address: str | None + xyy_state_address: str | None + color_temperature_address: str | None + color_temperature_state_address: str | None + color_temperature_state_invert_outgoing: bool + color_temperature_mode: str + min_kelvin: int | None + max_kelvin: int | None + red_address: str | None + red_state_address: str | None + red_state_invert_outgoing: bool + red_brightness_address: str | None + red_brightness_state_address: str | None + red_brightness_state_invert_outgoing: bool + green_address: str | None + green_state_address: str | None + green_state_invert_outgoing: bool + green_brightness_address: str | None + green_brightness_state_address: str | None + green_brightness_state_invert_outgoing: bool + blue_address: str | None + blue_state_address: str | None + blue_state_invert_outgoing: bool + blue_brightness_address: str | None + blue_brightness_state_address: str | None + blue_brightness_state_invert_outgoing: bool + white_address: str | None + white_state_address: str | None + white_state_invert_outgoing: bool + white_brightness_address: str | None + white_brightness_state_address: str | None + white_brightness_state_invert_outgoing: bool + + class BridgeManager: def __init__(self, hass: HomeAssistant, entry: ConfigEntry) -> None: self.hass = hass @@ -75,14 +178,15 @@ class BridgeManager: self._address_handlers: dict[str, callable[[Event], Any]] = {} self._registered_addresses: list[tuple[str, str | None]] = [] self._address_options: dict[str, AddressOptions] = {} + self._light_components: dict[str, dict[str, int]] = {} async def async_setup(self) -> None: if not self.hass.services.has_service(KNX_DOMAIN, "send"): raise ConfigEntryNotReady("KNX integration services not available") - binary_ports, switch_ports, cover_ports = self._load_ports() - self._register_outgoing(binary_ports, switch_ports, cover_ports) - await self._register_incoming(switch_ports, cover_ports) + binary_ports, switch_ports, cover_ports, light_ports = self._load_ports() + self._register_outgoing(binary_ports, switch_ports, cover_ports, light_ports) + await self._register_incoming(switch_ports, cover_ports, light_ports) async def async_unload(self) -> None: for unsub in self._unsub_listeners: @@ -97,10 +201,16 @@ class BridgeManager: def _load_ports( self, - ) -> tuple[list[BinarySensorPort], list[SwitchPort], list[CoverPort]]: + ) -> tuple[ + list[BinarySensorPort], + list[SwitchPort], + list[CoverPort], + list[LightPort], + ]: binary_ports: list[BinarySensorPort] = [] switch_ports: list[SwitchPort] = [] cover_ports: list[CoverPort] = [] + light_ports: list[LightPort] = [] enabled_overrides = dict(self.entry.options.get(CONF_PORT_ENABLED, {})) for port in _iter_port_configs(self.entry): @@ -154,14 +264,173 @@ class BridgeManager: ), ) ) + elif port_type == "light": + color_temp_mode = str( + data.get(CONF_LIGHT_COLOR_TEMPERATURE_MODE, "absolute") + ) + if color_temp_mode not in LIGHT_COLOR_TEMPERATURE_MODES: + color_temp_mode = "absolute" + light_ports.append( + LightPort( + entity_id=data["entity_id"], + address=_clean_address(data.get(CONF_LIGHT_ADDRESS)), + state_address=_clean_address( + data.get(CONF_LIGHT_STATE_ADDRESS) + ), + state_invert_outgoing=_clean_bool( + data.get(_invert_out_key(CONF_LIGHT_STATE_ADDRESS)) + ), + brightness_address=_clean_address( + data.get(CONF_LIGHT_BRIGHTNESS_ADDRESS) + ), + brightness_state_address=_clean_address( + data.get(CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS) + ), + brightness_state_invert_outgoing=_clean_bool( + data.get( + _invert_out_key(CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS) + ) + ), + color_address=_clean_address(data.get(CONF_LIGHT_COLOR_ADDRESS)), + color_state_address=_clean_address( + data.get(CONF_LIGHT_COLOR_STATE_ADDRESS) + ), + rgbw_address=_clean_address(data.get(CONF_LIGHT_RGBW_ADDRESS)), + rgbw_state_address=_clean_address( + data.get(CONF_LIGHT_RGBW_STATE_ADDRESS) + ), + hue_address=_clean_address(data.get(CONF_LIGHT_HUE_ADDRESS)), + hue_state_address=_clean_address( + data.get(CONF_LIGHT_HUE_STATE_ADDRESS) + ), + saturation_address=_clean_address( + data.get(CONF_LIGHT_SATURATION_ADDRESS) + ), + saturation_state_address=_clean_address( + data.get(CONF_LIGHT_SATURATION_STATE_ADDRESS) + ), + saturation_state_invert_outgoing=_clean_bool( + data.get( + _invert_out_key( + CONF_LIGHT_SATURATION_STATE_ADDRESS + ) + ) + ), + xyy_address=_clean_address(data.get(CONF_LIGHT_XYY_ADDRESS)), + xyy_state_address=_clean_address( + data.get(CONF_LIGHT_XYY_STATE_ADDRESS) + ), + color_temperature_address=_clean_address( + data.get(CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS) + ), + color_temperature_state_address=_clean_address( + data.get(CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS) + ), + color_temperature_state_invert_outgoing=_clean_bool( + data.get( + _invert_out_key( + CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS + ) + ) + ), + color_temperature_mode=color_temp_mode, + min_kelvin=_clean_int(data.get(CONF_LIGHT_MIN_KELVIN)), + max_kelvin=_clean_int(data.get(CONF_LIGHT_MAX_KELVIN)), + red_address=_clean_address(data.get(CONF_LIGHT_RED_ADDRESS)), + red_state_address=_clean_address( + data.get(CONF_LIGHT_RED_STATE_ADDRESS) + ), + red_state_invert_outgoing=_clean_bool( + data.get(_invert_out_key(CONF_LIGHT_RED_STATE_ADDRESS)) + ), + red_brightness_address=_clean_address( + data.get(CONF_LIGHT_RED_BRIGHTNESS_ADDRESS) + ), + red_brightness_state_address=_clean_address( + data.get(CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS) + ), + red_brightness_state_invert_outgoing=_clean_bool( + data.get( + _invert_out_key( + CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS + ) + ) + ), + green_address=_clean_address( + data.get(CONF_LIGHT_GREEN_ADDRESS) + ), + green_state_address=_clean_address( + data.get(CONF_LIGHT_GREEN_STATE_ADDRESS) + ), + green_state_invert_outgoing=_clean_bool( + data.get(_invert_out_key(CONF_LIGHT_GREEN_STATE_ADDRESS)) + ), + green_brightness_address=_clean_address( + data.get(CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS) + ), + green_brightness_state_address=_clean_address( + data.get(CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS) + ), + green_brightness_state_invert_outgoing=_clean_bool( + data.get( + _invert_out_key( + CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS + ) + ) + ), + blue_address=_clean_address(data.get(CONF_LIGHT_BLUE_ADDRESS)), + blue_state_address=_clean_address( + data.get(CONF_LIGHT_BLUE_STATE_ADDRESS) + ), + blue_state_invert_outgoing=_clean_bool( + data.get(_invert_out_key(CONF_LIGHT_BLUE_STATE_ADDRESS)) + ), + blue_brightness_address=_clean_address( + data.get(CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS) + ), + blue_brightness_state_address=_clean_address( + data.get(CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS) + ), + blue_brightness_state_invert_outgoing=_clean_bool( + data.get( + _invert_out_key( + CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS + ) + ) + ), + white_address=_clean_address( + data.get(CONF_LIGHT_WHITE_ADDRESS) + ), + white_state_address=_clean_address( + data.get(CONF_LIGHT_WHITE_STATE_ADDRESS) + ), + white_state_invert_outgoing=_clean_bool( + data.get(_invert_out_key(CONF_LIGHT_WHITE_STATE_ADDRESS)) + ), + white_brightness_address=_clean_address( + data.get(CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS) + ), + white_brightness_state_address=_clean_address( + data.get(CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS) + ), + white_brightness_state_invert_outgoing=_clean_bool( + data.get( + _invert_out_key( + CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS + ) + ) + ), + ) + ) - return binary_ports, switch_ports, cover_ports + return binary_ports, switch_ports, cover_ports, light_ports def _register_outgoing( self, binary_ports: list[BinarySensorPort], switch_ports: list[SwitchPort], cover_ports: list[CoverPort], + light_ports: list[LightPort], ) -> None: for port in binary_ports: if not port.state_address: @@ -212,8 +481,93 @@ class BridgeManager: ) ) + for port in light_ports: + if port.state_address: + self._remember_address_options( + port.state_address, + _get_value_type(CONF_LIGHT_STATE_ADDRESS), + port.state_invert_outgoing, + ) + if port.brightness_state_address: + self._remember_address_options( + port.brightness_state_address, + _get_value_type(CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS), + port.brightness_state_invert_outgoing, + ) + if port.saturation_state_address: + self._remember_address_options( + port.saturation_state_address, + _get_value_type(CONF_LIGHT_SATURATION_STATE_ADDRESS), + port.saturation_state_invert_outgoing, + ) + if ( + port.color_temperature_state_address + and port.color_temperature_mode == "relative" + ): + self._remember_address_options( + port.color_temperature_state_address, + "percent", + port.color_temperature_state_invert_outgoing, + ) + if port.red_state_address: + self._remember_address_options( + port.red_state_address, + _get_value_type(CONF_LIGHT_RED_STATE_ADDRESS), + port.red_state_invert_outgoing, + ) + if port.red_brightness_state_address: + self._remember_address_options( + port.red_brightness_state_address, + _get_value_type(CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS), + port.red_brightness_state_invert_outgoing, + ) + if port.green_state_address: + self._remember_address_options( + port.green_state_address, + _get_value_type(CONF_LIGHT_GREEN_STATE_ADDRESS), + port.green_state_invert_outgoing, + ) + if port.green_brightness_state_address: + self._remember_address_options( + port.green_brightness_state_address, + _get_value_type(CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS), + port.green_brightness_state_invert_outgoing, + ) + if port.blue_state_address: + self._remember_address_options( + port.blue_state_address, + _get_value_type(CONF_LIGHT_BLUE_STATE_ADDRESS), + port.blue_state_invert_outgoing, + ) + if port.blue_brightness_state_address: + self._remember_address_options( + port.blue_brightness_state_address, + _get_value_type(CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS), + port.blue_brightness_state_invert_outgoing, + ) + if port.white_state_address: + self._remember_address_options( + port.white_state_address, + _get_value_type(CONF_LIGHT_WHITE_STATE_ADDRESS), + port.white_state_invert_outgoing, + ) + if port.white_brightness_state_address: + self._remember_address_options( + port.white_brightness_state_address, + _get_value_type(CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS), + port.white_brightness_state_invert_outgoing, + ) + self._unsub_listeners.append( + event_helper.async_track_state_change_event( + self.hass, [port.entity_id], self._light_changed(port) + ) + ) + async def _register_incoming( - self, switch_ports: list[SwitchPort], cover_ports: list[CoverPort] + self, + switch_ports: list[SwitchPort], + cover_ports: list[CoverPort], + light_ports: list[LightPort], ) -> None: for port in switch_ports: self._register_knx_switch_address( @@ -253,6 +607,104 @@ class BridgeManager: "angle", ) + for port in light_ports: + self._register_knx_light_command( + port.address, + _get_event_type(CONF_LIGHT_ADDRESS), + port, + "switch", + ) + self._register_knx_light_command( + port.brightness_address, + _get_event_type(CONF_LIGHT_BRIGHTNESS_ADDRESS), + port, + "brightness", + ) + self._register_knx_light_command( + port.color_address, + _get_event_type(CONF_LIGHT_COLOR_ADDRESS), + port, + "color", + ) + self._register_knx_light_command( + port.rgbw_address, + _get_event_type(CONF_LIGHT_RGBW_ADDRESS), + port, + "rgbw", + ) + self._register_knx_light_command( + port.hue_address, + _get_event_type(CONF_LIGHT_HUE_ADDRESS), + port, + "hue", + ) + self._register_knx_light_command( + port.saturation_address, + _get_event_type(CONF_LIGHT_SATURATION_ADDRESS), + port, + "saturation", + ) + self._register_knx_light_command( + port.xyy_address, + _get_event_type(CONF_LIGHT_XYY_ADDRESS), + port, + "xyy", + ) + self._register_knx_light_command( + port.color_temperature_address, + _light_color_temperature_event_type(port.color_temperature_mode), + port, + "color_temperature", + ) + self._register_knx_light_command( + port.red_address, + _get_event_type(CONF_LIGHT_RED_ADDRESS), + port, + "red_switch", + ) + self._register_knx_light_command( + port.red_brightness_address, + _get_event_type(CONF_LIGHT_RED_BRIGHTNESS_ADDRESS), + port, + "red_brightness", + ) + self._register_knx_light_command( + port.green_address, + _get_event_type(CONF_LIGHT_GREEN_ADDRESS), + port, + "green_switch", + ) + self._register_knx_light_command( + port.green_brightness_address, + _get_event_type(CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS), + port, + "green_brightness", + ) + self._register_knx_light_command( + port.blue_address, + _get_event_type(CONF_LIGHT_BLUE_ADDRESS), + port, + "blue_switch", + ) + self._register_knx_light_command( + port.blue_brightness_address, + _get_event_type(CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS), + port, + "blue_brightness", + ) + self._register_knx_light_command( + port.white_address, + _get_event_type(CONF_LIGHT_WHITE_ADDRESS), + port, + "white_switch", + ) + self._register_knx_light_command( + port.white_brightness_address, + _get_event_type(CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS), + port, + "white_brightness", + ) + if self._address_handlers: if hasattr(event_helper, "async_track_event"): self._knx_event_unsub = event_helper.async_track_event( @@ -302,6 +754,20 @@ class BridgeManager: ) self._registered_addresses.append((address, _get_event_type(CONF_COMMAND_ADDRESS))) + def _register_knx_light_command( + self, + address: str | None, + event_type: str | None, + port: LightPort, + action: str, + ) -> None: + if not address: + return + self._address_handlers[address] = lambda event: self._handle_light_action( + port, action, event + ) + self._registered_addresses.append((address, event_type)) + def _remember_address_options( self, address: str, @@ -392,6 +858,142 @@ class BridgeManager: return _handler + def _light_changed(self, port: LightPort) -> callable[[Event], Any]: + async def _handler(event: Event) -> None: + new_state: State | None = event.data.get("new_state") + if new_state is None: + return + if new_state.state not in ("on", "off"): + return + + is_on = new_state.state == "on" + attrs = new_state.attributes + brightness = attrs.get(ATTR_BRIGHTNESS) + brightness_percent = ( + _brightness_to_percent(brightness) if brightness is not None else None + ) + hs_color = attrs.get(ATTR_HS_COLOR) + rgb_color = attrs.get(ATTR_RGB_COLOR) + rgbw_color = attrs.get(ATTR_RGBW_COLOR) + xy_color = attrs.get(ATTR_XY_COLOR) + color_temp_kelvin = attrs.get(ATTR_COLOR_TEMP_KELVIN) + color_temp_mired = attrs.get(ATTR_COLOR_TEMP) + + if color_temp_kelvin is None and color_temp_mired is not None: + color_temp_kelvin = _mireds_to_kelvin(color_temp_mired) + + if port.state_address or port.address: + payload = 1 if is_on else 0 + target = port.state_address or port.address + if port.state_address: + payload = _invert_value( + payload, port.state_address, self._address_options + ) + await self._knx_send_raw(target, payload) + + if port.brightness_state_address or port.brightness_address: + if is_on: + if brightness_percent is None: + pass + else: + target = ( + port.brightness_state_address or port.brightness_address + ) + payload = brightness_percent + if port.brightness_state_address: + payload = _invert_value( + payload, port.brightness_state_address, self._address_options + ) + await self._knx_send_percent(target, payload) + else: + target = port.brightness_state_address or port.brightness_address + if target: + payload = 0 + if port.brightness_state_address: + payload = _invert_value( + payload, port.brightness_state_address, self._address_options + ) + await self._knx_send_percent(target, payload) + + if rgb_color is None and hs_color is not None: + rgb_color = color_util.color_hs_to_RGB(*hs_color) + if rgb_color is None and xy_color is not None: + rgb_color = color_util.color_xy_to_RGB( + xy_color[0], xy_color[1], brightness or 255 + ) + + if port.color_state_address or port.color_address: + target = port.color_state_address or port.color_address + if rgb_color is not None and target: + await self._knx_send_typed(target, list(rgb_color), "232.600") + + if port.rgbw_state_address or port.rgbw_address: + target = port.rgbw_state_address or port.rgbw_address + if rgbw_color is not None and target: + await self._knx_send_typed(target, list(rgbw_color), "251.600") + + if port.hue_state_address or port.hue_address: + target = port.hue_state_address or port.hue_address + if hs_color is not None and target: + await self._knx_send_typed(target, int(round(hs_color[0])), "5.003") + + if port.saturation_state_address or port.saturation_address: + target = port.saturation_state_address or port.saturation_address + if hs_color is not None and target: + payload = int(round(hs_color[1])) + if port.saturation_state_address: + payload = _invert_value( + payload, port.saturation_state_address, self._address_options + ) + await self._knx_send_percent(target, payload) + + if port.xyy_state_address or port.xyy_address: + target = port.xyy_state_address or port.xyy_address + if xy_color is not None and target: + if brightness_percent is None: + brightness_value = 100 if is_on else 0 + else: + brightness_value = brightness_percent + await self._knx_send_typed( + target, + [float(xy_color[0]), float(xy_color[1]), int(brightness_value)], + "242.600", + ) + + if port.color_temperature_state_address or port.color_temperature_address: + target = ( + port.color_temperature_state_address + or port.color_temperature_address + ) + if target and color_temp_kelvin is not None: + payload, dpt_type = _color_temperature_payload( + color_temp_kelvin, + port, + clamp=True, + ) + if ( + port.color_temperature_state_address + and port.color_temperature_mode == "relative" + ): + payload = _invert_value( + int(round(payload)), + port.color_temperature_state_address, + self._address_options, + ) + await self._knx_send_typed(target, payload, dpt_type) + + self._update_light_components_from_state( + port, + is_on, + brightness, + rgb_color, + rgbw_color, + ) + + await self._send_light_component_states(port) + + return _handler + async def _handle_knx_event(self, event: Event) -> None: direction = event.data.get("direction") if direction is not None and not str(direction).lower().startswith("incoming"): @@ -447,6 +1049,117 @@ class BridgeManager: elif value == 1: await self._call_switch_service(port.entity_id, "turn_on") + async def _handle_light_action( + self, port: LightPort, action: str, event: Event + ) -> None: + if action == "switch": + value = _extract_event_value(event) + if value is None: + return + if value == 0: + await self._call_light_service(port.entity_id, "turn_off") + elif value == 1: + await self._call_light_service(port.entity_id, "turn_on") + return + + if action == "brightness": + value = _extract_event_value(event) + if value is None: + return + value = _clamp_percent(value) + if value == 0: + await self._call_light_service(port.entity_id, "turn_off") + else: + await self._call_light_service( + port.entity_id, + "turn_on", + {"brightness": _percent_to_brightness(value)}, + ) + return + + if action == "color": + rgb = _extract_rgb_value(event) + if rgb is None: + return + await self._call_light_service( + port.entity_id, "turn_on", {"rgb_color": rgb} + ) + return + + if action == "rgbw": + rgbw = _extract_rgbw_value(event) + if rgbw is None: + return + await self._call_light_service( + port.entity_id, "turn_on", {"rgbw_color": rgbw} + ) + return + + if action == "hue": + value = _extract_event_value(event) + if value is None: + return + hs_color = _current_hs_color(self.hass, port.entity_id) + saturation = 0 if hs_color is None else hs_color[1] + await self._call_light_service( + port.entity_id, + "turn_on", + {"hs_color": (float(value), float(saturation))}, + ) + return + + if action == "saturation": + value = _extract_event_value(event) + if value is None: + return + value = _clamp_percent(value) + hs_color = _current_hs_color(self.hass, port.entity_id) + hue = 0 if hs_color is None else hs_color[0] + await self._call_light_service( + port.entity_id, + "turn_on", + {"hs_color": (float(hue), float(value))}, + ) + return + + if action == "xyy": + xyy = _extract_xyy_value(event) + if xyy is None: + return + x, y, luminance = xyy + data: dict[str, Any] = {"xy_color": (float(x), float(y))} + if luminance is not None: + lum = _clamp_percent(int(round(luminance))) + if lum == 0: + await self._call_light_service(port.entity_id, "turn_off") + return + data["brightness"] = _percent_to_brightness(lum) + await self._call_light_service(port.entity_id, "turn_on", data) + return + + if action == "color_temperature": + value = _extract_float_value(event) + if value is None: + return + kelvin = _color_temperature_from_value(value, port) + if kelvin is None: + return + await self._call_light_service( + port.entity_id, + "turn_on", + {"color_temp": _kelvin_to_mireds(kelvin)}, + ) + return + + if action.startswith("red_"): + await self._handle_light_component_action(port, "red", action, event) + elif action.startswith("green_"): + await self._handle_light_component_action(port, "green", action, event) + elif action.startswith("blue_"): + await self._handle_light_component_action(port, "blue", action, event) + elif action.startswith("white_"): + await self._handle_light_component_action(port, "white", action, event) + async def _call_cover_service( self, entity_id: str, service: str, service_data: dict[str, Any] | None = None ) -> None: @@ -467,6 +1180,14 @@ class BridgeManager: "switch", service, data, blocking=False ) + async def _call_light_service( + self, entity_id: str, service: str, service_data: dict[str, Any] | None = None + ) -> None: + data = {"entity_id": entity_id} + if service_data: + data.update(service_data) + await self.hass.services.async_call("light", service, data, blocking=False) + async def _knx_send_raw(self, address: str | None, payload: int) -> None: if not address: return @@ -477,6 +1198,18 @@ class BridgeManager: blocking=False, ) + async def _knx_send_typed( + self, address: str | None, payload: Any, dpt_type: str + ) -> None: + if not address: + return + await self.hass.services.async_call( + KNX_DOMAIN, + "send", + {"address": address, "payload": payload, "type": dpt_type}, + blocking=False, + ) + async def _knx_send_percent(self, address: str | None, value: int) -> None: if not address: return @@ -488,6 +1221,164 @@ class BridgeManager: blocking=False, ) + def _update_light_components_from_state( + self, + port: LightPort, + is_on: bool, + brightness: int | None, + rgb_color: tuple[int, int, int] | None, + rgbw_color: tuple[int, int, int, int] | None, + ) -> None: + if not is_on: + self._light_components[port.entity_id] = {"r": 0, "g": 0, "b": 0, "w": 0} + return + + scale = 1.0 + if brightness is not None: + scale = max(0.0, min(1.0, brightness / 255)) + + components = self._light_components.get(port.entity_id, {}) + if rgbw_color is not None: + components = { + "r": int(round(rgbw_color[0] * scale)), + "g": int(round(rgbw_color[1] * scale)), + "b": int(round(rgbw_color[2] * scale)), + "w": int(round(rgbw_color[3] * scale)), + } + elif rgb_color is not None: + components = { + "r": int(round(rgb_color[0] * scale)), + "g": int(round(rgb_color[1] * scale)), + "b": int(round(rgb_color[2] * scale)), + "w": components.get("w", 0), + } + self._light_components[port.entity_id] = components + + async def _send_light_component_states(self, port: LightPort) -> None: + components = self._light_components.get(port.entity_id) + if not components: + return + + await self._send_light_component_state( + port.red_state_address, + port.red_state_invert_outgoing, + components.get("r", 0), + ) + await self._send_light_component_brightness_state( + port.red_brightness_state_address, + port.red_brightness_state_invert_outgoing, + components.get("r", 0), + ) + await self._send_light_component_state( + port.green_state_address, + port.green_state_invert_outgoing, + components.get("g", 0), + ) + await self._send_light_component_brightness_state( + port.green_brightness_state_address, + port.green_brightness_state_invert_outgoing, + components.get("g", 0), + ) + await self._send_light_component_state( + port.blue_state_address, + port.blue_state_invert_outgoing, + components.get("b", 0), + ) + await self._send_light_component_brightness_state( + port.blue_brightness_state_address, + port.blue_brightness_state_invert_outgoing, + components.get("b", 0), + ) + await self._send_light_component_state( + port.white_state_address, + port.white_state_invert_outgoing, + components.get("w", 0), + ) + await self._send_light_component_brightness_state( + port.white_brightness_state_address, + port.white_brightness_state_invert_outgoing, + components.get("w", 0), + ) + + async def _send_light_component_state( + self, + address: str | None, + invert_outgoing: bool, + value: int, + ) -> None: + if not address: + return + payload = 1 if value > 0 else 0 + if invert_outgoing: + payload = _invert_value(payload, address, self._address_options) + await self._knx_send_raw(address, payload) + + async def _send_light_component_brightness_state( + self, + address: str | None, + invert_outgoing: bool, + value: int, + ) -> None: + if not address: + return + payload = _brightness_to_percent(value) + if invert_outgoing: + payload = _invert_value(payload, address, self._address_options) + await self._knx_send_percent(address, payload) + + async def _handle_light_component_action( + self, port: LightPort, color: str, action: str, event: Event + ) -> None: + components = self._light_components.setdefault( + port.entity_id, {"r": 0, "g": 0, "b": 0, "w": 0} + ) + if action.endswith("_switch"): + value = _extract_event_value(event) + if value is None: + return + if value == 0: + components[color[0]] = 0 + elif value == 1 and components[color[0]] == 0: + components[color[0]] = 255 + elif action.endswith("_brightness"): + value = _extract_event_value(event) + if value is None: + return + value = _clamp_percent(value) + components[color[0]] = _percent_to_brightness(value) + else: + return + + if all(value == 0 for value in components.values()): + await self._call_light_service(port.entity_id, "turn_off") + return + + if _light_uses_white_channel(port): + await self._call_light_service( + port.entity_id, + "turn_on", + { + "rgbw_color": ( + components["r"], + components["g"], + components["b"], + components["w"], + ) + }, + ) + else: + await self._call_light_service( + port.entity_id, + "turn_on", + { + "rgb_color": ( + components["r"], + components["g"], + components["b"], + ) + }, + ) + def _extract_event_value(event: Event) -> int | None: if "value" in event.data: @@ -522,6 +1413,15 @@ def _clean_bool(value: Any) -> bool: return bool(value) +def _clean_int(value: Any) -> int | None: + if value is None or value == "": + return None + try: + return int(value) + except (TypeError, ValueError): + return None + + def _invert_value( value: int, address: str | None, @@ -563,6 +1463,190 @@ def _clamp_percent(value: int) -> int: return value +def _brightness_to_percent(brightness: int) -> int: + if brightness <= 0: + return 0 + if brightness >= 255: + return 100 + return int(round(brightness / 255 * 100)) + + +def _percent_to_brightness(percent: int) -> int: + percent = _clamp_percent(percent) + return int(round(percent / 100 * 255)) + + +def _kelvin_to_mireds(kelvin: float) -> int: + if kelvin <= 0: + return 0 + return int(round(1000000 / kelvin)) + + +def _mireds_to_kelvin(mireds: float) -> float: + if mireds <= 0: + return 0 + return 1000000 / mireds + + +def _extract_rgb_value(event: Event) -> tuple[int, int, int] | None: + value = event.data.get("value") + if isinstance(value, dict): + red = value.get("red", value.get("r")) + green = value.get("green", value.get("g")) + blue = value.get("blue", value.get("b")) + if red is not None and green is not None and blue is not None: + return (int(red), int(green), int(blue)) + if isinstance(value, (list, tuple)) and len(value) >= 3: + return (int(value[0]), int(value[1]), int(value[2])) + data = event.data.get("data") + if isinstance(data, (list, tuple)) and len(data) >= 3: + return (int(data[0]), int(data[1]), int(data[2])) + return None + + +def _extract_rgbw_value(event: Event) -> tuple[int, int, int, int] | None: + value = event.data.get("value") + if isinstance(value, dict): + red = value.get("red", value.get("r")) + green = value.get("green", value.get("g")) + blue = value.get("blue", value.get("b")) + white = value.get("white", value.get("w")) + if ( + red is not None + and green is not None + and blue is not None + and white is not None + ): + return (int(red), int(green), int(blue), int(white)) + if isinstance(value, (list, tuple)) and len(value) >= 4: + return (int(value[0]), int(value[1]), int(value[2]), int(value[3])) + data = event.data.get("data") + if isinstance(data, (list, tuple)) and len(data) >= 4: + return (int(data[0]), int(data[1]), int(data[2]), int(data[3])) + return None + + +def _extract_xyy_value( + event: Event, +) -> tuple[float, float, float | None] | None: + value = event.data.get("value") + if isinstance(value, dict): + x = value.get("x") + y = value.get("y") + luminance = value.get("Y", value.get("luminance", value.get("brightness"))) + if x is not None and y is not None: + return ( + float(x), + float(y), + float(luminance) if luminance is not None else None, + ) + if isinstance(value, (list, tuple)) and len(value) >= 2: + x = value[0] + y = value[1] + luminance = value[2] if len(value) > 2 else None + return ( + float(x), + float(y), + float(luminance) if luminance is not None else None, + ) + data = event.data.get("data") + if isinstance(data, (list, tuple)) and len(data) >= 2: + x = data[0] + y = data[1] + luminance = data[2] if len(data) > 2 else None + return ( + float(x), + float(y), + float(luminance) if luminance is not None else None, + ) + return None + + +def _extract_float_value(event: Event) -> float | None: + if "value" in event.data: + value = event.data["value"] + if isinstance(value, (int, float)): + return float(value) + mapped = _extract_event_value(event) + if mapped is None: + return None + return float(mapped) + + +def _current_hs_color( + hass: HomeAssistant, entity_id: str +) -> tuple[float, float] | None: + state = hass.states.get(entity_id) + if state is None: + return None + hs_color = state.attributes.get(ATTR_HS_COLOR) + if hs_color is None: + return None + try: + return float(hs_color[0]), float(hs_color[1]) + except (TypeError, ValueError, IndexError): + return None + + +def _light_color_temperature_event_type(mode: str) -> str | None: + if mode == "relative": + return "percent" + if mode == "absolute": + return "7.600" + if mode == "absolute_float": + return "9" + return None + + +def _color_temperature_payload( + kelvin: float, port: LightPort, clamp: bool = False +) -> tuple[float | int, str]: + min_kelvin = _light_min_kelvin(port) + max_kelvin = _light_max_kelvin(port) + if clamp: + kelvin = min(max(kelvin, min_kelvin), max_kelvin) + if port.color_temperature_mode == "relative": + percent = (kelvin - min_kelvin) / (max_kelvin - min_kelvin) * 100 + return int(round(_clamp_percent(int(round(percent))))), "percent" + if port.color_temperature_mode == "absolute_float": + return float(kelvin), "9" + return int(round(kelvin)), "7.600" + + +def _color_temperature_from_value( + value: float, port: LightPort +) -> float | None: + min_kelvin = _light_min_kelvin(port) + max_kelvin = _light_max_kelvin(port) + if port.color_temperature_mode == "relative": + percent = _clamp_percent(int(round(value))) + return min_kelvin + (max_kelvin - min_kelvin) * (percent / 100) + if port.color_temperature_mode == "absolute": + return float(value) + if port.color_temperature_mode == "absolute_float": + return float(value) + return None + + +def _light_min_kelvin(port: LightPort) -> int: + return port.min_kelvin or 2000 + + +def _light_max_kelvin(port: LightPort) -> int: + return port.max_kelvin or 6500 + + +def _light_uses_white_channel(port: LightPort) -> bool: + return any( + [ + port.white_address, + port.white_state_address, + port.white_brightness_address, + port.white_brightness_state_address, + ] + ) + + def _map_scalar_value(value: Any) -> int | None: if isinstance(value, bool): return 1 if value else 0 diff --git a/custom_components/ha_knx_bridge/config_flow.py b/custom_components/ha_knx_bridge/config_flow.py index 66ce9dd..cfb46a1 100644 --- a/custom_components/ha_knx_bridge/config_flow.py +++ b/custom_components/ha_knx_bridge/config_flow.py @@ -16,6 +16,42 @@ from .const import ( CONF_COMMAND_ADDRESS, CONF_INVERT_OUTGOING, CONF_KNX_ENTRY_ID, + CONF_LIGHT_ADDRESS, + CONF_LIGHT_STATE_ADDRESS, + CONF_LIGHT_BRIGHTNESS_ADDRESS, + CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_COLOR_ADDRESS, + CONF_LIGHT_COLOR_STATE_ADDRESS, + CONF_LIGHT_RGBW_ADDRESS, + CONF_LIGHT_RGBW_STATE_ADDRESS, + CONF_LIGHT_HUE_ADDRESS, + CONF_LIGHT_HUE_STATE_ADDRESS, + CONF_LIGHT_SATURATION_ADDRESS, + CONF_LIGHT_SATURATION_STATE_ADDRESS, + CONF_LIGHT_XYY_ADDRESS, + CONF_LIGHT_XYY_STATE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_MODE, + CONF_LIGHT_MIN_KELVIN, + CONF_LIGHT_MAX_KELVIN, + CONF_LIGHT_RED_ADDRESS, + CONF_LIGHT_RED_STATE_ADDRESS, + CONF_LIGHT_RED_BRIGHTNESS_ADDRESS, + CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_GREEN_ADDRESS, + CONF_LIGHT_GREEN_STATE_ADDRESS, + CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS, + CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_BLUE_ADDRESS, + CONF_LIGHT_BLUE_STATE_ADDRESS, + CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS, + CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_WHITE_ADDRESS, + CONF_LIGHT_WHITE_STATE_ADDRESS, + CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS, + CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS, + LIGHT_COLOR_TEMPERATURE_MODES, CONF_MOVE_LONG_ADDRESS, CONF_MOVE_SHORT_ADDRESS, CONF_PORTS, @@ -85,6 +121,9 @@ class HAKnxBridgeConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): "cover": subentry_type( name="Cover Port", flow_class=CoverPortSubentryFlow ), + "light": subentry_type( + name="Light Port", flow_class=LightPortSubentryFlow + ), } @@ -99,6 +138,7 @@ class HAKnxBridgeOptionsFlow(config_entries.OptionsFlow): "add_binary_sensor", "add_switch", "add_cover", + "add_light", "edit_port", "remove_port", ], @@ -163,6 +203,19 @@ class HAKnxBridgeOptionsFlow(config_entries.OptionsFlow): return self.async_show_form(step_id="add_cover", data_schema=_cover_schema()) + async def async_step_add_light(self, user_input: dict | None = None): + if user_input is not None: + user_input, errors = _validate_knx_addresses( + user_input, _port_keys("light") + ) + if errors: + return self.async_show_form( + step_id="add_light", data_schema=_light_schema(), errors=errors + ) + return await self._async_store_port("light", user_input) + + return self.async_show_form(step_id="add_light", data_schema=_light_schema()) + async def async_step_remove_port(self, user_input: dict | None = None): ports = list(self._config_entry.options.get(CONF_PORTS, [])) if not ports: @@ -223,6 +276,11 @@ class HAKnxBridgeOptionsFlow(config_entries.OptionsFlow): step_id="edit_cover", data_schema=_cover_schema(defaults=data), ) + if port_type == "light": + return self.async_show_form( + step_id="edit_light", + data_schema=_light_schema(defaults=data), + ) return self.async_abort(reason="no_ports_to_edit") options = [ @@ -253,6 +311,9 @@ class HAKnxBridgeOptionsFlow(config_entries.OptionsFlow): async def async_step_edit_cover(self, user_input: dict | None = None): return await self._async_edit_port("cover", user_input, _cover_schema) + async def async_step_edit_light(self, user_input: dict | None = None): + return await self._async_edit_port("light", user_input, _light_schema) + async def _async_store_port(self, port_type: str, user_input: dict): ports = list(self._config_entry.options.get(CONF_PORTS, [])) title = _entity_title(self.hass, user_input[CONF_ENTITY_ID]) @@ -375,6 +436,23 @@ class CoverPortSubentryFlow(config_entries.ConfigSubentryFlow): return self.async_show_form(step_id="user", data_schema=_cover_schema()) +class LightPortSubentryFlow(config_entries.ConfigSubentryFlow): + VERSION = 1 + + async def async_step_user(self, user_input: dict | None = None): + if user_input is not None: + user_input, errors = _validate_knx_addresses( + user_input, _port_keys("light") + ) + if errors: + return self.async_show_form( + step_id="user", data_schema=_light_schema(), errors=errors + ) + title = _entity_title(self.hass, user_input[CONF_ENTITY_ID]) + return self.async_create_entry(title=title, data=user_input) + + return self.async_show_form(step_id="user", data_schema=_light_schema()) + def _entity_title(hass, entity_id: str) -> str: state = hass.states.get(entity_id) if state is None: @@ -517,6 +595,322 @@ def _switch_schema(defaults: dict | None = None) -> vol.Schema: ) +def _light_schema(defaults: dict | None = None) -> vol.Schema: + defaults = defaults or {} + color_temperature_options = [ + { + "value": mode, + "label": mode.replace("_", " ").title(), + } + for mode in LIGHT_COLOR_TEMPERATURE_MODES + ] + return vol.Schema( + { + vol.Required( + CONF_ENTITY_ID, + default=defaults.get(CONF_ENTITY_ID, ""), + ): selector.EntitySelector( + selector.EntitySelectorConfig(domain=["light"]) + ), + vol.Optional( + CONF_LIGHT_ADDRESS, + default=defaults.get(CONF_LIGHT_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_STATE_ADDRESS), + default=bool(defaults.get(_invert_out_key(CONF_LIGHT_STATE_ADDRESS))), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_BRIGHTNESS_ADDRESS, + default=defaults.get(CONF_LIGHT_BRIGHTNESS_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS), + default=bool( + defaults.get(_invert_out_key(CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS)) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_COLOR_ADDRESS, + default=defaults.get(CONF_LIGHT_COLOR_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_COLOR_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_COLOR_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_RGBW_ADDRESS, + default=defaults.get(CONF_LIGHT_RGBW_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_RGBW_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_RGBW_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_HUE_ADDRESS, + default=defaults.get(CONF_LIGHT_HUE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_HUE_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_HUE_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_SATURATION_ADDRESS, + default=defaults.get(CONF_LIGHT_SATURATION_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_SATURATION_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_SATURATION_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_SATURATION_STATE_ADDRESS), + default=bool( + defaults.get(_invert_out_key(CONF_LIGHT_SATURATION_STATE_ADDRESS)) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_XYY_ADDRESS, + default=defaults.get(CONF_LIGHT_XYY_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_XYY_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_XYY_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS, + default=defaults.get(CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS), + default=bool( + defaults.get( + _invert_out_key(CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS) + ) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_COLOR_TEMPERATURE_MODE, + default=defaults.get(CONF_LIGHT_COLOR_TEMPERATURE_MODE, "absolute"), + ): selector.SelectSelector( + selector.SelectSelectorConfig( + options=color_temperature_options, mode="dropdown" + ) + ), + vol.Optional( + CONF_LIGHT_MIN_KELVIN, + default=defaults.get(CONF_LIGHT_MIN_KELVIN, 2000), + ): selector.NumberSelector( + selector.NumberSelectorConfig(min=1000, max=20000, step=1, mode="box") + ), + vol.Optional( + CONF_LIGHT_MAX_KELVIN, + default=defaults.get(CONF_LIGHT_MAX_KELVIN, 6500), + ): selector.NumberSelector( + selector.NumberSelectorConfig(min=1000, max=20000, step=1, mode="box") + ), + vol.Optional( + CONF_LIGHT_RED_ADDRESS, + default=defaults.get(CONF_LIGHT_RED_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_RED_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_RED_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_RED_STATE_ADDRESS), + default=bool( + defaults.get(_invert_out_key(CONF_LIGHT_RED_STATE_ADDRESS)) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_RED_BRIGHTNESS_ADDRESS, + default=defaults.get(CONF_LIGHT_RED_BRIGHTNESS_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS), + default=bool( + defaults.get( + _invert_out_key(CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS) + ) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_GREEN_ADDRESS, + default=defaults.get(CONF_LIGHT_GREEN_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_GREEN_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_GREEN_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_GREEN_STATE_ADDRESS), + default=bool( + defaults.get(_invert_out_key(CONF_LIGHT_GREEN_STATE_ADDRESS)) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS, + default=defaults.get(CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS), + default=bool( + defaults.get( + _invert_out_key(CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS) + ) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_BLUE_ADDRESS, + default=defaults.get(CONF_LIGHT_BLUE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_BLUE_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_BLUE_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_BLUE_STATE_ADDRESS), + default=bool( + defaults.get(_invert_out_key(CONF_LIGHT_BLUE_STATE_ADDRESS)) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS, + default=defaults.get(CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS), + default=bool( + defaults.get( + _invert_out_key(CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS) + ) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_WHITE_ADDRESS, + default=defaults.get(CONF_LIGHT_WHITE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_WHITE_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_WHITE_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_WHITE_STATE_ADDRESS), + default=bool( + defaults.get(_invert_out_key(CONF_LIGHT_WHITE_STATE_ADDRESS)) + ), + ): selector.BooleanSelector(), + vol.Optional( + CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS, + default=defaults.get(CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS, + default=defaults.get(CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS, ""), + ): selector.TextSelector( + selector.TextSelectorConfig(type="text") + ), + vol.Optional( + _invert_out_key(CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS), + default=bool( + defaults.get( + _invert_out_key(CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS) + ) + ), + ): selector.BooleanSelector(), + vol.Optional(CONF_ENABLED, default=bool(defaults.get(CONF_ENABLED, True))): ( + selector.BooleanSelector() + ), + } + ) + + def _port_keys(port_type: str) -> list[str]: if port_type == "binary_sensor": return [CONF_STATE_ADDRESS] @@ -532,6 +926,41 @@ def _port_keys(port_type: str) -> list[str]: CONF_ANGLE_ADDRESS, CONF_ANGLE_STATE_ADDRESS, ] + if port_type == "light": + return [ + CONF_LIGHT_ADDRESS, + CONF_LIGHT_STATE_ADDRESS, + CONF_LIGHT_BRIGHTNESS_ADDRESS, + CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_COLOR_ADDRESS, + CONF_LIGHT_COLOR_STATE_ADDRESS, + CONF_LIGHT_RGBW_ADDRESS, + CONF_LIGHT_RGBW_STATE_ADDRESS, + CONF_LIGHT_HUE_ADDRESS, + CONF_LIGHT_HUE_STATE_ADDRESS, + CONF_LIGHT_SATURATION_ADDRESS, + CONF_LIGHT_SATURATION_STATE_ADDRESS, + CONF_LIGHT_XYY_ADDRESS, + CONF_LIGHT_XYY_STATE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS, + CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS, + CONF_LIGHT_RED_ADDRESS, + CONF_LIGHT_RED_STATE_ADDRESS, + CONF_LIGHT_RED_BRIGHTNESS_ADDRESS, + CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_GREEN_ADDRESS, + CONF_LIGHT_GREEN_STATE_ADDRESS, + CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS, + CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_BLUE_ADDRESS, + CONF_LIGHT_BLUE_STATE_ADDRESS, + CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS, + CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS, + CONF_LIGHT_WHITE_ADDRESS, + CONF_LIGHT_WHITE_STATE_ADDRESS, + CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS, + CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS, + ] return [] diff --git a/custom_components/ha_knx_bridge/const.py b/custom_components/ha_knx_bridge/const.py index 7db8c41..feb3650 100644 --- a/custom_components/ha_knx_bridge/const.py +++ b/custom_components/ha_knx_bridge/const.py @@ -18,6 +18,48 @@ CONF_POSITION_STATE_ADDRESS = "position_state_address" CONF_ANGLE_ADDRESS = "angle_address" CONF_ANGLE_STATE_ADDRESS = "angle_state_address" +CONF_LIGHT_ADDRESS = "address" +CONF_LIGHT_STATE_ADDRESS = "state_address" +CONF_LIGHT_BRIGHTNESS_ADDRESS = "brightness_address" +CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS = "brightness_state_address" +CONF_LIGHT_COLOR_ADDRESS = "color_address" +CONF_LIGHT_COLOR_STATE_ADDRESS = "color_state_address" +CONF_LIGHT_RGBW_ADDRESS = "rgbw_address" +CONF_LIGHT_RGBW_STATE_ADDRESS = "rgbw_state_address" +CONF_LIGHT_HUE_ADDRESS = "hue_address" +CONF_LIGHT_HUE_STATE_ADDRESS = "hue_state_address" +CONF_LIGHT_SATURATION_ADDRESS = "saturation_address" +CONF_LIGHT_SATURATION_STATE_ADDRESS = "saturation_state_address" +CONF_LIGHT_XYY_ADDRESS = "xyy_address" +CONF_LIGHT_XYY_STATE_ADDRESS = "xyy_state_address" +CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS = "color_temperature_address" +CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS = "color_temperature_state_address" +CONF_LIGHT_COLOR_TEMPERATURE_MODE = "color_temperature_mode" +CONF_LIGHT_MIN_KELVIN = "min_kelvin" +CONF_LIGHT_MAX_KELVIN = "max_kelvin" +CONF_LIGHT_RED_ADDRESS = "red_address" +CONF_LIGHT_RED_STATE_ADDRESS = "red_state_address" +CONF_LIGHT_RED_BRIGHTNESS_ADDRESS = "red_brightness_address" +CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS = "red_brightness_state_address" +CONF_LIGHT_GREEN_ADDRESS = "green_address" +CONF_LIGHT_GREEN_STATE_ADDRESS = "green_state_address" +CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS = "green_brightness_address" +CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS = "green_brightness_state_address" +CONF_LIGHT_BLUE_ADDRESS = "blue_address" +CONF_LIGHT_BLUE_STATE_ADDRESS = "blue_state_address" +CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS = "blue_brightness_address" +CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS = "blue_brightness_state_address" +CONF_LIGHT_WHITE_ADDRESS = "white_address" +CONF_LIGHT_WHITE_STATE_ADDRESS = "white_state_address" +CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS = "white_brightness_address" +CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS = "white_brightness_state_address" + +LIGHT_COLOR_TEMPERATURE_MODES = [ + "relative", + "absolute", + "absolute_float", +] + ADDRESS_DPT_MAP: dict[str, str] = { CONF_STATE_ADDRESS: "1", CONF_COMMAND_ADDRESS: "1", @@ -28,6 +70,38 @@ ADDRESS_DPT_MAP: dict[str, str] = { CONF_POSITION_STATE_ADDRESS: "5.001", CONF_ANGLE_ADDRESS: "5.001", CONF_ANGLE_STATE_ADDRESS: "5.001", + CONF_LIGHT_ADDRESS: "1.001", + CONF_LIGHT_STATE_ADDRESS: "1.001", + CONF_LIGHT_BRIGHTNESS_ADDRESS: "5.001", + CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS: "5.001", + CONF_LIGHT_COLOR_ADDRESS: "232.600", + CONF_LIGHT_COLOR_STATE_ADDRESS: "232.600", + CONF_LIGHT_RGBW_ADDRESS: "251.600", + CONF_LIGHT_RGBW_STATE_ADDRESS: "251.600", + CONF_LIGHT_HUE_ADDRESS: "5.003", + CONF_LIGHT_HUE_STATE_ADDRESS: "5.003", + CONF_LIGHT_SATURATION_ADDRESS: "5.001", + CONF_LIGHT_SATURATION_STATE_ADDRESS: "5.001", + CONF_LIGHT_XYY_ADDRESS: "242.600", + CONF_LIGHT_XYY_STATE_ADDRESS: "242.600", + CONF_LIGHT_COLOR_TEMPERATURE_ADDRESS: "5.001/7.600/9", + CONF_LIGHT_COLOR_TEMPERATURE_STATE_ADDRESS: "5.001/7.600/9", + CONF_LIGHT_RED_ADDRESS: "1.001", + CONF_LIGHT_RED_STATE_ADDRESS: "1.001", + CONF_LIGHT_RED_BRIGHTNESS_ADDRESS: "5.001", + CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS: "5.001", + CONF_LIGHT_GREEN_ADDRESS: "1.001", + CONF_LIGHT_GREEN_STATE_ADDRESS: "1.001", + CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS: "5.001", + CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS: "5.001", + CONF_LIGHT_BLUE_ADDRESS: "1.001", + CONF_LIGHT_BLUE_STATE_ADDRESS: "1.001", + CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS: "5.001", + CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS: "5.001", + CONF_LIGHT_WHITE_ADDRESS: "1.001", + CONF_LIGHT_WHITE_STATE_ADDRESS: "1.001", + CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS: "5.001", + CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS: "5.001", } ADDRESS_VALUE_TYPE: dict[str, str] = { @@ -35,6 +109,12 @@ ADDRESS_VALUE_TYPE: dict[str, str] = { CONF_POSITION_STATE_ADDRESS: "percent", CONF_ANGLE_ADDRESS: "percent", CONF_ANGLE_STATE_ADDRESS: "percent", + CONF_LIGHT_BRIGHTNESS_STATE_ADDRESS: "percent", + CONF_LIGHT_SATURATION_STATE_ADDRESS: "percent", + CONF_LIGHT_RED_BRIGHTNESS_STATE_ADDRESS: "percent", + CONF_LIGHT_GREEN_BRIGHTNESS_STATE_ADDRESS: "percent", + CONF_LIGHT_BLUE_BRIGHTNESS_STATE_ADDRESS: "percent", + CONF_LIGHT_WHITE_BRIGHTNESS_STATE_ADDRESS: "percent", } ADDRESS_EVENT_TYPE: dict[str, str] = { @@ -44,4 +124,14 @@ ADDRESS_EVENT_TYPE: dict[str, str] = { CONF_POSITION_STATE_ADDRESS: "percent", CONF_ANGLE_ADDRESS: "percent", CONF_ANGLE_STATE_ADDRESS: "percent", + CONF_LIGHT_BRIGHTNESS_ADDRESS: "percent", + CONF_LIGHT_COLOR_ADDRESS: "232.600", + CONF_LIGHT_RGBW_ADDRESS: "251.600", + CONF_LIGHT_HUE_ADDRESS: "angle", + CONF_LIGHT_SATURATION_ADDRESS: "percent", + CONF_LIGHT_XYY_ADDRESS: "242.600", + CONF_LIGHT_RED_BRIGHTNESS_ADDRESS: "percent", + CONF_LIGHT_GREEN_BRIGHTNESS_ADDRESS: "percent", + CONF_LIGHT_BLUE_BRIGHTNESS_ADDRESS: "percent", + CONF_LIGHT_WHITE_BRIGHTNESS_ADDRESS: "percent", } diff --git a/custom_components/ha_knx_bridge/manifest.json b/custom_components/ha_knx_bridge/manifest.json index 6c93e64..7db4c7c 100644 --- a/custom_components/ha_knx_bridge/manifest.json +++ b/custom_components/ha_knx_bridge/manifest.json @@ -1,7 +1,7 @@ { "domain": "ha_knx_bridge", "name": "HA KNX Bridge", - "version": "0.0.20", + "version": "0.0.21", "config_flow": true, "documentation": "https://github.com/bahmcloud/HA-KNX-Bridge", "issue_tracker": "https://github.com/bahmcloud/HA-KNX-Bridge/issues", diff --git a/custom_components/ha_knx_bridge/strings.json b/custom_components/ha_knx_bridge/strings.json index 3a48953..3b9ceee 100644 --- a/custom_components/ha_knx_bridge/strings.json +++ b/custom_components/ha_knx_bridge/strings.json @@ -18,7 +18,8 @@ }, "options": { "abort": { - "no_ports_to_remove": "There are no ports to remove yet." + "no_ports_to_remove": "There are no ports to remove yet.", + "no_ports_to_edit": "There are no ports to edit yet." }, "step": { "init": { @@ -28,6 +29,8 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", + "edit_port": "Edit port", "remove_port": "Remove port" } }, @@ -36,7 +39,8 @@ "data": { "entity_id": "Binary sensor entity", "state_address": "State group address (DPT 1)", - "state_address_invert_outgoing": "Invert outgoing" + "state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" } }, "add_switch": { @@ -44,9 +48,9 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", - "state_address_invert_outgoing": "Invert outgoing" + "state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" } }, "add_cover": { @@ -54,19 +58,69 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", - "angle_state_address_invert_outgoing": "Invert outgoing" + "angle_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" } }, "remove_port": { @@ -74,6 +128,101 @@ "data": { "port_id": "Port to remove" } + }, + "edit_port": { + "title": "Edit Port", + "data": { + "port_id": "Port to edit" + } + }, + "edit_binary_sensor": { + "title": "Edit Binary Sensor Port", + "data": { + "entity_id": "Binary sensor entity", + "state_address": "State group address (DPT 1)", + "state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, + "edit_switch": { + "title": "Edit Switch Port", + "data": { + "entity_id": "Switch entity", + "command_address": "Command group address (DPT 1)", + "state_address": "State group address (DPT 1)", + "state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, + "edit_cover": { + "title": "Edit Cover Port", + "data": { + "entity_id": "Cover entity", + "move_long_address": "Move long (DPT 1.008 Up/Down)", + "move_short_address": "Move short (DPT 1.007 Step)", + "stop_address": "Stop (DPT 1)", + "position_address": "Set position (DPT 5.001)", + "position_state_address": "State position (DPT 5.001)", + "position_state_address_invert_outgoing": "Invert outgoing", + "angle_address": "Set tilt (DPT 5.001)", + "angle_state_address": "State tilt (DPT 5.001)", + "angle_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } }, @@ -101,7 +250,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -116,23 +264,76 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } } } + }, + "light": { + "step": { + "user": { + "title": "Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + } + } } } } diff --git a/custom_components/ha_knx_bridge/translations/ar.json b/custom_components/ha_knx_bridge/translations/ar.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/ar.json +++ b/custom_components/ha_knx_bridge/translations/ar.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/bg.json b/custom_components/ha_knx_bridge/translations/bg.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/bg.json +++ b/custom_components/ha_knx_bridge/translations/bg.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/ca.json b/custom_components/ha_knx_bridge/translations/ca.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/ca.json +++ b/custom_components/ha_knx_bridge/translations/ca.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/cs.json b/custom_components/ha_knx_bridge/translations/cs.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/cs.json +++ b/custom_components/ha_knx_bridge/translations/cs.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/da.json b/custom_components/ha_knx_bridge/translations/da.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/da.json +++ b/custom_components/ha_knx_bridge/translations/da.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/de.json b/custom_components/ha_knx_bridge/translations/de.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/de.json +++ b/custom_components/ha_knx_bridge/translations/de.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/el.json b/custom_components/ha_knx_bridge/translations/el.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/el.json +++ b/custom_components/ha_knx_bridge/translations/el.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/en.json b/custom_components/ha_knx_bridge/translations/en.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/en.json +++ b/custom_components/ha_knx_bridge/translations/en.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/es.json b/custom_components/ha_knx_bridge/translations/es.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/es.json +++ b/custom_components/ha_knx_bridge/translations/es.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/et.json b/custom_components/ha_knx_bridge/translations/et.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/et.json +++ b/custom_components/ha_knx_bridge/translations/et.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/fi.json b/custom_components/ha_knx_bridge/translations/fi.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/fi.json +++ b/custom_components/ha_knx_bridge/translations/fi.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/fr.json b/custom_components/ha_knx_bridge/translations/fr.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/fr.json +++ b/custom_components/ha_knx_bridge/translations/fr.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/he.json b/custom_components/ha_knx_bridge/translations/he.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/he.json +++ b/custom_components/ha_knx_bridge/translations/he.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/hi.json b/custom_components/ha_knx_bridge/translations/hi.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/hi.json +++ b/custom_components/ha_knx_bridge/translations/hi.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/hr.json b/custom_components/ha_knx_bridge/translations/hr.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/hr.json +++ b/custom_components/ha_knx_bridge/translations/hr.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/hu.json b/custom_components/ha_knx_bridge/translations/hu.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/hu.json +++ b/custom_components/ha_knx_bridge/translations/hu.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/id.json b/custom_components/ha_knx_bridge/translations/id.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/id.json +++ b/custom_components/ha_knx_bridge/translations/id.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/is.json b/custom_components/ha_knx_bridge/translations/is.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/is.json +++ b/custom_components/ha_knx_bridge/translations/is.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/it.json b/custom_components/ha_knx_bridge/translations/it.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/it.json +++ b/custom_components/ha_knx_bridge/translations/it.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/ja.json b/custom_components/ha_knx_bridge/translations/ja.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/ja.json +++ b/custom_components/ha_knx_bridge/translations/ja.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/ko.json b/custom_components/ha_knx_bridge/translations/ko.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/ko.json +++ b/custom_components/ha_knx_bridge/translations/ko.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/lt.json b/custom_components/ha_knx_bridge/translations/lt.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/lt.json +++ b/custom_components/ha_knx_bridge/translations/lt.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/lv.json b/custom_components/ha_knx_bridge/translations/lv.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/lv.json +++ b/custom_components/ha_knx_bridge/translations/lv.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/nb.json b/custom_components/ha_knx_bridge/translations/nb.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/nb.json +++ b/custom_components/ha_knx_bridge/translations/nb.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/nl.json b/custom_components/ha_knx_bridge/translations/nl.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/nl.json +++ b/custom_components/ha_knx_bridge/translations/nl.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/pl.json b/custom_components/ha_knx_bridge/translations/pl.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/pl.json +++ b/custom_components/ha_knx_bridge/translations/pl.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/pt-BR.json b/custom_components/ha_knx_bridge/translations/pt-BR.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/pt-BR.json +++ b/custom_components/ha_knx_bridge/translations/pt-BR.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/pt.json b/custom_components/ha_knx_bridge/translations/pt.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/pt.json +++ b/custom_components/ha_knx_bridge/translations/pt.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/ro.json b/custom_components/ha_knx_bridge/translations/ro.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/ro.json +++ b/custom_components/ha_knx_bridge/translations/ro.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/ru.json b/custom_components/ha_knx_bridge/translations/ru.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/ru.json +++ b/custom_components/ha_knx_bridge/translations/ru.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/sk.json b/custom_components/ha_knx_bridge/translations/sk.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/sk.json +++ b/custom_components/ha_knx_bridge/translations/sk.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/sl.json b/custom_components/ha_knx_bridge/translations/sl.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/sl.json +++ b/custom_components/ha_knx_bridge/translations/sl.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/sv.json b/custom_components/ha_knx_bridge/translations/sv.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/sv.json +++ b/custom_components/ha_knx_bridge/translations/sv.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/th.json b/custom_components/ha_knx_bridge/translations/th.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/th.json +++ b/custom_components/ha_knx_bridge/translations/th.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/tr.json b/custom_components/ha_knx_bridge/translations/tr.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/tr.json +++ b/custom_components/ha_knx_bridge/translations/tr.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/uk.json b/custom_components/ha_knx_bridge/translations/uk.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/uk.json +++ b/custom_components/ha_knx_bridge/translations/uk.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/vi.json b/custom_components/ha_knx_bridge/translations/vi.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/vi.json +++ b/custom_components/ha_knx_bridge/translations/vi.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/zh-Hans.json b/custom_components/ha_knx_bridge/translations/zh-Hans.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/zh-Hans.json +++ b/custom_components/ha_knx_bridge/translations/zh-Hans.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/custom_components/ha_knx_bridge/translations/zh-Hant.json b/custom_components/ha_knx_bridge/translations/zh-Hant.json index 756c75b..2812500 100644 --- a/custom_components/ha_knx_bridge/translations/zh-Hant.json +++ b/custom_components/ha_knx_bridge/translations/zh-Hant.json @@ -12,6 +12,7 @@ "add_binary_sensor": "Add binary sensor port", "add_switch": "Add switch port", "add_cover": "Add cover port", + "add_light": "Add light port", "edit_port": "Edit port", "remove_port": "Remove port" } @@ -30,7 +31,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -41,22 +41,71 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } }, + "add_light": { + "title": "Add Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } + }, "remove_port": { "title": "Remove Port", "data": { @@ -83,7 +132,6 @@ "data": { "entity_id": "Switch entity", "command_address": "Command group address (DPT 1)", - "command_address_invert_outgoing": "Invert outgoing", "state_address": "State group address (DPT 1)", "state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" @@ -94,21 +142,70 @@ "data": { "entity_id": "Cover entity", "move_long_address": "Move long (DPT 1.008 Up/Down)", - "move_long_address_invert_outgoing": "Invert outgoing", "move_short_address": "Move short (DPT 1.007 Step)", - "move_short_address_invert_outgoing": "Invert outgoing", "stop_address": "Stop (DPT 1)", - "stop_address_invert_outgoing": "Invert outgoing", "position_address": "Set position (DPT 5.001)", - "position_address_invert_outgoing": "Invert outgoing", "position_state_address": "State position (DPT 5.001)", "position_state_address_invert_outgoing": "Invert outgoing", "angle_address": "Set tilt (DPT 5.001)", - "angle_address_invert_outgoing": "Invert outgoing", "angle_state_address": "State tilt (DPT 5.001)", "angle_state_address_invert_outgoing": "Invert outgoing", "enabled": "Enabled" } + }, + "edit_light": { + "title": "Edit Light Port", + "data": { + "entity_id": "Light entity", + "address": "On/off address (DPT 1.001)", + "state_address": "On/off state address (DPT 1.001)", + "state_address_invert_outgoing": "Invert outgoing", + "brightness_address": "Brightness address (DPT 5.001)", + "brightness_state_address": "Brightness state address (DPT 5.001)", + "brightness_state_address_invert_outgoing": "Invert outgoing", + "color_address": "RGB color address (DPT 232.600)", + "color_state_address": "RGB color state address (DPT 232.600)", + "rgbw_address": "RGBW color address (DPT 251.600)", + "rgbw_state_address": "RGBW color state address (DPT 251.600)", + "hue_address": "Hue address (DPT 5.003)", + "hue_state_address": "Hue state address (DPT 5.003)", + "saturation_address": "Saturation address (DPT 5.001)", + "saturation_state_address": "Saturation state address (DPT 5.001)", + "saturation_state_address_invert_outgoing": "Invert outgoing", + "xyy_address": "XY color address (DPT 242.600)", + "xyy_state_address": "XY color state address (DPT 242.600)", + "color_temperature_address": "Color temperature address (DPT 5.001/7.600/9)", + "color_temperature_state_address": "Color temperature state address (DPT 5.001/7.600/9)", + "color_temperature_state_address_invert_outgoing": "Invert outgoing", + "color_temperature_mode": "Color temperature mode", + "min_kelvin": "Min color temperature (K)", + "max_kelvin": "Max color temperature (K)", + "red_address": "Red on/off address (DPT 1.001)", + "red_state_address": "Red on/off state address (DPT 1.001)", + "red_state_address_invert_outgoing": "Invert outgoing", + "red_brightness_address": "Red brightness address (DPT 5.001)", + "red_brightness_state_address": "Red brightness state address (DPT 5.001)", + "red_brightness_state_address_invert_outgoing": "Invert outgoing", + "green_address": "Green on/off address (DPT 1.001)", + "green_state_address": "Green on/off state address (DPT 1.001)", + "green_state_address_invert_outgoing": "Invert outgoing", + "green_brightness_address": "Green brightness address (DPT 5.001)", + "green_brightness_state_address": "Green brightness state address (DPT 5.001)", + "green_brightness_state_address_invert_outgoing": "Invert outgoing", + "blue_address": "Blue on/off address (DPT 1.001)", + "blue_state_address": "Blue on/off state address (DPT 1.001)", + "blue_state_address_invert_outgoing": "Invert outgoing", + "blue_brightness_address": "Blue brightness address (DPT 5.001)", + "blue_brightness_state_address": "Blue brightness state address (DPT 5.001)", + "blue_brightness_state_address_invert_outgoing": "Invert outgoing", + "white_address": "White on/off address (DPT 1.001)", + "white_state_address": "White on/off state address (DPT 1.001)", + "white_state_address_invert_outgoing": "Invert outgoing", + "white_brightness_address": "White brightness address (DPT 5.001)", + "white_brightness_state_address": "White brightness state address (DPT 5.001)", + "white_brightness_state_address_invert_outgoing": "Invert outgoing", + "enabled": "Enabled" + } } } } diff --git a/logo.jpg b/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6bce59973d69274416f57581ccada3c53e5c50a6 GIT binary patch literal 141265 zcmeFa2Urx#vo}1;k_ABom5h?Xg=JZyWJHo=$tV(*oRgqL6$1(gib&3qMac?+f`Af4 zqJRhpN|KxBq*`DsI?y9b?`gQGWb!`nm)0sl9XiE zE)r^ry=0X1G>i=NG<0-KEIjN?hYmB-(QycI9!Bz^(P&0?5piLZ7!N-hg{=feL_|cg zi{t<)=>gP1x`U`c{n>f~?IDCbAx}8$AcV6A2HykQdIm89R`I|HV+VQX1H*yi;^7kz z5)tnL1&YW4$8b0fE*uXJ7Yr%P2Ye6V?!lut$R~}zSHpzhkTWGJAS{WHS?0l0D$SM| z7JgHg^F+k^_8*|8VP#|I;N(IJ2nq>{h{_(7J0`E7sHAm5TSr$<-@wcqV_|7!ZR6_Z z?s3M`>+FS#ftM~{xf&FH^H#*|$U9Nd$tkI6chfU6v+@fHi;7E1A3mz8epXXk_xweD zYg>Cq=j*QSo_B*o?>`KWjE;@Z&do0@E-kNoTE+4OBd#_#Q|Ss!qEn+epj-CHo_K#?A(=Mi$(E^iW%v?STFhN&jrd znGoBA1-y2@8LBO)DlSS1b?(sPzK9IHLytcMcI5L_6~4;H@xhlnkz#`Ge5b4+EeEku zLK;$dqQZUFnjB&A@~1O`PpI*%j{5i>B9f2 zW3-5tn+mSfGKtWmGC`*_N9dg)=_N~~$`6d_`oO9tSNUG_q@QlQ7W25!!BF*ZO2!*c z?vmv z60s!jOhY)F=gz>{b2`4Q%04R0I)>sJQIZ!Cyie_SFP2Yrp1H_f!dNx*L2QA5s=ilR zJarPU5haT(wzsVcg=w4w znph0zIIHf5b3CTh>1n#!${WIe6T`O!-KL1|{`epSCCNa>eBn`Xbp4c};hjd;XEpR> zrrc*8W*5+XoM9R#6e2oSG!Lfh^?3$K&sT2-W454^T`v7IR4<+$5Lu*3J1~Dj!TQaq znnM#4`d2N?!WCbz#gd-WlqVdpe)1aKV$~+fkb0Fa+~CeoINzb?6Ipk}QO^b#Oy1&ctC(={<2tP^NbJ4%Cq_=wvw=84YC6FO zJLv4G?q9suY^Zj>XUu@Nk>+I=x_)R_KlM|uxsz1=V3`x&W922blp;YD*LT-qluzmm zx*oR197>gY$HfD4d5D{kG~Jm!zRGXSZD-(it3IJzyVmr^>3q7q&wC|B7sQiq=A$C^ zQ@+_OdVm*L=-SBeuF)gx{(LHZz=XKoz<`gMltSObpuYNH+mkf5dc%R;^iy{ZeM2&!m7C6+_#=nfNmQlE%z$BFXfn*1;&Nn?(eKI zJjpmY?X(n*yu=+qje^Y`lck?HOM$2vCRsm&Iu0h z=kZ_T>>+rMch<|MJhd^qO!{ni^&st)zV*U=bBKj8bjG+s{X?IW_=~Z0OWC(YuYFuz zT6M_eN_$-Ma-Id5Rq8@GA=0aKUiB>TL>w#S`zyhgY{^Sz;iT;9WqPKM9`94fbnA4; zq?%2O*l#Gn*{MgN(IVES#llA&FItjxf4m;>Fpgm zrat4(LjGL4J~m$5cUtwaaJG)Yb;h3i#kuzRR(J8Hm`{cfiX3@;z~Sr+ZSO)3OK^&3 z>W2bEZcY5nBP_c6C6w#ggX3HD6z-hH_kJ32@QN7xb<*?XA>Ei`?L)lzVLbLgz#>^Nk##UUs_kM7qO0%qblglbg1=o z+&mV{yjf|o1-+^?h2&Lq`_(hZQh8?a zTT|?F_>XBG$=%WFv~pkbv&ea*U7qG|vQ$Eiqqu*?@2yts+1P~RIuA;NItNq`r3qH7 zdqVb~F_m``Kk}MCcxc?vBQmMz+~B0rd#!sEunNoQ<8GPB_&O;gxaHMwe}H&f>Nv z^y0}AdVf0NDg~EZPC2>TIY#|C2Ig}n%8Ug^%s)At^LtcBy&x=+Sa~u?L11km!s9_) zEXk5t*y}6)9u3NOMy)cO>(X0L*oej!RP48ku*yv<6HIv4sKPaQSl}A%3(9=M zUU_c3ahdyKzS<8570fR@Ta8vK)9Wn@n5c7-45J#y@b-m^JdmtDb@z1U1x#PU-Ou5b+TXR_C;rUsMU88{= zK4}MKtV1|Kj;{I+jX@v1WonoDl{zb29CKyrr;eSn+LRZjC)oArbxK5i$K=}suXR(` zb2oh1xE6Dx(A0w$bR*JEKC;WE#i&iAKDbD7EoC*yrS-4B6m@b@*@6s>9MV(N(hPeV z&{t~RUj)0*u=V5?1<=unc3kzAL_Cgu+vH3k)tTu;H*(v1^7`(ykhTeY#e0?-=mb|s z^Y-Y9n#^+cbM}X?9)1w0ysvyWtQxOYcbtDU)F96_`Gu|d@?AGuP3AckXmh35^T4RC ztvSP;WvZ9s>?!m|zCUQwScPjddYfddCU<=u@(~GaN9>8e5L1Gh6Fc>&dD7n9ti-Im0rg zir;^>pH!>6<9c~@WR&nSigMt>*hy~BV#AB=NsohUv(I(6$^|Lkex{J`$RRu`Pko@4 zd+ejeNWtW$B_7wk{U^7e=OJ6rvjUsjXKpX6XYMsRJWEL&uSIepmdBV&>V^9 z&iG<}gXv;rbO8B_WsIgX$IyirxVuv_@9ADvWQnh>)Uz+{{17g?URPK~%eLpM@9rd;Dk#IyGwYj){7G~T&c znfJT|GZ^|{?Dp*hi?F7ArBeRQ@sppnAiWsh)BJ4$2J~(UJw zH3pZ627-;J1_h7V;gOOXo!)|6Gr{m&JC>DSv<2loe_9&bds0ON5k((6#T2jV^#r~^ zIZe^)hq1apnx#e8}YE%fa1zHLlG^xqQr>7j)pn;ne0O@gnbB!fT(l zL}rCON0WSX=h$!DX8i27jKD2&0b0E+=)=v0d1&*anfQ$2`}ylIW9F1+PCqgbV)CRFsp@&C)y|ORkh+2;G z0-gVp*syTId#A?72badC9PWCh-}sQ~@j_roCu>}3MCYnYohcXh9z042a1Q(~N|-O= zoZflXAbNvU;a4UaJVtm7{_q+r;JvvHIu>jstQnk)@fb06s9WoL=`$al#&%7crP$)! z$JO?*LKmCW3n`>Ixi0VbjC$patCW<+#`GF+Qc$YnXh<<`bwgVpb!(K=v5^hzp<8C- zZf^?C8NmPMW+*2UXb(j04?$UwaEvp2`vwG2Q}2|L|6I!c$5QSt4x-qSq9(#Z7Q!e2 zG(ret!iT^J2?!wg(EI`jG)B-&*c2ngFKo^S+S+@5r#g<$)tR~eN25Hh)|L(?ZtgA^ zY zDI1a)pOEX4!b@>nI2@_Lw+l&x57)-U-;1NI#kUu^2YW$GLM-p-XlaLGI(}T14}s*y z-h`8|?A(+^sY^4dV9c#en6xl19@b_US0+AnCPi6kCV74&!+uhf03VVcgs=F~Xdwe| zDaeOJ32a{q8X#?d-sIlzo1{b1V4K{vckfPy&0!`?cQi$s4d zhjWQzr`*?Xu@CUtV@DXl=Y#-}NrWXokC}@bazB<@CR}plZotM@reH8+zb$IXbvu9NZ9s!onsdfCQjC_JZ6seyryUiQ$ZveXcNZFOu&ra3?pdDYvy7H zsIx;-;}d=9XE^S6^udXd{NKL9#bqO5LGp=+n36 z_CB(IAEBed^N@NwH5@)@R&RH=hiRmc*ow+#=Jc-45dl|}r_GG}=W%+$VfI;xDWzA_4$6BR)a&t!IlL9Tv5$yhO5%Ikkg`8l zsUNhMaa+=W7VrCBi!~h`-I%`9TciL|7$~YBN)YHRKk~cFUolm9Aj!XJCmweIE_4WP z3gMPAf6$^#zTJ~fVC~#>w2U(Ergp?#IHhZ&a9iVD??*OV^)p!t1*zsVFRurTAF{*X&ComnzohC%$1JwpGaHRPc4Fj5~htxqH{&J1Pxy1BEIlk!Qw#K=D z(fFcie^igRr<$?f&r}M{m)&On^h{i$U)VARE zb`-rWC+(d6)GfMef2UI(c_XY@|hTZ(!}!yc23JU56#1ufmYqrbO2bHu3sGF2A**8OD%brEl^6L3=g-fcEkL>Djiytlw*|tfLEt>4ddC2BGCkqzF=&j~^{8 zz>igCK5!`lfD>T>lmSxf=WYIAgn5yO?KbzaeQEPcb4*{GlXiEra&)nF^I|$7{NEVc zK;x@%EQF`niep~Wr!B3xP_g=4IDI+<_0T}}s+NT|P z{j}Q=_@GVUQG86KN&SbFkY8v@%|Oo~++0omkSX1Vol97;>jM(3ob0S22)~z^9ZeNu z*H$~L-nNIKH1kc|g{wUWYBin?WKXCRzl}%bG3*}k{?Mp&2_j&I(t_HSUtdfoPL<)UZI}R@&2a*lR zf&>pafZ$`06 zYf!WWr=7%``Z(RFzkK4tru&^)WHsHr*@|MEgV1>8RcVwB|4sk1XPiF-rsd=mlP1Xw zEv_8YCXXY0L4F0}qGMv`nq-CbN3dtWYn=ri>m)G@N<0rA2B(ADYjxl_A;HS&JiHCu zYDNZpOp-xL{Qks8gk=gwzR*ip??gh`*7-jkg}KQ3*RgTo}l7uNTY@xn|eeEsFg)btFKuDCm= zSVxaY7vWo^jmlIdp2xWY=JJc+@COIMm-Weq@##gY$(%gN^OsXZB1v>!*=xS{@p*xTG$6RchDO;G^n;DFIE$fchVoA_V>* z&VaSrKg`TT|D~%xrJ}~VP`)RV8C;O&dc(^!t(D!4#v##KhjOcGn%D%S3^7?vI{o6_=?tw>B?vxotFX&$G^-sY) zSg(G>vHMMvMB9Urv1(se9Hi^wVrBb_Gnw{E7CiT*XzpIwN|5Vrx#DYJBhaZeG{jza zc~{l#;gF+DGQEO423JL-%$!Wj^^Srd*5Ce^gPKs%(2}0i8-{(+747_FZ<(xG_Nd>N z(uq8HrNBh;@X-u6b7=}Qe(lG#B=kMgS1E^D?841SZD20_rLH9vb`QCad716g%LQAP zD0U)n>^l)SyZ?;9nc10G+w*v!0O7D9Yyd9J#@fNv&BVbBqj=Plg^wR2By4VOh7bm8 zZ-lUbhzWup&2NH0BhA1DD}Hlf0aKLQb{)o+7zd1t35atTTRT`dCYw8$*ke2oeOYW{ zgKXOieEBcMn2uYUx|q0lS$bexT&*1)T!jTiP$)E7P)PLanTweV21HxTjZIu#F)nV{ zQWuiV++FNE5v~|J3uY{T7UEcMljmEB?En!Ea35Si$OlAdcs%&ctxR04^q6FurSaH& zr^=tU;?k992sH9SCU&0elULXuuDv{`Cvy99)m*<NR*KAtt(IN|EsK z>F%vgx9hTT8pgJl-z{BrmSuien`QL5Ue4dE7fU3Mxrv*}PPL&c0pSm5r$1>OCOUMl z@3i_rsk?as1w+N#zBehwPlTtezlKjesefDd*RRY>>?|!@txQk?f)E53+>r>*&k|ws zlbGzcj>HOc?9Kz9gSbFG{!@g$l8r5Ihn1mJ8;qx!o%{Bv1|(yEIJvkTIA~#qaj~x6jc837% z0jl>ye{e`UIoVlb%$cn1oiKo5&`YKuuCC?f;AW+Gl<5r6RTp~`7u#RhFJK&KCqb<+KaPO-5&%-C|a?! zV}TK_FTjWdSVW3~RnLi97)y;2OFX&g~Fzw-(N2Me*_u%bD)GUAHX-T=%5Kg2yHHeFhz?X5&S3= z#?+J#ZE9j_{=JayfD)u)*R7@xk#%3t)F(`}r4cpXRQL8QQmOKg8JQb2vtXnX{dA75 ztR=ddZB#hy?&)LzO1#&hj4+aq;+m|t^W?jC{zjt}{f7rKB3B6~CV@}0nzzd~ULA3Z z{I=V8FDhH6;KaY6#J`{ffdBplC4L{2xba=E1q({}zCBfB_kl~t^@;P66W?O?G{U8~iX(7_HUA@B{9 zAT)Q!TdN}%zV$CA@zV_e|6&sVViI5Xxcmil{9jB0yWs_Z<3EXf5hDM^B>p5O;RBY; zUjIii31D@8i%HmCM_Yf;tiw^iF8j`*(73mOvf?3hXPT4(zm;G=gH`1}gGneLj{(Ht z{L}HJO8x5+i}sckgpz03ciSFNke9!hC%b~`d5Gwl+aH+-ycv3K!X7KM^xhTt?yh99JnI1-S;)xje4gK%)UVJ&ytENbjzRN zuut}|2{5}E-qnZRl=TOFe=#7~d$M(Z1}ni-SEG;8ZAA(5`e};~p{e+}ZgyEt3f&p6@95rMLu=PXKIM-1g7~0WN{sz62in z-^QQ*8(bomwxWSmQ?S&g%%1=FbPGmNL;m>lj5l1B$I4^)315!RRq^-ms=Zb5l<+>n z#-l9^%PaMU9^Es4n8QDaQlxeGCvb_E97B_MQ_hz&)kfQPvz|@6y+%p$`;PYi050)) z_no?r=Fm}{>{cT-SY_m7$ins6j906VF4?@u@>IEJU)xtzsQTz-nMgwF+KH2kGPhfS zqkHRe%5_U>ao2WfU9w`SP-~~j*0RTJ;XYL4w;V0usap3kI+_^E8(U0t3I*~X?n(V6 zz{Ch0BHZxJFq*clRYg~EG26NrrdaLndU`iBRBJxf&TzO=9#_ulS@DFr(te*16=Z?-9Fr01^! z6N+v)Hk!w@lYBy7Pd-xyUH+;@6M+1HxNb-9Gp7~6l2M|asPVp6=_z6YAe-gF<+qaz@T>(P!Ww0DRqezYp z0MGmlZsIKa=kC|ruAg^9Ht$hPpebagkwW)}n{n`2=q&x2UF5P%*4 z?lK3JS)17LY;Ul4aCFnecz_+P=G&mF%6BN^Hp^+dD9M zb{P1DjX8g7%+19eBw_qIz5pcqAAS1E+oa!y;?zn$o!_D3)UTl9oALN# zM4bE;M0|z)cW5~9wYRqSFeqR*GkhD5UrT~LcFPGsp0SgkiJkv%=Dp9W9Ercz2|F7V zVxwac$?{u$Ubqc6%jrWNNNq|kOT|qF1srZ8M~8BDhaWZJbJPFqytzY(;w{(7t5OfP z#1vV%I1WD(S3-W&iL=$x_tQ~`vG^GO41yS+?U=}_0&Rie6A|Xepv*96fLl{+?Ns+iaqH&a$E~YsPtd@gzFVRq?Ko{PE+~E`G~s{3 zD;D4bn-ft;el(JAd$%4RA4+ih5^SOTI~jck^gETi4G4GQy-&4qCyQZpF(~gL?4`7V!T_RWS@wu(W`C#p3euCvu z4Pr+1D=mxhS?2%Z*8k$x|3Aj9-+|1zw_mdbwv*{zf?M@JOQ!paxb=o5e=Q6FJm*_v-i) zt;`~B9(I4dI-(zp*iSQiew`8f$8+hnW6OL{L1yl#Hg&?OhNpTN?`O#D{S04brRi%O z(TYXTBm`mJL^Sc9akY3=~a9?$U3f#Ws= zc3rl}SepqB@q2l$EPay9{@sv}-M}dz$p0qO{hLhpU;QG(pUC9?smlE?CDZ+K;QD8C z{@+ff`)YT73tV56U+h2Kp!23Q&z|jL45}mX#Cpb4pV1G)K^`r>$+L$4C2)N{E&C`G z++mLkkx+WSL~pJ-9Jy5d=X{}XW)A4jWcJ24n#vF+hE(3av09(X$ytx06B508?F8!+#^UmkG&I59vslP&tz)+$*)yh&;2LB z^&Ehvr#=JMBj9xCN8q|0+V?9 zUB8n~Ct`I}R33G@HmUf8;B>jgNlpCg$D=41OxqVvjB3aDr{gdkaGdE5Q5c+8vmnt= zihoj|@vL3fr{yeVv(HWIb56>hze%UV|Gcq$FEy1#eBs&+!4aBlwKnBe)8>qZ@0$PB zs5L+MG2}1VbO5ymmwdk#wO+5?mG(S>n3}s)tm4|y3&k=758LtOI_rivst?!i<|&+} z<7UGwvj)a)Xl$tzuvO{Py0Vxt@OobD%-HZ3N-q5;Q0uae1+!im_AH9z$hKTR>ByH# z;wnF^Q2w{F>2_8YH?(RGg|6mw)lORmj_s@Zv|GUMO%qE4y*JF+DdaM4W0)VGd(HZ- z;XAVfE?U7Vw{ehGf~gHKHI)pL3zyGnj@|8)NoYvr3*x+dB~bbi^I_e`szqH5W!3nu zEEJwqo3`!cpHXXBY}&@({Cvx%i#+m4$Qxf8KdBUXEsaek;sRlAox^pB%5cr(jRB`S z&*Mh2GUd1KQ>DdG=bpS^Kw}f-W9R;XjF6q8&}g!-|Id(5{1PDl!e~ zs8EljwM}-2YJu0$uSB6$IR7eWeS}5CyJF7An0%{p_-MP;)0VUAbsvex_3t#PuU~(f z;qn(j>pM8)sxv|HYwu{{`}avWMqKLb{J4H#*WSuGr7mL2nCU+cS`(Z9fb*jM2eav@ z_aFL_PN!S}x0YJL1i-GaUR zftf!5TF3nWTA%+Bi~S5*f1g_Aq_&M?e@mtN6^Qol$>bLz9k;<+kb38^otJ0+6F~US z=JA0%%P$FhCU$mSat>D5B-&qs+y5Sy;FSw6c1H70pvwdi*a1zmHa8R90aL8)!EcuF z0=W8*BF@RbL0L7X5w1`Hy7V{bPvpUvBKrBhG)hslS0Z|MfQi9^(Ah+x^Rk z^IvcBcaYxy266u5ZGOd2e+lCJ*Xj5N5$C^7#BUL2=5J}bJU_y&zu8LiKQ=Uf83X?Z zI^{PQIQI9`c76ciD8|ms1SF1oe7hz6<@Xf8t_jay-#t#>_9lHM=06RC|8MC3jV1YA z4F8Yx;0|)m6iKfUrKw(FyE!#}aV+bqL|zc`hVsodpXiehW>Jn6e-^|4BTfIt675g| zy^6kh`bGfB@#Bjm%Z^ru?m`oR&Mz-Y_r{oAinaPUz5O~NkVb+1yYqqL!Lc8FkgkG9 zfDhg=1P(%?T||V0#NdrX#H7T;yGX!?fM_=vDamf^`S$CCz|+{Lz+VzV0zzzwKlj@C(P&8)n)lrm_*HniarwK+nrzYb0JyulhS4|`= z&&%by$C2#6-#ImtBav|I4M+d6RY*`1HJRS#p^jsRj$oyP(I3Hx20fI@!x3?sf+`;qQ8{;~5 z>Tw*fB34S&E0{{ZYO+5uXqDKZes7wn|AB_$%WLhc95|vb_c*#$6LEq#wh#PDCHb}X zyw*6WJ+0||X;^wk(;d^*aotWt&_k4(Q|ML5)Ms3Y^9&87#HAFnT_@G%A}ggjOa+s! znKhM&oBHW-rd1+Ngv27Nh#?vpw{c7H5%s49R8vA)9$FcR_!H?GD*aNVX?~BDa-$j3 zAX?6L><@Q;K1eZ5qCp(c-TYy|CM8$=%RsC!9CQ$ zU3n=yl0vOwb+}c!UDE0+@E_>1Z5qfr{b@DYZ(*hHmO5N3?HlJ3tO~VGQ9|{ug4TuV@Pu5l&KNlhn4E|q=< zj^sjEPFK1*&?HI?RnaQFhq1RQS`&QNCRO^%$aKf=Rj)3EIxII-qYslM9Ziz1G?VQoFxY zo!J@()H4x3UCEu_IsFxsD+fe0V@GhdhqNqVs{o;@edY?8BLQr1sN_+cRoF8D>M%8+sJ9#v;qGkj zzz|`@7Yw5iu>l8+ajK0=r5&qyLE+JWP3i*GjIp&qh!)EfM_S;#BNv@>YNsdr0ns<3UFLS@GZMUxDQEp5>|JUgIpJZ%*iQA z?P*KMrR6M2#G@SfsFL%9Ba@T*ffNZCeWA7tSlOs=A&>(rm>h#{5!IdDV6^PP_(46` zNem1ZlpJXAMZ2(_G`Y~@x(K>M4$MTFC*0KG%f!d*+N=`cP0OI8VU68)+lsY7>p9j- zbG9@WJ(iqbcsaB82E8Q-mu%5x*~BRsTHzg1zOWfOum$Z?+#HT@2JiLIb_qeoR_wi# zjvB1EK681U!g9%f);G*DLw|*NVrltC&Z~_)_499w??3O&d2?$hD=h4!cI5gV?xFR$ z+WgT?+7b$(*^f$Z#9wwu-nCVD_tC@hxXb$Sit4qfIdOp)s#Qtwf*<^8+r8DaecmVT zm)tzfbAJ@URyzgbzaH>0U?KNF<-l7B3BPNa3Cm&a$7?B#&b0LgkOU3}4~PXCMyZ-C$y zQ|W~w4k9&SNx#Rh0bttIpI21O7nVHwxIL-*754rFRX)i%Urm;1rZysI9on3 zUL{zG*@6hjHmQuei^{KULAtXN#(wMYS%;vFlr8A;K5zUjC_!@X7BuhgtARON(9`m>CtoHF zTW>*o1$G_rxwe*Bm>LyPwq7OoTvDm-5#YgNTJl3ejk4d${>#k^@%gL4zO|BFo|W&{ zbw4FU7rq`dPAS=fW*qlD+#M%&dkdmOmtCuoegABgS)R7!wBB)rg_mTl<=oF0XXLh^ z9y0mpqa`zUBQxaIc^z{M*ZVIZ#aa&2Tdgb9-qpQ!xrX4=rhNU{m=Mhp<8{9owdU&y z5Zcy9wuXVA12HkhwkD?8BX*{tlKLrm0qQ;c{1bRc(T9>#R2}FwKh%(X2VyAHWBGQy zLI>Y#mW;X~z53Xphc7gP70%^flcNVSN26OAH$T%nXS>#!SFj2&Z-AwPJD6wKl^}Ou zSfX>I!KH@O?tT?81p|F(`K;GRe7JmiFqAM>P_!%%B3rh$0$QX}bsK9RgWDnXT%flE z>wWFs+kfLR5O33@eAA?|O1M7}XCZb@i@^gkKA0k~Q-@Z0y>UzrFve`}WWj9ydD;*0 zXDroh2a4BGpe#pHnuzOHrU+)LektND$RkSCx3C8a0rsXl=ZTBe0a)3s2z13v#tZiTi?$xCeQP90ohs)z(c ztH3kAxmKkOtrY}N_$|m&SK)r?76eqJ=Iq@{rIE(j)z^_66eb+5j)(b4ETspO)1N?ucM{^YH>p8So8U5-N{?s@ zt;rm3dDp|Y^2RUV)9abYP15O^ihw+yl-g6m?P7}QpX7XBV5~P1=9e6i3M25fQtHJ# zmlbW$eO@bjXA+*lPh6;)w+*-JdSI)|*t2hJ`h)PBvVPp4)hh!ucA+1L$3ynr@{mtc zMpRW>@ixy38{_*n8t;~%wdq{FbYVb^XmmBO!aMt#3J;;hHF1yo>eUjpWlt{9S8|Q4 zE6=J``;whpO}~N;mfS4slV==N@oK&z=?J=elb&qYGrw<2dVOD*BL7(rBi|y`G+__9 zhCP>3Qd1+Fn7hMoTz}ngiW$s;`JQB|jI+G0>(W_%Zzu!(bT%WZKKjk*SrbHUBn;f# ztTwV?Y~=DYc&RteH}2ftj8tFqb8jx?Y+A@`CNWWM^Gj++U+i25yyaK>?{QegY{Q zr_(!0GG;MkMf-fSybH?;jH3*U*D22o*7$D>KePm<_oUlOWg%?EA*L)Q53)Oa`wA8=1t;{S>PRU2g&fdUu={_r?2pTl-ZZ@F&Z!7s@u63 zQkj>1b1!E}bjg(hQlbc-;xZ62U#FQh-UWK{*yg^Kfc1w0F~NM5W8)nyen`SRnVIHE z+5ux~zvuilXX)FvAZMOeLhls>TGXg7CsYe8#}&@r@mfb2pB1Lvf>zk-p2W$XiJB>> z+7rcpTbb(m{N|M8YR9|P*X!g$1AR$i;riq8!foqy7J4_;15>2DAcu>wymsNvuLYJq z6m2}7n+j4$Rc*XSlLH?!P$oNOn94cev?vrL$+4~lW|qa3s($tIoAN7{6OHtz{R-0F z-fCcGpSjGX@V4s)Uq3v}du%9Sg*CFS60%;sl;kzAt07oYO*i60epyMWrQFnm>?m4s zDY(ZG-D%Mfztx5GP%sj%4Lqq!VyjX3G{&SY>ut7udppH=*P68CJJF@f6Y^#G;crhq zhPgutCi)e2e(zr|gv}DX)4jCGJ=)*h$Np*|&QEPO>zepRveB`7qT~nmgnjI+II~g> zCIgq1{j(PgODceB`VLjQ7}k97GN4SZrS{pCp-IG$LhxFkPK!IT+cMJdGCSkD!VNb` z^7SC@1?3^Kb=u`YQkpj>9?wVyBLqSb%VVqB8ztTE-J5%@mm_+!TZ;YFOpFohW@{hK2=zVDI|i@bGN{;<>`@-PAa*Qz zgR@nIaawXL2D~b3`mC0L(ulCUdM;R|>wtB*!>T(($q#HHa20?X3k*!~0+hLIg*AAQ zz#&S(E~ur5O4SoQz8F}CbYNWTU5X$E46v+F%xb@%U)-3)U|~f7G={jEZ(KYUI4x1Fj7Ain*o6R>Btv>b9Vg%T>*nhBlaM_MHj$ zYeq;4sf?{tYpjHw;vEWI;qDA|@UA3VF;*|19PVqpf6wnNHH+_|3KE@kN1%H3mjka1 z<`@Ad!fL&;arH=T<;)4ctMTj`eF;iEL!t3+P6PxEW{JMfG)P&A8tQC(pzSMCS^j|aS>%2O^KeC$gnqxMN-epg*~RhM zMyWkG36?0hbqp+nEjj$P+NN6VQZQy50gvBJUx^+GY>rC*NRyTTET-7K_o3k3 z*<Q}J!Kn!5e-`;Z2Q1@j`(;f!^+#0;qp^)^rG$`wZLy@r-)h)W^1jmy-txR zo6%jTI;U4WH}qPJ*V3!ayEqbm-|{B~llTp}v;F5K2kuJl_EuqWHdf5Ea(OP=`(`TG zr{tjIbKMbxVr#8w-6S=Mn(92Etj(zLmO&CD(f$s`d%mPAP4A2utB0*tm!dMXZuO^G#lv6S3g8~2i_NXExSubp0{(w|3bTsmAix!XtHuQi5LwO^+w#Mbu8 z)WI7V2EpFkm7shtstz#$nz9t7PreL~I=oxf*S&o={3{TfP5iyegOUW}6xPmfH^LFB zFYr1Z*PYD4p{PGV5Bxzzj~ENITsY)17U8lF?lH&5b$dE)WPku}+;tTiJS zCl$Gbv_h2Q1Cz;WTagLwm%1zl$ zG06;tco)O*eWA9@cb#wCgE2E*U&s?pqq()o;wgNc-bV6S@b!}m;}%0QFQT7+V3fl~ znXqvZc*(2WAP}6~sJiJxJ5~t1L##KXAw`(r5$S%&r-!OQYS*J+5C#H)B%X0js)A$h zz>Vz?)UcM-w!hfa?vUzNCbbKAg33~axzWH_$*&bcWf{OcfRmUpb0aMfrKx;-S1TIC zSSdl22I2tWR(FWcka877l6|0^cxViWaAO`Sf$xhEji~_PKft7{pcPEJK=rNzI-3=Emmu5+DT0Wa`i2#Z zx>+U)40P&U-p^=&<5pMGw)Dy4^52)B~k z2T2dMTN(AK53REcYR=T1dbeukC#o__3x%S|3Fhe zK%^&ehSWFOw?T5|m|CD;!KXEghja<#0->KKa|~-cm);9w_^R;XIDDny&SS>L)g&IX zcEN(_$srMAEe#SKvSUbZarS9b#ut83v->B2lYq;=;y6>`SmHV8CFYamM|?cj)^ax; z>PFC;JJ(N7nWi#6;+`ZUTd`D|xgA3vADP}gR_r`tzVChx-(4?ZZHOenp(r&k%t)=K zvS%;g9lkJK=$T+t&=xu)SLQvPpz!*zZ)wfhTcfp%#1iM@=p^>V-wv7v%}(NJye?Nx zUoln6)Wtz`|M~Q3G;jf3; z$Ba3=l~%e3o3GP^_J}DClFFX=^u}DX-uq5LJJ)qc+&?Qq_DP-dDVoSK`F=kaNtp^H zs7|ATab0pAvB2*A7uaLQ%xk#_5uf(LNSgPrmrdFn>#6*iH zZV)3YXe)A*!0Xm{s5@`WLXHZN5RH#at|qrd!HwP5iYS5MAYeCemsj&E(|?Yq-GsFv z*kxZwY%p#}oZ|dBjrnsr-f80?WS1Otqum3n)^t!;ssQ+4U~kD0z)BetNZg%+A!h+m zS?vOiY}43Wt$HgJxnsG}Cu<+vk~$|KunGbo_Q#V6v<7&CB@VBcI4^~gtz1xV+f*sr zr`b@l(OJJ4u^?I1yux*?GWD>>CP&NU;+3IK22*d#qbgEQXAZq0{v<82C~kf)N8-pH z*%d9@xwVkS|HssOz*GHy@#9x2r6HoBxIQ5(G)P&urE7%j>`L~E>~XKAQOHV&o7E*N zAd7k4?z7vv86D!#aY#<%}R?x5T z6?KST!C&dFgu={0?_QTb2>0O|xLC%{N`sSX@ePr$UMMjP0AB?v?W|;X|6bij^ zTlj;xR!(12+}h@jVzs>bcr3EWJfLS2srGaX`|q>t=8iJLb6gRe8w`b+ovn2#$J^H% zY51o?pG(n+17}|beBLz>{AN=1Vs*i83M{Q1ic7;`QUV{AEpQ^i3qr?uXH0*T*et$O zwr*{sJI-jc`@rwEtPkf;%^)4>d-`S|qwRvVYg1MHzKEJJs|7WbG=;7GX8oOIoef@$ z2e?r$ z_@rq{*QXpK$|yu8S$%OSEi(`}*C0O0clE$$wmj_hk=usI2*zm`jawlGo zqWvEG4duf*xR$eFpSK`d;3%K8kZydY&@Io%dKSJW&GUeSf~t^*9UvEZ9$IE zJ7hp_=@WE5dwn*}df-x{lH>Qhr`g(L=;raWTNG@#{cvin4wU))2O)vL_(|CO>jt3a z&x0b7IUtteT6r-ENPDR4XPI;x)W^;&1XOYjwGSX7fRX@2BD0bwO%Gq%Q>NSD!tDYQ z!~c{9T^H`8X%@?c4klC2B=o(u{>eoDJ3ly?Dnxm>ays7WE!$1#L;guMnoONB3B&-D zI^tmFvFYCHP`H_QVX}5_wkCfz1p_v;)gQQf_Rc--j}`W8s0Z8AN)e`vTgb_*_-!SYL@ydGMPMWqGldq zfZ)(|yCkXJHH|GQoy#0=?Zed~dl`F{=u_Ez6@@DP{@?m$NWYH_hO$0<)pxcIjp*qo z6dKVEG>sd7iZr8q7p{BbuWK53Si8Lc{8heY_kPuC#J;RSjv<~coe|WtEw-9{+mz1L zY+c8t_tw8plhE*ZYHG*6yKko!Vq(=I1t}R@k`mlD;x5)Yl#@oojv)CMjmV{I!z{Ez zrIGr}zk6xEWBZ=?>H)jVMYZ8_F$&**ct*D-dmd+-|4OY&R)yLf$j(khY@3MTG zeWlQ)oVntJJ!(>BF(OTC}OD{^D{DbghyRb3h-&3UZ;`Zmek$60s;|V@9 z?F(Vm)*a_n(K8-De`f^SJJ!Px-**@F$?a3q@J5ez3QlyIBl~MX$RC6q)QR%uQnlArluosQBA~#=QI7*?xzgx3FPY=z{B*{mWT%HZu%~lyum+RP* zB0v>$KQFtWufq^qn5Wzqd%ZIhbj ztG6@LaI5}Ciea24DLB6bKKY`TTsoSDE%0%_VI4pqvU%5=prhXUIJuHDMly?1MNw~| z-n+(YKQ( zr&!D5V|RF|J$ieue})0H5Md-xy{D%ujdk6!sp`WLs@DAA z*ma|)R(6|w;Xu%|mSJ^TQm@u*W!A^LZOGOBK?DZwnn2bX zwcqxMsFe01R1lC9k@gXvh&*Yps+?tzOXv=m%F|8ceAhAbH{3p&@ zXQmGWIF(~{*F3mj_y?gJM?PX!!x0v_Fx*@)5Qsq@3$8;Cctb-Ggt5c?LM~m=2v=Z; zAa|{E6r0u;nVH+0otx0Ul%y~P@bG~df_nDu=~7u*uZ?>bYN_rD5qvCfecA-PDD&7SAsmNjkzJ~h=V zW@q~=(~e5#9kiJP9fGAMU^c4rLQ6oBg^Id+aJk^b>>ZL$yrhba0x111TaC4z+}%zf z=)Nnu8$5Hx<1O@>f8|P8$!(xgnmBwC9lo@4>u8ZCQ`xjm3)<-b8Ydr+O5hnl$hEa3 z0!G&}F4W4JX6c_Hwmgfs{-?7--36We98U2>SV!e5BYxZw zn%^98vgSs#Iw5VkG(~iI2Y}4}0SgD-r{7HbOly-e%Hl%U!xW;mc3`40Kprn$v-?`K zY+JAT2hkzu?_Y_!Qd%bQA^TLb@5<;$ukbLp7ZYzroY5TOA1Bckhgpp{B`#y5R;1@V z0d!7KLaDYS&H;Nb>@UW#UmvSVvs8qd zk8##NpXRxQ@MkgdGa>|6cV?0TQ&`2)gUwovz5gHtc;d$XAdcE&SlV1i4pNse0% zp649fEv=~bUd_$*SW$o9)s_A}vAMU{b1@dNcHe1eT$0;)!opF`)!!P*Z~ zB(}%z99N~dx=zw3obS%Fxu86c&iOq9fFrSN^juc^xZ`2oXW71PSr%pr3K~#@zkerb zv6a|#b}n>RRN#O6K64JKYg)H#PUE!7{3QnRs9cG)V9QZ}t4ULO8@xYtBoZRi!X(75 zrS^*%cy(Ma!yCG@K>K!$T3qrXd|NW#`8RpSLF-Pscy(uq^Ny!^po0>V<5mBuBdyaf zt{L0s7uZ*S^`NzUm_*7Yz`B|58nkjXcMRCC^GS{CHL=b#ea`AC(sj)hGCEzp|HYH=k+WvWJZEBOnp32H+|L$wpL&wp+UDBZ%wYd-^baDm zepq8!fOls}scVwNj^Z*`8^$(&35@5O$2qi{>(uoo5@uFx&@x;B(+-WG0;7NE6y>nu zAtNrVi%;NA5Ms@ozi-$M@Vl<3Ia=E6AEzWgQ^VW@SYw>yS2rnJ~t<(1AalP^@iWv1e z#d179h8)hdg(^lfs@fUG^Ziwm3rh7W-lLU{a|hEyf@M6>M16d4U1xU(dNpRbbVTF@ z%9i5@;LCAMeoYSj%}){^WxUx>@2PK6|8j5qz7ke^9Jy$;X0*IPc3HyCOO7P9?5Rss zdY8&qS6;(Y9je@AT}~N&`AFv>V#1sC;*4dKWoZG8>p?y8V=y^5R1qbVBDA#QjfTWf zc|rfF;70tP5$FGzg~AX}%(!nNa-hGziD(9__}AtUw1Zg-*~JPvo;ksn6TzHTK0`#bJc~2p zCW-zvSb@6(J|4B(CeOU3K9%Vgf}{EWVGLxMjDZf*00f`>AN!R}%_UY?GiVirYMy3v z_}aOmO>G8;vrwdN|F@5N#`8Dm!Yhky$uz z{aLXPS&^NAMO|%1-O;9;#6S9ju#)CTdUzZou>5qY`%72;nBhu-2G0R8RvOr{R+zn;+ z@JYKmtmSz>T&-oO3G!RyUNc920iyF-i}HYruQlV+{##UpCdMDrja|}fc`){&tetik zn$T&iCvSJO zPnf!y2cN0}0|nnbE5r9OSyQW+6n+V;6EU|lZCb1aj_08hGzYJfVlFewlccOkhE`l` z&^4yHGB?8_^-3O?n~WP}xlh@IGif%`#q086aPPNlXaJRZ;wol_?ufMbJLz|_U+(!B z9!qlBYL0D#wn(SxuW7UB4Hx%WP(TQS-_ zGW4q&M8UpAS8o^c>WP#mISBNmW#^87aX6@flz!yn<4XRuWR&nxNxDAK{Ij`)!9Y{` zQR}eV1k8zswz%(tW%6SmIO8j|A3Q$WIF1^+*-oBr{bnLT#M&?ZT5P}-_Jq!@wH}>W z?x%m0KHov^wv_K)q*hz9PFaiuT}K~(Y;k9@CtS2ic`hk z?2607h4=n?3um=x4sT$1ePNbqZ*Tv1H(y`zI#*XNmuREA+tMC>7kYyLe;;9`m3}We zAOtsT)n@g%pc4FDuK{$a9V0yNX{U6Ky^D9V9WD1Ymh_P5_kQMV^ujm#-ZRy%FMF*+ z=Gc@I;H`WQm;Pqy(|jvR@Uqo4PEz3?M5Dyz%I8xbt?xWfxb8-Xj8on8OHpl@L0-0~ z;*kD>h>ueqC!MW`PwdK}#c%#WMBzpk_suXk+ebRr$|W@A>j%B+Tpf2kli3mvVw*I~ zcS$e)|y4^$S{_50lLc{Iw>VjsS4(i`@5P0#aBo*r>JEeF}LGYC6i3ZKD%@YUL z=DS{mGYQd%jNAzptzJ!dr5UVQ?-o3*2e8`%;U5&Cglfql#l zJ1*W?swvzgS=UagMh)QFp0duFuwR+O#z7J`$(lg)Bp@bcwG3L&S7mLRSjp^~v99mB z1Ky&be~-DJjj*ZnAnd7K1{2<*|WJf7YjyQK2K^r@un?xr`N)6>Nd z##*=VwRRACy~*F(;55=yRye9yDP0?N()#0rmF9?oqYDb-S#-y~6+}S;pR{gS`}(fM zQwu_+Wu<{Lr?d>BDnowDl3V8@p@6Uk*N%18q@0gd2t?BjsxmOQ78Jw@={SqvzN%H> zG1V^mPZ4zc#`;`qNz;Sr){P6v)QxqeVR8sPS@8^2n6r5VnsmT7sA>VXm z7gud9Uw&2P*6~LwnDdxH!qN@t!;IR~rlh~i^GW(QZ=@jU6ZsvoQ2Bo0kMg7)&vxDR ziiv7CN^eoS);@VG?E7-h!(v>hGFMf*Y>V=+UdQ^b#ADALp9~&eC`}i0zGh#)8GkA=xb}_%eC&Ge&w+GjayI~HhS1S&NAeHf~#7B*#=#^(dLMnmL0ifZ8VfP8yN z!+{s*8#|)N=BeT}x8LRj7X|4YuYx9AA1nFUvdH{@@xu~4CkXie1BQr9)fGsq45>3I?Z zU+S=OQ7m-B-f@uZ_QLlrMlYn6SfE49UHG+lHd%9J1}x-e_zROxx&(D+@lUX`U1YW* z;*w-z)9j9gOM$=M8n$iLyE(j}Zs=R^T586Ue(L;f-z3pms}d2w@C-Vyn|it zJ*Zj}vpP;P>kdsY%q7D#$V)Vpya-~(Md0DDKh)Lt z&mOY27GSynZcB|r+C$y^S=#kS`ms93K$P&D-KNe{2x~Tr$m%ICZ&R%SFT{gs%Mq01 zH@6ko;eZ*xu`&a7%pA-CCjv=wye|*`z{BcH7Wcgb(9O6pUx)e>DkYPs6k;Y3l9;y^ zbZ{?`^W+IZ-o!NEN|S%rP@h}wqkL17D!z^t-!rwD@o{b6>=9Z+WndSc&R z^**%v)+gioKt4WoyXQ^jenzhDl;&qM-Zs0g;1gA2CE}jro99S{uho6tdtpyv&o(1zYkv@u1A1|8mKnoK z#@ZASp2(+jLX^T0bEz@Z*>Q%rq;khWA%|lk^A71DL?q$iiQ z+TV{KdS!S)pFblej2;g4!Ui-<$u&Z+m1^m-?eqEh677(~A$-c_ZPU}&uenWN^N#-a zCXnr@hy-KzLntvH3+c&g&q4WF)Gj3~*EO^{vW}^Gc+5X+T&=ui%g5%985h}BImgct zvk@~uJ%tmSps!mOsPr>-@h%VdEs`tY+_Oe*4@?_xuIQ2GiP!Gzsoj!srK6FDtsWO*m;^R94?0%o@W9i?DqRgtx^q@8RQWSNS;p$)# zk&*9<(4CVJ8OrR1t*iMAr^55(@oTZx?%-K1Kq`N8FVM{iWf}~ssaOl}#5?aTx6`h? zUSq7fJzK0?tSdInB7K8hj@?@AR+AumbUIVUjSVu2NdA}vFYqES*C~%aC?`cP_u=t_ z>9;e6Z>h3D{zkW3SB7u0^SwL(DBW%CSMtS-z2HmRnWRPW#EdcA2q4i3&unI1%w{`) zt~F{2m&_p$CG_qxVxeyo8?rv1%xA+ISENza31!x6T;nEJm}nMDzZh{a)+x7XYWs{< zs$tlVXmvS=UuEWgmD5rCpi69IF_JxzFIHvF*)8BNHB>0Y&LyAMA zgdzF>_Tj;{hzt)@9_G1^LOm}wGC;}k{fwN>&@GFTlu0dkYXdJAG#Z#06*9i#N?fw3 zij+hJM>ryu1}6wJh6LZ#`KgnBoC6+$O9k&5eIDKN^#^x9$0SsiEyZ|wGV*iY5}1KF zI{ask$nG(gTsRRiwwpV>mUPryd;0+&fi0s+6pg!wv76OxiL_@p1j#<1S=KhLmcJf; zxP{;P(Tm28uUh90Af}Yn$&DkJcRt#6e%SB|lxy~kH|JpQ;7Lm6)ta!v9Q#*&j5s%I zUst}m@b40MdAXoXyaR8Mf;$*;=px6gtCC? zkTHe-r-9?K!#~bBI_@VbG+;5C zNS)}(fMLS>;%R~|EQokUmu1PJVCpH_#h6<}a~J6a7L7fU!xdlROZj5Gm2#}0$!-Wg zNcN$)`Hm^Mk2gnb?{{UR6@Q7P6Lp3~3f>kp7W8q9Gd@$%G<3!C&d(xS^}Y6X`2k6y zq%dX)$JwPGhtpglJf-royZ zoYvTFIB=7s2il6pXXQd9PZJKICY__=pTzVs&rOl>;tNo-w%k3l$j|}uf(Z&`5*a98 zGzorNyuJq%xk(u|YH_h%#h0HtBCmO}i8{App>^VeDxxRHYv9xdDyYr7MZBTa@nm~1 zX5nhw7N+?q{81r`!Gr50(duli$^222DL2X_ z0nrDY8Z>betfe|%V(w?=PQasEfiQr8CRN3p_`WRn^Cj|dFB`eIg2GyWw#`x#Zg{$g zq@R!;D}~i5d3Y;gjBt&Hf&?139eL~N(^_vY?-1cI{mnSyS{>$6PaC!nHSg=TWMvsy zvo(=o`%HE>292%6e`ZMEQ)+OjDp?Ouz{zuMRSAwxQ?XxZkr|Dv!Ri*@N^3fs87vzM zC275sVAZmsiqc05KPUIP*NE>Hj8m=Ne&F(UFIkE<^l41BG=LIA7NtBE9!Rms9%*qQ z8+DZIigBpnOfbM0MuZk{uk2r2#nyOmm3=a3f>AfELFAP8R$#&J3PrmXh z`4jymO^13kKr5z(Uo>K9d|tGNH*mh(CHQ9Petp$*O{K`QDf(NFcCV0~jD9vLew>V2 z@)Uzs)xm`cWWZdS(Fm*OpSLKM0Te z2&Bp4*AaTg=gGpkdz-G^!Y!z$7-h8m2!ZWa0BY%3eCkZp>oq!mhlGTO&48{bQG6mr z?dz-9lRDDt>leNyim5a_Z+ zJ`^;!Qp66=7l|}rkEo5JI0mqFBIzxKy{M`GPLKPpU#6jw1HCLCzB++FVjV>5YFn#p4o6*xN}8j zyqPbucKJeL97(<_xgR;D*Hx&aA9pr1WD?$#RKr5xn4`m7gz!wOSD2U_d&Es7pBy;9 zbpN$O+{0&!Sh|GKDqtfPYyj%x`PAKDY8OsShb!JK-Hpln-sztq>HrC?q&yErOrJ;i z0T9wTVNfa>5_B;uMeq!s+%3?FSc|@3Mgd7Rv29>314mB|*wx_FD&bQD3mdl{)>nJL z5!j{n8vvxi%GMSLp0y?c=F)rr3tpfMpD^mqJ2X5dxXmEg+-YanqAd#NyI*|Z$?@ys zx1h*P1F85fH{*X0N_U&Oc2Zx`Dpl9e?5!F&)gZM1o;CR}hY}^_b=xKcR90|i7Df3z z<<=_%bKMy)b`#e{u`ZnG?ti8t9-P?QVjV4mY{<4>$(J}Sl=iyHMhxqFYbA)p13N-$ z>*BwTYFkFu3|w+C77>U~2=iO>TcbreAVHcn4Xq(xRkBV;&fWA_j(pT@WZx{6e`>gz zU$6{iRpy*%KrCQnk)NbAVT0S2XDpqbHT8_YI2VX(jz$fBM-F&Uzb~#A5D0gq`)U}6 z76B@a9`BJl$ly{siyACPCXzXa2Z@1;7F8u1Z{(66U_TmRN3r-#r1eXif#JC>j5c&P zf*JI3Xv>u3$n_Mq_dYJFYZTe(_IK@`dqPUFwgY>QPXtuo+L!lY$?rHj4N1vfDz8Pd z(y;G+EbDj!5-mPwwtN~JGQ)l~vwHMG*;=WZhc4_<5DI84AG@TLfOSB!HH>Ss_4mTx z`}&(Y`ZLQ`OMZPgb7=W-<$bS(#*2b49x2D1{{=RGf?t-dLxxvb!`mR- zRZ@?06RxavN4vSqMW@pz?o_i4aE3`#E1z=zWY1((;4ouaa{q6QVb&UeF+0Jd2>dcL zj?NOgk)>UE!w^FIrI2`60Z%RSTYvw+5QY8k7T#$)dwo&x5UDS4$!e z-Ql8mIk$I)?6w)7`1G4ef6X6+lC?K`I!@Q&kdx7j5sec~-W7baMEf~IytuPukLeS; z3MG3P;fzv`_8qX zrzC^iy(q!4P(X59v^0MD?R%3 zV0oO}(2;9#hl%e{5R(oc#T}tOY^k>xfk_ z{yQ>(lJAzJ-*A`Dc)s21vI@7+jWl1Y4fYtYiZZvNny$VjXh={Cgn>n1VhZM^wr2iQ z*M;Xr+O{H_aG+f!?!pF*`2o0Knq+*ChbDlUo^VeWH$+a$=22Yp~k*0Hm1Ph=zn|WKd&QhWiM0>166S-XR5_c2x!aS`+ zgCy=UdlS*zOs+K5mN2oxc0OCtSS7G-N5s2Vzm{0 zflbiFi?>g92fTa8C!MtZPA?riSwe;_7foL0h54000RwNX9?YJAy?dB>H*k*|^X??c z>8RWY;wjX<4zmP)0Qey4d*t>q$?rh!Iww8Sbs)B9iVe?#3kE{JdZLLt{&{SD<6Z=L zLM2T$UJ26Cj84|wmU9=T65xlRdR|_GPRj<;zfA2-_yFIRUZgdJ6QiTdLAn87o{C5$m*v=I1ZIeLGODODA^ zPO0I)Q}eD2GcbZE>S>Y^qh!l>Wbx21%I_LOld1%HGh-6x?z zw2ql>f&`MVby7Rwl!3BwfChFIC59a-!YyeJQw)?vV#e?gG@zpPkRo2r9(uKDEV*d@ zYm+kJgkh;aJy_+UyrW=7uU>gyry_Rrc?;4AlFKrKR|NNxH#h-1X=f=SO=w*7FQ|Kb zdgRlTMc>iND`QGmwJWX@Wtz)gzHfHvIDNC`h>_WyAR)ImBViR7=;u2W_?10hQN{cn z{FP`p+QE9gMcu^=m~dlpXEh^M&!Fgkv2+sCO#~|zK@xqp$n1Q8NBN)spIgrxhGYmv z#50#-GMG#|n2t{7m>if18<5jJk5=wn zt>&6|tLCabrXr^)WtfdsJ|8uWub@-d^5-5WF_)ub^sGT3mXWTj$zC1MdBx#487} z1Ml(c92wmSx;rkY4;y@!%J;MMKEbYQeV6kO$-py0kG@7@44l)If*r^|dOB_|F`94* zTRRON-SV>_FJf0tWB#LT+@P3`gkP=Yt*iC&!z8e3o-6Y6;-6Szb9Y=WAmiw%CE9(K z<2zHwG_U@M7{aK~5zSl#N+`#`@2hRld51o(9hMyY z%GiJ5o+W+Hw8VIcS4^C%oRlMZMYGdvsvnhYC+@+G&u^ADjnm zie;KE5XF+HZ#OvKlht12H?ah0h7t|wh!O~7R$%Ucw;j%Vs zE9|s~eLu-n_e&He!(0LOc+YE~OEffBMVZX-5wcUq;=6VzhN^i?MIQK`NwZE`L8c0P z93^55EUzoai{pShR>32}tjGInAuK1$(1qQ<0-8Ki=M;egjW;;|Kgc?S#c@FwQp()BKT>p>;4<_X%r zGX0kyS9WzsKosi+0Q}-&@#YQW)`w@;vr8*tf$IqKc5++(($gt7*+tVmZJTT^CO&g; zhH?hioMY=?hJ-O`3A$v4#q#eX{S&ihn>^UA3uz1T>O*te??~Vp){&!L+)LDWT*{ zB#CoF<`siS&JU?tH*FwZy47h?_cGdtm&%p-q!O~>74Yl~d(QLq&a<+}v_`h+Kt{>J zq_P9uk;5cKdOw~oVN2zrZr$kS7a8oit?o#-(ZIW_+7%J1i!#*U(gdVLVS7{5l2RRjV?A`1eqKT9+;&A{zizT?u#WkGG|P|;2l<3 zCd>PG6wj`%qJNG^=2w^_kt9xo=~g+RtaJ8~U|Jj;UV#{0@0m_Ad^sOvvo5=Ne{z10SB2pxNVltnR zJ%$NN74b$4G>a_2n6qj^;Kfni@MfG>Oq5g8gi##obXKcnj3cQ5cmyX8(vMWVMLm*y z^t(&k63kt}2N~#hOisi-kxN2N%diFgC7I7!;A9${{YQ(SkvYap28gKt{@b|d7{Bn^ zGXIvKYiRSxMjgu0_bKG6zwX%%X5$hY#@nKm_LRBd;DE`oiE#ssxH11u{{((Y-5Pa2 zH{<5HyWvcSchk2^5b}cYPE9H#d3hL4k^m%cj@Vuk05~x0%QY8p(l@nzFhHo!-81(d zYxco~j&`6(a8q>quwSstUxbCw>z_Gw=oqV}Hg&LS4TGDAOXhf9nEAJ;cy6ccm-`2q z88>6lwTGGT2T(vLP^wY~McJ88q2 zHrqC1ePg?vVBX3P7L#PnRk5zKECz*YDzKu%FX_){fxs2C!vUOg>|L+H!7eqbnrz?2 zwD`hh=61>WCFXegcpkh3(3wHe)Dw^&euO);&hZGz1(^AO{R+0B9Gjs+ljB5I;Clqu zw-IzJSjYX5q5KCvbjxfi_G@0@NjTO?MBeu~K{#PhWT}s>zJRhT8jU=tHWH|%y|z!Y zca7}2X)Wh58+61S@XXqPY@$E!uu=9>^Ae1|$rz2%(aH_Z||%UqA2LJ ztvmYU=gKO0m&OUbP<#3HMbOt5FD8!Pcig1YKY(B{uSdR2`Gd&yLEWTJRuZ->aOX!_ z-0Xf{(>;%131JhLKcIrWI_zTv+2AE3IGEc}c3>Yr%rDU4JU70Ke!^3LX=_(7Gw-_| zVbQDpNKI(r=H+9-PKnevF31$c_Cch|n~}guq&;8H1V*A=9W)Z$f?t^W=J=?}fE@@+ z%=n6Q!e0yGUoHiBG9XtVt|-SF_^&nMYyjQp2Z-8vFov!pNu#W7n+{O+v!?|!f7y$x z1IU?6-7*Yy6 z%b-kFf2PTOGBlt6#e1Uucsc3{YUBm7@DG9}iVR|_+p4UHqQo>flpYk!i2Cm6lo674 z&n3Jo6k&URt)M9U;)%X97OqsI0RLk88|7WI{6aVmr3wp!H>lMN57T&h$OVixq9DaSbpV^*J73n#f0DZRBG+PMzv_BJX27{G zd6cADqmL+%vNHy<@?*G-M+Q!r_;|Z<@TRVQQ)3!o}Bn1 zkSzwsApAeA*lq{Bmie>r`Xt!gMEAt~!&jj5&{y5fbSW`2cB+t=Q~L|YK`FL3@Mdl+ zZ6==Zlp4PQ>pnIdzUT0~ieYu3>rNpFe7l69mi(lY=QI?t{`zHJ@nDHQ= zr^i#M74doE7Rme>^M!VEZ3Bdq_VFdhFEIysudOB>nZx%}len7zVt}vEpio!O;Qh7P zTa94Yt1~BV{hkD!rdY>#B|cmDSa$jJupUq{?7uPw#DOL$jCz}5t(q(b{>6*R>vsf@ z+P}nN|MDhiEldecbRQ^BFj@^R&YmluL{m+9V!`19_j?8O$@32#a~Z$v*Z<4vnbFLI zV=Gd$ei1JLRP_4U(A1M#AXmeyZPPaVU}n~IdMsPf-DggE;_9{AwaYbBc-{ngcv@*!ffweOf3vS*`Ey^xTgj-0 z!2%3Vww8G}E$ft+=f)kMB%rBd~Pp%?`(yLHk237p-g_dzz zCRxI6ZV0BFTgD72Bq&yLn7P?|(usF5Y8&j1hW@L1IXBxT*`i(`>d86~vVe+We zOzVZk0>^41pL0YES-yge&QjNR$LAA8BcUbTzTJo## zuMY@%hmypkmjj)dOb^90eF8rgVQw&I+O5u&UVi)C2D%LAFIoBR@z29CpS?woC<5TY z>?ZX&*FVg)u-}OK?&@nR(cjFSWp&TK@bdK zF_M1eA8g>t_-9J_%gZt)A0XcWYk<8NXbHa{F5tlAixBW$F$Es;`tbT7X7DlKi!OyaImYLYj1`X_cC@;kX3V@+ZVKnH~A; zd}MQp(5l$EKZqN3a`#g+fN*Tc(aWx~X75sb3zJeb{^>UQO(!3)EFc-*mRAICZ|#-m<*`N90y> zY^55!1L>=x!#Yi8i1cp>D%OIR!3VseFMEP%W|?yE1d>rT&uoQ-8m?rLwu&j9jFH8O z?x}jioB)#@s~$4HhB9#|QG@uf+rj&pkegJiDvVVpCdRvE8Q##(5w;S20l)(e3m|Qb zM1hkPO9}_#L^%Tv>~AX9G{52a4v{}P9OmrrZxF7lt8u!fT`}i}P>8X#2-pSdS7(-A zbcyB{{9HD2?xGZrv7}_1<_T8%m=+89Xr1lcX2jfnHqOv^$sG?SY^lWOvVotMMHss| z|7)kU?xo;g*wRW6~klkGF7JevgTq)jYA; zO~O_mE3^($-hW@8wq3;QJCvmrMKxp#^YC4i2S4@IZ0ggqxDSSBL*JI1_~dZXNq4iW zS@hxgE$8b!+*Pg}MUy9mn6n=Nk(gz2Fsm(?3**I7WqEi@0H9ePIFwAFhiS{rXiOOf zyk#f)#@55w8c?H-3ju${Omd_#>wO`!#=n7r=dz{PR1>?KX_{%38%nN9k8Lw>>R5QU z2#3T?R$7x{lQR!abbmy$rXh5hUoqf-OaKhmeA4kW|3@7dKy&Cu$0B4!nt<2re1Fdl zAQfnN7q9(@e(J>RZ4K+J1om~oPohK|6;?ecVKm(^C%in)IDGh<&)lNOs%$0ep^amV zweK`8tLZa19m_Y*PdY-=e=jn;BY=a_jwf-cP0si|4vbz${j%C#PY!BKi8)U2Kmg>@KIOaRSRmri>GV^Y>zq;*!&1=itJADz<^ramp$%eAdhsJBR>ZWkM$D@Yq zH#l6y<$3OTD5wgIM4+#*ykB1x`JJ@iu;ti{94}Adr9B`zOW1($3?ocIoJ26k2oFMM z1sW7{>MhJz&Heg+#Hr|XIL*b?nVA~|4_||NbfqI%gaV4jK542pMf)4lj;d5S*=c5` zG3gstc;%VRc8{9v{jEq@=UuBBuTI9!G-Y&MSV!p+Mqc2Gf@z`<rtgU3*fD}he|?d+cv?FdfYLdq(hJe+8H8H4@}cn3`edi^P3 zc@xI7DMqGKP@eBN8OAOg!>(5&zi^ZUG*qQm5c6fjuZ*pXsR@;pdA%~iR?KN>o*cLQ zaQj1HO?$ZL8fyCwx6ZmT5sScETQHq>*mUL189s2qrbXz6ih>KN>zprfTc9iL2bQu&!_1J~d|Fr2}jV z@VgSRm>TV@858*gZef$B4tXAyY!#et%cf(P;L&oF^gM4}U;n#5h%X5fF>8p#-`QL< z^#;O6(C&W_z%M;wh*GNE$k=_;e$NVpu-GQ;!8*pO2QoCjplf|NNZ!AUDAeWcN_bHEQZ+WAW{va-IH#(Pt ztu|EVfwygW{$yd68XUU030T8AZ85hdcN0q<4H$OTh^Jn_R?B!0;Hq;;($swO)$+}Z zQ>lv5c2V^aKEuQ}4?FQDTfTw?2@Gy*wKh#;Sz$~zVEs-5@7}|3!Q~dCB0&AS7go~RPIRD zmlIrgGqPG;;48v2iY<<5tKb@Z10Ntkyh2Y~)$d#dVJbJ7V9?@ef|_53F_lOX?G7HAOv_`Ve-Ld!xtsPl zxl^UWIZG|lxJ_Kjm(n@ZvK8!=S;fQe)qsm_m5jko3-w6k1RP!t1}SmkztKSVR>qfK zjf75~t(v!tHVZb0h>gSa3uGA#)*z#n^WQbp@?t)q+QE1(_y=)U-*v)4x!{mB$844{PX%0y{2YNM@SHS3en96588kE52Aeomuf5j9&<;f_7+7!8kXjS5y4 zl_auyy$J3Pm0+(kF z`+1k-jlXATCVpR%rXAGyI=nw1(6zv{Iokng3t2HoKV8*!Dr#_hRKM(t52wcCcaLp; zcBym;5LwzFYg0m(uWD0m;z#|zOTq;;c4H@Wx^3^`2tgreca~DX;>p25;tjyAc6EA4 zuX#2xJ{R<8C`l>!W2I1o4alVv&L+=mhYobo?u=5yQTm`zoLW45uTVWHuDke^CBJ#A z9{pzK+*;BUO?iteU-g+N zIH@xkFSg8+E^feg(WO`t^o4g4`k@_#v8qCl_9rQ=fh$=CS*F7zzZ*EIJN`L#tt0+s zAb1Kv4`OB;!n@w2Z7&apHtw&{NQ|kQ>v{q3FxM7B3-d%s)y8|;urS3XJIMQc zCuk2iND`-+f|Ck&_Qv~*nr!X=<_zrMzL}@XqHWl676KkpdS{3(F#koLTB7(?SspW7 ztZ({W{d({;evW0Cz&M1hroe#N$aA-r7?M*1!{_Q~`_>wo*LfDTlAdC08MVVlg(#?H zg7&Hq46MDwsPm=|zor$;)L6y*N~E6+Uv0s}zqG0<2CAm6fU8cr3GV;t+r+; zejmeyeldD@Y5~j7~yZ&6PbFFaINYDrK5F}@K81o!_a)?r;;158$<8f zKE6Cd=^0(DbLATdxJil12Tv`)i*BjOvQ36_n3@2FH4_u{?KRRd#B;J3d;Y<4xAokI zoPB)132Csg9;j`AyES>rX!;F)La>WT1b!0tRSyA%^Hl7wiL{I2_jFFe+~k%-Ibu+s zSJT0~^F=cJ%xPXQFftFK6TUzv4iXp7zPlv8e?rOF`FGMkj$VfbGb3BVuBz`F?fTX4XBc)1VsAn}WuCzP1;60$5DJRYdI zxxu`WDK&bnX3HiJGUgwNp5iqY{Zu7vHA-0^z%@l76pl;^dW{etSpW8!(s)%DX~1Jz zX?8*TA(SLbM1a7djrdpCrKnlXg4PEC57P(VOj=E&jwg=fh2dGJKMwKLjnQY_^B31p zN>%$|oc94`MKd%#K6Su!#@%@^%RKej;LVNgE5FumI?e;QG-B*7f&$(PoEtATR95rK zxY@FB%I`4ObuaSVWu*AV1tIIuE%q(Bx|9n`FuWYZweP+;BwkDuzCVAiX-t+~iEV9L zl`{P;VI-f|GI&7>UO(#$wx0`PWRd+94eaOrrC3kXavt{^<}EZ>&7{XoCK$XQv-MpA zT9WXCsyjrIFFfwKY&$0c7B%h)O8fY8EE^@Ql_8S&xQV>sHGSx?!H!R7e~Vu_vfWm> zi_8&Pq3Jrxv6sYK_d9{CqztV7uks{^7jHP;=F7)U?sjk7%H3&=K8)^f_w!tlBtHkO6w+AxWhktvX4mz(AO0f#5oH~#a zyPuLIX+~QyfJ-_$&zJJ<` z-S_?dey{8LT%YUnVb!7@BRk@(T1<@I-kO2ywPrM4y5Od@@f}rTV!Myh^xaJt@)>L}}X zi!fmq`!`i@44`~Y#G^+`Xaw0us5enOQuW9y*B`}I879xC)FVzg7WDbHF?K7%{MKMo zE*Q>=J~bGHJb2LYwI}pb+Ggo_$msiC*G*a8Hyj!BZlkwx{$-c>C@IM!>B)%9rz8M+ zX=r_i)Of=1hGESavQ~!?e{FORHB$U5s~^zItpPF3jn=3y(qyqX3ewBG+R}F*nUfq} zyYiZYWjZ+596Un56`HV`|u7H0N9yBckcYgSA82%QYVQv+ExvNlW>DkwvI&{*MPPwCL;U z>+7Ql`QJKUc1q_I#UQ9HyZebX$p&%vdI>zY(sPz{sK!~nAR=$0KhuqeoK6@a^v z_woG4OWqjV^T^4T)C^JNxyHrB;#@iXk6f-D5J}$oW}zZ$kFw#b@K)2aRmWxT7~B1w z1`thTAAcz<6mrEIJsZnG#<5IQRP-j~nJ8jw!)u$VUq=p#deN=r%loklBe;{KIw0-H z-blE`q_>(J+m?dnAw$Hevb%aL$*MrOoD=h&Y`{=xt{->yxG-3C+HU5ykQ@xuKshz~ zPsKG1id$cW{^gPqWD`BsBq$cW%CvzP-n$?OqOI$+%ynq*7>_PZ&~`g;GNt{nmefcL}9`z0QvuKh?u+lEo!Ktf{D&=9plw|g;L+-`Z!;Z@49g@2^CGOz3- z8$^FUdHrM*8gDc;FVI0+(I2A|C1?B}n>tHuX02Lvxvkx*`!)35#2%o^AJO{PoZ!HB z7H$y5@E-SD>KOzWT0?N1pNnLub4va@^C_#8_J;8nh{Tt41*@MGW10t_gy;3XH~5PhudL5g46glPl&=JrOLAR?CVIKAD7sI27Tpsu z?1UR6Oal;~-a4;hTAeVTFyqj5QlhG9ogFo5zW-)Tz)X1Wtb@19ZJX)$)$s@FK(R3a zIETA|hRe2&x;Cu(4H$=u=u=u3=#lL@8!rx!s7ajwCQ!*U zvnr3p9z0io&A<9bj#2KWHn5zzFFp@<2Cg(@=z;LCgYPs@<+l+|6+PDP0_WO;!Jsv{ z7QNa%eO+#O)$c2))CILRRDVUZR^q!tzz&>V-FbQX&b#Onv+6Oc_L=YkdH%G|SkZ3% z&nS^Axr14gvXx#?QqVY9g8ckd-dt<@Ub@%7}#f0XCGBh@&PnL^LIm*H%+RiWm zTg+!?vF8Xm6i_=D0DfLm2+-||f0g`N1hN0)Du7Yk|9$`y;(%2D&;O867fCs1 zT&d@c#1V3mCCCaQ&lrkC7cWiOUNQr8OM-S)%%n$tcL;a+?*91XUp9Vjx&P2Qp2RXt z!BMCqT~;E3B-_TsPX>MA+x++{Pb(eV1ctqHd${Ag`qF_n-2xgd{4?$C=cd6&^9v`@ z?bj1is9z!8Wo*=p|JL3VN}t2gVAbget?Dw&eEZM)6xZ9Uq_wUMK@{nxuz{PDEq~-Z zi1+Jbv6CQdg9xAB4TTLt`_a>Co|WwdxWaqL>T%KG-24_Pn{_ztfVc$z@4*aGbY9HeGoI8bKEia`+az47%pdJhPT^=fE;geUXLNZeuvE*v0c|>OgYEsJYM6;?cBInupUbIv}fkoMDQr2(-5}D5h z9Qsu6OXY6NoG3C5CQo0p>q7qpU&n?4*BI_VEZc&7p;g_S6BPK^-Dur7YPD$9G-f~P zCu6M${myhG+_2shLi?(A=AvcITbwBw+90QpM^?>dd4L(&CaHWni`psun)JG3dGhaU z_yGyDIg%TmRuhc%C#EqehY1v|`K%xTW`6!Qxs;?Kb>T59qqcHWwu8~(GXEy;wBl9* z>|>$DQ=CDwup;fLYbA?+6q$XF{HjnNn!n6EUxFy|rlSDgl(Nw<+;HvvbLB1i8onIe z>hw=Swcy`g_IYjACX5ZDB9k@s&-NQubU`IdG*cSQ?zgMe-$=OJGT01gu}&U|8;|^v zbJ)}Ia`MAZ)V2MNg^|LD@S8P&1vff0gt?S%e<9I8HXP(9Rk+0BqKhp;2mi>WxO@Ep z!d^@($h{P)lpOK@ft?ziM~ijZMzo{~5Q1G&1q;57{E;&^B!wYucp==LR?8I1gM{Vh z+5mrAf3U@dhbj2SzA-Hpo6Z{K$pENLDW(NRapYK7}XLjK^4z#Qz zb-nQFn?&QbhW!mTcO>QyPVY~wCa7&ybwJs6oKHR@OBAU~%>A*#u*I%LD43#$M*6!E zhe+7f?5ph9r1d>qA!l+)FSBE3PyftO|2cU5sW2Drr#p6cJDacVlX=d{_sx?H*&)bo zkY_;e9o++;FuM};2Q7}9KHbR>%HrYPOcmTSCANj=(YC;osUP))Sum@jD)7@INj~wU z9VWhN?}4z2B~v_;VdDXx2M5t)PCn`xX$SU74!Hrry1 z>~>BKtSa~;2hPy7W3i4f+nzEMssjgnLIJSPR_F-6*Y$BVEl;8|E5-FCRZ3GzAtN!y z1L}VB^7J0DU6<23-k~ra8|Y<-F%-A--ww2{@W1t!d{7(d8Ya6EFWFToY zoX2e2B*3bca=@nhBUdn=8I=YjTXAMkI_qCEJx-DNMG4sdfwn^I9+L@N#ggT8_OAIiq62#^;f7qoRZS$O= z-k*1Q{CD{MmiTsY9Js#rWG*_NLDSMe$7-?`)h3eQ@5m*-YV|)sYFl~RB^S^j3+|;l>4;z<5nA*l z()cydk>V+(pJGlwa3)W$psdAlfCU>DAVE`@r{Ud5Z@2iRo(QL&ka$^Ujbc z*etIiPUO~Jd{cb5%1cl~fcYF`rDvA=&Y9WD!1Rita`y_I+!?xB@4l_rVlP3iO8f1! zX$#vr*1e%XH36DPg1q<>mZ$PvE3kdjlV<#b{d!C=Nwco0m==~7euN^inKvyZ$Q4{+|)NWPESU<*_ zFS3>VozL;0r+NkzH+~FYn{_$2^G=u9dpxd78W}udNG{tkcP4~u01FLS93ghz z5e*XUCc?Msl}1fj`bHC2jx8XB0D1z@GzIKD>(ndnAWuW3Xo4|dG+keE5I88a?*>U>!6?BniyPe?*%NT#>DBbQb1GwUgAp8 zHl!#HNT1&KX530TPM{@eO|Tyl9Pk4a`LV!?SC6fT$GbJ{#L=*N%{5XZwDQ3pxhSxO zrIvj}Gc3JXy+tSeRBH0nLg&h;AI5ix@6@X8qQQ ztVYoPtTQJX7CKjuXpd;yPO2Q7Dw1KFctvU9Rhf(rxMsxD#ICo(td9wF4NwzGpv-SE zI7-hii=4h4zpi!5^w$ad@1?XHs5c+_OI@TdaUNF*rBLhe>7p;)J{J-LToU@i6$BFI zKKWbhrD_LpyYkzDuTV5C6ngh>BF0-Dzq%P{MZEk0w43l$Ti-?T%tb5{OeUDinFI3B zuSM?f|K`)@&2KHb5^@DE*5$_aX+6A)(IA`yP*d3Cj4YaQ5Q4MVMIX zJccGETTF5|EbX;<TRqqmpQWGN zk@8wwn7&#Y&Aw~rr;5GUdFE24x<|@+@(iOertKGwX9W&5t!iMf=i9@^HE{)2M~N8E z5PFGq%ra+ja|YRRScO-3f27B4|o;ds*)qVtlooH4N)1)t$QbH&_i@OYW?rK68NbDQ4K zD1>jqkAgI(h#a-7ksky5W~%zN!V=r>Y_zb|@ws|edrDuV&aA?&75$Mz6jn#wH)|4D zMH)TPMcP&*e_Oio-q!7|rL$}7T5cK7*yS}nADXG{zoeqq#$ZH@RCCwvN4TW^E`&{5 zmeM`|ukgn^lg0ApY~&~|8ZPt;o0RJFM{1IQWQ1zP>lCWN`4beM3y@rpU1I#md6s4E zelRRKQhvl%hq@}-!>-9W7>wt{;>*r(oSMlmb@n!C+-`e=fchE`NBaB;{$N#wN=r2g zN=oc1+NJB)U8WrC#0bRv45Wb}*HkFd-OdXOla@VL^&+24XJ}V89E|X{-0N+Jw;ex# z*_!jx*5}4A%T6b1zk&CK?`57s^g!68eJ>0;Nox!vS7TR?CK$i2DU&6PuRaldDt*cB zV{&S5>;|ETLI<)u0M4w+$@S$;Q))dIkbz9lciS6q*9E&(`CE3I8O69yT>2pK=qKWN z3YdK&y!F3szG+cDe(c%1%EnZ=`-D|r5_4zT~O{7(}6@rRy z8wNpzmKlyYj2Gysn(bRt&iGybcX{A_9I6vYnBlU}yffG^G3O!V_Lo|zt8ndmoN0GH zRIh%b^4?|NI(aqDm6`hyu~f6}aUx#6&)GpOUGqU4$!?UmS>~}NXWZWA#Z4L+a{f6> zCc}l(0LyZfsT^f*@`!1#yB8%4dSKn;=q$;CbY86zISi1cO6VH3!zG|NK)a#C<`#_h zUS(*MyRgqowPQwCsuj(<;M+N@gay?Eqj0B;Tt1rxkgGN1!ss~KkB?IsV|EhC* zu+!dqBqpjn8LFC2a0ovWdlc<`-#){5jvUU+SFXke|BV%$GBFBJEr)0LcT*lfj=A?t zqXMR;XXicJ9cev}7NR_S#=f=0VZYP1`51U6CD*-u{_F&{3>%$n1K2u2^HK%Csu=k=gD+r?i2Uv*a_$YGau z!F&093Ja(IU8Wrh51w~u#l=D@cf=R!ex*Lisy<+M;VsGAN~J%iw&m)TlwYm|2Bv93 zZ&@+ny5z89Kp>GN3?*xEnx?u6O#^91PR?%&492B03+UX}z3dL-cJ-!Qq%!-?_fIZ8 zN_UrAI{ip%CLL$0n{d)GtSjZe4FA8F*WM$SPO61mGTg_HnX|`jym5~-F`wFwkWZtr3)^R8&3|TF7?H{d1#S-U-I*p1Nt&=!Pf`nj_uAAN!u^Z@u=JPhFfcoowkMHRE_^?kws5r=-G7MRyAz7Qy_`b7iph% z6J85Os@B7!8{38nF>T`j!Pn};KE)iAt{|V{byGU^)th&g+@f<>bjRCgg|r-0UF2g)G9@rZf9q)b8k5tB$|l@0#A`TBXzM;aOS&=>9XNr~1ofW!E*{DI+cfxX?lmyzs%4d%A5 zGb=B1$ar)}wB{|QwQM+1kT1h#Fb*S4$Oai@4leXedIsO>e36~Hkh_b0M*sTMJ?+_f z;Y)B~kNgV;imDTQy)FCx1DBTNl)Y{WDqEw(p7&R4=|y(&YcmI;ZVa3QC_XS43G0~w zT7R8VVV0Fv$8HRKp#Su5inrQi5S*-ARCByOLLtZaW6bP~dggAI8pV)jgQPcb<$mU1 z(;O@of!e$=lmW`V$3=DI=nk~(u{;tLCX~+f>8L&HI8UzV@LT$*bFp9;_usJ`@D*H`ZeuC5-HCs4Nz>#V;$9{FwknBbUv6hk+N~@;YaDO7 z8RbmzSV-(M0`AF<%_e1RCC>yg0S?H~g#vbQe6K$wJ#1^i0aS^zM7kp7Xam|R+SVrcE)M-N##YoDOxR{Ue^T9YTxt zqCZ@%R#qfMPpKClWWO;hf&He=E+KQ^TYwvC9Q0cz5l##sbWSCf9IgeH1v zz_;5}b-DeBR#m7o`I`3Zon*t=(&x_Hil$kHMwDTsjN=01MAwVd&8&-VJKBv~OwLL$ z{u%@YUPBEl^g&Q$WE5u4%>>UAu@ra7y&a^s&u49a<3%L0((Edz~L1Rj45abavbA0?cC%@2^$+KiA7U z{I26zB~8y~Z4H%}TBp&4p=qk+UJJ2~#%}@lM(rVSal8u5BBA`@&uV|s%lRi`+%o-x z&*2W?3y*6!oD1A8zkLIzCq-Fa=S0rNnXclDLxhiGWzZo;x2>6vFhX`tRM*Q6gIAR= z0Unr~Fe#))ao*sJJW(6I`win{Y4Xt9QMDzNrEQ_wtRQ2I7vX~{7S zue&yu9sa<4TRZ`tR>AyZ0v6=m0ewWJQ-d~4-RB|}%yl$m(^-D*ud9Ql$ z$~Z?UUI^_h=j4Ds!8oUAda^P=a+vVX%)qRkfvMSpPec}^m3>o88;4Y8N?OYUn_W() zQFYl$MJms;jD3vET6}+58Xo;YD`NI0aaKw950IZ2r=(`z3M8e%YHu2K=D z^81fkKP--zQwze2alr|DY58Ya)v!mVGeBE_n*j3>qR<4Y31F}5Ai`VFOA7J>ZX{`g zZ0NWROwH2A%Z5|(!ozWY&9wro6b%h zo$-&f@bwH$>DGwt+Y;UW*EKBqLG*96qB-So(h`wbjqwSgU&_`-X<5i#-z&A*jNXSU z3^`^ygv}REHK^sH!_u!reAtpUbAAzX2GB`iTV*mCv>=rX*Q)g&!LXQI6#{d%b)&!3 zVlOF0P-&s*ubBDm)$1d8g^}@-7sidfyOrE?G<^Vn5>e_R+!Il#A`)jFzD1m2&hK=( zj9fM4<1#QxvJ?~LKH_o?md+dgm*4p|cj3;4cd+-VIxU7LQ@?KfM*ooV&A`&TSX*Uf zjmek=i1ChtbA>BU8RD0Uw5kq~RGa3m>X`=iCG=Y2SDkE)LG>SAa`e*;hW@N}*uF~H zC0agnKP&o+%;`fq>BiMBQD0s(94`tOSt0w9ke0dIz_d)bOq9Af_S&)a3_aF5fwXOyoamyj_O?-{9Dlcmt)4?N!_!8q2BxciBid4BzD3v|on9Vyp-E4-KLS@a{Nk$_ zH?)%Nf%p>4`#RZ6L}}-K3Q*nSDyChp>dt@rIMAgschHznFfw(YuY^v>%H+(N z8v}hPs$CLc6y(ETd<0CHT3@UIvYNZ!thkuj{Cf`Id%bF3%UJ4Zp>Ds%Z`O z&67-MEafRHLK+G}!aL~&&@zjWI7}!ZZenz3qrvY_+^!>dmY1QJ&X=$G=#T!~QCoD+ z_gH#+{evOK)P|KvyvTMyU$F~VPpf3)0gwx=lHNr}%}y=6tefB_$*dmpa($?{g^P^Y zAN(a->cT>|5UGBn&!|Ay9dxBg@!v>iz*J$48ECFhcB8Mrm1rEg2;`$5&u|(%1s8|| zxaS<6g(WngJqTXBu=wINqg_nh{?Se#EPXdkc=vA*Dcxk{f8@+&J|L^+?@&6JNZ+|X za))T~FYn_nfouzx!Q$fn$lZGZC&Nz&dHIY^Ex^{Jj*=S=PA_a}1ueK8Kr*B^d_U+n zF5XvqxyI|~u-Vt{_s<1d7paaAf7Po(;8UPC>Oj(Q*TSPSvjuNMG-8mRfW zT{-x@K3o$uJ22?Xy3PY24IFyS z1Ua`;uj5gDspR8M?APALxJwCJw@i+-S;zw8s(-sg)teR?U$JUJHcKlPMM0n2joO5Z zeqV@a|GyHU%NC_XFBX7Vk%H&{z?8F=S(>+PC)Cbq%x3;9OhkipJ0X6XSDn`o3q7q7 zHwdOQxMR2g(r1WwmNNi7rt#$bzwaX0#69tL#V9T&e94)>1=0H}HvcVuJFFxup<#gpn_471Wb= z^>lk}vO@CvBsY%8*C-fY9GDQq?ym^J}kj z_w{jo`NStS`^?phW*r!#URs%wAeFx)CyQri%5B={H+Lva4Hr;^%Nh_DQ?rG^;?gd?NoOv^ISq z(cM!tMVfNQY;P*ZQ7ydOyxiW~*UdXAE1diz_w=hFC`uIJ>-wRv^7llQurS?8!AfXo zoIQWQt@+UmrP^+Az6u?!woe4Xsw1J&WAEL)EulvT_;}8gYv)+m6y+DgPE^D*s-egWPz3;>ZU)J!t`I*H3BLBpE%LLp zCVU8mcb@!&qC{eEBW;hgXx2mD=`yxP|C0>0+kgPX$q;=Jf|`5~=Qb6;E5d5S|IML)Xl z3<=%mI8iU9A4ZFIl~edH)xZPv24UxfA?X>ZO`Q!O1OVP$%OsEC0K!lS!Pl(s1E5w1 zc%g-B{1U8&40Y#nDCL#Q{7$#e9gz#V-@*7KqV%3Z)TJ2EAk?f*;7=%#J!alc-RxTN zEix@dgM3%9XR%hy1GUrbMhR`n#YuG zT;13D;^6ynW8^(DyTWefyuH%XKItL%d}v#dMndRstF$2l*j_KdITf|dO2y@PrE^^Kn88>e?;f|pf!Xf zIP8IybueOYe=-}|=K3*Vr&d95-!^NN2x{SZk{vwg#mQ%KjnG`(zSU*y$)IkfS?qIj z1Dlb0!n3fG+i$9Q8o13wlT@8NfhA*VrtBH2>x%jCsmZhQXM>xCimhKuv%EcueP?AU{rx>hppqX@Oy=I4 zg$KT~kS^qb?wGGdqiKWm7EELMs04W3W$fHMfIYrY={j!`w2Bw`bwW6Dk!KesJqtA% zRHy-{whW{}v&&2L6_Fas>cs_z#;k5EuY)2sms4c&inRUw7gNeKC#R;4JCz>KeTkccN1XdMTVJMS8nQ(i`#$9<* zSmG?cC|(0MjOvT1J%2boZs0oK7N!jPCq2kCYP0Ic2V-=2L{{Q^f4pNsEW~6q3K9Pr z2N9a5?kJM+RZwe3`7FE!#k9I$$hqjLkL&cL{C)dxTKX*>-%h`}G5uQxIFUAd!x!h z`|CcdF2|~Rf()eh4J9v>E-@QdB5mi%2H_5st8wPSJ+=r&PO}8xclX|3n@zm;W?3Xr zbg(}Qbk^FtoKIDp*4#?7X8)iWjbZJzM^PbYo;Cg{Wuu;Y+y!u;gxqDrKjt|TheqUA z9Jnv2AzJY$p!?PfE#a25X_WKLI{@&^s-p`Rl;cEsxtIF}*|C*8&~q=&#>defBeapN1# z%F{I3zC#MkTPPL6wPq6_!5n<9T*CRp8TvxuE&GBzPk%~9JyEcGx^MHTnZ6wjV{aw% zkU2&VEaj7!ZBqRM4xK&Br~1%HLW)U^*%apiX=z(Myb0>fBpu~HVJG&9a->FXvs&NY zx>Gn_o6!$xFZ#wn$D_tU(Z1FP#c%+p*^PsnU!OH_EqICHKVe6!)HfSDIyNb>5fuTmRuo z%45tXkYrzEB9T|5ehv|`5Lt>IqmgI!B}KgWqT=WftT2b6hono|#p-pyT|Gf0OB9gB z6DTC=iuBiIgpJDtW;#cAPr)wm`TzYy%*SZp#*5Jm-DKYJUXFEo0rd4P zC70`X6Xx(zf6_pGt0A~b>zC-^q7VR5f}9&uG}iRQL=`o0iMUqffp@u<0fTgV1}EAL zJnQiMts(e3Ddw5TdyY5|$%r@ChhTDcK7jKTA0=$zg z5h=UUKA5%(+0u>bh&j9&Zfl0bD`|z=;G`F6WKh6K20w!)glL&uTboMp2mBj%W#u;S z0N-LSgI{^bvLzbG-wcXw(;8+jb<`2c_w^cJJ}! zceqdE0f4as~Tz@&t67zx6Ow^7$Tshk$ES$&1u&V9h zqIB-q6jKpkA0m=xgk%C)dD4pqT?R|$13bDKM-g&`k8p1R-?$9Qmo9IH#xg$a0E2=` z<+sVQk>omxQI(U>Fz{dt)ANN1sGrknDZ(|03wA>~+QLBDHCc|l)ERyT5c@6qGqk$a z*iVNeMgPv3>g`5MOd(sQXeB>owl}O=reCe(O`7U1b~OJZ2dxK6EWE*>N4QMJ20oEO zCTP25yU!5Qu*@fJPntx{5mJ1TheRD&`9xw-cL&z0lG$Lp>ptDt!)g0qF8xiyw1iqj z3on{JD_)db!KgJH*(-C(VB>KjEinCed~x%M9MLNWTMQ)d;#|?h(_-S-4Hg?c^mYDk zrjZ6^QXsLq@2uKV9#e6Zj3#?JD9%(*T=GY?o^D&ReRPHZ$w?!RErur1IW5r`tRTJOBlK zjK06*LYn|3Nc5gM!I}9IJoQFc>WU=3#g81M4v6p z1kPZxFAp^@HIN>HiAY5KKN7<60gG7d92wQMIUd!s!APC=!<8IW}Bvgy{dEDSH4=kQu!RnV0wScma6Y$%EP@` z%oSW@4XImA2bio+0Ual2*AI8uuk#D59@JQ>nsg65>wT;}A8EKi1`%&1Vc%B~Jg{Q0 zL^3-%Q=O+2wTXQAl*1dXW%mM+<&5bA)CQ~MJb^t|jbLQt2LF^c0*l)hlt2p3gs=~Y z5db3==AuUwP|#8Zf(CCN?f~QTz|dk*IOu=WvSJ^u^2puOeCc6e+oS@IWhJVV+ywf( zJ$b;@Ao0D&n)wat+@8#>CG6r0uFN-=6W8AcOli*<2w9=fr)}ycB=cP}z1&o*lQ2&y zH($P8J6Lx5ugb|9@53WoXl-&OiqkGJGL8|z^OvbPLPoxXKJa)iie4|`d+qY}(LGqb z0mlSg!$b6jq8|=_)s;nHO)~ZW}VWj{K1W&=IX!_TeFO5PT31{hUEP zqvUB-G08mu$O#Fq7H>-wQ)7z}d`CKYaLeZ}A640gk?!DsFh%;{tUo|O&a%N&aN9u% z;E`JyK<$)%mUO2$EKIQWIJO{%m3+7AZmY(+3gpVrV$Ra&f2NWmGB>19lj0jJRwsYj zACI}~;O^EmZJf7xGSo0#<(o-c>x6@hMFm{O$^(qml!dr~KXRYj!3O`t#VjY)r>vH} zM!=6NQW9l}vQ#>E<#2g2ziC>5{DtA(3|3zeV=EYN)yjrB&9r;6DCjm95;B_vkx`IU z`7aS9P-`@BGB1x8 z#Yj%ofq1b2bbeQL!J|HsV1vyx@JKs6+9o-LVNuYeHiU#ZQRSsRrpm+qr0sB7lK_sX zt8JMBzB}Lxk)^u$4yC5^CFJkFq=zVX61|t(k)BeUQY?Nk?ClvK8gqD-@DnsIg!BV! zuEY%sfngE54iY&pcQ`&}ZQrKmP%>OGwY@rMje7C4`7D^dB9K?~I!Caol5a`aL-c;) z<+E!^5L|hTp$C8Ikx`2zC4;j%b3%k&v_RMUT5?!ij2!?R0yUHKS^h`+%>61i$xexv$*F zEG^F@ptl}Ii=YbtG48P+PoUxT8$-2c@yNkhGKlwBiSsl8ao zF?(ONB69QsJ|${$0F)6jZhQ#y!0+fEy@I$-5vc<6Q1+hbjz%Hh(WrN=hL-A*6BNz( zSUCGr+{Yz9{Y;l>am^(c0U6Pe2XqHAHT+cKKWjT*i;~nQA`wTEq;F+!7#ROxVHm%r zwzPjW`G6%_rq&HLcWB)_Ha6Yd_Py_3QJ%oG0uBR+TfmE9f5$|W;EWa@(l;7u-@-&= zAn;)_U-sXJ2k-@*X~8eZ z$z-(bVDl6_x5G&joST$Im<=G?*V^GZm%wT1#^qR14J--of{pnUkxmzffB%2qzDA2r zLyOLnvSs@F6Q#}{=g7n4XE!qrOaaNu52M%y!H#w_OB>7cUrXQIw9)hY31%ys)J#NZ z6PQO9#hojllaZ_4hpyBs4VpF8UaW1gmgD>yC1FG5(SzLA^<&!=i?vaTS)-CU9G_z00TLZOW@Tw;itylx+~T z_23HFlkULS{>zFfgR2l%rM7{bdDZCUy1Loi57RAwL{vS|QK;#WeQ8Mv!*% z{{g5P^{HVbTRh>XP6}yD5BvP>T|hDhI@BMr*|_K1zG0#d{i`gAZ^Xhb6*;YhicHSG zv0s1*rZacZq4%Af``M!13(+>-Vq^9lUztdPwdHV&tVn}w4|us zJycyUx_4es2D$}vo}h*CxWXTW{Ui4;iQK=|OhV4vfomR_%hh%S?|jFVfUo8DmIui0qEW@6Z_Vc?Z+ucC-tJVj8vpTixG+J~&ZF3E_FcE;W8P+dqMI2U41BfD zZuFSAZKPp8B5<*JW}mU-NX>PPq0U18MxZp3ToJaHZ`L3mSgw@fVNOq2KO6@}fj(81iO~|ZanW>Gz zgs|)czU7|hNb?xbV0rb{yYc(}O^lUAvu^EbO5o;I`loaPn2*OG2T=OyFZ=LqK7mF6 zDx_f)m@|LmiU9%J{f`{Cy6ymIO5su-T-x{yYeQCW?h{Ur$B19|(SVo17uP6XqkG589@WFW6UW;>vBhICkK zK26xcss7|d!z1MTE&*uC#_UM(1tnuW3bhLule@Wrd&2R5Ywjlg_kbrKZ_U4y39_;U z`Eive6q$F4Kj@j!ia?Bh!7MUJs;L=yEIps)=;)!08Xikj_I{~y7jrAWyVmHhG0N$< zj(Y#M3A+m2FFc{Of|3kXqHCvk-R5mU@T5S`>zGhposS*BKOwCd1G74OwLCmEd{g=P zBi$M$$oR9kg&T|;BCxNP-7ILTZbcM+YLtzC@ClS$5U-E$hBs=Da-ui|a0mj8HM08G zLJcK!o8oz|L+v>d9`WFhb>;*s3Ai7X`w8~Fs{`~+v>>Ub3Q308iOaqw%6humd;TjG!ezl3=uKc%TU9h=lkCsm)CG<#~^`zrlW- z)0o`7-+fekGMC1OM3GaOy)W;86zM!D!<=m4(-I5eJYG~yQ-RyEVX?8Xh>5KHw^Wv; z1NIr(2xvM&c#y?x4j#aY1)%V;u((X(?W zEn=BupEc!S597NbPmO1K>Rvs*;t(JVy` zy&uS^2~U%xI|J&*HChSnHksJF=CY(sQ(qFy<8S?AMW6d99C= z#uwniu-YwP+F7gF#B%NPz>oyI%8D)0qB~Q{@8vV@JJKiPB@XS#FEJ@~Tf)EYfsB*^ zVphZO-KWtSOCJUfZs;Um5op>_3WvstuRdIF)wGSTNH1)nX0{-WOl7F=lyq0K^qA_q z#6+cu{H5kyWu2*bb5+Yfaw<{^ezUM@v)mCrSQ#B+ksTI8hzgPu7Qwb$&cmsEaqmJ%i3$DpiXd16T^-VbW zdTsHh{#;<}r8*=iNT4{AX`nRSS?sZ5@PjYE?FSmAFijR|YZb=>5L|Dt780y3xmNz&_t zu>{&l0yq?x_Q`TcjR2qpfURQ*GCO7ij&PJl4drfHr}{@)evzqKC+=gyuYRb|p-Wx; zgRITAQrtFx3KImeQKHA}3k9)OLG?!xE>k4W)|r#?N#B^Ncc5G7Czp)NNsfMvZyt;P z`Xi^4z9hvIH1^is8x*lU(ayF$^weSAlpA+I;L({=0rjGnB5jm{rJ#k~R=r^IUfO`V zaNp}@C+Wh-3$XW1EApmscEDY#sZNA?j}k`!5G}gGRv0HzcjI&Vd=RqU@97ODoqIqx z%XXiHAu?StXE+FaO@$=@pshjy<$w@xhaUI9&dz!TFi5y!py7^%{G=D5u{{GHR!_=# zk!jZF-dX=ufa+Ais|&9I%44t#t*$l>&KS(W|jORdd^%}tzC@gtsm|0{S4qA;emJ!*}&lX-F9A#VEt zY5rf_l5OZSb}mEG9zlFBkikOactz3Vj4D9i4mrL%#^Rr&GRr|pQc7F3l3zzn%`>BO zmI1C=O<$r_PQ@3{?~NY}j*xA9J+QepV`O}8dUFjHZtjCUa8YR9TSTG9a|88dz*b4DBdM2F(hE-YKLllG4R6YAyi&V)Dm;0)+ceb^iX)%g1%<^}xjQb!Eev|^g z0`}ywfz?M%^?>++!Cd6I{7{`KJIm!GpC^hB?qFqjHZfiFw*s&Q=E;8%hrJxO6ly%a zgy@bQdWBr<@TXdXI9i`u8Z1 z*e}1-te@y|!?e>FA4ZrW%^$(aVIVE1gd&b!wRa6_QZ8LwU0#q^C%}v(&37N?>fCls zI;$RifIGLuP;mIPZ~A6RTJQBqUY--sT=7WYwy594k_zQ(SjW~i~QrDBBtz1E|k-SB`po^&20jI(-9oe*F?;@ zL$nvwE%Ww}Bpy0Jx=yh|HhIF~i7y$AxHlj(I8krSPy?HsU?zm%g``F`kgI;oVIiTO!~PhEL7|Ql!=7%G)j)O&+h|pgT+gEZPMV1HPKtY7*umkQ(dG*_Uy486 z^eM6kz_6sj$fvVNK9n*3C>LqOh54bkn4G6{i{h#`fX99uhwNpD!GkXCjE_Zi^h zuL+8A1OJDpF9Ca!W?J4-wh19BlPzSK zSJtvj)(L5{@5UHg7-lexnP;B<+xvar@yF3|Bs}YVU)ObB=XIW^oZzOP>EWcr@ zvT82Hgx6Tu*MCtP@yoN4a+DY9JKIpe@^xfU{)r8|`0vp_BHEAvPdJL^*&ro#4H=YE zR{()+!R4hUl>a-v1eQtR2HA z$=0h6pMaV+DY*`=rL)Zj(T~?>6*(?dfvL)1R!M$@XlB(%D4(G}A{z_Ig!_7k6?1lA zvV2nT*iIm9=srzXBQ0pA6R*3niUh81;A)9ap$e#4zftlDvgn$(fU?|SW`Im)VdF_+ zsJ}f)2Xt?(`yM(O0`)s$H8}Ls_Wi(mb;sJA^p20H>>eMThc`fEM!LM6>uzZvJ8f-1!n+R&lRUKy;Gx%84rI@kIy*67?3j3N@ zh{GT#$JqU9k)I0rd}r430$X@ZzH$GI=nn3^P=n}0cSaz-K-uoiT3rb&;W*I`mSz90D@?1nH?SAxCCOn?D$2RbVA29$@i58j+4;JYQ_DP=wQCb51hD8S|J{0tF)a@~i~G&}E+0*v__#Qh26?Aat$Q zmLI;5kx(5xj$FM$Hs>HA@hNIb*{hqy?aRASOfOo=iK^(zu8lrWW7y*(-70Tkzw5M} z27;gR@y6OzE28WP9Z9@4=m>B&HAqN){F37c9J1;cg1wM_etjW`^QX5sTer!bE!FKe zY;o+|5|=q_(OKT3y73Aye9MjP%sV7vmAtNRJ^_4GZY&S1i#!7hh6trY8;+GJ0B_*W zu^}<*qTIj><`vaD^KP4*_`7ts6U`~@?Oa23!HfBm<8dQn!>jo@0{epxkH!FkL|<+q z5Q&Lh^+zS}LP4o{o&&IA^_`*HWjeSoSe>`^21sfg7a5IK2rRBAkD*Jv8W|u?OT?5% zudZG9;ss0RANGM}8}8h*#=G1O5m$?HAQt-ta8aeaP2ks=apWKE3L!+DT-VX*WCB~o ztC(PkFM3Bd^gY6X$VcMKcx?|XP33aIT#kWbDMu~ut5C_&|TmYCMQE=_3w8X&sTrrTH+I^ zRtPzE>T#Xto($m(p1(++N8MT%WKw3nLhX46xrt$MLqsx8Gm#w8TgSi`F+7lsDoV@U*{zksG0-q~VT} zgk{U#@y$2#RuH2*okzp}Afm%mg^{z715~}kbXF)SxhDI1o_X|dUZmOU!_Y4un zFJRxJchqQkAUDCX?(or$bp|_S;WoY0>livjjf*VQQ(B<&6l-$9p6hT86s%KYNU#qt zDZwZul3LP9x5X8;F^`Vy$f(=}mo-umX&bEMPLM<)f5S)HL62i$U!WiwGQ#BO+DQo< z@ofN=DhaRmj6BDT(YsCa2lM?x>ZW<*-DwQZj!I#hkOx%FK$}2}$*xJ0hps>uPJOqh z!+Ll15V~8u!s+6C!-I!$dB5s^o{Kn}^n-tuB5tNy2Xlhe@uzuDYgYlM@szsoB7JT( z(YM4h1JrtZN=>fUjDppai2s3gD~}(OPC7!Eo_YDHk;wSDIb#{*0p7ya@|bYyYOB z5fJFkt=HT)aC)4dgEZcmF#_%^0WcGOjZ%hsGf-2CtDhSIh0AJj?_uxa-U@sZvLuWo zQX`L%YanrCy3f`UBvwV)&0I^r<+h-aG?-{T{*|1VZPjmoLaZvgk6O$Hp_uo6B6d9EZ@a4zS{L&lJy&xD5{q;0^rqjwgtXtGcdPFZC@ObWMf|vYyOzUS9!&PXt|>yguAtGg`b6EfPdN9> zksU}9H%*}LnMcjN2IwF1$=<4Y8RWJK$u)U+#|?p|;aIdJ`iOe~>@t~}YWv{@Y4+AE z1>OX`TrME$UcwJKY$iC{`X2FPA}Kp-1ETR>%&y3 z#_GEL5B-Mo^hc=Tx8{s)2WoFAY$OpQl;eIa>;f=GJb0_TV@Q1txo`| zej#UI){L;wU^c`jo3-{-y=%sjZY#7TU`!n{mLP*emN~y$AEJHI9QMDqz5Wgu<^idC z5#KUJo8qfrwmbVZ0w6JoBdTyO@4_dyMgI=&);nhN8IK65o-?Zb>exzA zRx&y;=h~q%0F<=&-I z*e7@gsvzrNkBT*tOtRH@!%q|;H4O}LYt;dj_!)%_z~;~5yjaJ)Ivor@t@{uci=;=K zNZ(*rqC;Tqb~cMK8^QPl?l&dTEk_9_((@v?D!{YTh15hCpnStibjenf7k6t|+h3<^Y1ent!>j~5j=u!(lhoH%kGrNn80c|3~k_tSkVmkw^GIBQkM)2ga8%z)k0?XJtC+Mj)$c@(2TVK?)`zypq zO}UE{jk<~+(%|2wmxH)9 zCQG>4-nv`P7o*&$b9qRes3v2v7w>~{**@$tB^HS%O8|NIc1YoEVpMr$7XKdl4y!Nr^i$BM7B6ZqK-ESwLW^;WnNH={^xSQn}W%vH| zxH@~UZ`8ZOkmQBE-9MPyes1@j&7yT8c*nDw5YI{52zTG=;Pe|)4v-44L&kmt@y0sp zv9bpro<6O69Kk|+A_uA8@Vj|R1(a~eB4bu^V)#pWNomPfd)Xn#i+OHmS3EZUq@2d} ziWzqGp|R9se%=m)%X*T!?oO#cgBnCuYu@$qr!an;LwFh`4~u^DA?WzYpemtXp3nzn-GQ9vFAOl z3+YKJFwE^&860R~+_ee%xlh(7uDbY_-4D8Z0Y!x8Wp*&A-navtNsmX;b}!PxnN9rO z$4?o&o1a46+U9Vk?u|CZC$KgN>ZR9bzkC4@y%Q&!g~&JbX5gfaX#g20s0dtSM9xs7 z1baNYOTBrrq{cSXh?WddzXHU^Q$Hu5t{p;6o*Fw8!;@oA8MEPNpgvI@bt2~b2lWNW zl=?+pK4m78n8NlsV&O1=|E&~EvVS`2sG5PyKReMgARERMY=;{{&~w1fkGoqRJ}!N_ z>ln6l2zBVbo^$xGkaDZ#0`#ED%G@uYpg=@4ySmENq>Z&!P}=9p!^+lv%ho&!@z?lG z*|*H{o%+Vl#2=0up*vQT-}zioVcFg=mGPI>xmoPy86?{f@p9dFswp==s2Ee#r6T9< zC71N$ZUQm)SOptT-Df{`rg$w7?8YI7;u=ODv~Ex6_)YO%y0;bxq;I*z2w0)2SEIFA zWA{bQsxe>({5>stev9vtKK6bic+w9zLBL!!{t}c4Vr0w$yse+P5e;Tm5sL))cuj`D zK~%i;P{vY9l}<{FQ^&(WLT@rhW4uJ4`IP2e7C$=nwfxrtVU&d23FOq!#ZIJ*S$oWALteUzt~zeSQi2 z$*GjlBBV%_Ju_Or9#&{y4vn@lZlBAF;Ih~q4ik&poid#(w$|{Z6ypb}r`Kl36_{CO zVk{P&gSKiIFPXi0U`zR(1k#POXep4k5P0&K1|o6w!0KN2#UO9}c#!Y9d2F)_2~V#UIDp7$hE_Klu&AX!U9p-Xpwu>JOj1EyL-z@0;H_U=p$-q8_k?=3h z@jTbeL6*1T4cPsG*0%T81R|ac#DEgKg9|oSmL#EGs3JhoCk?vh*`1*WnbUgZcLY0@ zvtBeZ3E}B5Natgh2v#k=E^RlKx&-v$&Tf)FWX|I^vkH)jcR1zrJ^*tT3A~@(W371L7~k9M6;?dZIleQz+RBcH)JgG)Q4$kWp}!zc0`l0RCgje%Z#A|R zbiVUFB>uM=-)WMf=tPtwCcK_Phg_Jnghsk0aRcwQdz`y~f0tE2>_ZCRL+P}HzqYp5jBlwk@Lf;3m6;9{PF=LuC7YriDGvS) z+@ZOn>GBirY_E?C88}x3pjE%1np|O-cN^G|t&??#|Mv;3)@<)tSd_dT=Dtq1JEH+? z;eo&C60pum>#_=K(d@ZtDCHUC-H?JVsJ3jwstmCSXV)ZtL z+CvwijOIGYvd@>V7nSS%eiE{IB@0*nlB;)c!;IPj)(w&tW`zMkF;f91oclKPB|4&e zu(jfqTqTA7y$hng3tyZ?x6+*)%;2rhK=os&8bJ?SBN#5X8j zUogl59B1)W)6tMZ{FASU$7r?h2Yr}otJ@$>|j zg49+Xb?DL%Gb^j{bHgX|NT=MYeZy1rE@P@MWtbKUQWv1(cj<^qt9imWE&9Js`Iaz? zZ0IH^8`GDJfxau;z|Jh+KCza6Met!M2BD`kOB-1FcAeDV-A@5j$yjf>k+fj1nybdE z@1N#=qy4Kf{S}`eRnD(~zW!2*=!o8PJuH947fL-Crc{p&9p;lFzpnnXpsSJte4`I6 z+K)KYG~Z4*`}y>ofjPNDWzcHnL_Cw*9aF%d7xmA^l1}{o=qE`#a86!i;x&h)&%)}^ zL7!Y1^>@9upppnW#-kun6CAng;t>G>NZ=Ln5HP3u7)+s2J?EFvz4STgQ$IG4)K2e|7%v(yTI+U#H#Ns#r5}ew;XkfthyGq`6>$%XG~-o-0tvBV8-* z;IjVSY^67pw`2GyQuzOrJnfZS`lxSd@Mp~dOXfn;k?L3L-}8J zli4x4J9ENRIC_)epD;&4o|6c2{jEF`5-YTA{a71@Ip8a|V z=f4se@mSluH6_+ggSkjTf5~E?#hilB4F^I#k^n|CNm6aypSw7B3)Z9hV6)K0bXFsH z;xFM1#TDJ$0yTr4_RV$yt5(WdulyA&7PE8sy_4v-%bA5yr&K>mJIzzG6DGU=wG2zi zZYO17OKGe_qwn=c5id&w=)G>My{jwtcO6(+-6;UK^tGP(zZyNov+7JH&LC$GZ+;|7vBIV-Nrtx;l2|XBNX1W# zm-WoJG5Kx+$p^;9AwYdH-!UlTT1A(NtiWJmyg<1SWXuiY-8PQqc@c3{T9>DOwvG(V z;VA&s$>H{x&+;tP5X3?jUW$_mU7{R*XT1B~angSYo1Xg{L~S zj_K7aYHhZgFwwyU-t;^1#-T~OkXn#9C4M^AC*tcIZdMS+qcWx%y`O6Cb>NZoD|*!f zBo6HK4u~^RlHL_$X}Al$D{6)Oq;vk)x>JO&bCG4E^-AS?O6xYdA>;vU;4Qzj3N!4VUmL6aly;nM|=eHumxtEF%e$-WwB`p0_;VBQYf)tG8+uwAv-v+dP|E3;uc_op1y&6VPDKtAJVwV#gL>xve9&h#y1mQe^FmuwUqG zJ7jnWmPomUJUrxaU~G(8zd{|7_>af=+M5e|97&Zx2JI(+E{yR1a)L!RMzJ+X}G8gjyM0nVg`E zl~wkQ#`o_V8*82~jf{LfK2aXo@^J5&xypV!RHj`UR)UcTebSYVQ`A-;F+a$74zc`x?No;Du_Jf#NB@b5oFMTUb#1d}eC4%cAc}<5CJz zfY~AC!33JrEM9b(PsC|m&wdS*AG30P3!Ys~cS8eZ@X*{57v~nI%(v4^iX}jhZDKcO zttlRN9Ee%RSj2f}4V^f-JVSf^EA*_wkm76Zy&m5Unq5zfZkM@_00+R==aX=UXV9we z3Q}UsWo-*H7>KA0Ho6gknB7ar>*Q|pLh|r756pf$rk9;idfw(@OH$Xm<8G9h`%^>a zmvDwni&U<{X4ub2;u-=E1jZ^C8AX4&VWunDakmlg0z#AqAl%<@{stfY1s|S0u;`KE zlopVff@}ICGGgyF=hrP-wr!Q%5p4ZK_}2Xpj8F$`2!J z#)G?+@e+gj{+v@kzVk>N9ev(~(NNl6&m^R4r}{EoNjNzhwP9#{nY_oFcY<7Zkud&u z4q@~R`32z~nWwPzi@@9wlLbWPGI(BKZ8BT&lNCVqH@ikhfjR3Wx{|_I7Twiky;h`2 ziAO1&Wqyin@Ev8fd@TiCBpL2Y!e}0P8x3mIKtP){ZUeb0yE?6}o|57420i@MlT9aV zY8w5GpRtGO+(q3!&WQ5>+V78u8kY!5N3)6W6aM-)-kqVdZ4ggafZ*!>E;M`l>>`yl zmN%q1pg`QksH9L}5#yL8>2?9|rpjI-)Y{jGt-nKH)qTT&(6Q{@pSRM%Cb0AgpB#8j zz}e0O={lf0=qLGcju~G&?YVfEL9ZKjW{R%QtsQ7ZjdhdbgwbTJvzMVbdm&}}5>MAdG z_+2?yx|Z5Ntgw!bx(%k=LG1;UAP8*zu}12%g_B&9izaCAf%&;thDTIJP*-GQc+;jz zKVUE}$6cAfqSWEEJ4Qy_g5<^VqtCszX$}+~v0GzNx{-hOIvl zSnqK@poA>s(MECTYZYvCggOo>(7#r(bkBSKWQUnn5&R)hR7$mqA0YrDsB@7Z)Wsn8 zoO-CGUb*`eqbAg0(D-4Daj>ZVtF4&Z+G0+plvGzVs^4{TQI#hd$<7Z(MiLD0J+lK- z%uoGYaSn!F1W@Dv+Yq$1FacJ_WP=nbW{j!-)tGpKq3JNvKz@a}9fc-m;ZwszIP&$R z0UZV|>4iE@^pe}WnB~||KW6fJi*{4JR3-21f;^ z5g*=s@BU%#dK-kavJ=Ebf{zcACJHvCh8V``%mE8|DEJJ>gd%kQo)I)CtQ!p5qN~G9V9rnBx=qCB{lai zFA8Xh88N_U#Hx3W*kso4TuYMF-4L8MJk7_E2P7U!*!KKBlDOzRar3-TCjv_6t+BCo z!c?Fg#;Eq9x5f>x8mO>`4IovOB4oj>@TSXU?@jZW;dwVt9$)*wUt2ks7#Gdm=Xf_O zy7&f$wir>6a-+-Q+IO(CYL@Ewd{hFaiyP$jw>6QjT@m%p4(^sL6;D#wL%+Q4(EIW7 z(;VQ|+GH@Jb^WdE>$lHTo$Xs>^sGjyb1qEcz$S)p>V>W*fHmH~D>%^XvN&Gha_DbA z>ZHK~&;bc84Abl#?}RR7jQ|?6kXLwYu=k@5GUqr&pECNYa}7kX=pn+=!lzdLW2`}# zJ{ZKOMDW!UrH{7Hl^O@@nEa)j%J}+3??R!W@d%2!vwlD4nu6^|*72__z$AgL**1cK zCoi}i%{DYVD!81+UNR?wE^w&e#DY#uXB z9gh#g%p$4J+dqbl=qNSbk`r`i<4M6uz#i&KPiFp|2aC_v?I|sQ@oH?Bg{7^f2-z1r z;?STG+Bakg9PSe=8#_32c&?nhI&{kq{yB$esxolU@H6Sk?3|a08!?oL(;SH*Daq_% zjudIL{i~y0uIov(*C=7VlYU9n5MS$5&9Llvj&>uK<&>R7anWldiD1)NB&Zj7j5NNA3nH{upn$ zs*tR&jKKfzZ#w(lTstMdn&I50&$fY$^!Z!B8hEdEDvMdcb&z&nUeZVP^Y`LlJxVyRr4 zyv*X)?&<+^jC*7YprE%&2WdIm6gE(gj!hU<3o zi%~!wbJ%)#8u&8r^;5gCTHCUwmX$-szVA zP0~mhz|$hmp zEDg2K$4$tPU%Cr^k;q(L^0M_qyST7#tk(l^5h8b)mzkH>6~aVrmjZoVtE!eCTmCa~ zTi^U-G(@CbwBJerhwbw_v1v%QH{prKPGTgi%aQLN2jExdu})Mwgz|Z1SS;mN;^6IQ#+N0*ml)e(>R5`Y zN}BMSN>NCs+?hb{ld5@t)n3iG2JFn)-Z`CFhBfOJmRssP6`N)|-Nq16QpV zlX6e)=>Hf@F$w|tYG(o^fp4^zx)(6+Mx?(fh`7N8HjWWrfWdXw#68=vk556)tM(vk z*h=Big6iALGhpgP_d`h1oSEkeaiIPiVMRQW-#b?x4H^w8<-%ZN(7|uRpM@I%PIBnh zC|a=7K-N!Bo zeo{Y(TZ%X0pMgbxnsOU47aB@W!7y@gdw7@cwU)OC{g zrokIgf){GqT24S5Nl&U~g5Ld({`Pp958yb*8Tve!TdWjL-S#!iJ6&)lBYQ1@8wF8u zhPo|>03WDm9kA?Bos95(m>+yTj`rg}W4Jgi8UKe5*Vc(X{N5Q+Xdh{1oXDg;cV?4b zo{}LpNnXV&X|@Wp{+ebA|3$GEdV44;tKHm+UHM}5cWH;Fck@ict4~d z^m1TK8|{d6_mX;Es1hTOwT8r{xX>M=)UFo6OF*|&VHLe=b^r-7?hOufdm+ghG!t<3 z=Ug7%da{i>hw*^Ag%rZ=L1KS>0~o4J0VF(z-o^Vp^Q0w&uipgHd!EE5lhL<{{qbWG zbM?A>r`$p}e)h9@)v;koGu07C+;R(Z5*_qFr}qnViG3i6qhEXdd3e49CNO(O>|oYq z>1t}4)CF!~h(-!F^cq-hp(>l53&T_7!Ijkag-)D#B7wj;F2>~cxr9?Ay(r^z zGj_U&Dt$746XaXc8<7noc6K+{A zfeH{hZO-Fsp(j^=rBnD=ePQ6A0Z+*rjWxtEWAE5`DYGPhWX6V}0F9-rUP!F92_wY5 zR7bR!vB{THwO?lhyM^I(o}DSl)3~h5nO=qq!~8)A;?g0lRw`-vbPzyFj}bWPd0?^n zaX{ga{1im@wS53A`^29>PM#xl14%v{r5>Wi)_8mP7S8Y|2%|)49Wbc#^gN(4fPU7P zJDoj6mL~kFWzc_O;o~2#ebQ?ISW7W-4U~|GC6qzGDY<~cpw;O95&1w5M=#`}c_~<) zA3X*P328BCf*CXT_-B3t`VG2!=zotEr$8acd+ytfDMPEcue@|IyC&91es{UM}$lo|KPg7cq};fOWW)rGB*?? zL?my3?5d4_Rhk9ovr0sR(^-JPO>gMzg}1FSiQs3@|MN2~Hj1kVF5&FvXlRQSC>(y5fR}G0_q@yxB+&)^JbN!}|Fm9ml2qvAzDgPh-0maMueNyeFTYoMU+pMLcY2je zU4MVk(CVnY_}<`dVqLMF8VAWx2}dcrS-Qi=I_{Mk8*0CdpTuVPBOi-*-TN5vv@_RK zji^j~4ugSoIRGdy&3Oc17aocpKNOhgC3-0yoq_k~P#cKP`BQbc+a~L>%acjLNa%9{ z+Whhb>Cs-+t$V#1;4p#Vuo5qXY0TN0wTua(%o+s@g&4j>k zPehH276>~FEKzVPVrnb8P{(mdwKB;RFRMbAOiFD zc@*4i#lu}Vv>CTswAT6aJKMe3Y9cLryuDL!hfw$HmkiLjKZPFq&@l#-;3@*wO1Fi32U_%Y`StZ?!hNLA zI1=l^=yu%-W;y40YQf0_s^Hom5!;cr&PBbv#o79rV_mu@$^A1aHyXeQo^O8HVs^{- zdI+}R=LrtsJNX0_l0BxSN%bcGo<7!f(r*bM^{ElsbKbu=*E^Fm=f`oA`pH&Q^PpW$ zg#*FlCCminh3>wbAmp{G4z6*qGIyueb;Wc-Rn&>p8Q}r&Iy}QuLAg@)aJ#NOLqOo= zEca15Zkw&){|OEBm(s&XC#?1QdCOH(ljK21frtL$n2@u0Wo@YQWa5r;*|KTD2UTld z6AME*Ip4)p>rADy?g}5*5?-f^4GD3=#QOxM)PIB7-wDebup|oG0<=Y25qk+=yg{y! zNV!OGp{!{Vwy#sJRfHmTQ{biD?+KgMHz4N+!TQW1>m%X$8qBoTDirC?r!MLq&-}QM zZTGY#Y@3CtX~{s0x%3~AfN(*H7cf~!w@{Y=R=;1fUsq!QZKZ_1j%Vg)iA5Tmz|Ck% z(q4Z95yGgtEG5Bwl0)ys@o)AARb}1`iWh0Ou)+l&sqX#&$jWpBv;h ziyS}}{}b>>WEoMDqC(qD(1vD)Jm={=xjoq{#OEkk5Vc4+!^2BaglD0LHWx%XMXgqN zIabs-{U+HsURZe{rI)ux7iPl}Go&pbGejH=^1c>xj=LLel|XOCwSKmmI*$0NE!<;3 zxRg9e*-02J_$7P`??7-i!6_OUz&|U~hI=TJ5I{;^K7uh@J%I1pDE zT$^G*5g+qN_M<8*Yu#{~yzXTDdcE`c2=QO*GyX@q_7BnZtBU9{JijMA3tvE}ttKoQ zz{d!E0SKY|btnr+zt6Ow>~lidfiz*7z&vQtj2}HD zKR#|Z=Y+((J!FX;7MiMv%{Xi~MUMy(ns>96?!KM0%HuxeyviDK7cVy0`ZOL4D}lc3 z#`iTDbkp1k^&NNy7}^3A(Bh+sxOW96*%%X~|hk)yf2-k(LIb`VNK(;Wr83YGO z$W!IFZt`BV^*rn>6RJ$7aOi)==mrk_$ zCSs+2Uk60iEie)Y4gnE3{a+wX3}1`I$O=|zAyB!n8ht;MHV{fhI(Lr8(d$BV^UEx7 z^wNKsZQkTteRj1?8pUCD>LpJgiM3*`QNn3R@6n1+Pd-J0-hL#UbwO}t7Fj}V2yOGT zj&CiG?pMCA3D0*(e+x~`T-BJo+V^qo^&useqDAyMfp+L6=yT2StdN*2Ou#B|m&{yJ ztjrm{lzvBB+yAV#ZcCGex|F4o^~3R$e_!o2v_OyK`H)KNd;}=`PyQ5`R6jq&lnTh&8pl^crfVQIu3Te;t)-R74`PqhYg_Xi##e=J|z0K%y zBDB9}sTNjojscd-3Cd;4v< zyq*zU?CK*e_2$b4VeNvA?jT>Na%b=$ER(X&!|p)R%W|_$IRj$I9}$|}w|Q+uQ+4Rd zGu~=C{wIC+Jai%75GGHQmLq3RW$B3#a_5vHtQ}qFnB=sDTb%aXaQ=_Zh*IucfJ01Z zSL|8OC1XY)OM}z7@{vauCV}_wFGu&4z_^9v`>f76{+&ZJrfQv=;(_jnU7fZK^||gD zSNC8rqmXof{mD2`bL7pca})wDwUycP+pV9LI9Wt>vi{IzXV?2{P`4wttY)9E4B*2b zdtnI*E&St*?4z>3r7Fz*| z{RCh1@0vTZ0B@oR?I$xug}X>=DnJkfB!kMlS|B}ugpH}NIJ%#^Nf=N|P_CJPU1veq zQUW!-v>nF}er^UO5g`ST#w9?GAXy;(5s~YJ6mge7fP?5t{Lgvm(TyC5-Yt~l1jaZ? z0zK_UfJDvMVDueq*Ai-=8FGoVI)ScB>Y7AzTel2g!`Ddpug7Px@dP%97D-xGH~b@l zw}KQ23?>#t;c2&c7$Wnmg|;AzD-1f-0ik~gT^coJ7oV%}6cLSJ@v329<7}SIOYj^r zkq2~%V7l$U6FY$?t6{lR(E%*LFx9vh95m#@)-%;Uuv^e#U{SzX9;?4E3$R}p|0E=K9jjhDr%)RV->`hB&W^gY&|NV0cKD$zEd;@udGpqL0}o4 ztkL6vfW9T5O9jBsqk70WAJ#z9>frVJBYDzBOyQhRX#y<`*#Zr9oD)!7mdu*W^^sA- zuUNJu&pv*)VNL;Mc4jPJS;aJBiVzO%GiDA`pSki1@|s8AOcCpAy!k50@1~BhXgYqK zx?>e>b+K>N2P|K%2|ZFfOfS8j@VM#Li2jkkcC`_NL-!gN?a#0F#8i4erbw0&A3LFn zdzK?#%ES$?7)!8+42G`-imvtUEl5dl(0G}(V=+rZVR{VT2<_uhGoV0Ts4IDTNi>Gx zql{T_Xdb>6icham0xw$<{QYx~jCnjY^>8sLTW&BxJou@Q1naq=7d!h8*JvXPf>q|C z1$G|DVsyi{d33N3LwKRi;{XXj*))ScBJLr=bL7s@`}+Dkp!lgJBS7V*%_ja4Sy0ZY zPlIjRp=*oZg?pntw0??pCMHOX3ixWA;5)!)V-8zJn#&3XYT2;iNoE|gJ|v^K-x0T< z1Sg;2N>yWi^~PN8BdccKKV`Kv(--pkgtmsJKGfpBqaruW=;b~sS}(o-nU4U?GlOf3 z2-C+XDDd*`CJqcX5au2JOTB)P`*Y8*k#&TX-Qj;k&Wo?DKg>hkyjH^h_t8uM|Gp0Hj@v25#WFYBwo@}dHjSK)?uXMBQIq6)B2W1e0RTl${t4=YQw;8a(o>nlz zwb-&P&x@o0Ofyy>eku#o)R%JH?Yv{ai4RM34epmrg5MIV`~{HLSj!kIyJzK=WmfI9 zfz6x-DXRH~iv|15w}b$@K};LVaMJcBz#)wRRBN#mYQC}a4rs$~!FLgA_Wql{ zCo}!?YZK8EWA6>bU+gh0k-x6lkv*LIYA47zKk3yaIEWt&$(}O;6stt(P2dFbu|1T# zVW8?fR+t3@3TXdjS#ClA?~c#u{{J+q8qK$TI{E zXGnt-=x?Ab#3KlIb>k9_r)dso?4Qy3JV(`5;6G@g3(m>ceYEPF1}1FHkt- z<}J?QvlCpFeRcOWjZt3o3|Goc4T0aINMV5+wNvI=1&_c8rSX7Z{an}l7=b5zO=vwG zn!d^flaKS-F=x!os|X zjQ+fmBsdLe5zWfQhCF)TB!MotBI%cOCFZ=+5)IxyE4T_8F>f@a9IQE)lXDzB0}n?0 zoEhF6xgXnbrZ1je(TLj#R?-e3qmm>-^BxT~u@Z!^!ZK55#Et}fAl7KF5%H#)0_G`?Y3S8w+6cEqr< z*>_Q9Ggq(8^?LMGJ*3O!ljW7Wq*b50Mh8`eb^L=mSS}2seSmNr8GYX0YeBbs4Y5OxCu@iwWeA@xhLBc>mV^&EKzqP! zP~Tjb3t6lH`#*c0nHgc(*z9XZImCUS!{6g`Lju}Y%$%x6_t%?uYY-1$atL)7WIov& zCBhGV3}Sp@^!N3~yrG6fp|)DP3+$C>CM-Q)>f>b@hguFXdLniaSNB@o6E?w&-i zxbg09B^``mI#$^vSyuNiT?G|^XkquXXxA$FFK{0c@Ph<)LCGv}6VH+f%O|}oHm|t+ zM}#OVGmlv5!|Tslgn^FVld>RFI-{`xFB-SF)F2T#aj|3Y4YPy>m1xaifXkG?skczq zBFE9m${sc+vb-~8Cln?2D<{k@l2VscyD`TmliK)}Ubz#pF{ycFiSZ9|V?UI5W!em0X4roh zZ8pgUb$_ah>#;A-K+JDm%@r>;rC*D?l9!^{6*_&l(M-|jmD=sh@`{`?NxNB4K{_uN z!`tONk&s$bwhxe|mCOTqVtNiaZ^wehA^;=y#yWo%CS=45vET(q&qgfNXu(6$8+d<7 zOX=GX&AZqa`>(~SzpdO_Tjwgw;Moza#$4xu?;ejn^7Y+Jvs?@D<}155psp;e+RolO z3>aTWdu~dQYF+LNX2Y2><42d7!G>a-D;Y{*j1B z6cg)1!bmCuqX-V~Re-8@3K{l!$motMWT=rSo2%L0 z+7jlaqS|oVrOn9>s$qx+S}uI-Oz^RMa0w`>rsPHVUyYC*HnsV9f|UyxV?WP>XnYdj zE}%;RXxMpjC(2H^{I&I7ZwHBO22gfYv!~KWiFNSNI73~PPsW1e8$vHxk4bzP5*yBD#K9EsfV5KTlP7SwUK&n(wFcr?d@<*h*Mqo^2RDzcEjE*FK3Eo~La0Wao2L}kvF_`q<`LI9hh7p~^ z&VcRr5?<^{&G_xKDzL@>2*I)x*?eQIxN{njx~a{bQS;*pwffj+@lk zi8))BZ-R&>n4o__DbYTbjY3a5Dt=oRkZVp|!gQY;FYZ!byK31mGLlLyTCkV)?x~zu`C}}viAbBv|`5!#? z9?dpyqOx#fM8U0fbgc3WsTM1sAnrxhl0hglFX9`OE|#~ku;u_6QpBPUb7_Lj zNTHOJ{{&&-0as5sNjNW^O{euxWI$QMFk90?ZUk2hYDK;!mp>}>T*Sb8#DM-Rk*y+( z^dBDu^_Vdo0f{<;9pp0m2DnxIN?%MR*pc#3rtMTxXV)P>J9&a#(aY zN<*L-PN3#ZQ`Ek5)Py6%JSYa?uk+)h*Zxm^iX5D?e^ zSmh#&x(i0S|79bE&;N$~1#%oY2#~Zrk=zND^-gW!X<)aJ^04qEX_MBVzMt62)T^W3iBbTas;gbRUY%|yarOioWN0$Sn1UuI1;qAeK1I-*# z6O#QdD2@&*R-c*^MkwOv(^SFGm^JJ=?YWF)W>bL*$OE2p@YwF#SD5AHCW&nMk&1Yv zvWMOukqg&-_P8sSKCYi%1zo|V(+u5|_o#cVhtjdT!Irytjy_0SsVEjE;tv_hT4K;I zH4NNJX7QDwhprL)309!~H;bq;31$L?5Ra7gT`=XJHs#Ni^RBmjJ+pZN4iE@VLme9l zio9My*JTOb1j6$pr`mItH&!@ngxVjsIwFn?Wr7qrc1hPHwe?IxD5XB8mAe*AH~qK( zWRFUM>=p9SKEOmlV5c3Q+-k%?_p8NjSfjqlk`p zpR6SX`n8thv2xGHvgtM+SH|-v_FXhQkUW7?9P#c+{P&euQ$?Owt3_vgmW#sUhtg z&N*sPs}`sQOHMH=sC=4gnoXnjzY}K@+*@?xLh)M)mIqwlE@!WG>!wfcP^@tQ%gjn4 zA!l6BRjK%?A828@h{dEw1n|HAvK9d76im}tK`lQ-%|Bb&+4B$by72!|_1#fTZq3(Nv0TLhqA0{GAWcCL zL~2CE2na}*8WoYM2!iy)h6)I|bg2R9HPTT^u2ca5>Am-!P(nz%-^BO#&$kw=B{3x7 zdCr+LvuE!;3e5LN2V1PI(=O0ZE$E>T{u_S#pX1$^?_4|fn$bXj*0g)CJ}G_TeI^Op zaKdYbZF4XkyZRr8b?MlR?QeqPE&Ynh3&5|wY*LLyMbI&eawNzPh=SK znVX;EqB1|e_)7b_ggwA$?3NVjoDChh!}tai6BPYtHSr5UgjdrjGA{+8k|{K zYrRO>isXz2bAiMy9x{=^O{d7i;2cSnvmVddn1_J|SV9(|r9pco@o)o`h%~)yu${bo z&X@D(v@>B(aE;IMAaNUSjcG1L*iv_lBk6l3?z; z)5_w4ddL7tyI?#E@1;tdlvILX_6$Ph-?sJG1Lqk42AmtP%wAKn0(-8EE&Yh>#%Yx^ zUcL*yC>R4L{qY!Zl*Ph<*P)b%gdE794V#)Y3Ey&udid^;n7e^XIPwp7J53)#Op~sZ zuAO1N`i&9?v0GLVg|ODsjjk*Do}MpS-c(AI90z%?2L5Hr9=Ly3RNH&IU>XbtBjL*qMN6v<^Jm)p=amfscQi=aKJU?X4O%YeWZmMivjA1~V;qALN z#$(iLYykYPO8@qdHnp?&ec)=UuxAZdkI z(v9eK`u=L-dK;REX87uC66$Zwqw_~eszEmtaeWCBqbyT1YQPqD@@v3G!RQ17_u>Q4 zsWEry58vxnMNn<%w*6QeR*!%Zj+J~IIr9Sj?eRJ~0725dC`Ct5+Q`6O?AU67BH`%ow!{Fpg*EUT5!Q!N5Ee!yO+Y-}4g~FgNIWNnpcnXzW>H-@ErXcRozb^z@0i|! zfo-A#e$l$3ujN+e3_k(uYFleR@EqB(IG9&`-=1%TinS8Rp9~Th(b;t8b-ppr+?3p7Ww=)JIqUgM+ymbb zI2|E9dgC?X@qY0pHEKc=hPIBhjz5#h7DC4?+Q9&ssf`<6I~p5iX{R#noEP|fBG*te zsB@04|8YFt%q-H997VM+EiESnj|_AO2Z)Be%o63`;4C(GZNZ4dJaNnajB`MSF5%|x z;?LKNU1BvwwQSk!TpTC9LU82?1uOb;)zJ9MHRxD({_lsi6}e{A2~CJWP0G(MaGUo( zW{z1Kt?}|MGPO=GWo$T6VhP2V985cFFUN_dSJ>26 zDzqFHg75J@75(H= zVt;E<7jUe480RkfC4ZVDbz3>}RH1qqn~F6F=YJ<`%vRkUcJ6$SiWNXp06nX?c!^WD zICa%{aH5Bq!{WXJ*76EH@bpq$kl$y9Yj(N1E(8N-Ra!&Le=BqI1N&Ksa>yiHV&Gp2 zF}bjTdVCTkA#L~`;LpKsb43P7i1F>YQ()kl;M4=T`3CU!0x8j5$R{{NLzc;QsGa+1 z{d+}_h9Zu7V~Z5tQr!uipkARSqp0m;-o7{5n!6wYAH_7(NF*OtMI`Mdo`w+t3jo1_ zOUG3ff*HY(qIg1$cGo{|bfHzfq4?NlODaV2Yw2mwCy9>P4d2)qybjSnIZ&Yu|Y zjdLFC@2@=eEf`Y5~gc}w~&N{ zDLO4uI?UntszjEa2uW;qSDy{fY*zQUhEmo1wyeEMQ%Yu4a7|`oN35ESXmqGP(fuCS zFu8oZ6}II%@QmhWEgG{&*-WO%%XgqTd=I-F{J%bGA>0U9BQ=ogNK zQjp|JWa|d{kveEE@U1jiv3dcUTzc$Wbrk{gGmVJ+@T{sR7?oMzgG4asR7*t9%mncf zdewN6m%(dqB8hx<5KFTe&xSDjVyl#sXVWB#gt6%(bJEjW5U1MJc-CiY{tUX{5k_4< z%3gNX@}`CCVDx`~#j6v3=DIKvvS^2XDh7}JQDOOa8QZ_Kwnb81h^|~&7g4MGOi?#Z ztL*jfXa6>?zD9p`qp1Qll8naIS&(mxvf^d720`c;=j)KYi{Zv}RW^^hYYuk3wD&dV ziD!soIbJ9Va=CIs2i94`bZTzH3~@q&qA0r!l$Jf&zp?p5`(c&!ldP`xqor8SNEG__ zBO;o_N-b1D&jd0NbI7A&>(=%bDMUjW{%ql+ppDp|1ATbK_!F3YZ^Ezc3ZZoy z+P|c=>Q=qgZk=7$S@Nc9*x`%Pe=v~-B{9flMUP1S8>81k#S9*hdpR>?7lmDrshFb- z87f?ax2&_QE>cy#XYz<|gSY!&rPug}+XA)5g+tgMhOEoxwupzU!GfR?N4kcoNc?8w z&$cRwb#wQ_OOgmuB14I`8$o&~|+J>Ej|z+6v4%DEE^N*!0vn62`86IxCv~;fF;N z3OMhlSH3*_ioRA5S<{`^g^lonvdXgLf);}KKQHz!6 z>vL|&zHB^l2OSXTXEX?2(*B9%nbjIk#{cvI;Lr<=a!&JvL*2 z_j2JTz3tDxJ$}P?0I|~Z;6Q)+cKC4Dvz)126-|O^D}eogARJg?$5-|AR%AbNeTl6K zbIu6Y+A|8_9L|H*>)e};ouWA@mMH;!=@R;K2Tbd43T28butP9(z+~Xj9vA;a{YVY_ zMm4LmY!F=HNhGY97qXBc--YuXy36gSMBmys<;8>|^Nl&{cL_$6`V{eIbH89| zw~X?r^$^tdTl5{aBG(w4JUA`G7Rhl-pD#W_3mSSe z|3C>4uiLKMBpM1Q6<$nLdsMxwb5ZQpZ?UGnwD$W=XVoEl3FuE9HqkgMZyK+=lI&&! zTD$NokATGSm!YHHc6dNv>gfGfPU&nPAkXXKT3y2%18w2^B~}Pjp_N#e<~<3rdo-=( zy4v<_u1$iU+yUl(_NBGMKVaeslE~S0!-y?k9$uPpdT0YE>)Ws&1Y3eEKhaELd8mr8 z8*Wg;JjpjHqvWY50d!Q-NW8#k(+%RcS8+B%(*-SIv;)kEm(?sD#s;Q8YSf9Dr*d9h zgn5YX!@MHbJX$rTdCQ@TrXm=Tk+GfdP)(kupIxmY6CCB7k_pB?qEIVddGhM?pZ1NO zcn7Ss&->X123<|=(bo_DUxEsG={(vA`-2lBV(wu@`P!`{2eU;Yfv6ch9Z@)QtA`%{ zay{7nh>NnsIE@y|+Si%k3uZk>$B{IT0-_G%RRhh~h<7-vQkzj?R9n-HC_{yyV~`|^ zN-h>8-a8iJ1?fC>X{(gC?-w^(Fp(k}RDIUL)NyRF4}$bQe;NX9LQW4L8AGGTLm1hc zl815|V>{Nr(>s;(WYU+Vy{e3`FHke~c?%k1FZo#SkO?0;!*XxOi*<2;8~{$QOZ!7Yn>W$4%$ zQK-uf1-de4S^@wa{*wRCVRj)Dt*u=g9>l5tQV(RKU_EggfU*0p&oyd(?Ns{i_5{GE zt|DE1!Rx?J63r3X6;Y@sV(PE5scZ_-0RzR9QJq3Qyy@J0H^2J*JBgX%Qn3T^UwfdF zrgr6FdXF9lgc+9-arx`U^rE6zzl-clLqWkl&(4RCYI9adrxH{Q8mC^|zf*Ywt~X3+ zkpB4M7}#0Jn#RT3d)__`uM6=N5?QWw(RHz`Z|R4pR5x8C z#Ed6AXm4kCp?XyihyiwHKZ$|>s^{+&s(W{>Dm<(B(-+ByU72jp$t}KCwS!ghY6oB@ zmb@9y>8oO0#SoP-uor(IU7eP&{b(p?H^?(X7#9SI@XM6x$c*y=IA>q!zpDrASe9*t z^IumG%hJz~t(9@X$SRjLm25vd7RzOg(ck5PH^-r3OZ@GI($hD|zy8;D zWyYVcOre~Am70{A(6IwyzY^KmcH$l{-lecft()V33aXAN>+4j2b+};9^3##~cn2lD zri?jkzqRmv_uah-Z03BZ4ktBPvqup3D-2cne#>TfbovhAjrXokPqL(^LyGsibbYF5 zn|DzuW;YFZW`7__QJ8v#x&}tk@0CQN&cDmZ`h}6wYcS{NNT}3GWtx3& zHgc6Wty>xQarr!}_wJRWKcJpRenb}X2FrK~O8XK}Wqn!YpT8$rGp`e>8l43iPTwZj ziBR#*aqYBvwCTYdi>hU=>Qu*jEiqT2uc~0^*t@Y-ZjAhF8T?~LKROd!%Qo3QWrubK zh&A>U?l64W(XMv)6*Q(bwbsRaMsp!jCzrxVIL)#ipX6gHY0qRL;)3>z&BJWC<;}LU z{OrPX8UO_uf!u)q9j#{)#Y=24;R6=+h0{{HVvT@@C7JO^pQM(9T&YuRp+Bd1hwbo< zMs1@Ej&;#sHYi;v!_VGIa1)xYBOj)ug6n!ghvx#1eU|tWn+RpwmIZPb`zPty=_{3%+;XTasF%&gV}Y zQfWnQM)B@HhB;4s1PKHkdAqO__^Terq#Cain%eqNHKU|3Ry&KUaE;MM{VdeRT8IN! zhl%ETjaCh57!C)|0u5|=9HWDdi-9^N7kx}t=RM*pE=bDN8&^1DDWrg5z9zaUWplsf z6r8#JfXi{pMS@gG+(0*?2|zWrL9c^c2d6Vp#zhPO}d z;%~tq^?s$&M?+d_4dt`fC^uGQAdi=%t>Y5*I_g%%>;ATtkL8XHf`*gm4giUS!cp2e z|3YmR5`$w?eiL_x`iuRq*5QEr8!(P+p8~g71NKuR5)oB+l2%*bcSy1NYW|H$z*GE! z+qAVLbtUCaJ$>cZ#_xX@_ef%}*bErD3KIY#{+#`oEw%L;TGjGU(;cRUrNLk;-EO7J z&mOZnNmYakrQTJG2j8@uLW5dyqH3u>1g-Cv>E#?kyLtfAdysbu!{PIQ6o=@Wo~Cb{Sjyy}KFZJ`pDlE^r?%kY zNd-giI%Fl{*LE6Wf!b80s80A6nm&>`3WwRWW3RhdwYu6BXCU#aCjr*XZS+80P0ohy z>X`FySaVv3BX==?hQPHnf(}M`mNna4SXpIL4uHlyPiVVo{md%szd$qy2stdjbDQj4qH?bb>SNOn)(VBwr-V;Kj}RWt%oYU2*W{RXe!@S^%2s3I)Sm%>YY6C^L>pJW0uz%dtKp1dWyw zK11_Ar`rm5?0gm=n`e@FpQomnTn4T%r0P5>%PJc7C1ULK#p>*d002^^kMKl26_$`3 z&}azfL~6)^d`{v~n(mGb_*~xeP2Hb@_KR!yt1Lr2fg|{!+EoQ}Z0F7UP~Jc_M1y=V zXZk2EDduy*lPI8;Y3-N$&9o~rI`;7x{8hdKUd7g;uNFj8)~bqOQy1xK8Rcwic3~#f z)znRXJ_KgXSt!W$j9mU?JN63hQS64$7O-z103C2~1*xVA1Spu%(DZ+|BfA8C#P84X% z*&BweO&>Q{xDljJFIfUG;z@+oD0!~nHf5JH>rqwxV4D{$Ck=mb&uk`5hf8;=T1t_) zxPp{qH}r64?6zot`Cz#QN6Z?t?Ed3$sQg}R%$)vyP0j!3(#a3IdhG};v-IxG2F8h+ z+DMEDvvQLwf5dDAl{!a>)Z5lR-4tP}*B<9;-6ohp2o)kooRYNvwe2&Iu5#XGy>vJc zx0Nwut5d0N-Vn*HtHvS01fITzsLb&{Kz2&7pFLa9`G1GF?GD(?cjiLluOC{Q@6r!T zwdEXzjdL9l7|G(Lj!tszX@qdn5OCr6y#NDHXy=*sE@oB1Du&i#_`o_-j&rU{G6e9bGZMl|9-l(t?UAR2lrR_~PL= zMI=>Zrj)^}3Hd^Qh4UEk7z)9_m^NEU(36I~Ew=|tjM>nOY3v4k02QwG{zv-&72eyOwH%}qDLup4KW&5rbBdB2${T9hT`3sTXk}fr?flg-VN|%VS zHJj<##si2G?7l4!BVP?noqDSJ&#-VmES*-wB2~IKE0D7~~FG)t?KXrKQ`nbA`M74;u0(4S?R{pMF8-i|KtS4%gR*JT&LU9QhE!Zn0apR}N6m|{Ln z!TPH7AOKSVafBy>(xNNkfNLf+G-2Z?;Mctky!|e|`1v@TtwH$I4O^OD&)}SfOOczj z|E&b4O7JI$cnqIawF}NQZ9@PGUa`fhhiNaN;@)}N5e~LsKTx!$E@%`yNhmN7@0t!R z1e8Gyx~rKT`QcjodGcXnWWY;EYltg&UuBCs;6Mmtw``$!g-vuS1OCe7UjPSirjMj| zLi@W4AfOOqnesglgN&8F>}11aIJojgF8;dwYPWL(T#Dg>1D*%3dP74DMq{xHT{YOh ze}XBvvfd`{L9a|YBo)_@(P`q*}|t6 zRqpKpDMP**0FS$(GuGKBT;;g$UL9_aWSx#l=2VPdwOKm-*Y%uj&w%voX{09T?h_y( zdZ$Qv@Ee*iX_-|N^f-MM$8bGBiH)8tDGpUvxifjA1wXzk_X$<;IMa&z)t&0eZt_#x>?=A8d{~45?AxyV-46U9$Q&`OT2cV6Lz4HM+P@We9Ehr1u$V zi>N7FHFlsE2AW-BW~m4{oNz%2CnQan%|CL*Ubgsa`NQt#s%NIWdgF;27kif|ww{)?i?RwBh4?Byk1eH2R`5|El2pWfW|F1LzPQU^ifQ=RAxEjxv zb^nhUz%DpVcjS)YPnr85$?tI!2R(oed$aPxJ%7YXdCl49hvk1rybWOaSN-L&j1gss zkQ)3!e#HU_(`wWCmr0SbkM?@+bVj%S6+wpxx7&)^o8@E63~+_Yz#r4@IbPoHdh6+H z?27}5pPc7X{z@n#m`P-=Uc;-`cmx`_(pewc(R>xVoX9uFfB_6(Hj8k-a|UuM*Mc*M zf5&>qp5&)Cjx!&v>x40_fwb`z8BWyFN+HJf)(vcf!p z?m~0{0*5mK`F9^oIZ{egV0SDsWq_)XYP)zzAQwtpzC3X?M}wa}HJR))5mlzQk~3wL z0wz#w{Y}En1EN4-z5jCn!cEphO20|?)s!@%=~Ffordy`RHc8U#GIWF_`Evs#o(b%} zvHEn^PflGe!*qk!=Zc|@6rjn$Tm!9*0f2^}C$8Fs+p@E}dVt;bV810uoS||J`tuu5 zx5K8%n0M!c<(`sZ$gZiO%zzWzsE!+o`2V>#M#fIF@s@CQF$-i7X$3cc5rw(y9Xr@5 z#Ffot0BvI+G`=zj=u6QlhaBM#$3jOMCyA3}SLc&DkU9Vj?9P5f?$v0(tq$vbfy4X{ z<-Ju`RL!xY^QCS<;XlVD^s|(^*pM)U3lP@BR3u=#UVlmBDP$|Lwe~|{13TH7jTMKm zKhiNbcK8jy9vZ>g6#lC(N640YIyCu7QcS^4d$GXtc2?$qCPFAdK1hC$^Y|Y0Yqk1; zbffq27(~IWe(3R5G_|TNAe}+A#l}_6Bn#xS*|$42cwPVir%>>}3-Bk1m1pngVAFeI zq06&F81!r!7Vp3A*wDS(XAi6e&?t7Pcf_0g+%KBKcFdID0lUHy3e4S1sxO>I4a-tV z+acSLUMlo{j8;?5+i4nqAK^Ht|A(+7bx_4xlYktlE94QnW}W|mFocfA5rtlujm@oh zqjE#WnN^YpONh>tBi9Hp(6JJKe3^lyi`rp$arc5p?~%{vA7tY3(i0>6zox7TN~7=@ zgzs04CkYJRD4;ko&i}_zjENdY<}(wJd**?&YYWFV;*cv3%}ey2vbxAX<*%pOrcx^^ zbh+H6uWfBQi&H+DRep{g;w!1z5$mYgamYQnPx*0AJ9gU2oMDP}^F#W-;}G|% zhYRjkJx6`xAWWi@pSM0BnM8;)rEKOlurt0o$Hr93qYP4edM&dJS*YyBukm+d z)?Qqw;d+z4d|7|mOduE?1!lz*4_k}Xq%~HJWQPy`&X?AO7Ja8j{jiBW`B&z|isIlf%x9MtTsv>kb^9BkAP+g_Z>iMA z2#Vok>^z06H9ka#SvQw_Jn4$my_0pkQ8AYJsr?1uq!4X#u`7;K-23s^7&(SKKfCQ~ zBK|xpkD_cpq!`_iwxAtYFlse>lwTqK+(fKp(!`4cfEwJ@sno1W(-oD2ju%8Qmpr?d z2WX(2XB_)bk3XYw(w23hv{y!1vdtL$)k#gE>gRuvv@gjo2HQ)08YO9<&-n0Cu~{CW zljgrS4=PKZFN+innGAa{H7S3p;h97oYv6~s4*P03MXz8VSTS*>6sO2uV&s;Jb)VSc zA=F>p_D3z&loFm?Hg-FG2vm>X=zmkgD0w|n7dCVX`v>Rea-H3s@sbxdv=#CfaT;3= zIO@5mK(>ozpevHW8OCsEtbNj_A*&p3lG0{%@SjPt3^Vt@)4bW*rM{GPOz|AD2)neM zg=s+?T~U(Cv9zQ4O+8N;am({5HEO%($@#YKk=WR*QA7 zH@;Ys$db+cj_Hxov}B=n)pQwF5rkJqdKNJaS6gB%HYwa_k{Vv%v=fXvsv$QrTY^X5 zJIvw-Bq)!_s3qd$z766raAz3up=>!@CzWmfSVBE_z;Q)CbkOYYh;dx4o1zZMBJC_= zHNRDNmKfM|SL!W6(2&S)j8ZZA1 zn`wibzC=t!<=IEU0LtW_Bl<(8PB638s?$Sx$C9cN&6r=Q`Jj>cKQZ6tCZx~!@?kns zuZAurO&slt6%9oec2tkr=H==CI^LYI)$2xb8hiGQJXlZh;`{&sueqMS%*q=^3HJrR zGX8DD+Sf4o2I)D0<7yCLI)@M~CE9AOMBAe-qMmr&H%~w1kCWYZ6&Dhg3rWZPXffAP zbPlFT;B3bR)5@S@Q(g8>%>9H;#SnwB75$&B9!j%#jrBv-S+auH*45^mjgs|(P}*6A z7M$!B;{Te*h2iR5Ud0NPf|MuB2qj&*KK0F78$jSzr8pf!@4&!M+s-zLlR{yZvm%V6 zgoabVC`^X`-kQ-N=PC4M$xJtk*?W1I<9R=(FN^6vbyvCdq)u`YZGx?dtvZYS-8fF9 z&uFM)$AU(Wa?*%LJTN+RD)D!(QhpaQo*%uyvI3JD{FqNdytrC$#gqC; zK#(i-zU;zB{ai)2bG|T;NMAH=ELZz~-5ed!gWC7mT(Bsyq;q+;{b)^0_2^eW;__uM z);i)4lUk2Y9vqUb&^4R<74cqLU74d*!K=5@qnWk;;J9MY&Ph6#dC$dSF0l$i5qIcS z%;5VSKPa+4^p9#wPb)7;9iDXN#^mowUhl@o7a2u;EK7v2r?8qEPc(gazv0e;kKks!RKd>>+)F zQakIYWj!gEOFRGJn8*+Rh7s&+b{Qxe2#%MqkXXR@RNFV@Ezr{`!_0Rqeg=XWzll5M zfz>SQ+|-h?N@nJ%^AwC7xq0l8>IUKM@{^n@DG!tPXnjuoexu@L--Cw2H*(qDzHz}v zi0K}N?HW5^Di>tMajyVjkJTOp zk@|vIW=}k%qOY~r=7D;>Q_Wm2$Mxs@LLU@)b6)~}fv`PR?e3R7AFb9`1aT}cm0Cg% zvR{9kzz`pOrE~+a)d*`}0(^ zn)EK+pB?;UyeQ3e@v3olWamiI))}$)R5DjPhL~h*(GAI3^6&z0=s|DAla>=UR%>5G zh5czeVpsqY**p2;N#BunTznqM^c$1+N_%7j{T)-woMM;Cf4=hGgR?!@$00#UW*vA< z?pdW^nL!o0+4JNE$)t>P^STmM!(Ya>?~Xk_W_bS}PM?=8n8P_(8|EluJ*QA3VJ+=x z?Pr`9H|CL}O!(})HbH1x4@60B+#Ck3%RuMY`*t4S9{~9i_xZ3}GdMQ6209g@@GWuu z{~(}Hc8a&>%bhtWOjM6SZD}VbH?dlH7 z{6N*4Xw}yr7#oBp9QCZtGB7Xq0ks8t%tx_XR$ZymMX0jfG1?;Hyw0UI+_*(!QNrGr zbmN5)c|zKcp4rq>h%eI-%qkva*fs)IU#Zg%0#z4Tj0}`PN;MaTPSS7mQi*PIt;lnC z7!p6-d*`_rya&h37Wg>dv(B3Q_>bc(72Mr9I%Du$FlPIZe8;zFBfE-b}Sq^Nz-cGb_FwzslPHy zF(z@*6)t8$AL_CR$Qe8sqkRn%pb6-@NZb(49?ky_8i*@Y1nXZ45MM7CIWf2eD2mv= zhK3Ov=FY+YIBuA-FgQk#F%uH=LEPLo?9XUWT@#r_43ii>KQq~fc`EI?jrb?oXSD^vvwCyBS`D_f6MM;G%K5SFHfT>cUV@r&Om5@ zLZ=z&$DZQ7e_URrRVN@dLga~~j5zO61eH7P#j52Oo#stKfoRA%ueS_CWznBD_= zgf=yYr+k~njA$x9S+IJ|12J(pKY0ixCR)H>%NS z5s@-ofw8~`Tm^h-HE<{LRVUsWlTK(n)jVR#n!T1TQ0d&TZ!L`y3Ja_ zzZQws8L}4#2++bOT>yH32?E6yvD|Z}Ne!y?TSy1&Lm3blsIn`_2e!lrBW4+71D}k^ z4a_%bY)1@p<~tnY5pT^ZeU~aD%W2SPbQw`V1VQRiBnK!`KeIQ2iu_-9Iv4fLVb^H=X`7f(93G zcLnnkcKogff_40mOItHp$eT2^SxTXZo!wbZ~FDq^J*RUd) zpC=+jmn-nrEJxZd$}{TmWL6vEU=fJB<^Xq^PV~;azMYpQIP+3@4f}ThjuOXA+#vR6 zk3)O=7|lQ+bt?ss2GMJnUYCH*V8_HgwQJqBV6<^5H{yHzs^Yv5XZuiYo2`O`1RJN$?Y9X zhgs~EWuA?6#<7^*WkktdJZNg=5cG?f!065(r9F2Vo*8c=LZ>2x^{=GLueK7eZ2CTK z@hn|dr(cDgTeMX@IK1m#@U@kzSNbflJSlyO=-yLfxVyb6SugYmXJ&}}$)>JpS^DkC zTMTW1c&}#>YOWhL;|OqP@=CA9p0Nj?(2G;0T{7kG0}NO!uHD|3ro8zYKlRQVGk9z$ zPkmofI5oGJ?$A}5AO%SgWhNyv zldCxGXtnsYlSPI_U18LUZiKhMCwT-e)eBLpv*W&xHc2}*$^JRY**f$3@9%PDW4Py@ zdx;Xr2gm^kT{cod5ChEe?%7X*2K0!8{?!b?%)VJBy9Z^ zqR6OnG}%4_mh+3|xw*X|&gd^hk}+5RZJje7Dx(cv%0$Lp8D!YKKD(-jwFH&B9)#G;SGm=;IK&g7NPK2$4RQ7c#~Cvl=)Sl z(Di~V>xYld@CJ6ei=NKfA3|5SNy3lSV$N2Su5GSzpN+Y(xPB8Vf(xAqs)92}-Ffs4 zDvXH793~aB^0DV`+N2Fu*5&~fgy*(>_q(HgW({YYx1H+)0*FJq5(#ii#&XcbFICz| zqc6LmHfI(90D>0E-pQgyOz?#A&f6PURHCOUP!9D-bjTc~bB2E!hkcmzl;q$>?`RyB%o{v8v>B)@PgP5fYA=ei6DIap6T1}$gDLs9DaRYnY*2}ME zBVdGbHKgjTyzI6G-L_#0(>>1P$_^nc*#wlb(lT&&qzB_Ym086V(h;I!YIvmC zr-crJxJz12tXb73=68DcI#`=fKVym+r|RfuKujmn7-`M z!%93EJ}9zU!iVJkMlizUnpQi8J?+N0yx?uz-TdqYS?;!FXMcltU*r9GA@kmLuqxK# z3XG(TJjNhO!=^@yrILp?rh>72Wc4b3hnNom$gfKq<;_7aS{$$i=MYy~IQQ&ZQf+-< zPR`ZF{uLb4|57}tGKa6K7j>=oWJ;(#O`?WK(!l#CoNb@12-T8oRX>jHpAO%~2k+%v zv_z0&#~`jFZD8(-xd#?lM}s4`1Eqe_lU<($b0y8@?W?ol3km;bb#8H*8Y9C@y)RSI zR)ri39X$bc%R63y(`6Nwcur8@2l00IMu<{Kit90M4_nLZPu@!)P>=XnrlyH6Kc;%xB z_%$L86`hYNna~-NXvuvWn2E7kSQ|N4+x{cVIdM1=XNEy%{$QAq_YebAL_OZ#D+Cp` z^38iO6H;4zH&8PYaVbOM_tjo{UztpmvXivqnJ-_=1=o42TKq}b{TJYbUEr&$#bTEh zzddTxYWRZ73;w*@*;aReMGOHIpt+T_2NMRZ>qHG3jsIlI-02XMOPb9L(_O;_6d0 z3ZA9tkkEuaEXB&)<0m}})&2aPuqN*{gFu}qLY6dfEcFBiyW}*r=)kV{$yjW*MIl_#WNyjNWiV#}H8v@C!o4-VaK`i~=cp>`uRY|_B9GOlXISUM=Qo~Rc?JJVUebk?q`*ia=F9vTar7Pc+ zJa=>^j?dCAId({lWo;CajjF~Vx?yTHDjhuFVaAroP{4?wASNEk*Q9&-&C|6nKy-{) z9pQw_;plUZ{63z)HpVw0>I~jZa%E>D^>v&f;TYV&%NS8xKA)(g{qwXBQR_>kWdb&1 zhvg|P*5WS8C#SFVqhkAsW!odkd2bs=54p9yr&YvYzNL=XxdS%5JHwbPkUV6>1q=ic z?&NFDkq_zL-Q;`~U~a~R@P!~#pik_CPHHIhJ=hg*F~5QWJfh~ggX9+N7ckNMwJX5#k#N=M*FLG(7G&- zlj1-%L;N7V8QA+y@RPZz+1|3hU#>({J!vazMIKnJxJfYcu&UXLiJy9NP+4Vo<$U<8 z{khC1N;{u(h@|@N6~GJ2;Cftg#A_b@z5iwTrp+|8;DM4{ zmvKtN6?31DSGU9kMUcx@Jw)XxM`K^QfzP8dDj7yy)zlp`H&=JcvVY+lxO~h%M&kL@ ztyjTU{iduw@vYOgE7Y{TLPJRX?*#`R2_qMNKx0Pa=3!HLseu@T^Iz z9)JBPv~%E#-4gKTHK6E10rNS@;HNCv=Mw54Ta=sO=e;R)|ANa+8Oon%R9y zRKKK8sehF*=kDjav6=M_G$B&kM@NQ!qRE063=4_$dZ#XP<;IWXi2IL^sGh|=zeAV_ zo{%asUYcbb<)j4SCWuQ(PUD*X7bd%v_DE6e&5~E5msK|Oz6ynen!M zOBw%Vd|~*MTQ@?3)j`~s%euxmLKb;1Ie83gZ=#^es{Qx)DaPr&#QjQIf3uA ztAe45zyn_vzP^A=V6#z`=Ce$CoY-pu; z2g~BGq5<(koSv@iCNE$CuTBK8yS;_eJ4_1ErAU$vcKgczYTaDSx!&boINVrwN5RDU zkj^4Hni|EL*7^U-TviWl&ujpwo=)4*+$!s)H)q0}c`8mUepfe7;^0sS^){Z&EnRXV zKftyi$u_Kmfb1V&cFJ@F1`qYle&agc)BLx%>sb8o=C>_|YIV^IjgV};XIG6n8pf9i zOE19q@E!65cC1Q=l-@`e@G$_%K6avw!Q05Y*+vf0(wMBp-wXaC!)PyvFi0 zoIxL9ohe-&1ihPJM?X_TsuM_g?@{_fQ7m*>h5R51xAo+3(pEyBDB z^GLq*R;^Z(Edj>ZBUwa8EvZ6mq;nEjpG>!vO45sd*>y#kq;C~2u8XTQU&z!}KHEEl zt1CYp@Y}Cq-Q*Iku)Ep2iS;4e6&V{j+l?k^5CJw|oggktIpvtc$qun(fBGPLYTFY1 zJ;3)$=%^p2@Ft>vamI-%%=rUHH9`~~O2~EQ^DV8zF%$b(`&bKyU#&^^&8`{~SY6l? zXQ?72MD2*sKlKIu{R%(IsWT5tE`#>`DB92Ys`PzEdv!wN8ey@Ex$Z}L-dvEX=WBe0 zPW;JeV^%?lEYZe`>7}J*rVpu4Q=d&pn4M=$UVl-qj6P4)RoTb5QwqLVfi*0l(hwn> zaelyfiK}tLFXY~z3<*+tt?3kuH31*(gvU|GqS3R%>&L^;DM-?7u3#)FiXqjbbjo>} znOw8R{4zSboglWqjsH#QIw5T$CsJmuNk9ER4#|yeW#pA<50p~G-HsF+kf%$s9MDa( zK;hZ*fGQ|bhwD#RzgJiqtaY=-B`*a(vKD?6XjN674aJzdx6267$vk3vf+g}>N{0TE z(d_-xlGA9rAmUi#IV zY1!?oOwVYlU*wwc`>TrTCbV24*UyP9kpF4q#xOY;Ll8Vbdl1ysFL61yZ4lA-H*xYX ziysbSKE#xRF{L6v6W<@$aHQ@`sLpxZ^Nf%0Z@>6T;+X0|F2RC1?@XFy{rmMl4%5wx zH+0U8ZbeW}oKG)oXiZ;hA%4TRdnjOfFZ!vFG*|uERTSH1@-dY#>8YeX(V{Y;%vG~e zWms9Og&2Hx`JYSIo6>i)cJ&aoPwciJN)6Ggx(~-Y|3#taP6bW!cNW`FSvC6I6n(228SgS$gCCio^nzD&)To zEH(!&I_D7fZ?rfHZHWDGt{&;I2#;7`=Xes_Sd;pU3qFvS3o0NdPzy7c9O^KqFkQ}z z$fDW6sxu26D4rSoxgk5P>TR;)p5!g-R#Zk?s<(|ExLr_|sSz1I*O=uD)jZoRgiV)> zcVC)+FTGlJjP^!)-v;5Ai+Rnl>q$)@yq1 zc2O1QcEf&O@Hj_23sN6^!PADNHu4+IAQgG!I4^luaa|as=i1t)7wB#RqZ&+ECj4yM zB1OSdk?GVot#?@MrA?Kkqw8kBRMrrV8_M87$`UQy9MTtqutN&H&g}n_4P90U>AlqpJvGu9H0VtyHlwt*WQ6Y%qa#%QtaAlq#oKljw5N@;WjvAYenE~GzE!nm48C_> ztFd}8SybfE#eCLP)a+}cozOEO16A2g?u_PdCU<`9EkpJDYVxv^5QBw=5|V#`H5f5y!&1*F&Qx6h?ZbXH)r@1GUG5u z?D?3r{*=ZegYzWj>eaEgr8w0ty746XqmNdGM@=nnOd5Mcz)X^axh9P5dLl2o#mP8v zyA8%AM$Pda$No&GSd^4w7KV?xL)mN_^v>I6q>3lnVdWb3;K_%~bYtdyM(ihYxA>&* zyP{9n?63#fhy0zKxfdP0W+lR6-d!=p>eGvPDJ4^rp zIG>LhR!m~$%L_CcUa4%G-bR!@ColrV0EN7=7E5WST1_0nQsT++b!i`R%*`4z6))tQ z+-aH&ekZwai>H=~qF9q>12?_BwU9Ml4Fe)ivn)IAOfv3&+JXK`z@7we1)Ie?vL`_% z5uBA^cdaJk*4pB8-vh<*CI(*R%R}qf{^Mgi;9?!@pOZVDTA$e3Yg~{%EM0Q#)Dp)o zQU(@)CY&jDX`O^M=#i8ZWc^M!|3Rm8M5)>T%^`ae0`2 z+~*eAur@(d;A|N=wK7HPdvDW`mdEir5hu6rY!1Gs$hLi$&NPe3R{qp5@PMS!#<_PX zr=o&hIA$UOb>6|iK-^~3u_8b)Mjp9f^({N;92UNK$~O|4>4Rhi*ssMdBbQi@vFojs zS11R=SXXudKD$Ylg8!lgv@<(5Y^FT+BlGl$>r%g%AN&}#1WD>m`sI1VUn)W#gt}1F zp_$SN&FyC=o)XEc2hY3{_@I=}ujOT3fuGwP!BiCDvdvNj0XEu0I54z6#A6 zp!h3HhoEk(!>T`DJ<&M}Tm3K(g4ocl~mK+(ANfxZ-|&_Gybfdua?H#p zm5^7V#l_Iy!f&qp$I(=!3wvG36kCTQbAmkxC8oDW01nj<%sQ)bbenJ88N2!y{jUHd zDT+&H9eG5y5jm03gKwQZ1EZ{beb5(>oW8#ip25mx0#t%@ zuM=@1@qbVMt9Oohy5 z;=|QLUI;H4rU@=O`JwmuAW2r$Ml{ri4Z5$&fQ+HLp@4PGj-Zuc6I|x`@0yubrQ1`X zfKrb>Ek2x@)sQm3Hf*jw-SEtBh`u8X9S+DMcG*48$DJCI0ab=2YP{V0y{5#i7iYYU zgQgCreqWCv+qOrTAkv?B#{X3k(Aj>Gt4oT#ChG!d1lB0Yf+x&~=MrGL2{Awd1j~Td-cc#(l zdBVHnumbI#t6}ndE|OnULrBdxdxc8rFl12ILdk5)^KR4rQ7vuPQ~5Sm`~`!6o)(wN0{eohP`Cp&-oc8;M*9xw&OTvz*g$)$QWC zC$XWg{u=`HZd>x;V1rZoJjHJ993#Ir5p(^(S{qfQDp~+X7o;NLmPG~H#N)Q2QyytO z!2Zx;fR~>fo~DDzqqXg)kcbHke~RpoK*AuTUk8)}ElH;m#-7cs^U0BMTC=pLh76R&FAv7GE`8+XAtBN859m{A)V7HLhVqSB&@1u2H$g zJDs2v2GbFI{ITD;cZa|;2B_o;AoQHy0(IA(bn#BaN(b0}ybCvQom-H<9wXVkGD^~E zdxs#Es32hk>Iv49sHBz3vXR)R=ZJF7|3}lAfJ3>z|DQG|Ey~g&OeaJn30cC_DUBt@ zl6{#<5h@{Mn<2?WaWfm> z&GY(QGy)Vt1#BJNJ{+|)s+I~1oA_so!1mkpu81ACaFxC|9C&=+JZa44UH@RTKf3&v zoNe>|#fsmwZP|HU!;YAosn%AMA$vXVH(1LW+-I+Ou$N#A?5|FCWV4$jKYvSR{84b` zT>f9l|BPGmL*t*VYHd{9wI>|?+kvdT$LV^wT4ikawx3VXWD0(acuaz7pQ%V{%I^H; z#k*tt#tyW-;wn?Cz&~YNMHKuaAI;6OC@P3NXZFZz#BB*z|L<<9dcC$$_ileL|6`<2k`>+|xnp>6veG_{J5T=NalY*J*mR}UjVOQcin&v)qT1tdrsd^mM?0!nMF0XWHqO(NCvl%|_|E$U!{PKQy`q7}eL{7EL@Z z0nDBega0^)XIKK;9&}GVDy|PnLQuIOUA#=F3)OI0_gPazHc>VxT~ek2QB!kKGd>z8 z?T>{V`|6smB+%Se+({h(@+?;adK;n0Lmxwa|3m$?iDv z^;Fq1O|qA?fF^_HfC81k8>^85A7(oBK1B$>vAY;fuRG-!+L?o?R9r89oQoOwr{^+i zem^teBZ-BTWlFN1)iozdy2UZ*xNU7(t$5WF#BSEHVLuEle+*(rA4wuU*EX|av0>r{ zqt1bz6J>sJQ^eoD9!|A8G#&)B0GvgXD@&t({61vWkECoZ{pC_`y!wMMxCRD~Plp!`k&fl2Fo}T-xvbeEu3Mg8Z7MxiWa)qH2>)#siya^q zo+i-E7#E5u!}xJ629nz*ufBU8b7@hT%ZWMmY;UXIify^CY%dqnU5CPSW^v0=@U`3Z zQ+RJE?JvCn42*GX@7!aQegkpmw~qQ>r6skRO}aJ$ts`rDZ;b_SS4-*0IrUc{q#NN~ zobNuz!-&>{hh(=N*bF%LA#b{hLnTO?{AFEY7ue z)`VcnMvRYqh~tni#K1?8wDk~vj?iRKHLVLSueTAQGUTWQpZc2#bCn+SI-;t(jrraYV|q94b5FU zsX@~y-VP;(u&{}yFsT#6Rls6;IfGTaT?kjRg;^xZOl1k-z9Vz3arG8sWdV8>%eLQ@ zEx5{NhM`%s{rOy@H*VlQVFeq$u7M1A8pxhycjLyGW^-YDEbcY>DQ&XLLDC9eEfs5@ zo%x}~R5FUCAw$wu@AKW1UI($--C=($Yh+e#Zrd+*^Ds%g^3#u*5szq!CiVud<_ZxW zOnXEKualrZkzs^A8IxJyGFBQrQ6xt9*x4~_N%`Q_f}S%e#qeag#7(%a5P4Q_vVNx( z;f_Wvugy>SE$&y`kY(^%tkA8Y2%z#n_u#klWWxiqb_7M|fL$XqpKTK`+cb+@Y1+1) zQ|lGPkKrO#7|3(h4dJx7DQvN>3>Ly!&9z6>ZLoRM!K&`~k3%yL+o&heFTIk(;^yRG z*rP&$<$_!{C%hbO-Gom7BIC^P-?*=kFC3k5#MQvHbIJ+t!;{sC17cCE!~U+_BSz@4 zH)=4lHfcpJO#e1pP!Ia)6)QJr)hHD4>v`9|OQu|@T~jHFg1qdoO7FjyeZ@p5w5d5UP*}ee-zo}XPeAIC4So)DU9oM)vwM?S59r09b5r@FXcKH?}hkbO87Kk56Hns%-gNu+#S)68JDMAr)Y z!=1Ubmmv+kb=v98g?tE>`&Lxd%?zNSA4>D@b`GtbEQ_Pv;p+6z=-S4g#W@6T;>27( z{3bS4<6gVVZoSA_V;X0YQp*q86eRkp_xj1C9B?ZgHmkm>@ zv)<<-`qs$yarDc6vK5h%S;gv~22J#jr`7m}CbBj+Qnz>0jTr|EnQ0pP=0$|c4!?PQYVASh-65)P&~X%^ zc}5So$%WrHQ@B<%Qq$*RSFMH}HxIZ-At?gLW`^_TBR*;f?F5T^nl9;&Z>Ghk_HA3u z{{h7}H$RLVRe+j@JnjrC0tv?X`&E&XnH6;DU)AnDj^$C+z$<?5krdW>f~u0~Coyt^ny%2#&D zR-A_5tdFOL5A3YLZNM|SeI{oFKFb2t3>+nqb`A_CQTNpHSo2yOtm~D!ti9A;=4Uko z^wM}>8kA6Ft(JKfp->?|F1PMjduih3;0ohGYxkL>3maSE@HQV+(~*mEnegElJc0Pt zPejYcF-3@Q;EfV?vM$&`+V;f=w3zmlxmf^!Sb!*{3Bhhv!`13jf{L@oaj80avo<$; zBt8>C(c;7d-+&o30AVcCUvK=CABf%H#r9M{QG_{zs}ZpuqM$JFEeWg+fsK?R?uLZ8&@Dr|Qkhp!mXKtCnhem~?nV}4cNqD6QktYP! zN=(k`Nc|xuzFshk$+jX(KY&fg)m%_RyNu)dM6U)QWq-C$CJY<0x>s=#1hgD$Kl;s> z2xjs4HnK%{bJ66Jb~@`9>wH-l`kdB!W61-6-q;gQJfVk!3g8oMXiP=Tm4dGmRKv|H z?mKgb@jHZJUEQ{%hJ;m*&4@8 zo}taJ;#gK)x3Ij*4amiR;iI2xZHM{Ubi*6uF~;6E-#3rCCfn7XZOgTmRxDS!F7lq& zjIv3%4Uu9$9AF4w!-<^e6pI|b6g0x$xS8hKRJM)yRjma-{xJ|+v;umcp&uE&u<&X)91nH#a1B0N_zXY-M*2wztI2PEylEf$9*wYyyp_u$0jRNXfSEFkTsnQE+6~^}N7|=BZ1buW zGYxqGMEt#pEc+T2hHC<2wNpcamdCCT#47&Uc5#tvMr%@K|IJ5{i1B-bCZBeXqd7F;1QM9tBQ`g%|J{TsTxFYToLUe`Xp zY`<&ziy~vgxxcu9m}~2FG}1q9b=9ma21d9)wbg&AuK$u=muKy3qoYv-S}kN>`_?Od zOoU&9P41V)yg4~yKe?igt8h0N#7YMSn9X96Z}bsF&*!yjn6InB97|x)iLSgrl#4WW zY&U4O^&Vqe!L?~}@Ea{CM1z^oIr3$mG*~&F*@3w5Y8DpuEr0F^k<8-&hYt=jdgt46 zww)LUER)Pha#q`@!l*Z6O>*ZF5AE;eMGJ}VxbPkX&xUSmAr04%SlxIu3Wz40p&6x= zmzwvc-!2e(Q@e@rRYz?rDb>WRxdhzO#({HV=N5-L+%i61JtImyDP*=TKOI8-%RRVs4)s zOcByM>#icCpm&a~#EU^R~;*6T5bX|OqpP1-? z6;bg?=L>12?U-~X4;NT3g@O^^26^>qSf5T#NxbHbm&jY08NFwm^x$*M{RYzYKmCng zI6FKiuJ?@e3apI~s&V(iY0|C1*uNNiDbp`D(A@KJahAfwK0#lLQ>zmklo7dILLP`b zKOV$A^IUu0!{2M;vu&6^=_xyZQhJ4~r(Y*Wg~sLe*ewtSKDUCV9Tm>SyfVcyq4`oV zg*`J!_A1=&01BagIZzNzkoDGmPXqQ*T>uKSW*&~8Bh_HS2GKPi%TK#av8&ZM(XA#ot{ZywT0vNo#Y4*@VVJYG z&JWIc3ttg1qeA!&_)JqG6Tk5sdWzPfEWegnR%~|VZGHl;a_hO+qNl|3UbC_2r!Mj@ z@8_tZ<5D&|9yt#(n@V{n3!7|?bz2Yr>h9hw&MS3aYq%6%*t3XY@S(;$h~LBeL~9MV zur^cqN2xJ=9{oR8N1yq3c@oAjp^9^e{8+lDFZo?AF}-0MxiLq5S|nXwHCv z(+?X)?s=M~OxC=1?Y`#+t}AOj{VTtCPK4Cf^1KL)tQx8;VT=s=A$O3^o9nC*-Xy#! zj#=)(HTq9?VoHwI^U#b(3QI%Ot{~#5Z!SsDRbfy#aSNOAgiu>9Gf~zlRu+lApe>x~ z#iH{?I?p2qvRK?UE_5>*0!?8Br_Tv$;Dt&3=UCmdU&)9kx3xz_d^UDe8%OH+orp61 zHfB|aigm{Y3~We*%73zWDULe0{Fe*^isIC>>Q2(x*)N@>=flI0+QiWi{L#BTtP}Go zJY`Xv2|{U09lor!rs(8a5Se7<`8T>n6c>^two7e@$yjj~2~o62T1Z_9XswGNxq4^) z2zB{rd5vy4eq_D%MD(*-b<%^L0XQ;t6DhmMEKS@o+{hvD5N%=vzb1MHVMk*ff`JqFY63 zN_oCl)~oh>#f~70_dKUtF$~%_T6Us370TA>vIR|>R!4LL%f5{1?%$u}o}%|OfP~4o zhaH&vLY-?bAZBlQIxbX~8~*kR9l}Qmm??mX!~6~V7R5xxL8{thIsGC1;1J}I1zfd# z$T=<-wgvtVxb2={U@VGSnPvuLvP@Qk7uadNH-%W^@?7IMB_(?d$7^kS|A_Y8)&4D8 z>(r;a9^LZsJoS;)iKm$I>|;EpA;x+3&9F|u@i>+LsGIe0Bs#x7C1cSIEz(6>P{tvc z>5IZj&8@z(#jX95b@5(QvwZ3sd}MczujK$@Z~y0q^Iw^G4XHUi2hgcml5G=_mqImc z+G~kUgV(U@4;N}TY8I{i^YUx~hMQ{n*6B)nN;~poy5-F*!J>87PG&#t%E~2OS_@@b zcja`1WE8sVq=gy%2ky1j!p(`p=D4EPZ;MLQS2Wb8r!F_ckn1l-oMl(6Zg4f8+(!K5 zm0ok89)nLIU=Z7gdCK?x6+9M4x<#?X*XJaDAlOAk?aidy^oDVETZl&x&Y&TAu|D{4%oBA!m`e@3+?8aAtU=v3v*9; zx&HguHDZ`}xz5+A&wVQB!}$7I{#Ka47-cI-SY`&$k| z_SNW@7k-)|4o#XKlz5wVr0@{4c!HT^bS*3Yj42BNsYZA{2nM%hH! zYojIE@zOFO)x$lHsIMX?tXItFDb`4a8}VF=vaf*dA@V+frj@-Ban} z=|l`Ner$wd@lgre-Vb@sM_$~_EW0(r%`Rd|Aqq@{ZfPXhpi^A;X&O4w+wS=mbVcS7 zCBci@h()UvUpjUK9i`i`uy~|>_zWa%SHxmT$Hh{(rlH4ohbLTvpP8Z|+c?f6;CM8l zs?sx5AgixUP*=M^iTm_R5V9eYmF)vR8OsP`p3s(i5|@nKXqDj| zxIWaVX7~b`;-yO&df!s#JT=tJFym7?hbDh(y%N$3oE3RQ=ro zOpy+%DR9ntY7049IC2m-!wDUD`Wg?YTnW*DxF8OEAX5n|d+;uq1H)h%($0FCwaU%Tg>(MetdWJ)qRn7R*rpsaKln>s014nHhyEzzMTscVpaXa*IC``fJU#{h^#_p2R53gAbmW5!x6Z~*zF|`B zEj?_5x(-bme9QLSIA!W111pY=bJzIa(hMWV{DRV-$sOe#j=`niI_IjnPnaVlCsc?_>0 zo6gj*+6}y+w|#kGeCwjDzuu3m=(1Zvi#TWrl`g3QXm{Z_-NlO4DAu2SCzOi`mAneP0ewE4Iw@uoioF<=wU$79AFDOjKuH_G-#fJUx`+BomS$_HRH4!^xrcabG?VPcQ2)S=j(H7 zC|AU$$O2ANAP{;{yVGdCun#)@mblyku|qiLHT=JKw8yw9F8E*>dxAlp-z`GA5ME*b z#P^X%bX7+Axz_g@hp@kf`I&eC6XM5g&W-2?E;kJpMV98sH6!Y}Np*-U7pphDN5(o&Ap7@G<5#j4 z5xL$eVqId9zm%9=F~p_C@omXD|6h8lD(XH3Q-rK3hp_RVdya$`);Mj8<;HDHIAXhT zMY;GQVuSzHIz(kSdh6jr8f!wjW95-KJ)xHwuz@RN^@!~IkAqMGW2lF=A`v|g>8cE! zQkv{adM!(`tTb|U1XZ?nFXZgmu(Fe6HHW0Iu62R)j3OIlDpD!^ZOjd~x^A4~MV1%x zk&^d!q8x6NAc$k!ZNS6QW(IVXT6{|x8V=ux>t|^M7PAKKR_O`ifCDuJqM#E`2z7fZ zE^FA4>PgjgELaw?E76vi6yt0a>IsY;o&Tp)QES$2xh!3|=FVf=UvE3SP;V5Tz&zXN zrxP(oVoP9MC~K-8pH8G)_azkh9b1uL2H~jh2!xI7Yl7-y|8aakGeWV}tnc_zY&c!) zDblKaBNTD73t4=wdt9REDa)4Qs%|sdhN}JWuMEp(P@FqI`)v3?t~CV5Do3O)+~zsBRk%HD*;$!Ke4K8mi`i%YMG4 z6k_NGdgmN3j4%=(osEY!9pNSeB|76wc0579YETA$5C7U0^K+`G@{-s8OxaanO|aDC zY36Hc!TFghLQ_>zo!+x_`O)(#f#1nTPN^eCH<2EG8J1g{RFK;RxY2mXt*`F(h#yV3 zm@Uij)4e-pN*;<1kYDbu#El+h2-KqUDT^t1GE;+MdpU=1&hx!$%S;Ob>W&%}D!~$( zasjD+2%Aek^*qOo3%z1vBOh%)A#lxY%<2xI=Fo~w`9(N?<$=PsG~_cF;D&QDxVm74 zQ?#_KTk#cZaya$18o|Rbh->8dCc*P}@jl<#j4&0^NL{Z!DN&xGix)VB!&IiK4>RB6 zMswmsBs!KLapRob6vXvwpckbpy(4_n+~jAhvNEB4kT0>g=0Mp2`U=+B!fwSz#pdE_ zrF{tMv#LQCtS!_-ZVscz}{u zJYjDkH+aYuZ)n@M;yy|Uu2y<#sfVZobx(<#-^kECw!1z(gaQ)K@C9ub3bM8vE7>&> ziRO2T9ZOa*DSBPLN+M=&5cHV2L}z~qsug9iGVT!WzEgkLa)G5we-@&Slq9Jvv_Hz$ z--WDkb+KSODgMs(wzjxSobFbNGsLG|FKH(3$ao>2dLn(VrzcY-SH_+7*V^c%aN1gz zVl$HNbYd%P<0m8vHMckR^Ayp}wd8MB=5#YJ5WA}!sL(75c>C0gjC-@Nekt!F3~yvL zbRRTNp`?8rc8YZB4qRJ9}J#-^M~gn22ybaIlqNlCRO6@(@P~a0!pOJqCFK}}p-gT2 z^_4bCN0lIAF?d_Yh=EJkwvQ+v#iEyNTIhKCq-&CIPaUz8^j%mMb~qMAKRWsd<9pZ3 zWyZ?bP@B42Q<=LU{E>Hj+Wj?{eA7>2fjL zgR=g_Q}q0kGl9L>qVS_?_4hspWWLbZ9FpyvAX`RxD5`?5Wc&)b3tS#6vWLNDKj9#B zib6W)et|D6I6&V%DZW}A)4@1K!+5Wxk7I+!Dv%rC|CmFhq#ZQJrv+M9`7gqiD`4Vr zVwSI?7ZF}@xrye`^ijlgFoj+rhf8-PoF+!qw?DA4npdN!wWSThf&TEY&Gsl5bBn?_BV!e z-p)*{J+8(V>5M3}f>He5b^m|HFTK7vC%CSaXtLOgIDMgyD{`NJ$eV44o@1zEN}&yE~i$8?9$5-fFO=UOWer0qPvx$?R;2%JwBiD~hU{xQH`yqYzA zAx@z@<5F{a^B?2~d*kYlajcHy`=9K-8bFmo4*cm3Nv0<9n?CzLUs?F$9WNgk>VEmX z!VzV{hO>?g6*M>#&L4hJcp$OqQ`MJavBMV5VJnu3q}|UUJGkp zr|~XADWa57)u5M0HzR|%{H)!)WUq8Q79hX{T4ClvuH(#Zv+MMTRfLf11byBJdl<>e z7%kp>^tbz_`JviUFRZm0>_ED-d#UV z|8|hnUu`<*yq$ICr=uO^OTAGaq2lWn;%9s;#&~x~is0wj0TxdS4;xixXhS-f5e>+r z;&=5x*x@(e{F-4QCH|m&DYs>BX@^BVbUe*}?8@wQl+p>k{6xmsyUP|}OnWQmUb7ZY z1c6U_3(yXA4Ic@BKcR(Il_oenDos(dB!+V{{t#SkeD z_l-1F4*~FH7Ilia`v;BS#u>uiotVKtQQA1KJp z1h5>`1(_T0-A!*@a?M}^XX3AwMQD{}m^=Bu3 z!r>LS;c1u(zCarM$AR;?!1B$vg^KVv2qydtA%4DA#e}Hco}BgERwLdoEzrIer7JmG z7Pcd-N?UQm3fqA{*yV-$?l4AV91LeTN3Db}(kb{FYP)xebRjWP<4d2YwLJ5@+;*E( zmst6O+bHqo^BV#V#$!De(jwWP<}mk4BGFsZjGWa(7WdyPk*#FZ;@_^P@e=(COp&1{ z>rd#PzeSSPlo`@(NGBkSr{u3(?tQ1=Xt8!%w_+Z+aTD;iu74ar>dEQl~;<(9JZzU^#`zn^?1Uz;A$=V#Bo;a-G@T z>3#YiJ3re4wnGL5*8K*H>lHz#*?d4C5)J8xCF+M2{L5onuWp*2C86_O(_MITVV;6r zBa<2qAZn?&xh3(D$6&tAFWro{drqpB-e|7H3Kda;gLBuL|LWd%>6q!U2;B3_-v~*_ z(F9CkI0IVlFJ;I5jYgWg)wC*Ngaq!()NI`h98AH!BV?JAGoP@BW9uxTW)>ls8cECC zdIBo|(X_r5=NmLWN@AVJ`EK5E*wmn+eJ}iznDID0E!^noal&*unN&YyM}0=i|NOMj zy0WaYviqEH+axYQ(#`Kb$FGL_3BQ4|v&cM4pkO zf7JeAY7|=bR>Tu*Kqg|y_Q%2;-AGwe-hEX0l&pfV=Cu=={ALM$G`9O{Y@)F0Gj5xg zp)Vr?FX)7^ffO7_@L~;tu?aY>?gsp51k^h5sa$>e*{(iHmJK zIFJ|ExwFB!x7ii3I)@RRE7m5 zK@xdYqpoMHHMH`?N495iYAR?!EI_kXJ1}@{wm2f1oK=Opy6djlG@5b5ih6;5Iea`T z7_<=HB7gVXd95TbOBqCDar@_E3Z8n^Ax-OW4&#V&WN;IPf|H+O`~!JRZre6fVEO9! zS~!E}2V*fUzCZ^vY_=3UE}Griov3Mc2JmTTz)WfYI2U)oc`6%1Vp7`9^enbRcX3kM zeXy9dSx-D5?$ETe6qde$ToVaoyNLH-i3XsIqaXiVDK^~+&Rejq-n#71U;n^p89ed1 ziS(UE^mjX0YXwW%Qlv}p@Kdxj$0;bU#-9NLIZ)42V! z4-C$L6sYRKzdUS)lq^1B#MbJj3jv9#r6K6SO`y8^fV8*M5iG}lr0GazNpmxZQ^haOK8hV<-84*5U3Kq8 zWcmbFORr#9`wr6`QFL8DFEB$AUaV?;!8o!|vU#NN66&M1Dv#p3$62>`-+bPiv}PPq z=PQXwvsW$-PRCY=PU2r_sCC1@y4GN2&!26hhHPnFSJ%e_3DDr2-_OA%@J3wZ-o@%$ zjBTSS06oFJ{a;$Mog?Rxue_@`ppl;TOaPpiAuG}S(pJ_ET61t>w`qVtag!Y=AS`Gb z{t=*wuDEeN0u8F&d*%eZ&y9!z3Xs4ftFrtioHNtoQlh~B6;8bc&&Tw`+T|0v0DKL zus7jkK16(kp_$p9gUk&zuKSAIrr2ov@ZcT1g3?=EH8&MyZt~K~W*JM0dEfXs#xSVP zy+KiwIEM`mtg98czTB2h8KIJyu`WPNMu+vkd<8zHp-&e*GOcl~R&Ikkd>+}p@K<*x zA(qV+H(@DGte4e|-%U`ciXe?2KzekCLsMY2>6XSUeErwM>*_fxm+Ebgb*dd6-`9e; zSsK}D&@p*&^RVi}yB^9XLs+q+zh&80iWO2N=#^(}ml55U|8+k7oR z1{p$_0G?-VUj_h@0lNWkp)O%?K!zx_n>~7G(>Wl1C07H~Qx(7k5BG_~3jqghNeGVJ ze&C>fjb4-sbRRt~X=5OVb;bZwYf0f#Uk1ABIvHSh8p+iOY@z}&2W7 z`~@M%NiIMmOZJZ&9~oX9%qjGYvH%|CD_Dkj*HKET4dI4aK1QkKa-{_GH~^ z2x;z${GGGcn*hLIsHp^hHQ``dh?@t{MF52&!~ZB({E#r9iD4N93@gA={k{YnEs_nv z{fzOlk)ipI-=5o1{@3t6nHB&;nghFa%@bxt*m_K%IBD_km4AkZ$6*6msJ&M=TZbqs zoX%A!$CRHncS|<6R@d1Oy`HkLy^po`IbFKZj*D?t#_ix;<0BFKvp3Ds^#Zqcs55gG zBVA33T275z1Nq0IUDye$C+2CP8gr7zIIsdO3};#^99_>42R#r+p5hIH_1o5qhL;xC zv`9grC@;HbT-l8Kv^&`HxY6vr}47! z%*Pqdf!R*O%lmOv*TFG6@$znV4#NTUh_<+D2#3t0KPb{S-f9(ZyszaWq42!I*dh#u z(@t|O_5j4h?^xIYqt(4?-eW~t9%TVy8ty`i$)fx98+Ps*1urihh7v)C8I5$}IfQLQ z9D`2av8Pxq=$HaM*4GhY%xUT%bK;(ne0XK`TYl>2N)gdM-5(nll4|F=9?GOludDJu zZ^2@5HMelL(KPJ^F$=7_k%sCXn#@XKEv|^GHW^tj zaUT6NgjdDyGT*SIQYlT1uuBurCihSKBED!Vtv(t1|IN z^Iud9PqsYk&#>{B%B`iP6`2z;17%Go@C77F7fMm0Q`}Z%rF_ywfOPdD^4Gl zowA)(H~`(u!ibGcCgCW(Y~ZG0*Nu( z%lirNQvK z$b#6I0N9*ivts_m7+y}}rM53XTkxD~y8axz;IpGmPipI}&V(gfJR3QO|I%&*$lMml zfK)_*O!8vZ_@vNE8^j*>A6$c{;V%N<^06yOh1ruV~C`)HL;{BXt*4Ybx z)S6q7TJ*zww1F=oQ{|I~)-P5I(YS7cF-53s?Y4SloZ!n;sd`?VdsplGosquW%!kaR zYR*}FA*uERtU%5bXqWoKSe0$xNSf_E_`NcYwRe_&68HTzC72;5I0-5^!MdxHE?aId zR{1*RSh7vkaaUq;C$P!27D`>SbRXgg#?h@1Z_pY{Lq{=$Sv3Kb$%+O#n8nwn(Kd?V zS)f}DlrC*ZcS)!;y{tn`9uwm$+cxVOp_n6Sk~|D~;&WJa*-5FIh@jQhAIX~<>bE|& zq@e3|U0le2_Iy*>$+vv7m~dWgaZV&z=52y4j%$CDpd` zdLG9^{)$j>4*wu1fuf;z3PJ`b=npS45aYT($TS>Cj__3jLOv!PhgttxufKg>{G6&D zhPy9wF1=GGz3e$TQstcz=hknMB|vh2me7X`LqB()2Yn}EP(vhYPr5cbl_E;pyx zhrCa1K7&r#rlz>mYAgBJhqfX_qGN-8|3(4BjPW(@$97Wqh0-M{KjII12bt%)`cZOR zZ8Ex6b>ow@V}HhJiDO&o>hWlM;~%Gpyf|mszF=!+G*))_sf&4-w#??%SN~QtpKwUrs6fQD6_F|}=(%{Z4_i={YSBB{ms;w5rqa4LpE=qQs1zt%hI z$(S)TPGSgKjgmM}K7s3ilw-oqW@QYuQmHgIHriw9MY~2;1Z(6Te*3tDT01|;I9nA+u zfD#G~;?>q466fv&RNcLke1HekyzIUk`cyz%e#eG&D*4|C1=bO2`ApFU0FwX5RJjmR zSA~Kjy{MOcZve6>YT0;B)u!PCBpF@V&Elx)q&)KMp@_|J8FB|v?YZN$K6W)01H1hF|S(&A;QDqB=>PwAif+7OV$JSsI>eQFumSj zqsLUP?e)^u2N+uhJmpLLY-)Owru#mln-BWZ3L~xoPc9p3N_He@m%bCD3b>b%%0IB^ zAHTsTI}WHQ&_bilfI&6{6;YOp6F^s>Olta>rXv9Pp7ezceubBKK*;6Z6%5ig1jw`~ z`?i&^1hV4Ww3}C~6gHgf$Ixr=LQ)4N0FwpSgM$2j_iTGyRBTcG@-Ms*9)O}~?IG&8 z74uKbL-@T(FTz(s=TJu5CyY6%Vx`bK+tqqn1FG8n5q5+^uMbz=| z!{DZ_dT4Wox=LWM&9`GSL_Q&dM`mpu=zFmwGei;c4Y^BE3&2M{)~TNnOUz;tqX0(U zsXjb;*yP!-9@XJlHI6Pqo>YpYR+?u2$Mp9*%0KCl1|K(|7R5KdHtWA3;!_=jdR}7( zM@o<|)V9L~9!+S-^bU0~4srHB*v9uWa%twe&PvCf9C0XT2^tdg338T8Q$(W zn~^&u9FpAWlQzA>mxZ+(PghpjOZTDlT0ghA&V#@fq*`WbnuAI(x z&2<(G+$uflb$b<|kz>C$F&+12V=4~{;T3ArKlJ)aJv6WWl0ebz;%~b4a#=BEnC5tmttp7hVG>|>Q~V*X=SA`7mKb59n!>I<68D0y!|tBpy-42?*79) zga7)O4y!z_(_|BoYvibYe_HBh0n ztMlidGWc;%tHl}3p!!oU>md7hQ1Pzmb4QPO!KTunRe6Z{hkpvLeH#tn`G-e9un|*n zI^iqwuw&jaFsg%HWNl;7E1(W6mVguo0EjQ1q0hxNZMU~wf6omJJI6@&3jChH7yz#& z8bOPky}*1A`53aBj>@m>Jm;eVUo)V5vZI$TWJLq^FWV7LFZlKAI(!lO!}ZSXU;j*r zrA0uBW+(X;q`%se9bQo3{mDcu*=5r$Rj63xe`c9pU_-C6rByfT%}BNlpM@TJc9iX_s+d1C+#KyP}OTc_-$)FMFISaTLgBb1);`f9i!~2RL-m zZ#qqE!1W*ajOVuF_q~g{Ct`Ckx%$h$8wa8RAD01TV|qk-ng6R*$4TBe2AG3S6! z&70H`qSpWhjF;U?oPeh#kfXu@&9{VPN8_b#2;qKDHp1eC)y+KIey9Yk&VxGOZg`)w zIWw#JB+9`>D0W*oQQGM!v6dI-ir)M&gA{CGCcs#B$ekLuQt4wGhlq1H5nNT}vf-IM zhwE1lcE@}g*`sk_2ERk?fb$sh;K+~CQp_-tQB;Oqm0Qwt>&|vDo-6bEJN8^wNghLy zwk6xyLGvFKmL0>r0E;P+?n~+#^%t+dX0+yrWNa!Ht$9n?e0g;y^4Gt6#Ujy>$SV98 zp%K;qrIi>0d&uLSsh>c=i2JCGc)2jB`Dy-094E2Z`p^xzg4I(-=j#wjE1N!BPv2ex z(E)1KJl8}`T$&iEw#kCpiSCH2)n!0)G}li*XUM*a_*=tT$t(3$tUk~3j))>Y z(yr&f&_6_MR718By2OpZqXt=j=bmkP(#r=5pUNN|PJ-;%fK$)Do~Jz`Q9*DI`8pY$ z_DnDtqEy!PkajN8gTE_c5g?EzmMzqU* z@0@=#M0|8%`-6q3XF%s6jL z+^+Y7KKpJlh@|%h7>`OTSF)Zjl8aXS9KX)BXqaypsB>}XE;DSH&eU^z$zH*(-|R-p zi|%fFBhR&FeHhu@P|2TzK|Hgiu7=D{Rnk9aO~L`fiti{6J-r5ZM+5#Nn~!4A)TYOu zU842w@fEI2&1peqxuWHLj_???#{^vY>*sE|6}Y8V@A{TzdWr> zdH#yo9B~ogcOJB_SFr@@r*YGL$b0nC3Zr$V#D<{I`y{gtUkK36{~`Zk3N4;hgleRN z)K5j{)wY|*$5O$Yvxbt<+Q45kwqWx#A=`5_$p^muxiP5W)Gd<@mmsiSgIT&k3$TEV z(jdL-xNlMqs7y8+^K4AgGdK-!@rKJ;TST3@D$NmAz2e>UUx4ijmn2CW$LAYL+vA0y zYmfS0C7c2s{YZ9$3&6oCc?oa)!T0d{WvNo8JmD%c3Fm-3gl!+bSlX`elu_|C9y{PO zGWQ^DL!#%m$LUOFJVZ1!FScX&VmP{uOxM7l;3=8gk1sDq&yfmx=CZymKgS|K4#?w@ zO2f7*zYm{EFg>0yr@u5^j{NuYSs(vzC^8r#p&0e_lBAZ3VLnnzTm9(N9nS?7USCcFRlS!)p!k7q|1M zL%(N28aK@f^{>qS&}UH8Lb{?wTjbaKqtXM@`()x~?!uSaAV;%Qakb0)<`LYCqvF-s z<9bFz3&j=1{=a7pe!P>*-t{Q{x#(xUYHbcI`a5y;SF*getE*U~wivrsT%yPKCPlh; zCV}H@*P8j;YoD6q@q5EaXaVCCjO^cz1G7Z{g_fHRV`ovOA0SX^?g_+XLV?H0z9WIa z0=M^>ff-J=bb=p@SULE6X0Kj6)5&3sST>%`?R~$C-QU#K*N^6y3j^FT2V5S2iT%&b z7P7MUT*mBg$KGRtg{DW_9vu7zEt>atdi{nGM$hc!gK3EcFW_H<>&#f36X6K<2Zk?? zVK}DyinSc$YbT8_oI5OJuY~w`d+p4G7gq~@*~sL&(cAJgN1cr9=7dZ5-}r?Xx)sfs zT2C`}8Al%&1l8G`$G+p{{^|PfcoLL^gnX2b-Ttw}^@$VnD{EnheuGv^)uKg!>;x6C zELzwp_BwCrRE%1)Z|`fayV)t%uU|QKPc1;2x=e*Y~ z-@^ItU+l)5QjOGb-J!ouRR?mt4K-<&X)S45yFV_vFr7h^ZzYbtCsOomWT{DC%D_CA zT-wff_$YBRXh0B z9#<4odU|BQm%1B*uK(C;vA!b_<2g@2Pu+D`m7J!%e20n(*PW_Vqc<2kiiBf{M^^2}q+CUhxb%ZU}2b zi)pujus~AUt`Ok(rs+pdI>ERO0g%x&Xn1pEq4d(yqkl*KvGpzZ_n=ArMHqt}%@*gc zgQi2%Rbe0xelU*8yWIp|KNl9-S+2Jiy3$!X4xp^ixva8n03H2`(0eC=WI6)j#Y`b> zSG7xflm|-lobf;RoII}OC0NE^tJ0SIK)MEvdO3ET$`fxSp)(zQ+2hh5OsHMcO_U2b z;}}g!MzVYR|F5YpfrqO9{vQ;j#Z$RUUZ zR{$o2!Yp%wZ~TPWDp+xIEGe0JeOIz88dosAx-|V*&AdA-?Z|rmX}@n<_kmK!Jq7 z^mo&GV+o7YOWC!95x;tGiYaLr=8Y)h(k1q)(%_u=h;w#Cu1hFa8UWt!aklUwb46AE#V8`8W-5tPe&S z{PU*snH}0Y5$fN}${i9mQHVPL=|bR1fD8;}0(l*12&4Pv`&kffR4M?uG` zYy4SyJSr0S6|;Gh@@|xiatu_Mf|7ral}Xe`AtmQF(uGvmLWA}I<^qR8vN)K>6Mb7s?Dy0 zFD~zUsF?ER-gc*{hC5YxYi}s3kt&f-_DU5|c|w+fkGs@KYAvZMag}$7e77pHK@1Ah ze+&cP!zP0v4!;-0&F&{}L37ba24xfyUcP&O=iF%d;$e^551CCTO~%##(SM`=YWN>* zo}V>jvVx}{;d<;ZliaE#*U&|+G}de4Ez)Lo_g(D zCho^MEA&DezD=$`M zmf~A$#{_}$;Uzw*==l!7`kj?yt3mJOIJM-thXTm;TX{1 z7WahBV?{y6Alep_9SNi1Uz4o9rdZU&@OIUXY6!~+tKJ0cpILh59Kd*~Q0-W>o_%kQ z?}J(8FbHqi@kS%e$=s(`9RiukIxTo5i|U_%30~d?kQ*+mnf+|VE9wW? z!ddXPT@BCm#(t5>6W5~~+D4C>WbM6;z7_VR^K)mne1Zuq4iw#mt_q_43lP1}ucu@j6;O0uF?k=f(Yd`957`~eP!B+I zJXyOZQAq%vL3mT4o8_vZq}#qH>DX@zyAM1S~no>SVQdS0{lQ!Zig3bCWKl za05XvV9bT&crNt+g~N3L7LxC|FQ=-tb2+5p+c^;gj{u^IGwv)xa};KsJKYf*vLQfrEoe?^srE5EVl*sbVd zkYWHw93qN)rlF91QqJpzYeHj&QHj-Ybt_42JyX8GN7o*n6r9>{6Sw^P_q|tS{-6S} zvpYSRgxqPr_z27377DxRo?V;wZW{+ok%QRFhtTj~nGb-V zDMwds?`w-zc`{&=GWvk?Sss-X+=JO^aZkefP`bwr2LZtC1`b&rH9HgpcNoMxAnUS6 zDBOE*r1|H~Q*R1};U|QyW#q`s%&BZaQaU|(iMvmq0b4hTnllUtXGq{`lI ziIIG*jqc4uguo%fgrtw_tR~}{H+n^nqB-|rwDrc2wA?7)uEeeHN|t{g{hV*IYir$e zpW&@L&!G}1ZT;zN-uYo-pC7}lmW>8OlJo|P$p?p1Yps5sxFKw~PeU&gisJtFuH%;|Rcl~fS=5o|=bfIfBp{A?1GH+3JKk=T7!65FZ| z?tB0Cnt9%}n>*G#3VUF<5}S8<1ozYPml35cRJ@GR5FyXCQD@*|z#^)}KSwyJ;4N3l z*G36xXG=0Bao#YIb>QP$T5e2f@6z29vChZ(Ju#X7Z)&D4mS`R$S$DoJseCA#=+k3c zFZ0BL=N(TlHUjsS#N1_6Pbg~ZWn#!}CA6X%PpWX5_w!>J4uQr&>PNQYQ^E_rsqF}o zT}~WcZBW?E44?#5e;CnpH~MjZtw()!d~3(OvwH#;{y8apjgPx(=9r9%=A=tNGXIfu z{NtA_Gc83{5pg&|6o=nPda5O~=4+R7F(XbVHuUuUwYIt5S7-gMF{?+3CzxJP23?_D zAN338s}sFC5t(aM+IMG;-$`moe83Ic{^Hm7%KnwdtQdcOh7s)+Jimetl!4=>`#*-R zdRdIET8goG_R%e;2GmD)iEnlk{{3wa`#U5D$yuMNLLps8Eejv4O7+hW7uFmCcjVnj z!kPvCz)=;#KjyzcjED`3dvKt6{Rp^y$W%A;a}x-YE4cklUDLOt9!PpEyn6AR1-my)vA6yT1@Iw@ z{7=4begd?pWEXcg2UOrWf8<9MXq&lUWxP-`LJ8x!om^A&T-_7jma8 zZh|J3vsBvZogNh0hz4Wu?DV0WE>O0uisF%ADf@3A*(g)?MqGgXfe`ap;e=on`z9bp zEcDR@@}_B^-%#ZR%L=HOPj}}q!p{`o@0GYW?K6aGT&`>WI2?Xwhsj#?(nM6zxbkk$ z0RNQLG6uEo)Wss8Uis%byKi^rj9_@ClU08lUaCSHRf41b6Z1<2ql!vLr#g=_onD%j zj-TQuRB#==EI0}CP%*dWg#$b2;3ch^(J1-KWhdDY^JcF!>A+BF9$5JgXf zFD}<#{{vQG+`Bl`a<*qDu_yOUV96@qW2R&VP5dligG&re#il{e*T<-vI&dhA^%~RD z{kF2Us$3m$Kem=c?I#F%99c#`_MC;Z_=GIjyK*uYZMcNq->}pSPQOGuye! z+F7@YkpQ|C{s9Te5FAlgm!@xk+S6`>ha|*PmaO(3q>N8b*({y74JczI2X>(YlW)v1 z!RQ336(qVqx}`EB5Ta z_Tw&!$8Dd>&L&>|cP>Tm01SA1?qXpvAnXUim}KEO%n!>>(z`;YpwuX4CVE9vZUAtY zVaEOYp=Un2iPl{i6G*&%|EI5l>_hK4>BfRvcNsz7Ip<`VKn}4IHb7d%PUiidOQV z;;^OhtV9_UoEjR`P#V1*y(POZ3mD<~x=j}JFtqOwD;jL;Fx#Nvtl7^G$M<_jA1&%! z^6g^vqSCp4LbmD(dx-GJ7;V_eqcT_f0;?N0;qkUa&|l(bK+kWsZV|p_c#-!?Y}6}U z;RnJqOfd->efU?dl}8zx8AKbmug-*;y*E-5TD^86lD&b4Y;&L$+de+~$~Qdyq??$# z?!KQ*zdu~^!>>8OrQ~nMP|QLA->KtdQ|ZhhjPeGf@@cI zLeK26)>F-_10;tztH6l>VJ;gp0g^*u=aJqf;e^0WK1s_Y$!UHV!Dd8-yeT6{a1 zgY@*o>wqjb+Cw36DbqD$Kvv7_qyqvJo=@Xqe)J8PzIh)4F-Nncdh055v&i0n_=tuz zT-N0`1rlez0qGdvu_dPk#;^e71f~$iJS+{8T%bgNH%3bKc3k58X}$CC z>RB<6kEh3QCKEh?mjZ#^!Qe8p$|jd-Rg0ZZcgn?#C8RGNig+Jm(3J?UI-d!tbI!Oh zl#1p*)B?T~X6w4zyGqvA*Up?vGi;dwNr$_cWLL+*r86q_h9%HtzG-%5cC5U-+~W)$ ziui^Ulw~K_zLzm~#xZsGRb92Ixag!;$YXhDhry?u(eAaOB%OcoKH-&#Ag$9fvbN;2K-!xiF7m3bi) zZ(#<0zJkQ&Q2!_I3aO5Sw?WgCh8b=Dc&A$ywJ#ZJat&O)Qr$b+_-S>Fg4z&`-Oug? zZ$In8jZ8jOYfKQij7r4sd%3TT=n}v4NTb$0LQ-7n#rdwV8$^)QI<);PY#@~A;w8E@ zuD`Ld(Iu{0oEvwZ6_Pvk+DaUCO!3~pJwtErFb_3f=s#9h%g`NsQb^HiVtpVEmy2dS zgOH-3K#4e^TycEd&x^X7NIz3?fit-UZpPo-qn8>^m0k6B}d}~M}HK^5O*vH=ihQZQ+N!N78!`++^-X`eo{6L z-1h2pNa1lsq&0SA?aihTDpl0X*0bCv&Su#u+-orqH2-GO9Qhxh%KID)Bt7N_&^{vO((s^6W0JxLsa5SdBMg8V&^TKGz*~nkDvu7g;D7 z_ZV&eoqgakj6J?RLK{7*<%Zo>WEWMMZew0GndI$% z(NS?Ca|U-B(&JeqJzYup4uVkPjwyOZLsS{Rl~3*L%j^pSjk~-Q#6`yJ#TISiiQ*YJ z6zgDyJNP`?bh9ug}bM1?>%>WzFi5=s8}(FxHt#-Hh`@A+zv^utR+wJ%UO8pOpnxVQS|xzET>D$extKZ+~) zY}n8-$?{by6N!UO!M|iQlUP7FO$}ao2yel`-XjPFn%#cu0}NttbU^ zNt7ieO+ARMZK!1rMNShNnUUWXUAK{`!&2Zb)Vze7h^$MHosEpdP;^{{y-)dtwry}+ z2|UnAXl8 zHXe5bC1pIY>!8p{zNLmVqS-yd_hkVLhgB@%=o)u6cal^q0!>n4b)wn6gFu_f+P!?o zsW0-*5U}6)6zKK1SOo2G>H+721dA?Mz#f65@HXkO4yo4oZ>J@Yu?{YRkMPf+CBOht zVanVzp1xOlJ9)kDCFtrG5T^W;6+z|pW{~vWexJ`b*z5dHUh#;|+9!63z(c&L z@RYEJNu1%^GQHCZq&Ny*TUPu6KA@PbL2i?ZPRS+K_sOlMdJ0Ne+n(fETVx4I^@+DI zo4P5u;N{4tqIJH3ky%5IaZze%I=5XGRW+50#R64UiJw5!BYq+N^_o|*de2zb*v88< z)~<6SbfvcgKI}!Phd@GsO^Ck2d-v6({i+P5BL{s(ooGxDp)bF6B07b5!pxh7_xX` z7JG-eofTcVg`s(yjeWAD?)?T|nCPcE?{ZN5gL~&>`QGj+&a{fkh|da&qvuk>JnZl0 z(R;qyDmh;eC%;U3*)S=B;~Rc!knl=nZW%|}e93*v(5@eQ0H#_}tk9r+E~1uqE}f8| zlAg-V{roZdrM~58e=MV=Q&C{wUM<7A1ZE!#IDp|y$YH=u$6MlUmrCReX1hq`Wbxop zt+tMTGuKWIji0`@Ao!HWRdB?j!7OW{)h+(p-jI(~zxr_T^s5Z$Y^%A(7Gk$T=dA%G zFpo$eX2jhp?^Is%C%(5;4=YlP5#ARjPfi~Ey~wu$o9e^o{zj~VmX`?=h2X+KR5sl8 zA}cGJ_kEFo;*qt%AZM|p*Fm0miZ3tKE!_ZyTh%utqK z>tPf?(V$R(P|k_)cZGodfpnMSP>wW6tF(~xJ%xKd9kO{8NT~jo^&_K+*I^e~=tj`q zmL+QkDgXZhK431>kRElRj0@m^N&xHtQH=VlP;jB2bw>0v4yXYKplOY{pw|H2(8(+H zNjz7&0Lj($$(R;O&>ZtCy<)9TX^H>+#8lY6x2F$N1iiPUQEbhk{dMxDS*A~lRoxV$ zXTd|tb-1G1 z==gcf{08h?h*rZ;8n9|erKORLp@=@NjxmL-v33O*Bp-(;@ zRVcdZ-?N4$3Pz63b2-3hQe_`ymXkqIx7?hNQ@z_iFRmK>sODvXPn4Je`nuY^#r4Y=+7(?k5!gYo%RLoPdn zGx`r&&U1!?$==sO(+HWvi)Js0&*nPoufIDwZirE!@wDMYFvAh(EzAJ*0UC~>TeIr7 zz3Y8kONnj&p*75Equ_#NJrXrm>lL14j*@jEji?^4d~Py!&z6f1qQ(B8J{ks=J<8DF zrOyzg^*G-5OD=75o?5CRwI3pcXvMdtV|#|)MDELyHIMrl@Fmhs zvI@Kis_Jlo(l=xpmw6H*TMA9|3~U?Sq6RdYuKYoDDj7gO)4ts>eI(1wt78JupTXDa zBIRcXN}=iTM54;Syzg(sArDgU$)+wj!qT^d0z9Z_t%8bS|2dR@^LUiW-_cZG-y6m# z*(K`Oajo)R?J_RFx3qi3gYr$aC9}Bu-<@W$Zq|E+D1q|9O>!xy+Q-yyD;6jzFtOg%9Q;&xq zsv(|fBUrtIT0bz@UlH!f!T$cX37F5lfJ`UWqF*F}3HA%LROGF~bgf;u8jO|zbN`OU zESix~Wo4u*-6npu#6TTq`8jfg${x-z-q=fr z#(Ewx0qS`e&P20b-6q3@ey7-5ec3t9t~at=4KO|gSj{Z$Xfx`;cbN{p{yr_MWt+G9ph`JzDBj)NU?aN# zIco&G%$j$4J*NTYNg%q6GT=6tl<+1!H0RBJ5tPryQ>jwXQN3cmJ#}coYIW~UGR#>1 z6$+C*oTBt(2Yf7rw*R22^GAzW^}Z5ArChU&y?ita9b(o}Z@+Y#Q5^7#hR%lanX3a`$1E%B+f5X42vIt#NuM<(QNsDIO=L2yNJ(r&rc!sSI;g8lQl7 z6f{kbUW`@tGaBftv)u2^XbtjxcS55lw8Q42^DX_vD!y0scK_lTRqFfuCrLm+8y!D{ zwESzYDU0qnqr$lnw|C&X)96;dU^5r9$v zIVj3R!53*eb)k#6YjeJlHToQQpi6^qG*Q!Cw@X2}%GM~ZwYZ`z;Qi(D$>9~1B%O_m zmu-J5JRnf4_`~O;#&bWBp1G`F2$KBdN!X zewcQPafT*NmVcZDV-8@_V(#VXY@2S=yYHKLu!E&yI|c+dSUTMN3fVc^;l80hxt6`J zs9Tv48jdmV9JjhNH#^XvQW5-oy7u|Wu^quSREi~=_W`wb_-Q4BCtP0T>pUj7Zuc^u zWRafOVbPU*RBN^YW*e=jHgI2g zxJD1Y))+r}25XvI_h3HE@>*tD1VqGk`0*p#!}m z@IoE$brSK^S!ydBwaFSo^ z`*31H54w2oU8 z2ndR+7YS%)eiKdJJ7Ge*f^CHjXl-Xff=6J%Ra}io;LZUUs9Xm+j^(B$+(i{VNT>j@ z;r&WBr#{5>&tRF3p#8A9N16}#vU6Chr#NtNq37;v5*AL8GDduYSrVm&us1@Y@nzc2 zm3Dyinc?y=cnzPmqtJGi=C}>GY!&W0_(O^i;#(lkA>UV4Y;iu`~RT!{XuckJV~tII?>?2+UnLt z4pZoRMC4mkzfJQBhkn#p@r4T34qB|OlN-FBhN`Oi2F43@+&-rgV5%Fb{0+@wzL;Q* zlRgvv)4y*{7tr2v5?$^`ay!ts5##JLZ?6D1?kRgeEHLOIZI&DqID3jMIPrrF7qIyw z&JX(keT)6oBbilstKg@{#8D!d{Cs3xyuAMh4JlR}3>K=Yh)`iZu%%mO(QMh9GRRe@ zo1@L4o`>}}FQ+HbQe72P*m*6`@qADG<C9IE?nWliO4FgYHorCnU7vq^sz>&#k+;L0%FRo~pnzOn|-~ zuJ{{KEuZ?gaXYZllcuvN8h{PhqwumPUqd~IsxG63$;S(yYaN4H_|pnycQXb>lh?Z$F>XOJ z{vioc*z!kvFMX=GYT&t%HtqhMsK|W!2lXrN_o@4DMB`)i{MGhqfn=hM=Igt6gi2=f zssIr66l&>b4Ph$V}ydNwFsPe!R!={gmn^aJp(aA&MWPS`Eqh*erG2YaIK%9jvw+dl#6O%A1wLPh~wf_sjhx7th&4vY9wS(=`v7!$bbj%ZOx ztt{FGG5UNs$n>T}KAZj3qhiQc@9Xau_R*j2ZxQJ5g=gMYyE*t9%%6NSg{HU(J>A8| z%9byrVE%_3R^~uX@ighjHZw&wJ<8B4jD^ z0msTBZd=Y?nu)+Y3#+=}BoQ;1>5ybL<>$)zf;QK?YnRxQo? z1Nf!c^9z9#sYR81cZU_#$Q=!{r>U6KneX;PM8a*%a2jS$2(!Bo990~E!MTkY86iML zKAA^@NX3n2ITp_92gGO58+6yO!?=^!SgCPrTNYD8fgHyYblnYGApnApx!Aly)LvYx zHMNY*158l|E6eCDF8@C61)<$+Z-9(+p?FZ>!Z|o(z+)Vy9UlC%)tc~T;TOD^+wZ$h z#MUz{SQ%Oe{O|69P4i#x&bqz(A_n_L4e}ymHw#N_Fu`*Lx$aveylJJ}SSN_1e2byHP4R$Q|3N{*#r?x*3Hd*)wln zF9Y565+o6Av>&*ik!7Q{?03y;7&MJ%{%RXjFnGo1ZSuJ>8X+|pjUD_(dh^XGoK^_X z%sZM8;Qyb$JBnhSN>Gy~md|u9HT&$cZ}b0}`#{%J52nvO%k52j_tM_->#w*SmNUe{ zczPv)a(DH?c`LX=eqcE7u@C@W%{XOPoqcKnM$&Qjc$LYge5fiH|+l{6M87hOZ`OPA_n zs!v$gx?!Ji~h zve8I|pD$_px>{Q7;!%$*s^0TjdolDhOiZQaNDtjo0IWbb)S$c*tS7i{WDR9Nu#3Gc zfXeR$v@UVNm;+Ho0qHN!n%0j>0M;F#HWO1sMY?+u&_t9YSeHNvqrKfO6T$a@;z1%M z5{m|xr1XL6`CmD+F42OTXGax;%44ru6QH9{0Ogtq5#|KQT%hPOjji8*TmWS|(JDYv ze3f+|h?nOep66hY;FC_h3$pWPNxrD_%;Kb+yF9+N9}^8g@W^aL^{)y(bWuAzSG?nswW_-+(@7Q<$Nu)+F=lzE+0;I`cE@n0Hy0$?TCuR6>we- zxD#+d9q!b%FAQw~Q9b8)keLy}z(rVhFy?N2kOd7c}ib31D5JN)iZ5!67p=Uz} zyo1tiNrVCY+X!#{7m!Z{r!zPwu;@wIfZ!5HR`L`1qAH5qt!?1;g8ZZpUS!(f8DdB} zRqDXeg%}Ni?go)B{%uEw>w-Lu+;n8QB8Wb6&~E2;WJUfDh=BKs^zyAIIUq(uZNGcy z^otAE%OO2MfCwpoOYFTfUiUxH-rVkynIH|TME{-`uVaA#NPlC*y6z8q8gss^7hg)p zDgRuj0o<3sI!#Z%H31c%-EE zcmb{TXAArs*B2N(XUJn{vTpvVdJFOsNJ`pKNrWHE{d?*jj)=4(jhk`~S}+=%V5If+dYyN|XO=zOFv`&*EbJP>0|dOM}G&9h49r ziTZ|!L721`TsQbb9|cB*(2isb3yTh}ngAHB$3jH;^nX90uL*(_+!2z#8pqzqOyMA5Z_-GwnL~k90^bbe;?OO+W9G0~_^t{8Dt-YB=h$9@T7~x`4`2O_$ EKl!}rlmGw# literal 0 HcmV?d00001