From 9498a076eef7478e0179f31b13776c75f6d6546f Mon Sep 17 00:00:00 2001 From: Your Name Date: Tue, 10 Mar 2026 07:08:59 +0000 Subject: [PATCH] updating configuration --- .gitignore | 32 + .gitmodules | 4 + Makefile | 39 + README.md | 27 + appdaemon/docker/Dockerfile | 34 + appdaemon/docker/emp_mos_api/.gitignore | 57 + appdaemon/docker/emp_mos_api/LICENSE | 21 + appdaemon/docker/emp_mos_api/MANIFEST.in | 4 + appdaemon/docker/emp_mos_api/README.md | 110 ++ .../emp_mos_api/emp_mos_api/__init__.py | 3 + .../emp_mos_api/examples/__init__.py | 0 .../emp_mos_api/examples/read_car_fine.py | 62 + .../emp_mos_api/examples/read_electro_epd.py | 76 ++ .../emp_mos_api/examples/read_flat.py | 56 + .../emp_mos_api/examples/read_profile.py | 64 + .../emp_mos_api/examples/read_watermeters.py | 87 ++ .../docker/emp_mos_api/emp_mos_api/mos.py | 956 +++++++++++++++ .../docker/emp_mos_api/read_watermeters.py | 81 ++ appdaemon/docker/emp_mos_api/requirements.txt | 2 + appdaemon/docker/emp_mos_api/setup.py | 50 + appdaemon/settings/appdaemon.yaml | 36 + .../settings/apps/alice/alice_intents.py | 44 + .../settings/apps/alice/alice_intents.yaml | 8 + .../settings/apps/alice/presence_action.py | 49 + .../settings/apps/alice/presence_action.yaml | 9 + appdaemon/settings/apps/apps.yaml | 29 + appdaemon/settings/apps/automation.py | 55 + .../settings/apps/climate/breaser_control.py | 277 +++++ .../apps/climate/breaser_control.yaml | 14 + .../settings/apps/climate/climate_control.py_ | 212 ++++ .../apps/climate/climate_control.yaml_ | 17 + appdaemon/settings/apps/climate/cover.py | 83 ++ appdaemon/settings/apps/climate/cover.yaml | 29 + .../apps/climate/mirror_heater_control.py | 73 ++ .../apps/climate/mirror_heater_control.yaml | 39 + .../settings/apps/climate/trv_updater.py | 46 + .../settings/apps/climate/trv_updater.yaml | 22 + appdaemon/settings/apps/doorbells/doorbell.py | 43 + .../settings/apps/doorbells/doorbell.yaml | 17 + appdaemon/settings/apps/globals.py | 97 ++ appdaemon/settings/apps/groups/groups.py | 79 ++ appdaemon/settings/apps/groups/groups.yaml | 8 + .../apps/light/child_door_notifier.py | 24 + .../apps/light/child_door_notifier.yaml | 14 + .../settings/apps/light/light_balcony.py | 46 + .../settings/apps/light/light_balcony.yaml | 7 + .../settings/apps/light/light_mainroom.py | 36 + .../settings/apps/light/light_mainroom.yaml | 5 + .../settings/apps/light/lightbutton._yaml | 29 + appdaemon/settings/apps/light/lightbutton.py | 133 ++ .../settings/apps/light/lightcontrol._yaml | 25 + appdaemon/settings/apps/light/lightcontrol.py | 123 ++ .../settings/apps/light/lightcontrol_bath.py | 136 +++ .../apps/light/lightcontrol_bath.yaml | 39 + .../settings/apps/light/lightcontrol_hall.py | 131 ++ .../apps/light/lightcontrol_hall.yaml | 18 + .../apps/light/lightcontrol_kitchenset.py | 149 +++ .../apps/light/lightcontrol_kitchenset.yaml | 20 + appdaemon/settings/apps/locks/aqara_lock.py | 55 + appdaemon/settings/apps/locks/aqara_lock.yaml | 8 + appdaemon/settings/apps/notifiers/balance.py | 65 + .../settings/apps/notifiers/balance.yaml | 61 + appdaemon/settings/apps/notifiers/battery.py | 65 + .../settings/apps/notifiers/battery.yaml | 12 + .../settings/apps/notifiers/bms_monitor.py | 165 +++ .../settings/apps/notifiers/bms_monitor.yaml | 14 + .../settings/apps/notifiers/dishwasher.py | 75 ++ .../settings/apps/notifiers/dishwasher.yaml | 13 + appdaemon/settings/apps/notifiers/security.py | 28 + .../settings/apps/notifiers/security.yaml | 10 + .../settings/apps/notifiers/teeth_brushing.py | 82 ++ .../apps/notifiers/teeth_brushing.yaml | 15 + .../settings/apps/notifiers/water_counters.py | 109 ++ .../apps/notifiers/water_counters.yaml | 12 + appdaemon/settings/apps/notify.py | 63 + appdaemon/settings/apps/notify.yaml | 3 + appdaemon/settings/apps/power/power_theory.py | 63 + .../settings/apps/power/power_theory.yaml | 6 + .../settings/apps/presence/alarm_panel.py | 46 + .../settings/apps/presence/alarm_panel.yaml | 11 + .../apps/presence/alarm_panel_action.py | 77 ++ .../apps/presence/alarm_panel_action.yaml | 11 + .../settings/apps/presence/entities_action.py | 80 ++ .../apps/presence/entities_action.yaml | 82 ++ .../settings/apps/presence/purifier._yaml | 9 + appdaemon/settings/apps/presence/purifier.py | 107 ++ .../settings/apps/presence/report_action.py | 51 + .../settings/apps/presence/report_action.yaml | 10 + .../settings/apps/presence/tags_presence.py | 136 +++ .../settings/apps/presence/tags_presence.yaml | 16 + .../settings/apps/presence/water_action.py | 107 ++ .../settings/apps/presence/water_action.yaml | 14 + appdaemon/settings/apps/router/keenetic.py | 265 ++++ appdaemon/settings/apps/router/keenetic.yaml | 27 + .../settings/apps/security/fire_sensors.py | 48 + .../settings/apps/security/fire_sensors.yaml | 9 + .../apps/security/security_sensors.py | 59 + .../apps/security/security_sensors.yaml | 14 + .../settings/apps/security/water_leak.py | 62 + .../settings/apps/security/water_leak.yaml | 14 + appdaemon/settings/apps/sensors/mosru.py | 370 ++++++ appdaemon/settings/apps/sensors/mosru.yaml | 205 ++++ appdaemon/settings/apps/sensors/uniservice.py | 171 +++ .../settings/apps/sensors/uniservice.yaml | 22 + appdaemon/settings/apps/test/eventMonitor.py | 30 + .../settings/apps/test/eventMonitor.yaml | 6 + .../settings/apps/test/ir/zanussi_ac.json | 468 +++++++ appdaemon/settings/apps/test/test.py | 20 + appdaemon/settings/apps/test/test.yaml | 5 + appdaemon/settings/apps/test/test_ac.py | 37 + appdaemon/settings/apps/test/test_ac.yaml | 5 + appdaemon/settings/dashboards/Hello.dash | 14 + appdaemon/settings/secrets.yaml | 0 certbot/docker/Dockerfile | 7 + certbot/docker/Dockerfile-rpi | 7 + certbot/docker/update_certs.sh | 6 + ddns/docker/Dockerfile | 14 + ddns/docker/run.sh | 14 + ddns/settings/token.env.sample | 3 + docker-compose.yaml | 231 ++++ docs/appdaemon.md | 176 +++ docs/docker.md | 109 ++ docs/home-assistant.md | 150 +++ esphome/settings/.gitignore | 10 + esphome/settings/ac_bedroom.yaml | 67 ++ esphome/settings/ac_childroom.yaml | 67 ++ esphome/settings/ac_kitchen.yaml | 88 ++ esphome/settings/ac_mainroom.yaml | 91 ++ esphome/settings/bkp/ac_bedroom.yaml | 116 ++ esphome/settings/bkp/ac_childroom.yaml | 117 ++ esphome/settings/coffee-philips-5400.yaml | 190 +++ .../components/saeco_series_6000/__init__.py | 98 ++ .../saeco_series_6000/saeco_series_6000.cpp | 343 ++++++ .../saeco_series_6000/saeco_series_6000.h | 81 ++ esphome/settings/danil_bedside_lamp.yaml | 58 + esphome/settings/jkbms-monitor.yml | 387 ++++++ esphome/settings/old/ac_childroom_gree.yaml | 85 ++ esphome/settings/old/ac_childroom_midea.yaml | 69 ++ esphome/settings/old/ac_mainroom_old.yaml | 66 + esphome/settings/presence.h | 336 ++++++ esphome/settings/presence_bedroom.yaml | 62 + esphome/settings/presence_kladovka.yaml | 62 + esphome/settings/presence_radar_bedroom.yaml | 250 ++++ esphome/settings/radar_esphome.yaml | 225 ++++ esphome/settings/senseair.yaml | 81 ++ esphome/settings/svetlana_bedside_lamp.yaml | 58 + hass/settings/.HA_VERSION | 1 + hass/settings/.ha_run.lock | 1 + hass/settings/automations.yaml | 368 ++++++ ...low-battery-notifications-and-actions.yaml | 1072 +++++++++++++++++ ...Xiaomi_Cube_Controller_MQTT_Triggered.yaml | 919 ++++++++++++++ .../yandex_station_default_volume.yaml | 68 ++ .../unavailable_entities_notification.yaml | 103 ++ .../homeassistant/motion_light.yaml | 54 + .../homeassistant/notify_leaving_zone.yaml | 46 + .../confirmable_notification.yaml | 84 ++ .../homeassistant/inverted_binary_sensor.yaml | 27 + hass/settings/configuration.yaml | 25 + .../6cc087659939dc8bc6047031679fe062/512x512 | Bin 0 -> 22311 bytes .../6cc087659939dc8bc6047031679fe062/original | Bin 0 -> 116343 bytes .../ec890142459e316df6628907e28c0986/512x512 | Bin 0 -> 25481 bytes .../ec890142459e316df6628907e28c0986/original | Bin 0 -> 139231 bytes hass/settings/ip_bans.yaml | 3 + hass/settings/known_devices.yaml | 21 + .../alarm_control_panel.yaml | 12 + .../alarm_and_presence/person_pictures.yaml | 6 + .../alarm_and_presence/presence_status.yaml | 15 + .../tags/tag_danil_keys.yaml | 17 + .../tags/tag_danil_pocket.yaml | 17 + .../tags/tag_mamik_keys.yaml | 17 + .../tags/tag_svetlana_keys.yaml | 17 + .../alarm_and_presence/tags/tag_test.yaml | 17 + hass/settings/packages/alice_export.yaml | 63 + hass/settings/packages/alice_intents.yaml | 13 + hass/settings/packages/aqara_lock.yaml | 7 + .../settings/packages/automations_config.yaml | 62 + hass/settings/packages/base/recorder.yaml | 40 + .../packages/climate/climate_bedroom.yaml | 18 + hass/settings/packages/coffee_maker.yaml | 103 ++ .../yandex_station/yandex_station.yaml | 3 + hass/settings/packages/dishwasher.yaml | 76 ++ hass/settings/packages/groups.yaml | 0 hass/settings/packages/heat_counter.yaml | 35 + .../packages/notifications/telegram.yaml | 21 + .../packages/power/power_counter.yaml | 191 +++ hass/settings/packages/tags_test.yaml | 59 + hass/settings/packages/tv/bedroom_tv.yaml | 26 + hass/settings/packages/tv/kitchen_tv.yaml | 22 + hass/settings/packages/tv/mainroom_tv.yaml | 23 + hass/settings/packages/watercontrol.yaml | 65 + hass/settings/scenes.yaml | 1 + hass/settings/scripts.yaml | 71 ++ hass/settings/secrets.yaml | 0 hass/settings/secrets.yaml.sample | 167 +++ hass/settings/ui-lovelace.yaml | 23 + .../www/community/jk-bms-card/jk-bms-card.js | 34 + .../community/jk-bms-card/jk-bms-card.js.gz | Bin 0 -> 20658 bytes .../lovelace-auto-entities/auto-entities.js | 172 +++ .../auto-entities.js.gz | Bin 0 -> 13819 bytes .../lovelace-auto-entities/rollup.config.js | 24 + .../rollup.config.js.gz | Bin 0 -> 323 bytes .../multiple-entity-row.js | 1 + .../multiple-entity-row.js.gz | Bin 0 -> 12278 bytes hass/settings/www/danil.jpg | Bin 0 -> 283040 bytes hass/settings/www/svetlana.jpg | Bin 0 -> 247326 bytes homeconnect2mqtt/docker/Dockerfile | 9 + homeconnect2mqtt/docker/src/HCDevice.py | 234 ++++ homeconnect2mqtt/docker/src/HCSocket.py | 170 +++ homeconnect2mqtt/docker/src/hc2mqtt.py | 127 ++ homeconnect2mqtt/docker/src/requirements.txt | 9 + .../settings/homeconnect2mqtt.env.sample | 3 + keenetic/docker/Dockerfile | 16 + keenetic/docker/main.py | 123 ++ keenetic/docker/requirements.txt | 4 + keenetic/settings/keenetic.env.sample | 9 + .../settings/matter-bridge.env.sample | 4 + mosquitto/docker/Dockerfile | 8 + mosquitto/docker/run.sh | 10 + mosquitto/settings/mqtt.env.sample | 2 + neptun2mqtt/docker/Dockerfile | 8 + neptun2mqtt/docker/src/neptun2mqtt.py | 131 ++ neptun2mqtt/docker/src/requirements.txt | 2 + neptun2mqtt/settings/neptun.env.sample | 4 + nginx/settings/site-confs/default.conf | 29 + nginx/settings/site-confs/gitea.conf | 39 + nginx/settings/site-confs/home-fnv.conf | 65 + node-red/docker/Dockerfile | 7 + node-red/settings/data/flows.json | 186 +++ ...-red-contrib-home-assistant-websocket.json | 3 + node-red/settings/data/settings.js | 560 +++++++++ postgres/settings/postgres.env.sample | 3 + services/docker-wol.service | 11 + services/install.sh | 10 + zigbee2mqtt/settings/DIYRuZ_FreePad.js | 132 ++ .../settings/configuration_backup_v1.yaml | 235 ++++ .../settings/configuration_backup_v2.yaml | 227 ++++ .../settings/configuration_backup_v3.yaml | 230 ++++ zigbee2mqtt/settings/ptvo_counter_2ch.js | 37 + 238 files changed, 18119 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 Makefile create mode 100644 README.md create mode 100644 appdaemon/docker/Dockerfile create mode 100644 appdaemon/docker/emp_mos_api/.gitignore create mode 100644 appdaemon/docker/emp_mos_api/LICENSE create mode 100644 appdaemon/docker/emp_mos_api/MANIFEST.in create mode 100644 appdaemon/docker/emp_mos_api/README.md create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/__init__.py create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/examples/__init__.py create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_car_fine.py create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_electro_epd.py create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_flat.py create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_profile.py create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_watermeters.py create mode 100644 appdaemon/docker/emp_mos_api/emp_mos_api/mos.py create mode 100644 appdaemon/docker/emp_mos_api/read_watermeters.py create mode 100644 appdaemon/docker/emp_mos_api/requirements.txt create mode 100644 appdaemon/docker/emp_mos_api/setup.py create mode 100644 appdaemon/settings/appdaemon.yaml create mode 100644 appdaemon/settings/apps/alice/alice_intents.py create mode 100644 appdaemon/settings/apps/alice/alice_intents.yaml create mode 100644 appdaemon/settings/apps/alice/presence_action.py create mode 100644 appdaemon/settings/apps/alice/presence_action.yaml create mode 100644 appdaemon/settings/apps/apps.yaml create mode 100644 appdaemon/settings/apps/automation.py create mode 100644 appdaemon/settings/apps/climate/breaser_control.py create mode 100644 appdaemon/settings/apps/climate/breaser_control.yaml create mode 100644 appdaemon/settings/apps/climate/climate_control.py_ create mode 100644 appdaemon/settings/apps/climate/climate_control.yaml_ create mode 100644 appdaemon/settings/apps/climate/cover.py create mode 100644 appdaemon/settings/apps/climate/cover.yaml create mode 100644 appdaemon/settings/apps/climate/mirror_heater_control.py create mode 100644 appdaemon/settings/apps/climate/mirror_heater_control.yaml create mode 100644 appdaemon/settings/apps/climate/trv_updater.py create mode 100644 appdaemon/settings/apps/climate/trv_updater.yaml create mode 100644 appdaemon/settings/apps/doorbells/doorbell.py create mode 100644 appdaemon/settings/apps/doorbells/doorbell.yaml create mode 100644 appdaemon/settings/apps/globals.py create mode 100644 appdaemon/settings/apps/groups/groups.py create mode 100644 appdaemon/settings/apps/groups/groups.yaml create mode 100644 appdaemon/settings/apps/light/child_door_notifier.py create mode 100644 appdaemon/settings/apps/light/child_door_notifier.yaml create mode 100644 appdaemon/settings/apps/light/light_balcony.py create mode 100644 appdaemon/settings/apps/light/light_balcony.yaml create mode 100644 appdaemon/settings/apps/light/light_mainroom.py create mode 100644 appdaemon/settings/apps/light/light_mainroom.yaml create mode 100644 appdaemon/settings/apps/light/lightbutton._yaml create mode 100644 appdaemon/settings/apps/light/lightbutton.py create mode 100644 appdaemon/settings/apps/light/lightcontrol._yaml create mode 100644 appdaemon/settings/apps/light/lightcontrol.py create mode 100644 appdaemon/settings/apps/light/lightcontrol_bath.py create mode 100644 appdaemon/settings/apps/light/lightcontrol_bath.yaml create mode 100644 appdaemon/settings/apps/light/lightcontrol_hall.py create mode 100644 appdaemon/settings/apps/light/lightcontrol_hall.yaml create mode 100644 appdaemon/settings/apps/light/lightcontrol_kitchenset.py create mode 100644 appdaemon/settings/apps/light/lightcontrol_kitchenset.yaml create mode 100644 appdaemon/settings/apps/locks/aqara_lock.py create mode 100644 appdaemon/settings/apps/locks/aqara_lock.yaml create mode 100644 appdaemon/settings/apps/notifiers/balance.py create mode 100644 appdaemon/settings/apps/notifiers/balance.yaml create mode 100644 appdaemon/settings/apps/notifiers/battery.py create mode 100644 appdaemon/settings/apps/notifiers/battery.yaml create mode 100644 appdaemon/settings/apps/notifiers/bms_monitor.py create mode 100644 appdaemon/settings/apps/notifiers/bms_monitor.yaml create mode 100644 appdaemon/settings/apps/notifiers/dishwasher.py create mode 100644 appdaemon/settings/apps/notifiers/dishwasher.yaml create mode 100644 appdaemon/settings/apps/notifiers/security.py create mode 100644 appdaemon/settings/apps/notifiers/security.yaml create mode 100644 appdaemon/settings/apps/notifiers/teeth_brushing.py create mode 100644 appdaemon/settings/apps/notifiers/teeth_brushing.yaml create mode 100644 appdaemon/settings/apps/notifiers/water_counters.py create mode 100644 appdaemon/settings/apps/notifiers/water_counters.yaml create mode 100644 appdaemon/settings/apps/notify.py create mode 100644 appdaemon/settings/apps/notify.yaml create mode 100644 appdaemon/settings/apps/power/power_theory.py create mode 100644 appdaemon/settings/apps/power/power_theory.yaml create mode 100644 appdaemon/settings/apps/presence/alarm_panel.py create mode 100644 appdaemon/settings/apps/presence/alarm_panel.yaml create mode 100644 appdaemon/settings/apps/presence/alarm_panel_action.py create mode 100644 appdaemon/settings/apps/presence/alarm_panel_action.yaml create mode 100644 appdaemon/settings/apps/presence/entities_action.py create mode 100644 appdaemon/settings/apps/presence/entities_action.yaml create mode 100644 appdaemon/settings/apps/presence/purifier._yaml create mode 100644 appdaemon/settings/apps/presence/purifier.py create mode 100644 appdaemon/settings/apps/presence/report_action.py create mode 100644 appdaemon/settings/apps/presence/report_action.yaml create mode 100644 appdaemon/settings/apps/presence/tags_presence.py create mode 100644 appdaemon/settings/apps/presence/tags_presence.yaml create mode 100644 appdaemon/settings/apps/presence/water_action.py create mode 100644 appdaemon/settings/apps/presence/water_action.yaml create mode 100644 appdaemon/settings/apps/router/keenetic.py create mode 100644 appdaemon/settings/apps/router/keenetic.yaml create mode 100644 appdaemon/settings/apps/security/fire_sensors.py create mode 100644 appdaemon/settings/apps/security/fire_sensors.yaml create mode 100644 appdaemon/settings/apps/security/security_sensors.py create mode 100644 appdaemon/settings/apps/security/security_sensors.yaml create mode 100644 appdaemon/settings/apps/security/water_leak.py create mode 100644 appdaemon/settings/apps/security/water_leak.yaml create mode 100644 appdaemon/settings/apps/sensors/mosru.py create mode 100644 appdaemon/settings/apps/sensors/mosru.yaml create mode 100644 appdaemon/settings/apps/sensors/uniservice.py create mode 100644 appdaemon/settings/apps/sensors/uniservice.yaml create mode 100644 appdaemon/settings/apps/test/eventMonitor.py create mode 100644 appdaemon/settings/apps/test/eventMonitor.yaml create mode 100644 appdaemon/settings/apps/test/ir/zanussi_ac.json create mode 100644 appdaemon/settings/apps/test/test.py create mode 100644 appdaemon/settings/apps/test/test.yaml create mode 100644 appdaemon/settings/apps/test/test_ac.py create mode 100644 appdaemon/settings/apps/test/test_ac.yaml create mode 100755 appdaemon/settings/dashboards/Hello.dash create mode 100755 appdaemon/settings/secrets.yaml create mode 100644 certbot/docker/Dockerfile create mode 100644 certbot/docker/Dockerfile-rpi create mode 100755 certbot/docker/update_certs.sh create mode 100644 ddns/docker/Dockerfile create mode 100644 ddns/docker/run.sh create mode 100644 ddns/settings/token.env.sample create mode 100644 docker-compose.yaml create mode 100644 docs/appdaemon.md create mode 100644 docs/docker.md create mode 100644 docs/home-assistant.md create mode 100644 esphome/settings/.gitignore create mode 100644 esphome/settings/ac_bedroom.yaml create mode 100644 esphome/settings/ac_childroom.yaml create mode 100644 esphome/settings/ac_kitchen.yaml create mode 100644 esphome/settings/ac_mainroom.yaml create mode 100644 esphome/settings/bkp/ac_bedroom.yaml create mode 100644 esphome/settings/bkp/ac_childroom.yaml create mode 100644 esphome/settings/coffee-philips-5400.yaml create mode 100644 esphome/settings/components/saeco_series_6000/__init__.py create mode 100644 esphome/settings/components/saeco_series_6000/saeco_series_6000.cpp create mode 100644 esphome/settings/components/saeco_series_6000/saeco_series_6000.h create mode 100644 esphome/settings/danil_bedside_lamp.yaml create mode 100644 esphome/settings/jkbms-monitor.yml create mode 100644 esphome/settings/old/ac_childroom_gree.yaml create mode 100644 esphome/settings/old/ac_childroom_midea.yaml create mode 100644 esphome/settings/old/ac_mainroom_old.yaml create mode 100644 esphome/settings/presence.h create mode 100644 esphome/settings/presence_bedroom.yaml create mode 100644 esphome/settings/presence_kladovka.yaml create mode 100644 esphome/settings/presence_radar_bedroom.yaml create mode 100644 esphome/settings/radar_esphome.yaml create mode 100644 esphome/settings/senseair.yaml create mode 100644 esphome/settings/svetlana_bedside_lamp.yaml create mode 100644 hass/settings/.HA_VERSION create mode 100644 hass/settings/.ha_run.lock create mode 100644 hass/settings/automations.yaml create mode 100644 hass/settings/blueprints/automation/Blackshome/low-battery-notifications-and-actions.yaml create mode 100644 hass/settings/blueprints/automation/SirGoodenough/Zigbee2MQTT-Xiaomi_Cube_Controller_MQTT_Triggered.yaml create mode 100644 hass/settings/blueprints/automation/gist.githubusercontent.com/yandex_station_default_volume.yaml create mode 100644 hass/settings/blueprints/automation/gmlupatelli/unavailable_entities_notification.yaml create mode 100644 hass/settings/blueprints/automation/homeassistant/motion_light.yaml create mode 100644 hass/settings/blueprints/automation/homeassistant/notify_leaving_zone.yaml create mode 100644 hass/settings/blueprints/script/homeassistant/confirmable_notification.yaml create mode 100644 hass/settings/blueprints/template/homeassistant/inverted_binary_sensor.yaml create mode 100644 hass/settings/configuration.yaml create mode 100644 hass/settings/image/6cc087659939dc8bc6047031679fe062/512x512 create mode 100644 hass/settings/image/6cc087659939dc8bc6047031679fe062/original create mode 100644 hass/settings/image/ec890142459e316df6628907e28c0986/512x512 create mode 100644 hass/settings/image/ec890142459e316df6628907e28c0986/original create mode 100644 hass/settings/ip_bans.yaml create mode 100644 hass/settings/known_devices.yaml create mode 100644 hass/settings/packages/alarm_and_presence/alarm_control_panel.yaml create mode 100644 hass/settings/packages/alarm_and_presence/person_pictures.yaml create mode 100644 hass/settings/packages/alarm_and_presence/presence_status.yaml create mode 100644 hass/settings/packages/alarm_and_presence/tags/tag_danil_keys.yaml create mode 100644 hass/settings/packages/alarm_and_presence/tags/tag_danil_pocket.yaml create mode 100644 hass/settings/packages/alarm_and_presence/tags/tag_mamik_keys.yaml create mode 100644 hass/settings/packages/alarm_and_presence/tags/tag_svetlana_keys.yaml create mode 100644 hass/settings/packages/alarm_and_presence/tags/tag_test.yaml create mode 100644 hass/settings/packages/alice_export.yaml create mode 100644 hass/settings/packages/alice_intents.yaml create mode 100644 hass/settings/packages/aqara_lock.yaml create mode 100644 hass/settings/packages/automations_config.yaml create mode 100644 hass/settings/packages/base/recorder.yaml create mode 100644 hass/settings/packages/climate/climate_bedroom.yaml create mode 100644 hass/settings/packages/coffee_maker.yaml create mode 100644 hass/settings/packages/custom_components/yandex_station/yandex_station.yaml create mode 100644 hass/settings/packages/dishwasher.yaml create mode 100644 hass/settings/packages/groups.yaml create mode 100644 hass/settings/packages/heat_counter.yaml create mode 100644 hass/settings/packages/notifications/telegram.yaml create mode 100644 hass/settings/packages/power/power_counter.yaml create mode 100644 hass/settings/packages/tags_test.yaml create mode 100644 hass/settings/packages/tv/bedroom_tv.yaml create mode 100644 hass/settings/packages/tv/kitchen_tv.yaml create mode 100644 hass/settings/packages/tv/mainroom_tv.yaml create mode 100644 hass/settings/packages/watercontrol.yaml create mode 100644 hass/settings/scenes.yaml create mode 100644 hass/settings/scripts.yaml create mode 100755 hass/settings/secrets.yaml create mode 100644 hass/settings/secrets.yaml.sample create mode 100644 hass/settings/ui-lovelace.yaml create mode 100644 hass/settings/www/community/jk-bms-card/jk-bms-card.js create mode 100644 hass/settings/www/community/jk-bms-card/jk-bms-card.js.gz create mode 100644 hass/settings/www/community/lovelace-auto-entities/auto-entities.js create mode 100644 hass/settings/www/community/lovelace-auto-entities/auto-entities.js.gz create mode 100644 hass/settings/www/community/lovelace-auto-entities/rollup.config.js create mode 100644 hass/settings/www/community/lovelace-auto-entities/rollup.config.js.gz create mode 100644 hass/settings/www/community/lovelace-multiple-entity-row/multiple-entity-row.js create mode 100644 hass/settings/www/community/lovelace-multiple-entity-row/multiple-entity-row.js.gz create mode 100644 hass/settings/www/danil.jpg create mode 100644 hass/settings/www/svetlana.jpg create mode 100644 homeconnect2mqtt/docker/Dockerfile create mode 100644 homeconnect2mqtt/docker/src/HCDevice.py create mode 100644 homeconnect2mqtt/docker/src/HCSocket.py create mode 100644 homeconnect2mqtt/docker/src/hc2mqtt.py create mode 100644 homeconnect2mqtt/docker/src/requirements.txt create mode 100644 homeconnect2mqtt/settings/homeconnect2mqtt.env.sample create mode 100644 keenetic/docker/Dockerfile create mode 100644 keenetic/docker/main.py create mode 100644 keenetic/docker/requirements.txt create mode 100644 keenetic/settings/keenetic.env.sample create mode 100644 matter-bridge/settings/matter-bridge.env.sample create mode 100644 mosquitto/docker/Dockerfile create mode 100644 mosquitto/docker/run.sh create mode 100644 mosquitto/settings/mqtt.env.sample create mode 100644 neptun2mqtt/docker/Dockerfile create mode 100644 neptun2mqtt/docker/src/neptun2mqtt.py create mode 100644 neptun2mqtt/docker/src/requirements.txt create mode 100644 neptun2mqtt/settings/neptun.env.sample create mode 100644 nginx/settings/site-confs/default.conf create mode 100644 nginx/settings/site-confs/gitea.conf create mode 100644 nginx/settings/site-confs/home-fnv.conf create mode 100644 node-red/docker/Dockerfile create mode 100644 node-red/settings/data/flows.json create mode 100644 node-red/settings/data/node-red-contrib-home-assistant-websocket.json create mode 100644 node-red/settings/data/settings.js create mode 100644 postgres/settings/postgres.env.sample create mode 100644 services/docker-wol.service create mode 100755 services/install.sh create mode 100644 zigbee2mqtt/settings/DIYRuZ_FreePad.js create mode 100644 zigbee2mqtt/settings/configuration_backup_v1.yaml create mode 100644 zigbee2mqtt/settings/configuration_backup_v2.yaml create mode 100644 zigbee2mqtt/settings/configuration_backup_v3.yaml create mode 100644 zigbee2mqtt/settings/ptvo_counter_2ch.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f4350e8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +*.env +*.db +*.db-shm +*.db-wal +*.log +*.1 +*.fault +__pycache__/ +hass/settings/.storage +hass/settings/*.log +secrets/ +certbot/settings/data/ +hass/settings/custom_components/ +zigbee2mqtt/settings/log/ +zigbee2mqtt/settings/configuration.yaml +zigbee2mqtt/settings/coordinator_backup.json +zigbee2mqtt/settings/state.json +nginx/settings/site-confs/z2m_htpasswd +postgres/settings/data/ +node-red/settings/data/.npm/ +node-red/settings/data/lib/ +node-red/settings/data/node-modules/ +node-red/settings/data/flows_cred.json +node-red/settings/data/*.backup +node-red/settings/data/.config.users.json +node-red/settings/data/package-lock.json +node-red/settings/data/package.json +node-red/settings/data/.config.nodes.json +node-red/settings/data/.config.runtime.json +homeconnect2mqtt/settings/config.json +hass/settings/backups/ +matter-bridge/settings/data/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..aa3cb32 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "secrets"] + path = secrets + url = git@github.com:monster1025/secrets.git + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..24959bf --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +#SHELL := /bin/bash + +ARGS = `arg="$(filter-out $@,$(MAKECMDGOALS))" && echo $${arg:-${1}}` + +update_secrets_sample: + @echo "Masking passwords..." + #hass + @cat ./secrets/hass-alt/settings/secrets.yaml | sed "s/\:.*/\: xxxxxxxxx/g" > hass/settings/secrets.yaml.sample #mask passwords + @sed -i "s/latitude:.*/latitude: 1.0/g" hass/settings/secrets.yaml.sample #must be a number + @sed -i "s/longitude:.*/longitude: 1.0/g" hass/settings/secrets.yaml.sample #must be a number + @sed -i "s/aqara1_mac:.*/aqara1_mac: xxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #len 12 + @sed -i "s/aqara1_key:.*/aqara1_key: xxxxxxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #len 16 + @sed -i "s/mirobot_key:.*/mirobot_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #len 32 + @sed -i "s/powerstrip_key:.*/powerstrip_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #len 32 + @sed -i "s/telegram_chat:.*/telegram_chat: 0/g" hass/settings/secrets.yaml.sample #must be a number + @sed -i "s/timezone:.*/timezone: Europe\/London/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/telegram_group_chat:.*/telegram_group_chat: 0/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/telegram_monster_chat:.*/telegram_monster_chat: 0/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/purifier_key:.*/purifier_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/philips_downlight_token:.*/philips_downlight_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/wifi_socket_key:.*/wifi_socket_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/modbus_host:.*/modbus_host: modbus.host/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/modbus_port:.*/modbus_port: 9977/g" hass/settings/secrets.yaml.sample #must be valid + @sed -i "s/xiaomi_remote_token:.*/xiaomi_remote_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/g" hass/settings/secrets.yaml.sample #must be valid + #@jq '(.wifi_ssid, .wifi_pwd, .mqtt_user, .mqtt_pwd) |= "XXXX"' -c sls/settings/config.json > sls/settings/config.json.sample + + @echo "Masking env files..." + @find . -name *.env | xargs -I{} cp {} {}.sample + @find . -name *.env.sample | xargs -I{} sed -i "s/\=.*/\=xxxxxxxxx/g" {} + +# @cat zigbee2mqtt/settings/configuration.yaml | sed "s/\:.*/\: xxxxxxxxx/g" > zigbee2mqtt/settings/configuration.yaml.sample #mask passwords + +commit: update_secrets_sample + git add . + git diff-index --quiet HEAD || git commit -a -m "$(call ARGS,\"updating configuration\")" + git push + +%: + @: diff --git a/README.md b/README.md new file mode 100644 index 0000000..dca3e27 --- /dev/null +++ b/README.md @@ -0,0 +1,27 @@ +# Home Assistant FNV - Документация + +Репозиторий содержит конфигурацию умного дома на базе Home Assistant с интеграцией различных сервисов и устройств. + +## Структура документации + +- [Docker контейнеры и настройки](docs/docker.md) - Описание всех Docker сервисов и их конфигурации +- [Home Assistant конфигурация](docs/home-assistant.md) - Настройки Home Assistant, устройства и интеграции +- [AppDaemon приложения](docs/appdaemon.md) - Скрипты, дашборды и функционал AppDaemon + +## Быстрый старт + +1. Склонируйте репозиторий +2. Настройте переменные окружения в соответствующих `.env` файлах +3. Запустите `docker-compose up -d` + +## Основные компоненты + +- **Home Assistant** - Центральная система умного дома +- **AppDaemon** - Автоматизация и скрипты +- **ESPHome** - Управление ESP устройствами +- **Zigbee2MQTT** - Zigbee устройства +- **Node-RED** - Визуальное программирование +- **Mosquitto** - MQTT брокер +- **PostgreSQL** - База данных +- **Nginx** - Веб-сервер с SSL +- **Matter Bridge** - Интеграция с Matter устройствами \ No newline at end of file diff --git a/appdaemon/docker/Dockerfile b/appdaemon/docker/Dockerfile new file mode 100644 index 0000000..cce683f --- /dev/null +++ b/appdaemon/docker/Dockerfile @@ -0,0 +1,34 @@ +FROM python:3.12 +RUN apt update && apt -y install locales && locale-gen ru_RU.UTF-8 +ENV LANG=ru_RU.UTF-8 +ENV LANGUAGE=ru_RU:ru +ENV LC_ALL=ru_RU.UTF-8 +ENV PYTHONIOENCODING=utf-8 + +VOLUME /conf +VOLUME /certs +EXPOSE 5050 + +# Copy appdaemon into image +RUN mkdir -p /usr/src/app +WORKDIR /usr/src/app + +# Download and build appdaemon, 4.0.0b2 +# --branch=4.0.0b1 +RUN git clone --recurse-submodules https://github.com/home-assistant/appdaemon.git . +RUN pip install --upgrade pip . && pip3 install requests python-dateutil beautifulsoup4 + +# Start script +RUN chmod +x /usr/src/app/dockerStart.sh + +RUN pip3 install \ + attrs==19.1.0 \ + #emp_mos_api==0.12 \ + packaging==16.8 \ + #python-Levenshtein==0.12.0 \ + voluptuous==0.13.1 \ + tinytuya==1.13.1 + +ADD ./emp_mos_api /emp_mos_api + +CMD [ "./dockerStart.sh" ] diff --git a/appdaemon/docker/emp_mos_api/.gitignore b/appdaemon/docker/emp_mos_api/.gitignore new file mode 100644 index 0000000..fe9d61c --- /dev/null +++ b/appdaemon/docker/emp_mos_api/.gitignore @@ -0,0 +1,57 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# PyCharm +.idea diff --git a/appdaemon/docker/emp_mos_api/LICENSE b/appdaemon/docker/emp_mos_api/LICENSE new file mode 100644 index 0000000..1fcff06 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/appdaemon/docker/emp_mos_api/MANIFEST.in b/appdaemon/docker/emp_mos_api/MANIFEST.in new file mode 100644 index 0000000..8215683 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/MANIFEST.in @@ -0,0 +1,4 @@ +include *.md +include LICENSE +recursive-include emp_mos_api/*.py +recursive-include emp_mos_api/examples/*.py diff --git a/appdaemon/docker/emp_mos_api/README.md b/appdaemon/docker/emp_mos_api/README.md new file mode 100644 index 0000000..99f5a6e --- /dev/null +++ b/appdaemon/docker/emp_mos_api/README.md @@ -0,0 +1,110 @@ +### Неофициальная библиотека для запросов к Единой мобильной платформе города Москвы + +[Сайт](http://mosapps.mos.ru/dev) +[Единая мобильная платформа города Москвы](http://serviceprovider.if.emp.msk.ru/default/auth) + +Для выполнения запросов требуются: +- уникальный ключ вашего приложения (token), [выданный Правительством Москвы](http://mosapps.mos.ru/dev). +- некий guid (guid) +- при работе с телефона указывается user-agent и версия приложения + +Создаем объект api +``` +from emp_mos_api.mos import MosAPI + +api = MosAPI(token=args.token, + user_agent=args.user_agent, + guid=args.guid, + dev_user_agent=args.dev_user_agent, + dev_app_version=args.dev_app_version) +``` + +## Поддержка вызовов + +### Авторизация +Авторизируемся на сервере при помощи номера телефона и пароля, полученного из приложения +``` +api.login(args.login, args.pwd) +``` +### Завершение сессии +``` +api.logout() +``` +### Получить профиль и адрес +``` +response = api.get_profile() +``` +### Поиск адреса по подстроке +``` +adresses = api.address_search(pattern) +``` + +### Получить список квартир +``` +flats = api.get_flats() +``` +### Удалить квартиру +``` +api.flat_delete(flat_id) +``` +### Добавить квартиру +``` +api.flat_add(name, unom, unad, address, flat_number, paycode) +``` +### Получить электронный платежный документ +``` +api.get_eepd_wait_result(flat_id, period, timeout): + +``` + +### Получить список счетчиков воды +``` +water = api.get_watercounters(flat_id) +``` +### Отправить новые показания воды +``` +api.send_watercounters(flat_id, new_values) +``` +### Получить список счетчиков электроэнергии +``` +electro = api.get_electrocounters(flat_id) +``` +### Отправить новые показания электроэнергии +``` +api.send_electrocounters(flat_id, new_values) +``` +### Получить епд +``` +epd = api.get_epd(flat_id, begin_period, end_period) +``` +### Получить штрафы +``` +fines = api.get_car_fines(sts) +``` + + + +## Примеры: +[examples](https://github.com/dontsovcmc/emp_mos_ru/tree/master/emp_mos_api/examples) + + +## Установка: +``` +[sudo] pip install -U emp-mos-api +``` +Если нет pip, то ставим его: +#### linux +``` +sudo apt-get install python-pip python-dev build-essential +``` +#### windows +``` +python https://bootstrap.pypa.io/get-pip.py +# добавляем пусть до pip в PATH (C:\Python27\Scripts) +перезагружаем терминал +``` + +## Благодарности + +@monster1025 + diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/__init__.py b/appdaemon/docker/emp_mos_api/emp_mos_api/__init__.py new file mode 100644 index 0000000..8b35865 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/emp_mos_api/__init__.py @@ -0,0 +1,3 @@ + +from emp_mos_api.mos import MosAPI, Water, Watercounter, \ + AuthException, EmpServerException \ No newline at end of file diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/examples/__init__.py b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_car_fine.py b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_car_fine.py new file mode 100644 index 0000000..dcc6eff --- /dev/null +++ b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_car_fine.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +import argparse +from emp_mos_api import MosAPI, AuthException, EmpServerException + +# Код написан общим для python2, python3 благодаря +# http://python-future.org/compatible_idioms.html + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='emp.mos.ru API') + parser.add_argument('--token', help='application token') + parser.add_argument('--user_agent', default='okhttp/3.8.1', help='User-Agent header') + parser.add_argument('--guid', help='some guid') + parser.add_argument('--dev_user_agent', default='Android', help='application user agent') + parser.add_argument('--dev_app_version', help='application version') + + parser.add_argument('--login', help='your login (phone number: 7xxxxxxxxxx)') + parser.add_argument('--pwd', help='your password') + + parser.add_argument('--sts', help='your car sts') + + args = parser.parse_args() + + # + try: + api = MosAPI(token=args.token, + user_agent=args.user_agent, + guid=args.guid, + dev_user_agent=args.dev_user_agent, + dev_app_version=args.dev_app_version, + timeout=6) + + api.login(args.login, args.pwd) + + car_fines = api.get_car_fines(args.sts) + unpaid = car_fines['unpaid'] + print("Неоплаченных штрафов: {}".format(len(unpaid))) + + for u in unpaid: + print("\nНомер: {}".format(u['seriesAndNumber'])) + print("Дата: {}".format(u['date'])) + print("Место: {}".format(u['offence_place'])) + print("Статья: {}".format(u['offenceType'])) + print("Сумма: {}".format(u['cost'])) + print("is_discount: {}".format(u['is_discount'])) + print("drive_license: {}".format(u['drive_license'])) + print("sts_number: {}".format(u['sts_number'])) + print("executionState: {}".format(u['executionState'])) + print("is_fssp: {}".format(u['is_fssp'])) + + + except AuthException as err: + print('Некорректный логин или пароль') + except EmpServerException as err: + print('Ошибка сервера: {}'.format(err)) + except Exception as err: + print('Ошибка: {}'.format(err)) + finally: + try: + api.logout() + except Exception as err: + print('Ошибка: {}'.format(err)) diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_electro_epd.py b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_electro_epd.py new file mode 100644 index 0000000..65db4d7 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_electro_epd.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +import argparse +import time +from emp_mos_api import MosAPI, AuthException, EmpServerException + +# Код написан общим для python2, python3 благодаря +# http://python-future.org/compatible_idioms.html + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='emp.mos.ru API') + parser.add_argument('--token', help='application token') + parser.add_argument('--user_agent', default='okhttp/3.8.1', help='User-Agent header') + parser.add_argument('--guid', help='some guid') + parser.add_argument('--dev_user_agent', default='Android', help='application user agent') + parser.add_argument('--dev_app_version', help='application version') + + parser.add_argument('--login', help='your login (phone number: 7xxxxxxxxxx)') + parser.add_argument('--pwd', help='your password') + + args = parser.parse_args() + + # + try: + api = MosAPI(token=args.token, + user_agent=args.user_agent, + guid=args.guid, + dev_user_agent=args.dev_user_agent, + dev_app_version=args.dev_app_version, + timeout=6) + + api.login(args.login, args.pwd) + p = api.get_profile() + + flats = api.get_flats() + + print('Кол-во квартир: ', len(flats)) + assert flats, 'Добавьте квартиру в приложении Госуслуги Москвы' + + for f in flats: + # print(f) + print('Квартира #', flats.index(f) + 1) + print('Название: ', f['name']) + print('Адрес: ', f['address']) + print('Номер кв: ', f['flat_number']) + print('Номер платежки: ', f['paycode']) + + print('Счет электро: ', f['electro_account']) + print('Счетчик электро: ', f['electro_device']) + + epds = api.get_epd(f['flat_id'], '01.01.2018', '31.12.2018') + for epd in epds: + period = epd['period'] + epd_total = epd['amount'] + epd_is_paid = epd['payment_status'] == 'PAID' + print(" - Дата: {}, сумма: {}, оплачен: {}.".format(period, epd_total, epd_is_paid)) + + if f['electro_account'] != "": + electro = api.get_electrocounters(f['flat_id']) + balance = electro['balance'] + last_zone1 = electro['zones'][0]['value'] + print("Баланс электро: {}, показания 1 зоны: {}".format(balance, last_zone1)) + # data = [{'counter_id': 'T1', 'indication': 6887, 'period': '2018-12-27'}] + # send = api.send_electrocounters(f['flat_id'], data) + + except AuthException as err: + print('Некорректный логин или пароль') + except EmpServerException as err: + print('Ошибка сервера: {}'.format(err)) + except Exception as err: + print('Ошибка: {}'.format(err)) + finally: + try: + api.logout() + except Exception as err: + print('Ошибка: {}'.format(err)) diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_flat.py b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_flat.py new file mode 100644 index 0000000..bb8354c --- /dev/null +++ b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_flat.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +import argparse +from emp_mos_api import MosAPI, AuthException, EmpServerException + +# Код написан общим для python2, python3 благодаря +# http://python-future.org/compatible_idioms.html + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description='emp.mos.ru API') + parser.add_argument('--token', help='application token') + parser.add_argument('--user_agent', default='okhttp/3.8.1', help='User-Agent header') + parser.add_argument('--guid', help='some guid') + parser.add_argument('--dev_user_agent', default='Android', help='application user agent') + parser.add_argument('--dev_app_version', help='3.5.0.195 (102)') + + parser.add_argument('--login', help='your login (phone number: 7xxxxxxxxxx)') + parser.add_argument('--pwd', help='your password') + + args = parser.parse_args() + + # + api = MosAPI(token=args.token, + user_agent=args.user_agent, + guid=args.guid, + dev_user_agent=args.dev_user_agent, + dev_app_version=args.dev_app_version, + timeout=6) + + try: + api.login(args.login, args.pwd) + + flats = api.get_flats() + + print('Кол-во квартир: ', len(flats)) + assert flats, 'Добавьте квартиру в приложении Госуслуги Москвы' + + for f in flats: + print('Квартира #', flats.index(f) + 1) + print('Название: ', f['name']) + print('Адрес: ', f['address']) + print('Номер кв: ', f['flat_number']) + print('Номер платежки: ', f['paycode']) + + except AuthException as err: + print('Некорректный логин или пароль') + except EmpServerException as err: + print('Ошибка сервера: {}'.format(err)) + except Exception as err: + print('Ошибка: {}'.format(err)) + finally: + try: + api.logout() + except Exception as err: + print('Ошибка: {}'.format(err)) diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_profile.py b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_profile.py new file mode 100644 index 0000000..91fe929 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_profile.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +import argparse +from emp_mos_api import MosAPI, AuthException, EmpServerException + +# Код написан общим для python2, python3 благодаря +# http://python-future.org/compatible_idioms.html + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description='emp.mos.ru API') + parser.add_argument('--token', help='application token') + parser.add_argument('--user_agent', default='okhttp/3.8.1', help='User-Agent header') + parser.add_argument('--guid', help='some guid') + parser.add_argument('--dev_user_agent', default='Android', help='application user agent') + parser.add_argument('--dev_app_version', help='application version') + + parser.add_argument('--login', help='your login (phone number: 7xxxxxxxxxx)') + parser.add_argument('--pwd', help='your password') + + args = parser.parse_args() + + # + api = MosAPI(token=args.token, + user_agent=args.user_agent, + guid=args.guid, + dev_user_agent=args.dev_user_agent, + dev_app_version=args.dev_app_version, + timeout=6) + + try: + api.login(args.login, args.pwd) + p = api.get_profile() + + print('ФИО: ', p['firstname'], + ' ', p['middlename'], + ' ', p['lastname']) + print('Дата рождения: ', p['birthdate']) + print('Телефон: ', p['msisdn']) + print('Эл. почта: ', p['email']) + + flats = api.get_flats() + + print('Кол-во квартир: ', len(flats)) + assert flats, 'Добавьте квартиру в приложении Госуслуги Москвы' + + for f in flats: + print('Квартира #', flats.index(f) + 1) + print('Название: ', f['name']) + print('Адрес: ', f['address']) + print('Номер кв: ', f['flat_number']) + print('Номер платежки: ', f['paycode']) + + except AuthException as err: + print('Некорректный логин или пароль') + except EmpServerException as err: + print('Ошибка сервера: {}'.format(err)) + except Exception as err: + print('Ошибка: {}'.format(err)) + finally: + try: + api.logout() + except Exception as err: + print('Ошибка: {}'.format(err)) diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_watermeters.py b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_watermeters.py new file mode 100644 index 0000000..8307512 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/emp_mos_api/examples/read_watermeters.py @@ -0,0 +1,87 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +import argparse +from emp_mos_api import MosAPI, Water, Watercounter + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description='emp.mos.ru API') + parser.add_argument('--token', help='application token') + parser.add_argument('--user_agent', default='okhttp/3.8.1', help='User-Agent header') + parser.add_argument('--guid', help='some guid') + parser.add_argument('--dev_user_agent', default='Android', help='application user agent') + parser.add_argument('--dev_app_version', help='application version') + + parser.add_argument('--login', help='your login (phone number: 7xxxxxxxxxx)') + parser.add_argument('--pwd', help='your password') + + parser.add_argument('--flat_id', help='id квартиры на сервере. если не указывать, отправится в 1ю.') + + parser.add_argument('--hot', type=float, help='Hot water new value') + parser.add_argument('--cold', type=float, help='Cold water new value') + + args = parser.parse_args() + + # + api = MosAPI(token=args.token, + user_agent=args.user_agent, + guid=args.guid, + dev_user_agent=args.dev_user_agent, + dev_app_version=args.dev_app_version, + verify=True) + + try: + api.login(args.login, args.pwd) + + if not args.flat_id: + flats = api.get_flats() + assert flats, u'Добавьте квартиру в приложении Госуслуги Москвы' + f = flats[0] + print('Адрес: ', f['address']) + print('Номер кв: ', f['flat_number']) + print('Номер платежки: ', f['paycode']) + + flat_id = f['flat_id'] + else: + flat_id = args.flat_id + + counters = api.get_watercounters(flat_id)['counters'] + + new_values = [] + + hots_json = list(filter(lambda x: x['type'] == Water.HOT, counters)) + if hots_json: + hot_value = Watercounter.last_value(hots_json[0]) + if hot_value: + print('Текущее показание горячей воды: {:.2f} m3'.format(hot_value)) + else: + print('Показания горячей воды не передавались больше 3-х месяцев') + + if args.hot: + new_values.append(Watercounter.serialize_for_send(hots_json[0], args.hot)) + print('Новое показание горячей воды: {:.2f} m3'.format(args.hot)) + else: + print('Не найден счетчик горячей воды') + + # + colds_json = list(filter(lambda x: x['type'] == Water.COLD, counters)) + if colds_json: + cold_value = Watercounter.last_value(colds_json[0]) + if cold_value: + print('Текущее показание холодной воды: {:.2f} m3'.format(cold_value)) + else: + print('Показания холодной воды не передавались больше 3-х месяцев') + + if args.cold: + new_values.append(Watercounter.serialize_for_send(colds_json[0], args.cold)) + print('Новое показание холодной воды: {:.2f} m3'.format(args.cold)) + else: + print('Не найден счетчик холодной воды') + + if new_values: + api.send_watercounters(flat_id, new_values) + print('Показания отправлены на сервер') + + finally: + api.logout() #долго diff --git a/appdaemon/docker/emp_mos_api/emp_mos_api/mos.py b/appdaemon/docker/emp_mos_api/emp_mos_api/mos.py new file mode 100644 index 0000000..98083ee --- /dev/null +++ b/appdaemon/docker/emp_mos_api/emp_mos_api/mos.py @@ -0,0 +1,956 @@ +# -*- coding: utf-8 -*- + +from __future__ import print_function +import six +import time +from datetime import datetime, tzinfo +import requests +from copy import deepcopy + +API_V1_0 = 'https://emp.mos.ru/v1.0' +API_V1_1 = 'https://emp.mos.ru/v1.1' +API_V1_2 = 'https://emp.mos.ru/v1.2' + +class AuthException(Exception): + pass + + +class EmpServerException(Exception): + def __init__(self, message, code): + self.message = message + self.code = code + if six.PY2: + super(Exception, self).__init__('{0} (code:{1})'.format(self.message.encode('utf-8'), self.code)) + else: + super().__init__('{0} (code:{1})'.format(self.message, self.code)) + + +class EmpCounterNotVerifiedException(EmpServerException): + """ + 'errorCode' 'errorMessage' + 3454: 'Не удалось передать показания за сентябрь по счётчикам <серийный номер>: "Невозможно внести показание, поскольку не введены показания за три и более месяца, предшествующих текущему. Для возобновления + удалённой передачи показаний Вам следует обратиться в Центр госуслуг/ГКУ ИС района. + """ + pass + + +class EmpAlreadySendException(EmpServerException): + """Не удалось передать показания за X по счётчикам 12345678: + "Вы не можете изменить показания, переданные через портал mos.ru или введенные сотрудниками" \ + " Центров госуслуг/ГКУ ИС." 12345678: "Редактируемое показание принято к расчёту." ' + """ + pass + + +class EmpHugeValueException(EmpServerException): + """ + Не удалось передать показания за февраль по счётчикам 123456: + "Не допускается внесение данных, в несколько раз превышающих нормативы водопотребления, + установленные Правительством Москвы." (code:3454) + """ + pass + +class EmpValueLessException(EmpServerException): + """ + Не удалось передать показания за февраль по счётчикам 123456: + "Вносимое показание меньше предыдущего. Проверьте корректность вносимого показания. + В случае, если передаваемые данные корректны, Вам следует обратиться в + Центр госуслуг/ГКУ ИС района для уточнения причин ошибки." (code:3454) + """ + pass + + +class Client(object): + """ + Клиента + """ + def __init__(self, **kwargs): + self.token = kwargs.get('token') + self.guid = kwargs.get('guid') + + #requests + self.verify = kwargs.get('verify', True) + self.timeout = kwargs.get('timeout', 3.0) + + self.session_id = None # emp mos ru + self.user_agent = kwargs.get('user_agent', 'okhttp/3.8.1') + self.dev_app_version = kwargs.get('dev_app_version') + self.dev_user_agent = kwargs.get('dev_user_agent') + + self.post_request_data = { + 'info': { + 'guid': self.guid, + 'user_agent': self.dev_user_agent, + 'app_version': self.dev_app_version + }, + 'auth': { + 'session_id': self.session_id + } + } + + + # 3.8.1.216(108) + #self.dev_mobile = kwargs.get('dev_mobile') + #self.info_field = { + # 'app_version': self.dev_app_version, + # 'guid': self.guid, + # 'mobile': self.dev_mobile, + # 'session_id': None, + # 'user_agent': self.dev_user_agent + #} + + self.headers = { + 'Cache-Control': 'no-cache', + 'Host': 'emp.mos.ru', + 'Connection': 'Keep-Alive', + 'Accept-Encoding': 'gzip', + 'User-Agent': self.user_agent + } + + self.pheaders = deepcopy(self.headers) + self.pheaders.update({ + 'X-Cache-ov': '15552000', + 'X-Cache-ov-mode': 'FORCE_NETWORK' + }) + self.session = requests.Session() + + def raise_for_status(self, answer): + """ + :param answer: JSON + { + u'errorCode': 0, # 0-OK, + 401-Auth error + u'execTime': 0.138262, + u'errorMessage': u'', # error message + u'session_id': u'6c3333333c33333e44e21e7d43c46e03', + u'result': None or JSON + } + :return: + """ + # print('Exec time:', answer['execTime']) + + code = answer['errorCode'] + msg = answer['errorMessage'] if 'errorMessage' in answer and answer['errorMessage'] else '' + + if code == 401: + raise AuthException('Ошибка авторизации') + + if code == 3454: + if u'показание принято к расчёту' in msg: + raise EmpAlreadySendException(msg, code) + elif u'Не допускается внесение данных, в несколько раз превышающих нормативы водопотребления' in msg: + raise EmpHugeValueException(msg, code) + elif u'Вносимое показание меньше предыдущего' in msg: + raise EmpValueLessException(msg, code) + elif u'Истёк срок поверки прибора учёта' in msg: + raise EmpCounterNotVerifiedException(msg, code) + + if code != 0: + raise EmpServerException(msg, code) + + def is_active(self): + """ + :return: True если уже залогинился + """ + return self.session_id is not None + + def set_session(self, session_id): + self.session_id = session_id + self.post_request_data['auth']['session_id'] = self.session_id + self.post_request_data['info']['session_id'] = self.session_id + + def login(self, telephone, pwd): + """ + :param telephone: Телефон. Вид: 7xxxxxxxxxx + :param pwd: Пароль из приложения Госуслуги Москвы + :return: JSON + { + u'is_filled': True, + u'surname': u'x', + u'name': u'x', + u'session_id': u'6c3333333c33333e44e21e7d43c46e03'}, + u'request_id': u'UN=PRO-12345678-1234-1234-1234-123456789123' + } + """ + login_data = { + 'device_info': { + 'guid': self.guid, + 'user_agent': self.dev_user_agent, + 'app_version': self.dev_app_version, + #'mobile': self.dev_mobile # 3.8.1.216(108) + }, + 'auth': { + 'login': telephone, + 'password': pwd, + 'guid': self.guid + } + } + + ret = self.session.post(API_V1_0 + '/auth/virtualLogin', + params={'token': self.token}, + headers={'Content-Type': 'application/json; charset=UTF-8', + 'Connection': 'Keep-Alive', + 'Accept-Encoding': 'gzip', + 'User-Agent': self.user_agent, + 'cache-control': 'no-cache', + 'Host': 'emp.mos.ru', + 'Accept': '*/*'}, + verify=self.verify, + timeout=self.timeout, + json=login_data) + + response = ret.json() + self.raise_for_status(response) + self.session_id = response['session_id'] + self.post_request_data['auth']['session_id'] = self.session_id + return response['result'] + + def get_profile(self): + """ + :return: JSON + { + u'drive_license': None, + u'firstname': u'x', + u'middlename': u'x', + u'lastname': u'x', + u'birthdate': u'dd.mm.YYYY', + u'msisdn': u'71234567890', # your telephone + u'email_confirmed': True, + u'email': u'x@x.ru' + } + """ + assert self.session_id + + ret = self.session.get(API_V1_0 + '/profile/get', + params={'token': self.token, + 'info[guid]': self.guid, + 'auth[session_id]': self.session_id + }, + headers=self.pheaders, + verify=self.verify, + timeout=self.timeout) + + response = ret.json() + self.raise_for_status(response) + return response['result']['profile'] + + def get_flats(self): + """ + :return: JSON array + [{ + u'name': u'x', + u'paycode': u'1234567890', + u'flat_id': u'1234567', + u'electro_account': None, + u'flat_number': u'0', + u'unad': u'0', + u'address': u'x', + u'electro_device': None, + u'unom': u'1234567' # Идентификатор дома + },{...} + ] + """ + assert self.session_id + + ret = self.session.get(API_V1_0 + '/flat/get', + params={'token': self.token, + 'info[guid]': self.guid, + 'auth[session_id]': self.session_id + }, + headers=self.pheaders, + verify=self.verify, + timeout = self.timeout) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def address_search(self, pattern, limit=100): + """ + :param pattern: строка шаблон для поиска + :param limit: сколько ответов выводить + :return: + { + "address": "", + "description": "", + "district": "", + "fullMatch": False, + "unad": 1, + "unum": 123456 + } + """ + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({'Content-Type': 'application/json; charset=UTF-8'}) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'limit': limit, + 'pattern': pattern, + }) + + ret = self.session.post(API_V1_1 + '/flat/addressSearch', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def flat_delete(self, flat_id): + """ + Удалить квартиру + :param flat_id: unicode string from flat_response + response[0]['flat_id'] + :return: Null + """ + + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'WIDGETS,EPD,ELECTRO_COUNTERS,WATER_COUNTERS,APARTMENT, EPD_WIDGET,ACCRUALS_WIDGET', + 'Content-Type': 'application/json; charset=UTF-8' }) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'flat_id': flat_id + }) + + ret = self.session.post(API_V1_0 + '/flat/delete', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def flat_add(self, name, unom, unad, address, flat_number, paycode): + """ + Добавление квартиры. Перед добавлением надо узнать unom + :param name: имя квартиры. любое + :param unom: INT из запроса addressSearch + :param unad: INT из запроса addressSearch + :param address: Любой + :param flat_number: Номер квартиры. Любой. Но для отправки показаний нужен точный. + :param paycode: Код плательщика + :param electro_account: Номер счета Мосэнергосбыта + :param electro_device: Серийный номер счетчика. Если заполнен, должен и номер Мосэнергосбыта быть заполнен. + :return: + + { + "flat_id":"23611975", + "name":"", + "address":"", + "flat_number":"111", + "unom":"3802879", + "unad":"1", + "paycode":"1234567890", + "electro_account":"", + "electro_device":"", + "intercom":"", + "floor":"", + "entrance_number":"", + "alias":"", + "epd":"1234567890", + "flat":"111", + "building":"", + "street": равно address + } + """ + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'WIDGETS,EPD,ELECTRO_COUNTERS,WATER_COUNTERS,APARTMENT, EPD_WIDGET,ACCRUALS_WIDGET', + 'Content-Type': 'application/json; charset=UTF-8' + }) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'a': 0, + 'address': address, + 'can_update': False, + 'flat_number': flat_number, + 'name': name, + 'paycode': paycode, + 'unad': unad, + 'unom': unom + }) + + ret = self.session.post(API_V1_0 + '/flat/add', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def get_watercounters(self, flat_id): + """ + :param flat_id: unicode string from flat_response + response[0]['flat_id'] + :return: + { + u'stat_title': u'x', + u'archive': [ + { + u'cold_indication': 1.55, + u'hot_indication': 1.2, + u'period': u'2017-08-31+03:00' + }, { + u'cold_indication': 1.3, + u'hot_indication': 0.39999999999998, + u'period': u'2017-09-30+03:00' + }, { + +10 эл-тов. Всего 12. + }], + u'counters': [ + { + u'checkup': u'2021-08-08+03:00', # дата поверки + u'counterId': 123456, # id счетчика в emp.mos.ru + u'num': u'123456', # серийный номер счетчика + u'type': 1, # ХВС + u'indications': [ + { + u'indication': u'200.24', + u'period': u'2018-07-31+03:00' + }, { + u'indication': u'200.6', + u'period': u'2018-06-30+03:00' + }, { + u'indication': u'200.5', + u'period': u'2018-05-31+03:00' + }, { + u'indication': u'200.5', + u'period': u'2018-04-30+03:00' + }] + }, + {..} + ] + } + """ + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'WATER_COUNTERS', + 'X-Cache-ov-mode': 'DEFAULT', + 'Content-Type': 'application/json; charset=UTF-8' }) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'flat_id': flat_id, + 'is_widget': False + }) + + ret = self.session.post(API_V1_0 + '/watercounters/get', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def send_watercounters(self, flat_id, counters_data): + """ + :param flat_id: flat_response['flat_id'] + :param counters_data: array of + [{ + 'counter_id': u'123456', # ['counters'][0]['counterId'] + 'period': datetime.now().strftime("%Y-%m-%d"), + 'indication': 'xxx,xx' + }, { + ... + }] + :return: + """ + assert self.session_id + + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'WATER_COUNTERS', + 'Content-Type': 'application/json; charset=UTF-8' + }) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'flat_id': flat_id, + 'counters_data': counters_data + }) + + ret = self.session.post(API_V1_0 + '/watercounters/addValues', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def get_electrocounters(self, flat_id): + """ + :param flat_id: unicode string from flat_response + response[0]['flat_id'] + :return: + { + "address": "город ...", + "electro_account": "851xxxx475", + "electro_device": "04xxx17", + "balance": 0, + "is_debt": false, + "description": "Внимание! Передача показаний возможна с 15 по 26 число месяца. При вводе текущих показаний обращайте внимание на значность счетчиков. В случае если показания введены с неверной значностью (большей, чем значность счетчика), они не будут загружены.", + "sh_znk": 5, + "zones": [{ + "name": "T1", + "value": "6887" + }], + "intervals": [{ + "name": "T1", + "value": "00:00-23:59" + }] + } + """ + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'ELECTRO_COUNTERS', + 'X-Cache-ov-mode': 'DEFAULT', + 'Content-Type': 'application/json; charset=UTF-8' }) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'flat_id': flat_id, + 'is_widget': False, + }) + + ret = self.session.post(API_V1_0 + '/electrocounters/get', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def send_electrocounters(self, flat_id, counters_data): + """ + :param flat_id: flat_response['flat_id'] + :param counters_data: array of + [{ + 'counter_id': u'123456', # ['counters'][0]['counterId'] + 'period': datetime.now().strftime("%Y-%m-%d"), + 'indication': 'xxx,xx' + }, { + ... + }] + :return: + """ + assert self.session_id + + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'ELECTRO_COUNTERS', + 'Content-Type': 'application/json; charset=UTF-8' + }) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'flat_id': flat_id, + 'counters_data': counters_data + }) + + ret = self.session.post(API_V1_0 + '/electrocounters/addValues', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def get_epd(self, flat_id, begin_period, end_period): + """ + :param flat_id: unicode string from flat_response + response[0]['flat_id'] + :param period: unicode string represents date in 27.09.2018 format + :param is_debt: True/False + :return: array of + [{ + "uin": "234234234234234234234234", + "insurance_amount": null, + "period": "01.12.2021", + "epd_type": "REGULAR", + "payment_amount": "3316,73", + "payment_date": "01.12.2021", + "payment_status": "PAID", + "initiator": "MFC", + "create_date": "11.12.2021 19:34", + "penalty_amount": "0,00", + "amount": "3316,73", + "amount_with_insurance": null + }] + """ + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'EPD', + 'X-Cache-ov-mode': 'DEFAULT', + 'Content-Type': 'application/json; charset=UTF-8' }) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'flat_id': flat_id, + 'begin_period': begin_period, + 'end_period': end_period + }) + + ret = self.session.post(API_V1_2 + '/epd/get', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def get_eepd(self, flat_id, period, epd_type='current', rid=None): + """ + Запросить электронный ЕПД (pdf). Первый запрос возвращает rid и документ начинает готовиться. + Последующие запросы будут либо пустые, либо содержать ссылку на PDF + расшифровку полей. + + :param flat_id: unicode string from flat_response + response[0]['flat_id'] + :param period: unicode string represents date in 27.09.2018 format + :param epd_type: current + :param rid: Если None, то это первый запрос. В ответе будет rid, который нужно добавить в последующие запросы, + пока документ готовится. + :return: + Первый ответ и последующие , пока не готов документ + { + "rid": GUID, + } + + { + "pdf": Ссылка на pdf, + "title": "Платежный документ", + "sections": [ + { + "title": "Начисления", + "elements": { + "address": "xxxx", + "epd": 123455, + "hint": "text", + "payment_elements": [ + ], + "period": "DD-месяц-YYYY", + "total_elements": [ + ] + } + }, + { + "title": "Информация", + "elements": [ + { + "title": "text", + "body": "text" + }, + { + } + ] + } + ] + } + + """ + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({ + 'Content-Type': 'application/json; charset=UTF-8'}) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'flat_id': flat_id, + 'period': period, + 'type': epd_type, + }) + + if rid: + wcrequest.update({'rid': rid}) + + ret = self.session.post(API_V1_0 + '/eepd/get', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def get_eepd_wait_result(self, flat_id, period, timeout=10.0): + """ + Запросить электронный ЕПД (pdf) и дождаться результата + + :param flat_id: unicode string from flat_response + response[0]['flat_id'] + :param period: unicode string represents date in 27.09.2018 format + :param timeout: сколько ждем в секундах результата + """ + start = time.time() + + rid = None + result = None + while not result and time.time() - start < timeout: + time.sleep(2.0) + + ret = self.get_eepd(flat_id, period, 'current', rid) + if 'rid' in ret: + rid = ret['rid'] + + if 'pdf' in ret: + result = deepcopy(ret) + + return result + + def get_car_fines(self, sts_number): + """ + :param sts_number: unicode string contains car sts_numer + :return: + { + "paid": [{ + "seriesAndNumber": "xxxxx", + "date": "2018-08-30+03:00", + "offence_place": "МОСКВА Г. МКАД,xxxx, ВНЕШНЯЯ СТОРОНА", + "offenceType": "12.9ч.2 - Превышение установленной скорости движения транспортного средства на величину от 20 до 40 километров в час ", + "cost": "500", + "is_discount": false, + "drive_license": null, + "sts_number": "xxxxxxx", + "executionState": "Исполнено", + "is_fssp": false + }], + "unpaid": [] + } + """ + assert self.session_id + wheaders = deepcopy(self.headers) + wheaders.update({ + 'X-Clears-tags': 'FORCE_NETWORK', + 'X-Cache-ov-mode': 'DEFAULT', + 'Content-Type': 'application/json; charset=UTF-8'}) + + wcrequest = deepcopy(self.post_request_data) + wcrequest.update({ + 'sts_number': sts_number + }) + + ret = self.session.post(API_V1_0 + '/offence/getOffence', + params={'token': self.token}, + headers=wheaders, + verify=self.verify, + timeout=self.timeout, + json=wcrequest) + + response = ret.json() + self.raise_for_status(response) + return response['result'] + + def logout(self, timeout=None): + """ + Почему то очень долго выполняется (5 сек) + """ + if self.session_id: + logout_data = deepcopy(self.post_request_data) + + ret = self.session.post(API_V1_0 + '/auth/logout', + params={'token': self.token}, + headers=self.headers, + timeout=timeout or self.timeout, + json=logout_data) + + response = ret.json() + self.raise_for_status(response) + self.session_id = None + return response['result'] + + +class MosAPI(object): + """ + kwargs: + + token: уникальный ключ приложения + guid: некий уникальный ключ + https_verify: ключ verify в GET, POST запросах, по умолчанию 'False' + timeout: ключ timeout в GET, POST запросах + user_agent: версия веб клиента + dev_user_agent: 'Android' для ОС Android + dev_app_version: версия ОС + """ + + def __init__(self, **kwargs): + self.kwargs = kwargs + self._clients = {'default': Client(**kwargs)} + + def client(self, client_id='default', **kwargs): + if client_id and client_id not in self._clients: + k = self.kwargs + k.update(kwargs) + self._clients[client_id] = Client(**k) + return self._clients[client_id] + + # if only one client + def is_active(self): + return self.client().is_active() + + def set_session(self, *args): + return self.client().set_session(*args) + + def login(self, *args): + return self.client().login(*args) + + def logout(self, *args): + return self.client().logout(*args) + + def get_profile(self): + return self.client().get_profile() + + # Квартиры + def get_flats(self): + return self.client().get_flats() + + def flat_delete(self, *args): + return self.client().flat_delete(*args) + + def flat_add(self, *args): + return self.client().flat_add(*args) + + def address_search(self, *args): + return self.client().address_search(*args) + + # Счетчики воды + def get_watercounters(self, *args): + return self.client().get_watercounters(*args) + + def send_watercounters(self, *args): + return self.client().send_watercounters(*args) + + # Счетчики электроэнергии + def get_electrocounters(self, *args): + return self.client().get_electrocounters(*args) + + def send_electrocounters(self, *args): + return self.client().send_electrocounters(*args) + + # Единый платежный документ + def get_epd(self, *args): + return self.client().get_epd(*args) + + # Сформировать pdf Единый платежный документ + def get_eepd_wait_result(self, *args): + return self.client().get_eepd_wait_result(*args) + + # Штрафы + def get_car_fines(self, *args): + return self.client().get_car_fines(*args) + + +class Water: + COLD = 1 + HOT = 2 + + @staticmethod + def water_abbr(water): + if water == Water.COLD: + return u'ХВС' + elif water == Water.HOT: + return u'ГВС' + + @staticmethod + def name(water): + if water == Water.COLD: + return u'холодная вода' + elif water == Water.HOT: + return u'горячая вода' + + +class Watercounter: + """ + [{ 'counterId': 1437373, # внутреннее id счетчика + 'type': 1, # тип воды + 'num': '417944', # серийный номер счетчика + 'checkup': '2023-09-25+03:00', # дата следующей поверки + 'indications': + [{'period': '2018-08-31+03:00', 'indication': '21.38'}, + {'period': '2018-07-31+03:00', 'indication': '20.7'}, + {'period': '2018-06-30+03:00', 'indication': '19'}] + }, + {...} + ] + + list(filter(lambda x: x['num'] == num, response['counters'])) + list(filter(lambda x: x['counterId'] == id, response['counters'])) + list(filter(lambda x: x['type'] == water_type_id, response['counters'])) + """ + + @staticmethod + def last_value(counter): + """ + alphabetical sort data =) + :param counter: counter JSON + :return: float or None + None - когда показания не сданы более 3-х месяцев + """ + indications = counter['indications'] + indications.sort(key=lambda x: x['period']) + if indications: + return float(indications[-1]['indication']) + + @staticmethod + def water_title(counter): + return Watercounter.humanreadable_name(counter['type']) + + @staticmethod + def checkup(counter): + """ + https://docs.python.org/3/library/datetime.html#datetime.timezone + Если нужно UTC d.replace(tzinfo=None) + + :param counter: counter JSON + :return: datetime с временной зоной + """ + checkup = counter['checkup'].split('+')[0] # python 3.6 support https://stackoverflow.com/questions/53291250/python-3-6-datetime-strptime-returns-error-while-python-3-7-works-well + # ValueError: time data '2023-08-08+03:00' does not match format '%Y-%m-%d%z'↵" + d = datetime.strptime(checkup, '%Y-%m-%d') #'checkup': '2023-09-25+03:00' + return d + + @staticmethod + def serialize_for_send(counter, value): + """ + :param counterId: id счетчика. не номер из приложения! + :param value: значение float + :return: dict + """ + return { + 'counter_id': int(counter['counterId']), + 'period': datetime.now().strftime("%Y-%m-%d"), + 'indication': '{:.2f}'.format(value).replace('.', ',') + } diff --git a/appdaemon/docker/emp_mos_api/read_watermeters.py b/appdaemon/docker/emp_mos_api/read_watermeters.py new file mode 100644 index 0000000..c805769 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/read_watermeters.py @@ -0,0 +1,81 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +import argparse +from emp_mos_api import MosAPI, Water, Watercounter + + +if __name__ == "__main__": + +# mosru_token: '887033d0649e62a84f80433e823526a1' #new: 887033d0649e62a84f80433e823526a1 #old +# mosru_session: 'a6727b620c79d9b2d24953de734e641e' #new: a3d3fdb831f1a88138abc5a096a06fce #old 3d88ede29eb74bd49fbaa54050fe8b5b + + + parser = argparse.ArgumentParser(description='emp.mos.ru API') + parser.add_argument('--token', default='705408acae4c705e9f66c9837288b3dd') + parser.add_argument('--user_agent', default='okhttp/3.8.1', help='User-Agent header') + parser.add_argument('--guid', default='80C3E12-A56F-C7A5-4174-14612ED63CF2') + parser.add_argument('--dev_user_agent', default='ios', help='application user agent') + parser.add_argument('--dev_app_version', help='application version', default='4.00.3 (245)') + + parser.add_argument('--login', help='your login (phone number: 7xxxxxxxxxx)') + parser.add_argument('--pwd', help='your password') + + parser.add_argument('--flat_id', help='id квартиры на сервере. если не указывать, отправится в 1ю.', default='16384751') + + parser.add_argument('--hot', type=float, help='Hot water new value') + parser.add_argument('--cold', type=float, help='Cold water new value') + + args = parser.parse_args() + + # + api = MosAPI(token=args.token, + user_agent=args.user_agent, + guid=args.guid, + dev_user_agent=args.dev_user_agent, + dev_app_version=args.dev_app_version, + verify=True) + + try: + api.set_session('a6727b620c79d9b2d24953de734e641e') + + counters = api.get_watercounters('16384751')['counters'] + print(counters) + + new_values = [] + + hots_json = list(filter(lambda x: x['type'] == Water.HOT, counters)) + if hots_json: + hot_value = Watercounter.last_value(hots_json[0]) + if hot_value: + print('Текущее показание горячей воды: {:.2f} m3'.format(hot_value)) + else: + print('Показания горячей воды не передавались больше 3-х месяцев') + + if args.hot: + new_values.append(Watercounter.serialize_for_send(hots_json[0], args.hot)) + print('Новое показание горячей воды: {:.2f} m3'.format(args.hot)) + else: + print('Не найден счетчик горячей воды') + + # + colds_json = list(filter(lambda x: x['type'] == Water.COLD, counters)) + if colds_json: + cold_value = Watercounter.last_value(colds_json[0]) + if cold_value: + print('Текущее показание холодной воды: {:.2f} m3'.format(cold_value)) + else: + print('Показания холодной воды не передавались больше 3-х месяцев') + + if args.cold: + new_values.append(Watercounter.serialize_for_send(colds_json[0], args.cold)) + print('Новое показание холодной воды: {:.2f} m3'.format(args.cold)) + else: + print('Не найден счетчик холодной воды') + + if new_values: + api.send_watercounters(flat_id, new_values) + print('Показания отправлены на сервер') + + finally: + print('done') + #api.logout() #долго diff --git a/appdaemon/docker/emp_mos_api/requirements.txt b/appdaemon/docker/emp_mos_api/requirements.txt new file mode 100644 index 0000000..7e78f02 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/requirements.txt @@ -0,0 +1,2 @@ +distro>=1.3.0 +requests>=2.19.1 \ No newline at end of file diff --git a/appdaemon/docker/emp_mos_api/setup.py b/appdaemon/docker/emp_mos_api/setup.py new file mode 100644 index 0000000..576ffc9 --- /dev/null +++ b/appdaemon/docker/emp_mos_api/setup.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +""" +Неофициальный Python клиент Единой мобильной платформы города Москвы. +""" +from __future__ import print_function +from setuptools import setup + +VERSION_MAJOR = 0 +VERSION_MINOR = 12 + +ver = '%d.%d' % (VERSION_MAJOR, VERSION_MINOR) + +if __name__ == '__main__': + """ + Создание пакета + + python setup.py sdist --formats=zip bdist_wheel # или --formats=gztar + twine upload dist/* + """ + with open('README.md', 'r') as fh: + long_description = fh.read() + + setup( + name='emp_mos_api', + version=ver, + description=__doc__.replace('\n', '').strip(), + long_description=long_description, + long_description_content_type='text/markdown', + author='Dontsov E.', + author_email='dontsovcmc@gmail.com', + url='https://github.com/dontsovcmc/emp_mos_api', + py_modules=['emp_mos_api'], + include_package_data=True, + packages=[ + 'emp_mos_api', + 'emp_mos_api.examples' + ], + classifiers=( + "Programming Language :: Python :: 2.7", + 'Programming Language :: Python :: 3', + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ), + license='MIT', + platforms=['linux2', 'win32'], + install_requires=[ + 'requests>=2.19.1' + ], + ) diff --git a/appdaemon/settings/appdaemon.yaml b/appdaemon/settings/appdaemon.yaml new file mode 100644 index 0000000..7248f7b --- /dev/null +++ b/appdaemon/settings/appdaemon.yaml @@ -0,0 +1,36 @@ +logs: + main_log: + filename: STDOUT + +appdaemon: + # threads: 10 + latitude: !secret home_latitude + longitude: !secret home_longitude + elevation: 0 + time_zone: !secret timezone + ascii_encode: False + + plugins: + HASS: + type: hass + namespace: default + ha_url: !secret ha_url + token: !secret ha_token + + MQTT: + type: mqtt + namespace: mqtt + verbose: True + client_host: !secret mqtt_ip + client_port: 1883 + client_user: !secret mqtt_user + client_password: !secret mqtt_password + client_topics: + - home/presence/# + +#http: +# url: !secret ha_url +admin: +api: +hadashboard: +mqtt: diff --git a/appdaemon/settings/apps/alice/alice_intents.py b/appdaemon/settings/apps/alice/alice_intents.py new file mode 100644 index 0000000..cbcfb93 --- /dev/null +++ b/appdaemon/settings/apps/alice/alice_intents.py @@ -0,0 +1,44 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import time + +# +# Home and away report +# Send report about home state after presence_actions was done. +# +# Args: +# entity - group of entities to send state report +# notify - notify entity to send message +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class AliceIntents(hass.Hass): + entity_id = None + + def initialize(self): + self.listen_event(self.yandex_intent, "yandex_intent") + + def yandex_intent(self, event_id, event_args, kwargs): + self.log("{} {}".format(event_id, event_args)) + text = event_args['text'] + room = event_args['room'] + alice = event_args['entity_id'] + if text == 'Как дела': + self.entity_id = alice + self.run_in(self.run_in_say, 10, command="Кто здесь в {}?".format(room)) + + def run_in_say(self, kwargs): + if 'command' not in kwargs: + return + text = kwargs['command'] + self.say(text) + + def command(self, command): + self.call_service('yandex_station/send_command', command='sendText', text=command) + + def say(self, command): + self.log('command = {}'.format(command)) + self.call_service('media_player/play_media', entity_id=self.entity_id, media_content_type='text', media_content_id=command) \ No newline at end of file diff --git a/appdaemon/settings/apps/alice/alice_intents.yaml b/appdaemon/settings/apps/alice/alice_intents.yaml new file mode 100644 index 0000000..0061c0d --- /dev/null +++ b/appdaemon/settings/apps/alice/alice_intents.yaml @@ -0,0 +1,8 @@ +################################# +# HOME PRESENSE # +################################# +alice_intents: + module: alice_intents + class: AliceIntents + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/alice/presence_action.py b/appdaemon/settings/apps/alice/presence_action.py new file mode 100644 index 0000000..ac89643 --- /dev/null +++ b/appdaemon/settings/apps/alice/presence_action.py @@ -0,0 +1,49 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import time + +# +# Home and away report +# Send report about home state after presence_actions was done. +# +# Args: +# entity - group of entities to send state report +# notify - notify entity to send message +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class PresenceAction(hass.Hass): + report_delay = 15 + def initialize(self): + if 'alice' not in self.args: + self.error("Please provide alice in config!") + return + self.listen_event(self.away_mode, "away_mode") + self.listen_event(self.return_home_mode, "return_home_mode") + + def away_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.command('стоп') + + def return_home_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + command = 'Добро пожаловать домой.' + self.run_in(self.run_in_say, 59, command=command) + + def run_in_say(self, kwargs): + if 'command' not in kwargs: + return + text = kwargs['command'] + self.say(text) + + def command(self, command): + self.call_service('yandex_station/send_command', command='sendText', text=command) + + def say(self, command): + self.log('command = {}'.format(command)) + self.call_service('media_player/play_media', entity_id=self.args['alice'], media_content_type='text', media_content_id=command) \ No newline at end of file diff --git a/appdaemon/settings/apps/alice/presence_action.yaml b/appdaemon/settings/apps/alice/presence_action.yaml new file mode 100644 index 0000000..20e4551 --- /dev/null +++ b/appdaemon/settings/apps/alice/presence_action.yaml @@ -0,0 +1,9 @@ +################################# +# HOME PRESENSE # +################################# +presence_action: + module: presence_action + class: PresenceAction + alice: media_player.yandex_station_m00r46000m53db + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/apps.yaml b/appdaemon/settings/apps/apps.yaml new file mode 100644 index 0000000..ca7962f --- /dev/null +++ b/appdaemon/settings/apps/apps.yaml @@ -0,0 +1,29 @@ +################################################################# +## Global +################################################################# +global_modules: + - globals + - automation + - notify + +automation: + class: Automation + module: automation +################################# +# CUBE # +################################# +# cube: +# module: cube +# class: Cube + +################################# +# NARODMON # +################################# +# narodmon_sensor: +# module: narodmon_sensor +# class: NarodmonSensor +# entity: sensor.lux_outside +# friendly_name: 'Освещенность (Улица)' +# user: 1089 +# sensorid: 7574 +# interval: 120 \ No newline at end of file diff --git a/appdaemon/settings/apps/automation.py b/appdaemon/settings/apps/automation.py new file mode 100644 index 0000000..06d0f06 --- /dev/null +++ b/appdaemon/settings/apps/automation.py @@ -0,0 +1,55 @@ +import appdaemon.plugins.hass.hassapi as hass + +class Base(hass.Hass): + """Define a base automation object.""" + + def initialize(self) -> None: + """Initialize.""" + # self.log('Initialize base') + + # Define a holding place for HASS entity IDs: + self.entity_ids = self.args.get('entity_ids', {}) + + # Define a holding place for any scheduler handles that the automation + # wants to keep track of: + self.handles = {} # type: Dict[str, str] + + # Define a holding place for key/value properties for this automation: + self.properties = self.args.get('properties', {}) + + # Take every dependecy and create a reference to it: + for app in self.args.get('dependencies', []): + if not getattr(self, app, None): + setattr(self, app, self.get_app(app)) + +class Automation(Base): + """Define a base automation object.""" + + def initialize(self) -> None: + """Initialize.""" + super().initialize() + # self.log('Initialize automation') + + # Define a reference to the "manager app" – for example, a trash- + # related automation might carry a reference to TrashManager: + if self.args.get('app'): + self.app = getattr(self, self.args['app']) + + # Set the entity ID of the input boolean that will control whether + # this automation is enabled or not: + self.enabled_entity_id = None # type: ignore + enabled_config = self.args.get('enabled_config', {}) + if enabled_config: + if enabled_config.get('toggle_name'): + self.enabled_entity_id = 'input_boolean.{0}'.format( + enabled_config['toggle_name']) + else: + self.enabled_entity_id = 'input_boolean.{0}'.format(self.name) + + # Register any "mode alterations" for this automation – for example, + # perhaps it should be disabled when Vacation Mode is enabled: + mode_alterations = self.args.get('mode_alterations', {}) + if mode_alterations: + for mode, value in mode_alterations.items(): + mode_app = getattr(self, mode) + mode_app.register_enabled_entity(self.enabled_entity_id, value) diff --git a/appdaemon/settings/apps/climate/breaser_control.py b/appdaemon/settings/apps/climate/breaser_control.py new file mode 100644 index 0000000..7718a5f --- /dev/null +++ b/appdaemon/settings/apps/climate/breaser_control.py @@ -0,0 +1,277 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime + +# +# Purifier controller +# Turn on and off purifier by light sensor and timers +# +# Args: +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class BreaserControl(hass.Hass): + away_fan_speed = 8 #1-14 + listen_event_handle_list = [] + mode = 'auto' + heat_start_at = '23:00:00' + heat_stop_at = '07:00:00' + + def initialize(self): + if not globals.check_args(self, ["on_time", "off_time"]): + return + on_time = self.parse_time(self.args["on_time"]) + off_time = self.parse_time(self.args["off_time"]) + + self.on_timer = self.run_daily(self.day_mode_timer_event, on_time) + self.off_timer = self.run_daily(self.night_mode_timer_event, off_time) + + if 'heat_switch' in self.args: + self.heat_on_timer = self.run_daily(self.heat_mode_on_timer_event, self.heat_start_at) + self.heat_off_timer = self.run_daily(self.heat_mode_off_timer_event, self.heat_stop_at) + self.heat_mode_by_time() + + self.listen_event_handle_list.append(self.listen_event(self.away_mode_event, "away_mode")) + self.listen_event_handle_list.append(self.listen_event(self.return_home_mode_event, "return_home_mode")) + if 'co2_sensor' in self.args: + self.listen_event_handle_list.append(self.listen_state(self.state_change, self.args['co2_sensor'])) + + def state_change(self, entity, attribute, old, new, kwargs): + self.heat_mode_by_time() + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + presence_state = self.get_state(self.args['ha_panel']) + if presence_state != "disarmed": + self.log('Nobody home, ignoring co2 changes.') + return + if new == 'unknown': + return + self.log("{} changed from {} to {}".format(attribute, old, new)) + co2_level = int(new) + #day + if self.time_is_between(self.datetime(), self.args["on_time"], self.args["off_time"]): + self.set_mode_by_co2(co2_level, False) + #night + elif not self.time_is_between(self.datetime(), self.args["on_time"], self.args["off_time"]): + self.set_mode_by_co2(co2_level, True) + +def set_mode_by_co2(self, co2_level, is_night): + self.heat_mode_by_time() + + # === Настраиваемые коэффициенты === + CFG = { + 'co2_auto_threshold': 600, # Ниже этого значения — auto_mode + 'co2_min_control': 700, # Начало плавного роста скорости + 'co2_max_control': 1200, # Максимальная скорость достигается здесь + 'speed_min': 30, # Мин. скорость вентиляции + 'speed_max': 100, # Макс. скорость вентиляции + 'night_speed_factor': 0.75, # Коэффициент снижения скорости ночью + 'transition_smoothness': 0.3, # Плавность перехода (0-1) + } + + # === Плавная функция перехода от auto к ручной скорости === + def calculate_speed(co2, cfg, is_night): + # Нормализация CO2 в диапазон [0, 1] + t = (co2 - cfg['co2_min_control']) / (cfg['co2_max_control'] - cfg['co2_min_control']) + t = max(0.0, min(1.0, t)) + + # Плавная интерполяция (smoothstep для более мягкого старта) + if cfg['transition_smoothness'] > 0: + t = t * t * (3 - 2 * t) # Cubic smoothstep + + # Базовая скорость + base_speed = cfg['speed_min'] + t * (cfg['speed_max'] - cfg['speed_min']) + + # Ночной коэффициент + day_factor = 1.0 if not is_night else cfg['night_speed_factor'] + final_speed = base_speed * day_factor + + return int(round(max(cfg['speed_min'], min(cfg['speed_max'], final_speed)))) + + # === Автоматический режим при низком CO2 === + if co2_level <= CFG['co2_auto_threshold']: + self.log('CO2 is excellent: {}. Set auto mode.'.format(co2_level)) + self.auto_mode() + return + + # === Плавный расчёт скорости === + speed = calculate_speed(co2_level, CFG, is_night) + + # Определение уровня для лога + if co2_level < CFG['co2_min_control']: + level_desc = 'good' + elif co2_level < CFG['co2_max_control'] * 0.7: + level_desc = 'moderate' + elif co2_level < CFG['co2_max_control']: + level_desc = 'high' + else: + level_desc = 'extremely high' + + period = 'Night' if is_night else 'Day' + self.log('{}, CO2 is {}: {}. Set speed to {}.'.format( + period, level_desc, co2_level, speed)) + + self.set_speed(speed) + + # def set_mode_by_co2(self, co2_level, is_night): + # self.heat_mode_by_time() + # if co2_level < 500: + # self.log('CO2 is fine: {}. Set auto mode.'.format(co2_level)) + # self.auto_mode() + # if co2_level > 500 and co2_level < 800: + # if is_night: + # self.log('CO2 is normal: {}. Set night mode'.format(co2_level)) + # self.night_mode() + # else: + # self.log('CO2 is normal: {}. Set auto mode.'.format(co2_level)) + # self.auto_mode() + # return + # if co2_level > 800 and co2_level < 900: + # if is_night: + # self.log('Night, CO2 is high: {}. Set speed to 45.'.format(co2_level)) + # self.set_speed(45) + # else: + # self.log('Day, CO2 is high: {}. Set speed to 65.'.format(co2_level)) + # self.set_speed(65) + # return + # if co2_level > 900 and co2_level < 1000: + # if is_night: + # self.log('Night, CO2 is high: {}. Set speed to 65.'.format(co2_level)) + # self.set_speed(65) + # else: + # self.log('Day, CO2 is high: {}. Set speed to 80.'.format(co2_level)) + # self.set_speed(80) + # return + # if co2_level > 1000 and co2_level < 1200: + # if is_night: + # self.log('Night, CO2 is extremely high: {}. Set speed to 80.'.format(co2_level)) + # self.set_speed(80) + # else: + # self.log('Day, CO2 is extremely high: {}. Set speed to 100.'.format(co2_level)) + # self.set_speed(100) + # return + # if co2_level > 1200: + # if is_night: + # self.log('Night, CO2 is extremely high: {}. Set speed to 100.'.format(co2_level)) + # self.set_speed(100) + # else: + # self.log('Day, CO2 is extremely high: {}. Set speed to 100.'.format(co2_level)) + # self.set_speed(100) + # return + + def set_speed(self, speed): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.log('Set purifier mode to favorite, speed: {}'.format(speed)) + self.call_service("fan/set_preset_mode", entity_id = self.args['entity'], preset_mode='Favorite') + self.call_service("fan/set_percentage", entity_id = self.args['entity'], percentage=speed) + + def return_home_mode_event(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.auto_mode() + + def away_mode_event(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.turn_on(self.args['entity']) + self.away_mode() + + def night_mode_timer_event(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + presence_state = self.get_state(self.args['ha_panel']) + if presence_state != "disarmed": + self.log('Nobody home, ignoring automations.') + return + self.night_mode() + + def day_mode_timer_event(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + presence_state = self.get_state(self.args['ha_panel']) + if presence_state != "disarmed": + self.log('Nobody home, ignoring automations.') + return + self.auto_mode() + + def away_mode(self): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.mode='away' + self.log('Set purifier mode to favorite, speed: {}'.format(self.away_fan_speed)) + if 'entity' in self.args: + self.call_service("fan/set_preset_mode", entity_id = self.args['entity'], preset_mode='Favorite') + self.call_service("fan/set_percentage", entity_id = self.args['entity'], percentage=100) + + def auto_mode(self): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.mode='auto' + self.log('Set purifier mode to auto.') + if 'entity' in self.args: + self.call_service("fan/set_preset_mode", entity_id = self.args['entity'], preset_mode='Auto') + + def night_mode(self): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.mode='night' + self.log('Set purifier mode to silent.') + if 'entity' in self.args: + self.call_service("fan/set_preset_mode", entity_id = self.args['entity'], preset_mode='Sleep') + + #heating control + def heat_mode_by_time(self): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint_heat']): + return + if self.time_is_between(self.datetime(), self.heat_stop_at, self.heat_start_at): + self.log('Expensive tariff. Set heat off.') + self.heat_mode_off_timer_event(None) + else: + presence_state = self.get_state(self.args['ha_panel']) + if presence_state != "disarmed": + self.log('Nobody home, ignoring automations.') + return + self.log('Cheap tariff. Set heat on.') + self.heat_mode_on_timer_event(None) + + def heat_mode_on_timer_event(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint_heat']): + return + presence_state = self.get_state(self.args['ha_panel']) + if presence_state != "disarmed": + self.log('Nobody home, ignoring automations.') + return + self.turn_on(self.args['heat_switch']) + + def heat_mode_off_timer_event(self, kwargs): + self.turn_off(self.args['heat_switch']) + + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/climate/breaser_control.yaml b/appdaemon/settings/apps/climate/breaser_control.yaml new file mode 100644 index 0000000..c180cbe --- /dev/null +++ b/appdaemon/settings/apps/climate/breaser_control.yaml @@ -0,0 +1,14 @@ +breaser_control: + module: breaser_control + class: BreaserControl + on_time: "09:00:00" + off_time: "22:00:00" + entity: fan.ventiliatsionnaia_sistema + ha_panel: alarm_control_panel.ha_alarm + co2_sensor: sensor.co2_bedroom_co2 + heat_switch: switch.ventiliatsionnaia_sistema_auxiliary_heat + constraint: input_boolean.vent_control + constraint_heat: input_boolean.vent_control_heat + global_dependencies: + - globals + \ No newline at end of file diff --git a/appdaemon/settings/apps/climate/climate_control.py_ b/appdaemon/settings/apps/climate/climate_control.py_ new file mode 100644 index 0000000..5cc61f2 --- /dev/null +++ b/appdaemon/settings/apps/climate/climate_control.py_ @@ -0,0 +1,212 @@ +import appdaemon.plugins.hass.hassapi as hass +from datetime import time, datetime, timedelta + +class ClimateControl(hass.Hass): + def initialize(self): + # Настройки из YAML + self.thermostat = self.args.get("thermostat", "climate.virtual_thermostat") + self.ac = self.args.get("ac", "climate.ac_bedroom") + self.radiators = self.args.get("radiators", ["climate.radiator_bedroom", "climate.radiator_bedroom_balcony"]) + self.radiator_enabled = self.args.get("radiator_enabled", "input_boolean.radiator_enabled") + self.presence_sensors = self.args.get("presence_sensors", None) + self.no_presence_delay = int(self.args.get("no_presence_delay", 1800)) # секунд + self.window_sensors = self.args.get("window_sensors", None) + self.window_open_delay = int(self.args.get("window_open_delay", 300)) # секунд + self.alarm = self.args.get("alarm", "alarm_control_panel.ha_alarm") + + self.listen_state(self.thermostat_changed, self.thermostat) + self.listen_state(self.thermostat_temp_changed, self.thermostat, attribute="temperature") + self.listen_state(self.thermostat_mode_changed, self.thermostat, attribute="hvac_mode") + if self.presence_sensors is not None: + self.listen_state(self.presence_changed, self.presence_sensors) + if self.window_sensors is not None: + self.listen_state(self.window_changed, self.window_sensors) + self.listen_state(self.radiator_enabled_changed, self.radiator_enabled) + self.listen_state(self.alarm_changed, self.alarm) + self.run_every(self.periodic_check, self.datetime() + timedelta(seconds=5), 60) + + self.no_presence_handle = None + self.window_open_handle = None + self.last_presence = self.datetime() + self.last_window_open = None + self.updating_thermostat = False + self.listen_state(self.ac_changed, self.ac) + self.listen_state(self.ac_temp_changed, self.ac, attribute="temperature") + self.auto_off_reason = None + + def thermostat_changed(self, entity, attribute, old, new, kwargs): + self.log(f"Термостат изменён: {new}") + self.control_climate() + + def thermostat_temp_changed(self, entity, attribute, old, new, kwargs): + self.log(f"Изменилась температура термостата: {old} → {new}") + self.control_climate() + + def thermostat_mode_changed(self, entity, attribute, old, new, kwargs): + self.log(f"Изменился режим термостата: {old} → {new}") + self.control_climate() + + def presence_changed(self, entity, attribute, old, new, kwargs): + if new == "on": + self.last_presence = self.datetime() + if self.no_presence_handle: + self.cancel_timer(self.no_presence_handle) + self.no_presence_handle = None + self.control_climate() + else: + if not self.no_presence_handle: + self.no_presence_handle = self.run_in(self.no_presence_timeout, self.no_presence_delay) + + def no_presence_timeout(self, kwargs): + self.log("В комнате долго нет людей — отключаю климат.") + self.turn_off_all(reason="no_presence") + + def window_changed(self, entity, attribute, old, new, kwargs): + if new == "on": + if not self.window_open_handle: + self.window_open_handle = self.run_in(self.window_open_timeout, self.window_open_delay) + else: + if self.window_open_handle: + self.cancel_timer(self.window_open_handle) + self.window_open_handle = None + self.auto_off_reason = None # сбросить флаг после закрытия окна + self.control_climate() + + def window_open_timeout(self, kwargs): + self.log("Окно открыто более 5 минут — отключаю климат.") + self.turn_off_all(reason="window") + + def radiator_enabled_changed(self, entity, attribute, old, new, kwargs): + self.control_climate() + + def alarm_changed(self, entity, attribute, old, new, kwargs): + self.control_climate() + + def periodic_check(self, kwargs): + self.control_climate() + + def control_climate(self): + self.log(f"Проверка климата: alarm={self.get_state(self.alarm)}, окна={self.window_sensors}, присутствие={self.presence_sensors}") + mode = self.get_state(self.thermostat, attribute="hvac_mode") + if mode is None: + mode = self.get_state(self.thermostat) + target_temp = self.get_state(self.thermostat, attribute="temperature") + self.log(f"Режим термостата (hvac_mode/state): {mode}, температура: {target_temp}") + # Проверка сигнализации + if self.get_state(self.alarm) != "disarmed": + self.log("Сигнализация активна — автоматика отключена.") + self.turn_off_all() + return + + # Проверка окон + if self.window_sensors: + if any(self.get_state(s) == "on" for s in self.window_sensors): + self.log("Окно открыто — автоматика отключена.") + self.turn_off_all() + return + + # Проверка присутствия + if self.presence_sensors: + if all(self.get_state(s) == "off" for s in self.presence_sensors): + if (self.datetime() - self.last_presence).total_seconds() > self.no_presence_delay: + self.log("Нет людей — автоматика отключена.") + self.turn_off_all() + return + + # Проверка режима термостата + if mode == "off": + self.log("Термостат в off — автоматика отключена.") + self.turn_off_all() + return + elif mode == "cool": + self.log("Режим охлаждения.") + self.set_ac_mode("cool", target_temp) + self.set_radiators_off() + return + elif mode == "heat": + # Определяем сезон + radiator_on = self.get_state(self.radiator_enabled) == "on" + now = datetime.now().time() + self.log(f"radiator_enabled: {radiator_on}, время: {now}") + if not radiator_on: + self.log("Лето — только сплит-система.") + self.set_ac_mode("heat", target_temp) + self.set_radiators_off() + else: + if time(23,0) <= now or now < time(7,0): + self.log("Зима, ночь — только сплит-система в режиме обогрева.") + self.set_ac_mode("heat", target_temp) + self.set_radiators_off() + else: + self.log("Зима, день — только радиаторы.") + self.set_ac_off() + self.set_radiators_on(target_temp) + + def set_ac_mode(self, mode, temp): + current_mode = self.get_state(self.ac) + current_temp = self.get_state(self.ac, attribute="temperature") + + current_temp_f = int(current_temp) + temp_f = int(temp) + + self.log(f"Текущий режим AC: {current_mode}, температура: {current_temp_f} (требуется: {temp_f})") + if current_mode == mode and isinstance(current_temp_f, int) and isinstance(temp_f, int) and abs(current_temp_f - temp_f) < 0.1: + self.log(f"AC {self.ac}: режим {mode}, температура {temp} — уже установлены, не отправляю команду.") + return + self.updating_thermostat = True + self.call_service("climate/set_temperature", entity_id=self.ac, temperature=temp, hvac_mode=mode) + self.log(f"AC {self.ac}: режим {mode}, температура {temp}") + self.updating_thermostat = False + + def set_ac_off(self): + current_mode = self.get_state(self.ac) + if current_mode == "off": + self.log(f"AC {self.ac}: уже выключен, не отправляю команду.") + return + self.updating_thermostat = True + self.call_service("climate/set_hvac_mode", entity_id=self.ac, hvac_mode="off") + self.log(f"AC {self.ac}: выключен") + self.updating_thermostat = False + + def set_radiators_on(self, temp): + for r in self.radiators: + self.updating_thermostat = True + self.call_service("climate/set_hvac_mode", entity_id=r, hvac_mode="heat") + self.call_service("climate/set_temperature", entity_id=r, temperature=temp) + self.log(f"Радиатор {r}: режим heat, температура {temp}") + self.updating_thermostat = False + + def set_radiators_off(self): + for r in self.radiators: + self.updating_thermostat = True + self.call_service("climate/set_hvac_mode", entity_id=r, hvac_mode="off") + self.log(f"Радиатор {r}: выключен") + self.updating_thermostat = False + + def turn_off_all(self, reason=None): + self.auto_off_reason = reason + self.set_ac_off() + self.set_radiators_off() + + def ac_changed(self, entity, attribute, old, new, kwargs): + if self.updating_thermostat: + return + if self.auto_off_reason: + self.log(f"AC выключен автоматикой ({self.auto_off_reason}), не синхронизирую термостат в off") + return + mode = self.get_state(self.ac) + temp = self.get_state(self.ac, attribute="temperature") + self.log(f"AC изменён вручную: режим {mode}, температура {temp}") + # Синхронизируем виртуальный термостат + self.updating_thermostat = True + self.call_service("climate/set_hvac_mode", entity_id=self.thermostat, hvac_mode=mode) + self.call_service("climate/set_temperature", entity_id=self.thermostat, temperature=temp) + self.updating_thermostat = False + + def ac_temp_changed(self, entity, attribute, old, new, kwargs): + if self.updating_thermostat: + return + self.log(f"AC температура изменена вручную: {old} → {new}") + self.updating_thermostat = True + self.call_service("climate/set_temperature", entity_id=self.thermostat, temperature=new) + self.updating_thermostat = False diff --git a/appdaemon/settings/apps/climate/climate_control.yaml_ b/appdaemon/settings/apps/climate/climate_control.yaml_ new file mode 100644 index 0000000..b63665b --- /dev/null +++ b/appdaemon/settings/apps/climate/climate_control.yaml_ @@ -0,0 +1,17 @@ +climate_control: + module: climate_control + class: ClimateControl + thermostat: climate.bedroom_climate + ac: climate.ac_bedroom + radiators: + - climate.radiator_bedroom + - climate.radiator_bedroom_balcony + radiator_enabled: input_boolean.radiator_enabled + #presence_sensors: + # - binary_sensor.presence_bedroom + no_presence_delay: 1800 # секунд без присутствия для отключения + window_sensors: + - binary_sensor.door_bedroom_big_window_contact + - binary_sensor.door_balcony_contact + window_open_delay: 300 # секунд открытого окна для отключения + alarm: alarm_control_panel.ha_alarm \ No newline at end of file diff --git a/appdaemon/settings/apps/climate/cover.py b/appdaemon/settings/apps/climate/cover.py new file mode 100644 index 0000000..b86f9d6 --- /dev/null +++ b/appdaemon/settings/apps/climate/cover.py @@ -0,0 +1,83 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Cover control by presence events +# Listen for presence events and change light state +# +# Args: +# entities - entities to turn on and off when presence is changed. +# Release Notes +# +# Version 1.0: +# Initial Version + +class CoverByPresence(hass.Hass): + def initialize(self): + if 'covers' not in self.args: + self.error("Please provide covers in config!") + return + self.listen_event(self.away_mode, "away_mode") + self.listen_event(self.return_home_mode, "return_home_mode") + + sunrise_offset = int(self.args.get('sunrise_offset', '0')) + self.run_at_sunrise(self.run_at_sunrise_func, offset=sunrise_offset) + sunset_offset = int(self.args.get('sunset_offset', '0')) + self.run_at_sunset(self.run_at_sunset_func, offset=sunset_offset) + + def run_at_sunrise_func(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + self.log('execution is disabled.') + return + + if 'guest_mode' in self.args and self.constrain_input_boolean(self.args['guest_mode']): + self.log('guest mode, no run at sunrise.') + return + + if 'open_at_sunrise' not in self.args: + self.log('no covers to open at sunrise.') + return + + for entity_id in self.args["open_at_sunrise"]: + self.log('opening cover {} at sunrise'.format(entity_id)) + self.turn_on_custom(entity_id) + + def run_at_sunset_func(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + self.log('execution is disabled.') + return + if 'close_at_sunset' not in self.args: + self.log('no covers to close at sunset.') + return + for entity_id in self.args["close_at_sunset"]: + self.log('closing cover {} at sunset'.format(entity_id)) + self.turn_off_custom(entity_id) + + def away_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + self.log('execution is disabled.') + return + for entity_id in self.args["covers"]: + self.turn_off_custom(entity_id) + + def return_home_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + self.log('execution is disabled.') + return + if self.sun_down(): + self.log('Sun is down, skip opening covers.') + return + entities = self.args["covers"] + for entity_id in entities: + self.turn_on_custom(entity_id) + + def turn_on_custom(self, entity_id): + if 'cover.' in entity_id: + self.call_service("cover/open_cover", entity_id=entity_id) + return + self.turn_on(entity_id) + + def turn_off_custom(self, entity_id): + if 'cover.' in entity_id: + self.call_service("cover/close_cover", entity_id=entity_id) + return + self.turn_off(entity_id) diff --git a/appdaemon/settings/apps/climate/cover.yaml b/appdaemon/settings/apps/climate/cover.yaml new file mode 100644 index 0000000..fb8377e --- /dev/null +++ b/appdaemon/settings/apps/climate/cover.yaml @@ -0,0 +1,29 @@ +################################# +# HOME PRESENSE # +################################# +cover_action: + module: cover + class: CoverByPresence + sunrise_offset: 0 + sunset_offset: 0 + guest_mode: input_boolean.guest_mode + covers: + - cover.curtain_bedroom + - cover.curtain_bedroom_balcony + #- cover.curtain_bedroom_bobbinet_balcony + - cover.curtain_kitchen + - cover.curtain_mainroom + #- cover.curtain_mainroom_bobbinet + close_at_sunset: + - cover.curtain_bedroom + - cover.curtain_bedroom_balcony + - cover.curtain_bedroom_bobbinet_balcony + - cover.curtain_kitchen + - cover.curtain_mainroom + - cover.curtain_mainroom_bobbinet + open_at_sunrise: + - cover.curtain_kitchen + - cover.curtain_mainroom + global_dependencies: + - globals + diff --git a/appdaemon/settings/apps/climate/mirror_heater_control.py b/appdaemon/settings/apps/climate/mirror_heater_control.py new file mode 100644 index 0000000..7046d9a --- /dev/null +++ b/appdaemon/settings/apps/climate/mirror_heater_control.py @@ -0,0 +1,73 @@ +import hassapi as hass +import datetime +import adbase as ad + + +# +# entity: sensor.temperature_bath_humidity +# control_entity: switch.switch_mirror_bath_heater +# constraint: input_boolean.bath_mirror_heat +# threshold: 75 + + +class MirrorHeater(hass.Hass): + timer = None + entity = None + threshold = 75 + blocked = False + + def initialize(self): + self.log('starting initialize') + + sensor = self.args['entity'] + self.log('listen [{0}] state'.format(sensor)) + self.listen_state(self.humidity_changed, sensor, duration=10) + + if 'threshold' in self.args: + self.threshold = self.args['threshold'] + self.log('setting threshold to: {}'.format(self.threshold)) + + def humidity_changed(self, entity, attribute, old_state, new_state, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + self.log('[{0}] [humidity changed] : {1}, isnumeric: {2}, type: {3}'.format(entity, new_state, new_state.isnumeric(), type(new_state))) + if float(new_state) > self.threshold: + self.log('Control Entity On and running timer...') + self.control_entity_on() + self.run_timer() + else: + self.log('Control Entity Off and stopping timer...') + self.control_entity_off(None) + +############ TIMER ######################## + def run_timer(self): + if self.timer != None: + self.stop_timer() + self.timer = self.run_in(self.control_entity_off, self.args['timeout']) + + def control_entity_on(self): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + for entity in self.args['control_entities']: + state = self.get_state(entity) + if state == 'off': + self.turn_on(entity) + self.log("Turn on ({}).".format(entity)) + + def control_entity_off(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + for entity in self.args['control_entities']: + state = self.get_state(entity) + if state == 'on': + self.turn_off(entity) + self.log("Turn off ({}).".format(entity)) + self.stop_timer() + + def stop_timer(self): + if (self.timer == None): + return + self.log('stopping timer.') + self.cancel_timer(self.timer) + self.timer = None \ No newline at end of file diff --git a/appdaemon/settings/apps/climate/mirror_heater_control.yaml b/appdaemon/settings/apps/climate/mirror_heater_control.yaml new file mode 100644 index 0000000..7053407 --- /dev/null +++ b/appdaemon/settings/apps/climate/mirror_heater_control.yaml @@ -0,0 +1,39 @@ +################################# +# Контроль подогрева зеркал # +################################# +mirror_heater_control: + # Название класса + class: MirrorHeater + module: mirror_heater_control + + entity: sensor.temperature_bath_humidity + control_entities: + - switch.switch_mirror_bath_heater + + constraint: input_boolean.bath_mirror_heat + threshold: 75 + timeout: 1800 #3600=1hr + + global_dependencies: + - globals + + +# ################################# +# # Контроль подогрева зеркал # +# ################################# +# mirror_heater_control_shower: +# # Название класса +# class: MirrorHeater +# module: mirror_heater_control + +# entity: sensor.temperature_shower_humidity +# control_entities: +# - switch.shower_mirror +# - switch.switch_mirror_shower_heater + +# constraint: input_boolean.shower_mirror_heat +# threshold: 75 +# timeout: 3600 #3600=1hr + +# global_dependencies: +# - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/climate/trv_updater.py b/appdaemon/settings/apps/climate/trv_updater.py new file mode 100644 index 0000000..5a844f1 --- /dev/null +++ b/appdaemon/settings/apps/climate/trv_updater.py @@ -0,0 +1,46 @@ +import hassapi as hass +import datetime +import adbase as ad + + +class TRVUpdater(hass.Hass): + entities = [] + + def initialize(self): + self.log('starting initialize') + self.entities = self.args['entities'] + + for sensor in self.entities.keys(): + self.log('listen [{0}] state'.format(sensor)) + self.listen_state(self.temperature_changed, sensor, duration=10) + current_temperature = self.get_state(sensor) + self.temperature_changed(sensor, 'temperature', '20.0', current_temperature, None) + + def temperature_changed(self, entity, attribute, old_state, new_state, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + self.log('Отправка температуры отключена в связи с отключением отопления.') + return + + self.log('[{0}] [temperature changed] : {1}, isnumeric: {2}, type: {3}'.format(entity, new_state, new_state.isnumeric(), type(new_state))) + topic = self.entities[entity].get('topic_prefix', None) + if topic is not None: + sensor_topic = topic.replace('/sensor_temp', '') + sensor_payload = '{"sensor":"external"}' + self.log('[mqtt publish] topic: "{0}" value: {1}'.format(sensor_topic, sensor_payload)) + self.call_service("mqtt/publish", topic=sensor_topic, payload=sensor_payload) + + temperature_payload = '{"external_temperature_input":"' + new_state + '"}' + self.log('[mqtt publish] topic: "{0}" value: {1}'.format(sensor_topic, temperature_payload)) + self.call_service("mqtt/publish", topic=sensor_topic, payload=temperature_payload) + + topics = self.entities[entity].get('topic_prefixes', None) + if topics is not None: + for topic in topics: + sensor_topic = topic.replace('/sensor_temp', '') + sensor_payload = '{"sensor":"external"}' + self.log('[mqtt publish] topic: "{0}" value: {1}'.format(sensor_topic, sensor_payload)) + self.call_service("mqtt/publish", topic=sensor_topic, payload=sensor_payload) + + temperature_payload = '{"external_temperature_input":' + new_state + '}' + self.log('[mqtt publish] topic: "{0}" value: {1}'.format(sensor_topic, temperature_payload)) + self.call_service("mqtt/publish", topic=sensor_topic, payload=temperature_payload) diff --git a/appdaemon/settings/apps/climate/trv_updater.yaml b/appdaemon/settings/apps/climate/trv_updater.yaml new file mode 100644 index 0000000..7298830 --- /dev/null +++ b/appdaemon/settings/apps/climate/trv_updater.yaml @@ -0,0 +1,22 @@ +################################# +# Обновление температуры на термоголовках # +################################# +trv_updater: + # Название класса + class: TRVUpdater + module: trv_updater + constraint: input_boolean.radiator_enabled + + entities: + 'sensor.temperature_mainroom_temperature': + topic_prefix: z2m-tcp/radiator_mainroom/set/sensor_temp + 'sensor.temperature_bedroom_temperature': + topic_prefixes: + - z2m-tcp/radiator_bedroom/set/sensor_temp + - z2m-tcp/radiator_bedroom_balcony/set/sensor_temp + 'sensor.temperature_kitchen_temperature': + topic_prefix: z2m-tcp/radiator_kitchen/set/sensor_temp + 'sensor.temperature_childroom_temperature': + topic_prefix: z2m-tcp/radiator_childroom/set/sensor_temp + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/doorbells/doorbell.py b/appdaemon/settings/apps/doorbells/doorbell.py new file mode 100644 index 0000000..8854896 --- /dev/null +++ b/appdaemon/settings/apps/doorbells/doorbell.py @@ -0,0 +1,43 @@ +import appdaemon.plugins.hass.hassapi as hass +import os + +# +# App to send notification when doorbell is ringing +# +# Args: +# +# notify = notification platform to send notifications to +# ringtone (optional) = ringtone to play +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Doorbell(hass.Hass): + def initialize(self): + if "notify" not in self.args: + self.error("Please provide notify, sensor, camera in config!") + return + self.listen_event(self.ha_event, "doorbell_call") + + def ha_event(self, event_name, data, kwargs): + self.log('{}:{}'.format(event_name, data)) + + self.notify("Звонок в дверь!!!", name = self.args['notify']) + if 'doorbell_pic' in data: + extra_data = {'photo': {'url':data['doorbell_pic']}} + self.notify("Фото звонившего", name = self.args['notify'], data=extra_data) + + self.say('Звонок в дверь') + + def command(self, command): + self.call_service('yandex_station/send_command', command='sendText', text=command) + + def say(self, command): + if 'alices' in self.args: + for alice in self.args['alices']: + self.log('command = {}'.format(command)) + self.call_service('media_player/play_media', entity_id=alice, media_content_type='text', media_content_id=command, extra={'volume_level': 0.8}) \ No newline at end of file diff --git a/appdaemon/settings/apps/doorbells/doorbell.yaml b/appdaemon/settings/apps/doorbells/doorbell.yaml new file mode 100644 index 0000000..a74d240 --- /dev/null +++ b/appdaemon/settings/apps/doorbells/doorbell.yaml @@ -0,0 +1,17 @@ +################################# +# INTERCOM # +################################# +doorbell: + module: doorbell + class: Doorbell + sensor: binary_sensor.doorbell_ring + camera: camera.domofon + notify: telegram + alices: + - media_player.yandex_station_m00r46000m53db + - media_player.yandex_station_m00fhe2003seqr + - media_player.yandex_station_ly00000000000008674600007209d3f5 + - media_player.yandex_station_ff98f029ab48468d28c557be + - media_player.yandex_station_u003jc100phn9k + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/globals.py b/appdaemon/settings/apps/globals.py new file mode 100644 index 0000000..ebc8299 --- /dev/null +++ b/appdaemon/settings/apps/globals.py @@ -0,0 +1,97 @@ +import importlib +import subprocess +from typing import Any, Tuple, Union + +# +# Global module +# contain global functions +# +# Args: +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +"""Define various constants.""" +CONF_PEOPLE = 'people' + +def most_common(the_list: list) -> Any: + """Return the most common element in a list.""" + return max(set(the_list), key=the_list.count) + +def check_properties(self, args): + missing = [] + for arg in args: + if arg not in self.properties: + missing.append(arg) + if len(missing) > 0: + self.error("Please provide {} in properties!".format(missing)) + return False + return True + +def check_args(self, args): + missing = [] + for arg in args: + if arg not in self.args: + missing.append(arg) + if len(missing) > 0: + self.error("Please provide {} in config!".format(missing)) + return False + return True + +def check_constaint(self, name='constraint'): + self.log('checking constaint: {}'.format(name)) + if name not in self.args: + self.log('script is not constrained') + return True; + constaint_input = self.args[name] + constaint_state = self.get_state(constaint_input) + +def get_group_entities(self, group): + attributes = self.get_state(group, attribute = "all") + if (attributes == None): + self.log('Warning: Possible invalid group: {}'.format(group)) + return [] + if 'attributes' in attributes: + attributes = attributes['attributes'] + + #group + if "entity_id" in attributes: + return attributes["entity_id"] + + #simple item + return [group] + +def turn_on(self, entity_id, state): + if entity_id.startswith("light"): + self.call_service("light/turn_off", entity_id = entity_id, transition = 1, brightness = 255) + else: + self.turn_off(entity_id, state) + +def turn_off(self, entity_id, state): + if entity_id.startswith("light"): + self.call_service("light/turn_off", entity_id = entity_id, transition = 1) + else: + self.turn_off(entity_id, state) + +def notification(self, to, message): + self.notify(message, name = "telegram") + + +def get_arg(args, key): + key = args[key] + return key + + +def get_arg_list(args, key): + arg_list = [] + if isinstance(args[key], list): + arg = args[key] + else: + arg = (args[key]).split(",") + for key in arg: + arg_list.append(key) + return arg_list \ No newline at end of file diff --git a/appdaemon/settings/apps/groups/groups.py b/appdaemon/settings/apps/groups/groups.py new file mode 100644 index 0000000..0522d57 --- /dev/null +++ b/appdaemon/settings/apps/groups/groups.py @@ -0,0 +1,79 @@ +import appdaemon.plugins.hass.hassapi as hass +import re +# +# This app will create groups in runtime by user defined params +# Based on Rene Tode groups plugin ( hass@reot.org ) +# +# Args: +# device_type: sensor # or any devicetype +# entity_part: "any_part" +# entities: # list of entities +# - sensor.any_entity +# hidden: False # or True +# view: True # or False +# assumed_state: False # or True +# friendly_name: Your Friendly Name +# nested_view: True # or False +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Groups(hass.Hass): + def initialize(self): + self.run_in(self.create_groups_timer, 10) + + def create_groups_timer(self, kwargs): + entitylist = [] + + expand_group = self.args.get("expand_group", False) + device_type = self.args.get("device_type", None) + all_entities = self.get_state(device_type) + + if "entities" in self.args: + for entity in self.args["entities"]: + found = False + for real_entity in all_entities: + if real_entity.lower() == entity.lower(): + self.append_entity(entitylist, entity, expand_group) + found = True + if not found: + for real_entity in all_entities: + if re.match(entity.lower(), real_entity.lower()): + self.append_entity(entitylist, real_entity, expand_group) + + if 'entity_part' in self.args: + for entity in all_entities: + if self.args["entity_part"] in entity and entity.lower() not in entitylist: + self.append_entity(entitylist, entity, expand_group) + + hidden = self.args.get("hidden", False) + view = self.args.get("view", False) + assumed_state = self.args.get("assumed_state",False) + friendly_name = self.args.get("friendly_name","") + name = "group." + self.name + + if self.args.get('orderby', None) == 'friendly_name': + entitylist.sort(key=self.sortByFriendlyName) + + self.log("Creating group {} with entities: {}".format(name, entitylist)) + self.set_state(name,state="on",attributes={"view": view,"hidden": hidden,"assumed_state": assumed_state,"friendly_name": friendly_name,"entity_id": entitylist, 'description': 'Created and updated from appdaemon ({})'.format(__name__)}) + + def sortByFriendlyName(self, entity): + return self.get_state(entity, attribute='friendly_name') + + def append_entity(self, entitylist, entity, expand_group): + entity = entity.lower() + if (('group.' not in entity and expand_group) or not expand_group) and entity not in entitylist: + entitylist.append(entity) + return + if expand_group and 'group.' in entity: + group_entities = self.get_group_entities(entity) + for group_entity in group_entities: + if group_entity not in entitylist: + entitylist.append(group_entity) + + def get_group_entities(self, group): + group = self.get_state(group, attribute = "all") + return group["attributes"]["entity_id"] \ No newline at end of file diff --git a/appdaemon/settings/apps/groups/groups.yaml b/appdaemon/settings/apps/groups/groups.yaml new file mode 100644 index 0000000..adc8eb6 --- /dev/null +++ b/appdaemon/settings/apps/groups/groups.yaml @@ -0,0 +1,8 @@ +groups: + module: groups + class: Groups + friendly_name: Автоматические группы + entities: # list of entities + - media_player.lg_webos_smart_tv + # device_type: light + # entity_part: "_" \ No newline at end of file diff --git a/appdaemon/settings/apps/light/child_door_notifier.py b/appdaemon/settings/apps/light/child_door_notifier.py new file mode 100644 index 0000000..17e298c --- /dev/null +++ b/appdaemon/settings/apps/light/child_door_notifier.py @@ -0,0 +1,24 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime + +class ChildDoorNotifier(hass.Hass): + isLocked = False + + def initialize(self): + if not globals.check_args(self,['entities', 'sensor']): + return + + self.listen_event_handle_list = [] + self.listen_event_handle_list.append(self.listen_state(self.state_change, self.args['sensor'])) #, attribute='action' + + def state_change(self, entity, attribute, old, new, kwargs): + self.log('state = {}'.format(new)) + if new == "on": + self.log('open') + for i in range(1, 7): + self.run_in(self.switch_light, i) + + def switch_light(self, kwargs): + for entity in self.args['entities']: + self.toggle(entity) \ No newline at end of file diff --git a/appdaemon/settings/apps/light/child_door_notifier.yaml b/appdaemon/settings/apps/light/child_door_notifier.yaml new file mode 100644 index 0000000..bd0524f --- /dev/null +++ b/appdaemon/settings/apps/light/child_door_notifier.yaml @@ -0,0 +1,14 @@ +################################# +# Door Notifier # +################################# +child_door_notifier: + module: child_door_notifier + class: ChildDoorNotifier + sensor: binary_sensor.door_childroom_contact + entities: + - light.svetlana_bedside_lamp_rgbww_light + - light.danil_bedside_lamp_rgbww_light + global_dependencies: + - globals + + diff --git a/appdaemon/settings/apps/light/light_balcony.py b/appdaemon/settings/apps/light/light_balcony.py new file mode 100644 index 0000000..2ab06a2 --- /dev/null +++ b/appdaemon/settings/apps/light/light_balcony.py @@ -0,0 +1,46 @@ +import appdaemon.plugins.hass.hassapi as hass +import datetime + +# +# App to control balcony room light based on lux and door sensor +# +# Args: +# door_sensor: door contact sensor +# lux_sensor: xiaomi lux sensor +# light: light entity_id +# lux_min: min lux value to turn light on +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class BalconyLightControl(hass.Hass): + def initialize(self): + self.door_sensor = self.args.get("door_sensor", "binary_sensor.door_balcony_contact") + self.light = self.args.get("light", "light.light_balcony_spotlight") + self.lux_sensor = self.args.get("lux_sensor", "sensor.brightness_balcony_illuminance") + self.lux_min = self.args.get("lux_min", 100) + + self.log("Initializing balcony light control application") + self.log(f"Door sensor: {self.door_sensor}") + self.log(f"Lux sensor: {self.lux_sensor}") + self.log(f"Lux min: {self.lux_min}") + self.log(f"Light: {self.light}") + + # Listen for presence events + self.listen_state(self.state_change, self.args['door_sensor']) + self.log("Presence event handler registered") + + def state_change(self, entity, attribute, old, new, kwargs): + self.log(f"door entity: {entity}, attribute: {attribute}, old: {old}, new: {new}") + lux = int(self.get_state(self.lux_sensor)) + if new == "on": + self.log("Door is open, lux: {}, lux_min: {}".format(lux, self.lux_min)) + if lux < self.lux_min: + self.turn_on(self.light) + else: + self.log("high lux value, skip turn light on") + elif new == "off": + self.log("Door is closed, lux: {}, lux_min: {}".format(lux, self.lux_min)) + self.turn_off(self.light) \ No newline at end of file diff --git a/appdaemon/settings/apps/light/light_balcony.yaml b/appdaemon/settings/apps/light/light_balcony.yaml new file mode 100644 index 0000000..704f70d --- /dev/null +++ b/appdaemon/settings/apps/light/light_balcony.yaml @@ -0,0 +1,7 @@ +light_balcony: + module: light_balcony + class: BalconyLightControl + light: light.light_balcony_spotlight + door_sensor: binary_sensor.door_balcony_contact + lux_sensor: sensor.brightness_balcony_illuminance + lux_min: 150 \ No newline at end of file diff --git a/appdaemon/settings/apps/light/light_mainroom.py b/appdaemon/settings/apps/light/light_mainroom.py new file mode 100644 index 0000000..eb75dc4 --- /dev/null +++ b/appdaemon/settings/apps/light/light_mainroom.py @@ -0,0 +1,36 @@ +import appdaemon.plugins.hass.hassapi as hass +import datetime + +# +# App to control main room light based on Aqara FP1 presence sensor +# +# Args: +# presence_sensor: presence sensor entity_id (default: sensor.presence_aqara_mainroom_presence_event) +# light: light entity_id (default: light.light_mainroom_pc_spotlight) +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class MainRoomLightControl(hass.Hass): + def initialize(self): + self.presence_sensor = self.args.get("presence_sensor", "sensor.presence_aqara_mainroom_presence_event") + self.light = self.args.get("light", "light.light_mainroom_pc_spotlight") + + self.log("Initializing light control application") + self.log(f"Presence sensor: {self.presence_sensor}") + self.log(f"Light: {self.light}") + + # Listen for presence events + self.listen_state(self.state_change, self.args['presence_sensor']) + self.log("Presence event handler registered") + + def state_change(self, entity, attribute, old, new, kwargs): + self.log(f"entity: {entity}, attribute: {attribute}, old: {old}, new: {new}") + if new == "away": + self.log("Status 'away' - turning off light") + self.turn_off(self.light) + else: + self.log("Presence detected - turning on light") + self.turn_on(self.light) \ No newline at end of file diff --git a/appdaemon/settings/apps/light/light_mainroom.yaml b/appdaemon/settings/apps/light/light_mainroom.yaml new file mode 100644 index 0000000..fd8962c --- /dev/null +++ b/appdaemon/settings/apps/light/light_mainroom.yaml @@ -0,0 +1,5 @@ +light_mainroom: + module: light_mainroom + class: MainRoomLightControl + presence_sensor: sensor.presence_aqara_mainroom_presence_event11 + light: light.light_mainroom_pc_spotlight diff --git a/appdaemon/settings/apps/light/lightbutton._yaml b/appdaemon/settings/apps/light/lightbutton._yaml new file mode 100644 index 0000000..c2d2396 --- /dev/null +++ b/appdaemon/settings/apps/light/lightbutton._yaml @@ -0,0 +1,29 @@ +################################# +# LIGHT BUTTONS # +################################# +# light_button_bath: +# module: lightbutton +# class: LightButton +# sensor: binary_sensor.wall_switch_bath +# entities: light.bath +# # control_input: input_boolean.bath_light_control +# global_dependencies: +# - globals + +light_button_main: + module: lightbutton + class: LightButton + sensor: sensor.bed_button + entities: light.yeelight_color1_34ce008fe328,light.yeelight_color1_286c071065c7,light.yeelight_mono1_34ce0087ff33,light.yeelight_mono1_f0b4290e5444,light.yeelight_mono1_f0b429a8f6df,light.yeelight_mono1_286c07f12bed,light.yeelight_mono1_f0b429a8d936,light.lamp1 + global_dependencies: + - globals + +light_button_hall: + module: lightbutton + class: LightButton + sensor: sensor.0x00158d000183a5fe_action + entities: switch.plug_light_hall + global_dependencies: + - globals + + diff --git a/appdaemon/settings/apps/light/lightbutton.py b/appdaemon/settings/apps/light/lightbutton.py new file mode 100644 index 0000000..e800353 --- /dev/null +++ b/appdaemon/settings/apps/light/lightbutton.py @@ -0,0 +1,133 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime + +class LightButton(hass.Hass): + isLocked = False + + def initialize(self): + if not globals.check_args(self,['entities', 'sensor']): + return + + self.listen_event_handle_list = [] + self.listen_event_handle_list.append(self.listen_event(self.event_detected, "xiaomi_aqara.click")) + self.listen_event_handle_list.append(self.listen_state(self.state_change, self.args['sensor'])) #, attribute='action' + + def state_change(self, entity, attribute, old, new, kwargs): + if new == "single": + self.log('button_click') + self.make_action_by_mode("off") + if new == "double": + self.log('button_dblclick') + self.make_action_by_mode("on") + + def event_detected(self, event_name, data, kwargs): + if data["entity_id"] != self.args["sensor"] or self.isLocked: + return + self.isLocked = True + if data["click_type"] == "single": + self.log('button_click') + self.make_action_by_mode("off") + if data["click_type"] == "double": + self.log('button_dblclick') + self.make_action_by_mode("on") + + self.run_in(self.clear_lock, 1) + + def clear_lock(self, kwargs): + self.isLocked = False + + def make_action_by_mode(self, state): + states = self.fill_states() + control_entity = self.args.get('control_input', None) + if (control_entity != None): + entity_id = next(iter(states)) + state = self.get_state(entity_id) + self.set_state(entity_id, self.invert_state(state)) + self.set_state(control_entity, state) + return + + if len(self.args["entities"]) > 1: + self.toggle_next_with_state(state, states) + + def toggle_next_with_state(self, state, states): + for entity_id in states: + entity_state = states[entity_id] + if (entity_state == state): + self.set_state(entity_id, self.invert_state(state)) + self.log('toggling {}'.format(entity_id)) + return + + for entity_id in states: + self.log('toggling {}'.format(entity_id)) + self.toggle(entity_id) + + def set_state(self, entity_id, state): + if (state == "off"): + self.log('turn_off {}'.format(entity_id)) + self.set_off(entity_id) + if (state == "on"): + self.log('turn_on {}'.format(entity_id)) + self.set_on(entity_id) + + #light + def set_on(self, entity_id): + brightness = 1 #night mode + if self.time_is_between(self.datetime(), '07:00:00', '23:00:00'): + brightness=255 #day mode + + if entity_id.startswith("light") and 'color' in entity_id: + self.call_service("homeassistant/turn_on", entity_id = entity_id, transition = 1, brightness = brightness, color_temp=204) + elif entity_id.startswith("light"): + self.call_service("homeassistant/turn_on", entity_id = entity_id, transition = 1, brightness = brightness) + else: + self.turn_on(entity_id) + + def set_off(self, entity_id): + if entity_id.startswith("light"): + self.call_service("homeassistant/turn_off", entity_id = entity_id, transition = 1) + else: + self.turn_off(entity_id) + + + def invert_state(self, state): + if (state == "off"): + return "on" + return "off" + + def fill_states(self): + states = {} + for entity_id in self.split_device_list(self.args["entities"]): + state = self.get_state(entity_id) + if (state == None): + self.log("Warning! Device {} not found (state: {}).".format(entity_id, state)) + continue + states[entity_id] = state + return states + + def terminate(self): + if self.listen_event_handle_list != None: + for listen_event_handle in self.listen_event_handle_list: + self.cancel_listen_event(listen_event_handle) + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol._yaml b/appdaemon/settings/apps/light/lightcontrol._yaml new file mode 100644 index 0000000..4601a11 --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol._yaml @@ -0,0 +1,25 @@ +light_control_hall: + module: lightcontrol + class: LightControl + sensor: binary_sensor.motion_sensor_hall + control_entity: switch.plug_light_hall + control_night_entity: light.gateway + timeout: 240 + constraint: input_boolean.hall_light_control + ha_panel: alarm_control_panel.ha_alarm + vacuum: vacuum.xiaomi_vacuum_cleaner + global_dependencies: + - globals + +light_control_kitchen: + module: lightcontrol + class: LightControl + sensor: group.kitchen_motion_sensors + control_entity: switch.light_kitchen + timeout: 600 + constraint: input_boolean.kitchen_light_control + ha_panel: alarm_control_panel.ha_alarm + vacuum: vacuum.xiaomi_vacuum_cleaner + global_dependencies: + - globals + \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol.py b/appdaemon/settings/apps/light/lightcontrol.py new file mode 100644 index 0000000..2ab490d --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol.py @@ -0,0 +1,123 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime + +# +# This app will use motion sensors to turn on and off control_entity for 'timeout' time. +# It work with xiaomi motion sensors. +# main algorithm: when sensor turns on - turn on the light; when sensor is off - set timer for 'timeout'; +# if sensor goes on - turn off the timer; when timer was hit - turn off the light. +# +# Args: +# +# sensor = motion sensor to use (will work with other sensor types too) +# timeout = timeout after sensor will turned off (keep in mind that xiaomi motion sensor has own timeout!) +# control_entity = entity, that will be controlled (example: group of light bulbs) +# constraint = you can define constraint (input_boolean), that will turn on and off this app. +# after_sundown (optionally) - whether to only trigger after sundown. example: True +# Release Notes +# +# Version 1.0: +# Initial Version + +class LightControl(hass.Hass): + timer = None + def initialize(self): + if not globals.check_args(self, ["sensor", "timeout", "control_entity"]): + return + self.listen_event_handle_list = [] + self.listen_event_handle_list.append(self.listen_state(self.sensor_trigger, self.args['sensor'])) + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + if 'after_sundown' in self.args and self.args['after_sundown'] and not self.sun_down(): + # self.log('Sun is up, and we will turn it only after sundown.') + return + + vacuum_state = "docked" + ha_panel_state = "" + if "vacuum" in self.args: + vacuum_state = self.get_state(self.args["vacuum"]) + if "ha_panel" in self.args: + ha_panel_state = self.get_state(self.args["ha_panel"]) + #Если работает пылесос и сработал датчик движения + if ha_panel_state == "armed_away" and vacuum_state == 'cleaning': + self.log('Motion sensor is triggered, but vacuum is cleaning.') + return + + #sensor is off + if new == 'off' and old == 'on': + self.log('Sensor is off - running timer for {}s.'.format(self.args['timeout'])) + self.run_timer() + #sensor is on + if new == 'on' and old == 'off': + #turnin on control entity and wait while sensor will be off, than run timer. + self.control_entity_on() + self.stop_timer() + + + def terminate(self): + if self.listen_event_handle_list != None: + for listen_event_handle in self.listen_event_handle_list: + self.cancel_listen_event(listen_event_handle) + +############ TIMER ######################## + def run_timer(self): + if self.timer != None: + self.stop_timer() + self.timer = self.run_in(self.control_entity_off, self.args['timeout']) + + def control_entity_on(self): + #if 'constraint' is off - we dont need to do anything + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + entity = self.args['control_entity'] + if not self.time_is_between(self.datetime(), '07:00:00', '23:00:00') and 'control_night_entity' in self.args: + entity=self.args['control_night_entity'] #day mode + + if self.get_state(entity) == 'off': + self.turn_on(entity) + self.log("Light on ({}).".format(entity)) + + def control_entity_off(self, kwargs): + #if 'constraint' is off - we dont need to do anything + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + entity = self.args['control_entity'] + if not self.time_is_between(self.datetime(), '07:00:00', '23:00:00') and 'control_night_entity' in self.args: + entity=self.args['control_night_entity'] #day mode + + if self.get_state(entity) == 'on': + self.turn_off(entity) + self.log("Light off.") + self.stop_timer() + + def stop_timer(self): + if (self.timer == None): + return + self.log('stopping timer.') + self.cancel_timer(self.timer) + self.timer = None + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol_bath.py b/appdaemon/settings/apps/light/lightcontrol_bath.py new file mode 100644 index 0000000..d3f15ed --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol_bath.py @@ -0,0 +1,136 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime +import time + +# +# This app will use motion sensors to turn on and off control_entity for 'timeout' time. +# It work with xiaomi motion sensors. +# main algorithm: when sensor turns on - turn on the light; when sensor is off - set timer for 'timeout'; +# if sensor goes on - turn off the timer; when timer was hit - turn off the light. +# +# Args: +# +# sensor = motion sensor to use (will work with other sensor types too) +# timeout = timeout after sensor will turned off (keep in mind that xiaomi motion sensor has own timeout!) +# control_entity = entity, that will be controlled (example: group of light bulbs) +# constraint = you can define constraint (input_boolean), that will turn on and off this app. +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class LightControlBath(hass.Hass): + timer = None + door_state_changed = None + def initialize(self): + if "sensor" not in self.args or 'door_sensor' not in self.args or "timeout" not in self.args or "control_entity" not in self.args: + self.error("Please provide sensor, door_sensor, control_entity and timeout in config!") + return + self.listen_state(self.sensor_trigger, self.args['sensor']) + self.listen_state(self.door_sensor_trigger, self.args['door_sensor']) + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + #sensor is off + if new == 'off' and old == 'on': + self.log('door_state_changed:{}'.format(self.door_state_changed)) + if self.door_state_changed == False: + return + self.log('Sensor is off - running timer for {}s.'.format(self.args['timeout'])) + self.run_timer() + #sensor is on + + if new == 'on' and old == 'off': + #turnin on control entity and wait while sensor will be off, than run timer. + self.control_entity_on() + self.stop_timer() + door_state = self.get_state(self.args['door_sensor']) + if door_state == "off": + self.door_state_changed = False + else : + self.door_state_changed = None + + + def door_sensor_trigger(self, entity, attribute, old, new, kwargs): + #door is open + sensor_state = self.get_state(self.args['sensor']) + if new == 'on' and old == 'off' and sensor_state == 'off': + self.log('door is opened now, runnig the timer') + if self.timer == None: + self.run_timer() + if self.door_state_changed == False: + self.door_state_changed = True + self.log('door_state_changed:{}'.format(self.door_state_changed)) + +############ TIMER ######################## + def control_entity_on(self): + #if 'constraint' is off - we dont need to do anything + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + entity = self.args['control_entity'] + if not self.time_is_between(self.datetime(), '07:00:00', '23:00:00') and 'control_night_entity' in self.args: + entity=self.args['control_night_entity'] #day mode + + if self.get_state(entity) == 'off': + self.turn_on(entity) + self.log("Light on.") + if 'control_mini_light_entity' in self.args: + self.turn_on(self.args['control_mini_light_entity']) + + def control_entity_off(self, kwargs): + #if 'constraint' is off - we dont need to do anything + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + if self.door_state_changed == False: + self.log('Motion is detected inside and door is still closed - dont turn off the light') + return + + is_night = False + entity = self.args['control_entity'] + if not self.time_is_between(self.datetime(), '07:00:00', '23:00:00') and 'control_night_entity' in self.args: + entity=self.args['control_night_entity'] #day mode + is_night = True + + if self.get_state(entity) == 'on': + self.turn_off(entity) + self.log("Light off.") + if 'control_mini_light_entity' in self.args: + self.turn_off(self.args['control_mini_light_entity']) + if not is_night and 'control_night_entity' in self.args: + self.turn_off(self.args['control_night_entity']) + self.stop_timer() + + def run_timer(self): + if self.timer != None: + self.stop_timer() + self.timer = self.run_in(self.control_entity_off, self.args['timeout']) + + def stop_timer(self): + if (self.timer == None): + return + self.log('stopping timer.') + self.cancel_timer(self.timer) + self.timer = None + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol_bath.yaml b/appdaemon/settings/apps/light/lightcontrol_bath.yaml new file mode 100644 index 0000000..062fd46 --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol_bath.yaml @@ -0,0 +1,39 @@ +################################# +# LIGHT CONTROL # +################################# +light_control_bath: + module: lightcontrol_bath + class: LightControlBath + sensor: binary_sensor.motion_bath + door_sensor: binary_sensor.door_bath_contact + control_entity: switch.light_bath + control_night_entity: switch.light_bath_mirror + control_mini_light_entity: light.light_bath_shelf + timeout: 240 + constraint: input_boolean.bath_light_control + global_dependencies: + - globals + +light_control_shower: + module: lightcontrol_bath + class: LightControlBath + sensor: binary_sensor.motion_shower_center_occupancy + door_sensor: binary_sensor.door_shower_contact + control_entity: switch.light_shower_main_spotlights + control_night_entity: switch.shower_mirror + control_mini_light_entity: light.light_shower_shelf_light + timeout: 240 + constraint: input_boolean.shower_light_control + global_dependencies: + - globals + +light_control_shower_shower: + module: lightcontrol_bath + class: LightControlBath + sensor: binary_sensor.motion_shower_shower_occupancy + door_sensor: binary_sensor.door_shower_contact + control_entity: switch.light_shower_shower_spotlights + timeout: 360 + constraint: input_boolean.shower_light_control + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol_hall.py b/appdaemon/settings/apps/light/lightcontrol_hall.py new file mode 100644 index 0000000..d38ac41 --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol_hall.py @@ -0,0 +1,131 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime +import time + +# +# This app will use motion sensors to turn on and off control_entity for 'timeout' time. +# It work with xiaomi motion sensors. +# main algorithm: when sensor turns on - turn on the light; when sensor is off - set timer for 'timeout'; +# if sensor goes on - turn off the timer; when timer was hit - turn off the light. +# +# Args: +# +# sensor = motion sensor to use (will work with other sensor types too) +# timeout = timeout after sensor will turned off (keep in mind that xiaomi motion sensor has own timeout!) +# control_entity = entity, that will be controlled (example: group of light bulbs) +# constraint = you can define constraint (input_boolean), that will turn on and off this app. +# after_sundown (optionally) - whether to only trigger after sundown. example: True +# Release Notes +# +# Version 1.0: +# Initial Version + +class LightControlHall(hass.Hass): + timer = None + turn_on_by_door = None + def initialize(self): + if not globals.check_args(self, ["motion_sensors", "door_sensors", "timeout", "control_entity"]): + return + self.listen_event_handle_list = [] + for sensor in self.args['door_sensors']: + self.listen_event_handle_list.append(self.listen_state(self.sensor_trigger, sensor)) + + for sensor in self.args['motion_sensors']: + self.listen_event_handle_list.append(self.listen_state(self.motion_trigger, sensor)) + + for event in self.args['events']: + self.listen_event(self.event_trigger, event) + + + def motion_trigger(self, entity, attribute, old, new, kwargs): + #sensor is off + if new == 'off' and old == 'on' and self.turn_on_by_door != None: + self.log('Sensor is off - running timer for {}s.'.format(self.args['timeout'])) + self.run_timer() + + #sensor is on + if new == 'on' and old == 'off': + self.stop_timer() + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + #sensor is on + if new == 'on' and old == 'off': + #turnin on control entity and wait while sensor will be off, than run timer. + self.control_entity_on() + self.turn_on_by_door = True + self.stop_timer() + + def event_trigger(self, event_name, data, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + #turnin on control entity and wait while sensor will be off, than run timer. + self.control_entity_on() + self.turn_on_by_door = True + self.stop_timer() + self.run_timer() + + def terminate(self): + if self.listen_event_handle_list != None: + for listen_event_handle in self.listen_event_handle_list: + self.cancel_listen_event(listen_event_handle) + +############ TIMER ######################## + def run_timer(self): + if self.timer != None: + self.stop_timer() + self.timer = self.run_in(self.control_entity_off, self.args['timeout']) + + def control_entity_on(self): + #if 'constraint' is off - we dont need to do anything + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + entity = self.args['control_entity'] + state = self.get_state(entity) + + self.turn_on(entity) + self.log("Light on ({}).".format(entity)) + + def control_entity_off(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.turn_on_by_door = None + + entity = self.args['control_entity'] + state = self.get_state(entity) + self.turn_off(entity) + self.log("Light off.") + self.stop_timer() + + def stop_timer(self): + if (self.timer == None): + return + self.log('stopping timer.') + self.cancel_timer(self.timer) + self.timer = None + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol_hall.yaml b/appdaemon/settings/apps/light/lightcontrol_hall.yaml new file mode 100644 index 0000000..b70ba15 --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol_hall.yaml @@ -0,0 +1,18 @@ +light_control_hall: + module: lightcontrol_hall + class: LightControlHall + motion_sensors: + - binary_sensor.motion_hall_1_occupancy + - binary_sensor.motion_hall_2_occupancy + door_sensors: + - binary_sensor.door_locker_hall_right_contact + - binary_sensor.door_locker_hall_left_contact + - binary_sensor.door_locker2_hall_left_contact + - binary_sensor.door_locker2_hall_right_contact + events: + - door_opened + control_entity: light.light_hall_long + timeout: 120 + constraint: input_boolean.locker_light_control + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol_kitchenset.py b/appdaemon/settings/apps/light/lightcontrol_kitchenset.py new file mode 100644 index 0000000..aaaf95b --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol_kitchenset.py @@ -0,0 +1,149 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime +import time + +# +# This app will use motion sensors to turn on and off control_entity for 'timeout' time. +# It work with xiaomi motion sensors. +# main algorithm: when sensor turns on - turn on the light; when sensor is off - set timer for 'timeout'; +# if sensor goes on - turn off the timer; when timer was hit - turn off the light. +# +# Args: +# +# sensor = motion sensor to use (will work with other sensor types too) +# timeout = timeout after sensor will turned off (keep in mind that xiaomi motion sensor has own timeout!) +# control_entity = entity, that will be controlled (example: group of light bulbs) +# constraint = you can define constraint (input_boolean), that will turn on and off this app. +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class LightControlKitchenset(hass.Hass): + timer = None + def initialize(self): + if "sensors" not in self.args or "timeout" not in self.args or "control_entity" not in self.args: + self.error("Please provide sensor, control_entity and timeout in config!") + return + for sensor in self.args['sensors']: + self.listen_state(self.sensor_trigger, sensor) + if 'night_sensors' in self.args: + for sensor in self.args['night_sensors']: + self.listen_state(self.sensor_night_trigger, sensor) + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + #sensor is on + if new == 'on' and old == 'off': + #turnin on control entity and wait while sensor will be off, than run timer. + self.log('motion detected: {}'.format(entity)) + self.control_entity_on() + self.stop_timer() + + #sensor is off + if new == 'off' and old == 'on': + self.log('motion stop detected:{}'.format(entity)) + state = self.get_motion_state() + if state == 'off': + self.run_timer() + + def sensor_night_trigger(self, entity, attribute, old, new, kwargs): + door_state = 'on' + if 'door_sensors' in self.args: + for door in self.args['door_sensors']: + door_state = self.get_state(door) + self.log('door_state: {}'.format(door_state)) + if door_state == 'off': + door_state = 'off' + + if new == 'on' and old == 'off' and door_state == 'on': + if self.is_night(): + self.log('night motion detected: {}'.format(entity)) + self.control_entity_on() + self.stop_timer() + + if new == 'off' and old == 'on': + self.log('night motion stop detected:{}'.format(entity)) + state = self.get_motion_state() + if state == 'off': + self.run_timer() + +############ SENSOR GROUP ######################## + def get_motion_state(self): + sensors = self.args['sensors'] + night_sensors = [] + if 'night_sensors' in self.args and self.is_night(): + night_sensors = self.args['night_sensors'] + all_sensors = sensors + night_sensors + + self.log('all sensors: {}'.format(all_sensors)) + for sensor in all_sensors: + state = self.get_state(sensor) + if state == 'on': + return 'on' + return 'off' + + def is_night(self): + return not self.time_is_between(self.datetime(), '07:00:00', '23:00:00') + +############ TIMER ######################## + def control_entity_on(self): + #if 'constraint' is off - we dont need to do anything + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + entity = self.args['control_entity'] + if self.get_state(entity) == 'off': + self.turn_on(entity) + self.log("Light on.") + + def control_entity_off(self, kwargs): + #if 'constraint' is off - we dont need to do anything + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + entity = self.args['control_entity'] + + if self.get_state(entity) == 'on': + self.turn_off(entity) + self.log("Light off.") + self.stop_timer() + + def run_timer(self): + if self.timer != None: + self.stop_timer() + + timeout = self.args['timeout'] + if 'night_timeout' in self.args and self.is_night(): + timeout = self.args['night_timeout'] + self.log('Sensor is off - running timer for {}s'.format(timeout)) + self.timer = self.run_in(self.control_entity_off, timeout) + + def stop_timer(self): + if (self.timer == None): + return + self.log('stopping timer.') + self.cancel_timer(self.timer) + self.timer = None + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/light/lightcontrol_kitchenset.yaml b/appdaemon/settings/apps/light/lightcontrol_kitchenset.yaml new file mode 100644 index 0000000..32582ab --- /dev/null +++ b/appdaemon/settings/apps/light/lightcontrol_kitchenset.yaml @@ -0,0 +1,20 @@ +################################# +# LIGHT CONTROL # +################################# +light_control_kitchenset: + module: lightcontrol_kitchenset + class: LightControlKitchenset + constraint: input_boolean.kitchenset_light_control + sensors: + - binary_sensor.motion_kitchenset_left_occupancy + - binary_sensor.motion_kitchenset_right_occupancy + night_sensors: + - binary_sensor.motion_hall_1_occupancy + - binary_sensor.motion_hall_2_occupancy + door_sensors: + - binary_sensor.door_kitchen_contact + control_entity: switch.light_kitchen_set + timeout: 900 #1200 - 20 mins + night_timeout: 300 #300 - 5 min + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/locks/aqara_lock.py b/appdaemon/settings/apps/locks/aqara_lock.py new file mode 100644 index 0000000..93fbb03 --- /dev/null +++ b/appdaemon/settings/apps/locks/aqara_lock.py @@ -0,0 +1,55 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Aqara lock notifications +# Send notification to telegram of lock state +# +# Args: +# lock_state_entity - entity of aqara lock state +# notify - notify entity to send message +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class AqaraLock(hass.Hass): + def initialize(self): + if 'lock_state_entity' not in self.args or 'notify' not in self.args: + self.error("Please provide lock_state_entity and notify in config!") + return + + lock_state_entity = self.args['lock_state_entity'] + + self.log(' [+] listening for lock_state_entity sensor {}'.format(lock_state_entity)) + self.listen_state(self.sensor_trigger, lock_state_entity) + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + #(old != "" and old != "unknown") or + if new == "unknown" or new == "" or new == "unavailable": + self.log('skiping event. {} changed from {} to {}'.format(entity, old, new)) + return + self.log('{} changed from {} to {}'.format(entity, old, new)) + + action = new + self.process_event(action) + + def process_event(self, eventname): + if eventname == "ring_bell": + self.fire_event('doorbell_call') + elif eventname == 'lock_opened_outside': + self.log("Дверь открыта снаружи, событие: {}.".format(eventname)) + elif 'finger_open_' in eventname: + self.fire_event('door_opened') + self.log("Дверь открыта отпечатком пальца, событие: {}.".format(eventname)) + self.notify_tg("Дверь открыта отпечатком пальца, событие: {}.".format(eventname)) + else: + self.log("Неизвестное событие замка: {}.".format(eventname)) + self.notify_tg("Неизвестное событие замка: {}".format(eventname)) + + def notify_tg(self, msg): + extra_data = {'parse_mode': 'html'} + self.notify(msg, name = self.args['notify'], data=extra_data) diff --git a/appdaemon/settings/apps/locks/aqara_lock.yaml b/appdaemon/settings/apps/locks/aqara_lock.yaml new file mode 100644 index 0000000..32d95ca --- /dev/null +++ b/appdaemon/settings/apps/locks/aqara_lock.yaml @@ -0,0 +1,8 @@ +aqara_lock: + module: aqara_lock + class: AqaraLock + lock_state_entity: sensor.door_lock_mqtt_action + constraint: input_boolean.aqara_lock_report + notify: telegram_monster + global_dependencies: + - globals diff --git a/appdaemon/settings/apps/notifiers/balance.py b/appdaemon/settings/apps/notifiers/balance.py new file mode 100644 index 0000000..77fcb38 --- /dev/null +++ b/appdaemon/settings/apps/notifiers/balance.py @@ -0,0 +1,65 @@ +import datetime +from automation import Automation, Base # type: ignore + +# +# App to send email report for low balance +# +# Args: +# +# threshold = value below which battery levels are reported and email is sent +# always_send = set to 1 to override threshold and force send +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Balance(Base): + def initialize(self): + super().initialize() + self.check_balance({"force": 1}) + self.run_daily(self.check_balance, datetime.time(10, 0, 0)) + + def check_balance(self, kwargs): + # if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + # return + + values = {} + low = [] + for key in self.entity_ids: + device = self.entity_ids[key] + balance = self.get_state(device) + if balance != None and self.is_number(balance): + if float(balance) < self.args["threshold"]: + low.append(device) + values[device] = balance + + message="" + name = "Алтуфьево" + if 'name' in self.args: + name = self.args['name'] + if low: + message += "Пожалуйста пополните баланс ({}): (< {}) \n".format(name, self.args["threshold"]) + for device in low: + message += " - {}: {}\n".format(self.friendly_name(device), values[device]) + message += "\n\n" + + if low or ("always_send" in self.args and self.args["always_send"] == 1) or ("force" in kwargs and kwargs["force"] == 1): + if message != "": + self.log(message) + self.notify_tg(message) #name = "telegram_monster" + + def is_number(self, s): + try: + float(s) + return True + except ValueError: + return False + + def notify_tg(self, msg): + if not 'notify' in self.args: + return + extra_data = {'parse_mode': 'html'} + self.notify(msg, name = self.args['notify'], data=extra_data) diff --git a/appdaemon/settings/apps/notifiers/balance.yaml b/appdaemon/settings/apps/notifiers/balance.yaml new file mode 100644 index 0000000..6992357 --- /dev/null +++ b/appdaemon/settings/apps/notifiers/balance.yaml @@ -0,0 +1,61 @@ +################################# +# SENSOR BATTERY LOW REMINDER # +################################# +balance_low_report: + class: Balance + module: balance + constraint: input_boolean.balance_report + name: Алтуфьево + entity_ids: + mosenergosbyt_balance: sensor.power_mosenergosbyt_balance + epd_balance: sensor.epd_balance + always_send: 0 + threshold: -100 + notify: telegram + global_dependencies: + - globals + +balance_low_report_belorechenskaya: + class: Balance + module: balance + constraint: input_boolean.balance_report + name: Белореченская + entity_ids: + mosenergosbyt_balance: sensor.power_mosenergosbyt_belorechenskaya_balance + epd_balance: sensor.epd_balance_belorechenskaya + always_send: 0 + threshold: -100 + notify: telegram + global_dependencies: + - globals + +balance_low_report_fonvizina: + class: Balance + module: balance + constraint: input_boolean.balance_report + name: Фонвизина + entity_ids: + fonvizina_epd_balance: sensor.fonvizina_epd_balance + fonvizina_trash_balance: sensor.fonvizina_trash_balance + fonvizina_kladovka_balance: sensor.fonvizina_kladovka_balance + fonvizina_epd_mosru_balance: sensor.epd_balance_mosru_fonvizina + always_send: 0 + threshold: -100 + inverted: true + notify: telegram + global_dependencies: + - globals + +balance_low_report_milashenkova: + class: Balance + module: balance + constraint: input_boolean.balance_report + name: Милашенкова + entity_ids: + mosenergosbyt_balance: sensor.power_mosenergosbyt_milashenkova_balance + epd_balance: sensor.epd_balance_milashenkova + always_send: 0 + threshold: -100 + notify: telegram + global_dependencies: + - globals diff --git a/appdaemon/settings/apps/notifiers/battery.py b/appdaemon/settings/apps/notifiers/battery.py new file mode 100644 index 0000000..d0a49fa --- /dev/null +++ b/appdaemon/settings/apps/notifiers/battery.py @@ -0,0 +1,65 @@ +import appdaemon.plugins.hass.hassapi as hass +import datetime + +# +# App to send email report for devices running low on battery +# +# Args: +# +# threshold = value below which battery levels are reported and email is sent +# always_send = set to 1 to override threshold and force send +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Battery(hass.Hass): + + def initialize(self): + #self.check_batteries({"force": 1}) + time = datetime.time(10, 0, 0) + self.run_daily(self.check_batteries, time) + self.check_batteries(None) + + def check_batteries(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + devices = self.get_state() + values = {} + low = [] + for deviceName in devices: + device = devices[deviceName] + if device == None: + continue + battery = None + if "attributes" in device: + if "battery" in device["attributes"]: + battery = device["attributes"]["battery"] + elif "battery_level" in device["attributes"]: + battery = device["attributes"]["battery_level"] + elif '_battery' in device['entity_id']: + battery = self.get_state(device['entity_id']) + if not battery.isdigit(): + continue + battery = int(battery) + print('{} = {}'.format(device['entity_id'], battery)) + if battery != None: + print('{} = {}'.format(device['entity_id'], battery)) + if battery < self.args["threshold"] and battery != 0: + low.append(deviceName) + values[deviceName] = battery + + message="" + if low: + message += "У следующих датчиков садится батарея: (< {}) \n".format(self.args["threshold"]) + for device in low: + message += "{}: {}%\n".format(self.friendly_name(device), values[device]) + message += "\n\n" + + if low: # or ("always_send" in self.args and self.args["always_send"] == 1) or ("force" in kwargs and kwargs["force"] == 1): + if message != "": + self.notify(message, name = "telegram") diff --git a/appdaemon/settings/apps/notifiers/battery.yaml b/appdaemon/settings/apps/notifiers/battery.yaml new file mode 100644 index 0000000..581087f --- /dev/null +++ b/appdaemon/settings/apps/notifiers/battery.yaml @@ -0,0 +1,12 @@ +################################# +# SENSOR BATTERY LOW REMINDER # +################################# +sensor_battery_low_report: + class: Battery + module: battery + constraint: input_boolean.battery_report + always_send: 0 + threshold: 10 + notify: telegram + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/bms_monitor.py b/appdaemon/settings/apps/notifiers/bms_monitor.py new file mode 100644 index 0000000..fff82e1 --- /dev/null +++ b/appdaemon/settings/apps/notifiers/bms_monitor.py @@ -0,0 +1,165 @@ +import appdaemon.plugins.hass.hassapi as hass +import datetime + +class BMSMonitor(hass.Hass): + def initialize(self): + # Получаем настройки из apps.yaml + self.chat_id = self.args.get("chat_id") + self.power_entity = self.args.get("power_sensor") + self.soc_entity = self.args.get("soc_sensor") + self.current_entity = self.args.get("current_sensor") + self.voltage_entity = self.args.get("voltage_sensor") + self.threshold = float(self.args.get("power_threshold", 5)) + self.interval = int(self.args.get("discharge_interval", 300)) + self.notification_target = self.args.get("notification_target", 'telegram') + + # Внутренние переменные состояния + self.current_state = "IDLE" # IDLE, CHARGING, DISCHARGING + self.timer_handle = None + self.was_charging = False + + # Переменная для хранения времени начала отключения + self.outage_start_time = None + + # Слушаем изменения мощности + self.listen_state(self.on_power_change, self.power_entity) + # Слушаем SOC для детектирования 100% + self.listen_state(self.on_soc_change, self.soc_entity) + + self.log("BMS Monitor запущен. Ожидание изменений...") + + def on_power_change(self, entity, attribute, old, new, kwargs): + try: + power = float(new) + except (ValueError, TypeError): + return + + # Определяем новый режим + if power > self.threshold: + new_state = "CHARGING" + elif power < -self.threshold: + new_state = "DISCHARGING" + else: + new_state = "IDLE" + + # Логика переходов состояний + if self.current_state != new_state: + self.log(f"Смена состояния BMS: {self.current_state} -> {new_state}") + + # 1. Переход в разрядку (Отключили питание) + if new_state == "DISCHARGING" and self.current_state != "DISCHARGING": + # Фиксируем время начала отключения + self.outage_start_time = datetime.datetime.now() + + self.send_telegram("⚠️ ВНИМАНИЕ: Отключено питание!\nБатарея перешла в режим разрядки.", "html") + self.start_discharge_timer() + + # 2. Выход из разрядки (Питание восстановлено) + # Срабатывает при переходе DISCHARGING -> IDLE или DISCHARGING -> CHARGING + elif self.current_state == "DISCHARGING" and new_state in ("IDLE", "CHARGING"): + duration_msg = "" + if self.outage_start_time: + duration = datetime.datetime.now() - self.outage_start_time + duration_msg = f"\n⏱ Время без электричества: {self._format_timedelta(duration)}" + self.outage_start_time = None # Сбрасываем таймер + + self.send_telegram(f"✅ Питание восстановлено!\nБатарея вышла из режима разрядки.{duration_msg}", "html") + self.stop_discharge_timer() + + # 3. Переход в простой после зарядки (Зарядка окончена) + elif new_state == "IDLE" and self.current_state == "CHARGING": + self.send_telegram("🔋 Зарядка завершена!\nБатарея полностью заряжена или нагрузка отключена.", "html") + + # 4. Переход IDLE -> CHARGING (если не было разрядки перед этим) + elif new_state == "CHARGING" and self.current_state == "IDLE": + # Можно добавить отдельное уведомление, если нужно + pass + + self.current_state = new_state + self.was_charging = (new_state == "CHARGING") + + def on_soc_change(self, entity, attribute, old, new, kwargs): + # Дополнительная проверка на 100% SOC, если мощность еще не упала в ноль + try: + soc = float(new) + if soc >= 100 and self.current_state == "CHARGING" and not self.was_charging: + # Небольшая защита от повторных уведомлений + self.was_charging = True + except (ValueError, TypeError): + pass + + def start_discharge_timer(self): + if self.timer_handle is None: + # Запускаем таймер: сразу первое сообщение, потом каждые N секунд + self.send_status_report() + self.timer_handle = self.run_every(self.periodic_status, datetime.datetime.now(), self.interval) + self.log("Таймер статуса разрядки запущен") + + def stop_discharge_timer(self): + if self.timer_handle is not None: + self.cancel_timer(self.timer_handle) + self.timer_handle = None + self.log("Таймер статуса разрядки остановлен") + + def periodic_status(self, kwargs): + # Проверяем, все ли еще в режиме разрядки перед отправкой + if self.current_state == "DISCHARGING": + self.send_status_report() + else: + self.stop_discharge_timer() + + def _format_timedelta(self, td): + """Преобразует timedelta в строку вида 'X ч Y мин'""" + total_seconds = int(td.total_seconds()) + hours, remainder = divmod(total_seconds, 3600) + minutes, _ = divmod(remainder, 60) + + parts = [] + if hours > 0: + parts.append(f"{hours} ч") + parts.append(f"{minutes} мин") + + return " ".join(parts) + + def send_status_report(self): + try: + # Получаем значения напрямую + power_raw = self.get_state(self.power_entity) + soc_raw = self.get_state(self.soc_entity) + current_raw = self.get_state(self.current_entity) + voltage_raw = self.get_state(self.voltage_entity) + + # Преобразуем и округляем средствами Python + power = round(float(power_raw), 1) if power_raw not in (None, 'unknown', 'unavailable') else 0 + soc = round(float(soc_raw), 1) if soc_raw not in (None, 'unknown', 'unavailable') else 0 + current = round(float(current_raw), 2) if current_raw not in (None, 'unknown', 'unavailable') else 0 + voltage = round(float(voltage_raw), 2) if voltage_raw not in (None, 'unknown', 'unavailable') else 0 + + # Определяем цвет/иконку для направления тока + direction = "🔻 Разряд" if power < 0 else "🔺 Заряд" + + # Добавляем время без электричества, если известно + outage_info = "" + if self.outage_start_time: + duration = datetime.datetime.now() - self.outage_start_time + outage_info = f"\n⏳ Без света: {self._format_timedelta(duration)}" + + msg = ( + f"📊 Статус батареи (JK BMS)\n\n" + f"🔋 SOC: {soc}%\n" + f"⚡ Мощность: {power} Вт ({direction})\n" + f"🔌 Ток: {current} А\n" + f"🔋 Напряжение: {voltage} В" + f"{outage_info}\n" + f"🕒 Время: {datetime.datetime.now().strftime('%H:%M:%S')}" + ) + self.send_telegram(msg, "html") + except Exception as e: + self.log(f"Ошибка при отправке статуса: {e}") + + def send_telegram(self, message, parse_mode="html"): + try: + extra_data = {'parse_mode': parse_mode} + self.notify(message, name = self.notification_target, data=extra_data) + except Exception as e: + self.log(f"Ошибка отправки Telegram: {e}") \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/bms_monitor.yaml b/appdaemon/settings/apps/notifiers/bms_monitor.yaml new file mode 100644 index 0000000..8fdbc87 --- /dev/null +++ b/appdaemon/settings/apps/notifiers/bms_monitor.yaml @@ -0,0 +1,14 @@ +bms_monitor: + module: bms_monitor + class: BMSMonitor + # Telegram настройки + notification_target: telegram_monster + # Сущности из вашей карточки + power_sensor: sensor.jk_bms_jk_bms_power + soc_sensor: sensor.jk_bms_jk_bms_state_of_charge + current_sensor: sensor.jk_bms_jk_bms_current + voltage_sensor: sensor.jk_bms_jk_bms_total_voltage + # Порог мощности (Вт) для определения режима (чтобы избежать шумов) + power_threshold: 5 + # Интервал оповещений при разрядке (секунды) + discharge_interval: 300 \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/dishwasher.py b/appdaemon/settings/apps/notifiers/dishwasher.py new file mode 100644 index 0000000..e44ec88 --- /dev/null +++ b/appdaemon/settings/apps/notifiers/dishwasher.py @@ -0,0 +1,75 @@ +import appdaemon.plugins.hass.hassapi as hass +from datetime import timedelta +import datetime + +# +# App to show dishwasher state +# +# Args: +# +# door_sensor = dishwasher door sensor +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Dishwasher(hass.Hass): + listen_event_handle_list = [] + run_state = "" + + def initialize(self): + if 'run_state' not in self.args or 'door_sensor' not in self.args or 'counter' not in self.args: + self.log("Please define all args") + return + + self.listen_event_handle_list.append(self.listen_state(self.door_state_change, self.args['door_sensor'])) #, attribute='action' + self.listen_event_handle_list.append(self.listen_state(self.run_state_change, self.args['run_state'])) #, attribute='action' + + + def door_state_change(self, entity, attribute, old, new, kwargs): + if (new == "on"): + self.call_service("counter/increment", entity_id = self.args['counter']) + if (self.run_state == "finished"): + self.run_state = "collecting" + self.set_light_state_by_counter() + + def run_state_change(self, entity, attribute, old, new, kwargs): + self.log("event: {}: {}->{}".format(attribute,old,new)) + if (new == "Run"): + self.log('resetting counter') + self.call_service("counter/reset", entity_id = self.args['counter']) + self.run_state = "washing" + if (new == "Finished"): + self.log('resetting counter') + self.call_service("counter/reset", entity_id = self.args['counter']) + self.run_state = "finished" + + self.log('Current state is: {}'.format(self.run_state)) + self.set_light_state_by_counter() + + def set_light_state_by_counter(self): + state = self.get_state(self.args['counter']) + open_count = int(state) + self.log('counter state={}, machine state = {}'.format(state, self.run_state)) + + if (self.run_state == "finished"): + # Есть посуда, которую нужно разобрать + # red color + self.log('Time to take dishes out.') + if 'lamp' in self.args: + self.call_service("light/turn_on", entity_id = self.args['lamp'], rgb_color=[255, 0, 0]) #red + + elif (self.run_state == "washing"): + self.log('washing in progress') + self.call_service("light/turn_off", entity_id = self.args['lamp']) + + elif (open_count > 10): + self.log('Time to run dishwasher.') + if 'lamp' in self.args: + self.call_service("light/turn_on", entity_id = self.args['lamp'], rgb_color=[245, 236, 0]) #yellow + + else: + self.call_service("light/turn_off", entity_id = self.args['lamp']) \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/dishwasher.yaml b/appdaemon/settings/apps/notifiers/dishwasher.yaml new file mode 100644 index 0000000..9460a07 --- /dev/null +++ b/appdaemon/settings/apps/notifiers/dishwasher.yaml @@ -0,0 +1,13 @@ +################################# +# TEETH BRUSHING REMINDER # +################################# +dishwasher: + class: Dishwasher + module: dishwasher + constraint: input_boolean.dishwasher_state_light + counter: counter.dishwasher_door_open_count + door_sensor: binary_sensor.hc_dishwasher_door + run_state: sensor.hc_dishwasher_state + lamp: light.espresense_kitchen_led_1 + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/security.py b/appdaemon/settings/apps/notifiers/security.py new file mode 100644 index 0000000..3bfc17a --- /dev/null +++ b/appdaemon/settings/apps/notifiers/security.py @@ -0,0 +1,28 @@ +import appdaemon.plugins.hass.hassapi as hass +import datetime + +# +# App to send reports about unsuccessfull auths +# +# Args: +# +# threshold = value below which battery levels are reported and email is sent +# always_send = set to 1 to override threshold and force send +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Security(hass.Hass): + def initialize(self): + self.log('---------------------') + self.listen_event_handle_list = [] + self.listen_event_handle_list.append(self.listen_state(self.state_change, 'persistent_notification.http_login', attribute='message')) + + def state_change(self, entity, attribute, old, new, kwargs): + notifier = self.args.get('notify', 'telegram') + self.notify(new, name = notifier) + self.log(new) \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/security.yaml b/appdaemon/settings/apps/notifiers/security.yaml new file mode 100644 index 0000000..e618198 --- /dev/null +++ b/appdaemon/settings/apps/notifiers/security.yaml @@ -0,0 +1,10 @@ +################################# +# INVALID AUTH REPORT # +################################# +invalid_auth_report: + class: Security + module: security + alice: media_player.yandex_station_m00r46000m53db + notify: telegram + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/teeth_brushing.py b/appdaemon/settings/apps/notifiers/teeth_brushing.py new file mode 100644 index 0000000..dc3b6ed --- /dev/null +++ b/appdaemon/settings/apps/notifiers/teeth_brushing.py @@ -0,0 +1,82 @@ +import appdaemon.plugins.hass.hassapi as hass +from datetime import timedelta +import datetime + +# +# App to send email report for devices running low on battery +# +# Args: +# +# threshold = value below which battery levels are reported and email is sent +# always_send = set to 1 to override threshold and force send +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Teeth(hass.Hass): + listen_event_handle_list = [] + + def initialize(self): + # Устанавливаем сброс в 10 утра + reset_time = datetime.time(10, 0, 0) + self.run_daily(self.reset_action, reset_time) + + # Запускаем проверку напоминаний + self.timer = self.run_every(self.remind_if_needed, self.datetime()+timedelta(seconds=1), self.args['remind_interval']) + + # Слушаем изменения состояния кнопки + self.listen_event_handle_list.append(self.listen_state(self.button_state_change, self.args['mute_button'])) + + def button_state_change(self, entity, attribute, old, new, kwargs): + self.log("event: {}={}".format(attribute,new)) + if attribute == 'state' and new == 'single': + self.log('Muting notifications') + self.set_state(self.args['mute_boolean'], state='on') + self.say("Принято") + + def say(self, command): + self.log('command = {}'.format(command)) + self.call_service('media_player/play_media', entity_id=self.args['alice'], media_content_type='text', media_content_id=command) + + def reset_action(self, kwargs): + self.log('Resetting mute state') + self.set_state(self.args['mute_boolean'], state='off') + + def remind_if_needed(self, kwargs): + # Проверяем состояние input_boolean + if self.get_state(self.args['mute_boolean']) == 'on': + return + + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + self.log('disabled by constraint') + return + + home_sensors = [] + if 'home_sensors' in self.args: + home_sensors = self.args['home_sensors'] + + at_home = False + is_any = False + for sensor in home_sensors: + is_any = True + state = self.get_state(sensor) + if state != 'not_home': + at_home = True + if not is_any: + at_home = True + + if not at_home: + self.log('User is away, skipping notification') + return + + notify = "telegram" + if "notify" in self.args: + notify = self.args["notify"] + now = datetime.datetime.now()+timedelta(hours=3) + message="Уже {}, а ты еще не почистил зубы. Самое время =)".format(now.strftime("%H:%M")) + self.notify(message, name = notify) + diff --git a/appdaemon/settings/apps/notifiers/teeth_brushing.yaml b/appdaemon/settings/apps/notifiers/teeth_brushing.yaml new file mode 100644 index 0000000..bb4123f --- /dev/null +++ b/appdaemon/settings/apps/notifiers/teeth_brushing.yaml @@ -0,0 +1,15 @@ +################################# +# TEETH BRUSHING REMINDER # +################################# +teeth_danil_brush_reminder: + class: Teeth + module: teeth_brushing + constraint: input_boolean.teeth_brushing_reminder + mute_boolean: input_boolean.teeth_muted + notify: telegram_monster + remind_interval: 1800 + mute_button: sensor.button_shower_sink_action + home_sensors: [person.danil] + alice: media_player.yandex_station_ff98f029ab48468d28c557be + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/water_counters.py b/appdaemon/settings/apps/notifiers/water_counters.py new file mode 100644 index 0000000..9e67c3b --- /dev/null +++ b/appdaemon/settings/apps/notifiers/water_counters.py @@ -0,0 +1,109 @@ +import appdaemon.plugins.hass.hassapi as hass +import datetime +import globals + +# +# App to send notifications when counters state needs attention +# +# Args: +# +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class WaterCountersAlarm(hass.Hass): + checkup_threasold = 31 + send_threasold = 31 + + def initialize(self): + if not globals.check_args(self, ['checkup_threasold', 'send_threasold']): + return + self.checkup_threasold = self.args['checkup_threasold'] + self.send_threasold = self.args['send_threasold'] + + self.check_send_dates({"force": 1}) + self.run_daily(self.check_checkup_dates, datetime.time(10, 0, 0)) + self.run_daily(self.check_send_dates, datetime.time(10, 1, 0)) + #self.check_checkup_dates([]) + + def check_send_dates(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + devices = self.get_state() + if devices == None: + return + values = {} + send_devices = [] + for deviceName in devices: + device = devices[deviceName] + if (device == None): + continue + send_date = None + if "attributes" in device: + if "date" in device["attributes"]: + send_date = device["attributes"]["date"] + if send_date != None: + self.log('found device {} with send date {}'.format(deviceName, send_date)) + if send_date == "": + send_devices.append(deviceName) + else: + send_date_date = None + if '-' in send_date: + send_date_date = datetime.datetime.strptime(send_date, '%Y-%m-%d') + else: + send_date_date = datetime.datetime.strptime(send_date, '%d.%m.%Y') + if send_date_date < (datetime.datetime.now() - datetime.timedelta(days=self.send_threasold)): + send_devices.append(deviceName) + values[deviceName] = send_date + + message="" + if send_devices: + message += "ВНИМАНИЕ! У вас есть счетчики, показания по которым давно не передавались:\n" + for device in send_devices: + message += "- {}: {}\n".format(self.friendly_name(device), values[device]) + message += "\n\n" + + if send_devices or ("always_send" in self.args and self.args["always_send"] == 1) or ("force" in kwargs and kwargs["force"] == 1): + if message != "": + self.notify(message, name = "telegram") + + def check_checkup_dates(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + entities = self.get_state() + if entities == None: + return + + values = {} + checkup_devices = [] + for entity_id in entities: + entity = entities[entity_id] + if entity == None: + # self.log('not found {} in entities list.'.format(entity_id)) + continue + checkup = None + if "attributes" in entity: + if "checkup" in entity["attributes"]: + checkup = entity["attributes"]["checkup"] + if checkup != None: + self.log('found device {} with checkup date {}'.format(entity_id, checkup)) + checkup_date = datetime.datetime.strptime(checkup, '%Y-%m-%d') + if (checkup_date - datetime.timedelta(days=self.checkup_threasold)) < datetime.datetime.now(): + checkup_devices.append(entity_id) + values[entity_id] = checkup + + message="" + if checkup_devices: + message += "ВНИМАНИЕ! У вас есть счетчик, нуждающийся в поверке:\n" + for device in checkup_devices: + message += "- {}: {}\n".format(self.friendly_name(device), values[device]) + message += "\n\n" + + if checkup_devices or ("always_send" in self.args and self.args["always_send"] == 1) or ("force" in kwargs and kwargs["force"] == 1): + if message != "": + self.notify(message, name = "telegram") \ No newline at end of file diff --git a/appdaemon/settings/apps/notifiers/water_counters.yaml b/appdaemon/settings/apps/notifiers/water_counters.yaml new file mode 100644 index 0000000..116929f --- /dev/null +++ b/appdaemon/settings/apps/notifiers/water_counters.yaml @@ -0,0 +1,12 @@ +################################# +# WATER COUNTERS ALARM # +################################# +water_counters: + class: WaterCountersAlarm + module: water_counters + constraint: input_boolean.water_counters_report + notify: telegram + checkup_threasold: 31 + send_threasold: 31 + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/notify.py b/appdaemon/settings/apps/notify.py new file mode 100644 index 0000000..631cc84 --- /dev/null +++ b/appdaemon/settings/apps/notify.py @@ -0,0 +1,63 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Notification system +# +# Args: +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class BaseNotifyTarget(): + def notify(self, hass, message, person='*'): + hass.log('notifying person {} with message: {}'.format(person, message)) + +class AliceNotifyTarget(BaseNotifyTarget): + alice = 'media_player.yandex_station' + def notify(self, hass, message, person='*'): + msg = message + if person == 'danil': + msg = "Данил, " + msg + elif person == 'sveta': + msg = "Света, " + msg + hass.log('notifying over alice person {} with message: {}'.format(target, message)) + self.say(hass, msg) + + def say(self, hass, message): + hass.log('message = {}'.format(message)) + hass.call_service('media_player/play_media', entity_id=self.alice, media_content_type='text', media_content_id=message) + +class TelegramNotifyTarget(BaseNotifyTarget): + target_default = 'telegram' + target_sveta = 'telegram_sveta' + target_danil = 'telegram_monster' + + def notify(self, hass, message, person='*'): + target = self.target_default + if person == 'danil': + target = self.target_danil + elif person == 'sveta': + target = self.target_sveta + + hass.log('notifying over telegram person {} with message: {}'.format(target, message)) + hass.notify(message, name=target) + +class Notification(hass.Hass): + home_targets = [AliceNotifyTarget()] + away_targets = [TelegramNotifyTarget()] + + def initialize(self): + self.log('Init') + + def notify_person(self, message, target='*', repeat = 1, delay = 60, onEvent = '', at=None): + notifyTarget = None + away_mode = True + if (away_mode): + notifyTarget = self.away_targets[0] + else: + notifyTarget = self.home_targets[0] + + self.log('message: {}'.format(message)) + notifyTarget.notify(self, message, person=target) \ No newline at end of file diff --git a/appdaemon/settings/apps/notify.yaml b/appdaemon/settings/apps/notify.yaml new file mode 100644 index 0000000..a407e7d --- /dev/null +++ b/appdaemon/settings/apps/notify.yaml @@ -0,0 +1,3 @@ +notify: + module: notify + class: Notification \ No newline at end of file diff --git a/appdaemon/settings/apps/power/power_theory.py b/appdaemon/settings/apps/power/power_theory.py new file mode 100644 index 0000000..f68a43f --- /dev/null +++ b/appdaemon/settings/apps/power/power_theory.py @@ -0,0 +1,63 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime +from datetime import timedelta +# +# POwer theory +# Power theory tariff switch +# +# Args: +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class PowerTheory(hass.Hass): + def initialize(self): + self.run_daily(self.timer_tick, self.parse_time("07:00:00")) + self.run_daily(self.timer_tick, self.parse_time("10:00:00")) + self.run_daily(self.timer_tick, self.parse_time("17:00:00")) + self.run_daily(self.timer_tick, self.parse_time("21:00:00")) + self.run_daily(self.timer_tick, self.parse_time("23:00:00")) + self.timer_tick(None) + + def timer_tick(self, kwargs): + t1 = self.time_is_between(self.datetime(), '07:00:00', '09:59:59') or self.time_is_between(self.datetime(), '17:00:00', '20:59:59') + t2 = self.time_is_between(self.datetime(), '23:00:00', '06:59:00') + t3 = self.time_is_between(self.datetime(), '10:00:00', '16:59:59') or self.time_is_between(self.datetime(), '21:00:00', '22:59:59') + if t1: + self.switch_to_tariff('t1') + if t2: + self.switch_to_tariff('t2') + if t3: + self.switch_to_tariff('t3') + + def switch_to_tariff(self, tariff): + self.log('switching to power tariff: {}'.format(tariff)) + self.call_service("select/select_option", entity_id='select.power_theory', option=tariff) + + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/power/power_theory.yaml b/appdaemon/settings/apps/power/power_theory.yaml new file mode 100644 index 0000000..c9c8d46 --- /dev/null +++ b/appdaemon/settings/apps/power/power_theory.yaml @@ -0,0 +1,6 @@ +power_theory: + module: power_theory + class: PowerTheory + global_dependencies: + - globals + \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/alarm_panel.py b/appdaemon/settings/apps/presence/alarm_panel.py new file mode 100644 index 0000000..031a0bb --- /dev/null +++ b/appdaemon/settings/apps/presence/alarm_panel.py @@ -0,0 +1,46 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Listen for presence sensor change state and change alarm control panel state. +# +# Args: +# sensor - home presence 'sensor' +# ha_panel - alarm control panel entity (to arm and disarm). +# constraint - (optional, input_boolen), if turned off - alarm panel will be not armed\disarmed. +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class AlarmPanelBySensor(hass.Hass): + def initialize(self): + if "sensor" not in self.args or "ha_panel" not in self.args: + self.error("Please provide sensor and ha_panel in config!") + return + self.listen_state(self.sensor_trigger, self.args['sensor']) + self.listen_event(self.ha_event, "ha_started") + + def ha_event(self, event_name, data, kwargs): + self.log('Starting up!') + state = self.get_state(self.args['sensor']) + self.log('Updating alarm_control_panel state: {}'.format(state)) + if state == "off": + self.away_mode() + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + self.log("{} turned {}".format(entity, new)) + if new == "off" and old == "on": + self.away_mode() + if new == "on" and old == "off": + self.return_home_mode() + + def away_mode(self): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.call_service("alarm_control_panel/alarm_arm_away", entity_id = self.args['ha_panel']) + + def return_home_mode(self): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.call_service("alarm_control_panel/alarm_disarm", entity_id = self.args['ha_panel']) \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/alarm_panel.yaml b/appdaemon/settings/apps/presence/alarm_panel.yaml new file mode 100644 index 0000000..42c07b7 --- /dev/null +++ b/appdaemon/settings/apps/presence/alarm_panel.yaml @@ -0,0 +1,11 @@ +################################# +# HOME PRESENSE # +################################# +alarm_panel: + module: alarm_panel + class: AlarmPanelBySensor + sensor: sensor.presence_home + ha_panel: alarm_control_panel.ha_alarm + constraint: input_boolean.presence_control + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/alarm_panel_action.py b/appdaemon/settings/apps/presence/alarm_panel_action.py new file mode 100644 index 0000000..3825aa0 --- /dev/null +++ b/appdaemon/settings/apps/presence/alarm_panel_action.py @@ -0,0 +1,77 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Listen for Alarm panel state change and fire an events ('away_mode' and 'return_home_mode') +# +# Args: +# ha_panel - alarm control panel entity. +# Release Notes +# +# Version 1.0: +# Initial Version + +class AlarmPanelAction(hass.Hass): + extended_timeout = 5*60 + timers = [] + + def initialize(self): + if "ha_panel" not in self.args: + self.error("Please provide ha_panel in config!") + return + self.listen_state(self.ha_panel_trigger, self.args['ha_panel']) + extended_timeout = self.args.get('extended_timeout', self.extended_timeout) + self.log('extended_timeout: {}'.format(self.extended_timeout)) + + def ha_panel_trigger(self, entity, attribute, old, new, kwargs): + # не срабатываем на triggered. + if new == "armed_away" and old != "triggered": + self.away_mode() + if new == "disarmed" and old == "armed_away": + self.return_home_mode() + + def away_mode(self): + self.log('away_mode') + self.fire_event('away_mode') + + if 'presence_extended' in self.args: + self.fire_event('presence_extended_just_left') + self.set_mode('Just Left') + self.cancel_current_timer() + self.timers.append(self.run_in(self.run_in_set_mode, self.extended_timeout, mode='Away')) + + + def return_home_mode(self): + self.log('return_home_mode') + self.fire_event('return_home_mode') + if 'presence_extended' in self.args: + self.set_mode('Just Arrived') + self.fire_event('presence_extended_just_arrived') + self.cancel_current_timer() + self.timers.append(self.run_in(self.run_in_set_mode, self.extended_timeout, mode='Home')) + + + def set_mode(self, mode): + if 'presence_extended' not in self.args: + return + entity_id = self.args['presence_extended'] + self.log('setting mode direct: {}={}'.format(entity_id, mode)) + self.call_service("input_select/select_option", entity_id = entity_id, option = mode) + + + def run_in_set_mode(self, kwargs): + if not 'mode' in kwargs: + return + mode = kwargs['mode'] + entity_id = self.args['presence_extended'] + event = 'presence_extended_{}'.format(mode.lower()) + self.log('firing event: {}'.format(event)) + self.fire_event(event) + + self.log('setting mode by timer: {}={}'.format(entity_id, mode)) + self.call_service("input_select/select_option", entity_id = entity_id, option = mode) + + def cancel_current_timer(self): + for timer in self.timers: + self.log('canceling timer') + self.cancel_timer(timer) + self.timers = [] diff --git a/appdaemon/settings/apps/presence/alarm_panel_action.yaml b/appdaemon/settings/apps/presence/alarm_panel_action.yaml new file mode 100644 index 0000000..dd2471b --- /dev/null +++ b/appdaemon/settings/apps/presence/alarm_panel_action.yaml @@ -0,0 +1,11 @@ +################################# +# HOME PRESENSE # +################################# +alarm_panel_action: + module: alarm_panel_action + class: AlarmPanelAction + ha_panel: alarm_control_panel.ha_alarm + presence_extended: input_select.presence_extended + extended_timeout: 300 + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/entities_action.py b/appdaemon/settings/apps/presence/entities_action.py new file mode 100644 index 0000000..17681d8 --- /dev/null +++ b/appdaemon/settings/apps/presence/entities_action.py @@ -0,0 +1,80 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Light control by presence events +# Listen for presence events and change light state +# +# Args: +# entities - entities to turn on and off when presence is changed. +# Release Notes +# +# Version 1.0: +# Initial Version + +class EntitiesByPresence(hass.Hass): + mode = None + def initialize(self): + if 'away_entities' not in self.args or 'return_entities' not in self.args: + self.error("Please provide away_entities and return_entities in config!") + return + self.listen_event(self.away_mode, "away_mode") + self.listen_event(self.return_home_mode, "return_home_mode") + self.determine_current_mode() + self.set_thermostat_by_mode(None) + self.timer = self.run_every(self.set_thermostat_by_mode, 'now', 5*60) + + def determine_current_mode(self): + state = self.get_state('input_select.presence_extended') + if state == 'Home' or state == 'Just Arrived': + self.mode = 'home' + else: + self.mode = 'away' + + def away_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.mode = 'away' + for entity_id in self.args["away_entities"]: + self.turn_off_custom(entity_id) + self.set_thermostat_by_mode(None) + + def return_home_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.mode = 'home' + entities = self.args["return_entities"] + if entities == None: + entities=[] + for entity_id in entities: + self.turn_on_custom(entity_id) + self.set_thermostat_by_mode(None) + + def set_thermostat_by_mode(self, kwargs): + if "thremostats" not in self.args: + return + preset = 'away' + if self.mode == 'home': + preset = 'manual' + for entity_id in self.args["thremostats"]: + state = self.get_state(entity_id, 'preset_mode') + if state != preset: + self.log('Set thermostat ({}), current state = {}, set mode to {}'.format(entity_id, state, preset)) + self.call_service("climate/set_preset_mode", entity_id=entity_id, preset_mode = preset) + + def turn_on_custom(self, entity_id): + if 'cover.' in entity_id: + self.call_service("cover/open_cover", entity_id=entity_id) + return + if 'climate.' in entity_id: + self.call_service("climate/turn_on", entity_id=entity_id) + return + self.turn_on(entity_id) + + def turn_off_custom(self, entity_id): + if 'cover.' in entity_id: + self.call_service("cover/close_cover", entity_id=entity_id) + return + if 'climate.' in entity_id: + self.call_service("climate/turn_off", entity_id=entity_id) + return + self.turn_off(entity_id) diff --git a/appdaemon/settings/apps/presence/entities_action.yaml b/appdaemon/settings/apps/presence/entities_action.yaml new file mode 100644 index 0000000..f944ed6 --- /dev/null +++ b/appdaemon/settings/apps/presence/entities_action.yaml @@ -0,0 +1,82 @@ +################################# +# HOME PRESENSE # +################################# +entities_action: + module: entities_action + class: EntitiesByPresence + away_entities: + # air conditioners + - climate.ac_bedroom + - climate.ac_childroom + - climate.ac_kitchen + - climate.ac_mainroom + + # din rail lights + - light.light_mainroom_mainlamp + - light.light_mainroom_spotlights + - light.light_mainroom_pc_spotlight + # balcony + - light.light_balcony_spotlight + # bedroom + - light.light_bedroom_spotlights + - light.light_bedroom_nightlight_left + - light.light_bedroom_nightlight_right + - light.light_bedroom_pc_spotlight + - light.light_bedroom_mainlight + - light.light_bedroom_pc_nightlight + # bath + - light.light_bath + - light.light_bath_shelf + # shower + - light.light_shower_main_spotlights + - light.light_shower_shower_spotlights + - light.light_shower_shelf_light + # hall + - light.light_hall_long + # childroom + - light.light_childroom_main + - light.light_childroom_spotlights + - light.light_childroom_bed + # kitchen + - light.light_kitchen_spotlights + - light.light_kitchen_table_lamp + - light.light_kitchen_bar_lamp + - light.light_kitchen_set + + # ventilation + - fan.ventilation_shower + - fan.ventilation_bath + + # bedside lamps + - light.danil_bedside_lamp_rgbww_light + - light.svetlana_bedside_lamp_rgbww_light + + # mirrors and heaters + - switch.shower_mirror + - switch.switch_mirror_shower_heater + - switch.light_bath_mirror + - switch.switch_mirror_bath_heater + + # media + - media_player.bedroom_tv + - media_player.kitchen_tv + - media_player.mainroom_tv + + # alice + - media_player.yandex_station_m00r46000m53db + - media_player.yandex_station_m00fhe2003seqr + - media_player.yandex_station_ly00000000000008674600007209d3f5 + - media_player.yandex_station_ff98f029ab48468d28c557be + - media_player.yandex_station_u003jc100phn9k + return_entities: + # - light.light_kitchen_set + + thremostats: + - climate.radiator_childroom + - climate.radiator_mainroom + - climate.radiator_kitchen + - climate.radiator_bedroom + - climate.radiator_bedroom_balcony + global_dependencies: + - globals + diff --git a/appdaemon/settings/apps/presence/purifier._yaml b/appdaemon/settings/apps/presence/purifier._yaml new file mode 100644 index 0000000..1bf70a6 --- /dev/null +++ b/appdaemon/settings/apps/presence/purifier._yaml @@ -0,0 +1,9 @@ +purifier_timer: + module: purifier + class: Purifier + on_time: "06:45:00" + off_time: "23:00:00" + entity: fan.xiaomi_miio_device + ha_panel: alarm_control_panel.ha_alarm + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/purifier.py b/appdaemon/settings/apps/presence/purifier.py new file mode 100644 index 0000000..9c752e6 --- /dev/null +++ b/appdaemon/settings/apps/presence/purifier.py @@ -0,0 +1,107 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals +import datetime + +# +# Purifier controller +# Turn on and off purifier by light sensor and timers +# +# Args: +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class Purifier(hass.Hass): + away_fan_speed = 8 #1-14 + listen_event_handle_list = [] + mode = 'auto' + + def initialize(self): + if not globals.check_args(self, ["on_time", "off_time"]): + return + on_time = self.parse_time(self.args["on_time"]) + off_time = self.parse_time(self.args["off_time"]) + + self.on_timer = self.run_daily(self.day_mode_timer_event, on_time) + self.off_timer = self.run_daily(self.night_mode_timer_event, off_time) + + self.listen_event_handle_list.append(self.listen_event(self.away_mode_event, "away_mode")) + self.listen_event_handle_list.append(self.listen_event(self.return_home_mode_event, "return_home_mode")) + self.listen_event_handle_list.append(self.listen_state(self.state_change, self.args['entity'], attribute='illuminance')) + + def state_change(self, entity, attribute, old, new, kwargs): + presence_state = self.get_state(self.args['ha_panel']) + if presence_state != "disarmed": + # self.log('Nobody home, ignoring illuminance changes.') + return + self.log("{} changed from {} to {}".format(attribute, old, new)) + if old > 0 and new == 0 and self.time_is_between(self.datetime(), self.args["on_time"], self.args["off_time"]): + self.night_mode() + elif old == 0 and new > 0 and self.time_is_between(self.datetime(), self.args["on_time"], self.args["off_time"]): + self.auto_mode() + #self.auto_mode() + + def return_home_mode_event(self, event_id, event_args, kwargs): + self.auto_mode() + + def away_mode_event(self, event_id, event_args, kwargs): + self.away_mode() + + def night_mode_timer_event(self, kwargs): + self.night_mode() + + def day_mode_timer_event(self, kwargs): + self.auto_mode() + + + def away_mode(self): + self.mode='away' + self.log('Set purifier mode to favorite, speed: {}'.format(self.away_fan_speed)) + if 'entity' in self.args: + self.call_service("fan/set_speed", entity_id = self.args['entity'], speed='favorite') + self.call_service("fan/xiaomi_miio_set_favorite_level", entity_id = self.args['entity'], level=self.away_fan_speed) + self.call_service("fan/xiaomi_miio_set_led_on", entity_id = self.args['entity']) + # self.call_service("fan/xiaomi_miio_set_buzzer_on", entity_id = self.args['entity']) + + def auto_mode(self): + self.mode='auto' + self.log('Set purifier mode to auto.') + if 'entity' in self.args: + self.call_service("fan/set_speed", entity_id = self.args['entity'], speed='auto') + self.call_service("fan/xiaomi_miio_set_led_on", entity_id = self.args['entity']) + # self.call_service("fan/xiaomi_miio_set_buzzer_on", entity_id = self.args['entity']) + + def night_mode(self): + self.mode='night' + self.log('Set purifier mode to silent.') + if 'entity' in self.args: + self.call_service("fan/xiaomi_miio_set_buzzer_off", entity_id = self.args['entity']) + self.call_service("fan/set_speed", entity_id = self.args['entity'], speed='silent') + self.call_service("fan/xiaomi_miio_set_led_off", entity_id = self.args['entity']) + + + def time_is_between( + hass, target_dt: datetime, start_time: str, + end_time: str) -> bool: + """Generalization of AppDaemon's now_is_between method.""" + start_time_dt = hass.parse_time(start_time) # type: datetime + end_time_dt = hass.parse_time(end_time) # type: datetime + start_dt = target_dt.replace( + hour=start_time_dt.hour, + minute=start_time_dt.minute, + second=start_time_dt.second) + end_dt = target_dt.replace( + hour=end_time_dt.hour, + minute=end_time_dt.minute, + second=end_time_dt.second) + + if end_dt < start_dt: + # Spans midnight + if target_dt < start_dt and target_dt < end_dt: + target_dt = target_dt + timedelta(days=1) + end_dt = end_dt + timedelta(days=1) + return start_dt <= target_dt <= end_dt \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/report_action.py b/appdaemon/settings/apps/presence/report_action.py new file mode 100644 index 0000000..17f5918 --- /dev/null +++ b/appdaemon/settings/apps/presence/report_action.py @@ -0,0 +1,51 @@ +import appdaemon.plugins.hass.hassapi as hass +import globals + +# +# Home and away report +# Send report about home state after presence_actions was done. +# +# Args: +# entity - group of entities to send state report +# notify - notify entity to send message +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class ReportByPresence(hass.Hass): + report_delay = 15 + def initialize(self): + if 'entity' not in self.args or 'notify' not in self.args: + self.error("Please provide entity and notify in config!") + return + self.listen_event(self.away_mode, "away_mode") + self.listen_event(self.return_home_mode, "return_home_mode") + + def away_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + #wait 15 seconds before all devices will change thair states. + self.run_in(self.send_report, self.report_delay) + + def return_home_mode(self, event_id, event_args, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.notify("Добро пожаловать домой!", name = self.args['notify']) + +############# AWAY REPORT ########################## + def send_report(self, kwargs): + any = False + message = "" + entities = globals.get_group_entities(self, self.args['entity']) + for entity in entities: + state = self.get_state(entity) + if state == "on": + any = True + message += '{} ({}) = {}\n'.format(self.friendly_name(entity), entity, self.get_state(entity)) + if any: + message = "В доме остались работать следующие устройства:\n" + message + self.notify(message, name = self.args['notify']) + else: + self.notify("Все устройства в доме выключены.", name = self.args['notify']) diff --git a/appdaemon/settings/apps/presence/report_action.yaml b/appdaemon/settings/apps/presence/report_action.yaml new file mode 100644 index 0000000..3327852 --- /dev/null +++ b/appdaemon/settings/apps/presence/report_action.yaml @@ -0,0 +1,10 @@ +################################# +# HOME PRESENSE # +################################# +report_action: + module: report_action + class: ReportByPresence + entity: group.report_entities + notify: telegram + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/tags_presence.py b/appdaemon/settings/apps/presence/tags_presence.py new file mode 100644 index 0000000..0614872 --- /dev/null +++ b/appdaemon/settings/apps/presence/tags_presence.py @@ -0,0 +1,136 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Tags counter +# This app count 'at home' BLE tags and set home presence state. +# tag names must start from 'tag_'. Room presence sensors will be generated. +# +# Args: +# tag_prefix = tag prefix to search (in my case 'sensor.tag_') +# sensor_prefix = sensor prefix for room presence sensor (ex: if prefix 'sensor.presence_', than sensor name will be 'sensor.presence_hall') +# rooms = rooms list, where tags will be discovered (sensor will be created for each room) +# constraint_prefix (input_boolean) = constraint for tag (ex: input_boolean.tag_monster) +# +# Release Notes +# +# Version 1.0: +# Initial Version +class TagsPresence(hass.Hass): + tags = [] + constraint_list = [] + tag_by_room_cache = {} + def initialize(self): + if 'tag_prefix' not in self.args or 'sensor_prefix' not in self.args or 'rooms' not in self.args or 'constraint_prefix' not in self.args: + self.error("Please provide tag_prefix, sensor_prefix, constraint_prefix and rooms in config!") + return + self.listen_tags() + # self.listen_event(self.ha_event, "plugin_started") + self.refresh_presence_state() + + # def ha_event(self, event_name, data, kwargs): + # self.run_in(self.refresh_presence_state_timer, 10) + + def refresh_presence_state_timer(self, kwargs): + self.refresh_presence_state() + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + self.refresh_presence_state() + + def constraint_trigger(self, entity, attribute, old, new, kwargs): + self.refresh_presence_state() + + def listen_tags(self): + self.fill_tags_and_constraints() + for tag in self.tags: + self.listen_state(self.sensor_trigger, tag) + for constraint in self.constraint_list: + self.listen_state(self.constraint_trigger, constraint) + + def refresh_presence_state(self): + tags_by_room = self.get_tags_state_by_room(self.tags, self.constraint_list) + tags_by_person = self.get_tags_state_by_person(self.tags, self.constraint_list) + homePresence = 'off' + for room in self.args['rooms']: + sensor = '{}{}'.format(self.args['sensor_prefix'],room) + if room in tags_by_room and len(tags_by_room[room]) > 0: + self.create_sensor(sensor, 'on') + homePresence = 'on' + else: + self.create_sensor(sensor, 'off') + + for person in tags_by_person: + if len(tags_by_person[person])>0 and tags_by_person[person] != 'not home': + attr = self.get_state(person, attribute='all').get('attributes', None) + # self.log(attr) + # attr['state'] = tags_by_person[person][0] + + # disable set person state + # self.set_state(person, state = tags_by_person[person][0], attributes = attr) + + homeSensor = '{}{}'.format(self.args['sensor_prefix'],'home') + self.create_sensor(homeSensor, homePresence) + + def get_tags_state_by_room(self, tags, constraint_list): + tags_by_room = {} + for tag in tags: + constraint = '{}{}'.format(self.args['constraint_prefix'],tag.replace(self.args['tag_prefix'],'')) + if constraint in constraint_list and not self.constrain_input_boolean(constraint): + continue + room = self.get_state(tag) + if room not in tags_by_room: + tags_by_room[room] = [] + tags_by_room[room].append(tag) + return tags_by_room + + def get_tags_state_by_person(self, tags, constraint_list): + tags_by_person = {} + for tag in tags: + constraint = '{}{}'.format(self.args['constraint_prefix'],tag.replace(self.args['tag_prefix'],'')) + if constraint in constraint_list and not self.constrain_input_boolean(constraint): + continue + tagName = tag.replace(self.args['tag_prefix'],'') + if '_' in tagName: + tagName = tagName.split('_')[0] + person = '{}{}'.format(self.args['person_prefix'], tagName) + person_state = self.get_state(person) + if person_state != None: + # self.log('{}: {}'.format(person, person_state)) + if person not in tags_by_person: + tags_by_person[person] = [] + tags_by_person[person].append(self.get_state(tag)) + return tags_by_person + + # if person_state in self.get_state('person'): + # self.log('{} found'.format(person)) + # else: + # self.log('{} not found'.format(person)) + + # self.log('{}: {}'.format(person, person_state)) + # tag_state = self.get_state(tag) + # if room not in tags_by_room: + # tags_by_room[room] = [] + # tags_by_room[room].append(tag) + # return tags_by_room + + def fill_tags_and_constraints(self): + self.tags = [] + self.constraint_list = [] + devices = self.get_state() + for tag in devices: + if not tag.startswith(self.args['tag_prefix']): + continue + self.tags.append(tag) + + constraint = '{}{}'.format(self.args['constraint_prefix'],tag.replace(self.args['tag_prefix'],'')) + if constraint in devices and constraint not in self.constraint_list: + self.constraint_list.append(constraint) + + def create_sensor(self, entity_id, state, attributes = None): + current_state = self.get_state(entity_id) + if (current_state == state): + return + # self.log('Updating {} state ({}->{})'.format(entity_id, current_state, state)) + if attributes == None: + attributes = {} + attributes['description'] = 'Created and updated from appdaemon (tags_presence)' + self.set_state(entity_id, state = state, attributes = attributes) \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/tags_presence.yaml b/appdaemon/settings/apps/presence/tags_presence.yaml new file mode 100644 index 0000000..66bbd86 --- /dev/null +++ b/appdaemon/settings/apps/presence/tags_presence.yaml @@ -0,0 +1,16 @@ +################################# +# HOME PRESENSE # +################################# +tags_presence: + module: tags_presence + class: TagsPresence + tag_prefix: sensor.tag_ + sensor_prefix: sensor.presence_ + constraint_prefix: input_boolean.tag_ + person_prefix: person. + rooms: + - kladovka + - bedroom + - mainroom + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/presence/water_action.py b/appdaemon/settings/apps/presence/water_action.py new file mode 100644 index 0000000..83f022e --- /dev/null +++ b/appdaemon/settings/apps/presence/water_action.py @@ -0,0 +1,107 @@ +import appdaemon.plugins.hass.hassapi as hass +import datetime + +# +# Water control application. +# Controls water valve when all leave and no water needed devices is working. +# +# Args: +# water_valve = water valve entity +# notify - notify entity to send message +# constraint (optional) = input_boolean to enable\disable this automation +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class WaterValveControl(hass.Hass): + standby_power_limit = 15 + current_wait_cycle = 0 + wait_cycles = 2 + timer = None + listen_event_handle_list = [] + timers = [] + + def initialize(self): + if 'water_valve' not in self.args or 'water_devices' not in self.args or 'notify' not in self.args: + self.error("Please provide water_valve, water_devices and notify in config!") + return + + self.listen_event_handle_list.append(self.listen_event(self.away_mode, "away_mode")) + self.listen_event_handle_list.append(self.listen_event(self.return_home_mode, "return_home_mode")) + self.log(self.get_turned_on_devices()) + + def return_home_mode(self, event_id, event_args, kwargs): + self.timer = None + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.turn_on(self.args['water_valve']) + for device in self.args['water_devices']: + self.turn_on(device) + self.cancel_current_timer() + + def away_mode(self, event_id, event_args, kwargs): + self.timer = None + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + powered_on = self.get_turned_on_devices() + self.log('away entities: {}'.format(powered_on)) + if (len(powered_on) > 0): + device_names = "" + for device in powered_on: + if device_names != '': + device_names += ", " + name = self.friendly_name(device) + if name is None: + name = device + device_names += name + self.notify('В доме остались требующие воды устройства ({}), подача воды не будет отключена.'.format(device_names), name = self.args['notify']) + self.cancel_current_timer() + self.timers.append(self.run_every(self.wait_when_device_is_done, self.datetime()+datetime.timedelta(seconds=5), 5*60)) + else: + self.notify('Отключаю подачу воды.', name = self.args['notify']) + self.turn_off(self.args['water_valve']) + # for device in self.args['water_devices']: + # self.turn_off(device) + + def wait_when_device_is_done(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + powered_on = self.get_turned_on_devices() + self.log('still powered on: {}'.format(powered_on)) + if len(powered_on) == 1: + self.current_wait_cycle = 0 + elif len(powered_on) == 0 and self.current_wait_cycle=self.wait_cycles: + self.current_wait_cycle = 0 + self.notify('Устройства требующие воды закончили свою работу, отключаю подачу воды.', name = self.args['notify']) + self.turn_off_water_devices() + self.cancel_current_timer() + + def turn_off_water_devices(self): + self.log("Turning off water devices.") + self.turn_off(self.args['water_valve']) + for device in self.args['water_devices']: + if 'switch' in device: + self.log('switching off: {}'.format(device)) + self.turn_off(device) + + def get_turned_on_devices(self): + powered_on_devices = [] + devices = self.args['water_devices'] + for device in devices: + state = self.get_state(device) + self.log('{} state: {}'.format(device, state)) + if state == 'off' or state == None: + continue + powered_on_devices.append(device) + return powered_on_devices + + def cancel_current_timer(self): + for timer in self.timers: + self.log('canceling timer') + self.cancel_timer(timer) + self.timers = [] diff --git a/appdaemon/settings/apps/presence/water_action.yaml b/appdaemon/settings/apps/presence/water_action.yaml new file mode 100644 index 0000000..2a4cb67 --- /dev/null +++ b/appdaemon/settings/apps/presence/water_action.yaml @@ -0,0 +1,14 @@ +################################# +# HOME PRESENSE # +################################# +water_action: + module: water_action + class: WaterValveControl + water_valve: switch.watercontrol_valves + notify: telegram + constraint: input_boolean.water_control + water_devices: + - binary_sensor.washer_running # стиралка + - binary_sensor.hc_dishwasher_running # посудомойка + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/router/keenetic.py b/appdaemon/settings/apps/router/keenetic.py new file mode 100644 index 0000000..d6fb4c3 --- /dev/null +++ b/appdaemon/settings/apps/router/keenetic.py @@ -0,0 +1,265 @@ +import appdaemon.plugins.hass.hassapi as hass +import requests +from datetime import datetime + +class TelegramInternetControl(hass.Hass): + """ + Управление интернетом через Telegram команды. + Поддерживает множественные MAC-адреса. + """ + + def initialize(self): + """ + Инициализация приложения. + """ + self.log("Telegram Internet Control initialized") + + # Конфигурация из apps.yaml + self.api_url = self.args.get("api_url", "http://localhost:8000/run") + self.api_user = self.args.get("api_user", "api_user") + self.api_password = self.args.get("api_password", "strong_password") + + # Команды Telegram + self.block_command = self.args.get("block_command", "Коля наказан").lower() + self.unblock_command = self.args.get("unblock_command", "Включи Коле интернет").lower() + + # MAC адреса для управления (массив) + self.target_macs = self.args.get("target_macs", []) + if isinstance(self.target_macs, str): + self.target_macs = [self.target_macs] + + # Разрешенные user_id (безопасность) + self.allowed_users = self.args.get("allowed_users", []) + if isinstance(self.allowed_users, int): + self.allowed_users = [self.allowed_users] + + # Entity для прослушивания событий Telegram + self.telegram_event_entity = self.args.get( + "telegram_event_entity", + "event.home_assistant_fonvizina_update_event" + ) + + # Сервис для отправки ответов в Telegram + self.notify_service = self.args.get("notify_service", "notify/telegram") + + # Сохраняем последнее обработанное время (для пропуска дублей) + self.last_processed_time = None + + # Слушаем изменения состояния события Telegram + self.listen_state( + self.on_telegram_event, + self.telegram_event_entity + ) + + self.log(f"Listening to: {self.telegram_event_entity}") + self.log(f"Block command: '{self.block_command}'") + self.log(f"Unblock command: '{self.unblock_command}'") + self.log(f"Target MACs: {self.target_macs}") + self.log(f"Allowed users: {self.allowed_users}") + self.listen_event(self.yandex_intent, "yandex_intent") + + def yandex_intent(self, event_id, event_args, kwargs): + self.log("{} {}".format(event_id, event_args)) + text = event_args['text'] + room = event_args['room'] + alice = event_args['entity_id'] + if text == self.block_command: + self.handle_block_command('Monster1025') + + def say(self, entity_id, command): + self.log('command = {}'.format(command)) + self.call_service('media_player/play_media', entity_id=entity_id, media_content_type='text', media_content_id=command) + + def on_telegram_event(self, entity, attribute, old, new, kwargs): + """ + Обработка события Telegram. + """ + try: + # Получаем полный объект состояния с атрибутами + state_data = self.get_state(entity, attribute="all") + + if state_data is None: + self.log("State data is None") + return + + # Получаем атрибуты + attributes = state_data.get("attributes", {}) + + if not attributes: + self.log("No attributes in state data") + return + + # Проверяем тип события (должно быть telegram_text) + event_type = attributes.get("event_type", "") + if event_type != "telegram_text": + return + + # Получаем текст сообщения + text = attributes.get("text", "").strip() + if not text: + return + + # Получаем user_id отправителя + user_id = attributes.get("user_id") + from_first = attributes.get("from_first", "Unknown") + + # Получаем время события для защиты от дублей + event_time = attributes.get("date", "") + + # Пропускаем если уже обработали это событие + if event_time == self.last_processed_time: + self.log(f"Skipping duplicate event: {event_time}") + return + + self.last_processed_time = event_time + + self.log(f"Telegram message from {from_first} (user_id: {user_id}): '{text}'") + + # Проверяем, разрешен ли пользователь + if user_id not in self.allowed_users: + self.log(f"User {user_id} not in allowed list. Ignoring.") + return + + # Обрабатываем команды (регистронезависимо) + text_lower = text.lower() + + if text_lower == self.block_command: + self.handle_block_command(from_first) + elif text_lower == self.unblock_command: + self.handle_unblock_command(from_first) + + except Exception as e: + self.log(f"Error processing Telegram event: {str(e)}") + self.log(f"State data: {state_data if 'state_data' in locals() else 'N/A'}") + + def handle_block_command(self, user_name): + """ + Блокировка интернета для всех MAC-адресов. + """ + self.log(f"Blocking internet for {user_name}") + + if not self.target_macs: + self.send_telegram_message(f"❌ {user_name}, не настроены MAC-адреса для блокировки!") + self.log("No MAC addresses configured") + return + + success_count = 0 + failed_macs = [] + + for mac in self.target_macs: + # Формируем команду для роутера + command = f"ip hotspot host {mac} schedule schedule1" + self.log(f"Sending command: {command}") + + if self.send_to_router(command): + success_count += 1 + else: + failed_macs.append(mac) + command = "system configuration save" + self.log(f"Sending command: {command}") + cmd = self.send_to_router(command) + + # Формируем отчет + if success_count == len(self.target_macs): + self.send_telegram_message( + f"✅ {user_name}, интернет заблокирован для {success_count} устр-в!" + ) + self.log(f"Internet blocked successfully for {success_count} devices") + elif success_count > 0: + self.send_telegram_message( + f"⚠️ {user_name}, частично заблокировано: {success_count}/{len(self.target_macs)}. " + f"Не удалось: {', '.join(failed_macs)}" + ) + self.log(f"Partial block: {success_count}/{len(self.target_macs)}") + else: + self.send_telegram_message(f"❌ {user_name}, ошибка при блокировке интернета!") + self.log("Failed to block internet") + + def handle_unblock_command(self, user_name): + """ + Разблокировка интернета для всех MAC-адресов. + """ + self.log(f"Unblocking internet for {user_name}") + + if not self.target_macs: + self.send_telegram_message(f"❌ {user_name}, не настроены MAC-адреса для разблокировки!") + self.log("No MAC addresses configured") + return + + success_count = 0 + failed_macs = [] + + for mac in self.target_macs: + # Формируем команду для роутера + command = f"ip hotspot host {mac} schedule schedule0" + self.log(f"Sending command: {command}") + cmd = self.send_to_router(command) + + if cmd: + success_count += 1 + else: + failed_macs.append(mac) + command = "system configuration save" + self.log(f"Sending command: {command}") + cmd = self.send_to_router(command) + + # Формируем отчет + if success_count == len(self.target_macs): + self.send_telegram_message( + f"✅ {user_name}, интернет включен для {success_count} устр-в!" + ) + self.log(f"Internet unblocked successfully for {success_count} devices") + elif success_count > 0: + self.send_telegram_message( + f"⚠️ {user_name}, частично включено: {success_count}/{len(self.target_macs)}. " + f"Не удалось: {', '.join(failed_macs)}" + ) + self.log(f"Partial unblock: {success_count}/{len(self.target_macs)}") + else: + self.send_telegram_message(f"❌ {user_name}, ошибка при включении интернета!") + self.log("Failed to unblock internet") + + def send_to_router(self, command): + """ + Отправка команды на роутер через API. + """ + try: + response = requests.post( + self.api_url, + json={"command": command}, + auth=(self.api_user, self.api_password), + timeout=10 + ) + + if response.status_code == 200: + result = response.json() + exit_code = result.get("exit_code", -1) + + if exit_code == 0: + return True + else: + stderr = result.get('stderr', '') + self.log(f"Router command failed with exit code: {exit_code}") + self.log(f"Stderr: {stderr}") + return False + else: + self.log(f"API request failed with status: {response.status_code}") + self.log(f"Response: {response.text}") + return False + + except Exception as e: + self.log(f"Error sending command to router: {str(e)}") + return False + + def send_telegram_message(self, message): + """ + Отправка ответа в Telegram. + """ + try: + self.call_service( + self.notify_service, + message=message + ) + self.log(f"Telegram message sent: {message}") + except Exception as e: + self.log(f"Error sending Telegram message: {str(e)}") \ No newline at end of file diff --git a/appdaemon/settings/apps/router/keenetic.yaml b/appdaemon/settings/apps/router/keenetic.yaml new file mode 100644 index 0000000..bbf040e --- /dev/null +++ b/appdaemon/settings/apps/router/keenetic.yaml @@ -0,0 +1,27 @@ +keenetic: + module: keenetic + class: TelegramInternetControl + + # URL вашего API (адрес контейнера с API) + api_url: "http://192.168.1.6:8001/run" + api_user: !secret router_username + api_password: !secret router_password + + # Команды Telegram (регистронезависимые) + block_command: "Коля наказан" + unblock_command: "Включи Коле интернет" + + # MAC адреса для управления (массив) + target_macs: + - "cc:4b:73:04:ed:34" + - "b8:41:d9:d8:3f:58" + + # Разрешенные user_id из Telegram (безопасность!) + allowed_users: + - 123622180 + + # Entity для прослушивания событий + telegram_event_entity: "event.home_assistant_fonvizina_update_event" + + # Сервис для отправки уведомлений в Telegram + notify_service: "notify/telegram" \ No newline at end of file diff --git a/appdaemon/settings/apps/security/fire_sensors.py b/appdaemon/settings/apps/security/fire_sensors.py new file mode 100644 index 0000000..4661629 --- /dev/null +++ b/appdaemon/settings/apps/security/fire_sensors.py @@ -0,0 +1,48 @@ +import appdaemon.plugins.hass.hassapi as hass +import fnmatch + +# +# Fire sensors alarm notification +# Send notification if some movement is detecter or door any is open +# while nobody is home +# +# Args: +# sensor - gorup of sensors to listen +# ha_panel - alarm panel entity +# notify - notify entity to send message +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class FireSensorsReport(hass.Hass): + def initialize(self): + if 'sensor_parts' not in self.args or 'notify' not in self.args: + self.error("Please provide sensor_parts, ha_panel and notify in config!") + return + + sensor_parts = self.args['sensor_parts'] + + all_sensors = self.get_state() + for entity_id in all_sensors: + for part in sensor_parts: + if fnmatch.fnmatch(entity_id, part): + self.log(' [+] listening for security sensor {}'.format(entity_id)) + self.listen_state(self.sensor_trigger, entity_id) + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + if old != new and new == "on": + self.log('Fire sensor is triggered!!!') + self.alarm_triggered(entity, old, new) + + def alarm_triggered(self, entity, old, new): + self.log('alarm triggered') + + friendly_name = self.friendly_name(entity) + entity = entity.replace('_', '-') + message = "Сработал датчик пожарной сигнализации {} ({}) = {}-{}!".format(friendly_name, entity, old, new) + self.notify(message, name = self.args['notify']) \ No newline at end of file diff --git a/appdaemon/settings/apps/security/fire_sensors.yaml b/appdaemon/settings/apps/security/fire_sensors.yaml new file mode 100644 index 0000000..11adfdb --- /dev/null +++ b/appdaemon/settings/apps/security/fire_sensors.yaml @@ -0,0 +1,9 @@ +fire_sensors: + module: fire_sensors + class: FireSensorsReport + sensor_parts: + - binary_sensor.smoke_detector_*_smoke + constraint: input_boolean.fire_sensors_report + notify: telegram + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/security/security_sensors.py b/appdaemon/settings/apps/security/security_sensors.py new file mode 100644 index 0000000..06f606b --- /dev/null +++ b/appdaemon/settings/apps/security/security_sensors.py @@ -0,0 +1,59 @@ +import appdaemon.plugins.hass.hassapi as hass +import fnmatch + +# +# Security sensors alarm notification +# Send notification if some movement is detecter or door any is open +# while nobody is home +# +# Args: +# sensor - gorup of sensors to listen +# ha_panel - alarm panel entity +# notify - notify entity to send message +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class SecuritySensorsReport(hass.Hass): + def initialize(self): + if 'sensor_parts' not in self.args or 'ha_panel' not in self.args or 'notify' not in self.args: + self.error("Please provide sensor_parts, ha_panel and notify in config!") + return + + sensor_parts = self.args['sensor_parts'] + + all_sensors = self.get_state() + for entity_id in all_sensors: + for part in sensor_parts: + if fnmatch.fnmatch(entity_id, part): + self.log(' [+] listening for security sensor {}'.format(entity_id)) + self.listen_state(self.sensor_trigger, entity_id) + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + if old != new and new == "on": + alarm_panel_state = self.get_state(self.args['ha_panel']) + if alarm_panel_state != "armed_away": + return + + vacuum_state = "docked" + if "vacuum" in self.args: + vacuum_state = self.get_state(self.args["vacuum"]) + #Если работает пылесос и сработал датчик движения + if vacuum_state == 'cleaning' and 'binary_sensor.motion' in entity: + self.log('Motion sensor is triggered, but vacuum is cleaning.') + return + self.alarm_triggered(entity, old, new) + + def alarm_triggered(self, entity, old, new): + self.log('alarm triggered') + # self.call_service("alarm_control_panel/alarm_trigger", entity_id = self.args['ha_panel']) + + friendly_name = self.friendly_name(entity) + entity = entity.replace('_', '-') + message = "В ваше отсутствие сработал датчик безопастности {} ({}) = {}->{}!".format(friendly_name, entity, old, new) + self.notify(message, name = self.args['notify']) \ No newline at end of file diff --git a/appdaemon/settings/apps/security/security_sensors.yaml b/appdaemon/settings/apps/security/security_sensors.yaml new file mode 100644 index 0000000..c2f1ac7 --- /dev/null +++ b/appdaemon/settings/apps/security/security_sensors.yaml @@ -0,0 +1,14 @@ +security_sensors: + module: security_sensors + class: SecuritySensorsReport + sensor_parts: + - binary_sensor.motion_*_occupancy + - binary_sensor.door_*_contact + - binary_sensor.smoke_detector_*_smoke + - binary_sensor.water_leak_*_leak + constraint: input_boolean.security_sensors_report + ha_panel: alarm_control_panel.ha_alarm + vacuum: vacuum.dreame_p2027_6b1e_robot_cleaner + notify: telegram + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/security/water_leak.py b/appdaemon/settings/apps/security/water_leak.py new file mode 100644 index 0000000..4c50988 --- /dev/null +++ b/appdaemon/settings/apps/security/water_leak.py @@ -0,0 +1,62 @@ +import appdaemon.plugins.hass.hassapi as hass + +# +# Water leak detector +# close water valve and send a report +# +# Args: +# +# sensor = water leak sensor group +# valve = water valve - app will close it, when leak is detected +# notify = notify name to send notification +# +# None +# +# Release Notes +# +# Version 1.0: +# Initial Version + +class WaterLeak(hass.Hass): + ringtone = 2 + gw_mac = '' + sensors = [] + def initialize(self): + if 'sensor' not in self.args or 'valve' not in self.args or 'notify' not in self.args: + self.error("Please provide sensor, valve and notify in config!") + return + self.sensors = self.get_water_leak_sensors() + self.log("leak sensors: {}".format(self.sensors)) + for sensor in self.sensors: + self.listen_state(self.water_leak, sensor) + + def get_water_leak_sensors(self): + sensors = [] + devices = self.get_state() + for sensor in devices: + if not sensor.startswith(self.args['sensor_prefix']): + continue + sensors.append(sensor) + return sensors + + def water_leak(self, entity, attribute, old, new, kwargs): + if new == "on": + self.send_alarm(entity) + + def send_alarm(self, entity_id): + self.log('water leak alarm triggered!') + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + + #close water valve + self.turn_off(self.args['valve']) + ## to ensure that water is closed. It is important!!! + self.call_service("mqtt/publish", topic = 'home/watercontrol/bath/valve/set', payload = 'close') + + message = "ВНИМАНИЕ! В ваше отстутствие сработал датчик протечки воды ({})!!! Выключаю подачу воды.".format(self.friendly_name(entity_id)) + self.notify(message, name = self.args['notify']) + + message = "Состояние датчиков протечки:\n" + for entity_id in self.sensors: + message += '{} ({}) = {}\n'.format(self.friendly_name(entity_id), entity_id, self.get_state(entity_id)) + self.notify(message, name = self.args['notify']) \ No newline at end of file diff --git a/appdaemon/settings/apps/security/water_leak.yaml b/appdaemon/settings/apps/security/water_leak.yaml new file mode 100644 index 0000000..5687b16 --- /dev/null +++ b/appdaemon/settings/apps/security/water_leak.yaml @@ -0,0 +1,14 @@ +################################# +# WATER LEAK # +################################# +water_leak: + module: water_leak + class: WaterLeak + constraint: input_boolean.water_leak_control + sensor: group.water_leak_sensors + valve: switch.water_valve + sensor_prefix: binary_sensor.water_leak_ + notify: telegram + gw_mac: !secret aqara1_mac + global_dependencies: + - globals \ No newline at end of file diff --git a/appdaemon/settings/apps/sensors/mosru.py b/appdaemon/settings/apps/sensors/mosru.py new file mode 100644 index 0000000..26ea821 --- /dev/null +++ b/appdaemon/settings/apps/sensors/mosru.py @@ -0,0 +1,370 @@ +import sys +sys.path.insert(0, '/emp_mos_api') + +import globals +import datetime as dt +from automation import Automation, Base +from datetime import datetime, tzinfo, timedelta +from emp_mos_api.mos import MosAPI, Watercounter, Water, EmpServerException +#from mos_lib import MosAPI, Watercounter, Water, EmpServerException + +class WaterCounterSender(Automation): + timezone = '+03:00' + def initialize(self): + super().initialize() + self.run_daily(self.send_mosru_counters, dt.time(12, 00, 0)) + + def send_mosru_counters(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + self.log('Starting sending counters value to mos.ru') + new_values = [] + self.app.update_watercounters() + water_hot = self.app.water_hot + water_cold = self.app.water_cold + counters = [water_hot, water_cold] + + for counter in counters: + counter_type = counter['type'] + + checkup = counter['checkup'].replace(self.timezone,'') + checkup_date = datetime.strptime(checkup, '%Y-%m-%d') + + # подходит дата поверки + if checkup_date < datetime.now(): + self.error('Counter {} checkup date is expired at {}!'.format(counter['counterId'], checkup)) + continue + + our_sensor = "" + if counter_type == 1: + our_sensor = self.entity_ids['cold'] + elif counter_type == 2: + our_sensor = self.entity_ids['hot'] + real_value = int(float(self.get_state(our_sensor))) + self.log("Updating counter {} ({}) to real value: {}".format(counter['counterId'], our_sensor, real_value)) + new_values.append(Watercounter.serialize_for_send(counter, real_value)) + + if new_values: + try: + self.app.send_watercounters(new_values) + self.log('Counters values was sent to mos.ru') + except EmpServerException as err: + self.log('error sending: {}'.format(err)) + + +class PowerCounterSender(Automation): + timezone = '+03:00' + def initialize(self): + super().initialize() + if 'power_total' not in self.entity_ids: + self.log('Please specify power_total for PowerCounterSender.') + return + self.run_daily(self.send_mosru_counters, dt.time(14, 00, 0)) + # self.send_mosru_counters("") + + def send_mosru_counters(self, kwargs): + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + today = datetime.today() + if today.day < 15 or today.day > 26: + self.log("We can send power values between days 15 and 26.") + return + + power_total = round(float(self.get_state(self.entity_ids['power_total']))) + period = datetime.now().strftime('%Y-%m-%d') + + if 'threshold' in self.args and 'power_mosenergosbyt_total' in self.args: + power_mosenergosbyt_total = float(self.get_state(self.args['power_mosenergosbyt_total'])) + threshold = self.args['threshold'] + diff = power_total-power_mosenergosbyt_total + if diff None: + self.log('Updating water counters') + self.app.update_watercounters() + if 'hot' in self.entity_ids: + water_hot = self.app.water_hot + self.create_water_entity(self.entity_ids['hot'], water_hot) + if 'cold' in self.entity_ids: + water_cold = self.app.water_cold + self.create_water_entity(self.entity_ids['cold'], water_cold) + + def create_water_entity(self, entity_id, counter): + indication_max = 0 + indication_date = "" + for indication in counter['indications']: + current = float(indication['indication']) + if (current > indication_max): + indication_max = current + indication_date = indication['period'] + indication_date = indication_date.replace(self.timezone,'') + + counter_type = counter['type'] + checkup = counter['checkup'] + type_desc = "" + type_desc_ru = "" + if counter_type == 1: + type_desc = "cold" + type_desc_ru = "Холодная" + elif counter_type == 2: + type_desc = "hot" + type_desc_ru = "Горячая" + + icon = "mdi:av-timer" + checkup = checkup.replace(self.timezone,'') + checkup_date = datetime.strptime(checkup, '%Y-%m-%d') + + # подходит дата поверки + if (checkup_date - timedelta(days=31)) < datetime.now(): + icon = "mdi:alert-octagon" + + attributes = {} + attributes['unit_of_measurement'] = 'm3' + attributes['date'] = indication_date + attributes['checkup'] = checkup + attributes['icon'] = icon + attributes['friendly_name'] = "{}(mos.ru)".format(type_desc_ru) + attributes['description'] = 'Created and updated from appdaemon ({})'.format(__name__) + + self.set_state(entity_id, state = indication_max, attributes = attributes) + +class PowerCounterSensor(Automation): + timezone = '+03:00' + def initialize(self): + super().initialize() + self.timer = self.run_every(self.update_sensors, self.datetime()+timedelta(seconds=30), 1*60*60) + + def update_sensors(self, args) -> None: + self.log('Updating power counters') + self.app.update_power() + self.log('power data: {}'.format(self.app._power_counters)) + if 'power_total' in self.entity_ids: + power_total = self.app.power_total + self.create_power_entity(self.entity_ids['power_total'], power_total, 'kWh', 'Счетчик') + if 'power_balance' in self.entity_ids: + power_balance = self.app.power_balance + self.create_power_entity(self.entity_ids['power_balance'], power_balance, '₽', 'Баланс') + + def create_power_entity(self, entity_id, value, unit, description): + icon = "mdi:av-timer" + attributes = {} + attributes['unit_of_measurement'] = unit + attributes['icon'] = icon + attributes['friendly_name'] = "{}(mos.ru)".format(description) + attributes['description'] = 'Created and updated from appdaemon ({})'.format(__name__) + + self.set_state(entity_id, state = value, attributes = attributes) + + +class EpdBalanceSensor(Automation): + def initialize(self): + super().initialize() + self.timer = self.run_every(self.update_sensors, self.datetime()+timedelta(seconds=5), 1*60*60) + + def update_sensors(self, args) -> None: + if 'epd_balance' in self.entity_ids: + self.app.update_epd() + epd_balance = self.app.epd_balance + epd_description = self.app.epd_description + self.log('Current epd balance: {}'.format(epd_balance)) + + entity_id = self.entity_ids['epd_balance'] + friendly_name = self.args.get('friendly_name', 'Баланс (ЕПД)') + attributes = { + 'unit_of_measurement': '₽', + 'icon': 'mdi:bank-transfer', + 'date': datetime.now().strftime('%d.%m.%Y'), + 'unpaid': epd_description, + 'friendly_name': friendly_name, + 'description': 'Created and updated from appdaemon ({})'.format(__name__) + } + self.log('setting state: {}, state = {}, attributes = {}'.format(entity_id, epd_balance, attributes)) + self.set_state(entity_id, state = str(epd_balance), attributes = attributes) + + +class MosruBase(Base): + _api = None + _flat_id = None + _guid='4421a3fb0567714b27dec84d3c3862dc' + _app_version = '3.5.0.195 (102)' + _user_agent = 'okhttp/3.8.1' + _dev_user_agent = 'Android' + _timezone = '+03:00' + + def initialize(self): + super().initialize() + if not globals.check_properties(self,['login', 'pwd', 'token', 'paycode', 'session_id']): + return + self._api = MosAPI(token=self.properties['token'], + user_agent=self._user_agent, + guid=self._guid, + dev_user_agent=self._dev_user_agent, + dev_app_version=self._app_version, + timeout=6) + self._set_flat_id() + + def _set_flat_id(self): + ''' Set flat id by properties or pay code ''' + if 'flat_id' in self.properties: + self._flat_id = self.properties['flat_id'] + return + if (self._flat_id != None): + return + self._check_login() + flats = self._api.get_flats() + for flat in flats: + if (int(flat['paycode']) != self.properties['paycode']): + continue + self._flat_id = flat['flat_id'] + + def _check_login(self): + self._api.set_session(self.properties['session_id']) + # if not self._api.is_active(): + # self._api.login(self.properties['login'], self.properties['pwd']) + +class MosruPower(MosruBase): + _power_counters = None + + @property + def power_total(self): + if (self._power_counters == None): + self.update_power() + return self._power_counters['zones'][0]['value'] + + @property + def power_balance(self): + if (self._power_counters == None): + self.update_power() + return float(self._power_counters['balance']) + + def update_power(self) -> None: + self._check_login() + self._power_counters = self._api.get_electrocounters(self._flat_id) + + def send_electrocounters(self, new_values) -> None: + self._check_login() + self._api.send_electrocounters(self._flat_id, new_values) + + +class MosruWater(MosruBase): + _water_counters = None + + @property + def water_hot(self): + """Return the current state of counter.""" + if (self._water_counters == None): + self.update_watercounters() + hots_json = list(filter(lambda x: x['type'] == Water.HOT, self._water_counters)) + return hots_json[0] + + @property + def water_cold(self): + """Return the current state of counter.""" + if (self._water_counters == None): + self.update_watercounters() + colds_json = list(filter(lambda x: x['type'] == Water.COLD, self._water_counters)) + return colds_json[0] + + @property + def water_hot_value(self): + hot_value = Watercounter.last_value(self.water_hot) + return hot_value + + @property + def water_cold_value(self): + cold_value = Watercounter.last_value(self.water_cold) + return cold_value + + + def send_watercounters(self, new_values) -> None: + self._check_login() + self._api.send_watercounters(self._flat_id, new_values) + + def update_watercounters(self) -> None: + self._check_login() + self._water_counters = self._api.get_watercounters(self._flat_id)['counters'] + self.log(self._water_counters) + +class MosruEpd(MosruBase): + _epd_data = None + + @property + def epd_description(self) -> str: + if (self._epd_data == None): + self.update_epd() + + unpaid = [] + for date in self._epd_data: + epd = self._epd_data[date] + if epd['payment_status'] == 'PAID': + continue + unpaid.append('{}: {}'.format(date, epd['amount'])) + return ", ".join(unpaid) + + + @property + def epd_balance(self) -> float: + """Return the current state of counter.""" + if (self._epd_data == None): + self.update_epd() + balance = 0 + for date in self._epd_data: + epd = self._epd_data[date] + epd_is_paid = epd['payment_status'] == 'PAID' + if epd_is_paid: + continue + balance = balance - float(epd['amount'].replace(',','.')) + return balance + + def update_epd(self) -> None: + self._check_login() + data = {} + dateEnd = datetime.now().date() + dateStart = dateEnd - timedelta(6*365/12) + + date_start = dateStart.strftime('%d.%m.%Y') + date_end = dateEnd.strftime('%d.%m.%Y') + + epds = self._api.get_epd(self._flat_id, date_start, date_end) + for i in range(0, 3): #retries + if epds != []: + break + epds = self._api.get_epd(self._flat_id, date_start, date_end) + if len(epds) == 0: + self.log('epd not found for date: {}'.format(date_str)) + return + for epd in epds: + if epd['epd_type'] == 'DEBT': + continue + date_str = epd['period'] + data[date_str] = epd + # epd_total = epd['amount'] + # epd_is_paid = epd['is_paid'] + # self.log(" - Дата: {}, данные: {}.".format(date_str, epd)) + self._epd_data = data + +class MosruClient(MosruEpd, MosruWater, MosruPower): + def initialize(self): + super().initialize() + self.log('Flat id is: {}'.format(self._flat_id)) + # self.log('epd balance: {}'.format(self.epd_balance)) + # self.log('cold: {}'.format(self.water_cold)) + # self.log('hot: {}'.format(self.water_hot)) + # self.log('power_counter: {}, balance: {}'.format(self.power_total, self.power_balance)) diff --git a/appdaemon/settings/apps/sensors/mosru.yaml b/appdaemon/settings/apps/sensors/mosru.yaml new file mode 100644 index 0000000..7a66ce9 --- /dev/null +++ b/appdaemon/settings/apps/sensors/mosru.yaml @@ -0,0 +1,205 @@ + +################################# +# MOS.RU DATA RETRIEVER # +################################# +mosru_client: + class: MosruClient + module: mosru + properties: + login: !secret mosru_login + pwd: !secret mosru_pwd + token: !secret mosru_token + paycode: !secret mosru_paycode + flat_id: !secret mosru_flat_id + session_id: !secret mosru_session + global_dependencies: + - globals + +epd_sensor: + class: EpdBalanceSensor + module: mosru + friendly_name: Баланс (ЕПД) Алтуфьево + entity_ids: + epd_balance: sensor.epd_balance + app: mosru_client + dependencies: + - mosru_client + global_dependencies: + - globals + + +power_sensor: + class: PowerCounterSensor + module: mosru + entity_ids: + power_balance: sensor.power_mosenergosbyt_balance + power_total: sensor.power_mosenergosbyt_total + app: mosru_client + dependencies: + - mosru_client + global_dependencies: + - globals + +water_sensor: + class: WaterCounterSensor + module: mosru + entity_ids: + hot: sensor.counter_mosru_hot + cold: sensor.counter_mosru_cold + app: mosru_client + dependencies: + - mosru_client + global_dependencies: + - globals + +# water_sender: +# class: WaterCounterSender +# module: mosru +# entity_ids: +# hot: sensor.counter_hot +# cold: sensor.counter_cold +# app: mosru_client +# dependencies: +# - mosru_client +# global_dependencies: +# - globals + +# power_sender: +# class: PowerCounterSender +# module: mosru +# power_mosenergosbyt_total: sensor.power_mosenergosbyt_total +# threshold: 100 +# entity_ids: +# power_total: sensor.power_main_total +# app: mosru_client +# dependencies: +# - mosru_client +# global_dependencies: +# - globals + +#--------------------------------------------------------- +mosru_client_belorechenskaya: + class: MosruClient + module: mosru + properties: + login: !secret mosru_login + pwd: !secret mosru_pwd + token: !secret mosru_token + paycode: !secret mosru_belorechenskaya_paycode + flat_id: !secret mosru_belorechenskaya_flat_id + session_id: !secret mosru_session + global_dependencies: + - globals + +epd_sensor_belorechenskaya: + class: EpdBalanceSensor + module: mosru + friendly_name: Баланс (ЕПД) Белореченская + entity_ids: + epd_balance: sensor.epd_balance_belorechenskaya + app: mosru_client_belorechenskaya + dependencies: + - mosru_client_belorechenskaya + global_dependencies: + - globals + + +power_sensor_belorechenskaya: + class: PowerCounterSensor + module: mosru + entity_ids: + power_balance: sensor.power_mosenergosbyt_belorechenskaya_balance + power_total: sensor.power_mosenergosbyt_belorechenskaya_total + app: mosru_client_belorechenskaya + dependencies: + - mosru_client_belorechenskaya + global_dependencies: + - globals + +water_sensor_belorechenskaya: + class: WaterCounterSensor + module: mosru + entity_ids: + hot: sensor.counter_mosru_belorechenskaya_hot + cold: sensor.counter_mosru_belorechenskaya_cold + app: mosru_client_belorechenskaya + dependencies: + - mosru_client_belorechenskaya + global_dependencies: + - globals +#--------------------------------------------------------- +mosru_client_fonvizina: + class: MosruClient + module: mosru + properties: + login: !secret mosru_login + pwd: !secret mosru_pwd + token: !secret mosru_token + paycode: !secret mosru_fonvizina_paycode + flat_id: !secret mosru_fonvizina_flat_id + session_id: !secret mosru_session + global_dependencies: + - globals + +epd_sensor_mosru_fonvizina: + class: EpdBalanceSensor + module: mosru + friendly_name: Баланс (ЕПД) Фонвизина + entity_ids: + epd_balance: sensor.epd_balance_mosru_fonvizina + app: mosru_client_fonvizina + dependencies: + - mosru_client_fonvizina + global_dependencies: + - globals + +#--------------------------------------------------------- +mosru_client_milashenkova: + class: MosruClient + module: mosru + properties: + login: !secret mosru_login + pwd: !secret mosru_pwd + token: !secret mosru_token + paycode: !secret mosru_milashenkova_paycode + flat_id: !secret mosru_milashenkova_flat_id + session_id: !secret mosru_session + global_dependencies: + - globals + +epd_sensor_milashenkova: + class: EpdBalanceSensor + module: mosru + friendly_name: Баланс (ЕПД) Милашенкова + entity_ids: + epd_balance: sensor.epd_balance_milashenkova + app: mosru_client_milashenkova + dependencies: + - mosru_client_milashenkova + global_dependencies: + - globals + +power_sensor_milashenkova: + class: PowerCounterSensor + module: mosru + entity_ids: + power_balance: sensor.power_mosenergosbyt_milashenkova_balance + power_total: sensor.power_mosenergosbyt_milashenkova_total + app: mosru_client_milashenkova + dependencies: + - mosru_client_milashenkova + global_dependencies: + - globals + +water_sensor_milashenkova: + class: WaterCounterSensor + module: mosru + entity_ids: + hot: sensor.counter_mosru_milashenkova_hot + cold: sensor.counter_mosru_milashenkova_cold + app: mosru_client_milashenkova + dependencies: + - mosru_client_milashenkova + global_dependencies: + - globals +#--------------------------------------------------------- diff --git a/appdaemon/settings/apps/sensors/uniservice.py b/appdaemon/settings/apps/sensors/uniservice.py new file mode 100644 index 0000000..e7c0366 --- /dev/null +++ b/appdaemon/settings/apps/sensors/uniservice.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +import os +import sys +import requests +import globals +import datetime as dt +import appdaemon.plugins.hass.hassapi as hass +from datetime import datetime, tzinfo, timedelta +from bs4 import BeautifulSoup + +class EpdBalanceSensor(hass.Hass): + login = '' + pwd = '' + accounts = [] + def initialize(self): + # if not globals.check_properties(self,['login', 'pwd', 'accounts']): + # self.log('not enought params') + # return + self.login = self.args.get('login', '') + self.pwd = self.args.get('pwd', '') + self.accounts = self.args.get('accounts', []) + self.timer = self.run_every(self.update_sensors, self.datetime()+timedelta(seconds=1), 1*60*60) + self.run_daily(self.send_counters_callback, "11:00:00", constrain_days = "sun") + self.send_counters_callback(None) + + def to_balance(self, value_str): + value_str = value_str.replace(" ", "").replace(",", ".").replace("₽", "") + return -1 * float(value_str) + + def update_sensors(self, args) -> None: + entity_ids = self.args.get('entity_ids',[]) + session = self.get_auth_session(self.login, self.pwd) + payment_amounts = self.get_payment_amounts(session, self.accounts) + self.log(payment_amounts) + + fonvizina_epd_balance = self.to_balance(payment_amounts[0]['service_to_pay']) + if 'fonvizina_epd_balance' in entity_ids: + entity_id = entity_ids['fonvizina_epd_balance'] + attributes = { + 'unit_of_measurement': '₽', + 'icon': 'mdi:bank-transfer', + 'date': datetime.now().strftime('%d.%m.%Y'), + 'address': payment_amounts[0]['address'], + 'friendly_name': 'Баланс (ЕПД)', + 'description': 'Created and updated from appdaemon ({})'.format(__name__) + } + self.set_state(entity_id, state = str(fonvizina_epd_balance), attributes = attributes) + + fonvizina_trash_balance = self.to_balance(payment_amounts[0]['trash_to_pay']) + if 'fonvizina_trash_balance' in entity_ids: + entity_id = entity_ids['fonvizina_trash_balance'] + attributes = { + 'unit_of_measurement': '₽', + 'icon': 'mdi:bank-transfer', + 'date': datetime.now().strftime('%d.%m.%Y'), + 'address': payment_amounts[0]['address'], + 'friendly_name': 'Баланс Выввоз мусора', + 'description': 'Created and updated from appdaemon ({})'.format(__name__) + } + self.set_state(entity_id, state = str(fonvizina_trash_balance), attributes = attributes) + + fonvizina_kladovka_balance = self.to_balance(payment_amounts[1]['service_to_pay']) + if 'fonvizina_kladovka_balance' in entity_ids: + entity_id = entity_ids['fonvizina_kladovka_balance'] + attributes = { + 'unit_of_measurement': '₽', + 'icon': 'mdi:bank-transfer', + 'date': datetime.now().strftime('%d.%m.%Y'), + 'address': payment_amounts[1]['address'], + 'friendly_name': 'Баланс Кладовка', + 'description': 'Created and updated from appdaemon ({})'.format(__name__) + } + self.set_state(entity_id, state = str(fonvizina_kladovka_balance), attributes = attributes) + + def get_auth_session(self, phone, password): + data={ + 'AUTH_FORM': 'Y', + 'TYPE':'AUTH', + 'backurl': '/', + 'USER_LOGIN': phone, + 'USER_PASSWORD': password + } + r = requests.post('https://lkcab.ru/?login=yes', data=data, verify=False, allow_redirects=False) + print(r.cookies) + return r.cookies['PHPSESSID'] + + def get_payment_amounts(self, session, accounts): + cookies = dict(PHPSESSID=session) + results = [] + for account in accounts: + url = 'https://lkcab.ru/?accountID={}'.format(account) + r = requests.get(url, cookies=cookies, verify=False) + + result = {} + result['account'] = account + + doc = BeautifulSoup(r.content, 'html.parser') + address = doc.find("div", string="Вы собственник по адресу:").parent.find_all('div')[1].text + result['address'] = address + + service_to_pay = doc.find('div', string="ЖКУ, к оплате:").parent.find_all('div')[1].text.replace(' Р.', '') + result['service_to_pay'] = service_to_pay + + trash_to_pay = '0' + trash_to_pay_item = doc.find('div', string="Обращение с ТКО, к оплате:") + self.log(trash_to_pay_item) + if not trash_to_pay_item is None: + trash_to_pay = trash_to_pay_item.parent.find_all('div')[3].text.replace(' Р.', '') + result['trash_to_pay'] = trash_to_pay + results.append(result) + return results + + def send_counters_callback(self, kwargs) -> None: + if 'constraint' in self.args and not self.constrain_input_boolean(self.args['constraint']): + return + current_day = dt.datetime.now().strftime("%a").lower() + if current_day != "sun": + self.log(f'Today is {current_day}, but we run only on sunday.') + return + + self.log('sending counters....') + session = self.get_auth_session(self.login, self.pwd) + self.send_counters(session) + return + + def send_counters(self, session) -> None: + cookies = dict(PHPSESSID=session) + account = self.accounts[0] + url = 'https://lkcab.ru/?accountID={}'.format(account) + r = requests.get(url, cookies=cookies, verify=False) + + url = 'https://lkcab.ru/counters/' + r = requests.get(url, cookies=cookies, verify=False) + doc = BeautifulSoup(r.content, 'html.parser') + bitrix_session = doc.find("input", id="sessid").get('value') + self.log('session: {}'.format(bitrix_session)) + + data = { + 'action':'set_meters', + 'sessid': bitrix_session, + } + needToSend = False + if 'heat_total' in self.args: + needToSend = True + value = self.get_state(self.args['heat_total']) + if value != None: + data['indiccur1[294174]'] = value + + if 'counter_cold_outer' in self.args: + needToSend = True + value = self.get_state(self.args['counter_cold_outer']) + if value != None: + data['indiccur1[294175]'] = value + + if 'counter_hot_outer' in self.args: + needToSend = True + value = self.get_state(self.args['counter_hot_outer']) + if value != None: + data['indiccur1[294173]'] = value + + if needToSend: + self.log('sending: {}'.format(data)) + r = requests.post("https://lkcab.ru/counters/", cookies=cookies, data=data, verify=False) + self.notify_tg("Показания отправлены в юнисервис. {}".format(data)) + self.log('done.') + + def notify_tg(self, msg): + if not 'notify' in self.args: + return + extra_data = {'parse_mode': 'html'} + self.notify(msg, name = self.args['notify'], data=extra_data) diff --git a/appdaemon/settings/apps/sensors/uniservice.yaml b/appdaemon/settings/apps/sensors/uniservice.yaml new file mode 100644 index 0000000..d835053 --- /dev/null +++ b/appdaemon/settings/apps/sensors/uniservice.yaml @@ -0,0 +1,22 @@ + +################################# +# MOS.RU DATA RETRIEVER # +################################# +uniservice_epd_sensor: + class: EpdBalanceSensor + module: uniservice + login: !secret uniservice_login + pwd: !secret uniservice_pwd + accounts: !secret uniservice_accounts + entity_ids: + fonvizina_epd_balance: sensor.fonvizina_epd_balance + fonvizina_trash_balance: sensor.fonvizina_trash_balance + fonvizina_kladovka_balance: sensor.fonvizina_kladovka_balance + heat_total: sensor.heat_total + counter_cold_outer: sensor.counter_cold_outer + counter_hot_outer: sensor.counter_hot_outer + notify: telegram_monster + global_dependencies: + - globals + + \ No newline at end of file diff --git a/appdaemon/settings/apps/test/eventMonitor.py b/appdaemon/settings/apps/test/eventMonitor.py new file mode 100644 index 0000000..e1076e5 --- /dev/null +++ b/appdaemon/settings/apps/test/eventMonitor.py @@ -0,0 +1,30 @@ +import appdaemon.plugins.hass.hassapi as hass +# from automation import Automation # type: ignore + +""" +Monitor events and output changes to the verbose_log. Nice for debugging purposes. +Arguments: + - events: List of events to monitor +""" +class Monitor(hass.Hass): + def initialize(self) -> None: + # super().initialize() + self.listen_event_handle_list = [] + + events = self.args['events'] + + if events != None: + for event in self.split_device_list(self.args["events"]): + self.log('watching event "{}" for state changes'.format(event)) + self.listen_event_handle_list.append(self.listen_event(self.changed, event)) + if len(self.listen_event_handle_list) == 0: + self.log('watching all events for state changes') + self.listen_event_handle_list.append(self.listen_event(self.changed)) + + def changed(self, event_name, data, kwargs): + self.log(event_name + ': ' + str(data)) + + def terminate(self): + for listen_event_handle in self.listen_event_handle_list: + self.cancel_listen_event(listen_event_handle) + \ No newline at end of file diff --git a/appdaemon/settings/apps/test/eventMonitor.yaml b/appdaemon/settings/apps/test/eventMonitor.yaml new file mode 100644 index 0000000..eaeef82 --- /dev/null +++ b/appdaemon/settings/apps/test/eventMonitor.yaml @@ -0,0 +1,6 @@ +# eventMonitor: +# module: eventMonitor +# class: Monitor +# global_dependencies: +# - automation +# events: \ No newline at end of file diff --git a/appdaemon/settings/apps/test/ir/zanussi_ac.json b/appdaemon/settings/apps/test/ir/zanussi_ac.json new file mode 100644 index 0000000..10eed1b --- /dev/null +++ b/appdaemon/settings/apps/test/ir/zanussi_ac.json @@ -0,0 +1,468 @@ +{ + "manufacturer":"ROYAL", + "supportedModels":[ + "RC-G25HN" + ], + "supportedController":"Broadlink", + "commandsEncoding":"Base64", + "minTemperature":16, + "maxTemperature":31, + "precision":1, + "operationModes":[ + "heat", + "cool", + "dry", + "fan_only" + ], + "fanModes":[ + "silent", + "low", + "mid", + "high", + "turbo", + "auto" + ], + "commands":{ + "off":"JgDMAWA0ESMRIxEKEAsQDA8kEAoRDA8kECQQChEkEAoRChEjESMRChEjESMRChEKECQRChAMDwoRJBAKEQoRChEKEQoRChALEAoRChEKEQoRChEKEAoRChEKEQoRChEKEAsQJBALEAoRChEKEQoRChEKEAsQJBAKEQoRChEKEQoRChEKEAsQJBAkEAoRChEKEQoRCxAKEAsQCxAKEQoRChEKEQoRChALEAoRChEKEQoRChEKEQoQCxAKEQoRChEKEQoRChALEAoRChEKEQoRChEKEQoQCxAKEQoRChEjEQoRIxEjESMRAAj9ZTQQJBAkEAsQCxAKESQQChEKESMRIxEKESMRChALECQQJBEKECQQJBALEAoRJBAKEQoRJBAKEQoRChALEAsQCxAKEQoRChEKEQoRChALEAoRChEKEQoRChEKEAsQJBAKEQoRJBAkEAoRChEKEQoRChEKECQQJBAkEAsQCxALEAoRChEkECQQChEKEAsQCxAKEQoRChEKEQoRChEKEAsQCxAKEQoRDA8KEQoQCxAKEQoRChEKEQoQCxALEAoRChEKEQoRChALEAsQCg8NEAoRChEjEQoRIxEKEQoQCxALECQQJBAADQU=", + "heat":{ + "silent":{ + "16":"JgDMAV02ECQPJQ8MDwwPDA4mDwwODQ4mDiYODQ4mDg0PDA4mDyUODQ4mDiYODQ8LDyUPDA8MDwwOJg4NDg0ODQ4NDwsPDA8MDwoQDQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDiYOJg4NDg0ODQ4MDwwPDA4NDiYODQ4NDgwPDA8MDwwPDA4NDg0OJg8lDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4KEQwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPChEMDwwPDA4NDg0ODQ4lEAsPDA8lDyUPAAj+ZDYPJQ4mDg0ODQ4NDiYODA8MDyUQJA8MDyUPDA4NDiYOJg4NDiYOJg4NDg0OJg4NDg0OJg4MDwwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDgoRDQ4NDgwPJQ8MDwwPJQ8MDwwOJg4NDg0PDA4NDgwPDA8MDyUPJQ8lDyUPDA8MDwwODQ4NDiYODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4mDiYPJQ4NDiYPDA4NDiYOJg4ADQU=", + "17":"JgDMAV42DiYPJQ8MDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA4mDyUPDA8lDyUPDA8JESYODQ4NDg0OJg4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA4NDwwODQ4NDg0ODQ8LDyUPJRAJEQkSDA4NDg0ODQ4NDiUPDA8MDwwODQ4NDg0ODQ4MDwwPJQ8lDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwODQ4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8lDwwPDA4mDyUPAAj+YzYPJQ8lEAsPDA8MDyUPDA4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4NDg0OJg4MDwwPJRALDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg8MDg0OJg4NDg0ODQ4MDwwPDA4NDg0OJg4mDiYODQ4NDg0ODA8MDyUPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8lEAsPJQ8MDyUPDA4NDiYOJg8ADQU=", + "18":"JgDMAV42DyUOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiUPDA8MDwwPJQ8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDiYOJg4NDg0ODA8MDwwPDA8MDiYODQ4NDg0ODQ4NDgwPDA8MDwwOJg4mDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODg0NDg0ODQ4NDwwODA8MDg0ODQ8MDgwPDA8MDg0ODQ4NDg0ODA8lDwwPDA8lDyUPAAj+YzYPJg4mDg0ODA8MDyUQCw8MDiYOJg4NDiYODQ4NDiYPJQ8MDiYOJg4NDg0PJQ4NDgwPJg4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPJQ8MDwwOJg8MDg0OJg4NDg0ODQ4MDwwPDA4NDiYODQ4mDyUODQ4NDgwPDA8MDyUPDA4NDgoRDQ4NDg0ODQ4MEAsPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8lDyUPDA8MDyUPDA4NDiYOJg4ADQU=", + "19":"JgDMAV02DyUPJQ8MDwwPDA8lDwwODQ4mDiYODQ4mDg0ODQ4mDiYODQ4mDiYODQ4MDyUPDA8MDwwPJQ8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDiYOJg4KEQ0ODA8MDwwPDA4NDyUPDA4NDg0ODQ4NDgwPDA8MDg0OJg4mDg0ODQ4MDwwPDA8MDg0ODQ4NDwwODA8MDwwPDA4NDg0ODQ4KEQoRDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4mDg0ODQ4mDiUPAAkAYjYOJg4mDwwODQ4KESYODA8MDyUPJQ8MECQTCBIJDiYOJg8MDiYOJg8MDg0OJg4NDg0OJg4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQoRJQ8MDwwPJQ8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwODQ4mDiYPDA4NDg0ODQ4NDiYODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MEAsPDA4NDwwODQ4mDgwPDA8MDyUPDA8MDiYOJg4ADQU=", + "20":"JgDMAV82DiYOJg4NDg0OChElDwwPDA8lDyUPDA8lDwwODQ4mDiYODQ4mDiYODQ4MDyUPDA8MDwwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA8MDgoRDQ4NDg0ODA8MDwwODQ4NDiYOJg4NDgwPDA8MDwwPDA4NDiYODQ4NDgwPDA8MDwwODQ4NDg0OJg4mDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8lDwwPDA4mDiYOAAj/YzYPJQ8lDwwPDA8MDyUPChANDiYOJg8MDiYODA8MDyUPJg4MDyYOJQ8MDwkSJQ8MDg0OJg4NDwwODQ4KEQwPDA8MDwwODQ4NDhALDA8MDwwODQ4NDg0OJg4NDwwOJg4KEQwPJQ8MDwwODQ4NDgoRDA8MDyUPJQ8MDyUPDA8MDg0ODQ4NDiYODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDwsPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4mDiYOJg4mDwwODQ4NDiUPJQ8ADQU=", + "21":"JgDMAV82DyUOJg4NDg0ODA8lDwwPDA8lDyUPDA8lDg0ODQ4mDiYODQ4mDiYODQ4MDyYODQ4MEAsPJRALDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDg0ODQ4NDiUPJg8LDwwPDA4NDg0ODQ4NDiYODQ4NDgwPDA8QCw4MDQ4NDg0OJg4mDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4mDg0ODQ4mDiYOAAkAYjYPJQ4mDg0ODQ4NDiYODQ4MDyUPJQ8MDyUQCw8MDyUPJQ4NDiYOJg4NDg0OJg4NDg0OJQ8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDwwOJg4NDg0ODQ4NDgwPDA8MDwwOJg4NDiYODA8MDwwPDA8MDiYODQ4NDg0ODA8MEAsPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDgoRDQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDg0OJg8lDwkRDQ4NDiYOJg8ADQU=", + "22":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYOCBQlDiYODQ4MDyUPDA8MDwwOJg4NDg0ODQ8MDgwPDA8MDwwOChENDg0ODA8MDwwPDA4NDg0ODQ4NDiUPJQ8MDwwPDA8MDg0ODQ4NDiYPBxMMDwwPDA8MDg0ODQ4NDg0OJg8lDwsPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDg0ODQ4mDiYOAAkAYzUOJg4mDwwODQ4NDiYODA8MDyUPJQ8MDyUPDA8MDiYOJg8MDiYOJg4NDg0OJg4NDg0OJg8LDwwPCRIMDg0ODQ4NDg0OChEMDwwPDA4NDg0ODQ4NDgwPJg4MDwwOJg8MDg0OJg4NDg0ODQ4KEQwPDA8MDyUPDA4NDiYODQ4NDgwPDA8MDiYPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDBAkDyUPDA8lDwwODQ4NDiYOJg8ADQU=", + "23":"JgDMAV82DyUOJg4NDg0ODQ4lDwwPDA8lDyUPDA8lDwwODQ4mDiYODQ4mDiYODQ4NDiYODQ4NDgwPJQ8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0OChEMDwwPDA8MDiYOJg4NDg0ODQ4NDgwPChEMDyUPDA4NDg0ODQ4MDwwPDA8MDwwPJQ4mDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4mDwwODA8lDyUPAAj+ZDYOJg8lDg0ODQ4NDiYODQ4MDyUPJQ8NDiYODA8MDiYOJg8MDiYOJg8MDg0PLwQWBQ0OJg8LDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPJg4MDwwPJQ8MDwkRJg4NDg0ODQ4NDgwPDA8MDwwPDA4NDiYODQ4NDgwPDA8MDyUPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODQ4mDgwPDA8lDwwPDQ4MDiYOJg4ADQU=", + "24":"JgDMAV42DyUOJg8MDg0ODQ4mDg0ODQ4mDiYODQ8lDg0ODQ4mDiYOFAclDyUPDA8MDyUPDA4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDyUPJQ8MDg0ODQ4NDg0ODQ4NDiUPDA8MEAsPDA4NDg0ODQ4MDwwPJQ8lDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODwwMDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4KEQ0ODQ4NDgwPDA8MDwwODQ4mDg0ODQ4lDyYOAAj/YzYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8MDyUPDA8MDyUPJQ8MDiYPJQ8MDg0OJg8MDg0OJQ8KEQwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPJQ8MDwkRJg8MDg0OJg4NDg0PCw8MDwwPDA4NDiYOJg4mDwwODQ4NDg0ODQ4MDyUPDA8MDwwODg0NDgwPDA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4KEQwPDA8lDyUPJg4NDgwPDA8MDiYOJg4ADQU=", + "25":"JgDMAWA0ECQQJBAKEQoRChEjEQoRChEjESMRCRIjEQkSCREkECQQChEjESQQChEKESMRChEKEQkSIxEJEQoRChEKEQoRCRIJEgkRChEKEQoRCRIJEgkSCREKEQoRChEJEiMRIxEJEgkRChEKEQoRChEKESMRCRIJEgkRChEKEQoRCRIJEgkSIxEjEQkRChEKEQoRCRIJEgkRChEKEQoRChEJEgkSCREKEQoRChEJEgkSCRIJEQoRChEKEQkSCRIJEQoRChEKEQoRCRIJEgkRChEKEQoRCRIJEgkSCREkEAoRChEjESMRAAj8ZTQQJBAjEQoRCRIJEiMRCREKFCEQJBAKEyIQChEKESMRIxEJEiMRIxEJEgkRJBAKEQoRJBAKEQoRCRIJEgkRChEKEQoRChEJEgkSCREKEQoRChEJEgkSIxEJEgkRJBAKEQoRJBAKEQoRChEJEgkSCREKEQoRIxEkEAoRChEJEgkSCREKESQQChEKEQkSCRIJEgkRChEKEQoRCRIJEQoRChEKEQoRCRIJEgkRChEKEQoRCRIJEgkSCREKEQoRChEJEgkSCREKEQoRChEKEQkSCRIjEQkSIxEJEQoRChEKESMRIxEADQU=", + "26":"JgDMAV42DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA8lDwwPDA4mDiYODQ4mDyUPDA8MDiYODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4KEQwPDA8MDyUPJQ8MDg0ODQ4NDgwPDBALDyUPDA4NDg0ODQ4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4KEgkRDA8MDwwPDA4NDgoSDA4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDgoRDQ4mDg0PDA4mDiYOAAkAYzUOJg4mDg0ODQ4NDiYPCw8MDyUPJQ8MDyUPDA8MDiYPJQ8JESYPJQ8MDwwOJg4NDg0OJg4NDg0ODA8MDwwODQ4NDwwODA8MDwwPDA4NDg0ODQ4NDgwPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4NDwsPDA8MDyUPDA8lDwwODQ8MDg0ODA8MDyUPDA8MDg0ODQ4NDgwPDBALDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8lDyUPDA8MDwwPDA4NDiYOJg4ADQU=", + "27":"JgDMAV02DyYOJg8MDgwPDA8lDwwPDA4mDyUPDA8lDwwPDA4mDiYODQ4mDiYODQ4NDiYODQ4MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDiYOJg4NDgoRDA8MDwwPDA4NDyUODQ4NDg0ODQ4MDwwPDA8MDg0OJg4mDg0ODQ4NDgwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDwsPDA8MDwwODQ4NDg0ODA8lDwwPDA8lDyUPAAkAYjUPJQ8mDg0OChEJEiUQCw8MDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJg4NDg0OJg4NDg0ODA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPJQ8MDwwPJQ8MDg0OJg4NDgoSDA4MDwwPDA4NDg0ODQ4mDg0ODA8MDwwPDA8MDiYPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8lDwwODQ8MDg0ODQ4MDyUPJQ8ADQU=", + "28":"JgDMAV42DyUPJQ8MDwwODQ4mDg0ODQ4lDyYODA8lDwwPDA8lDyUPDA8lDyUPDA4NDiYODQ4NDg0OJg4NDgwPDA8MDwwODQ8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwODQ4NDg0ODA8MDyUPDA8MDg0ODQ4NDgwPDA8MDwwOJg4mDwwODQ4NDwwODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDg0ODQ8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwoRDA8MDg0ODQ4NDgwPDA8MDg0ODQ4mDg0ODA8lDyUPAAj/YzUQJA8lDwwPDA8MDyUPDA8MDyUPJQ8MDiYODQ4NDiYOJg4NDiYOJg4NDwwOJg4MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0OJg4NDgwPJg4NDgwPDA8MDwwODQ4NDiYOJg8MDgwPDBALDwwODQ4NDiYPDA4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODBALDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4mDiYOJg4mDiYOJg4mDwwOJg4ADQU=", + "29":"JgDMAV82DiYOJg4NDgwPDA8lDwwPDA8lDiYPDA4mDwwODQ4mDiYODQ4mDiYODQ4NDyUPDA4MDwoRJQ8MDwwODQ4NDgoRChEMDwwPDA4NDg0ODQ4NDwsPDA8MDwwODQ4NDiYPJQ4NDg0ODQ4MDwwPDA4NDiYODQ4NDg0PCw8MDwwPDA8MDg0OJg4mDg0ODQ4NDgwPDA8MDwwODQ4NDg4NDQ4NDgwPDA8MDwwODQ8MDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ8MDg0ODA8MDwwPDA4NDg0ODQ4mDgwPDA8lDyYOAAj+YzYPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDgwPJQ8MDwwPJQ8MDg0OChENDg0ODA8MDwwPDA4NDg0ODQ4NDwwODA8MDwwOJg4NDg0OJg4NDg0OJg4KEQwPDA8MDwwODQ4KEQ0OJg4NDwsPDA8MDwwODQ8MDiYODQ4NDgwPDA8MDg0ODQ4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwQCw8MDwwODQ4NDg0ODQ4NDgwQDA4KEQwODQ4NDg0ODA8MDwwODQ4mDg0OJg4mDiYOJg4mDg0OJg4ADQU=", + "30":"JgDMAV42DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDg0OCxAmDiYODQ4mDiYODQ4NDiYODA8MDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4IEwoRDA8MDwwPDA4NDiYOJg8MDg0PDA4MDwwPDA8MDiYODQ4NDg0ODQ4NDg0ODA8MDwwPJQ4mDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8JEQ0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDg0ODA8lDyUQAAj9ZDYOJg4mDg0ODQ4NDiYODQ4NDiYOJg4NDiUPDA8MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0OJg4NDgwPJQ8KEQwPJQ8MDwwPDA8MDg0ODQ4NDiUPDA8MDwwODQ4NDg0ODQ4NDiYODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0OChENDgwPDA8MDwkRDQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDiYODQ4mDyUPJQ4mDg0OJg4ADQU=", + "31":"JgDMAV82DiYPJQ8MDwwPDA4mDwwODQ4mDiYODQ4mDg0ODQ8lDiUPDA8lDyUPChEKESUPDA4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4NDiYOJg4NDgwPDA8MDg0ODQ4NDiYODQ4MDwwPDA8MDg0PDA4NDg0OJQ8mDg0ODQ4MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ8LDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8lDwwPDA4mDiYPAAj/YzYOJg4mDg0OChEMDyUPDBALDyUOJg8MDyUPDA4NDiYOJg4NDiYOJg4NDg0OJg4NDg0OJg4MDwwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDgwPJQ8MDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDyUODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOChENDg0ODQ4MDwwPDA8MDg0ODQ4NDgoRDA8MDwwPDA4NDg0ODQ4MDwwPChElDwwPDA4mDiYOJg8lDwwOJg8ADQU=" + }, + "low":{ + "16":"JgDMAV42DyUPJQ8MDwkSDA4mDwwPDA4mDiYODQ4mDg0ODQ4mDiYODA8lDyUPDQ4MDyUPDA8MDwwOJg4NDg0ODQ4NDgwPDBALDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0OJg4MEAwODA8MDwwPDA4NDiYODQ8MDgwPDA8MDg0ODQ4NDgwPJQ8lDwwPDA8MDwwODQ4NDg0ODQ4NDgoRDA8MDwwODQ4NDg0ODQ4MDwwPCRENDg0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwQCw8lDwwOJg8MDiYOAAj/YzYPJQ8lDwwPDA4NDiYODQ4NDiYOJg4NDiYODQ4MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4MDwoRDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDg0OJg4MDwwPJQ8MDwkRDQ4NDg0ODA8MDyUPJQ8mDiYOChEMDwwPDA4NDiYODQ4NDgwPDA8MDwwODQ8MDg0ODQ4KEQwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0PDA4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDyUPJQ8MDyUODQ4NDiYOJg4ADQU=", + "17":"JgDMAV82DiYPJQ8MDg0ODQ4mDg0ODA8lDyUPDA8lDwwPDA8lDyUPCREmDiYODQ4NDiYODQ4NDgwPJQ8MDwwPDA4NDg0ODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDg0OJg4NDg0ODQ4MDwwPDA4NDiYODQ4NDg0ODQ4NDg0ODA8MDwwOJg4mDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0OChIlDgwPJQ8MDyUPAAj/YzYOJg4lDwwPDA8MDyUPDA8MDyUPJQ8MDiYODQ4NDiYOJg8MDiYOJg4NDgwPJQ8MDwwPJQ8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4KEQwPDA8MDwwPJQ4NDg0OJg4NDg0OJQ8MDwwPDA8MDg0ODQ4NDg0OJg4mDyUODA8MDwwPDA8MECQODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4mDg0OJg4NDiYODQ4NDiYOJg4ADQU=", + "18":"JgDMAV82DiYOJg8MDg0ODQ4mDg0ODQ4lDyUPCxAlDwwPDA8lDyUPDA8lDyUPDA8MDiYODQ4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8IEg0OJg4NDwwODQ4MDwwPDA8MDyUPDA4NDg0ODQ4MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0OChENDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDg0ODQ4mDg0OJg4NDiYOAAj/YzYOJg8lDwwODQ4NDiYPDA4NDiUPJg4MDyUPDA8MDyUPJQ8MDiYPJQ8MDg0PJQ4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4NDwsPDA8MDg0ODQ4NDg0OJQ8KEQwPJQ8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA8lDyUPDA8MDg0ODQ4NDiYODQ4KEQwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4NDg0ODA8MDwwODQ4NDwwODA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4mDiYODQ4NDiYODQ4NDiYOJg4ADQU=", + "19":"JgDMAV82DiYOJg4NDgwPDA8lDwwODQ4mDiYODQ4mDwwODQ4mDiYODQ4mDiYODQ4MDyUPDA8MDwwOJg4NDg0ODQ4NDg0PCw8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0OJg8LDwwPDA8MDwwODQ4NDiYODQ4NDgoRDA8MDwwPDA4NDg0OJg8lDgoRDQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4lDwwPJQ8MDyUPAAj+YzYPJQ8lEAsPDA8MDyUPDA4NDiYOJg4NDiYPDA4KEiUOJg4NDiYOJg4NDg0OJg4NDgwPJRAMDgwODQ8JEQ0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwOJg4NDg0OJg4NDg0OJg4MDwwPDA8MDwwODQ4NDwwODQ4mDiYODQ4NDgwPDA4NDiYODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDwwODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8lDwwODQ4NDiYODQ4NDiYOJg4ADQU=", + "20":"JgDMAV82DiYOJg4NDg0ODQ4lDwwPDA8lDyUPDA8lDwwPDA4mDiYODQ4mDiYPDA8MDyUODQ4NDg0OJg4MDwwPDA8MDg0ODQ4MDwwPDA8MDwkRDQ4NDg0ODA8MDwwPDA4NDg0OJg4NDg0ODA8MDwwPDA8MDyUPDA4NDg0ODQ4MDwwPDA8MDwwOJg4mDg0ODQ4NDgwPDA8MDwkRDQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDwsPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDg0OJg4NDyUOAAj/YzYOJg4mDg0ODQ4KESUPDA8MDyUQJA8MDyUPDA8MDiYPJQ8MDiYPJQ8MDwwOJg4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0OJg4NDgwPJQ8NDgwPJQ8MDg0ODQ4NDgoRDBAMDiUPJQ8MDyUPDA4NDg0ODQ4NDiYODQ4NDgoSCw8MDwwODQ4NDgwPDBALDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4mDiYPJQ4mDg0OChENDiYOJg4ADQU=", + "21":"JgDMAV82DyUPJQ8MDg0ODQ4mDg0ODQ4mDiYODA8lDwwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDiUPDA8MDwwODQ4NDg0PDA4NDgwPJQ8lDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDwsPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8lDwwOJg4NDiYOAAkDXzYPJQ8mDgwPDA8MDyUPDA8MDiYOJg4KESYODQ4NDiYOJg4NDiYOJg4NDg0OJg8MDg0OJg4MDwwPDA4NDg0PDA4NDgwPDA8MDwwODQ4NDg0ODRQHDg0OJQ8MDwwPJQ8MDwwOJg4NDg0ODQ4NDg0ODA8MDwwPJQ8KECYODQ4NDg0ODQ4MDyUPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDwwODQ4mDg0OJg4mDwwODQ4NDiYOJQ8ADQU=", + "22":"JgDMAWA1DiYOJg4NDg0ODA8lDwwPDA4mDyUPDA4mDgoRDQ4mDiYODQ4mDiYODQ4NDiYODQ4NDgwPJQ8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDg0PCREMDwwPDA4NDiYODQ4NDgwPDA8MDg0ODQ8MDg0OJg4mDg0ODQ4NDgwPDA8MDg0ODQ4NDwsPChEMDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8KEQwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDBAkDwwPJQ8MDyUPAAj/YzYOJg4mDg0ODQ4MDyUQCw8MDyUPJQ8MDyUPDA4NDiYOJg4NDiYOJg4NDg0OJg4NDwsPJQ8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4MDwwODQ4NDiYODQ4NDiYODQ4MDwwPDA4NDiYODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8lDyUPDA8lDg0OChENDiYOJg8ADQU=", + "23":"JgDMAV82DiYOJg4NDg0PCw8lDwwPDA8lDyUPDA8lDwkRDQ4mDiYODQ4mDiYODQ4NDiYODQ4MDwwPJQ8MDwwODQ4NDg0PDA4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDg0ODA8MDwwODQ4NDiYODQ4NDwwODA8MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODg0MDwwPCRIMDg0ODQ4NDgwPChEMDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDg0OJQ8KESUPAAj/YzYOJg4mDg0ODA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDgwPJQ8MDwwPJQ8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg4NDggTJg4NDg0OJg4NDg0OChEMDwwODQ4NDgoRDQ4NDiUPDA8MDwwODQ4NDiYODQ4NDgwPChEMDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4KEQ0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPCREmDgoRDQ4mDg0ODQ4NDiYOJg4ADQU=", + "24":"JgDMAV42DyUPJQ8MDwoRDA8lDw0ODA8lECQODQ4mDgoRDQ4mDiYODA8lDyYODQ4MDyYODA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0OJg4NDgwPDA8MDg0ODQ4NDiYODA8MDwwPDA4NDg0ODQ4NDg0OJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDgoRDQ4MEAsPDA8MDg0ODQ4NDg0ODA8MDwwPDA8lDwwOJg4NDiYOAAj/YzYPJQ8lDwwPDA4NDiYODQ4NDiYOJg4MDyYODA8MDyUPJQ8IEyUPJQ8MDwwPJQ8MDwwOJg4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDg0OJQ8MEAsPJQ8MDwwPDA4NDg0ODQ4NDiUPJQ8lDwwPDA8MDg0ODQ4NDiYODQ4KEQwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4mDiYOJg4NDg0ODQ4MDyUPJQ8ADQU=", + "25":"JgDMAV82DyUOJg4NDg0OChElDwwPDA8lDyUPDA8lDwwPDA4mDiYODQ4mDiYPDA4NDiYODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDg0ODQ4MDwoRDA8MDg0ODQ4MDwwPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDiYODQ4KEQ0ODQ4MDwwPChEMDg0OJg4mDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4KEQwPDA4NDg0ODQ4mDgwPJg4NDiYOAAj+ZDYPJQ8lDgoRDQ4MDyUPDA8MDyUPJg4MDyUPDA8MDyUPJQ8MDiYOJg4KEQ0OJg4NDg0OJg4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0OJg4MDwwPJRALDwwOJg4NDg0ODQ4MDwwPDA8MDwwOJg4mDg0ODQ4NDg0ODQ4MDyYODA8MDwwPDA8MDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgoRDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4mDg0OJg4KEQwPDA8MDyUOJg4ADQU=", + "26":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA8lDwwPDA8lDyUPDA8lDyUPDA8MDiYOChENDg0OJg4NDgwPDA8MDwwODQ8MDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwOJg4NDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODQ4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPCRENDg0ODQ4NDgwPDA8MDg0ODQ4mDg0OJg4NDiYPAAj+YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg4NDiYODQ4NDiYOJg4MDyUPJQ8KEQwPJQ8MDwwPJQ8MDg0ODQ4NDg0ODA8MDwwODQ4KEQ0ODQ4MDwwPDA8MDg0OJg4NDg0OJg8MDgwPJQ8MDwwPDA8MDg0ODQ4NDiYODA8mDgwPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwkRDQ4NDg0ODQ4NDg0ODA8MDwwPDA4NDgoRDQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8lDyUPDA8MDg0ODQ4NDiYOJg4ADQU=", + "27":"JgDMAV81DyYOJg4NDgwPDA8lDwwPDA4mDiYOChEmDg0ODQ4lDyYODQ4mDiYODA8MDyUPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPJQ8MDwwODQ8MDg0ODQ4MDyUPDA8MDwwODQ4NDg0ODQ4NDgwPJQ8lDwwPDA4NDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDg0ODA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0OCRIMDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4mDg0OJg4NDiYOAAj/YzYOJg4mDwwODQ4NDiYODQ4MDyUPJQ8MDyYODA8MDyUPJQ8MDyUPJQ8MDwwOJg4NDg0OJg4NDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPJQ8MDwwPJQ8MDwwOJg4NDg0ODQ4NDgwPDA8MDwoRDA4mDwwODQ8MDg0ODA8MDyUPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8lDwwPDA4NDg0PDA4MDyUPJQ8ADQU=", + "28":"JgDMAV42DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODA8lDyUPDA8lDyYODQ4MDyUPDA8MDwwOJg4KEQ0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0ODA8KEQwPJQ8KEQwPDA4NDg0ODQ4NDiYODA8MDwwPDA4NDg0ODQ4MDwwPJQ8lDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4KEQwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA8lDwwOJg8MDiYOAAj+ZDYOJg8lDg0ODQ4NDiYODQ4MDyUPJQ8MDyYODA8MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0OJg4MDwwPJQ8MDg0OJg4NDgoRChENDgwPDA8MDyUPJQ8MDg0ODQ4NDg0ODA8MDyUQCw8MDg0ODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4NDgwPDA8MDwwODQ4KEQ0ODQ4mDiYOJg4mDiYOJg4mDg0OJg4ADQU=", + "29":"JgDMAV82DiYOJg8MDwwODA8lDwwPCRIlDyUQCw8lDwwODQ4mDyUPDA4mDiYODQ4NDiYODQ4MDwwPJQ8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwOJg4NDg0ODQ4NDgwPDA8MDiYOCBMNDg0ODA8MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDwwODQ4NDg0PDA4MDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4mDg0OJQ8MDyUPAAj/YzYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8MDyUPDA4NDiYOJg8MDiYPJQ4NDg0OJg4NDgwPJQ8MDwwPDA8MDwwOChENDg0ODA8MDwwPDA4NDg0ODQ4MDwwPJRALDwwPJRALDwwPJQ8MDg0ODQ4KEQwPDA8MDwkRJg4NDwwODQ4NDgwPDA8MDyUPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDwsPDA8MDgoRDQ4NDgwPDA8lDwwPJQ8mDiYPJQ4mDwsPJg4ADQU=", + "30":"JgDMAV42DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDwwODA8lDyUPDA8lDyYODQ4MDyUPDA8MDwwPJQ4NDg0ODQ4MDwwPChEMDg0ODQ4NDgwPDA8MDwwPDA4NDg0OChILDwwPJQ8MDg0OChENDg0OChEMDyUQCw8MDg0ODQ4NDg0OCBMMDwwPJQ8lDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8KEQwODQ4NDg0ODQ4KEQwPDA8MDwwODQ4KEQ0ODQ4KEQwQCw4NDg0ODQ4KEgsPDA4NDg0ODQ4mDg0OJg4KESYOAAj+YzYPJQ8mDg0ODA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwQJA8JEQ0ODQ4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0OJQ8MDwwPDA8MDg0ODQ4NDiYODA8MDwwPDA4NDg0ODQ4NDiYODQ4NDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4mDiYODQ4mDiYOJg4mDg0OJg4ADQU=", + "31":"JgDMAV81DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lDyUPDA8lDyUPDA8MDyUPDA4NDg0OJg4NDg0OChEMDwwPDA4NDg0OCBMNDgwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPDA4NDg0ODQ4NDiUPDA8MDwwODQ8MDg0ODA8MDwwPJQ8lDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwQCw8MDwwODQ4NDg0ODA8MDwwPCRENDg0ODQ4NDgwPDA8MDwwODQ4mDg0OJg4KESYOAAj+ZTUOJg4mDg0ODQ4NDiYODA8MDyUPJQ8MDyUPDA8MDiYOJg4NDiYOJg8JEQ0PJQ4NDg0OJg4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwQJA8MDwwPJQ8MDwwOJg4NDg0ODQ4NDgwPDA8MDwkRDQ4NDg0ODQ4MDwwPDA4NDiYODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4mDwwODQ4mDiYOJg4mDgoRJg4ADQU=" + }, + "mid":{ + "16":"JgDMAV42DyYOJg4NDgwPDA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiYODA8MDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0OJg4NDgwPDA8MDwwODQ4NDg0OJg4NDg0ODA8MDwwPDA4NDgoRJg4mDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4mDg0OJg4mDiYOAAj/YzYOJg4mDwwODQ4NDiYODQ8LDyUPJQ8MDyUPDA8MDyUPJQ8MDiYPJQ8MDgoRJg4NDg0OJw0NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0OJRALDwwPJg4NFAYTIQ8MDwwPDA4NDg0ODBALDyUPJQ8lDyUPDA8MDwwODQ4mDiYODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4JEgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0OChIkDwwPDA4mDyUODQ4NDiYOJg4ADQU=", + "17":"JgDMAV82DyUPJQ8IEwwPDA4mDwwODQ8lDiYODQ4mDg0ODA8lDyYODQ4mDiYODA8MDyUPDA8MDg0OJg8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPJQ8MDwwODQ4NDg0ODQ8LDwwPJQ8MDwwODQ4NDg0ODQ4NDgwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4mDg0OJg4mDiYOAAj/YzYPJQ8lDwwPDA4NDiYODQ4NDiYOJg4NDiYODA8KESUPJQ8MDyYOJRALDwwPJQ8MDwwOJw4MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwoRDA8MDwwOJg4NDg0OJg4NDgwPJQ8MDwwPDA4NDg0ODQ4NDg0OJQ8lDyUPDA8MDwwODQ4mDiYODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8lECQPJQ8MDyUPDA8MDyUPJQ8ADQU=", + "18":"JgDMAWA1ECQQJBAKEAwQChAkEQoRCRIjESMRCREkEAoRChEkECQQChAkESQQChEKESMRCRELEQkRJBAKEQoRChALEQkSCREKEQoRChEKEAsRChEJEgkRChEKEQoRChALEAsRIxEJEQsQChEKEQoRChALEAsQJBEJEQoRChEKEQoQCxEJEQsQJBAkEAoRChEKEQkRCxAKEQoRChEKEQoRCRIJEgkRChEKEQoRChEKEQkRCxEJEQsQChEKEQoRCREKEQoRChEKEQoRChEJEgkRChEKEAwQChEKEQoRCRIjEAoRJBAkECQQAAj8ZTQQJBAkEAoRChEKESQQChEKESMRIxEJEiMRCRIJESQQJBAKESQQJBAKEQoRJBAKEQoRIxEJEgkRChEKEQoRChEKEQkSCREKEQoRChALEQoRChEODAsQJBAKEQoRJBAKEQoRIxEKEQkRCxAKEQoRChEKESMRChEjESMRCRIJEQoRChEkECQQChEKEQoRCRIJEQoRChALEQoRChEJEgkRCxAKEQoRChALEQkRChEKEAsRChEKEQkSCREKEQoRChEKEQoRChEJEgkRChEKEQoRChEjEQkSIxEKESMRCRELDyUQJBAADQU=", + "19":"JgDMAV82DyUPJQ8MDwwPDA8lDwwODQ4mDiYODQ4mDg0ODA8mDiYODQ4lDyYODQ4MDyUQCw8MDwwOJg4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPDA8MDwwODQ4NDg0OJQ8MDwwPDA8MDg0ODQ4NDg0OJg4mDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8lDwwPJQ8lDyUPAAj/YzYOJg4mDg0ODA8MDyUQCw8MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUOJg4NDg0OJg4NDgwPJQ8MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4MDwwPDA8MDg0ODQ4mDiYODQ4NDg0ODQ4mDiYODQ4MDwkSDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ8lDiYODQ4NDiYODA8MDyUPJRAADQU=", + "20":"JgDMAV42DiYOJg8MDgwPDA8lDwwPDA8lECQPDA8lDwwPDA4mDiYODQ4mDiYODQ4NDiYODQ4NDgwPJQ8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDg0ODQ4MDwwODQ4NDg0OJg4NDg0ODQ4MDwwPDA4NDg0OJg4mDwwODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgoRDA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8lDwwPJQ8lDyUPAAj+YzYPJQ8mDg0ODA8MDyUPDA8MDyUPJQ4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJg4KEQwPJQ8NDgwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODQ4MDwwPJQ8MDwwPJQ8MDg0OJg4NDwsPDA8MDwwPDA8MDiYOJg4NDiYODQ4NDgwPDA8lDyYODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4mDg0ODQ4NDiYODA8MDyUPJQ8ADQU=", + "21":"JgDMAV82DyUOJg4NDg0ODQ4mDg0ODQ4lDyYODA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYODQ4KEQ0OJg4NDgwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDwwOJg4mDg0ODQ4NDg0OChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgoRDQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8lDwwPJQ8lDyUPAAj+ZDYOJg4mDwwODQ4MDyUPDA8MDiYPJQ8MDyUPDA8MDiYOJg4NDiYOJg4NDg0OJg8MDgwPJQ8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0OJg4NDwwODA8MDwwPDA4NDg0OJg4NDiYODQ4NDgwPDA8lDyUPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4mDiYPJQ4mDgwPDA8MDyUPJQ8ADQU=", + "22":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODA8lDyUPChElDwwPDA8lDyUPDA8lDyUPDA8MDyUPDA4NDg0OJg4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPJQ8MDwwPDA4NDg0ODQ4MDwkSJQ8MDwwPDA4NDg0ODQ4MDwwPJRAkDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPCRENDg0ODQ4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8lDwwPJQ8lDyUPAAj+ZDYOJg4mDg0ODQ4NDiYODQ4NDiUPJQ8MECQPDA8MDyUPJQ8MDyUPJQ8MDwwOJg4NDg0OJg8MDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODA8NDg0OJg4NDgwPJRALDwwPJQ8MDwwPDA4NDg0ODQ4NDiUQCw8MDyUPDA8MDg0ODQ4mDiYODQ4NDg0ODA8MDwwODQ4KEQ0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8KEQwPDA8JEQ0ODQ4NDgwQCw8MDwwPDA4NDg0ODQ4NDgwPDA8lDwwOJhAkDwwPDA8MDiYOJg8ADQU=", + "23":"JgDMAV82DiYOJg4NDg0ODQ4mDg0ODA8lDyUPDA8lDwwPDA4mDiYPDA8lDiYPDA4KESYPDA8MDwwOJQ8MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4KEQwPDA8MDwwOJg8MDg0ODQ4NDg0PCw8MDwwPJQ8lDwwODQ4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4mDg0OJg4mDiYPAAj+ZDYOJg4mDg0ODQ4NDiYODQ4MDyUPJQ8MDyUPDA4NDiYOJg8MDyUPJQ8MDg0OJg8MDg0OJg4KEQ0OFAcMDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPJg4NDgwPJQ8MDwwODQ4NDg0ODA8NDgwPDA4NDiYPDA4NDg0ODQ4mDiYODQ4KEQwPDA8MDwwOEQsMDgoRDA8MDwwPDA4NDwwODQ4NDgwPDQ4KEQwODQ4NDg0ODA8MDwwPCRENDg0ODQ4NDgwPDA8MDg0ODQ4mDyUODQ4mDg0ODQ4MDyUPJQ8ADQU=", + "24":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA4mDiYPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiYODA8MDwwPJQ8MDwwOChENDg0ODQ4NDgwPDA8MDg0ODQ4KEgsPDA8MDwoQDQ4NDg0OJg4NDg0ODQ4MDwgTDA4NDg0OJg4NDg0ODA8MDwwPDA8MDwwOJg4mDg0ODQ4NDgwPDBALDwwPDA8MDg0ODQ4NDwsPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OCBMMDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4mDwwOJg4mDyUOAAkDYDYOJg4mDgwPDA8MDyUPDA4NDiYPJQ8MDiYPDA4NDiYOJg4NDiYOJg4NDg0OJg4NDg0OJQ8MDwwPDA8MDwwPDA4NDgoRDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0OJg4NDg0ODA8MDwwPDA8MDyUPJQ8lDwkSDA4NDg0ODQ4mDiYODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ8MDgwPDA8MDwkRDQ8lDg0ODQ4mDg0ODQ4NDiUPJQ8ADQU=", + "25":"JgDMAV82DiYOJg4NDwwODA8lDwwPDA8lDyUPCRIlDwwODQ4mDiYODQ4mDiYODQ4NDiYODQ4NDgwPJQ8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0OJg4KEgwODQ4MDwwPDA8MDwwOJg8MDg0OChEMDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4KEQ0ODA8MDwwPDA4NDg0ODQ4NDg0ODQ4MDwwPDBALDg0ODQ4NDg0ODA8MDwwPDA4mDg0OJg4mDiYOAAj/ZDUPJQ8lDwwPDA8JEiUPDA4NDiYOJg4NDiYOChENDiYOJg4NDiUPJg4MDwwPJQ8MDwwOJg8MDg0ODQ4NDg0ODQ4MEAsPDA4NDg0ODQ4MDwwPDA8MDg0OJg4KEQ0OJg4NDgwPJQ8KEQwPDA8MDg0ODQ4NDgwPJQ8mDwsPDA8MDwwOChEmDiYPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ8MDg0ODA8MDwwPDA4NDg0ODQ4MDwkSChElDyUPJg4MDwwPDA8MDiYPJQ4ADQU=", + "26":"JgDMAV82DiYOJg8MDg0ODQ4mDg0ODQ4lDyYODA8lDwwPDA8lECQPDA8lDyUPDA4NDiYODQ4NDg0OJg4NDg0ODQ4MDwwPDA4NDgoRDQ4MDwwPDA8KEA0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPJg4lDwwPDA4NDg0OCBMNDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwODQ4mDg0OJg4mDiYOAAj/ZDYOJg4mDgwPDA8MDyUPDA8MDiYPJQ8MDiYODQ4NDiYOJg4NDiYOJg4NDg0OJg4MDwwPJQ8MDwwPDA8MDwwODQ4NDg0ODA8NDgwPDA4RChALDQ4MDwwPJQ8MDwwOJg4NDg0OJg4NDg0ODQ4NDgwPDA8MDyUPDA8lDwwODQ4NDg0ODQ4mDiYODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwOChENDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDg0PDA4NDg0ODA8MDwwPDA4NDgoRDQ4mDg0OJg4MDwwPDA8MDyUPJQ8ADQU=", + "27":"JgDMAV82DyUPJQ8MDwoRDA8lDwwPDA4mDyUPDA8lDg0ODQ4mDiYODQ4mDiYODQ4NDiUPDA8MDwwPJQ4NDwwODQ4NDg0ODQ4MDwwPDA4NDg0PDA4KEQwPDA8MDwwODQ4NDg0OJQ8MDwwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8lDwwPJQ8lDyUPAAj+YzYPJQ8lDwwPDA8MDyUPDA4NDiYOJg8MDiYODQ4NDiYOJg4KESYOJg4NDgwPJQ8NDgwPJQ8MDwwPDA8MDg0ODQ4NDgoRDA8MDg0ODQ4NDg0ODA8MDwwPJQ8MDg0OJg4NDg0OJg4NDg0ODBALDwwODQ4NDg0ODQ4lDwwPChEMDwwODQ4mDiYODQ4NDg0ODBALDwwPDA4KEQ0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8lDyUPDA8MDg0ODQ4NDiYOJg4ADQU=", + "28":"JgDMAWA1DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ8lDiYODQ4mDiYODQ4MDyUPDA8MDwwOJg8KEA0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDg0OJg8LDwwPDA8MDwwPDA4NDg0OJg4mDgwPDA8MDwwODQ8MDg0PDA4SCgsPDA8MDwwPDA4ODQ0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPEAsMDwwODQ4NDgwPDA8lDwwPJQ8lDyUPAAj/YzYOJg4mDg0ODQ4NDiUPDA8MDyUPJQ8KESUPDA4NDiYOJg4NDiYOJg4NDwwOJg4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwPJQ8MDg0OJg4NDwwODQ4MDwwPDA8MDyUPJQ8MDg0ODQ4ODQ0ODQ4mDiYODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODg0NDg0ODQ4NDgoRDA8MDg0ODQ4NDgwPDBALDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4mDg0PDA4NDgwPDA8MDiYPJQ8ADQU=", + "29":"JgDMAWA2DiUPJQ8MDwwPDA4mDwwODg0mDyUOChIlDwwODQ4mDiYODQ4mDiYPDA4NDiYODQ4MDw0OJQ8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0PDA4NDg0ODA8MDwwPDA4NDg0OJg4NDg0ODQ4MDwwPDA4NDg0OJg4NDgwPDQ4MDwwPDA4ODQ4NJg4mDg0ODQ8LDwwPDA8MDg0ODQ4NDg0ODQ4MDw0PDA4MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4ODQ0ODQ4NDgwPDA8MDg0ODQ4mDg0OJQ8lDyYOAAkCYDYPJQ8lDwwPDA8MDiYPDA4NDiYOJg4NDiYODQ8LDyUPJQ8MDyUPJQ8MDwwOJg8MDg0OJg4NDwwODQ4MDwwPDA8MDg0PDA4ODQ0PCw8MDwwPDA4NDg0OJg4NDg0OJg4NDgwPJQ8MDwwPDA4NDg0PDA4NDgwPJQ8MDwwODQ4NDwwODQ4mDiYPDA4NDgwPDA8MDwoRDA4NDggTDQ4KEQwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDwwODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4mDiYPJQ8lDyUPJRAkDwwPJQ8ADQU=", + "30":"JgDMAV82DiYOJg4NDg0ODQ4mDg0ODA8lDyUPDA8lDwwPDA4mDiYODQ4mDiYODQ4NDiYODQ4ODQ0OJg4NDgwPDA8MDw0ODA4NDg0ODA8MDwwPDA4NDg0ODg0NDgwPDA8MDwwOJg4NDg0ODQ4NDg0PCw8MDwwOJg8MDg0ODQ4NDg0ODA8MDwwOJg8lDwwPDA4NDg0ODQ4ODQ0ODA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODQ8LDwwPDA8lDwwPJQ8lDyUPAAj+YzYPJg4mDg0PDA4MDyUPDA8MDyUPJQ8MDyUPDA8MDiYOJg4NDyUOJg8MDg0OJg4NDg0OJg4MDwwPDA4NDg0ODQ4NDwoQDA8MDwwODQ4NDg0ODQ4NDgwPJQ8MDwwPJQ8MDwwPJQ4NDg0ODQ4NDgwPDA8MDyUPChEMDg0ODQ8LDwwPDA8lDyUPDA8MDwwPDA4ODQ0ODQ4MDwwPDA4NDwwODQ4NDwsPDBALDwwODQ8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4ODQ0ODQ4mDg0OJg4mDiYOJg8lDg0OJg4ADQU=", + "31":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA4mDiYODQ4mDwwODQ4mDiYODQ4mDiYODQ4NDiYODA8MDwwPJQ8MDwwPCRENDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0ODQ4MDwwQCw8MDg0OJg4mDg0PDA4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDBALDg0ODQ4mDg0OJg4mDiYPAAj/YzYPJQ4mDwwODQ4NDiUPDA8MDyUPJQ8MDyUPDA8MDyUQJA8KESUPJQ8MDwwOJg8MDg0OJg4NDg0ODA8MDwkSDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0OJg8MDgwPJg4MDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4mDiYODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwoRDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDiYPDA4mDiYOJg4mDwwOJg8ADQU=" + }, + "high":{ + "16":"JgDMAV82DiYOJg4NDg0ODQ4mDg0ODQ8lDyUODQ4mDg0ODQ4mDiYODA8lECQPDA8MDyUPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0OJQ8MEAsPDA4NDg0ODQ4NDiYOJg4NDgwPChEMDwwPDA4NDg0OJg8lDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4mDg0OJg4NDgwPAAkCYDYPJQ8lDwwODQ4NDiYODQ4NDiYOJQ8MDyUPDA8MDyUPJg4MDyUPJQ8MDwwQJA8MDwwOJg4NDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA8MDwwOJg4NDg0OJg4NDgwPJQ8MDwwPDA8MDwwPDA4NDiYOJg4mDyUPDA4NDg0ODA8lDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODQ4MEAsPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4mDg0OJg4mDiYODQ4NDiUPJg4ADQU=", + "17":"JgDMAV82DyUPJQ8MEAsPChElDwwODQ4mDyUODQ4mDg0ODQ4mDiYODQ4mDiYODQ4NDiUQCw8MDwwPJQ8MDg0ODQ4KEQ0ODA8MDwwODQ4NDwwODQ8MDgwPDA8MDwwPDA4NDg0OJg8JEQwPDA8MDg0ODQ4NDiYOJg4NDg0ODA8MDwwPDA4NDg0OJg8lDg0ODQ4NDg0ODA8MDwwODg0ODQ0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4mDg0OJg4NDgwPAAj+YzYPJQ8mDgwPDA8MDiYODQ4NDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg4KEQwPJQ8MDwwPJQ8MDg0PDA4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0OJg4NDg0OJg4NDg0OJg4MDwwPDA8MDg0ODQ4NDgwPJQ8lDyYODA8MDwwQCw8lDwwPJRALDwwODQ4NDg0ODA8MDwwPCRIMDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8lECQPDA8lECQPDA8MDyUPJQ8ADQU=", + "18":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ8lDiYODQ4mDgwPDA8lDyUPDA8lDyUPDA8MDiYPDA8MDg0OJg4NDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwPDA4NDgoRDQ4MDyUPJg4MDwwPDBALDwwODQ4NDg0OJQ8lDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8lDwwPJQ8MDg0OAAj/YzYPJQ8lDwwPDA4NDiYODQ4NDiYOJg4NDiYODA8MDyUPJg4MDyYOJg4NDgwPJQ8MDwwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0OJg4NDg0OJg4NDwsPJQ8MDwwPDA8MDwwODQ4NDiYPDA4mDiYODQ4NDgwPDA8lDwwOJg8MDwwODQ4NDgwPDBALDwwODQ4NDg0ODA8MEAsPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8lDwwPDA8lDyUPDBALDyUPJQ8ADQU=", + "19":"JgDMAWA2DiYOJg4NDgwPDA8lDwwPDA4mDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiYODQ4NDgwPJQ8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDwsPDA8MDwwODQ4NDiYOJg4NDg0ODQ4MDwwPDA8MDg0OJg8lDg0ODQ4NDg0ODQ4MDw0ODA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwVBg4NDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDBALDwwPDA4NDg0ODQ4mDg0OJg4NDgwPAAj+ZDYPJQ4mDgoRDQ4MDyUPDQ4MDyUPJQ8KESUPDA4NDiYPJQ4NDiYOJg4NDg0PJQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgoRDA8MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwPJQ8MDg0OJg8MDg0ODQ4MDwwPDA8MDwwODQ4mDiYODQ4NDg0ODA8mDg0PJA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0PDA4NDg0PCw8MEAsPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDiYOJg4NDiYODQ4NDiYOJQ8ADQU=", + "20":"JgDMAWA2DiYPJQ4NDwwODQ4lDwwPDA8lDyUPDA8lDwwPDA4mDiYPDA4mDiYODQ4NDiYODQ8MDg0OJQ8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwQCw8MDg0OJg4KEQ0ODQ4MDwwPDA8MDiYOJg4NDg0ODQ4NDg0ODA8IEwwOJg4mDwwODQ4NDg0ODBAJEQwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4mDg0OJg4NDg0OAAkAYjYOJg4mDg0ODQ4NDiYODQ4NDiUPJg8MDiUPDA8MDyUPJQ8MDyUPJQ8MDwwOJg4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDQ4MDg0ODQ4NDg0OJg4NDgwPJQ8MEAsPJRALDwwODQ4NDg0ODQ4JEiUPJQ8MDyUPChEMDg0ODQ4mDg0OJg4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJRALDyUPDA8MDiYOJg4ADQU=", + "21":"JgDMAV82ECQPJg4MDwwPDA8lDwwODQ4mDiYODQ4mDwwODQ4mDiYODQ4mDiYODQ4NDiYODA8MDwwPJQ8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDiYOJg4NDg0OChENDgwODQ4NDg0OJg4mDg0ODQ4PDAwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4ODQ0ODBAMDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAj/YzYPJQ8lDwwODQ4NDiYODQ4NDiYOJg4NDiYOChENDiUPJQ8MDyUPJQ8MDwwPJQ8MDwwOJg4NDg0ODQ4MDwwPDA8KEQwOChENDg0ODQ4MDwwPDA4NDg0OJg4NDgwPJQ8MDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPJQ8MDyUPDA8KEQwODQ4mDg0OJg4NDg0ODA8MDwkSDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDwwODQ4NDgwPDA8MDwwODQ4mDyUPDA4NDiYODQ4MDyUPJQ8ADQU=", + "22":"JgDMAV42DiYOJg4NDg0ODQ4mDgwPDA8lDyUPDA8lDwwODQ4mDiYPDA4mDiYODQ4NDiYPDA4NDgwPJQ8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDgoRDA8MDwwPDA4NDiYOJg4NDg0ODQ4MDwwPDA8MDg0OJg4mDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4mDg0OJg4MDwwPAAj+YzYPJQ8mDg0ODA8MDyUPDA8MDioKJg8MDiYPDA4NDiYOJg4KESYOJg4NDgwPJQ8MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0PCw8MDwoRJQ8MDg0OJg4NDg0OJg4NDgwPDA8MDwwODQ4NDiYODQ4KESUPDA8MDwwPDA4mDwwOJg8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8NDgwODQ4NDg0ODA8MDwwPDA4NDwwODQ4NDgwPDA8mDgwPDA8MDiYODQ4NDiYOJg4ADQU=", + "23":"JgDMAWA1DiYPJQ8MDg0ODQ4mDg0ODA8lDyUPDA8lDwwQCw8lDyUPDA8lDiYPDA4NDiYODQ4NDg0OJg4NDgwPDA8MDwwPCRENDg0ODQ4MDwwPDA4NDwwODQ4MDwwPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDyUPJQ8MDg0ODQ4NDgoRDQ4MDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4NDg0ODA8MDwkRDQ4NDg0ODA8MDwwPDA4NDgoRDQ4NDgwPDA8MDwwODQ8lDg0OJg4NDgwPAAkBYTYOJg8lDg0ODQ4NDiUUBw8MDyUPJQ8JEiUPDA8MDyUPJQ8MDiYOJg4NDg0OJg4NDg0OJQ8MDwwPDA4NDg0ODQ4NDg0OChEMDwwPDA4NDg0ODQ8LDwwPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4MDwwPDA4NDg0OChENDiYODQ4MDwwPDA8lDwwOJg4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4NDg0ODA8MDg0ODQ4NDgwPDBALDwwPDA4NDg0ODQ4NDgwPDA8KEA0ODQ4NDgwPDA8lDyUPJQ8mDgwPDA8MDyUPJQ8ADQU=", + "24":"JgDMAV82DyUPJQ8MDwwPDA4mDg0ODQ4mDiYODQ4mDg0ODQ4mDiYODQ4mDiYOChEMDyUPDA8MDwwOJg4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDwwOJg4NDgwPDA8MDwwODQ4NDiYOJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgoRDA8MDwwPCRIMDg0ODQ4NDg0PDA4MDwwPDA4NDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8lDwwPJQ8MDwwPAAkBYDYPJQ8lDwwPDA8MDyUPDA4NDiYOJg4NDiYODQ4MDyUPJQ8MDyUPJQ8MDwwPJQ8MDwwOJg8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0OJg4NDg0OJQ8MDwwPDA4NDg0ODQ4NDiYOJg4mDg0ODA8MDwwPDA8lDwwOJg4NDg0ODQ4MDwwPDA8JEgwODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPChEMDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8lDwwPJQ8lDwwPDA4NDiYPJQ4ADQU=", + "25":"JgDMAV42DyUPJg8LDwwPDA8lDwwPDA4mDiYODQ4mDg0ODQ4lDyYODA8lDyUPDA8MDyUPDA8MDg0OJg4NDg0ODQ4NDg0ODA8MDwwPDA4NDwwODQ4MDwwPDA4NDg0ODQ4NDg0OJg4NDgwPDA8MDg0ODQ4NDiUPJQ8MDwwPDA8MDg0PDA4NDg0OJg4lDwwPDA8MDwwODQ4NDg0ODQ4MDwoRCRIMDg0ODQ4NDgoRDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDg0OAAkAYjYPJQ8lDwwPDA8JESYODQ4NDiYPJQ4NDiYODQ4KESUPJQ8MDyUPJRALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0OJg4NDgwPJRALDwwPDA8MDg0ODQ4NDg0OJg4mDg0ODQ4MDwwPDA4mDg0OJg4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8lDyUPDA8lDwwPDA4NDiYOJg8ADQU=", + "26":"JgDMAV82DyUPJQ8MDwwPDA4mDwwODQ4mDiYODA8lDwwPDA8lDyUPDA8lDyUPDA8MESMPDA4NDg0OJg4NDg0ODQ4NDgwPChEMDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPJQ8MDwwODQ4NDg0ODQ4MDyUPJg8LDwwPDA8MDg0ODQ4NDg0OJg4mDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0PCw8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwPCRENDg0ODQ4NDgoRDA8MDg0ODQ4NDgwPDA8lDwwPJQ8MDwwPAAj+YzYPJQ8lDwwPDA4NDiYODQ4NDiYOJg4NDiYODQ4MDyUPJQ8MDyUPJQ8MDwwPJQ8MEAsPJQ8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPJQ8MDg0OJg8MDg0OJg4NDgwPDA8MDwwODQ4NDiYODQ4mDg0ODA8MDwwODQ4mDg0OJg4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8lDwwPCRIlDwkRDQ4NDiYPJQ4ADQU=", + "27":"JgDMAV82DyUOJg4NDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA4mDyUPDA8lDyUPDA8MDyUODQ4NDgwPJQ8MDwwPChEMDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwOJg8MDg0ODQ4MDwwPChEMDiYOJg8MDwwODQ4NDg0ODQ4MDwwPJQ8lDwwODQ4NDwwODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0OChEmDgoRJg4NDg0OAAj/YzYOJg4mDwwODQ4NDiYODQ4MDyUPJQ8KEiQPDA8MDyUPJQ8MDyUPJQ8MDg0OJg4NDg0OJg4NDwwODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwkRDQ4NDg0OJg4NDg0OJQ8MDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPDA8lDwwODQ4NDg0ODA8mDg0OJg4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDgoSDA4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4mDiYOJg4NDg0ODQ4NDiUPJg4ADQU=", + "28":"JgDMAV82DiYOJg4NDg0ODQ4lDwwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDiYPCRENDyUODQ4NDgwPJg8LDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDg0ODA8MDyUPJQ8KEQwODQ4NDg0ODQ4NDgwPJQ8lDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0OChEMDwwODQ4NDg0ODQ4KEQwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8lDwwOJg4NDg0OAAj/YzYOJg4mDg0ODQ4NDiYODQ4NDiYOJg4NDiUPDA8MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4NDwsPDA8MDwwPDA4NDg0OCBMNDgwPDA8MDg0OJg4NDg0OJg4NDg0OJg4MDwwPDA8MDwwODQ4NDiYOJg4NDgwPDA8MDwwODQ4mDg0OJg4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8lDwwOJg4NDg0ODQ4NDiYOJg4ADQU=", + "29":"JgDMAV82DyUPJQ8MDg0ODQ8lDg0ODQ4mDiYODA8lDwwPDA8lDyYODA8lDyUPDA8MDyUPDA8JEQ0OJg4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDwwODQ4MDwwPJQ8MDwwODQ4NDg4RCBIKDiUPJg4KEQwPDA8MDg0ODQ4NDg0OJg4mDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4MDwwPDA8lDwwPJQ8MDgoRAAj/YzYPJRAkDwwPDA8MDiYPDA8MDiYOJg8MDiYPDA4NDiYOJg4NDiYPJQ4KEQwPJg4NDgwQJA8MDwwODQ4NDwwODA8MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPJQ8MDwwOJg8MDg0OJg4NDg0ODA8MDwwPDA8MDg0OJg4NDg0ODQ4MDwwPDA8lDwwOJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ8MDg0ODA8MDwwPDA4NDg0PDA4MDwwPDA8lECQPDA8MDwwODQ4NDiYOJg4ADQU=", + "30":"JgDMAV82DyUPJQ8MDwwPCREmDg0ODQ4mDiUPDA8lDwwPDA8lDyUPDA8lDyUPDA8MDyYODA4NDg0OJg4NDg0OChEMDwwODQ4NDg0PCBIMDwwPDA8MDg0ODQ4KEQ0ODQ4MEQoQJA8MDwwPDA4NDg0ODQ4MDyUPJQ8MDwwPDA8MDwwODQ4NDg0OJg4mDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDwsPDA8lDwwPJQ8MDwwOAAj/ZDUPJQ8lDwwPDA8MDiYPDA4NDiYOJg4NDiYODQ4NDiYOJg4MDyUPJQ8MDwwPJQ8IEwwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwOJg4NDg0OJg4NDg0OJQ8MDwwPDA8MDg0ODQ4NDiYODQ4MDwwPDA8MDg0ODQ4mDg0OJg4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwkSDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8mDgwPDA4NDg0ODQ4NDiYOJg4ADQU=", + "31":"JgDMAV42DyUPJQ8MDg0ODQ4mDg0ODQ4mDiYODQ4mDgwPDA8lDyUPCRIlDyUQCw8MDiYPDA8MDg0OJg4NDgoRDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8NDgwPJQ8MDwwODQ4NDg0ODQ4MDyUPJQ8MDwwPDA8MDg0ODQ4MDwwPJQ8lDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwkRDQ4mDwwOJg4NDg0OAAj+ZDYPJQ4mDg0ODQ4MDyYODQ4MDyUPJQ8MDyUPDA8MDyUPJQ8JEiUPJQ8MDwwOJg8MDg0OJg4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPJQ8MDwwPJQ8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDwwOJg4NDg0ODQ8LDw0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDBALDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDgoRDQ4mDyUOJg4mDiYOJg4mDgwPJQ8ADQU=" + }, + "turbo":{ + "16":"JgDMAV42ECQPJQ8MDwwPDA4mDwwODQ4mDyUODQ4mDg0ODQ4mDiYODQ4mDyUODQ4MDyUPDA8MDwwOJg4NDg4ODA4NDgwPDA8MDwwPDQ4MDg0NDg4ODQwPDQ4MDwwPDA4NDg0OJg4MDwwPDA8MDg0ODQ4NDiYOJg4NDg0ODA8MDwwPDQ0NDg4NJg4mDwwODQ4NDg0PCw8MDwwPDA4NDg0ODA8MDwwPDA4NDg0PDA4MDwwPDA8MDw0NDg0NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODg4lDwwOJQ8MDwwPAAj+ZTUOJg8lDg0ODQ4NDyUODQ8MDiUPJg8MDiUQDA4MDyUQJA8MDyUPJQ8NDgwOJg4NDwwOJg8MDg0OChEMDwwPDA4NDg0PDA4NDgwPDQ4MDwwPDA4NDwwOJg4NDwsPJRALDwwPJQ8MDwwODQ4NDg0OJg8LDyYOJg4mDikMDA4NDg0ODA8lDwwOJg8MDwwPDA4ODQ0ODQ4MDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ8MDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4NDg0PDQ0mDg0OJg8lDiYODQ4MDwwPDA8ADQU=", + "17":"JgDMAV42DyUPJRALDwwPDQ4lDg0PDA4mDiYODg4lDwwODg0mDiYPDA8lDiYODQ4NDiYPCw8MDwwPJQ8NDgwODQ4NDg0ODQ4NDgwPDQ4MDg4ODA4NDQ0PDQ4NDg0NDQ4NDgoSJQ4NDwsPDA8MDwkSDQ0NDiYOJg4NDg0ODQ8LDw0ODA8MDg4NJg4mDw0ODQ0NDg0PCw8MDg4NDg4NDQ0ODQ4MDw0ODQ0NDg4NDg0NDgwPDA8MDw0ODQ4NDQ0ODA8NDgwPDA4ODgwODQ4NDgwPDQ0NDg4NChEODQ0ODBAkDwwPJQ8MDw0OAAj/YjcOJg4mDg0ODA8NDiUPDA8MDiYPJQ8MDiYODQ4NDiYOJg4ODSYOJg4ODgwOJg4NDgwPJQ8MDw0PCw4ODQ4NDQ4NDwsPDA8MDg4NDQ4NDg0ODQ4MDw0PJA8MDw0OJQ4NDg4OJQ4NDg0PDA8MDwsPJQ8MDg4NJg4mDyUODQ4NDg4NDQ4mDg0PJQ4MDwwPDA4NDg0ODQ4NDg0ODQ8LDwwPDA4ODg0NDQ4MDwwPDA4NDg4NDQ4NDg0PDA8LDw0NDQ8MDg0ODA8NDg0ODQ4MDg0PDA8lDiYODQ4mDyUODQ4KEQ0ODQ4ADQU=", + "18":"JgDMAWA1DyUPJQ8MDwwPDA4mDg0ODg0mDiYODQ8lDg0ODQ4lECQPDQ4lDyUPDA8MDyUPDQ8MDwsOJg4NDg4NDQ8MDwsPDQ4NDgwODQ4ODQ0ODA8NDwwODQ0NDg0PDA4MDwwPJQ8MDg0ODg0ODg0ODA4NDiYPJQ4MDwwQCw8MDg4NDQ4NDg0OJQ8lEAsPDQ4NDg0NDQ4ODgwODA8MEAwODA8MDg0ODQ4MDwwPDQ4NDgwODQ4ODgwODQ4NDg0ODQ4MDwwODQ4NDg0ODQ4NDg0ODA8NDQ4NDQ8MDgwPDA4mDwwOJg4ODgwOAAj/ZDUOJg8lDwwPDA4NDiYODg0NDiYOJg4NDiYPDA4NDiUPJQ8KESUPJQ8NDwsPJQ8MDwwOJg4ODg0ODQ0NDwsPDQ4NDgwPDA4ODQ4NDg4MDg0PDA8MDQ0OJg4NDwwOJg4KEQ0OJg4NDg0ODQ4NDg0OJQ4NDyUODg0mDiYODg0NDg0PDA4lDwwQJA8LEAwPDQ4NDgwPCw8NDwsPDA4ODQ4NDQ4MDw0ODA8MDg0ODg0ODQ0PDA4NDwsPDQ4MDwwODg4NDQ0ODQ4NDg0NDg0ODQ0PDA4mDwwPDA4lDyUPDQ4MDw0ODA8ADQU=", + "19":"JgDMAWA2DiYOJg4ODQ0ODA8lDwwPDA8lDyUPDA4mDg0ODQ4mDyUODQ4mDiYPDA4NDiYODQ8LDwwPJRALDwwODQ4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODQ4MDwwQCw8MDg0OJg8MDg0ODA8MDwwODQ4NDiYOJg4NDg0ODBALDwwPDQ4NDQ4OJQ8lDg0PDA4ODgwPCw8NDg0ODQ0NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDg0ODQ4NDg4NDQ4MDwwPDA8MDwwODQ4ODQ0ODQ4NDg0PDA4MDg0PDA4mDg0OJg8LDw0OAAkCXzYPJg4mDg0ODA8MECQPDA8MDiYOJg8MDiYODQ8MDyUOJg4NDiUQJQ8LDwwQJA8MDwwQJA8MDwwODg0NDg0ODA8MDwwPDQ0ODQ0ODQ4MDwwPDA8MDg0OJg4ODQ0OJg4NDgwPJg4NDgwPDA8MDwwOJg8MDg0ODQ4mDiYODg0MDw0ODA4mDwwOJg4NDg0ODQ4NDgwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0PCw8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8lDyUPJRALDyUPDA8MDwwODQ4ADQU=", + "20":"JgDMAWA2DiYOJg4NDg0ODA8mDgwPDA8lDyUPDQ4lDwwPDA4mDiYPDA4mDiYODQ4NDyUPDA4MDwwPJQ8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4NDg0OJg8MDg0ODA8MDwwODQ4NDiYOJg4NDgoRDA8MDw0PDA4MDg0OJg4mDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4NDg0ODA8MDg0ODQ8MDg0ODA8MDwwODg4MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOChENDg0ODQ4lDw0OJRALDwwPAAj+YzYPJg4lDwwQCw8MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJg4NDg0OJRALDwwPDA4NDg0ODQ4MDw0ODA8NDgwPDBQHDg0OChENDg0PJA8MDwwOJg4NDg0OJg4NDg0OChEMDwwPJQ8MDyUOJg8MDiYODQ4NDg0ODQ8lDg0OJg4MDwwPDA4KEQ0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA4ODgwODQ4NDg0ODA8MDwwODg4MDg0ODQ4MEAsPDA8MDw0NDQ4mDg0OJg4NDiYOChENDgwPDA8ADQU=", + "21":"JgDMAV82DyUPJQ8MDwwPDA4mDg0ODQ4mDiYODQ4mDg0ODQ4mDiYOCBQlDiYODQ4NDiYPCw8MDwwOJg4NDg0ODQ8MDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwOChENDwwOJg4NDgwPDA8MDg0ODQ4NDiYOJg4NDgwPDQ4MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0PCw8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDg0PDA4NDwwODQ4mDwsPJRALDwwPAAj+YzYPJRAkDwwPDA8MDyUPDA8MDiYOJg4NDiYODQ8MDiYOJg4NDiYPJQ4NDg0OJg4MDwwQJA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0PDA4NDgwPDA8MDwwOJg8MDg0OJg4NDwwOJg8MDwsPDA8NDgwPJQ8MDg0OJg8MDiYODQ4NDgwQCw8lDwwPJQ8MDg0ODQ4NDg0ODA8MEAsPDA4NDg0ODQ4NDgwPDBALDg0ODg0NDg0OChIMDgwPDA8MDg4NDQ4NDgwPDA8MDwwODQ4NDg0ODBAlDiYODQ4MECQQCw8MDg0ODQ4ADQU=", + "22":"JgDMAV82DyUPJQ8MDg0ODQ8lDg0ODA8lDyYODQ4lDw0ODA8lDyUPDA8lDyUPChEMDiYPDA8MDg0OJg4NDg0ODQ4MDwwPDg0MDg0ODQ4NDg0ODA8MDwwODQ4NDwwODQ4MDwwPJQ8MDg0ODQ4NDwwODA8MDyUPJQ8MDwwPDA4NDg0ODQ4NDg0OJRAkDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4NDg0ODQ4MDg0ODQ4NDwsPDA8MDwwODQ4NDwwODQ8MDgwQCw8lDwwOJg4NDg0OAAj/YzYOJg8lDwwPDA4NDyUODQ4NDiYOJg4NDyUODQ4NDiUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODA8MDwwPDA8JEQ0ODQ4NDgwPChEMDwwPDA4NDg0OJg4NDg0OJg4MEAsPJQ8MDwwPDA4NDg0OJg8MDiYODA8MDyUPDA8MDwwODQ4mDg0OJg4NDg0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MEAsPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MEAsPDA4NDg0ODQ4MDwwPDA8lDwwODQ4NDiYODQ4NDg0ODA8ADQU=", + "23":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA4mDyUPDQ0mDwwODQ4mDiYODQ8lDiYPDA4NDiYODQ4MDwwPJRALDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ8MDwwPJA8MDwwPDA4NDg0ODQ4NDiYOJg8MDwwPCxALDwwPDA4NDg0OJg4mDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDgoRDg0ODQ4NDQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0PDA8kDwwPJQ8MDwwPAAj+ZDUPJQ8mDg0ODA8MECQPDA8MDiYPJQ8MDyUQCw4NDiYPJQ4NDiYOJg4NDg0OJg4MEAsPJQ8MDwwPDA8MDwwODQ4NDwsPDA8MDwwODQ4NDg0ODA8MDwwPJRALDwwOJg8MDg0OJg4NDgoRDQ4MDwwPJQ8MDwwPDA4NDiYPDA8JEQwPDA8lDwwPJQ8MDwwODQ4NDg0ODQ4NDgwPDQ0NDwwODQ4NDwwODA8MDwwPDA8MDg0ODQ4NDgwPDA8NDQ4NDg0NDgwPDA8MDwwODQ4NDg0PDA4lDyUPJg4mDg0ODA8MDwwPDA4ADQU=", + "24":"JgDMAV82DiYOJg8MDg0ODQ8lDg0PCw8lDyUQCw8lDwwPDA8lDyUPDA4mDiYPDA4ODSYODQ8MDg0OJQ8MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8KEQwOJg4NDg0ODQ4NDgwPDA8NDiUPJQ8MDwwODQ4NDwwODQ4MDwwPJQ8lDwwODQ8MDg0ODQ4NDgwPDA8MDwwODQ4ODgwNDg4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4mDgoSJQ4NDg0OAAkDXzYOJg4mDwwODg0ODSYODQ4NDiYPJQ8MDiYODQ4MDyUPJQ8MDyUPJRALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDBALDwwODQ4NDg0ODA8MDwwODg0NDwwOJg4NDgwPJQ8MDwwPJQ8MDg0ODQ4NDg0OJg4KESYOJg4mDg0ODA8MDwwPDA4mDg0OJg4NDg0ODQ4NDwsPDA4NDg0PDA4ODQ0ODQ4MDwwPDA8MDg0ODQ4ODQ0ODA8MDwwODQ4NDg0ODQ4NDwwODQ4MDg0ODg0NDg0ODA8lDwwQJA8lDwwPDA4NDg0ODQ4ADQU=", + "25":"JgDMAV42ECQPJQ8MDwwPDA4mDwwODQ4tByYODQ4mDg0OChIlDiYODQ4mDiYODA8MDyUPDA8MDwwPJQ8MDg0OChIMDgwQCxAMDgwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0OJg4NDgwPDA8MDwwODQ4NDiYOJg4NDgwPDQ8MDgwODQ4NDgoRJg4mDg0PDA4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg4NDQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4mDg0OJQ8MEAsPAAj+YzcOJg8lDg0ODQ4NDiUPDA8MDycNJQ8MDiYODQ4NDiYOJg4NDiYOJg8MDg0OJg8MDg0OJQ8NDgwPDA4NDwwODQ8MDgwPDA8MDwwPDA4NDg0ODQ4NDg0OJg8LDwwPJQ8MDwwPJQ8MDg0ODQ4NDg0OJg4NDgwPJQ8lDwwPDA4NDg0ODQ4mDg0OJg8MDgwPDA8MDwwODg0NDg0ODQ4ODQwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwoRDA4NDg0ODQ4NDg0ODA8MDwwODQ4mDiYODQ4mDg0PDA4NDg0ODA8ADQU=", + "26":"JgDMAV82DiYPJQ8MDwwODQ4mDg0ODQ4mDyUODQ4mDgwPDA8lDyUQCw8lDyUPDA8NDiUPDA8MDg0OJg8MDwwODQ4NDg0ODA8MDwwODQ4NDg0PDA4MEAsPDA8MDg0ODQ4NDg0OJQ8MDwwPDA8MDwwODRYFEyEOJg8MDgwPDA8MDw0ODA8MDg0OJg4mDg4ODA4MDw0ODA4ODQ4ODA4NDgwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4NDgwQCw8NDQ0ODQ4ODQ0ODA8lDwwPJQ8MDwwOAAkAYjYPJg4mDgwPChILDyUPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg4NDg0OJQ8MDw0OJQ8MDwwPDQ0NDg0ODQ8HEw0ODA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4MDwwPJQ8MDyUPDA8lDg0ODQ4NDgwPDBAkDwwQJA8MDw0PCw4NDwwODQ4NDg0ODA8NDQ0ODQ4NDg0ODA8MDwwPDA8MDwwODg0NDgwPDA8MDwwPDA4NDg0ODQ4MDwwQCw8MDg0ODQ4mDg0ODQ4lEAsQCw8NDQ0ODQ4ADQU=", + "27":"JgDMAWA0ESMRIxEJEgkRChEkEAoRChEjESMRCRIjEQkSCRIjESMRCRIjECQQChEKESMRChEJEgkSIxEJEgkRChEKEQoRCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRChEKEQkSIxEJEgkSCRIJEQoRChEJEiMRIxEJEgkSCREKEQoRCRIJEgkSIxEjEQkSCREKEQoRCRIJEgkSCREKEQoRChEJEgkSCRIJEgkRChEKEQoRCRIJEgkRChEKEQkSCRIJEgkRChEKEQoRCRIJEgkSCREKEQoRChEJEgkSCRIjEQkRJBAKEQoRAAj7ZjMRJBAkEAoRChEJEiMRCRIJESQQJBEJESQQChEKESMRIxEKESMRIxEJEgkSIxEJEgkSIxAKEQoRChEJEgkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQkSIxEJEgkSIxEJEgkSIxAKEQoRChEJEgkSIxEJEgkRChEkEAoRChEJEgkSCRIjEQkSIxAKEQoRCRIJEgkSCRIJEQoRChEKEQkSCRIJEgkRChEKEQoRCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRChEKEQkSCRIJEgkRChEjESMRJBAKEQoRCRIJEgkSCREADQU=", + "28":"JgDMAV82DyUOJg4NDgoRDA8lDwwPDA8lDyUPDA8lEAsPDA8lDyUPDA8lDyUQCw8MDiYODQ4NDg0OJRAJEgsPDA8MDwwODQ4NDg0ODA8KEQwPDA8MDg0ODQ4NDg0ODA8NDgwPJQ8MDg0ODQ4NDg0ODA8MDyUPJRALDwwPDA8MDg0ODQ4NDgwPJQ8lDwwPDA8MDwwODQ4NDgwQCw8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4KEQ0ODBALDwwPDA4mDwwOJg8MDwwOAAj/YzYPJQ8lDwwQCw8MDyUPDA4NDiYOJg4ODiUODQ4NDiYOJg4NDiYOJg8MDg0OJg8LEAsPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgoSDA4MDw0OJRQHDg0OJg4NDg0OJg4NDgwPDA8MDwwPJQ8MDiYPJQ8MDwwPDA4NDg0ODA8lDw0OJQ8MDw0ODA8MDg0ODg0NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0PDQ0mDwwOJg4NDg0ODA8MDwwPDA8ADQU=", + "29":"JgDMAV42DyUPJRALDwwPDA8lDwwODg0mDyUPDA4mDg0PDA4lDyYODA8lECQPDA8MDyUQCw8MDwwOJg4NDg0ODQ4NDgwQDA4LEA0ODA4NDgoRDQ4NDgwPDA8MDg0ODQ4NDg0OJg4MDwwPChEMDg0ODQ4NDiYOJg4NDg0PCw8MDwwODQ4NDg0OJg4mDg0OChEMDwwPDA8MDg0ODQ4NDg0ODQ4MEAsPDA8MDg0ODQ4NDg0ODA8MDwwODQ8MDg0PDA4NDgwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4lDwwPJQ8MDwwPAAkCYDYOJg4mDwwPDA4MDyUPDA8MDyUQJBALDyUQCw8MDyUOJg4NDyUPJQ8MDg0OJg4ODQ4NJg4ODgwPDA8LDw0ODQ0ODg0NDA8MEAwODQ4MDg0ODQ4NDg0OJQ8MDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPJQ8MDwwPJQ8MDwwPDQ0ODQ0ODQ4mDg0OJRALDwwPDA4NDg0ODQ4NDgwPDBALDw0NDg0NDg0ODQ8LDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDiYPDA4NDg4NDQ4MDwwPDA8ADQU=", + "30":"JgDMAV82DiYOJg4NDgwPDA8lDwwPDQ4lDiYPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiYPDA4MDw0PJA8MDw0NDQ4NDg0PDA8MDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0OJg4ODQ0ODQ8LDwwPDQ4MDiYPJQ4NDg0ODQ8LDwwPDA8MDw0NJg8lDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8KEQoRDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwkSDA4NDg0ODQ4mDg0PJQ8MDgwPAAj+ZDYOJg4mDg0ODg0NDiUPDA8MDiYPJQ8MDiYPDA4NDiYPJQ8NDSYOJg4NDg0PJQ8LDwwPJQ8KEgsPDA4NDg0ODQ4NDgwPDA8MDwwODQ8MDg0ODQ8MDgwPJRALDwwPJQ8MDg0OJg4NDg0ODQ4NDgwQJA8MECQPDA8MDwwODQ4NDgwPDA8lDwoRJQ8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0PDA4NDg0ODQ4MDw0ODA8MDg0ODQ4ODQ0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4mDg0ODA8MDwwPDA4NDg0ODQ4ADQU=", + "31":"JgDMAV42DyUPJQ8MDwwPDA4mDg0ODQ4mDyUODQ4mDgwPDA8lDyUPDA8lECQPDA8KEiQPDA4NDg0OJg4NDg0ODA8MDwwPDA4NDg0PDA4NDg0ODA8MDwwODQ4NDg0ODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4MDyYOJg4NDg0ODA8MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8lDwwPJQ8MDwwPAAj/YjYQJQ4mDgwPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg4NDiUPJg4MDwwPJQ8MDwoRJQ8MDwwODQ4NDgoRDA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPJQ8MDg0OJg4NDg0OJg8MDgwPDBALDwwPJQ8MDg0ODQ4NDgwPDA8KEA0ODQ4mDg0OJg8MDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8lDyUQJA8lDyUPJQ8lDyUPJQ8ADQU=" + }, + "auto":{ + "16":"JgDMAWA1DyUPJQ8MDg0ODQ4mDg0NDg4lECUODA8lEAwODA4nDSYODg0mDiYPDQ0ODSYPDA4ODQwPJQ8NDg0ODA4NDwwODg4MDg0ODQ4MDwwPDQ0ODQ0ODQ4NDg0ODA8NDQ0OJg4ODQ0PDA8MDgwPDA4nDQ4NDQ4NDg0ODQ4MDw0ODQ4NDQ4MJw4mDwwODQ4NDg0PDA4NDQ4ODA4ODQ0ODQ4NDg0ODQ4NDQ4ODA4NDg0ODQ4NDQ0ODg0ODQ0ODA8NDg0ODQ4MDgoRDQ4NDg0ODA8NDg0NDQ0PDQ0ODQ4mDg0ODQ4MDyUPAAj+ZDUPJg4lDwwPDA8MDiYODgwPDiUOJg4ODSYODQ4ODSYPJQ4NDiYOJg4NDgwPJQ8NDg0OJRAMDg0NDQ8MDgwPDQ4NDgwPDQ0ODQ0ODQ4NDg0ODA8MDg4NJg4ODQ0OJg4NDg0OJg4NDgwPDQ4MDw0NDg0ODSYOJg4mDiYODQ4NDQ4ODQ4MDwwPDQ0NDw0NDQ8LDw0ODQ0ODQ0ODQ4NDg0ODQ4MDg0ODg0ODg0NDQ8MDg0NDg0ODQ4NDg0NDg0ODQ4NDgwODg0MEAwODQ4NDgwQCw8lDyURCg8MDiYODg0ODSYPJQ8ADQU=", + "17":"JgDMAV82DyUPJQ8NDg0NDg0mDg4NDQ4mDiYPCREmDwsPDQ4lDyYODQ4mDScPDA4MDyYODA8MDg0OJg4NDwwOChEMDwwPDQ4NDQ4NDgwODgwPDA8MDg0ODg0ODQ0ODQ4MDw0OJg4NDg0NDQ4ODQ0ODQ4mDg0ODQ4NDg0NDQ4ODQ0ODQ4MDwwOJg8lDwwPDA4ODQ4NDQ4NDg0ODQ4NDwwNDgwPDg0NDQ4NDg0ODQ4NDg0ODQ0ODQ0ODQ4NDQ4NDg0NDwwNDg4NDg0ODA4NDg4NDg0NDg0OChEMEAwODQ0mDwwPDQ0NDiYOAAkBYTYOJg8lDw0NDA8NDiYODQ4NDiUPJg4NDiUPDA8MDiYPJQ4KESYPJQ8NDQ0OJw4MDg0OJg4NDg0ODQ4NDg0ODA4ODg0MDg4NDwsPDQ4MDg4NDg0NDg0OJg4NDgwPJQ8NDwwNJg4NDg0ODg0NDQ0PDA8NDQ4NJg8lDiYPDA4NDg0ODg0NDg0ODQ4MDw0ODQ0ODQ4NDQ4NDg0ODA4ODQ0ODQ0ODg0ODQ4MDw0ODQ0ODQ4NDQ4NDg0ODQ0ODQ4NDQ4NDg0ODQ4NDgwNDw4MDgoSDQ0mDwwODQ4NDiUPDA4ODSYOJg8ADQU=", + "18":"JgDMAV81DyUPJQ8NDgwODQ8lDg4NDgwnDiYODQ4mDgwPDA8lECQPDA8lECQPDQ4NDiUODQ4NDg4NJg4NDg0NDg4NDgwPDQ0NDwwODQ4MDwwPDA8MDg4NDQ4ODQ0ODQ4MDw0OJQ4ODQ0ODg0NDgoRDQ4lDw0ODA8MDg4NDQ4NDgwQCw8NDg0NJw4lDw0NDg0ODQ4NDQ4NDwwNDg4NDg0NDQ4ODQ0ODQ4MDw0NDQ4NDg0ODQ4MDwwPCREODQ4NDA8ODQ0PDA4NDgwODQ4ODQ0ODA8MDwwODg0ODQ0ODQ4mDg0PDA4MDyUPAAj/YjcPJQ4mDwwODQ4NDiUQDA4MDyUOJg4ODSYPDQ0NDiYOJg4NDyUPJQ4NDwsPJQ8NDg0OJQ8KEQkRDg0NDg0PDA4NDg0NDg0ODQ0ODg0NDg0ODA8MDwwPJQ8MDg0OJg4ODQ0OJg8MDg0PCxALDwwODQ0ODiYOChEmDyUODQ4NDg0ODA8MDwwPDQ0NDg0ODQ4MDwwODg0ODQ0PDA4NDwwODA8MDwwPDA8MDwwODQ4NDgwPDA4NDg0PDA8NDQ0ODQ4MDw0NDQ8MDg0ODQ4NDQ4ODQ0mDiYOJg8lDwwPDA8MDyUPJQ4ADQU=", + "19":"JgDMAV42DyUPJQ8NDg0NDg0mDg0ODg0mDiYODQ4mDg0OChElDyUQCxAkDyUPDA8MDyUPDA8NDQ4NJg4NDg0ODQ4MDw0ODA4NDg4NDg0ODQ0PCw8MDw0NDQ4ODQ0ODQ4MEAsPJQ8MDw0NDg0NDg0ODQ0nDg0PCw8NDg0NDg0ODQ0ODQ4MDwwPJQ8lDw0NDg0NDw0NDg0NDgwPDQ0NDw0NDg0NDg0ODA8NDgwODg0ODQ0PCw8NDwwODQ0NDg4NDQ8MDgoQDg4NDg0ODQ0ODQ0ODQ4NDQ4ODQ0ODQ0ODQ4mDwwODA8MDyUPAAj+ZDUPJg4lDw0ODQ4MDiYODg0NDSgNJg8NDiUPDA4ODSYOJg4NDiYOJg4NDg0OJQ8MDw0OJQ8NDQ4NDg0NDg0ODBALDw0NDg0ODQ0ODg0NDwwODQ4NDg0NJg8KEA4NJg4NDg0OJQ8MEAwODQ0ODQ4NDg0NDQ4ODQ4lDyUPDA4ODQ0ODQ4NDg0ODQ4NDgwPDA4NDQ8NDQ4NDQ0PDQ4NDQ4NDg0NDQ8NDQ4NDg0ODA4NDg4NDQ4NDg0ODA4ODQ0ODA8ODQ0ODQ4NDg0ODQ0ODQ4NDg0mDg0OJg8lDgwPDA8NDSYPJQ8ADQU=", + "20":"JgDMAV82DiYOJg8MDwwODA8lEAsPDA8lDyUQDA4lDw0ODA4mDyUPDA4mDiYPDA4NDiYPDA4NDg0OJg4MDw0ODA4ODQ4NDQ8LDw0NDQ4NDg4NDg0NDg0ODA8MDwwODQ8NDQ4NJg4KEQ0ODA8NDQ4NDQ4mDg0ODg0NDgwPDA8NDQ4ODQ0NDw0NJg4mDwwOChEMEAsQDA4MDg0ODg0NDg0ODQ4NDQ4NDQ8MDg0PDA4NDgwPDA4NDwwODQ4NDg0NDg4MDw0NDQ4ODQ0ODQ4MDwoRDA8NDQ0ODA8ODQ0MDg8lEAwODA4NDyUPAAkCYDUPJQ8lDw0ODQ0ODSYODQ4NDiYOJg8MDiYODQ4NDiUPJRALDyUPJRAJEQ0OJQ8MEAwOJQ4ODQ0ODQ4NDg0ODA8MDg4NDg0NDg0ODQ4NDwsPDQ8MDQ4NJg4NDg4MJw4MDw0OJQ8MDw0NDg0ODA4NDg4NDiYOJg8MDiYODQ4MDwwPDQ0ODQ4NDQ4NDg0ODA4NDg4NDg4MDg0ODA8NDg0NDg0ODA8NDQ4NDg0ODA8NDQ4NDg0NDQ4ODQ8MDgwPDA8NDQ0ODg0NDgwPDQ4MDg0ODg0mDiYODg0mDwwODA8MDyUPJg4ADQU=", + "21":"JgDMAV82DyUOJg8MDwwODQ8lDg0PDA4lDyYODA8lDwwPDA8lDiYODQ4mDiYODg0NDiYODg0MDwwPJg8MDwwNDQ4NDwwODQ4NDg0ODQ4NDgwODg0ODg0NDA8NDg0ODQ0KEQ0OJg8MDg0PDA4NDgwODgwnDwwODg0NDgwPDA8NDgwOChEODQ4NJg8lDwwODQ4MDwwODQ4ODQ4NDQ4NDgoRDQ4MDwwODg0NDg0ODQ8LDwoRDQ4NDQ4NDQ4NDwsPDA8NDQ4ODQ4NDQ0ODQ4NDg0ODA0PDQ4NDQ4NDg0ODA4mDwwODQ4MDyYOAAj+ZDYOJg4mDg4NDQ4NDiYODQ4NDSYPJg4NDyQQDA4MDyUOJg4NDiYOJg8NDQ4OJQ4ODQ0OJg4NDwwODQ4MDg4NDg0ODQ0ODA8MDwwPDA4ODQ4NDQ4ODgwOJg8LEAsQJA8NDg0OJQ4NDg4ODA4NDgwPDA4ODQ0OJg4NDyUODQ8MDwwODQ4MDwwPDA4NDg4NDQ8LDwwPCxANDQ4ODA4NDg0ODQ4NDQ4NDQ4NDg0ODQ4MDw0ODQ4NDg0NDg0NDg0ODQ4MDg4NDQ4ODQ0ODQ4NDg0ODQ0mDw0NDg0mDg0ODQ8MDiYPJQ4ADQU=", + "22":"JgDMAWE1DSYOJg4NDg4NDQ4mDwwODA8lDyUPDQ4lDw0NDQ4mDiYODQ4mDiYQCw4NDiYNDg8MDg0OJQ8NDg0ODQ4MDg0ODg0ODA4NDg4MDwwODg0NDg4ODA4NDwoRCw4ODgwOJg4ODQ4MDg8MDg0ODA8lDg0PDQ0ODQ0ODQ4MDw0ODQ4NDQ0OJw0mDg4MDw0NDg0ODQ0ODQ0ODgwODg0ODQ0ODgsQDA4ODQ0ODg0NDg0ODA8NDQ4NDg0NDg0ODA8MDg4NDQ8MDg0PDA4NDg0ODQ4MDw0NDg0NDg0ODA8lDw0ODA8MDiYOAAj/YzYPJQ4mDg0ODg0NDyUPCw8NDyUOJg4NDiYPDA4NDiUPJQ8NDiUPJQ8MDg0OJg4NDg0OJg4NDwsPDA8NDwsPDA8NDQ4NDQ8MDgwPDA8MDg0ODg4NDQ0OJQ8MEAsQJA8NDg0OJQ4NDg0ODg0NDg0ODQ4NDiUPDA8MDyUPDA8NDQ0ODQ4NDgwQCw4NDg4NDQ0ODg0ODQ4NDQ0ODQ4NDg4NDQ4NDgwQCw8KEA4NDg0NDgoSDA0ODgwPDA4ODQ0ODQ8MDQ4NDg4MDg0ODg0ODQ0ODQ4lDyUPJQ8MDwwPDQ0ODSYOJg4ADQU=", + "23":"JgDMAV82DiYOJg4ODQwQDA4mDg0PDA8kDyUPDQ4lDw0NDQ8lDiYODg0mDiYODQ4ODSYODg0NDwwOJg8MDg0PCw8NDgwODg0NDgoRDQ4MDw0NDg0ODQ4NDg0NDg0ODQ4NDgwOJg4ODQ0PDA4MDwwPDQ0mDg0PDA4ODQ4NDg4MDg0ODA8NDQ4NJg4mDg4NDg0ODQ0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8NDQ0PDA4ODQ0ODQ4MDw0NDg0ODQ4ODA4KEQ0ODQ4NDQ0ODQ4ODQ0ODQ8LDwwPDA4NDg4NDQ4mDwwODQ4MDyUPAAj+ZDUPJg8lDg0ODQ8LDyUQCw8MDyUPJQ8MDiYODQ4ODSYOJg4NDiYPJQ4ODgwOJg4NDQ4OJRAMDgwPDQ0ODQ4MDg4MDwwPDQ4MDw0NDQ4NDg4NDQ4NDgwPJQ8MDwwOJg8MDg0OJg4ODQ0ODQ4NDgwPDQ0ODA8ODA8MDiYODQ4MDwwPDA4ODQ4NDQ4NDgwPDQ4NDg0NDg0NDg0ODBAMDgwODQ4NDg0ODQ4MDwwPDA4NDw0NDQ4NDwwODQ8MDg0ODA4NDg0ODQ4MDwwODQ8MDg0ODg0mDw0NJg4NDg0ODQ4NDiUPJRAADQU=", + "24":"JgDMAV42DyUPJQ8MDg4NDg0nDQ0ODQ4lDyUQCxAkDwwPDA4mDyUPDA4mECQPDA4ODSYPDA4NDg4NJg4NDg0PCw8NDgwODg0ODgwODQ4MDg4ODA8NDQ0ODQ4NDQ4ODA8NDg0OJQ8MDg4NDg0NDg4ODA4lDw0NDg0ODQ4OCREMDwwPDA8NDg0NJg4mDwwODg0NDg0ODQ0ODg0NDg4MDQ4QCw4MDw0ODA8NDg0ODA8NDQ0ODQ4NDgwPDA4ODQ0NDw0MDw0ODQ4MDw0NDg0ODQ0ODQ4KEQ0ODA0PDQ0NDg4mDg0ODQ4NDiUPAAj+YzcNJw4mDgoSCRENDiYODA8NDScNJw0NDScODQ0PDSYOJg4NDiYPJQ4NDg0NJg8MDwwPJQ8MDw0NDg0ODgoRDA4MDwwPDQ4NDQ4MDw0NDQ4ODA8NDg0OJQ8MDg0OJg4ODQ0OJg8JEgwODQ4NDgwODQ4NDiYOJw0mDw0NDQ8LDwwPDQ4MDg4NChENDg0ODA8MEAwNDg0ODQ0ODg0NDwwODQ4NDg0NDQ8NDQ0ODA8MDg0ODg4NDQ4NDQ8MDg0ODA4ODQ4NDQ4NDg0ODA8NDgwODQ4mDScPDA4ODQ0ODQ4NDiUQJA8ADQU=", + "25":"JgDMAV82DiYOJg4ODQ0ODQ4mDg0ODQ4lDyUPDA8lDw0NDg0mDiYODg0mECQODQ4ODSYODg0ODQ0OJg4NDg0NDg4MDg4NDQ4KEgsPDA8NDg0NDQ4ODQ4ODA4NDg0NDg4MDwwOJw4MDg4MDg4NDg0ODgwmDg4NDQ8MDw0NDQ4MDw0ODQ8MDQ0OJg4mDg4NDQ4NDg0ODQ4MDw0ODA4ODQ4MDg4NDg0ODQ4MDg4NDg4MDQ4ODQ4NDgwODg0NDQ8NDQ8MDg0ODA8NDQ0ODQ4NDwwODQ4NDQ4NDQ4ODQ0ODQ4lEAwOCxANDSYOAAj/YzcPJQ0nDg0ODQ4NDiYPCw8MDiYPJQ8MDyUODQ4ODCcPJQ8MDiYPJQ8MDg0OJg8MDwsQJBAMDgwPDA8MDg0ODQ4MDwwPDA8LEA0NDQ4NDg0PDA4MDg4OJQ8MDw0NJg4NDg0OJg8MDg0ODQ4MDw0ODQ0NDg0NJw4mDg0ODQ4MDwwPDQ4KEAwPDg0ODA4ODQ4MDwwPDQ0NDg0ODQ4NDg0ODA8MDwwODQ4ODA4ODQ4MDw0ODA8MDg8MDQ4NDg0ODA4ODQ4NDg0NDwwOChEMDwwPDQ4lDg0PDA4NDQ4ODBALDiYPJQ8ADQU=", + "26":"JgDMAWA1DyUOJg8NDQ4NDQ4nDQ0ODA8mDyUODA8lDw0ODQ4mDSYODQ4mDyUPDA4ODSYPDA4NDg0NJw4KEQ0PCw8NDQ4NDg4MDg0MDw4NDgwODg0ODQ4NDg0NDg0ODQ4NDg0NJg8NDQ4MDw4MDgwPDQ4lDwwODA8MDw0ODQ4NDg0ODQ4MDg4NJg4mDg0ODg0ODQ0ODQ4NDg0NDgwPDQ4NDQ4MDwwPDQ4NDQ4NDg0NDg0PDA4NDgwPDA4ODQ0PDA8MDg0NDg4MDg0ODgwPDQ0ODQ4MDw0ODQ0ODQ4ODA4mDwwNDg4NDiUPAAkBYDYPJRAkDw0ODQ0NDyUQCw8NDSYOJg4NDiYODg0ODSYOJg8MDiYOJg8JEQ0PJQ4NDg0OJg4NDQ0PDQ0ODQ4NDQ4MDwwODQ4ODQ0PDQ0NDg0ODQ4MDwwOJg8NDQ4NJg4ODQ0OJRAMDg0ODQ0NDg0ODg0NDiYPDA4mDg0ODQ4MDw0NDQ4ODQ0ODQ4MDwwPCxANDQ0ODQ4ODQ0ODA8MDwwODQ8MDg0ODQ8LDw0ODQ0NDg4NDg0ODQ0ODQ4NDwwNDg0ODQ4NDQ4NDg0ODQ4NDg0NDgwnDiYOJg4mDiYOJg4mDwwOJw0ADQU=", + "27":"JgDMAWA1DyUOJg8NDQ0PDQ0mDg0ODA8lDyUPDQ4lDwwPDQ0mDiYPDQ0nDSYPDA4NDiYODQ8MDgwPJQ8NDgwPDA4ODQ0PChANDg0ODQ8MDgwPDQ0NDg0ODQ4MDwwQCRAODQ4NJw0NDg0ODQ4NDg0ODA4mDwwPDA4ODQ4ODA8LDw0ODQ4MDg0PJQ8lDg0ODg0NDg0ODQ4MDg0ODQ4ODQ0ODQ4NDgwPDQ0ODQ0PDA8MDg0ODA8MDg4NDg0NDwwODQ8MDg0ODQ0ODQ0ODg0NDg0PDA4MDw0ODQ0NDwwODg0mDg0PDA4NDiUPAAj+ZTQPJg8lDwwPDA4NDiUQDA4MDyUPJQ8MDyUPDA8MDiYPJQ4ODSYOJg4NDg0OJg4NDwsQJQ8MDg0ODQ4NDQ0ODg0NDg0ODA8MDw0NDQ4NDg4MDg4NDg0OJQ8MDw0NJg4MEAwOJg8NDQ0ODQ4NDgwPDQ0NDg0PDA8lDg0ODQ4NDgwPDQ4MDwwODQ4ODQ0OChENDgwPDA8NDA4PDA4NDwwODQ4MDw0NDQ4ODQwPDA8NDgwODg0NDwwODQ8LDwwPDQ0ODQ4NDgwODg0PDA4MDwwPDA8lDg0OJg4mDiYOJg4mDg0OJg4ADQU=", + "28":"JgDMAV82DyUPJQ8NDgwODQ4mDg4NDQ4mDiYODg0mDg0ODQ4mDiYODQ4lDyUPDQ4NDiUPDA0PDg0NJg4NDwwODQ4MDwwPDQ4NDQ4NDQ4ODQ4NDA8NDwwODQ4NDQ4NDg4JEQ0NJg8MDwwPDQ0ODQ4MDg4mDg0PDA8LDw0ODA4NDQ4ODQ4NDgwQJBAlDgwPDQ4NDQ4NDg0NDg0ODQ4MDQ8ODQ0ODQ4ODA0ODgwPDQwPDg0NDg0NDg0ODg8KDw0ODQ4NDQ4NDQ4ODQ0ODA8NDg0ODQ0ODQ4NDQ4NDQ4ODQ0mDw0NDg0NDiYOAAj/ZDUOJg4mDwwODg0ODSYPDA8MDSYQJQ4NDiYPDA4NDiUPJg8LECUPJA8MDw0OJQ8MDg4NJg4ODQ0ODQ0ODg0ODBALDw0ODQ0NDg0ODA8MDwoQDg0ODQ4NJg4NDg0OJg8MDg0OJg4NDg0NDQ4MDw4NChENDiYOJg0ODg0ODQ4NDQ4NDgwPDQ4OCRENDgwPDQ4NDQ4ODA4ODQ0ODA8NDQ0ODQ4ODQ0ODQ4MDwwPDQ0ODg0NDg0ODQ0ODQ4NDg0ODQ4MDw0ODQ0NDgwODg4NDg0NDg0nDSYODQ4mDiYOJg4mDg0OJg4ADQU=", + "29":"JgDMAV82DicNJg8NDQ0ODQ0nDg0NDQ8lDyUPDA8lDgsRDQ0mDiYNDwwnDiYODg4NDSYODRALDgwPJQ8NDg0NDQ4NDg4NDQ4NDg0PDA4NDg0NDg0ODQ0NDw0NDg0ODA8MDw0NJg4ODQ4MDw0NDwsPDA8lDwwPDQ0ODQ4NDQ4NDwsPDQ4NDQ4NJg4nDQoTDA0NDwwODQ4MDw0ODQ4NDQ4NDg0NDg0ODA0ODg4NDg0ODQ0ODQ0NDw0NDg0ODQ4ODQ0NDg0ODQ4NDg0ODQ0ODQ4NDQ4NDg0ODQ4KEQwODQ0nDg0ODQ4MDyYOAAj/YzYOJg4mDg4NDQ4MDyYPCxALDyUPJQ8NDScODA4NDiYPJQ4NDiYOJg4ODQ4NJg8NDgwOJQ8MDw0ODQ0ODQ4NDQ4NDg0PDA4NDg0OCxANDQ0ODQ4NDg0OJQ8KEQ0NJg8NDQ0OJw0NDg0ODg0ODQ0ODA8NDg0NJg4ODQ4ODQ0NDQ4ODA8MDwwODg0ODQ0ODQ4MDwwPDQ0ODg0NDQ4NDQ4ODQ4MDg4NDQ4NDg0ODQ0ODgwPDA8ODQ0ODA4NDg4NDQ4MDwwPDQ0NDQ8MDw0ODQwPDQ4lDw0ODQ0mDiYPJQ8lDw0NJg4ADQU=", + "30":"JgDMAWA0ESMRIxEJEgkSCREkEAoRChEjESMRChEjEQkSCRIjESMRCRIjESMRCRIJEiMRCREKEQoRIxEJEgkSCRIJEQoRChEKEQkSCRIJEgkSCREKEQoRChEJEgkSCREKEQoRIxEKEQoRCRIJEgkSCREkEAoRChEJEgkSCRIJEQoRChEKEQoRIxEjEQkSCRIJEQoRChEKEQkSCRIJEgkSCRIJEQoRChEJEgkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQoRCRIJEgkSCRIJEQoRChEKEQkSCRIJEgkRChEkEAoRChEJEiMRAAj7ZjMRIxEkEQkRChEJEiMRCRIJEiMRIxEJESQQChEKESMRIxEKESMRIxEKEQkSIxEJEgkSIxEJEQoRChEKEQkSCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRIxEKEQkSIxEJEgkSIxEJEQoRChEKEQkSCRIJEiMRCREKEQoRChEJEgkSCRIJEQoRChEKEQoRCRIJEgkSCRIJEQoRChEJEgkSCREKEQoRChEKEQkSCRIJEgkRChEKEQkSCRIJEgkSCREKEQoRChEKEQkSCRIJEQoRChEjESMRIxEKESMRIxEjEQkSIxEADQU=", + "31":"JgDMAV82DyUQJA8MDwwPDQ0mDwwPDA4mDiYPDA8lDg0ODQ8lDiYODQ4mDiYODQ4NDiUPDA8MDw0OJQ4NDg0ODQ4ODgwODQ4NDwsPDA4NDg0ODQ4MDw0PDA8MDgwODQ4ODgwOJg4MDwwPDQ4NDg0NDQ4mDwwODQ4MDwwPDQ4MDw0NDQ8MDg0OJg4mDg0ODQ8LDwwPDQ4MDg0ODQ4NDg0ODQ8LEAwODQ0NDg0ODQ4NDwwPDA4MDwwODQ4NDg0ODA8NDgwODQ4ODQ4NDQ4NDgwPDA8NDgwODg4NDQ0ODQ4lDwwPDA8MDiYOAAkBYjYOJg8lDg0ODQ4MDyUQCw8MDyUPJQ8NDSYPDA4NDiYOJg4NDiYPJQ4NDg0OJg4MDwwPJQ8MDwwPDQ4MDwwODQ4NDgwPCxAMDg0ODQ4NDg0ODA8NDg0OJQ8MDg0OJg8MDg4NJg4NDg0ODA8MDwwPDA4NDg0ODg4MDgwPDA8MDw0NDg4NDQ4NDQ8LDw0ODA4NDg0ODQ4NDgwPDBALDwwODQ4NDg0ODQ4NDg0ODA8NDgwODQ4NDg4ODA4MDwwPDQ4MDg0ODQ4NDgwPDQ4MDg0ODQ4mDg0OJg4NDiYPJQ4mDwwOJg4ADQU=" + } + }, + "cool":{ + "silent":{ + "16":"JgDMAV82DiYOJg4NDg0ODQ4mDg0ODA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA8MDiYODQ4NDg0OJRALDwwPDA8MDg0ODQ4NDgwPDA8KEQwPDA4NDg0ODQ4MDwwPDA8MDyUPJQ8MDg0ODQ4NDg0ODA8MDyUPDA8MDg0ODQ8MDgwPDA8MDwwOJg8lDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4mDg0ODA8mDiYOAAj+YzYPJg4mDg0ODA8MDyUPDA8MDyUPJQ8MDyUPDA4NDiYOJg4NDiYPJQ4NDg0OJg4MDwwPJQ8MDwwPChEMDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPJQ8IEwwOJg4NDg0OJg4mDgwPDA8MDwwPDA4NDiYOJg4mDyUPDA4NDg0OChENDiUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDwsPDA8MDwwPDA4NDwwODQ4MDwwQCw8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4mDiYPDA4lDyUQCw8MDyUPJQ8ADQU=", + "17":"JgDMAV82DyUPJQ8MDwwPDA8lDwwODQ4mDiYODQ4mDg0ODQ4mDiYODA8mDiYODA8MDyUPDA8MDwwOJg4NDg0ODA8MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDiUPJRALDwwPDA8JEQ0ODQ4MDyUPDA8MEAsPDA4NDg0ODQ4MDwwPJQ8lDwwPDA8MDg0ODQ4NDg0ODQ4MDwoRDA8MDg0ODQ4MDwwPDA8MDwwODQ4KEQ0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8lDwwODQ4mDiYOAAj/YzYOJg4mDg0ODQ4NDiYODQ4MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8MDwwOJg4NDg0OJg4MDwwPCBMMDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0OJQ8MDwwPJQ8MDwwPJQ8lDwwODQ4NDg0ODQ4MDwwPJQ8lECQPDA8MDwwODQ4NDiYODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDggTDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4KEQwPDA8MDwwPDA4mDg0ODQ4mDiYODQ4MDyUPJQ8ADQU=", + "18":"JgDMAWAzESMRIxEJEgkSCRIjEQkSCRIjESMQChEkEAoRCRIjESMRCRIjESMRCRIJEiMRCRIJEQoRJBAKEQkSCRIJEgkRChEKEQoRCRIJEgkSCRIJEQoRChEJEgkSCRIJEiMRIxEJEgkRChEKEQkSCRIJEiMRCREKEQoRCRIJEgkSCRIJEQoRJBAkEAoRChEJEgkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQkSCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRChEKEQkSCRIJEgkRChEjEQoRChEjESMRAAj8ZTMRIxEjEQoRCRIJEiMRCRIJESQQJBEJESQQChEKESMRIxEKESMRIxEJEgkSIxEJEgkSIxEJEgkRChEKEQoRCRIJEgkSCREKEQoRChEJEgkSCREKEQoRIxEKEQkSIxEJEgkSIxEjEQkSCRIJEQoRChEJEiMRCRIjESMRCRIJEgkRChEKESMRCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRChEKEQoRCRIJEgkSCREKEQoRChEJEgkSCRIJEQoRChEKEQkSCRIJEgkRChEKEQkSCRIjESMRIxEJEiMRCREKESQQJBAADQU=", + "19":"JgDMAV82DiYPJQ8MDg0ODQ4mDg0ODQ4mDiYODA8lDwwPDA8lDyUPDA8lDyUPDA8MDiYPDA4NDg0OJg4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDyoKJQ8MDwwPDA4NDggTDQ4NDiUPDA8MDwwODQ4NDg0ODA8MDwwPJQ8lDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwQCw8MDg0ODQ4NDgwPDA8MDwwPDA8lDwwOChEmDiYOAAkAYjYPJQ4mDg0ODQ4NDiYODQ4MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8MDg0OJg4NDg0OJg4NDwsPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDg0ODQ4NDg0OJg4NDgwPJQ8MDwwPJQ8lDwkRDQ4NDg0ODA8MDwwPDA8lDyUPDA4NDgoRDQ4MDyUPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4mDg0OJg4NDiYODA8MDyUPJQ8ADQU=", + "20":"JgDMAV82DyUPJQ8MDwkSDA4mDwwODQ4mDiYODQ4mDg0ODQ4mDiYODQ4mDiUPDA8MDyUPDA8MDwwOJg4NDg0ODQ4MDwwPDA4NDg0OChEMDwwPDA8MDwwODQ4NDg0ODA8MDyUPJQ8MDwwPDA4NDg0ODQ4MDyUPDA8MDwwPDA4NDg0ODQ4NDgwPJQ8lDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4mDg0ODQ4mDiYOAAkDXzYOJg4mDg0ODQ4NDiYODA8MDyUPJQ8MDyUPDA8MDiYOJg8MDiYOJg4NDg0OJg4NDg0OJg4NDgwPDA8MDwwODQ8MDg0ODA8MDwwPDA4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0OJg4mDg0ODQ4MDwwPDA8MDiYPJQ8JESYODQ4NDg0ODA8MDyUPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPCRENDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8lDyUPDA8MDyUPDA8MDiYOJg4ADQU=", + "21":"JgDMAV82DiYOJg4NDwwODA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDyUODQ4NDgwPJQ8MDwwPDA4KEQ0ODQ4MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPChANDiYOJg4NDg0ODQ4MDwwPDA8MDiYODQ4NDg0ODA8MDwwPDA8MDg0OJg4mDg0ODQ4NDgwPDA8KEQwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPChANDg0ODQ4MDwwPDA8MDg0ODQ8MDgwPDA8lDwwPDA8lDyUPAAj+YzYPJQ8lDwwPDA8MDiYODQ4NDiYPJQ4NDiYOChENDiYOJg4MDyUPJg4NDgwQJA8KEQwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwOJg4KEgwOJQ8MDwwPJRAkEAsPDA8MDwwODQ4NDg0OJQ8MDyUPDA8MDwwPDA4NDiYOChENDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDQ4JEgwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4mDg0ODQ4NDiYODQ4MDyUPJQ8ADQU=", + "22":"JgDMAV82DiYOJg4NDg0ODQ4mDg0ODQ4lDyYODA8lDwwPDA8lDyUPDA8lDiYODQ4NDiYODQ4NDg0OJg4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDiYOJg4KEgwODQ4NDgwPDA8MDyUPDA8MDg0ODQ4MDwoSCw8MDwwPJQ8lDwwODQ4NDgwPDA8MEAsPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4mDg0ODA8lDyUPAAj+ZDYOJg8lDgwPDA8MDyUPDA8MDiYPJQ8MDyUPDA4NDiYOJg4NDiYOJg4NDgwPJQ8MDwwPJQ8MDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPJQ8MDg0OJg4NDgwPJg4mDg0ODA8MDwwPDA4NDiYODQ4NDyQPDA8MDwwPCRIJESYODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8lDyUPJQ8lDwwPDA8MDiYOJg8ADQU=", + "23":"JgDMAV42DyYPJQ4NDgwPDA8lDwwODQ4mDiYODQ4mDg0ODQ4mDiYODQ4mDiYODA8MDyUPDA8MDg0OJg8MDwwODQ4NDgwQCw8MDwwODQ4NDg0ODQ4MDwwPDA4NDgoRDQ4MDyUPJQ8MDwwPDA8MDwwPDA8MDiYODQ4NDgwPDA8MDwwODQ4NDgwPJQ8lDwwPDA8MDg0ODQ8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8lDwwODQ4mDiYOAAj+ZDYOJg4mDg0PDA4MDyYODQ4MDyUPJQ8MDyUPDA8MDiYPJQ8MDiYOJg4NDg0OJg4NDgwPJQ8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0PDA4MDwwPJQ8MDwwPJQ8MDwwOJg4mDg0ODQ4MDwwQCw8MDwwPDA4NDiYODQ4NDgwPDA8MDyUPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8lDwwPJQ8lDwwPDA8MDiYOJg4ADQU=", + "24":"JgDMAV82DyUPJQ8MDwwPDA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODA8MDyUPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDiUPJQ8MDwwPDA8MDwwODQ4NDiYODA8MDwoRDA8MDwwODQ4NDg0OJg4mDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ8MDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA8lDwwODQ4mDiYPAAj+YzYOJg4mDg0ODQ4NDyUODQ4MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUQJA8MDg0OJg8MDg0OJg4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0OJg4MEAsPJQ8MDwwOJg8lDwkRDQ4KEQ0ODA8IEyUPJg4lDwwPDA8MDg0ODQ4NDiYODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0OChENDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4mDiYODQ4mDwwODQ4MDyUPJQ8ADQU=", + "25":"JgDMAV82DyUPJQ8MDgoSDA4mDg0ODA8lDyUQCw8lDwwPDA4mDiYPDA4mDyUPDA8MDiYPDA4NDg0OJg4NDwsPDA8MDwwODQ8MDgwPDA8MDwwPDA4NDg0PDA4MDwwPDA8MDiYPJQ8MDg0ODQ4MDwwPDA8MDyUPDA8MDg0ODQ4NDgwPDA8MDg0OJg4mDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBAkDwwPDA8lDyUPAAj+YzYPJg4mDgwPDA8MDiYPDA4NDiYOJg4NDiYODQ4MDyUPJQ8MDyUPJg4MDwwPJQ8MDwwPJQ8MDg0ODQ4NDwwODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDg0OJg4NDg0OJg4MDwwPJQ8lDwwPDA8MDg0ODQ4NDwsPJg4mDg0ODA8MDwwPDA8MDiYODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDgoRDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8lDwwODQ4mDg0ODQ4MDyUPJQ8ADQU=", + "26":"JgDMAV82DyUPJQ8MDwwPDA4mDg0ODQ4mDiYOChEmDg0ODQ4mDiYODQ4mDiUPDA8MDyUPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDwwODQ4MDyUPJg4MDwwPDA8MDg0ODQ4NDiYODQ4MDwwPDA8MDg0ODQ4NDgwPJQ8lDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwoRDA8MDwwODQ4NDgwPDA8KEQwODQ4NDg0ODA8MDwwPDA8lDwwPDA4mDiYPAAj+YzYPJQ8lDwwPDA4NDiYOCBMMDyUPJg4MDyUPDA8MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDgwPDA8MDwwPCRENDg0ODQ4NDgwPDA8MDwwODQ4NDg0OJg4MDwwPJQ8MDwwPJQ8lDwwPDA8MDg0ODQ4MDyUPDA8lEAsPDA4NDg0ODQ4NDiYODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ8MDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDiYOJg4NDgwPDA8MDyUPJQ8ADQU=", + "27":"JgDMAV82DiYPJQ8MDwwODQ4mDg0ODQ4mDyUODA8mDgwPDA8lDyUPDA8lDyUPDBALDyUQCw8MDg0OJg4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPChEMDyUPJQ8MDwwPDA4NDg0ODQ4MECQPDA8MDwwPCRIMDg0ODQ4NDgwPJQ8lDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwkSDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwQCw8MDwwPDA4mDg0ODQ4mDiYOAAj/YzYOJg4mDwwODQ4NDiYODA8MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8KEQwOJg4NDg0OJg4NDgwPDA8KEQwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPJQ8MDwoRJQ8MDwwPJQ8lDwkRDQ4NDgwPDA8MDwwPDA8lDwwODQ4NDgwPDA8MDyUPDA8MDwwODQ4NDg0OChEMDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8lDwwPJQ8MDwwPDA4NDiYOJg4ADQU=", + "28":"JgDMAV82DiYPJQ8MDwwODQ4mDg0ODBAkDyUQCw8lDwwPDA8lDyUPDA4mDiYODQ4NDiYODQ8MDgwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDiYOJg8MDg0ODQ4NDgwPDA8MDiYPDA4NDg0ODQ4MDwwPDA8MDg0OJg4mDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwQCw8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4KEQ0ODA8lDwwPDA8lECQQAAj9YzYPJQ8mDgwPDA8MDyUPDA8MDiYOJg4NDiYODQ4NDiYOJg8IEiUPJQ8MEAsPJQ8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDBALDwwOJg8MDwwPJQ4NDgwPJQ8mDg0ODA8MDwwPDA4NDiYOJg8MDg0ODQ4MDwwPDA8MDiYODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsQCw8MDwwODQ4NDgoSCw8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDiYPDQ0NDg0ODQ4NDiUPJQ8ADQU=", + "29":"JgDMAV82DyUOJg4NDg0ODQ4mDwwODA8lECQPDA8lDwwQCxAkDyUPDA4mDyUPCRENDiYODQ8MDg0PJQ4NDgwPChEMDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDiYOJg8MDwwODQ8MDg0ODQ4MDyUPDA8MDwwODQ8MDg0ODA8MDwwOJg4mDwwODQ4NDg0ODA8MDwwPDA4NDwwPDA4NDgwPDA8KEQwODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4NDwsPDA8MDwwPDA4mDwwODQ4mDiYOAAj+ZDYOJg4mDg0ODQ4MECQPDA8MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8MDg0OJg4NDg0OJg4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDwwODQ4NDgwPJQ8MDwwPJRALDwwOJg8lDwwPDA4NDgwPDA8MDwwPJQ8MDwwODQ8MDgwPDA8MDyUPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwoRDA8MDg0ODQ4MDwwQCw8MDg0ODQ8MDwwODA8MEAsPDA4NDg0ODQ4NDwsQCxAlDwsPDA4NDg0ODQ4MDyUQJA8ADQU=", + "30":"JgDMAWA2DiYOJg4MDwoRDA8mDgwPDA4mDiYODQ4mDg0ODQ4mDiYODQ4lDyYOChEMDyYODA8MDxMIJQ8MDwwODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwoRDA4NDg0ODQ4NDiYOJg4NDgwPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDg0ODQ4NDg0OJg4mDgoSDA4MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8lDwwPDA4mDyUPAAj+YzYPJQ8lDwwPDA8MDiYPDA4NDiYOJg4NDiYODQ4NDiUPJQ8MDyUPJRALDwwPJQ8MDwwPJQ4NDg0ODQ4NDwsPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0OJg4NDg0OJQ8MDwwPJRAkDwwPDA8MDwwOChENDiYODQ4NDgwPDA8MDwwPDA4NDiYODA8MDwwPDA8MDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwQCw8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0OChEmDiYOJg4mDyUPJQ8lDwwOJg8ADQU=", + "31":"JgDMAV82DyUPJQ8MDwwPDA4mDg0ODQ4mDiYODQ4mDwwODQ4lDyUPDBAkDyUPDA8MDyUPDA8KEA0OJg4NDg0ODQ8LDwwPDA8MDgoRDQ4KEgsPDA8MDg0ODQ4NDg0ODQ4MDyUPJQ8MDwwPDA8MDg0ODQ4NDiUPDA8MDwwPCRIMDg0ODQ8MDgwPJQ8lDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0OChEMDwwPDA8MDg0ODQ4NDgwPDBALDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4mDwwPDA4mDiYOAAj+YzYPJg4mDg0ODBALDyUPDA8MDiYPJQ8MDiYPDA4NDiYOJg4NDiYOJg4NDgwPJQ8MDwwPJQ8MEAsODQ4NDg0ODA8MDwwPDA8MDg0PDA4NDg0ODA8MEAsPJQ8MDwkRJg4NDg0OJg4mDgwPDA8MDwwODQ4NDg0ODQ8LDwwPDA8MDwwODQ4NDiYODQ4MDwgUCw8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDBALDwwPDA4mDg0OJg8lDiYOJg4mDg0OJg4ADQU=" + }, + "low":{ + "16":"JgDMAV42DyUPJQ8MDwwPDA8lDwwODQ4mDiYODQ4mDg0ODQ4mDiYODA8lDyUPDA8MDyUPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPChEMEAsPDA4NDg0ODQ4MDwwPJQ8MDwwODQ4NDg0ODQ4MDyUQCw8MDwwPDA4NDg0ODQ4MDwwPJQ8lDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0PCw8MDwwPDA8MDwkRDQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ8lDg0OJg4NDiYOAAj/YzYOJg4mDg0ODQ4NDiUPDA8MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8MDwwOJg4NDwwOJg4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPJQ8MDwwPJQ8MDg0OJg4mDwwOChENDg0ODA8MDyUPJQ8lDyYODA8MDwwPDA4NDiYODQ4NDwsPChEMDwwPDA4NDg0ODQ4NDgwQCw8JEgwODQ4NDgwPDA8MDwwODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4mDiYODQ4mDyUPDA4NDiYOJg4ADQU=", + "17":"JgDMAV82DyUPJQ8MDwwPDA4mDg0ODQ4mDiYODQ4mDg0ODA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwoRJQ8MDwwPDA4NDg0ODQ4MDyYPCw8MDwwPDA8MDg0ODQ4NDgwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwQCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4KEQsQDA8MDwwPDA8lDg0OJg4NDiYOAAj/YzYOJg4mDg0ODQ4KESYODA8MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8MDg0OJg4NDg0OJg4NDgwPDA8MDwwPDA4KEQ0ODQ8LDwwPDA8MDg0ODQ4NDg0OJQ8MDwwPJQ8MDwwPJQ8lDwwPDA4NDg0ODQ4NDgwPJQ8lDyUPDA8KEQwPDA4KESYPDA4NDgwQCw8MDwwPDA4NDwwODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPChEMDwwODQ4mDg0ODQ4lDyYODQ4MDyYOJg4ADQU=", + "18":"JgDMAV82DiYOJg4KEQ0ODQ8lDwsPDA8lDyUPDA8lDwwPDA4mDiYPDA4mDiYODQ4NDiYODQ4MDwwPJQ8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDgoRJg4NDg0ODQ4MDwwPDA8MDiYODQ4NDg0ODA8MDwwPDA8MDg0OJg8lDg0ODQ4MDwwPDA8MDwkRDQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8lDwwPJQ8MDyUPAAj+YzYPJQ8lDwwPDA4NDyUODQ4NDiYOJg4NDiYODQ4KESYQJA4MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0OJg4NDg0OJg4MDwwPJRAkDwwPDBALDwwODQ8MDiYODQ4lDyUPDA8MDwwODQ4NDiYODQ4NDg0ODQ4MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ8MDg0ODQ4MDwwPDA8tBiYOJg8MDiYPDA4NDiYOJg4ADQU=", + "19":"JgDMAV82DiYOJg4NDgwPDA8lDwwPDA8lDyUPDA4mDwwODQ8lDyUODQ4mDiYODQ4NDiYODA8MDwoRJQ8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwPDA4NDg0OJg4MDwwPDA8MDg0ODQ4NDiUPDA8MDwwPDA8MDwwODQ4NDgwPJQ8lDwwQCREMDg0ODQ4NDwsPDA8MDwwPDA8MDg0PDA4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDg0OJg4NDiYOAAj+ZDYOJg4mDg0ODQ4MDyYPCw8MDyUPJQ8MDyUPDA8MDyUPJQ8MDiYOJg8MDg0OJg4NDg0OJg4NDgwPDA8MDwwODQ4NDg0ODQ8LEAsPDA8MDg0OChEMDwwPJQ8MDwwPJQ8MDg0OJg4mDg0ODQ4NDgwPDA8MDwwPDA4mDiYODQ4NDg0ODQ4MDyUPDBALDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8lDwwPJQ8MDyUPDA4KESYOJg4ADQU=", + "20":"JgDMAV82DiYOJg4NDg0ODQ4mDgwPChElDyUPDA8lDwwPDA8lDyUPDA8lDyUPDA8MDiYODQ4NDg0OJg4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0ODA8MDwwPDA8MDyUPDA4NDg0ODQ4NDgwPDA8MDwwOJg8lDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MEAsPDA4NDg0OChEMDwwPDA8MDwwODQ4NDwsPDBALDwwOChENDg0ODQ4mDg0OJQ8MDyUPAAj+YzYPJRAkDwwPDA8MDiYODQ4NDiYOJg4NDiYODQ4NDiYOJg4NDiYPJQ4NDgwPJQ8MDwwPJQ8MDwwPDA4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4KEQ0OJg4NDg0OJg4NDgwPJQ8lEAsPDA8MDg0PDgwNDiYOJg4NDiYPDA4MDwwPDA8MDiYPCREKEQ0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4KEQ0ODA8MDwwPDA4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA4NDiYODQ4NDiUPJg4ADQU=", + "21":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA8lDwwODQ4mDiYOChEmDiYODQ4MDyUPDA8MDwwPJQ8MDgoRDQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwoRDA4NDg0OJg4MDwwPDA8MDg0ODQ4MDyYODA8MDwwPDA8MDwwODQ4NDg0OJg4mDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4KEQwPDA8MDwwODQ4NDg0ODA8MDwwPDA8lDwwPJQ8MDiYPAAj+YzYPJQ8lDwwPDA4NDiYODQ4MDyUPJQ8NDiUPDA8MDyUPJQ8MDyUPJQ8MDwwPJQ4NDg0OJg4NDg0ODQ4MDwwPDA8MDwkRDQ4NDgwPDA8MDwwODQ4NDgwPJQ8MDwwPJQ8MDwwPJQ8lDwwODQ4NDg0ODQ4MDwoRJQ8MDyUQCw8MDwwODQ4NDiYODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPChEMDwwPCRENDg0ODQ4MDwwPDA8MDwwPDA4mDg0ODQ4MDyUPDA8MDyUPJQ8ADQU=", + "22":"JgDMAWA1DyUPJQ8MDwkSDA4mDg0ODQ4mDiYOChEmDg0ODA8lECQPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDg0ODA8MEAsPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgoRDQ4MDwwPJQ8MDg0ODQ4NDg0ODA8MDyUPDA8MDwwODQ4NDg0ODA8MDwwPJQ8lDwwPDA4NDg0ODQ4KEQwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4KEQwPChEMDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4mDg0OJg4NDiYOAAj+ZDYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8MDyUPDA8MDiYPJQ4NDiYOJg4NDg0OJg4NDgwPJQ8KEQwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPJQ8MDwwPJQ8MDg0OJg4mDg0ODQ4MDwwPDA8MDiYODQ4NDiYODQ4NDgoRDA8MDyUQCw8JEQ0ODQ4NDg0ODA8KEQwPDA4NDg0ODQ4NDg0ODQ4MDwwODQ8JEQwPDA8MDwwOChENDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8lDyUPJQ8lDwgTDA8MDyUOJg8ADQU=", + "23":"JgDMAV82DyUPJRALDwwPDA8lDwwPDA4mDiYPDA8lDg0ODQ4mDiYODQ4mDiYODA8MDyUPDA8MDwwOJg4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPJQ8MDwkSDA4NDg0ODQ4NDiUPDA8IEwwODQ4NDgoRDA8MDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDgoRDQ4MDwwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8JEQ0ODQ4mDwwOJQ8KESUPAAj+YzYPJQ8lDwwPDA8MDyUODQ4NDiYOJg4NDiYPDA4MDyUPJQ8MDyYOJRALDwwPJQ8MDwwPJQ8MDwwODQ4NDgoRDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OJg8MDgwPJQ8MDwkSJQ8lDwwPDA8MDwwODQ4NDgwPDA8MDyUPDA4NDg0ODQ4NDiYODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwoRDA4KEQ0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODA8lDwwPJQ8lDwwPDA8MDiYPJQ8ADQU=", + "24":"JgDMAV82ECQPJQ8MDwwPDA4mDg0ODA8mDiYODQ4mDgwPDA8lDyUPDA8lDyUPDA8MDiYODQ4NDg0OJg4MDwwPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0OChEMDwwPDA8MDwwPJQ8MDg0ODQ4MDwwPDA8MDyUODQ4NDg0ODQ4MDwwPDA8MDg0OJg4mDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0OChEMDwwPDA8MDwwODQ4NDgwPDA8lDwwPJQ8MDyUPAAj+YzYPJQ8lDwwPDA4NDiYODQ4MDyUPJQ8MDyUQCw8MDiYOJg4NDiYOJg4NDg0OJg4NDg0OJg4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwPJQ8MDg0OJg8lDg0PCw8MDwoRDA8MDiYPJQ8lDg0OChENDg0ODA8MDyUPDA8MDwwODQ4NDgoRDA8MDwwPDA4NDg0ODQ4KEQwPDA8MDwwODQ4NDgwPDA8IEwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8lDyUPDA8lEAsPDA8JESYOJg4ADQU=", + "25":"JgDMAV82DyUPJQ8MDwwPDA8lDwwODQ4mDiYODQ4mDg0ODA8lDyUPDA8lDyUPDA8MDyUPDA8MDwwPJQ8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4MDyUPDA8MDwwODQ4NDgoRDQ4MDwwPJQ8lDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4IEw0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwPCREKEQ0ODQ4MDwwPDA8MDg0ODQ4MDwwPChEMDwwPDA4mDwwOJg4NDiYOAAkAYjYPJQ8lDwwODQ4NDiYODQ4MDyUPJg8LDyUPDA8MDyUPJQ8MDyUOJg4NDg0OJg4NDg0OJQ8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPCBMMDg0ODQ4NDgwPJQ8MDwwPJQ8MDwwOJg8lDwwPDA4NDg0ODQ4MDwwPJQ8lDwwPDA4NDg0ODQ4NDiUQCw8MDwwPDA4NDg0ODA8MDwwPDA4NDggTDQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPDA8lDwwPDA4NDiYOJg4ADQU=", + "26":"JgDMAV82DyUPJQ8MDg0ODQ4mDg0ODQ4mDiYODQ4mDgwPDA8lDyUPDA8lDyUPDA8MDiYPDA4NDg0OJg4NDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDwsPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODQ4MDwoRDA8MDwoRJQ8lDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUPAAj+ZDYOJg4mDg0ODQ4NDiUPDA8MDyUPJQ8MDyUPDA8MDyUOJg8MDiYOJg8KEA0OJg4NDg0OJg4MDwwPDA8MDwwODQ4NDg0ODA8NDgwPDA8MDwwODQ4NDgwPJQ8MDwwPJQ8MDgoRJg4mDg0ODQ4NDgwPDQ4MDyUPDA8lDwwPDA8MDg0ODQ4KESYODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8JEQoRDQ4NDg0ODA8MDwwPDA8MDg0ODQ4mDiYOJg4NDgwPDA8MDyUPJQ8ADQU=", + "27":"JgDMAV82DiYOJg4NDg0ODA8mDgwPDA8lDyUPDA8lDwwPDA8lDiYODQ4mDiYPDA4NDiYODQ4MDwwPJQ8MDwwPDA4NDg0ODBALDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4KEQ0OJg4NDgwPDA8MDwwPDA4NDiYODQ4NDgwPDA8MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8lEAsPJQ8MDyUPAAj+YzYPJQ8lDwwODQ4NDiYODQ4MDyUQJA8MECQPDA8MDyUPJQ8MDyUPJQ8MDwwOJg4NDg0OJg4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0OJQ8MDwwPJQ8MDwwPJQ8lDwwODQ4NDg0ODQ4MDwwPDA8lDwwODQ4NDg0ODQ4MDyUPDA8MDwwPDA8MDg0ODA8MDwwPDA4NDgoRDQ4MDwwPDA8MDwwPDA4NDg0PCw8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPDA8MDiYPJQ8ADQU=", + "28":"JgDMAV82DiYOJg4MDwwPDA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4MDyUPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MEAsPDA8MDg0ODQ4NDwwOJg4NDgwPDA8MDwwODQ4NDyUPCw8MDwwPDA8MDg0ODQ4NDg0OJQ8lDwwPDA8MEAsODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODA8MDwwPDA4NDgoRDQ4MDwwPDA8lDwwOJg4NDiYOAAj/YzYPJQ4mDg0ODQ4NDiYPCREMDyUPJg4MDyUPDA8MDyUPJQ8MDyUPJQ8MDwwOJg4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA8MDg0OJQ8MDwwPJRALDwwPJQ8lDwwPDA8MDg0ODQ4MDyUPJQ8MDwwPDA8MDg0PDA4NDiUQCw8MDwwPDA4NDg0ODQ4NDgoRDA8MDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ8MDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4mDiYOChENDgwQCw8MDyUPJQ8ADQU=", + "29":"JgDMAV82DiYOJg4MDwwPDA8lDwwPDA4mDiYPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiYOChEMDwwPJQ8MDg0ODQ4NDg0ODA8MDwwPCRIMDg0ODQ4NDg0ODA8MDwwODQ4NDg0OJg4KEQwPDA8MDwwPDA4NDiYODQ8MDgwPDA8MDwwODQ4NDg0OJg4mDg0ODA8MEAsPDA8MDg0ODQ4KEQwPDA8MDwwPDA4NDgwPDA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8lDwwPJQ8MDyUPAAj+YzYPJQ8lDwwPDA8MDyUPDA4NDiYPJQ4NDiYPDA4MDyUPJQ8MDyUPJQ8MEAsPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwPDBALDg0ODQ4MDwwPDA8MDwwOJg4NDg0PJQ4NDgwPJQ8lDwwPDA8MDwwPDA8MDg0OJg8LDwwQCw8MDwwODQ4KESYODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ8MDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4mDg0ODQ4NDgwPDA8MECQPJQ8ADQU=", + "30":"JgDMAWA1DyYOJg4MDwwPDA8lDwwODQ4mDiYODQ4mDg0ODA8lDyYODA8lECQQCw8MDyUPDA8MDg0OJg4NDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPDA8JEQ0ODQ4MDyUPDA8MDwwPDA8MDg0ODQ4NDgwPJRAkDwwPDA4NDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MEAsPDA4mDg0OJg4NDiYOAAj/YzYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8MDiYPDA4NDiYOJg4NDiYPJQ4NDg0OJg4NDgwQJA8MDwwPDA8MDg0PCw8MDwwPDA8MDwwPDA4NDg0ODA8MDwwPJQ8MDg0OJg8MDg0OJg4mDgwPDA8MDwwPDA8MDiYODQ4NDgwPDA8MEAsPDA4NDicNDQ4MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDwwOChILDwoRDA4mDyUOJg8lDyUOJg8lDwwPJQ8ADQU=", + "31":"JgDMAV81DyUPJQ8MDwwPDA4mDwwODQ4mDiYODQ4mDgwPDBAkDyUPDA8lDyUQCw8MDiYODQ4NDg0OJg4MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4MDwwPJQ8MDwwPDA8MDg0ODQ4NDiUPDA8MDwwODQ4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDgkSDA8MDwwPDA8MDg0ODQ4MDwoRDA8lDwwOJg8MDiYOAAj+YzYPJQ8lDwwODQ4NDiUPDA8MDyUPJQ8MDyUPDA4NDiYOJg8MDiYOJg4NDg0OJQ8MEAsPJQ8MDwkSDA4NDg0ODQ8LDwwPDA8MDg0OChEMDwwPCRIMDg0OJg4NDgwPJRALDwwPJQ8lEAkSCw4NDg0ODA8MDwgTDA4NDgoRDQ4MDwwPDA8MDiYODQ8MDg0ODA8MDwwPDA4NDg0PCw8MDwoRDA8MDggTDQ4NDg0ODA8MDwwOCRINDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4lDwwPJQ8lDyUPJg8lDg0OJQ8ADQU=" + }, + "mid":{ + "16":"JgDMAV82DiYOJg4NDgwPDA8lEAsPDA8lDyUPDA8lDwwODQ4mDyUPDA4mDiYPDA4NDiYODQ4MDwwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0OJg4NDgwPDA8MDwwPDA8MDg0PJQ4NDgwPDA8MDwwODQ4NDg0OJg4mDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8MDg0PDA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDwwODA8lDwwPJQ8lDyUPAAj+ZDUPJQ8lDwwPDA8MDyUODQ4NDyUPJQ4NDyUODQ8MDiYOJg4NDiUPJQ8MDwwPJQ8MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OChEMDwwPDA8MDg0OJg4NDg0OJg4NDgwPJQ8lDwwQCw8MDg0ODQ4NDiUPJg4mDiYODQ4MDwwPDA8lDyUPDA8MDg0ODQ4NDgwPDA8MEAsPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4lDwwPJQ8lDyUPDBALDyUPJQ8ADQU=", + "17":"JgDMAV82DiYOJg4NDg0PCw8lDwwPDA8lDyUPDA4mDwwODQ8lDyUODQ8lDyUODQ4NDiYPCxALDwwPJQ8MDwwODQ8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwQCw8MDwwODQ4NDg0OJQ8MDwwPDA8MDwoRDA4NDg0PJBALDwwQCw8NDQ0ODQ4NDwsQJBAlDwsPDA8MEAsPDA4NDg0ODQ4MDwwQCxALDg0ODQ4NDgoRDA8MDwwPDA4NDg0OChENDwsPDA8MDg0ODQ4NDg0ODBALEAsPDA8MDg0ODQ4NDgwQCxAkDwwPJQ8lDyUOAAj/YzYPJQ8lDwwPDA8MDiYPDA8MDyUOJQ8MDyYODA8MDyUQJA8MDyUQJA8MDwwOJg4NDg0OJg8MDwwODBALDw0ODA8NDQ0PDA4NDgwPDA8MDwwODQ4NDg0OJg8LDwwPJQ8MDwwPJQ8lDwwPDA4NDg0ODA8MDwwPJQ8lDyUPDA8MDg0ODQ4mDyUODQ4NDgwPDBALDwwPDA4KEQ0PDA4NDgwPDA8MDwwODQ4NDg0ODA8KEQwPDA4NDg0ODQ8LDwoSCw8MDwwODQ4KEQwPDQ4MDwwPDA8lDyUPDA4mDiYODQ4NDyUOJg4ADQU=", + "18":"JgDMAV82DyUPJQ8MDwwPDA8lDwwPDA4mDiYODQ4mDwwODQ4mDyUODQ4mDiYPDA4NDiUPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwPDA4NDwwODQ4MEAsPDA8MDg0ODQ8LDwwPJQ8MDwwPDA8MDgoSDA4MDwwPJQ8MEAsPDA4NDg0ODQ4NDgwPJQ8lDwwPDA8MDwwODQ4NDg0ODA8KEQwPDA4NDg0ODA8MDw0ODA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8MDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4mDg0OJg8lDiYOAAj+ZDYOJg8lDwwODQ8MDiYPDA4NDiYOJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8MDg0OJg4NDg0PJQ8MDg0ODA8MDwwPDA8MDg0OChENDgwPDA8MDwwPDA4NDg0OJg4MDwwPJQ8MDwwOJg4mDg0ODQ4NDgwPDBALDyUQCw8lDyUPChEMDg0ODQ8lDiYODQ4NDgwPDA8MDwwPDA4NDgoRDA8MDwwQCw4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDwsPDA8MDwwODQ8MDg0ODA8MDwwPDA8lDg0ODQ4mDiYODQ4MDyUPJg4ADQU=", + "19":"JgDMAV42ECQPJQ8MDwwPDA8lDg0ODQ4mDiYPDA4mDwwODQ4mDiYODBAkECQPDA8MDyUQCw4NDg0OJg8MDg0ODA8MDwwPDA8MDwwOChENDgwPDQ4MDwwODQ4NDwwODQ4NDgwPJQ8MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPJQ8lDwwODQ4NDg0ODQ4MDwoRDBALDwwODQ8MDgwQCw8MDwwPDA4NDg0ODQ8LDwwPChEMDg0ODQ4NDg0ODA8MDwwODQ4NDg0PDA4MDwwPDA8MDwwODQ4mDg0OJg8lDyUOAAj/YzYPJQ8lDwwODQ4NDiYODQ4NDiUPJQ8MDyUPDBALDyUPJQ8MDyUPJQ8MDg0OJg8MDg0PJQ8MDgwPDA8MDwwODQ4NDg0ODA8MEAsPDA8MDg0PDQ0NDg0OJg8MDgwQJA8MDwwPJQ8lDwwODQ4NDg0ODQ4MDwwQCw8lDyUQCw8MDwwODQ8lDiYODQ4NDgwPDA8MDg0PDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4NDgwPDA8MDwwPDA4mDiYOJg4NDyUODQ4NDiYPJQ8ADQU=", + "20":"JgDMAV42DyUPJRALDwwPChElDwwPDA8lDyUPDA4mDg0ODQ4mDyUPDA4mDyUODQ4MDyUPDA8MDwwOJg8MDg0ODQ4NDwwODA8MDwwODQ4NDwwODA8MDwwPDA8MDg0ODQ4NDgwQJA8MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwPDA4KEgwPDA8LEAsPJQ8lEAsPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ8LDwwPDA8MDg0ODQ8MDgwPDA8MDwwPDA8lDg0OJg4mDiYPAAj+YzYPJRAkDwwPDA8MDiYPDA4NDyUOJg4NDiYODQ4MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODQ4MDwwPDA8JEQ0PDA4NDwsPDA8MDwwPDA8MDg0OJg4NDg0OJQ8MDwwPJQ8lDwwPDA8MDwwODQ4NDiUPJg4MDyUQCw8MDwwPDA8lDyUPDA8MDg0OChEMDwwPDA8MDwwODQ4NDwwODA8MDwwPDA4NDg0ODQ8MDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ8LDwwPDA8lDwwPJQ8MDyUPDA8MDiYOJg4ADQU=", + "21":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDyUPDA8lDg0ODA8lDyUQCw8lECQPDA8MDyUPDA8MDg0OJg4NDg0ODA8MDwwPDA4NDwwODQ4NDgwPDA8MDwwODQ4NDwsQDA4MDwwPJQ8MDwwPDA4NDg0PDA4MEAsPJQ8MDwwODQ8MDwwODA8MDwwPJQ8lDwwPDA4NDg0PDA4NDgwPDA8MDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwkRDQ8MDgoRDA8MDwwODQ4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDg0OJg8lDyUOAAj/YzYOJg4mDg0ODQ4NDiYODQ4MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUQJA8MEAsPJQ8MDg0PJQ8MDgwPDA8KEQwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0PJQ4MDwwPJQ8MDwwPJQ8lDwwPDA4NDg0PDA4MDwwQJA8MDiYPDA4NDg0ODQ4mDiYODA8KEQwQCw8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4mDiYODQ4NDiYODQ4MDyUQJA8ADQU=", + "22":"JgDMAV80ESMRIxEJEgkSCRIjEQkRChEkECQQChEkEAoRChEjESMRCRIjESMRCRIJEiMRCREKEQoRIxEKEQkSCRIJEgkSCREKEQoRChEJEgkSCRIJEQoRChEJEgkSCRIJEQoRIxEKEQoRCRIJEgkSCRIJEQoRIxEKEQkSCRIJEQoRChEKEQkSIxEjEQoRCRIJEgkRChEKEQkSCRIJEgkSCREKEQoRChEJEgkSCRIJEQoRChEJEgkSCRIJEgkRChEKEQkSCRIJEgkSCREKEQoRCRIJEgkSCREKEQoRChEjEQkSIxEjESMRAAj7ZjMRIxEkEAkSCRIJEiMRCREKESQQJBAKESMRChEJEiMRIxEJEiMRIxEJEgkSIxEJEQoRJBAKEQoRChEJEgkSCRIJEQoRChEJEgkSCRIJEQoRChEKEQkSIxEJEgkSIxEJEgkRJBAkEAoRChEJEgkSCRIJEiMQChEKESQQChEJEgkSCRIjESMRCRIJEQoRChEKEQkSCRIJEgkRChEKEQoRCRIJEgkSCREKEQoRCRIJEgkSCREKEQoRChEJEgkSCRIJEQoRChEKEQkSCRIJEgkSCREkEAoRChEKESQQCRIJEiMRIxEADQU=", + "23":"JgDMAV82DyUQJA8MDwwPDA4mDg0PDA8lDiYODQ4lEAsPDA8lDyUQCw8lDyYODA8MDyUPDA8MDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ8MDg0ODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPJQ8MDwwPDA4NDg0ODQ4MDwwPJQ8lDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ8LDwwPDA4NDg0ODQ4NDgwPDQ4MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ8JEQwPDA8MDwwPDA4mDwwOJg8lDiYOAAj/YzYPJQ8lDwoRDA8MDiYPDA4NDiYOJg8LDyUPDA8MDyUPJQ8MDyUQJA8MDwwOJg8MDg0PJQ4NDg0OChENDgwPDA8MDwwPDA4NDg0ODQ8LDwwQCw8MDg0OJg4NDgwPJQ8MEAsPJQ8lDwwPDA8MDg0ODQ4NDwwODBALDyUPDA8MDwwODQ8lDiYODQ4MDwwPDA8MDwkRDQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ8MDgwPDA8MDwwPDA4mDiYOJg4mDg0ODQ4NDiYPJQ4ADQU=", + "24":"JgDMAV42ECQPJQ8MDwwPDA8lDwwPDA4mDiYPDA4mDg0ODQ4mDiYODQ4mDyUODQ4MDyUQCw8MDwwPJRALDwwPDA4NDwkRDA8MEAsPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwPDA8MDwwPDA4NDg0OJg4MEAsQCw8MDg0ODQ8MDg0OJg4mDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDwwODBALDwwPDA8MDg0ODQ4MDwwQCw8NDQ0ODQ4NDgwPDA8MDwwPDA4mDwwPJQ4mDiYOAAj/YzYPJRAkDwwPDA8MDyUPDA4NDiYOJg8LDyUPDA8MDyUPJQ8MDyUQJA8MEAsQJBALDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OJg4NDgwPJRALDwwQJA8lDwwPDA8MDwwODQ4NDyUPJQ4mDwwODQ4MDwwPDA4mDiYPDA4NDg0ODQ4MDwwPDA8MDwwPDA8MDg0PCw8MDwwPDA4NDg0ODQ4MDwwQCw8MDg0ODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDwwODA8lDwwPJQ8lEAsQCw8MDiYOJg4ADQU=", + "25":"JgDMAV82DyUPJg4NDgwQCw8lDwwPDA4mDyUODQ4mDg0ODQ4mDyUODQ4mDiYODA8MDyUPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwODQ4NDwwODQ4NDwsPDA8MDwwODQ4NDg0OJg4NDgwPDA8MDg0ODQ4NDgwQJA8MDwwPDA8MDg0ODQ4NDgwPJQ8lEAsPChEMDwwPDA8MDwwODA8MEAsPDA8MDg0ODQ4NDg0ODA8KEQwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8lEAsPJQ8lDyUPAAj+YzYPJQ8lDwwPDA8MDyUPDA4NDiYOJg4NDiYPDA4NDiYPJQ4NDiYOJg8MDg0PJQ4NDgwPJQ8MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPJRALDwwPJQ8MDg0OJg4mDg0ODQ4MEAsPDA8MDg0OJg8lDg0ODQ4NDwwPCw8lDyUPDA8MDwwPDA4NDg0ODA8MDwoRDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4mDiYPCw8mDgwPDA8MDyUPJQ8ADQU=", + "26":"JgDMAV82DiYOJg4NDg0ODA8mDwsPDA8lDyUPDBAkDwwPDA8lDyUPDA4mDiYODQ4NDiYODQ4NDgwPJRALDwwPDA8MDwwODQ8MDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4KEQ0OJg4NDg0ODA8MDwwPDA8MDg0PJQ4NDg0ODQ4MDwwPDA4NDg0OJg4mDwwODQ4MDwwQCw8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDg0ODQ4NDgwQCw8MDwwPDA4NDg0ODQ4NDgwQCw8MDwwODQ4NDg0ODQ4mDg0OJQ8lDyUPAAj+ZDYPJQ8lDg0ODQ4MDyUPDA8MDyUPJQ8MDyUQCw8MDyUOJg8MDiYOJg8MDg0OJg4NDwwPJA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwoRJRALDwwPJQ8MDg0OJg4mDwwPDA4NDgwPChEMDyUPDA8lDwwPDA4NDg0ODQ4mDyUODQ4MDwwPDA8MDg0ODQ4NDwsPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODBALDwwPDA8MDwkSDA4mDg0ODQ4mDgwPDA8MDyUPJQ8ADQU=", + "27":"JgDMAWA1DyUOJg4NDg0ODQ4mDg0ODA8lDyUPDA8lDwwPDA4mDiYPDA8lDiYODQ4NDiYPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0ODBALDwwPDA4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0PDA4NDgwPDA8MDwwPJQ8MDg0ODQ4MDw0ODA8MDwwOJg8lDwwODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDBALDwwPDA8MDwwODQ4mDg0OJg4mDiYOAAj/YzYOJg4mDg0ODQ4NDiYPDA4MDyUPJQ8KETAEFgUMDyUPJQ4NDiYOJg4NDg0OJg8MDg0OJg8LDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPJRALDwwPJQ8lDwwPDA4NDg0PCw8MDwwPDA4mDwwODQ4NDg0ODA8lECQPDA8NDgwPDA8MDg0ODQ4NDgwQCw8MDwwODQ4NDwwODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0PCw8MDwwPDA4NDg0ODA8mDiYOJg4NDwwODBALDyUPJRAADQU=", + "28":"JgDMAV82DyUPJQ8MDg0ODQ4mDwwODQ8lDiYODQ4mDg0ODA8lECUODA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0PCw8KEQwPDA8MDg0PDA4NDgwPDA8MDwwODQ4NDg0PDA4MEAsPJQ8MDwwPDA4NDg0ODA8MDwwPJQ8MEAsPDA4NDg0ODQ8LEAsPJRAkDwwPDA8MDwwODQ4NDgwPDA8KEQwODQ4NDg0ODQ4MEAsPDA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MEAsPDA8lDwwOJg4mDyUOAAj/YzYPJQ8lEAsPDBALDyUPDA4NDiYOJg4NDiYPDA4NDiUPJQ8MDyUPJg4MDwwPJQ8MDwwOJg4NDg0ODQ4NDg0ODA8MDwwPDQ0NDg0ODQ4MDwwPDA8MDg0OJg4NDg0OJQ8MDwwPJQ8lDwwQCw8MDwwPDA4KESYOJg4NDg0ODQ4MDwwQCRElDyUPDA8MDg0ODQ4MDwwPChEMDwwODQ4NDwsQCw8MDwwODQ4NDg0ODQ4NDgwQCw8MDwwPDA4NDg0PCw8MDwwPDA8MDg0ODQ4NDwsPDA8mDgwPJQ8MDg0PDA4NDiYOJg4ADQU=", + "29":"JgDMAV42DiYOJg4NDwsPDA8lDwwQCw8lDyUPDA8lDwwPDA4mDiYODQ4mDyUPDA4NDiYODQ4NDgwPJQ8MDwwPDA8MDwwPDA4NDwwODA8MDwwQCw8MDg0ODQ4NDg0ODBALDwwPJRALDwwODQ4NDgwQCw8MDwwOJg8MDwkRDQ4NDgwPDA8MDwwOJg8lDwwODQ4NDg0ODQ4KEQwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwQCw8MDg0ODQ8MDg0ODQ4MDwoRDA8MDg0ODQ4KEQ0PCw8MDwwPDA4mDg0OJg4mDiYOAAj/ZDYOJg4mDg0ODQ4NDiUPDA8MDyUPJQ8KESUQCw8MDiYOJg4NDiYOJg8MDg0OJg4NDg0OJRALDwwPDA8MDwwPDA4NDg0ODQ4MDwoRDA8MDg0ODQ4NDgwPJQ8MDwwPJQ8MDwwPJQ8lDwwPDA4NDg0ODQ4MEAkSJA8MDwwODQ4NDwwODA8lECQPDA8MEAsPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4mDyUPDA4NDg0ODQ4MDyUPJQ8ADQU=", + "30":"JgDMAV42DyYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiYODQ4MDwwPJQ8MDwwPDA4NDg0ODA8MDwwPDA8MDwkSDA4NDgwQCw8MDwwPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0ODA8MDwwPDA4NDg0OJg4mDg0OChENDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0PCw8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4mDg0OJg4mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg4NDiYODQ8MDiYOJQ8MDyUPJQ8MDwwPJQ8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwPDA4NDgoRDQ8LDwwPDA8MDwwPJQ8MDg0OJg4NDgwPJQ8lDwwPDA8MDwwPCRIMDiYPDA4NDg0ODA8MDwwPDA4mDyUPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4MDwwPDA8MDwwODQ4NDg0ODA8lDwwPDA8MDg0ODQ4NDiYPJQ4ADQU=", + "31":"JgDMAWE2DiYOJg8MDg0ODQ4mDgwPDA8lECQPDA8lDwwPDA4mDiYPDA4mDyUPDA4NDiYODQ4NDg0OJg4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ8MDg0ODQ4MDwwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8KEQwPJQ8MDg0ODQ4NDgwPDA8MDg0OJg4mDwwODQ4NDg0OChEMDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDwwODQ4MDwwPDA4NDg0ODQ4MDwwQCw8MDg0ODQ4NDg0ODBALDwwPDA8MDg0ODQ8lEQoOJg4mDiYOAAj/YzYQJQ4lDwwODQ8MDiYODQ4NDiYOJg8LDyYODQ4MDyUQJA8MDyUPJQ8MDwwPJQ8MDg0OJg8MDg0ODQ4NDgwPDBALDwwPDA4NDg0ODA8MDwwPDA4NDg0OJg4NDg0OJg4NDgwPJQ8lDwwPDA8MDg0ODQ4NDgwPDBALDwwPDA8MDg0ODQ4mDiYODQ4NDgwPDA8MDwwODQ4NDg0PCw8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8lDiYPJQ8lDyUPJQ8lDwwPJQ8ADQU=" + }, + "high":{ + "16":"JgDMAV82DyUPJQ8MDg0ODQ4mDg0ODA8lDyUPDA8lDwwPDA8lDyUQCw8lDyUPDA8MDiYODQ4NDg0OJg4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgoRDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwODQ4NDg0ODA8MDwwPJQ8lDwwPDA8MDg0ODQ4KEQwQCw8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDwwODQ4NDgoRDA8MDwwPDA8MDwwODQ4mDg0OJg4NDgwPAAj+YzYPJRAkDwwPDA8MDyUPDA8MDyUPJQ8MDiYODQ4NDiYOJg4MDyUPJQ8MDwwPJQ8MDwwPJQ8MDg0ODQ4NDgwPDA8MEAsPDA4NDg0ODQ4NDgwPDA8MDwwOJg4NDg0OJg4MDwwPJQ8lDwwPDA8MDg0ODQ4NDiYOJg4mDiYODQ4NDgwPDA8lDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDggTDQ4MDwwPDA8MDwwODQ4NDg0ODQ4lDwwPDA8MDwwOJg8MDiYOJg4ADQU=", + "17":"JgDMAV82DiYOJg4NDg0ODQ4lDwwPDA8lDyUPDA8lDwwODQ4mDiYPDA8lDiYODQ4NDiYODQ4NDgoRJQ8MDwwPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODBALDwwPDA8MDg0OJg4NDg0ODA8MDwwPDA4NDiYOJg4NDg0ODQ4MDwwPDA8MDwwOJg4mDg0ODQ4NDwsPDA8MDwwODQ8MDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4lDwwPJQ8MDwwPAAj+YzYPJQ8lDwwPDA8MDiYPDA4NDiYOJg4NDiYODQ4NDiUPJQ8MDyUPJQ8MDwwPJQ8MDwwOJg8MDg0ODQ4MDwoSCw8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0OJg4NDg0OJg4mDgwPDA8MDwwPDA4KEQ0OJg4mDiYODQ4MDwwPDA8lDwwPJQ8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8mDiYOJg4mDiYODQ4MDyUPJQ8ADQU=", + "18":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ8kDwwPDA8lECQPDA8lDyUPDA8MDiYOChENDg0OJg4NDgwPDA8MDwwPDA4NDg0PCw8MDwwPDA8MDwwODQ4NDgwPDA8MDwwOJg4NDg0ODQ4MDwoRDA8MDyUPJQ8MDwwODQ4NDgwPDQ4MDwwPJQ8lDwwODQ8JEQ0ODA8MDwwPDA8MDg0ODQ8MDgoRDA8KEQwPDA4NDg0ODA8MDwwPDA8MDgoRDQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4mDg0OJg4NDg0OAAj+ZDUPJQ8mDgwPDBALDyUPDA8MDiYOJg4NDiYODQ4NDiYOJg4NDiYPJQ4NDg0OJQ8MDwwPJQ8MDwwPDA4NDg0PCxALDwwPDA8MDwwODQ4MDwwPDA8KEQwPJQ8MDgoRJg4NDg0OJQ8lDwwPDA8MDwwPDA4NDiYODQ4mDiYODQ4NDgwQCw8lDwwPJQ8MDwwPDA4NDg0ODBALDwwPDA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDwsPDA8MDwwPDA4NDwwODA8lDwwPJQ8mDiYODA8MDyUPJQ8ADQU=", + "19":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYODQ4KEQwPJQ8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0ODQ4MDwwPDA4NDiYOJg4NDg0ODQ4MDwwPChEMDwwOJg4mDg0PDA4NDgwPDA8MDwkRDQ4NDg0ODA8MDwwPDA8MDwwODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4mDg0OJQ8MDwwPAAj+ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYPDA4MDyUPJQ8MDyUPJQ8MDwwPJQ8MDwwOJg4NDg0ODQ8LDwwPDA8MDg0ODQ4NDwsPDA8MDwwPDA4NDg0OJg4NDgwPJQ8MDwwPJQ8lDwwPDA8MDwwODQ4NDg0ODA8lDyUPDA8LEAwODQ4mDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0PDA4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDiYPDA4mDiYODQ4NDiYOJg4ADQU=", + "20":"JgDMAV82DyUPJQ8MDwwPDA4mDg0ODQ8lDiYODA8lEAsPDA8lDyUPDA8lDyUPDA4NDiYODQ8MDg0OJg4NDgwPDA8MDwwPDA4KEgsPDA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwOJg4NDg0ODQ4MDwwPDA8MDyUPJQ8MDwwODQ4NDg0ODA8MDwwPJQ8lDwwPDA4NDg0ODQ4MDwwPChEMDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8JEQ0ODQ4NDg0ODA8MDwwPCRIMDg0ODQ4mDgoRJQ8MDwwPAAj+YzYPJQ8mDgwPDA8MDyUPDA8MDiYOJg4NDiYODQ4NDiYOJg4NDiUPJg4MDwwPJQ8MDwwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0OJg4NDwwOJg4NDgwPJQ8lDwwPDA8MDwwPDA4NDiYOJg4NDiYODQ4MDwwPDA8lDwwPJQ8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDwwPDA8LDwwPDA8MDg0ODQ4NDgwPDA8lDwwPDBAkECQPChEMDigMLwYADQU=", + "21":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4lDwoRDA8lECQPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDg0ODA8MDwwPDA4NDgsQDQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPJQ8MDwwPDA4NDg0ODA8MDyUPJQ8MDwwOChENDg0PCw8MDwwPJQ8lDwwPDA4NDg0ODQ4MDwwPDA8JEgwODQ4NDgwPChEMDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwPDA4mDwwOJg4NDg0OAAj+ZDYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8MDyUPDA8MDiYOJg4NDiYOJg4NDg0OJg4NDgwPJQ8MEAsPDA8MDwwODQ4NDgwPChEMDwwODQ4NDg0ODA8MDwwPJQ8MDwwOJg8MDg0OJg4mDg0ODQ4MDwwPDA8MDwwOJg4NDiYODQ4KEQwPDA8lDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ4MDwoRDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwODQ4NDg0ODA8lDyUPJg4MDyUPDA8MDyUPJQ8ADQU=", + "22":"JgDMAV42DiYOJg4NDg0ODA8lDwwQCw8lDyUPDA8lDwwPDA8lDyUPDA8lDyUPDA4NDiYODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwOJg4NDg0ODA8MDwwPDA8MDyUPJQ8MDg0ODQ4NDgwPDA8MDwwOJg4mDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDgoRDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4mDg0OJg4NDgwPAAj+YzYPJg4mDg0ODA8MDyUPDA8MDyUPJQ8MDiYODQ4NDiYOJg4NDiYOJg4NDg0OJg4NDgwQJA8MEAsPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ4NDg0OJg4NDg0OJg4mDg0ODA8MDwwPDA8MDiYPDA4NDiYODQ4MDwwPDA8lDwwPJQ8MDwwODQ8MDg0OChEMDwwPDA4NDwwODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODBAkDwwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "23":"JgDMAV82DiYOJg4NDg0ODQ4lDwwPDA8lDyUPDA8lDwwPDA4mDyUPDA4mDiYODQ8MDiYPDA4NDgwPJQ8MDwwPDA4NDgoRDQ4MDwwPDA8MDwwPDA4NDg0ODQ4KEQwPDA8MDg0OJg4NDg0ODQ4MEAsPDA8MDiYOJg4NDg0ODQ4NDgwPDA8MDwwOJg4mDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPChEMDwwOChENDg0ODA8MDwwPDA4NDg0ODQ4MDwwPCRIMDg0PDA4NDgwPDA8MDwwODQ4NDg0ODBAkDwwPJQ8MDwwPAAj+YzYQJA8lDwwPDA8MDyUODQ4NDiYOJg4NDiYODQ4MDyUQJA8MDyUPJQ8MDwwPJQ8MDwwOJg8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0OJg4NDg0OJg4NDgwPJQ8lDwwQCw8MDwwODQ8MDg0ODQ4MDyUPDA8MDwwODQ4mDg0OJg4NDgwPDA8MDwwODQ4NDwwODA8MDwwPDA8MDwwODQ4NDwsPDA8MDwwPDA4NDgoRDQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDiYPDA4NDiYODQ4MDyUPJQ8ADQU=", + "24":"JgDMAV82DyUPJQ4NDg0ODQ4mDg0ODQ4lDyUPDA8lDwwPDA4mDyUPDA4mDyUPDA8MDyUODQ4NDgwPJg4MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDyUPJQ8MDwwOChENDgwPDA8MDwwPJQ8lDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0OChEMDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4mDg0OJg4NDg0OAAj/YzYOJg4mDg0ODQ4NDiYODBALDyUPJQ8MDyUPDA8MDyUOJg4NDiYOJg4NDg0OJg4NDg0OJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0PDA4NDgwPJQ8MDwwPJQ8MDg0OJg8lDg0ODQ4MDwwPDA8MDyUPJQ8lDwwPDA4NDg0ODQ4lDwwPJQ8MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgoRDA8MDwwPDA4NDgoRDQ4MDwwPDA4NDgoRDQ4MDwwPDA8MDwwODQ4mDg0ODQ4MDyUPDA8MDyUPJQ8ADQU=", + "25":"JgDMAV82DiYOJg8MDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDiYODQ4NDiYODQ4NDg0OJg4NDgwPDA8MDg0ODQ4NDg0ODBALDwwPCRENDg0ODA8MDwwPDA8MDwwOJg4NDg0ODA8MDwwPDA8MDiYPJQ8MDwwODQ4NDgwPDA8MDwwPJQ4mDg0OChENDg0ODA8MDwwPDA8MDwwODQ4KEQ0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4mDg0OJg4NDgwPAAj+ZDYOJg4mDg0ODA8KESUPDA8MDyUPJQ8MDyUPCBMMDiYOJg4NDiYOJg4NDg0PJQ4MDwwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwQJA8MDwwPJQ8MDg0OJg4mDg0ODQ4MDwwPDA8MDg0OJg4mDg0ODQ4NDgwPDA8lDwwPJQ8MDwwODQ4NDg0ODQ4MDwwPDA8MDwwODQ8MDwsPDA8MDwwODQ4NDg0ODA8KEQwPDA8MDg0PDA4MDwwPDA8MDwwPDA4NDg0ODQ4mDiYOJg4mDg0ODA8KESUPJQ8ADQU=", + "26":"JgDMAV82DyUPJQ8MDwwPDA8lDwwPDA4mDyUPDA8lDwwODQ4mDiYODQ4mDiYODQ4NDiUPDA8MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDBALDwwODQ4NDg0OJQ8MDwwPDA8MDg0ODQ4NDiYOJg4NDg0ODA8MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAj+YzYPJQ8lDwwPDA4NDiYODQ4NDiYOJg4NDiYODA8MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0OJg4NDg0ODA8MDwwPDA8MDg0ODQ4KEgsPDA8MDg0ODQ4NDg0PJQ4NDgwPJQ8MDwwPJQ8lDwwODQ8MDg0ODBALDyUPDA8lDwwPDA8MDg0ODQ4mDg0OJg4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4mDg0OJg4mDg0ODQ4MDyUPJg4ADQU=", + "27":"JgDMAV81DyYOJg8MDgwPDA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4NDiYODA8MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ8MDgwPJQ8MDwwPDA8MDwwODQ4NDiUPJQ8MDwwPDA4NDg0ODQ4NDgwPJQ8lDwwPDA8MDwwODQ8MDg0ODA8MEAsPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0OCRIMDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4mDwwPJQ4NDg0OAAj+ZDYOJg4mDwwODQ4MDyUPDA8MDyUPJRALDyUQCw8MDiYOJg8MDiYOJg4NDg0OJg4MDwwQJA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPJQ8MDg0OJg8MDg0OJg8lDg0ODA8MDwwPDA8KEQkRDQ4mDg0ODQ4MDwwPDA8lDwwPJQ8MDg0ODQ4MDwwPDA8MDwwODQ4NDwsPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8lDyUPDA8lDwwPDA4NDiYOJg4ADQU=", + "28":"JgDMAV42DyUPJQ8MDwwPDA4mDg0ODQ4mDyUOChEmDg0ODA8lECQPDA8lDyUQCw8MDiYPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4KEQwPDBALDwwOJg8MDg0ODQ4NDgwPDA8MDyUPJQ8KEQwODQ4NDg0ODA8MDwwPJQ8lDwwPDA4NDg0ODQ4MDwwPDA8MDgoRDQ4NDgwPDBALDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwODQ4mDg0OJg4NDg0OAAj+ZDYOJg4mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDgwPJQ8MDwwPJQ8MDg0ODQ4NDgwQCw8MEAsPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDg0OJg4mDgoRDA8MDwwPDA4NDiYPJQ4IEw0ODQ4MDwwPChElDwwPJQ8MDg0ODQ4NDgwPDBALDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8lDwwPDA8lDwwODQ4NDiYOJg4ADQU=", + "29":"JgDMAV82DyUPJQ8MDwwODQ4mDg0PDA4mDiYODQ4mDg0ODA8lDyUPDA8lDyYOChEMDyUPDA8MDg0OJg4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ8LEAsPJQ8MDwwPDA4NDg0ODA8MDyUPJQ8MDwwPDA8MDg0ODQ4NDgwPJQ8lEAsPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDg0ODQ4KEQwPDA8MDwwPDA4mDg0OJg4NDg0OAAkCYDYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8KESUPDA8MDiYOJg4NDiYPJQ8MDg0OJg4NDgwPJQ8MDwwPDA4NDg0PCw8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPJQ8MDg0OJg4NDg0OJg4mDwwODA8MDwwPDA8MDg0OJg4NDg0ODA8MDwwPDA4mDg0OJg4NDg0ODQ4MDw0ODA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODA8MDwoRDA4mDyUPJQ8MDwwPDA8MDiYOJg4ADQU=", + "30":"JgDMAWA1DyUPJQ8JEQ0ODQ4mDg0ODQ4mDiYODQ4mDg0ODA8lDyUPDA8lDyUPDA8MDiYPDA4NDg0OJg4NDg0ODA8KEQwPChANDg0ODQ4KEQwPDA8MDwwODQ4NDgwPDA8MDwwOJg8MDg0ODQ4NDg0ODA8MDyUPJQ8MDwwPDA8MDg0ODQ4MDwwPJQ8lDwwPDA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDg0PCw8MDwwPDA8lDg0OJg4NDgoRAAj+ZDUPJQ8lDwwPDBALDyUPDA8MDyUPJQ4NDiYODQ4NDiYOJg8MDiYOJg4NDgwPJQ8MDwwPJQ8MDwwODQ4NDg0OChEMDwwPDA8MDg0PDA8LDwwPDA8MDg0OJg4NDg0OJg4NDg0OJg4mDg0ODA8MDwwPDA8MDiYODQ4NDgwPDA8MDwwODQ4mDg0PJQ4NDwsPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDwwOJg4NDg0ODQ4NDiUPJQ8ADQU=", + "31":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4lDwwQCw8lDyUPDA8lDyUPDA8MDyUPDA4NDg0OJg4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPJQ8MDwwODQ4KEQwPDA8MDyUPJRALDwwODQ4NDwwODA8MEAsPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ8MDgwPDA8MDwwQCw8MDg0ODQ4MDw0ODA8MDwwODQ4NDg0PCw8MDwwOChEmDwwOJg8MDwwOAAj/YzYOJg4mDg0ODQ8MDiUPDA8MDyUPJQ8MDyUPDA8MDiYOJg4NDiYPJQ4NDg0OJg4NDg0OJg4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0OJg4mDg0ODQ4NDgwPEQoMDwwPDQ0NDg0ODQ4MDwwPDA8lDwwPJQ8MDg0ODQ4NDgwPChEMDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ8LDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MEAsPChElDyUPDA8MDg0ODQ4NDiYOJg4ADQU=" + }, + "turbo":{ + "16":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODA8mDgoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPJQ8MDwwODQ4NDg0ODA8MDyUPJQ8MDwwODQ4NDg0ODA8MDwwPJQ8lDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODBALDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ8lDg0OJg4NDwwOAAj/YzYOJg4mDg0ODQ4MDyUPDA8MDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg4NDg0OJg4NDgwPJQ8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDwwOJg4mDg0ODQ4MDwwPJQ8MDyUPJQ8lDyUPDA8MDwwPDA4mDg0OJg4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODQ4MDwwPDA8lDwwPDA4NDg0OJg4NDgwPDA8ADQU=", + "17":"JgDMAV82ECUOJg4NDgwPDA8lEAsPDA4mDiYPDA4mDwwPDA4mDiYODQ4mDiYODQ4KEiUODQ4MDwwPJQ8MDg0ODQ4NDg0OChILEAsPDA8MDg0ODQ4NDgwPDA8MDwwODQ4MDw0OJQ8MDwwPDA8MDwwODQ4NDyUPJQ4NDg0ODA8MEAsPDA4NDg0OJg8lDg0ODA8MDwwPDA8MDg0ODQ8MDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwQCw8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4lDwwPJQ8MDwwPAAj+YzYPJQ8lDwwPDA8MDyUPChANDiYPJQ8MDiYODQ8MDyUOJg8LDyUPJg4NDgwPJQ8MDwwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0OChENDg0ODA8MDwwPJQ8MDg0OJg4NDg0OJg4mDwsPDg0MDwwOJg4NDg0OJg4mDiYPDA4NDg0PDA8lDgwPJQ8MDwwPDA8MFgUODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDBALDwwODQ4mDiYPJQ4mDyUPDA4NDgwPDA8ADQU=", + "18":"JgDMAV82DyUPJQ8MDwwPDA8lDwwPDA4mDiYODQ4mDg0ODQ4mDiYODQ4mDiYODA8MDyUPDA8MDwwOJg4NDg0ODQ4MDwwPDA8MDwwODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDyQPJQ8MDwwPDA8MDg0ODQ4NDgwPJQ8mDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDwsPDA8lDwwPJRALDwwOAAj/YzYPJQ8lDwwPDA8JESYODQ4NDiYOJg4NDiYODQ4MDyUPJQ8MDyUPJQ8MEAsPJQ8MDwwOJg8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDgoRJg4NDg0OJg4MDwwPJQ8lDwwPDA8MDg0OJg4NDiYODQ4mDiYODQ4NDgwPDBAkDwwQJA8MDwwPChEMDg0ODQ4MDwwPDA8MDg0ODQ4NDgwQCw8MDwwPDA8MDwwODQ4MEAsPDA8MDwwODQ4NDgwPChEMDwwPDA4NDg0OChEmDgoRJQ8lDyUPDA8MDwwPDA4ADQU=", + "19":"JgDMAV82DyUPJQ8MDwwPDA4mDg0ODQ4mDiYODQ4mDg0ODA8lDyUPDA8lECQPDA8MDyUPDA4NDg0OJg4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODBALDwwPJQ8MDg0OChENDg0ODA8MDyUPJQ8MDwwPDA4NDg0ODQ4MDwwPJQ8lDwwPDA8MDg0OChENDgwPDBALDwwPDA4NDg0ODQ4MDwwQCw8JEgwODQ4NDg0ODA8MDwwPDA4NDwwODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwOJg4NDg0OAAj/YzYPJQ4mDg0ODQ4NDiUQCxAJESUPJRALDyUPDA8MDiYPJQ8MDiYOJg4NDg0OJg4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8KEQwODQ4NDg0ODQ8LEAsPJQ8MDwwPJQ8MDg0OJg4mDg0ODQ4NDgwPJRALDwwPDA8lDyUPDA8MDg0ODQ4mDg0OJg4MDwwPDA8MDwwODQ8MDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDwwODQ4MDwwPDA8MDg0ODQ4mDiYODQ4mDiYODQ4MDwwPDA8ADQU=", + "20":"JgDMAV42DyUPJQ8MDwoRDA4mDg0ODQ4mDiYODQ4mDg0ODQ4mDiYODQ4mDiYODA8MDyUPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPChEMEAsPDA4NDg0ODQ4MDwwPJQ8MDwwPDA4NDg0ODA8MDyUPJQ8MDwwPDA4NDgoRDQ4KEQwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDgoRDQ4NDgwPDA8MDwwPDA4mDg0OJg4NDg0OAAj+ZDYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8MDiYODQ8MDiYOJg4NDiYOJg4NDg0OJg4NDgwPJQ8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPJQ8MDg0OJg4NDg0OJg4mDwwODQ4MDwwPJQ8MDyUPJRALDyUPDA8MDg0ODQ4mDg0OJg4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODA8MDwwPDA8MDg0ODQ4NDgwPChEMDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4mDg0ODQ4lDyUPDA8MDwwPDA4ADQU=", + "21":"JgDMAWA0ESMRIxEJEgkRChEkEAoRChEjESMRChEjEQkSCRIjESMRCRIjESMRCRIJESQQChEKEQoRIxEJEgkSCREKEQoRChEJEgkSCRIJEgkSCREKEQoRCRIJEgkSCREKEQoRIxEJEgkSCRIJEgkRChEKESMRIxEJEgkSCRIJEgkRChEKEQoRIxEjEQkSCRIJEgkRChEKEQkSCRIJEgkSCREKEQoRChEJEgkSCRIJEQoRChEJEgkSCRIJEQoRChEJEgkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQoRCRIjEQkSIxEJEgkSAAj7ZTQQJBAkEAoRChEKESMRCRIJEiMRIxEJEiMRCRIJEiMQJBEJESQQJBAKEQkSIxEJEgkSIxEJEgkRChEKEQkSCRIJEgkSCRIJEQoRChEKEQkSCRIJEQoRIxEKEQkSIxEJEgkSIxEjEQkSCRIJEQoRIxEKEQkSIxEJEiMRCRIJEQoRChEjEQkSIxEJEgkSCRIJEgkRChEKEQoRCRIJEgkSCREKEQoRCRIJEgkSCREKEQoRChEJEgkSCREKEQoRChEJEgkSCRIJEQoRChEKEQkSCRIjESMRIxEJEiMRCRIJEQoRChEADQU=", + "22":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYPDA4mDg0PDA4mDiUQCw8lDyUPDA8MDyUPDA8MDwwOJg4NDg0ODQ4MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwODQ4NDgoRDA8MDyUPJQ8MDwwPDA4NDg0ODQ4MDwwPJQ8lDwwPDA8MDwwODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4mDg0OJg4NDg0OAAj/YzYOJg4mDg0ODQ4MDyUPDA8MDyUPJQ8MDiYPDA8MDiYOJg4NDiYOJg4NDg0OJg4NDgwPJQ8MDwwODQ4NDg0ODA8MDwwPDA8MDg0PDA4NDgoRDA8MDwwOJg4NDg0OJg4NDg0OJg8lDg0ODA8MEAsPJQ8MDiYODQ4NDyUODQ4MDwwPDA8lDwwPJQ8MDwwODQ4KEQ0ODA8MDwwPDA4NDg0PDA4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0PCw8lDwwPJQ8MDyUPDA8MDg0ODQ4ADQU=", + "23":"JgDMAWE0ECQQJBAKEQoRCRIjEQkSCRIjESMRCRIjEQkRChEkECQQChEjESMRChEKESMRCRIJEgkSIxEJEQoRChEJEgkSCRIJEgkSCREKEQoRChEJEgkSCRIJEQoRChEJEgkSIxEJEQoRChEKEQkSCRIJEiMRIxEJEgkRChEKEQkSCRIJEgkSIxEjEQkRChEKEQoRCRIJEgkSCREKEQoRChEJEgkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQoRCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRChEJEgkSCRIjEQkSIxEJEgkRAAj8ZTQRIxEjEQkRChEKESMRCRIJEiMRIxEJEiMRCRIJESQQJBAKESMRIxEKEQkSIxEJEgkSIxEJEgkRChEKEQkSCRIJEgkRChEKEQoRCRIJEgkSCRIJEQoRJBAKEQoRIxEJEgkSIxEjEQkSCREKEQoRIxEKEQkSCRIJEiMRCREKEQoRChEjEQkSIxEJEgkSCRIJEQoRChEKEQkSCRIJEQoRChIJEQoRCRIJEgkSCREKEQoRCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRChEKEQkSCRIjESMRCRIJEiMQChEKEQoRChEADQU=", + "24":"JgDMAV82DyUPJQ8MDwwPDA4mDwwODQ4mDiYPDA4mDg0ODQ4mDiYPDA4lDyYODA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDg0ODQ4NDwwODA8MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPDA4NDg0ODQ4MDyUPJQ8MDwwPDA8MDg0ODQ4NDgwPJQ8lDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ8LDwwPDA8MDwwODQ4NDg0ODBALDwwPDA8lDwwPJQ8MDwwOAAj/YzYOJg8lDwwPDA4NDiYODQ4MDyUPJRALDyUPDA8MDyUPJQ8MDiYPJQ8MDg0OJg4NDg0OJg4NDgwPDBALDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPJQ8MDwwPJQ8MDwwPJQ8lDg0ODQ4NDg0OJg4NDiYOJg4mDgwPDA8MDwwPDA4mDwwOJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDBALDwwODQ4NDg0PDA4MDwwPDA8MDg0ODQ8MDgwPDA8MEAsPDA4NDg0ODQ4MDwwPDA8lDwwPDA8MDiYODQ4MDwwPDBAADQU=", + "25":"JgDMAWA1DyUPJQ8MDwwPDA4mDg0ODQ4mDiYODQ4mDwwODA8lECQPDA8lDyUPDBALDyUPDA8JEQ0OJg4NDgoRDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPJQ8MDwwODQ4NDgoRDQ4MDyYOJQ8MDwwPDA8MDg0ODQ4NDgwPJQ8lDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4mDg0OJg4NDg0OAAj+ZDYOJg4mDg0PDA4NDiYODQ4MDyYOJg4MDyUPDA8MDyUPJQ8MDiYPJQ8MDg0OJg4NDg0OJg4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA8JEQ0ODQ4NDgwPJQ8MDwwPJQ8MDwwPJQ8lDwwPDA4NDg0OJg4NDgwPJQ8lDwwPDA8MDg0ODQ4mDg0OJg4MDwwPDA8MDwwPDA8MDg0ODQ4MDwgUCw8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPChEMDgoRDQ4NDgwPDBALDwwPDA4mDyUOJg8lDwwPDA4NDg0ODQ4ADQU=", + "26":"JgDMAV82DiUPJQ8MDwwPDA8lDwoRDA4mDyUODQ8lDg0ODQ4mDyUPDA4mDiYODQ4MDyUPDBALDwwPJQ8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDg0OJg8LDwwPDA8MDwwODQ4NDiYOJg4NDg0ODQ4MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA4KEQ0ODA8MDwwPDA8MDg0ODQ4NDgwQCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0PCw8MDwwPDA4NDg0ODQ4MDwwPDA8lDwwPJQ8MDwwOAAj/YzYOJg8lDwwODQ4NDiYODQ4MDyUPJQ8MDyUPDA8MDyUPJRALDyUPJQ8MDwwOJg4NDg0OJg4NDgwPDA8KEQwPDA8MDg0ODQ4NDgoRDA8MDwwODQ4NDg0OJQ8MDwwPJQ8MDwwPJQ8lDwwPDA8MDg0OJg4MDyUPDA8lDwwPDA8MDwwODQ4mDg0OJg4MDwwPChEMDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwQCw8MDwwPDA4mDwwOJg4mDg0ODQ4NDgwPDA8ADQU=", + "27":"JgDMAV82DiYPJQ8MDg0ODQ4mDg0ODQ4mDiYODA8lDwwQCw8lDyUPDA8lDyUPDA8MDiYPDA4NDg0OJg4NDg0ODA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUQJA8MDwwPDA8MDg0ODQ4MDwwPJQ8lDwwPChEMDg0PDA4NDwwODA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPCRIMDg0ODQ4NDg0ODA8MDwwPDA8lDwwOJg4NDg0OAAj+ZDYOJg4mDg0ODQ4NDiYODA8MDyUPJQ8MDyUPDA8MDiYPJQ8JEiUPJQ8MDg0PJQ4NDg0OJg4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPEAsMDwwODQ4NDgwPJRALDwwPJQ8MDg0OJg4mDg0ODQ4NDgwPJQ8MDwwPDA8lDwwODQ4NDg0PDA4mDgwPJQ8MDwwPDA4NDgoRDQ4NDwsPDA8MDwwODQ4NDgwPDBALDwwODQ4NDg0ODA8MDwwPDA8MDwwPDA4NDg0ODA8MDwwQCw8MDg0ODQ4lDyUPDA8mDgwPDA8MDwwODQ4ADQU=", + "28":"JgDMAWA0ESMRIxEJEgkRChEjEQoRChEjESMRCRIjEQkSCRIjESMRCREkECQQChEKESMRChEJEgkSIxEJEgkRChEKEQoRCRIJEgkSCREKEQoRCRIJEgkSCRIJEQoRChEKEQkSIxEJEgkSCRIJEQoRChEKESMRIxEJEgkSCREKEQoRChEJEgkSIxEjEQkSCREKEQoRChEJEgkSCRIJEQoRChEKEQkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQkSCRIJEgkRChEKEQoRCRIJEgkSCRIJEQoRChEKEQkSCRIjEQkSIxEJEQoRAAj8ZTMRIxEjEQoRCRIJEiMRCRIJESQQJBAKESMRChEKESMRIxEJEiMRIxEJEgkRJBEJEQoRJBAKEQoRChEJEgkSCREKEQoRChEJEgkSCREKEQoRChEJEgkSIxEJEgkRJBAKEQoRIxEjEQoRCRIJEgkSIxEJEiMRIxEJEgkRChEKEQkSCRIjEQkRJBAKEQoRChEJEgkSCRIJEQoRChEKEQkSCRIJEgkSCRIJEQoRChEJEgkSCREKEQoRChEKEQkSCRIJEgkRChEKEQkSCRIJEgkRChEjEQoRChEjEQkSCRIJEgkRChEADQU=", + "29":"JgDMAV82DiYOJg4NDg0ODQ4lDwwPDA8lDyUPDA8lDwwPDA4mDyUODQ4mDiYODQ4NDiYODQ8MDgwPJQ8MDwwODQ4NDg0ODQ4NDgoRDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0OJg4NDgwQCw8MDwwPDA8MDiYOJg8MDwwODQ4MDwwPDA8MDwwOJg4mDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4KEQwPDA8MDwoRDA4NDg0ODBALDwwPDA8MDg0ODQ4mDg0OJg4MDwwPAAj+ZDYOJg8lDg0ODA8MDyUPDA8MDiYOJg8MDyUPDA4NDiYOJg4NDiYPJQ4NDg0OJg4MDwwPJQ8MDwwPDA4NDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODA8MDwwPJQ8MDwwOJg4NDg0OJg4mDg0PCw8MDwwPJQ8MDwwOJg4NDg0ODQ4MDwwPDA8lDwwPJQ8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MEAsPDA4NDg0ODA8MDwoRDA4NDg0PDA4MDwwPDA8MDwwODQ4NDg0ODA8mDiYOJQ8MDwwPDA8MDg0ODQ4ADQU=", + "30":"JgDMAV42DyUQJBALDwwPDA4mDwwODQ4mDiYODQ4mDg0ODBAkDyUPDA8lDyUPDA8MDyUPDBALDwwPJQ8MDg0ODQ4NDgwPDA8MDg0PDA4NDwsPDA8MDwwPDA4NDg0ODQ4MDwwPJQ8MDwwPDA4NDg0ODQ4MECQPJQ8MDwwPDA8MDg0ODQ4NDgwQJA8lDwwPDA8MDwwPDA4NDg0ODQ4MDw0ODA8MDg0PDA8MDwsPDA8MDwwPDA4NDwwODQ4NDgwPDA8MDwwODQ8MDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8lDwwPJQ8MDg0OAAj/YzYPJRAkDwwPDA4NDiYODQ4NDyUOJg4KESYODQ4MDyYOJg4MDyUPJQ8MDwwPJQ8MDwwOJg8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0OJg4NDg0OJQ8MDwwPJQ8lDwwPDA8MDwwOJg4NDiYODQ4NDgwPDA8MDwwPChAmDwwOJg4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODBALEAsPDA4NDwwODA8MDwwPDA4NDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8lDwwOJg4NDg0ODQ4NDgwPDA8ADQU=", + "31":"JgDMAV82DyUPJQ8JEgwODQ4mDg0ODQ4mDiYODQ4mDgwPDA8lDyUPDA8lECQPDA8KESUPDA4NDwwOJg4NDg0ODQ4KEQwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0PDA4MDwwPJQ8MDwwODQ4NDgoRDA8MDyUPJQ8MDwwPDA8MDgoSDA4NDwsPJQ8lEAsPDA8MDg0PDA4NDgwPDA8MDwwODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8lDwwPJQ8MDg0OAAj/ZDUPJQ8lDwwQCw8MDiYODQ4NDiYOJg4NDiYODQ4MDyUPJQ8MECQPJQ8MDwwPJQ8MDw0OJQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDg0OJhMIEQkPJQ8lDwwPDA4NDg0OJg8MDgoRDQ4KEQwPDA8MDg0ODQ4mDg0OJQ8MDwwPDA8MDgoRDQ4NDg0ODA8MDwoRDA8MDg0ODQ8MDgwQCw8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4mDiYODQ4NDg0ODA8MDwwPDA4ADQU=" + }, + "auto":{ + "16":"JgDMAV42DyUQJBALDwwPDA8lDwwODQ4mDiYODQ4mDwwODA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0PCw8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPDA4NDg0ODQ4lEAsPDA8MDwwODQ4NDg0PCw8MDwwPJQ8lDwwPDA4NDwwODQ4MDwwQCw8MDwwODQ4NDgwPDA8MDwwPCRENDg0PDA4NDgwPDA8MDwwODQ4NDg0PCxALDwwPDA4NDwwODQ4MEAsPDA8MDwwPDA4mDg0ODQ4MDyUQAAj9YzcOJg4mDg0ODBALDyUPDA8MDyUPJQ8MDyUPDA8MDiYOJg8MDyUOJg4NDg0OJg4MDwwPJQ8MDwwPDA8MDg0ODQ4NDwsPDA8MDwwPDA4NDg0ODQ4MDwwPJRALEAsOJg4NDg0OJg4mDg0ODQ8MDgwQCw8MDyUPJQ8lDyUPDA4NDg0ODQ4NDwsQCw8MDwwODQ4NDg0ODA8MEAsPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0PDA4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDyUOJg4NDiYODQ8LECQQJA8ADQU=", + "17":"JgDMAV42DyYOJg4NDgoRDA8lDwwPDA8lDyUPDA4mDwwODQ4mDiYODQ4mDiYODA8MDyUPDA8MDwwPJQ8MDgsQDQ4NDgwPDBALDwoRDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0OJg4NDgwPDBALDwwODQ4mDg0ODA8MDwwPDA8MDwwODQ4KEQ0OJg4mDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MEAsPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDwwODQ4NDgwPDA8lDwwPDA8MDiYOAAj/YzYPJQ8lDwkSDA4NDiYPDA4NDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg8LDwwPJQ8MDwwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPJQ8MDg0OJg4NDg0OJg4mDwsPDA8MDwwPDA4NDg0OJg4mDiYODQ4NDgwPDA8MDwwODQ8MDg0ODA8MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8lDwwPJQ8MDyUPDA4KESYOJg4ADQU=", + "18":"JgDMAV42DyYOJg4MDwwPDA8lDwwPDA4mDiYPDA4mDg0ODQ4mDiYODQ4mDiYOChEMDyUPDA8MDwwPJQ8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDgwPJQ8MDwwPDA8MDwwODQ4mDwwODQ4MDwwPDA8MDg0PDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ8LDwwQCw8MDwwOChENDgwPDA8MDwwPDA8MDg0ODQ4KEQwPDA8lDwwPDA8MDiYPAAj+YzYPJQ8lDwwPDA4NDiYODQ4NDiYOJg4NDiYODQ4NDiYOJRALDyUPJQ8MDwwPJQ8MDwwOJg4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0OJg4NDgwPJQ8MDwwPJQ8lEAsPDA8MDwwODQ4NDiYODQ4mDiYODA8MDwwPDA8MDg0ODQ4NDwsPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4KEQwPDA8MDwwODQ4NDg0ODQ4KEQwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4mDiYODQ8MDiYODQ4MDyUPJQ8ADQU=", + "19":"JgDMAV82DiYPJQ8MDwwODQ4mDg0ODQ4lDyYODQ4mDgwPDA8lDyUPDA8lDyUPDA8MDyUODQ4NDg0OJg4NDgwPDBALDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwOJg4NDwwODQ4NDgwPDA8lDwwPDA4NDg0ODQ4MDwwPDA8MDwwOJg4mDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgoRDA8MDwwPDA4NDg0PCxALDwwPDA8MDgoRDQ8lDg0ODA8MDyUPAAj/YzUPJQ8mDg0ODA8MDyUPDA8MDyUPJQ8MDyUPDA4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwQJA8MDwwODQ4KEQ0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwPJQ8MDg0OJg4NDg0OJg4mDg0ODQ4MDwwPDA4NDg0ODQ4mDyUOCxAMDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4mDg0ODQ4NDiYPDA4NDiUQJA8ADQU=", + "20":"JgDMAV81DyYOJg4NDgwPDA8lDwwPDA8lDyUPDA8lDwwPChAmDiYODQ4mDiYODQ4NDiYODA8MDwoRJQ8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwkSDA4NDg0OJg4NDgwPDBALDwwODQ4mDwwODQ4MDwwPDA8MDwwODQ4NDg0OJg4mDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MEAsPDA4NDg0ODA8MDwwPDA8MDgoRDQ4MDwwPDA8lDwwPDA4NDiYOAAj/YzYOJg4mDg0ODQ4NDiUPDA8MDyUPJQ8MDyUPDA8MDyUPJQ8MDyUPJQ8MDg0PJQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPJRALDwwPJQ8MDwkRJg4mDg0ODQ4NDgwPDA8MDyUPJQ8MDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDwwODA8MDwkSDA4NDg0ODA8MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8lDyUPJRAkDwwPDA8MDiYOJg8ADQU=", + "21":"JgDMAV82DiYOJg4NDg0ODA8mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA8lDiYODQ4KESYODQ4MDwwPJQ8MDwwODQ8MDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4MDwwPDA8MDwwODQ4mDwwODQ4NDgwPDA8MDwwODQ4NDg0OJg4mDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OChEMDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4MDwwPDA8lDwwPDA8MDiYOAAj/YzYOJg4mDwoRCRENDiYODA8MDyUPJg4NDiYODA8MDyUPJQ8MDyUPJQ8MDwwPJQ8MDg0PJQ4NDwsPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0OJg4MDwwPJQ8MDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPJQ8MDyUPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4NDwsPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA8JEQ0ODQ4NDgwPDA8MDwwODQ8MDg0ODQ4lDwwPJQ8lDwwPDA8MDyUPJQ8ADQU=", + "22":"JgDMAV82DiYOJg4NDwwODA8lDwwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDiYPDA4NDiYODQ4NDgwPJQ8MDwwPDA4NDgoRDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0OJg8MDgwPDA8MDwwPDA8lDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4mDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ8MDg0ODQ4MDwwPDA8MDg0ODQ4MDwwPDA8lDwoRDA8MDiYPAAj+YzYOJg4mDg0ODQ4MDyUQCw8MDyUPJQ8MDyUPDA8MDyUOJg8MDiYOJg8MDg0OJg4NDg0OJg4MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwPJQ8MDwwOJg4NDg0OJg4mDg0ODQ4MDwwPDA8MDyUPDA8MDiYODQ8MDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDg0OChEMDwwPDA4NDg0ODQ4NDgwPDA8lDyUPDA4mDg0ODQ4JEiYOJg4ADQU=", + "23":"JgDMAV81DyUPJg8MDgwPDA8lDwwPDA8lDyUODQ4mDg0ODQ4mDiYODQ4lDyUPDA8MDyUPDA8MDwwPJQ8MDwwODQ4NDgwPDA8MDwwODQ4KEQ0ODA8MDwwPDA8MDg0ODQ4MDwwPJQ8MDwwPDA8MDwwODQ4mDwwODA8MEAsPDA4NDg0ODA8MDwwPJQ8lDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDwwODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwODQ4mDg0ODA8MDyUPAAj+YzYPJQ8lDwwPDA8MDiYPDA4NDiYOJg4NDiYODA8MDyUPJQ8MDyUPJQ8MDwwPJQ8MDwwOJg4NDg0ODA8MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDgwPJRALDwwPJQ8MDwwPJQ8lDwwODQ4NDg0ODA8MDwwPDA4NDiYODQ4NDg0ODA8MDwwPDA8MDg0ODQ8LDwwPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODA8MDwwPDA8lDwwPDA4mDg0ODQ4NDiUPJg4ADQU=", + "24":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA8lDwwPDA4mDyUPDA4mDiYODQ4NDiYODQ4MDwwPJQ8MDwwODQ4NDg0PCw8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ8MDg0OJg4MDwwPDA8MDwwODQ4mDg0ODQ4MDwwPDA8MDwwODQ4NDgwPJQ8mDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDgwPDBALDwwPDA8lDwwPDA4NDiYPAAj9YzYQJA8mDgoRDA8MDyUPDA8MDiYOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDgoRJQ8MDwwPJQ8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0OJg4NDg0OJg4NDgwPJQ8lDwwPChEMDwwPDA4NDiYOJg4mDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MEAsPDA4KEQ0ODQ8LDwwPChEMDwwPCRENDg0ODQ4MDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8lDyUPJQ8MDg0ODQ4NDiUPJQ8ADQU=", + "25":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA8lDwwODQ4mDiYODQ4mDiYODQ4MDyUPDA8MDwwPJQ8KEA0ODQ4NDg0ODQ8LDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0OJQ8MDwwPDA8MDg0ODQ4mDg0ODA8MDwwPDA8KEQwODQ4NDg0OJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDgwPChEMDwwPDA4NDg0ODA8MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA8lDwwODQ4NDiYOAAj+ZDYOJg4mDg0ODA8MDyUPDA8MDiYOJg4NDiYODQ4NDiYPJQ4NDiYOJg4NDgwPJg4MDwwPJQ8MDwwODQ4NDg0ODA8MDwwPDA8MDwwODQ4MDwwPDA8MDwwOJg4NDg0OJg8MDgwPJQ8lDwwPDA8MDwwOChENDg0OJg4mDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwQCw8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4mDg0OJRALDwwPDA8MDyUPJQ8ADQU=", + "26":"JgDMAV82DiYOJg4KEQwPDA8lDwwPDA4mDiYPDA4mDwwODQ4mDiYODQ4lDyUPDA8MDyUPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPCRIMDg0ODQ4NDgwPJQ8KEQwPDA8MDg0ODQ4mDg0ODA8MDwwPDA8MDg0ODQ4MDwwPJQ8lDwwPDA4NDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDgwPDA8MDwwPDA4KEQ0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4mDg0ODQ4MDyUPAAj+YzYPJQ8lDwwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg4MDyUPJQ8MDwwPJQ8MDwwPJQ8MDg0ODQ4MEAsPDA8MDwwPDA4NDg0OChEMDwwPDA8MDg0OJg4NDwwOJg4NDgwPJQ8lDwwPDA4NDg0ODQ4MDyYODA8lDwwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDwwODQ4NDwsPDA8MDwwPDA4NDg0OChEmDiYODA8MDwwPDA4NDiYOJg4ADQU=", + "27":"JgDMAV82DiYOJg4NDg0ODA8lDwwQCw8lDyUPDA8lDwwPDA4mDyUPDA4mDiYODQ4NDiYPDA8LDwwPJQ8MDwwPDA4NDwwODQ4MDwwPDA4NDwwODQ4MDwwPDA8MDwwODQ4NDg0OJg4NDgwPDA8MDwwODQ4mDg0ODQ4MDwwPDA8MDg0ODQ8MDgwPJg4mDg0PCw8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPChEMDwwPDA4NDg0ODA8MDwwODQ4NDg4NDA8MDwwPDA8lDwwPDA4NDiYOAAj+ZDYOJg4mDg0PDA4NDiYODQ4MDyUPJQ8MDyUPDA8JEiUPJQ8MDiYOJg8MDg0PJQ4NDgwPJQ8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA8MDg0ODQ4MDwwPJQ8MDwwPJQ8MDwwOJg4mDwwODQ4NDg0ODA8MDwwODQ4mDg0ODQ4MDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4KEQwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8lDwwPDA4NDg0ODQ4MDyUPJQ8ADQU=", + "28":"JgDMAV82DiYOJg4NDg0ODA8lDwwPChElDyUPDA8lDwwQCw8lDyUPDA4mDyUPDA4NDiYODQ4NDg0OJQ8MEAsPDA4NDg0ODA8MDwwPDA8MDg0ODQ8MDg0ODA8MDwoRDA8MDwwOJg4NDg0ODA8MDwwPDA4mDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4mDg0ODQ4MDwwPDA8MDwwODQ4MDwwPDA8MDwwODQ4NDg0OChEMDwwQCw8MDwwODQ4NDg0ODA8MDwwPDA4NDgoRDQ8LDwwPDA8MDg0ODQ4MDwwPDA8lEAsPDA8MDiYOAAj+ZDYOJg8lDg0PDA4MECQPDA8MDyYOJg4MDyUPDA8MDiYPJQ4NDiYOJg4NDg0OJg4NDg0OJg4NDgwPDA8MDwwODQ4NDwsPDA8MDwwPDA4NDg0ODQ4MDwwPJQ8KEQwOJg8MDg0OJg4mDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDg0ODQ4KEQwPDA8MDg0ODQ4NDgwQCw8MDg0ODQ4NDwwPCw8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8lDyUPJQ8lDyUPJQ8lDwwQJA8ADQU=", + "29":"JgDMAV42DiYOJg4NDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA8lDyUQCw8MDiYODQ4NDg0OJg4NDgwPDA8MDwwODQ4NDgwPChEMDwwODQ4NDg0ODQ4NDgwPDA8MDwwOJg4NDg0ODA8MDwwPDA8lDwwODQ4KEgsPDA8MDwwPDA8MDwwPJQ4mDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8JEgwODQ4NDgwPDA8lDwwPDA8MDiYOAAj+ZDYOJg4mDwwODQ4NDiYODA8MDyUPJQ8MDyUQCw8MDiYOJg4NDiYOJg4NDg0PJQ4NDgwPJQ8MDwwPCRIMDwwODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDg0OJg4NDg0OJg4mDg0ODQ4MDwwPDA8MDwwOJg4NDg0ODQ4MDwwPDA8JEQ0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4MDw0ODA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4mDg0OJg4mDiYOJg4mDg0OJg4ADQU=", + "30":"JgDMAV82ECQPJQ8MDwwPDA4mDwwODQ4mDiYODQ4mDg0ODA8lDyYODA8lDyUPDA8MDyUPDA4NDg0OJg4NDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8MDwwPJQ8MDwwODQ4NDg0ODA8lDwwPDA4NDg0ODQ4MDwwPCRIMDwwOJg4mDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwPDA8MDg0ODQ4mDg0OChEMDyUPAAj+YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg4NDiYODQ4MDyUPJQ8MDyUPJg4NDgwPJQ8MDwwPJQ8MDwwODQ8MDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8MDwwOJg4NDg0OJg8JEQwPJQ8mDgwPDA8MDwwODQ4NDiYODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8MDgwPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODA8MDwwPDA8KEA0ODQ4mDiYODA8lDyYOJg4mDgoRJg4ADQU=", + "31":"JgDMAV81DyYOJg4NDwsPDA8lDwwPDA8lDyUPDA4mDg0ODQ4mDiYODQ4mDiYODQ4MDyUPChEMDwwPJQ8MDwwODQ4NDgwPDA8MDwwPDA4NDwwODA8MDwwPDA8MDwwPDA4NDg0OJg4MDwwPDA8MDwwODQ4mDg0ODA8MDwwPDA8MDg0ODQ4NDgwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8NDgwPDA4NDg0ODA8MDwwPDA4NDg0OChENDgwPDA8MEAsODQ4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODA8MDwwODQ4mDg0ODQ4NDiUPAAj+ZDUPJQ8lDwwPDA8MDyUPDA4NDiYOJg4NDiYODQ4MDyUPJQ8MDyUQJA8MDwwPJQ8KEQwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0OJg4NDgwPJQ8MDwwPJQ8lDwwPDA8MDg0PDA4NDgwPDA8MDg0OCRINDg0ODA8MDwwPDA8MDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA4NDg0ODQ4NDg0PCw8MDwwPDA8MDg0ODQ4MDwwPDA8lDwwODQ4mDiYOJg4mDg0OJg4ADQU=" + } + }, + "fan_only":{ + "silent":{ + "16":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "17":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "18":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "19":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "20":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "21":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "22":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "23":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "24":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "25":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "26":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "27":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "28":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "29":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "30":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=", + "31":"JgDMAV82DiYOJg4NDg0ODA8lDwwPDA8lDyUPDA4mDwoRDA4mDyUPDA4mDiYPCRENDyUODQ4NDgwPJQ8MDwwPDA8JEQ0OBxQNDgwPDA8MDg0ODQ4KEQ0ODA8MDwwPDA8MDyUPJQ8MDwwODQ4NDwwPDA4MDyUPDA8MDwwODQ4NDg0ODBALDwwPJQ8lDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4mDwwODQ4mDiYOAAj/ZDUQJA8lDwwPDA8MDiYODQ8MDiYOJg4NDiYODQ4NDiUPJQ8MDyUQJBALDwwPJQ8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDg0OJg4NDg0OJg4NDgwPJQ8lDyYODQ4MDwwQCw8MDg0PDA4NDiYODQ4NDg0ODA8MDyUPDA4NDg0ODQ4MDwwPChEMDwwODQ4NDg0ODA8MDwwPDA4NDg0PDA4NDgwPDA8MDwwPDA4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODQ4mDgwPJQ8MDyUPDA8MDiYPJQ8ADQU=" + }, + "low":{ + "16":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "17":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "18":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "19":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "20":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "21":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "22":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "23":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "24":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "25":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "26":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "27":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "28":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "29":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "30":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=", + "31":"JgDMAV82DyUPJQ4NDg0ODQ4lEAsPDBAkECQPDA8lDwwPDA4mDyUPDA4mDyUPDA4NDiYPDA4NDgwPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODQ8LDwwPDA8NDwwOJRALDwwODQ4NDg0ODQ4MDyUQCRANDg0PDA4NDgwPDA8MDwwOJg4mDwwODQ4NDg0ODQ4NDg0ODA8MDg4ODQ8LDg0ODA8MDwwODQ4ODQ0ODQ4NDgwPDBALDwwODQ4NDg0PCw8MDwwPDA8MDwwODQ4NDg0ODA8MDwwQCRElDg0OJg4NDiYOAAj/YzYQJA8lEAsPDA8MDiYPDA4NDiYOJg8MDiYODQ4NDiYOJg8MDiYOJg8MDwsPJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODQ4MDwwQJBALDwwPJQ8MDg0OJg4mDiYODg0NDgwPDA8MDwwODQ4ODiUPDA4NDg0ODQ4MDyUPDA8MDg0ODQ8MDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwODQ4NDg0ODQ4MEAsPDA8MDwwODQ4NDg0ODA8MEAsPDA4NDg0ODQ4mDg0OJg4NDyQPDA8MDyUPJQ8ADQU=" + }, + "mid":{ + "16":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "17":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "18":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "19":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "20":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "21":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "22":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "23":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "24":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "25":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "26":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "27":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "28":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "29":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "30":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=", + "31":"JgDMAV42DyUPJQ8MDwwPDA8lDwwPDA8lDiYODQ4mDg0ODQ4mDiYPDA4mDiYODQ4MDyYODA8MDwwPJQ8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0OJg4NDgwPDA8MDwwPDA4NDg0OJg4NDwwODA8MDwwPDA8MDg0OJg4mDwwODQ4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPDQ4MDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ4lDwwPJQ8mDiYOAAj/YzYPJQ8lDwwPDA8MDiYODQ4NDiYOJg8MDiYODQ4NDiYOJg4NDiYOJg4MDwwPJQ8KEQwPJQ8MDwwODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwOJg8MDg0OJg4NDgoRJg4mDiYODQ4KEQwPDA8MDwwPDA8MDiYODQ4NDg0ODA8lDyUPDA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0PDA4NDg0ODA8MDwwPDA8MDg0ODQ4NDg0ODA8MDwwPDA4KEQ0ODQ4MDwwPDA8MDg0ODQ4mDyUOJg4NDiYODA8MDyYOJQ8ADQU=" + }, + "high":{ + "16":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "17":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "18":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "19":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "20":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "21":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "22":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "23":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "24":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "25":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "26":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "27":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "28":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "29":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "30":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=", + "31":"JgDMAV82DiYPJRALDg0ODQ4mDgwPDA8lDyUPDA8lDwwPDA8lDyUPDA4mDyUPDA4NDiYPDA8MDg0PJQ4NDg0ODA8MDwwPDA8MDg0PDA4MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPJQ8MDwwPDA4NDwwODQ4NDgwPJQ8lEAsPDA8MDg4ODA4NDg0PCw8MDwwPDA4NDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODBALDwwPDA8MDg0ODQ4NDg0ODBALDwwPDA4NDg0ODQ4NDgwPDA8lDwwPJQ8MDwwOAAkAYzUPJRAkDwwPDA8MDyUPDA4NDyUPJQ8MDiYPDQ0NDiYOJg8MDyUOJg4NDg0OJQ8MEAsPJQ8MDwwPDA8MDg0ODQ4NDgwPDA8MDg0ODQ4NDg0ODA8MEAsQJA8MDwoRJQ8MDwwPJQ4mDiYODQ4ODQ0ODA8MDwwPDA4NDiYPDA4KEQ0ODQ4mDg0OJQ8KEQwPDA8MDg0PDA4NDwwPCw8MDwwODQ8MDwwODQ4NDgwQCw8MDg0ODQ4NDg0ODA8MDwwPDA4NDg0ODQ8NDQwPDQ4MDwwPDA4mDiYPDA4mDyUPDA4NDiYPJQ4ADQU=" + }, + "turbo":{ + "16":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "17":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "18":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "19":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "20":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "21":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "22":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "23":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "24":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "25":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "26":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "27":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "28":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "29":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "30":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=", + "31":"JgDMAV82DyUPJQ8MDwwODQ4mDg0ODQ4mDiYODQ4mDg0ODQ4lECQPDA8lDyUPDA8MDyUPDA8MDwwOJg8MDg0ODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8NDQ0ODQ4NDgwPJQ8MEAsPDA8MDg0ODQ4NDiUPJg4NDgwPDA8MDwwODQ4NDg0OJg4mDg0PCw8MDwwPChEMDg0ODQ4NDgwPDA8MDwkSDA4NDg0ODQ4NDgwPDA8MDwwOChENDg0ODA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwPDA4NDg0ODA8lDwwPJQ8MDwwPAAkAYjUPJQ8mDgwPDA8MDyUPDA4NDiYOJg4NDiYODQ4NDiYOJg8MDiYOJg4NDgwQJQ4NDgwQJA8MDwwQCw8MDg0ODQ4MDwwPDA8MDwwODQ4NDg0ODA8MDwwPJQ8MDwwPJQ8MDg0PJQ4mDyUPDA4NDg0OJg8MDgwPDA8MDyUPDA8MDg0ODQ8lDg0OJg4NDgwPDA8MDwwODQ4NDg0OChEMDwwPDA8KEQwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwQCw8MDwwODQ4NDg0ODQ8LDwwPDA8lDyUPDA8lDyUPDA4NDg0ODQ4ADQU=" + }, + "auto":{ + "16":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "17":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "18":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "19":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "20":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "21":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "22":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "23":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "24":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "25":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "26":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "27":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "28":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "29":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "30":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=", + "31":"JgDMAV82DyUPJQ8MDwwODQ4mDwwODQ4mDiYPDA4mDgwPDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg8MDg0ODQ4NDwsPChANDg4NDQ4ODgwODA8MDw0ODA4NDg4NDQ4NDgwPJRALDwwPDA4NDg0ODQ4mDwwODQ8LDwwPDA8MDw0NDQ4NDgwPJQ8lDw0ODA8NDg0NDQ4NDg0ODQ4MDwwPDA4ODQ0ODQ4NDg0ODQ8MDgwPDA8KEA4NDg4MDg0ODQ4MEAsPDA4ODQ0OChENDwsPDA8MDg0ODg0NDg0PCw8lEAsPDA8MDyUPAAj+YzcOJg8lDwwPCw8MDyUPDA8MDyUPJQ8MDyUPDQ4MDiYOJg4ODSYOJg8MDg0OJg4NDg0OJRALEAsPDA8MDwwODQ8NDgwPDA4NDg0ODA8MDg0ODQ4NDg0OJg8JEgwOJRAMDg0OJQ8lDyUPDA8MDwwODQ4NDwwPCw8MDyUPDA8MDg0ODQ4NDg0PDA4MDwwPDA8MDg0PDA8MDgwPDRALDg0VBRMIDwwODQ4MEAsPDA8NDg0NDQ4NDg0PDA4MDwwODQ4NDg0ODQ4MDwwPDQ4MDg0ODQ4mDwwPCxAMDyQQCxALDyUPJQ8ADQU=" + } + }, + "dry":{ + "silent":{ + "16":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "17":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "18":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "19":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "20":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "21":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "22":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "23":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "24":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "25":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "26":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "27":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "28":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "29":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "30":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "31":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=" + }, + "low":{ + "16":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "17":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "18":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "19":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "20":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "21":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "22":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "23":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "24":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "25":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "26":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "27":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "28":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "29":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "30":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "31":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=" + }, + "mid":{ + "16":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "17":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "18":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "19":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "20":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "21":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "22":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "23":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "24":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "25":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "26":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "27":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "28":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "29":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "30":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "31":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=" + }, + "high":{ + "16":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "17":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "18":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "19":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "20":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "21":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "22":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "23":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "24":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "25":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "26":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "27":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "28":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "29":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "30":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "31":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=" + }, + "turbo":{ + "16":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "17":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "18":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "19":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "20":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "21":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "22":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "23":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "24":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "25":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "26":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "27":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "28":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "29":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "30":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "31":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=" + }, + "auto":{ + "16":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "17":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "18":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "19":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "20":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "21":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "22":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "23":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "24":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "25":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "26":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "27":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "28":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "29":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "30":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=", + "31":"JgDMAV42DiYOJg8MDg0ODQ4mDg0ODQ4mDiYODA8lDwoRDA8lDyUPDA8lDyUPDA8MDyUPDA8MDg0OJg4NDgwPDA8MDwwODQ4NDg0OBxQMDwwPDA4NDg0ODQ4NDg0ODA8MDwwPJQ8MDg0ODQ4NDgwPDA8MDyUPDA4NDg0ODA8MDwwPDA8MDwwOJg8lDwwODQ4NDg0ODA8MDwwPDA4NDg0ODQ8LDwwPDA8MDwwPDA4NDg0ODA8MDwwPDA4NDg0ODQ4MDwwPDA8MDg0ODQ4KEQwPDA8MDwwPDA8MDg0ODQ4mDgwPJQ8MDyUQAAj9ZDYOJg4mDg0ODQ4MDyUPDA8MDyUOJg4NDiYODQ4NDiYOJg4NDiYOJg4NDg0OJQ8MDwwPJQ8MDwwPDA8MDg0ODQ4KEQwPDA8MDgoRDQ4NDg0ODA8MDwwPJQ8MDwwOJg4NDg0ODQ4mDg0ODA8MDwwPDA4KEQ0ODQ4MDyUPDA8MDwwODQ4NDiYODQ4NDgwPDA8MDwwPDA8MDg0ODQ4NDgwPDA8MDwwODQ4NDgwPDA8MDwwODQ4NDg0ODQ4MDwwPDA8MDwoRDA4NDg0ODQ4MDwwPCRIlDyUPDA8lDwwODQ4NDiYOJg4ADQU=" + } + } + } +} \ No newline at end of file diff --git a/appdaemon/settings/apps/test/test.py b/appdaemon/settings/apps/test/test.py new file mode 100644 index 0000000..e886ce4 --- /dev/null +++ b/appdaemon/settings/apps/test/test.py @@ -0,0 +1,20 @@ +import appdaemon.plugins.hass.hassapi as hass +import os + +""" +Monitor events and output changes to the verbose_log. Nice for debugging purposes. +Arguments: + - events: List of events to monitor +""" +class Test(hass.Hass): + notify = None + + def initialize(self) -> None: + self.listen_state(self.sensor_trigger, 'sensor.0x00158d0003a361d8_action') + self.listen_state(self.sensor_trigger, 'binary_sensor.0x00158d0003f26d61_occupancy') + # self.listen_state(self.sensor_trigger, 'sensor.remote20_action') + + def sensor_trigger(self, entity, attribute, old, new, kwargs): + if new != "" and new != "unknown": + self.log("doorbell call") + self.toggle("switch.0x00158d00020f3a29_switch") \ No newline at end of file diff --git a/appdaemon/settings/apps/test/test.yaml b/appdaemon/settings/apps/test/test.yaml new file mode 100644 index 0000000..be7c2c4 --- /dev/null +++ b/appdaemon/settings/apps/test/test.yaml @@ -0,0 +1,5 @@ +test: + module: test + class: Test + dependencies: + - notify \ No newline at end of file diff --git a/appdaemon/settings/apps/test/test_ac.py b/appdaemon/settings/apps/test/test_ac.py new file mode 100644 index 0000000..10b2340 --- /dev/null +++ b/appdaemon/settings/apps/test/test_ac.py @@ -0,0 +1,37 @@ +import appdaemon.plugins.hass.hassapi as hass +import os +import glob +import json +import time + +""" +Monitor events and output changes to the verbose_log. Nice for debugging purposes. +Arguments: + - events: List of events to monitor +""" +class TestAc(hass.Hass): + notify = None + + def initialize(self) -> None: + self.log('start') + #for i in range(256): + # pkt = "AA AA AA {} 00 00 C8 87 1B 40 55".format(self.int_to_hex(i)) + # self.log(pkt) + # self.call_service("esphome/coffee_philips_5400_send_custom_command_disp", command=pkt) + # time.sleep(2) + + # for file in glob.glob("/conf/apps/test/ir/*.json"): + # f = open(file) + # data = json.load(f) + # if (data['supportedController'] != 'Broadlink'): + # continue + # manufacturer = data['manufacturer'] + # supportedModels = data['supportedModels'][0] + # self.log('file: {}, manufacturer: {}, supportedModels: {}'.format(file, manufacturer, supportedModels)) + # key1 = data['operationModes'][0] + # key2 = data['fanModes'][0] + # minTemp = data['minTemperature']+6 + # off = data['commands']['fan_only'][key2]["{}".format(minTemp)] + # off = data['commands']['off'] + # command = "b64:{}".format(off) + # self.call_service("remote/send_command", entity_id = "remote.rm_mini", command = command) diff --git a/appdaemon/settings/apps/test/test_ac.yaml b/appdaemon/settings/apps/test/test_ac.yaml new file mode 100644 index 0000000..d3f8c3b --- /dev/null +++ b/appdaemon/settings/apps/test/test_ac.yaml @@ -0,0 +1,5 @@ +test_ac: + module: test_ac + class: TestAc + dependencies: + - notify \ No newline at end of file diff --git a/appdaemon/settings/dashboards/Hello.dash b/appdaemon/settings/dashboards/Hello.dash new file mode 100755 index 0000000..cead237 --- /dev/null +++ b/appdaemon/settings/dashboards/Hello.dash @@ -0,0 +1,14 @@ +# +# Main arguments, all optional +# +title: Hello Panel +widget_dimensions: [120, 120] +widget_margins: [5, 5] +columns: 8 + +label: + widget_type: label + text: Hello World + +layout: + - label(2x2) diff --git a/appdaemon/settings/secrets.yaml b/appdaemon/settings/secrets.yaml new file mode 100755 index 0000000..e69de29 diff --git a/certbot/docker/Dockerfile b/certbot/docker/Dockerfile new file mode 100644 index 0000000..dbcf865 --- /dev/null +++ b/certbot/docker/Dockerfile @@ -0,0 +1,7 @@ +FROM certbot/certbot:latest + +ADD ./update_certs.sh /update_certs.sh +RUN chmod +x /update_certs.sh + +CMD "" +ENTRYPOINT "/update_certs.sh" diff --git a/certbot/docker/Dockerfile-rpi b/certbot/docker/Dockerfile-rpi new file mode 100644 index 0000000..e021ef1 --- /dev/null +++ b/certbot/docker/Dockerfile-rpi @@ -0,0 +1,7 @@ +FROM certbot/certbot:arm32v6-latest + +ADD ./update_certs.sh /update_certs.sh +RUN chmod +x /update_certs.sh + +CMD "" +ENTRYPOINT "/update_certs.sh" \ No newline at end of file diff --git a/certbot/docker/update_certs.sh b/certbot/docker/update_certs.sh new file mode 100755 index 0000000..bd65e5b --- /dev/null +++ b/certbot/docker/update_certs.sh @@ -0,0 +1,6 @@ +#!/bin/sh +while [ 1 ]; +do + certbot renew --agree-tos --standalone + sleep 1d +done diff --git a/ddns/docker/Dockerfile b/ddns/docker/Dockerfile new file mode 100644 index 0000000..0c1d52a --- /dev/null +++ b/ddns/docker/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:latest as builder +RUN mkdir -p /src && cd /src && git clone https://github.com/thekvs/yandex-ddns . +WORKDIR /src +RUN go get -d +#GOOS=linux GOARCH=amd64 +RUN CGO_ENABLED=0 go build -a -installsuffix cgo -o app . + + +FROM alpine:latest +WORKDIR / +ADD ./run.sh /run.sh +RUN chmod +x /run.sh +COPY --from=builder /src/app . +CMD ["/run.sh"] \ No newline at end of file diff --git a/ddns/docker/run.sh b/ddns/docker/run.sh new file mode 100644 index 0000000..038509b --- /dev/null +++ b/ddns/docker/run.sh @@ -0,0 +1,14 @@ +#!/bin/sh +while true +do + echo "token=$TOKEN" > /yandex-ddns.toml + echo "domain=$DOMAIN" >> /yandex-ddns.toml + if [ -n "$SUBDOMAIN" ]; then + echo "subdomain=$SUBDOMAIN" >> /yandex-ddns.toml + fi + echo "ttl=$TTL" >> /yandex-ddns.toml + chmod 600 /yandex-ddns.toml + #cat /yandex-ddns.toml + ./app + sleep 5m +done diff --git a/ddns/settings/token.env.sample b/ddns/settings/token.env.sample new file mode 100644 index 0000000..90a595a --- /dev/null +++ b/ddns/settings/token.env.sample @@ -0,0 +1,3 @@ +TOKEN=xxxxxxxxx +DOMAIN=xxxxxxxxx +TTL=xxxxxxxxx diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..ab1bc20 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,231 @@ +version: '3' +services: + ddns: + build: + context: ./ddns/docker + env_file: ./ddns/settings/token.env + environment: + - SUBDOMAIN="home-fnv" + restart: always + + mosquitto: + build: ./mosquitto/docker + container_name: mosquitto + env_file: ./mosquitto/settings/mqtt.env + ports: + - "1883:1883" + restart: always + logging: + driver: json-file + options: + max-size: 50m + + postgres: + image: postgres:16.1 + restart: always + volumes: + - ./postgres/settings/data:/var/lib/postgresql/data + env_file: ./postgres/settings/postgres.env + logging: + driver: json-file + options: + max-size: 50m + + hass: + image: "homeassistant/home-assistant:stable" #stable + #image: ghcr.io/home-assistant/home-assistant:stable + container_name: hass + volumes: + - ./hass/settings:/config + - /dev/hass-wolpipe:/dev/hass-wolpipe + - ./secrets/hass-fnv/settings/secrets.yaml:/config/secrets.yaml:ro + - /etc/localtime:/etc/localtime:ro + ports: + - "8123:8123" + # - "29898:9898/udp" + # - "24321:4321/udp" + # - "251827:51827" #Homekit + devices: + - "/dev/ttyUSB0:/dev/ttyUSB0" + depends_on: + - mosquitto + - postgres + #network_mode: "host" + #privileged: true + restart: always + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8123"] + interval: 30s + timeout: 10s + retries: 6 + logging: + driver: json-file + options: + max-size: 50m + + appdaemon: + build: + context: ./appdaemon/docker + container_name: appdaemon + depends_on: + - hass + volumes: + - ./appdaemon/settings:/conf + - ./secrets/hass-fnv/settings/secrets.yaml:/conf/secrets.yaml:ro + - /etc/localtime:/etc/localtime:ro + restart: always + links: + - "hass" + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + node-red: + build: + context: ./node-red/docker + #image: nodered/node-red:latest + environment: + - TZ=Europe/Moscow + ports: + - "1880:1880" + depends_on: + - hass + restart: always + volumes: + - ./node-red/settings/data:/data + + esphome: + image: esphome/esphome:latest #2025.6 #esphome-armv7 + container_name: esphome + ports: + - "6052:6052" + volumes: + - ./esphome/settings:/config + - ./secrets/hass-fnv/settings/secrets.yaml:/config/secrets.yaml:ro + #devices: + # - "/dev/ttyUSB0:/dev/ttyUSB0" + #network_mode: host + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + zigbee2mqtt: + image: koenkk/zigbee2mqtt:latest #тут отваливается замок, поэтому не latest + container_name: zigbee2mqtt + ports: + - "8080:8080" + volumes: + - ./zigbee2mqtt/settings:/app/data + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080"] + interval: 30s + timeout: 10s + retries: 6 + restart: always + logging: + driver: json-file + options: + max-size: 50m + + neptun2mqtt: + build: + context: ./neptun2mqtt/docker + dockerfile: Dockerfile + restart: always + container_name: neptun2mqtt + env_file: ./neptun2mqtt/settings/neptun.env + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + nginx: + image: nginx + hostname: nginx + container_name: nginx + links: + - "hass" + - "certbot" + volumes: + - ./nginx/settings/site-confs:/etc/nginx/conf.d + - ./certbot/settings/data:/config/keys + ports: + - "80:80" + - "443:443" + restart: always + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + certbot: + build: + context: ./certbot/docker + dockerfile: Dockerfile + restart: always + container_name: certbot + volumes: + - ./certbot/docker/update_certs.sh:/update_certs.sh:ro + - ./certbot/settings/data:/etc/letsencrypt + - /etc/localtime:/etc/localtime:ro + ports: + - "8081:80" + #entrypoint: certbot + #command: certonly --standalone --agree-tos --non-interactive --email admin@yandex5.ru -d gitea.yandex5.ru + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + homeconnect2mqtt: + build: + context: ./homeconnect2mqtt/docker + dockerfile: Dockerfile + restart: always + container_name: homeconnect2mqtt + ports: + - "5001:5000" + env_file: ./homeconnect2mqtt/settings/homeconnect2mqtt.env + volumes: + - ./homeconnect2mqtt/settings/config.json:/app/config.json:ro + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + matter-bridge: + image: ghcr.io/t0bst4r/home-assistant-matter-hub:latest + container_name: matter-bridge + ports: + - "8482:8482" + - "5353:5353" + - "5540:5540" + - "5541:5541" + volumes: + - ./matter-bridge/settings/data:/data + - ./secrets/hass-fnv/settings/secrets.yaml:/config/secrets.yaml:ro + env_file: ./matter-bridge/settings/matter-bridge.env + network_mode: host + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + keenetic: + build: + context: ./keenetic/docker + dockerfile: Dockerfile + container_name: keenetic + restart: unless-stopped + ports: + - "8001:8000" + env_file: ./keenetic/settings/keenetic.env diff --git a/docs/appdaemon.md b/docs/appdaemon.md new file mode 100644 index 0000000..47ee2cc --- /dev/null +++ b/docs/appdaemon.md @@ -0,0 +1,176 @@ +# AppDaemon приложения + +## Общая конфигурация + +### Основные файлы +- `appdaemon.yaml` - Основная конфигурация +- `apps.yaml` - Конфигурация приложений +- `globals.py` - Глобальные переменные и функции +- `automation.py` - Базовые функции автоматизации + +### Глобальные модули +- `globals` - Общие функции и переменные +- `automation` - Автоматизация +- `notify` - Уведомления + +## Структура приложений + +### Освещение (light/) + +#### lightcontrol.py +**Функционал**: Основное управление освещением +**Особенности**: +- Автоматическое управление по времени +- Интеграция с датчиками движения +- Сценарии освещения + +#### lightcontrol_kitchenset.py +**Функционал**: Управление освещением кухни +**Особенности**: +- Автоматическое включение при входе +- Режимы освещения для разных задач +- Интеграция с датчиками присутствия + +#### lightcontrol_bath.py +**Функционал**: Управление освещением ванной +**Особенности**: +- Автоматическое включение при входе +- Таймеры для экономии энергии +- Интеграция с датчиками движения + +#### lightcontrol_hall.py +**Функционал**: Управление освещением прихожей +**Особенности**: +- Автоматическое включение при входе в дом +- Режим дежурного освещения +- Интеграция с системой безопасности + +#### light_mainroom.py +**Функционал**: Управление освещением гостиной +**Особенности**: +- Сценарии для просмотра ТВ +- Автоматическое затемнение вечером +- Интеграция с датчиками присутствия + +#### light_balcony.py +**Функционал**: Управление освещением балкона +**Особенности**: +- Автоматическое включение при открытии двери +- Таймеры для экономии энергии +- Интеграция с датчиками движения + +#### lightbutton.py +**Функционал**: Управление кнопками освещения +**Особенности**: +- Обработка нажатий на физические кнопки +- Двойные и длинные нажатия +- Интеграция с системой автоматизации + +### Безопасность (security/) + +#### Система сигнализации +**Функционал**: +- Мониторинг состояния датчиков +- Автоматическая постановка/снятие с охраны +- Интеграция с системой уведомлений + +### Присутствие (presence/) + +#### Датчики присутствия +**Функционал**: +- Определение присутствия в комнатах +- Автоматическое управление освещением +- Интеграция с системой безопасности + +### Замки (locks/) + +#### Управление замками +**Функционал**: +- Автоматическое запирание/отпирание +- Интеграция с системой безопасности +- Уведомления о состоянии замков + +### Домофоны (doorbells/) + +#### Система домофонов +**Функционал**: +- Обработка вызовов домофона +- Автоматические уведомления +- Интеграция с системой безопасности + +### Энергетика (power/) + +#### Мониторинг энергопотребления +**Функционал**: +- Отслеживание потребления электроэнергии +- Автоматическое отключение неиспользуемых устройств +- Анализ энергоэффективности + +### Климат (climate/) + +#### Управление климатом +**Функционал**: +- Автоматическое управление кондиционерами +- Поддержание комфортной температуры +- Энергосберегающие режимы + +### Сенсоры (sensors/) + +#### Обработка данных сенсоров +**Функционал**: +- Агрегация данных с различных сенсоров +- Автоматические уведомления при превышении порогов +- Логирование и анализ данных + +### Группы (groups/) + +#### Управление группами устройств +**Функционал**: +- Группировка устройств по комнатам +- Массовые операции с устройствами +- Сценарии для групп устройств + +### Алиса (alice/) + +#### Интеграция с Яндекс.Алиса +**Функционал**: +- Голосовое управление устройствами +- Обработка голосовых команд +- Интеграция с системой автоматизации + +### Уведомления (notifiers/) + +#### Система уведомлений +**Функционал**: +- Отправка уведомлений в различные каналы +- Автоматические уведомления о событиях +- Настройка приоритетов уведомлений + +## Дашборды + +### Веб-интерфейс +- `dashboards/` - Конфигурация дашбордов +- `www/` - Веб-ресурсы +- `web/` - Веб-приложения + +## Функционал + +### Автоматизация +- **Временные триггеры**: Автоматические действия по расписанию +- **Событийные триггеры**: Реакция на изменения состояния устройств +- **Условная логика**: Сложные сценарии с множественными условиями + +### Интеграции +- **Home Assistant**: Основная интеграция через API +- **MQTT**: Обмен сообщениями с другими сервисами +- **HTTP**: Внешние API и веб-хуки + +### Мониторинг +- **Логирование**: Детальное логирование всех операций +- **Метрики**: Сбор статистики работы приложений +- **Алерты**: Уведомления о критических событиях + +### Безопасность +- **Аутентификация**: Проверка прав доступа +- **Шифрование**: Защита конфиденциальных данных +- **Аудит**: Логирование всех действий пользователей \ No newline at end of file diff --git a/docs/docker.md b/docs/docker.md new file mode 100644 index 0000000..8362804 --- /dev/null +++ b/docs/docker.md @@ -0,0 +1,109 @@ +# Docker контейнеры и настройки + +## Обзор сервисов + +### Основные сервисы + +#### Home Assistant (hass) +- **Образ**: `homeassistant/home-assistant:stable` +- **Порт**: 8123 +- **Зависимости**: mosquitto, postgres +- **Особенности**: + - Интеграция с USB устройствами (`/dev/ttyUSB0`) + - Health check каждые 30 секунд + - Логирование с ограничением размера 50MB + +#### AppDaemon +- **Сборка**: Кастомный образ из `./appdaemon/docker` +- **Зависимости**: hass +- **Особенности**: + - Автоматизация и скрипты + - Логирование с ограничением 10MB + +#### ESPHome +- **Образ**: `esphome/esphome:2025.6` +- **Порт**: 6052 +- **Функционал**: Управление ESP устройствами + +#### Zigbee2MQTT +- **Образ**: `koenkk/zigbee2mqtt:latest` +- **Порт**: 8080 +- **Особенности**: Health check каждые 30 секунд + +### Инфраструктурные сервисы + +#### Mosquitto (MQTT брокер) +- **Сборка**: Кастомный образ из `./mosquitto/docker` +- **Порт**: 1883 +- **Конфигурация**: `./mosquitto/settings/mqtt.env` + +#### PostgreSQL +- **Образ**: `postgres:16.1` +- **Данные**: `./postgres/settings/data` +- **Конфигурация**: `./postgres/settings/postgres.env` + +#### Nginx +- **Образ**: `nginx` +- **Порты**: 80, 443 +- **SSL**: Интеграция с certbot +- **Конфигурация**: `./nginx/settings/site-confs` + +#### Certbot +- **Сборка**: Кастомный образ из `./certbot/docker` +- **Порт**: 8081 +- **Функционал**: Автоматическое обновление SSL сертификатов + +### Специализированные сервисы + +#### Matter Bridge +- **Образ**: `ghcr.io/t0bst4r/home-assistant-matter-hub:latest` +- **Порты**: 8482, 5353, 5540, 5541 +- **Режим сети**: host +- **Интеграция**: Home Assistant через API токен + +#### HomeConnect2MQTT +- **Сборка**: Кастомный образ из `./homeconnect2mqtt/docker` +- **Порт**: 5001 +- **Функционал**: Интеграция бытовой техники Bosch/Siemens + +#### Neptun2MQTT +- **Сборка**: Кастомный образ из `./neptun2mqtt/docker` +- **Конфигурация**: `./neptun2mqtt/settings/neptun.env` + +#### DDNS +- **Сборка**: Кастомный образ из `./ddns/docker` +- **Конфигурация**: `./ddns/settings/token.env` +- **Субдомен**: home-fnv + +#### Node-RED +- **Сборка**: Кастомный образ из `./node-red/docker` +- **Порт**: 1880 +- **Зависимости**: hass +- **Функционал**: Визуальное программирование автоматизации + +## Переменные окружения + +### Общие настройки +- **TZ**: Europe/Moscow (для Node-RED) +- **Логирование**: JSON формат с ограничением размера файлов + +### Специфичные настройки +- **HC_MQTT_HOST**: 192.168.1.6 (HomeConnect) +- **HC_MQTT_USER**: hass +- **HC_MQTT_PASSWORD**: mqttpass +- **HAMH_HOME_ASSISTANT_URL**: http://192.168.1.6:8123/ +- **HAMH_LOG_LEVEL**: info + +## Мониторинг и логирование + +Все сервисы используют JSON логирование с ограничением размера: +- **Основные сервисы**: 50MB +- **Вспомогательные**: 10MB +- **Health checks**: Для hass и zigbee2mqtt + +## Сеть и безопасность + +- **Привилегированный режим**: Отключен для большинства сервисов +- **Network mode**: host только для matter-bridge +- **Порты**: Минимально необходимые для каждого сервиса +- **SSL**: Автоматическое управление через certbot \ No newline at end of file diff --git a/docs/home-assistant.md b/docs/home-assistant.md new file mode 100644 index 0000000..abe149c --- /dev/null +++ b/docs/home-assistant.md @@ -0,0 +1,150 @@ +# Home Assistant конфигурация + +## Общая структура + +### Основные файлы +- `configuration.yaml` - Основная конфигурация +- `automations.yaml` - Автоматизации +- `scripts.yaml` - Скрипты +- `scenes.yaml` - Сцены +- `ui-lovelace.yaml` - Пользовательский интерфейс + +### Директории +- `packages/` - Пакеты конфигурации по категориям +- `custom_components/` - Пользовательские компоненты +- `blueprints/` - Шаблоны автоматизаций +- `www/` - Веб-ресурсы + +## Устройства в packages + +### Кофемашина (coffee_maker.yaml) +**Производитель**: Philips +**Модель**: 5400 Series + +#### Сенсоры +- `coffee_machine_power_status` - Статус питания +- `coffee_philips_5400_status` - Общий статус +- `coffee_philips_5400_coffee_grounds_container` - Контейнер кофейной гущи +- `coffee_philips_5400_coffee_pallet` - Поддон +- `coffee_philips_5400_grain_tray` - Кофейные зерна в лотке +- `coffee_philips_5400_system_status` - Системный статус +- `coffee_philips_5400_making_coffee` - Приготовление кофе +- `coffee_philips_5400_internal_temperature` - Температура ESP32 +- `coffee_philips_5400_error_code` - Системные ошибки +- `coffee_philips_5400_free_mem_size` - Размер свободной памяти + +#### Управление +- `select.coffee_philips_5400_drink` - Выбор кофейных напитков +- `select.coffee_philips_5400_cups` - Количество порций +- `select.coffee_philips_5400_grind` - Крепость (зерно/молотый) +- `number.coffee_philips_5400_soffee` - Объем кофе +- `number.coffee_philips_5400_milk` - Объем молока +- `button.coffee_philips_5400_prepare` - Показать рецепт +- `button.coffee_philips_5400_build_coffee` - Приготовить кофе + +#### Автоматизация +- `input_boolean.kitchen_coffee_machine_auto_coffee_making` - Авто приготовление +- `counter.coffee_machine_making_coffee` - Счетчик авто приготовления + +### Посудомоечная машина (dishwasher.yaml) +**Интеграция**: HomeConnect через MQTT + +#### Сенсоры +- `hc_dishwasher_state` - Статус работы +- `hc_dishwasher_remaining` - Время до конца программы +- `hc_dishwasher_running` - Признак работы + +#### Бинарные сенсоры +- `hc_dishwasher_door` - Состояние дверцы +- `hc_dishwasher_power` - Статус питания + +#### Счетчики +- `dishwasher_door_open_count` - Счетчик открытий дверцы + +### Система отопления (climate/) +**Тип**: Кондиционеры и управление температурой + +### Освещение (light/) +**Тип**: Управление освещением по комнатам + +### Безопасность (alarm_and_presence/) +**Тип**: Система сигнализации и присутствия + +### Уведомления (notifications/) +**Тип**: Система уведомлений + +### Энергетика (power/) +**Тип**: Мониторинг энергопотребления + +### Телевизоры (tv/) +**Тип**: Управление телевизорами + +### Водоснабжение (watercontrol.yaml) +**Тип**: Контроль водоснабжения + +### Замок (aqara_lock.yaml) +**Производитель**: Aqara +**Тип**: Умный замок + +### Счетчик тепла (heat_counter.yaml) +**Тип**: Счетчик тепловой энергии + +## ESPHome устройства + +### Кондиционеры +- `ac_mainroom.yaml` - Гостиная +- `ac_kitchen.yaml` - Кухня +- `ac_childroom.yaml` - Детская +- `ac_bedroom.yaml` - Спальня + +### Освещение +- `svetlana_bedside_lamp.yaml` - Прикроватная лампа Светланы +- `danil_bedside_lamp.yaml` - Прикроватная лампа Данила + +### Датчики присутствия +- `presence_bedroom.yaml` - Спальня +- `presence_kladovka.yaml` - Кладовка + +### Специализированные устройства +- `coffee-philips-5400.yaml` - Кофемашина Philips +- `senseair.yaml` - Датчик качества воздуха + +## Интеграции + +### MQTT +- **Брокер**: Mosquitto (порт 1883) +- **Топики**: homeconnect/*, neptun/* + +### Zigbee +- **Координатор**: Zigbee2MQTT +- **Порт**: 8080 +- **Устройства**: Датчики, выключатели, замки + +### Matter +- **Мост**: Matter Bridge +- **Порты**: 8482, 5353, 5540, 5541 +- **Режим**: host + +### HomeConnect +- **Интеграция**: HomeConnect2MQTT +- **Порт**: 5001 +- **Устройства**: Посудомойка, стиральная машина + +### Neptun +- **Интеграция**: Neptun2MQTT +- **Функционал**: Контроль водоснабжения + +## Автоматизации + +### Основные категории +- Управление освещением +- Контроль климата +- Безопасность и присутствие +- Уведомления +- Энергосбережение + +### Примеры автоматизаций +- Автоматическое приготовление кофе +- Управление освещением по присутствию +- Контроль температуры в комнатах +- Мониторинг состояния бытовой техники \ No newline at end of file diff --git a/esphome/settings/.gitignore b/esphome/settings/.gitignore new file mode 100644 index 0000000..0bbf89c --- /dev/null +++ b/esphome/settings/.gitignore @@ -0,0 +1,10 @@ +# Gitignore settings for ESPHome +# This is an example and may include too much for your use-case. +# You can modify this file to suit your needs. +/.esphome/ +**/.pioenvs/ +**/.piolibdeps/ +**/lib/ +**/src/ +**/platformio.ini +/secrets.yaml diff --git a/esphome/settings/ac_bedroom.yaml b/esphome/settings/ac_bedroom.yaml new file mode 100644 index 0000000..34b82fc --- /dev/null +++ b/esphome/settings/ac_bedroom.yaml @@ -0,0 +1,67 @@ +substitutions: +# Уникальное имя этой конфигурации, стоит использовать только латинские буквы и цифры, никаких пробелов или +# спецсимволов, например, "tclac". Если будет несколько модулей кондиционера, то device_name надо изменить, +# например, добавляя цифры: tclac1, tclac2, tclac3... + device_name: ac_bedroom +# Человеческое имя для кондиционера, для интерфейса: + humanly_name: "Кондиционер Спальня" +# Настройки подключения к WiFI, данные могут храниться в файле "secret" в ESPHome, если нет- редактируем: +# Имя точки доступа WiFI: + wifi_ssid: !secret wifi_24_name +# Пароль точки доступа WiFI: + wifi_password: !secret wifi_24_pass +# Пароль для точки доступа для восстановления, имя точки доступа будет: "{device_name} Fallback Hotspot" + recovery_pass: !secret esphome_captive_pass +# Пароль для обновления по воздуху, генерируется один раз и потом используется всегда на автомате: + ota_pass: !secret api_encryption_key +# Ключ подключения к Home Assistant API, новый ключ можно получить здесь: https://esphome.io/components/api.html: + api_key: !secret api_encryption_key +# Выводы модуля, к которым подключен UART: + uart_rx: GPIO3 + uart_tx: GPIO1 +# Выводы модуля для подключения сигнальных светодиодов, для работы надо раскомментировать "leds" в "packages" +# иначе работать не будет совсем и можно писать сюда вообще что угодною. Для тех, кто просил их удалить. + receive_led: GPIO6 + transmit_led: GPIO4 + device_host: ac-bedroom.lan + +# Подгружаемые файлы- загружаются и обновляются автоматически из интернета, раскомментировать нужные +# Описание опций: +# - packages/leds.yaml - светодиоды для индикации приема/передачи, пины указываются в receive_led / transmit_led +# +# Выравнивать раскомментированные строки обязательно по указанной позиции! +packages: + remote_package: + url: https://github.com/I-am-nightingale/tclac.git + ref: master + files: + - packages/core.yaml # Ядро всего сущего + # - packages/leds.yaml + refresh: 30s + +wifi: + use_address: ${device_host} + +esp8266: + board: d1_mini + +web_server: + port: 80 + auth: + username: admin + password: superLongP4ss + +sensor: + - platform: template + name: "Текущая точная температура" + id: current_temperature_precise + unit_of_measurement: "°C" + accuracy_decimals: 2 # Настраиваем точность до сотых + update_interval: 30s # Интервал обновления, можно настроить по необходимости + lambda: |- + // Возвращаем значение переменной current_temperature из компонента tclacClimate + return id(${device_name}climate).current_temperature; + +button: + - platform: restart + name: "Restart" \ No newline at end of file diff --git a/esphome/settings/ac_childroom.yaml b/esphome/settings/ac_childroom.yaml new file mode 100644 index 0000000..5461aea --- /dev/null +++ b/esphome/settings/ac_childroom.yaml @@ -0,0 +1,67 @@ +substitutions: +# Уникальное имя этой конфигурации, стоит использовать только латинские буквы и цифры, никаких пробелов или +# спецсимволов, например, "tclac". Если будет несколько модулей кондиционера, то device_name надо изменить, +# например, добавляя цифры: tclac1, tclac2, tclac3... + device_name: ac_childroom +# Человеческое имя для кондиционера, для интерфейса: + humanly_name: "Кондиционер Детская" +# Настройки подключения к WiFI, данные могут храниться в файле "secret" в ESPHome, если нет- редактируем: +# Имя точки доступа WiFI: + wifi_ssid: !secret wifi_24_name +# Пароль точки доступа WiFI: + wifi_password: !secret wifi_24_pass +# Пароль для точки доступа для восстановления, имя точки доступа будет: "{device_name} Fallback Hotspot" + recovery_pass: !secret esphome_captive_pass +# Пароль для обновления по воздуху, генерируется один раз и потом используется всегда на автомате: + ota_pass: !secret api_encryption_key +# Ключ подключения к Home Assistant API, новый ключ можно получить здесь: https://esphome.io/components/api.html: + api_key: !secret api_encryption_key +# Выводы модуля, к которым подключен UART: + uart_rx: GPIO3 + uart_tx: GPIO1 +# Выводы модуля для подключения сигнальных светодиодов, для работы надо раскомментировать "leds" в "packages" +# иначе работать не будет совсем и можно писать сюда вообще что угодною. Для тех, кто просил их удалить. + receive_led: GPIO6 + transmit_led: GPIO4 + device_host: ac-childroom.lan + +# Подгружаемые файлы- загружаются и обновляются автоматически из интернета, раскомментировать нужные +# Описание опций: +# - packages/leds.yaml - светодиоды для индикации приема/передачи, пины указываются в receive_led / transmit_led +# +# Выравнивать раскомментированные строки обязательно по указанной позиции! +packages: + remote_package: + url: https://github.com/I-am-nightingale/tclac.git + ref: master + files: + - packages/core.yaml # Ядро всего сущего + # - packages/leds.yaml + refresh: 30s + +esp8266: + board: d1_mini + +wifi: + use_address: ${device_host} + +web_server: + port: 80 + auth: + username: admin + password: superLongP4ss + +sensor: + - platform: template + name: "Текущая точная температура" + id: current_temperature_precise + unit_of_measurement: "°C" + accuracy_decimals: 2 # Настраиваем точность до сотых + update_interval: 30s # Интервал обновления, можно настроить по необходимости + lambda: |- + // Возвращаем значение переменной current_temperature из компонента tclacClimate + return id(${device_name}climate).current_temperature; + +button: + - platform: restart + name: "Restart" \ No newline at end of file diff --git a/esphome/settings/ac_kitchen.yaml b/esphome/settings/ac_kitchen.yaml new file mode 100644 index 0000000..4415a18 --- /dev/null +++ b/esphome/settings/ac_kitchen.yaml @@ -0,0 +1,88 @@ +#=============================================================================== +# Контроллер кондиционера в гостиной +# Wemos D1 mini +#=============================================================================== +substitutions: + node_name: ac_kitchen # Use a unique name. + hostname: ac-kitchen.lan + friendly_node_name: "Кондиционер Кухня" + +#=============================================================================== +# Общий конфиг +#=============================================================================== +esphome: + name: ${node_name} + friendly_name: ${friendly_node_name} + +esp8266: + board: esp12e + +web_server: + port: 80 + auth: + username: admin + password: superLongP4ss + +# Enable Home Assistant API +api: + encryption: + key: !secret api_encryption_key + +ota: + - platform: esphome + password: !secret api_encryption_key + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + use_address: 192.168.1.127 #${hostname} + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "${node_name} Fallback Hotspot" + password: !secret esphome_captive_pass + +captive_portal: + +# Enable logging +logger: + baud_rate: 0 # disable LOG output on UART as UART is used for Sinclair AC unit +# level: VERBOSE + +uart: + tx_pin: 1 + rx_pin: 3 + baud_rate: 4800 + parity: EVEN + +time: + - platform: sntp + +external_components: + - source: github://gekkehenkie11/esphome_gree_ac + components: [sinclair_ac] + refresh: 0s + +climate: + - platform: sinclair_ac + name: ${node_name} + horizontal_swing_select: + name: ${node_name} Horizontal Swing Mode + vertical_swing_select: + name: ${node_name} Vertical Swing Mode + display_select: + name: ${node_name} Display Mode + display_unit_select: + name: ${node_name} Display Unit + plasma_switch: + name: ${node_name} Plasma + sleep_switch: + name: ${node_name} Sleep + xfan_switch: + name: ${node_name} X-fan + save_switch: + name: ${node_name} Save/8 Heat + +button: + - platform: restart + name: "Restart" \ No newline at end of file diff --git a/esphome/settings/ac_mainroom.yaml b/esphome/settings/ac_mainroom.yaml new file mode 100644 index 0000000..e4cb508 --- /dev/null +++ b/esphome/settings/ac_mainroom.yaml @@ -0,0 +1,91 @@ +#=============================================================================== +# Контроллер кондиционера в гостиной +# Wemos D1 mini +#=============================================================================== +substitutions: + node_name: ac_mainroom # Use a unique name. + node_id: ac_mainroom # Use a unique id. + deviceid: ac_mainroom + devicename: ac_mainroom + friendly_node_name: "Кондиционер Гостиная" + device_host: ac-mainroom.lan + +#=============================================================================== +# Общий конфиг +#=============================================================================== +esphome: + name: ${node_name} + friendly_name: ${friendly_node_name} + +esp8266: + board: esp12e + +web_server: + port: 80 + auth: + username: admin + password: !secret wifi_24_pass + +# Enable Home Assistant API +api: + encryption: + key: !secret api_encryption_key + +ota: + - platform: esphome + password: !secret api_encryption_key + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + use_address: ${device_host} + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "${devicename} Fallback Hotspot" + password: !secret esphome_captive_pass + +captive_portal: + +# Enable logging +logger: + baud_rate: 0 # disable LOG output on UART as UART is used for Sinclair AC unit +# level: VERBOSE + +uart: + tx_pin: 1 + rx_pin: 3 + baud_rate: 4800 + parity: EVEN + +time: + - platform: sntp + +external_components: + - source: github://gekkehenkie11/esphome_gree_ac + components: [sinclair_ac] + refresh: 0s + +climate: + - platform: sinclair_ac + name: ${devicename} + horizontal_swing_select: + name: ${devicename} Horizontal Swing Mode + vertical_swing_select: + name: ${devicename} Vertical Swing Mode + display_select: + name: ${devicename} Display Mode + display_unit_select: + name: ${devicename} Display Unit + plasma_switch: + name: ${devicename} Plasma + sleep_switch: + name: ${devicename} Sleep + xfan_switch: + name: ${devicename} X-fan + save_switch: + name: ${devicename} Save/8 Heat + +button: + - platform: restart + name: "Restart" \ No newline at end of file diff --git a/esphome/settings/bkp/ac_bedroom.yaml b/esphome/settings/bkp/ac_bedroom.yaml new file mode 100644 index 0000000..c58b972 --- /dev/null +++ b/esphome/settings/bkp/ac_bedroom.yaml @@ -0,0 +1,116 @@ +#=============================================================================== +# Контроллер кондиционера в гостиной +# Wemos D1 mini +#=============================================================================== +substitutions: + node_name: ac_bedroom # Use a unique name. + node_id: ac_bedroom # Use a unique id. + deviceid: ac_bedroom + devicename: ac_bedroom + friendly_node_name: "Кондиционер Спальня" + +#=============================================================================== +# Общий конфиг +#=============================================================================== +esphome: + name: ${node_name} + friendly_name: ${friendly_node_name} + includes: + - ac_tcl_climate.h + +esp8266: + board: d1_mini + +external_components: + - source: + type: git + url: https://github.com/robertklep/esphome-custom-component + components: [ custom, custom_component ] + +web_server: + port: 80 + auth: + username: admin + password: superLongP4ss + +# Enable Home Assistant API +api: + encryption: + key: !secret api_encryption_key + +ota: + - platform: esphome + password: !secret api_encryption_key + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "${devicename} Fallback Hotspot" + password: !secret esphome_captive_pass + +captive_portal: + +uart: + id: uart_bus + tx_pin: 1 + rx_pin: 3 + baud_rate: 9600 + parity: EVEN + +logger: + #level: VERBOSE + baud_rate: 0 + +climate: +- platform: custom + lambda: |- + auto my_custom_climate = new MyCustomClimate(id(uart_bus)); + App.register_component(my_custom_climate); + return {my_custom_climate}; + + climates: + - name: "TCL a/c" + id: my_custom_climate + +select: + - platform: template + name: Vertical swing + id: vswing + entity_category: config + options: + - "Last position" + - "Fix top" + - "Fix upper" + - "Fix mid" + - "Fix lower" + - "Fix bottom" + - "Move full" + - "Move upper" + - "Move lower" + set_action: + then: + lambda: |- + static_cast(id(my_custom_climate))->control_vertical_swing(x); + + - platform: template + name: Horizontal swing + id: hswing + entity_category: config + options: + - "Last position" + - "Fix left" + - "Fix mid left" + - "Fix mid" + - "Fix mid right" + - "Fix right" + - "Move full" + - "Move left" + - "Move mid" + - "Move right" + set_action: + then: + lambda: |- + static_cast(id(my_custom_climate))->control_horizontal_swing(x); \ No newline at end of file diff --git a/esphome/settings/bkp/ac_childroom.yaml b/esphome/settings/bkp/ac_childroom.yaml new file mode 100644 index 0000000..34e6ff0 --- /dev/null +++ b/esphome/settings/bkp/ac_childroom.yaml @@ -0,0 +1,117 @@ +#=============================================================================== +# Контроллер кондиционера в гостиной +# Wemos D1 mini +#=============================================================================== +substitutions: + node_name: ac_childroom # Use a unique name. + node_id: ac_childroom # Use a unique id. + deviceid: ac_childroom + devicename: ac_childroom + friendly_node_name: "Кондиционер Детская" + +#=============================================================================== +# Общий конфиг +#=============================================================================== +esphome: + name: ${node_name} + friendly_name: ${friendly_node_name} + includes: + - ac_tcl_climate.h + +esp8266: + board: d1_mini + +external_components: + - source: + type: git + url: https://github.com/robertklep/esphome-custom-component + components: [ custom, custom_component ] + +web_server: + port: 80 + auth: + username: admin + password: superLongP4ss + +# Enable Home Assistant API +api: + encryption: + key: !secret api_encryption_key + +ota: + - platform: esphome + password: !secret api_encryption_key + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + use_address: 192.168.1.188 + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "${devicename} Fallback Hotspot" + password: !secret esphome_captive_pass + +captive_portal: + +uart: + id: uart_bus + tx_pin: 1 + rx_pin: 3 + baud_rate: 9600 + parity: EVEN + +logger: + level: VERBOSE + baud_rate: 0 + +climate: +- platform: custom + lambda: |- + auto my_custom_climate = new MyCustomClimate(id(uart_bus)); + App.register_component(my_custom_climate); + return {my_custom_climate}; + + climates: + - name: "TCL a/c" + id: my_custom_climate + +select: + - platform: template + name: Vertical swing + id: vswing + entity_category: config + options: + - "Last position" + - "Fix top" + - "Fix upper" + - "Fix mid" + - "Fix lower" + - "Fix bottom" + - "Move full" + - "Move upper" + - "Move lower" + set_action: + then: + lambda: |- + static_cast(id(my_custom_climate))->control_vertical_swing(x); + + - platform: template + name: Horizontal swing + id: hswing + entity_category: config + options: + - "Last position" + - "Fix left" + - "Fix mid left" + - "Fix mid" + - "Fix mid right" + - "Fix right" + - "Move full" + - "Move left" + - "Move mid" + - "Move right" + set_action: + then: + lambda: |- + static_cast(id(my_custom_climate))->control_horizontal_swing(x); \ No newline at end of file diff --git a/esphome/settings/coffee-philips-5400.yaml b/esphome/settings/coffee-philips-5400.yaml new file mode 100644 index 0000000..8d7e0f3 --- /dev/null +++ b/esphome/settings/coffee-philips-5400.yaml @@ -0,0 +1,190 @@ +sensor: [] +substitutions: + board_name: Coffee Philips 5400 + device_name: coffee-philips-5400 + +esphome: + name: ${device_name} + friendly_name: ${board_name} + comment: ${board_name} + +esp32: + board: esp32dev + framework: + type: arduino + +# Enable logging +#Журналирование +logger: + level: INFO #NONE + baud_rate: 0 + +# Enable Home Assistant API +api: + +web_server: + port: 80 + +ota: + platform: esphome + password: "S/6VwLrSJ+vRfPKWYzbg+iasPO6h3sXm3jY9Ko1YCOo=" + +#Учетные данные Wi-Fi для подключения платы к домашней сети +wifi: + ssid: "MonsterFNV" + password: "7065485qwe" + use_address: ${device_name}.lan + +#Если не будет связи с WiFi, то поднимется точка доступа + ap: + ssid: ESP SmartCoffeePhilips + password: ap_esp_password + +uart: +#UART подключение к панели управления. Считываем данные которые приходят от материнской плате в панель управления + - id: uart_display + rx_pin: GPIO16 #Считываем данные с панели управления + tx_pin: GPIO17 #Посылаем данные в панель управления + baud_rate: 115200 + stop_bits: 1 + data_bits: 8 + parity: NONE + rx_buffer_size: 256 + + - id: uart_mainboard + rx_pin: GPIO14 #Считываем данные с материнской платы + tx_pin: GPIO5 #Посылаем данные в материнскую плату + baud_rate: 115200 + stop_bits: 1 + data_bits: 8 + parity: NONE + rx_buffer_size: 256 + +external_components: + - source: + type: local + path: ./components + +saeco_series_6000: + id: saeco_series_6000_component + uart_display: uart_display + uart_mainboard: uart_mainboard + debug: true + state_sensor: + name: Work State + id: idControlSensor + internal: True #Скрыть - True \показать - False + on_value: + then: + - lambda: |- + //Статус состояния кофемашины, включена или выключена + if(x==2){ + id(idPowerStatus).publish_state(false); + } else if(id(idPowerStatus).state==false){ + id(idPowerStatus).publish_state(true); + } + + //AA:AA:AA:B0 "Системные сенсоры" + if(x==21){ + id(idStatus).publish_state("Выберите напиток"); + id(idWater).publish_state("Вода есть"); + id(idPallet).publish_state("Вставлен"); + id(idGrainTray).publish_state("Зерна есть"); + id(idCoffeeGroundsContainer).publish_state("Пустой"); + } + + //AA:AA:AA:B0 "Статусы" + else if(x==1){id(idStatus).publish_state("Что-то (07 01 00)");} + else if(x==2){id(idStatus).publish_state("Выключено");} + else if(x==3){id(idStatus).publish_state("Наливаем молоко");} + else if(x==4){id(idStatus).publish_state("Наливаем кофе");} + else if(x==5){id(idStatus).publish_state("Предварительное дозирование");} + else if(x==6){id(idStatus).publish_state("Создание пара для молока");} + else if(x==7){id(idStatus).publish_state("Заварочный узел в положение заваривания");} + else if(x==8){id(idStatus).publish_state("Наслаждайтесь");} + else if(x==9){id(idStatus).publish_state("Нагрев воды");} + else if(x==10){id(idStatus).publish_state("Перемалываем зерна");} + else if(x==11){id(idStatus).publish_state("Промывка");} + else if(x==12){id(idGrainTray).publish_state("Зерна закончились");} + else if(x==13){id(idStatus).publish_state("Что-то (07 08 14)");} + else if(x==14){id(idStatus).publish_state("Нагревание");} + else if(x==15){id(idStatus).publish_state("Наслаждайтесь");} + else if(x==16){id(idStatus).publish_state("Что-то (07 0C 02)");} + else if(x==17){id(idWater).publish_state("Вода есть");} + else if(x==18){id(idPallet).publish_state("Вставлен");} + else if(x==20){id(idCoffeeGroundsContainer).publish_state("Опорож. контейнер для коф. гущи");} + else if(x==22){id(idWater).publish_state("Воды нет");} + else if(x==23){id(idPallet).publish_state("Извлечен");} + else if(x==24){id(idPallet).publish_state("Очистка от накипи. Шаг 1");} + else if(x==25){id(idPallet).publish_state("Очистка от накипи. Шаг 2");} + + + //AA:AA:AA:B5 "Error Code" + else if(x==30){id(idErrorCode).publish_state("00");} + else if(x==31){id(idErrorCode).publish_state("0B");} + else if(x==32){id(idErrorCode).publish_state("E6");} + else if(x==33){id(idErrorCode).publish_state("80");} + else if(x==34){id(idErrorCode).publish_state("CB");} + else if(x==35){id(idErrorCode).publish_state("FF");} + else if(x==36){id(idErrorCode).publish_state("A0");} + +##################################################################################### +################################## Бинарный сенсор ################################## +#Статус кофемашины: включена или выключена +binary_sensor: + - platform: template + name: "Power Status" + id: idPowerStatus + icon: mdi:power + +##################################################################################### +################################### Текстовый сенсор ################################ + +text_sensor: + - platform: template + name: "Status" + id: idStatus + icon: mdi:coffee-to-go + update_interval: never + - platform: template + name: "Water" + id: idWater + icon: mdi:cup-water + update_interval: never + - platform: template + name: "Coffee Pallet" + id: idPallet + icon: mdi:spirit-level + update_interval: never + - platform: template + name: "Grain Tray" + id: idGrainTray + icon: mdi:grain + update_interval: never + - platform: template + name: "Coffee Grounds Container" + id: idCoffeeGroundsContainer + icon: mdi:train-car-centerbeam-full + update_interval: never + - platform: template + name: "Error Code" + id: idErrorCode + icon: mdi:alert-circle-outline + update_interval: never + +button: + - platform: template + name: "Американо" + on_press: + then: + - lambda: |- + id(saeco_series_6000_component)->send_packets_to_mainboard( + std::vector{ + "AA AA AA 93 0E 01 01 8B BD 33 EA 55", + "AA AA AA 90 0F 0A 00 02 00 03 02 00 B4 00 00 00 67 48 E4 4B 55", + "AA AA AA 91 10 01 03 56 9A 8C B8 55" + }, 50); + +#[20:45:34][I][saeco_series_6000:079]: Packet from Display: AA AA AA 93 0A 01 01 57 15 3A ED 55 +#[20:45:34][I][saeco_series_6000:079]: Packet from Display: AA AA AA 90 0B 0A 05 03 00 02 00 00 64 00 00 00 39 BF 5B 74 55 +#[20:45:35][I][saeco_series_6000:079]: Packet from Display: AA AA AA 91 0C 01 03 42 C0 B0 AD 55" \ No newline at end of file diff --git a/esphome/settings/components/saeco_series_6000/__init__.py b/esphome/settings/components/saeco_series_6000/__init__.py new file mode 100644 index 0000000..dcb1e69 --- /dev/null +++ b/esphome/settings/components/saeco_series_6000/__init__.py @@ -0,0 +1,98 @@ +DEPENDENCIES = ["uart", "sensor"] + +import esphome.codegen as cg +import esphome.config_validation as cv +from esphome.components import uart, sensor, button +from esphome.const import CONF_ID, CONF_DEBUG +import esphome.automation as automation + +CONF_STATE_SENSOR = "state_sensor" +CONF_B0_STATUS_SENSOR = "b0_status_sensor" +CONF_B5_STATUS_SENSOR = "b5_status_sensor" +CONF_BA_STATUS_SENSOR = "ba_status_sensor" +CONF_S90_STATUS_SENSOR = "s90_status_sensor" +CONF_S91_STATUS_SENSOR = "s91_status_sensor" +CONF_S93_STATUS_SENSOR = "s93_status_sensor" +CONF_WATER_SENSOR = "water_sensor" +CONF_COFFEE_GROUNDS_CONTAINER_SENSOR = "coffee_grounds_container_sensor" +CONF_PALLET_SENSOR = "pallet_sensor" +CONF_ERROR_CODE_SENSOR = "error_code_sensor" +CONF_GRAIN_TRAY_SENSOR = "grain_tray_sensor" +CONF_STATUS_TEXT_SENSOR = "status_text_sensor" +CONF_PACKETS = "packets" +CONF_SAECO_ID = "saeco_id" + +saeco_series_6000_ns = cg.esphome_ns.namespace('saeco_series_6000') +SaecoSeries6000 = saeco_series_6000_ns.class_('SaecoSeries6000', cg.Component) + +CONFIG_SCHEMA = cv.Schema({ + cv.Required(cv.CONF_ID): cv.declare_id(SaecoSeries6000), + cv.Required('uart_display'): cv.use_id(uart.UARTComponent), + cv.Required('uart_mainboard'): cv.use_id(uart.UARTComponent), + cv.Optional(CONF_DEBUG, default=False): cv.boolean, + cv.Optional(CONF_STATE_SENSOR): sensor.sensor_schema(), +}).extend(cv.COMPONENT_SCHEMA) + +def to_code(config): + var = cg.new_Pvariable(config[CONF_ID]) + yield cg.register_component(var, config) + + uart_display = yield cg.get_variable(config['uart_display']) + cg.add(var.set_uart_display(uart_display)) + + uart_mainboard = yield cg.get_variable(config['uart_mainboard']) + cg.add(var.set_uart_mainboard(uart_mainboard)) + + if config[CONF_DEBUG]: + cg.add(var.set_debug(True)) + + if CONF_STATE_SENSOR in config: + sens = yield sensor.new_sensor(config[CONF_STATE_SENSOR]) + cg.add(var.set_status_sensor(sens)) + +def validate_packet(value): + if isinstance(value, str): + return [int(x, 16) for x in value.split()] + return [cv.hex_uint8_t(x) for x in value] + +SEND_PACKETS_ACTION_SCHEMA = cv.Schema({ + cv.Required(CONF_ID): cv.use_id(SaecoSeries6000), + cv.Required(CONF_PACKETS): [cv.All(validate_packet)], + cv.Optional("delay_ms", default=10): cv.positive_int, +}) + +SendPacketsAction = saeco_series_6000_ns.class_("SendPacketsAction", automation.Action) + +@automation.register_action( + "saeco_series_6000.send_packets", + SendPacketsAction, + SEND_PACKETS_ACTION_SCHEMA, +) +def send_packets_to_mainboard_action_to_code(config, action_id, template_arg, args): + var = cg.new_Pvariable(action_id) + parent = yield cg.get_variable(config[CONF_ID]) + var.set_parent(parent) + var.set_packets(config[CONF_PACKETS]) + var.set_delay_ms(config.get("delay_ms", 10)) + return var + +SaecoSendPacketsButton = saeco_series_6000_ns.class_("SaecoSendPacketsButton", button.Button, cg.Component) + +SAECO_SEND_PACKETS_BUTTON_SCHEMA = button.BUTTON_SCHEMA.extend({ + cv.GenerateID(): cv.declare_id(SaecoSendPacketsButton), + cv.Required(CONF_ID): cv.use_id(SaecoSeries6000), + cv.Required(CONF_PACKETS): [cv.All(validate_packet)], + cv.Optional("delay_ms", default=10): cv.positive_int, +}).extend(cv.COMPONENT_SCHEMA) + +async def saeco_send_packets_button_to_code(config): + parent = await cg.get_variable(config[CONF_SAECO_ID]) + var = cg.new_Pvariable(config["id"]) + await cg.register_component(var, config) + await button.register_button(var, config) + cg.add(var.set_parent(parent)) + cg.add(var.set_packets(config[CONF_PACKETS])) + cg.add(var.set_delay_ms(config.get("delay_ms", 10))) + return var + +button.register_button("saeco_series_6000", saeco_send_packets_button_to_code) \ No newline at end of file diff --git a/esphome/settings/components/saeco_series_6000/saeco_series_6000.cpp b/esphome/settings/components/saeco_series_6000/saeco_series_6000.cpp new file mode 100644 index 0000000..de9bfb9 --- /dev/null +++ b/esphome/settings/components/saeco_series_6000/saeco_series_6000.cpp @@ -0,0 +1,343 @@ +#include "saeco_series_6000.h" +#include "esphome/core/log.h" +#include + +namespace esphome { +namespace saeco_series_6000 { + +static const char *TAG = "saeco_series_6000"; +static uint32_t last_activity_time = 0; + +void SaecoSeries6000::loop() { + uint8_t byte; + + // Bridge from uart_display (display) to uart_mainboard (mainboard) + while (uart_display_->available()) { + uart_display_->read_byte(&byte); + uart_mainboard_->write_byte(byte); // Mirror byte immediately + process_display_byte(byte); // Process the "sniffed" byte + } + + // Bridge from uart_mainboard (mainboard) to uart_display (display) + while (uart_mainboard_->available()) { + uart_mainboard_->read_byte(&byte); + uart_display_->write_byte(byte); // Mirror byte immediately + process_mainboard_byte(byte); // Process the "sniffed" byte + } + // Контроль активности UART (выключение через 15 сек) + static uint32_t last_check = 0; + uint32_t now = millis(); + if (now - last_check > 1000) { // проверяем каждую секунду + last_check = now; + if (now - last_activity_time > 15000) { + pub_status(2); // публикуем статус "выключено" + last_activity_time = now; // чтобы не публиковать повторно + } + } +} + +void SaecoSeries6000::process_display_byte(uint8_t byte) { + // Если получили первый 0xAA — начинаем новый пакет + if (byte == 0xAA && display_buffer_pos_ == 0) { + display_buffer_[display_buffer_pos_++] = byte; + return; + } + // Если уже начали собирать пакет + if (display_buffer_pos_ > 0 && display_buffer_pos_ < DISPLAY_BUFFER_SIZE) { + display_buffer_[display_buffer_pos_++] = byte; + if (byte == 0x55) { + parse_display_packet(display_buffer_, display_buffer_pos_); + display_buffer_pos_ = 0; + } + } +} + +void SaecoSeries6000::process_mainboard_byte(uint8_t byte) { + // Если получили первый 0xAA — начинаем новый пакет + if (byte == 0xAA && mainboard_buffer_pos_ == 0) { + mainboard_buffer_[mainboard_buffer_pos_++] = byte; + return; + } + // Если уже начали собирать пакет + if (mainboard_buffer_pos_ > 0 && mainboard_buffer_pos_ < MAINBOARD_BUFFER_SIZE) { + mainboard_buffer_[mainboard_buffer_pos_++] = byte; + if (byte == 0x55) { + parse_mainboard_packet(mainboard_buffer_, mainboard_buffer_pos_); + mainboard_buffer_pos_ = 0; + } + } +} + +void SaecoSeries6000::update_display_counter_from_packet(const uint8_t* buffer, uint16_t size) { + if (size > 4 && buffer[3] != 0xFF) { + last_display_counter_ = buffer[4]; + } +} + +void SaecoSeries6000::parse_display_packet(const uint8_t* buffer, uint16_t size) { + if (debug_) { + std::vector hex_buffer; + hex_buffer.resize(size * 3 + 1); + for (uint16_t i = 0; i < size; i++) { + sprintf(hex_buffer.data() + i * 3, "%02X ", buffer[i]); + } + if (size > 4 && buffer[3] != 0xFF){ + ESP_LOGI(TAG, "Packet from Display: %s", hex_buffer.data()); + } + } + update_display_counter_from_packet(buffer, size); + // Здесь больше не парсим B0-пакеты, только debug +} + +// Разбор пакета B0 (системные статусы кофемашины) +// buffer[6], buffer[7], buffer[9] содержат коды состояния +void SaecoSeries6000::parse_b0_packet(const uint8_t* buffer, uint16_t size) { + if (size < 10) return; + if (buffer[6] == 0x0E) { + if (buffer[9] == 0x00) { + pub_status(20); // 20: "Опорож. контейнер для коф. гущи" + } else { + if ((buffer[9] & 0x40) != 0) { + pub_status(22); // 22: "Воды нет" + } else { + pub_status(17); // 17: "Вода есть" + } + if ((buffer[9] & 0x80) != 0) { + pub_status(23); // 23: "Извлечен контейнер для жмыха" + } else { + pub_status(18); // 18: "Вставлен контейнер для жмыха" + } + } + } else if (buffer[6] == 0x06) { + pub_status(21); // 21: "Готово/Выберите напиток" + } else if (buffer[6] == 0x0C) { + if (buffer[7] == 0x01) { + pub_status(8); // 8: "Наслаждайтесь" + } else if (buffer[7] == 0x02) { + pub_status(15); // 15: "Что-то (07 0C 02)" + } + } else if (buffer[6] == 0x07) { + if (buffer[7] == 0x0E) { + pub_status(9); // 9: "Нагрев воды" + } else if (buffer[7] == 0x0D) { + pub_status(10); // 10: "Перемалываем зерна" + } else if (buffer[7] == 0x10) { + pub_status(3); // 3: "Наливаем молоко" + } else if (buffer[7] == 0x11) { + pub_status(4); // 4: "Наливаем кофе" + } else if (buffer[7] == 0x12) { + pub_status(5); // 5: "Предварительное дозирование" + } else if (buffer[7] == 0x13) { + pub_status(6); // 6: "Создание пара для молока" + } else if (buffer[7] == 0x14) { + pub_status(7); // 7: "Заварочный узел в положение заваривания" + } else if (buffer[7] == 0x15) { + pub_status(15); // 15: "Наслаждайтесь" + } + } else if (buffer[6] == 0x08) { + if (buffer[7] == 0x0E) { + pub_status(14); // 14: "Нагревание" + } else if (buffer[7] == 0x02) { + pub_status(11); // 11: "Промывка" + } else if (buffer[7] == 0x14) { + pub_status(13); // 13: "Что-то (07 08 14)" + } else if (buffer[7] == 0x05) { + pub_status(12); // 12: "Зерна закончились" + } else if (buffer[7] == 0x16) { + pub_status(24); // 24: "Удаление накипи стадия 1" + } else if (buffer[7] == 0x18) { + pub_status(25); // 25: "Удаление накипи стадия 2" + } + } else if (buffer[7] == 0x00) { + if (buffer[6] == 0x01) { + pub_status(1); // 1: "Что-то (07 01 00)" + } else if (buffer[6] == 0x05) { + pub_status(2); // 2: "Выключено" + } + } +} + +// Разбор пакета B5 (коды ошибок кофемашины) +// buffer[10], buffer[11] содержат коды ошибок +void SaecoSeries6000::parse_b5_packet(const uint8_t* buffer, uint16_t size) { + if (size <= 12) return; + if (buffer[10] == 0x00) { + if (buffer[11] == 0x00) pub_status(30); // 30: "Ошибка 0x00" + else if (buffer[11] == 0x0B) pub_status(31); // 31: "Ошибка 0x0B" + else if (buffer[11] == 0xE6) pub_status(32); // 32: "Ошибка 0xE6" + else if (buffer[11] == 0x80) pub_status(33); // 33: "Ошибка 0x80" + else if (buffer[11] == 0xCB) pub_status(34); // 34: "Ошибка 0xCB" + else if (buffer[11] == 0xFF) pub_status(35); // 35: "Ошибка 0xFF" + else if (buffer[11] == 0xA0) pub_status(36); // 36: "Ошибка 0xA0" + } else if (buffer[10] == 0x01) { + pub_status(37); // 37: "Статус2 0x01" + } +} + +void SaecoSeries6000::parse_mainboard_packet(const uint8_t* buffer, uint16_t size) { + last_activity_time = millis(); // сбрасываем таймер активности при любом пакете + if (debug_) { + // std::vector hex_buffer; + // hex_buffer.resize(size * 3 + 1); + // for (uint16_t i = 0; i < size; i++) { + // sprintf(hex_buffer.data() + i * 3, "%02X ", buffer[i]); + // } + //ESP_LOGD(TAG, "Packet from Mainboard: %s", hex_buffer.data()); + //ESP_LOGD(TAG, "parse_mainboard_packet: size=%u", size); + } + // Парсим B0 + if (size > 4 && buffer[3] == 0xB0) { + parse_b0_packet(buffer, size); + } else if (size > 12 && buffer[3] == 0xB5) { + parse_b5_packet(buffer, size); + } +} + +void SaecoSeries6000::pub_status(uint8_t status) { + if (status_sensor_ != nullptr) { + status_sensor_->publish_state(status); + } +} + +void SaecoSeries6000::dump_config() { + ESP_LOGCONFIG(TAG, "Saeco Series 6000 UART Bridge"); + ESP_LOGCONFIG(TAG, " UART Display (uart_display): %p", uart_display_); + ESP_LOGCONFIG(TAG, " UART Mainboard (uart_mainboard): %p", uart_mainboard_); + ESP_LOGCONFIG(TAG, " Debug mode: %s", ONOFF(this->debug_)); +} + +void SaecoSeries6000::send_packet_to_mainboard(const std::vector &data) { + ESP_LOGI(TAG, "Send to Mainboard pressed."); + for (auto b : data) { + uart_mainboard_->write_byte(b); + } +} + +const uint8_t SaecoSeries6000::BitReverse[256] = { + 0x00,0x80,0x40,0xC0,0x20,0xA0,0x60,0xE0,0x10,0x90,0x50,0xD0,0x30,0xB0,0x70,0xF0, + 0x08,0x88,0x48,0xC8,0x28,0xA8,0x68,0xE8,0x18,0x98,0x58,0xD8,0x38,0xB8,0x78,0xF8, + 0x04,0x84,0x44,0xC4,0x24,0xA4,0x64,0xE4,0x14,0x94,0x54,0xD4,0x34,0xB4,0x74,0xF4, + 0x0C,0x8C,0x4C,0xCC,0x2C,0xAC,0x6C,0xEC,0x1C,0x9C,0x5C,0xDC,0x3C,0xBC,0x7C,0xFC, + 0x02,0x82,0x42,0xC2,0x22,0xA2,0x62,0xE2,0x12,0x92,0x52,0xD2,0x32,0xB2,0x72,0xF2, + 0x0A,0x8A,0x4A,0xCA,0x2A,0xAA,0x6A,0xEA,0x1A,0x9A,0x5A,0xDA,0x3A,0xBA,0x7A,0xFA, + 0x06,0x86,0x46,0xC6,0x26,0xA6,0x66,0xE6,0x16,0x96,0x56,0xD6,0x36,0xB6,0x76,0xF6, + 0x0E,0x8E,0x4E,0xCE,0x2E,0xAE,0x6E,0xEE,0x1E,0x9E,0x5E,0xDE,0x3E,0xBE,0x7E,0xFE, + 0x01,0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1,0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1, + 0x09,0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9,0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9, + 0x05,0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5,0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5, + 0x0D,0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED,0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD, + 0x03,0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3,0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3, + 0x0B,0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB,0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB, + 0x07,0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7,0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7, + 0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF,0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF +}; + +uint32_t SaecoSeries6000::calc_crc(const std::vector& data, size_t start, size_t end) { + uint32_t crc = 0xFFFFFFFF; + const uint32_t POLY = 0x04C11DB7; + if (start >= end) return 0; + // start + uint8_t val = data[start]; + ((uint8_t*)(&crc))[3] ^= BitReverse[val]; + for (uint8_t j = 0; j < 8; j++) { + if (crc & 0x80000000) { + crc = (crc << 1) ^ POLY; + } else { + crc <<= 1; + } + } + // остальные байты + for (size_t i = start + 1; i < end; i++) { + uint8_t v = data[i]; + ((uint8_t*)(&crc))[3] ^= BitReverse[v]; + for (uint8_t j = 0; j < 8; j++) { + if (crc & 0x80000000) { + crc = (crc << 1) ^ POLY; + } else { + crc <<= 1; + } + } + } + uint32_t t32 = 0; + ((uint8_t*)(&t32))[0] = BitReverse[((uint8_t*)(&crc))[3]]; + ((uint8_t*)(&t32))[1] = BitReverse[((uint8_t*)(&crc))[2]]; + ((uint8_t*)(&t32))[2] = BitReverse[((uint8_t*)(&crc))[1]]; + ((uint8_t*)(&t32))[3] = BitReverse[((uint8_t*)(&crc))[0]]; + crc = t32 ^ 0xFFFFFFFF; + return crc; +} + +std::vector SaecoSeries6000::parse_hex_string_to_bytes(const std::string& hex_string) { + std::vector pkt; + size_t pos = 0; + while (pos < hex_string.size()) { + while (pos < hex_string.size() && isspace(hex_string[pos])) ++pos; + if (pos >= hex_string.size()) break; + char* endptr = nullptr; + uint8_t byte = static_cast(std::strtoul(hex_string.c_str() + pos, &endptr, 16)); + pkt.push_back(byte); + if (endptr == nullptr || endptr == hex_string.c_str() + pos) break; + pos = endptr - hex_string.c_str(); + } + return pkt; +} + +void SaecoSeries6000::send_packets_to_mainboard(const std::string& hex_packet, uint32_t delay_ms) { + std::vector> pkts = {parse_hex_string_to_bytes(hex_packet)}; + send_packets_to_mainboard(pkts, delay_ms); +} + +void SaecoSeries6000::send_packets_to_mainboard(const std::vector& hex_packets, uint32_t delay_ms) { + std::vector> pkts; + for (const auto& s : hex_packets) { + pkts.push_back(parse_hex_string_to_bytes(s)); + } + send_packets_to_mainboard(pkts, delay_ms); +} + +void SaecoSeries6000::send_packets_to_mainboard(const std::vector> &packets, uint32_t delay_ms) { + uint8_t counter = (last_display_counter_ + 1) & 0xFF; + for (size_t i = 0; i < packets.size(); ++i) { + std::vector pkt = packets[i]; + // Заменяем байт счетчика (4-й байт) + if (pkt.size() > 4) { + pkt[4] = counter; + } + // Пересчёт CRC: ищем преамбулу 0xAA 0xAA 0xAA, считаем CRC по данным между преамбулой и последними 5 байтами + if (pkt.size() > 8) { + size_t preamble = 0; + if (pkt[0] == 0xAA && pkt[1] == 0xAA && pkt[2] == 0xAA) { + preamble = 3; + } + size_t crc_start = preamble; + size_t crc_end = pkt.size() - 5; // не включаем 4 CRC и 0x55 + uint32_t crc = calc_crc(pkt, crc_start, crc_end); + // Заменяем последние 4 байта перед 0x55 на новую CRC + pkt[pkt.size()-2] = (crc >> 24) & 0xFF; + pkt[pkt.size()-3] = (crc >> 16) & 0xFF; + pkt[pkt.size()-4] = (crc >> 8) & 0xFF; + pkt[pkt.size()-5] = crc & 0xFF; + // pkt[pkt.size()-5] = (crc >> 24) & 0xFF; + // pkt[pkt.size()-4] = (crc >> 16) & 0xFF; + // pkt[pkt.size()-3] = (crc >> 8) & 0xFF; + // pkt[pkt.size()-2] = (crc) & 0xFF; + } + // Логируем пакет перед отправкой + std::string log_str; + char buf[8]; + for (auto b : pkt) { + snprintf(buf, sizeof(buf), "%02X ", b); + log_str += buf; + } + ESP_LOGI(TAG, "Send to Mainboard: %s", log_str.c_str()); + send_packet_to_mainboard(pkt); + counter = (counter + 1) & 0xFF; + delay(delay_ms); + } + last_display_counter_ = (counter - 1) & 0xFF; +} + +// Реализация SendPacketsAction полностью в header (saeco_series_6000.h) + +} // namespace saeco_series_6000 +} // namespace esphome \ No newline at end of file diff --git a/esphome/settings/components/saeco_series_6000/saeco_series_6000.h b/esphome/settings/components/saeco_series_6000/saeco_series_6000.h new file mode 100644 index 0000000..fe73935 --- /dev/null +++ b/esphome/settings/components/saeco_series_6000/saeco_series_6000.h @@ -0,0 +1,81 @@ +#pragma once + +#include "esphome/core/component.h" +#include "esphome/components/uart/uart.h" +#include "esphome/components/sensor/sensor.h" +#include "esphome/core/automation.h" +#include "esphome/components/button/button.h" + +namespace esphome { +namespace saeco_series_6000 { + +// Buffer sizes for packet sniffing +constexpr size_t DISPLAY_BUFFER_SIZE = 128; +constexpr size_t MAINBOARD_BUFFER_SIZE = 128; + +class SaecoSeries6000 : public Component { + public: + void set_uart_display(uart::UARTComponent *uart_display) { uart_display_ = uart_display; } + void set_uart_mainboard(uart::UARTComponent *uart_mainboard) { uart_mainboard_ = uart_mainboard; } + void set_debug(bool debug) { debug_ = debug; } + void set_status_sensor(sensor::Sensor *sensor) { status_sensor_ = sensor; } + void loop() override; + void dump_config() override; + void send_packet_to_mainboard(const std::vector &data); + void send_packets_to_mainboard(const std::vector> &packets, uint32_t delay_ms = 10); + void send_packets_to_mainboard(const std::vector& hex_packets, uint32_t delay_ms = 10); + void send_packets_to_mainboard(const std::string& hex_packet, uint32_t delay_ms = 10); + + protected: + uart::UARTComponent *uart_display_; + uart::UARTComponent *uart_mainboard_; + bool debug_{false}; + sensor::Sensor *status_sensor_{nullptr}; + + private: + uint8_t display_buffer_[DISPLAY_BUFFER_SIZE]; + uint16_t display_buffer_pos_{0}; + + uint8_t mainboard_buffer_[MAINBOARD_BUFFER_SIZE]; + uint16_t mainboard_buffer_pos_{0}; + + uint8_t display_last_bytes_[3] = {0, 0, 0}; + uint8_t mainboard_last_bytes_[3] = {0, 0, 0}; + + uint8_t display_sync_count_{0}; + uint8_t mainboard_sync_count_{0}; + + uint8_t last_display_counter_{0}; + void update_display_counter_from_packet(const uint8_t* buffer, uint16_t size); + + void process_display_byte(uint8_t byte); + void process_mainboard_byte(uint8_t byte); + + void parse_display_packet(const uint8_t* buffer, uint16_t size); + void parse_mainboard_packet(const uint8_t* buffer, uint16_t size); + void parse_b0_packet(const uint8_t* buffer, uint16_t size); + void parse_b5_packet(const uint8_t* buffer, uint16_t size); + void pub_status(uint8_t status); + static const uint8_t BitReverse[256]; + uint32_t calc_crc(const std::vector& data, size_t start, size_t end); + std::vector parse_hex_string_to_bytes(const std::string& hex_string); +}; + +class SaecoSendPacketsButton : public esphome::button::Button, public esphome::Component { + public: + void set_parent(SaecoSeries6000 *parent) { parent_ = parent; } + void set_packets(const std::vector> &packets) { packets_ = packets; } + void set_delay_ms(uint32_t delay_ms) { delay_ms_ = delay_ms; } + void press_action() override { + if (parent_ != nullptr) { + parent_->send_packets_to_mainboard(packets_, delay_ms_); + } + } + private: + SaecoSeries6000 *parent_{nullptr}; + std::vector> packets_; + uint32_t delay_ms_{10}; +}; + +} // namespace saeco_series_6000 +} // namespace esphome \ No newline at end of file diff --git a/esphome/settings/danil_bedside_lamp.yaml b/esphome/settings/danil_bedside_lamp.yaml new file mode 100644 index 0000000..f831eb6 --- /dev/null +++ b/esphome/settings/danil_bedside_lamp.yaml @@ -0,0 +1,58 @@ +# -------------------------------------------------------------------------- +# Substitutions +# +# These are substitutions as used by the configuration packages from below. +# You can uncomment and update the ones that you want to modify. +# -------------------------------------------------------------------------- + +substitutions: + name: danil-bedside-lamp + friendly_name: Danil Bedside Lamp + #light_name: ${friendly_name} RGBWW Light + #light_mode_text_sensor_name: ${friendly_name} Light Mode + default_transition_length: 800ms + +# -------------------------------------------------------------------------- +# Load configuration packages +# +# These provide a convenient way to compose your device configuration from +# some functional building blocks. Pick and mix the blocks that you need. +# +# For customization you can override options in your config or you can +# copy the contents of these packages directly in your config file as +# an example for your own customizations. +# +# Available packages are: +# - core.yaml : core components & hardware setup +# - behavior_default.yaml : default device behavior +# - ota_feedback.yaml : enable visual feedback during OTA updates +# - activate_preset_svc.yaml : 'activate_preset' service for Home Assistant +# -------------------------------------------------------------------------- + +packages: + bslamp2: + url: https://github.com/mmakaay/esphome-xiaomi_bslamp2 + ref: dev + files: + - packages/core.yaml + - packages/behavior_default.yaml + - packages/ota_feedback.yaml + - packages/activate_preset_svc.yaml + refresh: 0s + +# -------------------------------------------------------------------------- +# Use your own preferences for these components. +# -------------------------------------------------------------------------- + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + use_address: ${name}.lan + +api: + encryption: + key: !secret api_encryption_key + +ota: + platform: esphome + password: !secret esphome_pass diff --git a/esphome/settings/jkbms-monitor.yml b/esphome/settings/jkbms-monitor.yml new file mode 100644 index 0000000..57cbc41 --- /dev/null +++ b/esphome/settings/jkbms-monitor.yml @@ -0,0 +1,387 @@ +substitutions: + name: jk-bms + device_description: "Monitor and control a JK-BMS v11 via bluetooth" + external_components_source: github://syssi/esphome-jk-bms@main + mac_address: C8:47:80:39:31:5D + # Please use "JK02_24S" if you own a old JK-BMS < hardware version 11.0 (hardware version >= 6.0 and < 11.0) + # Please use "JK02_32S" if you own a new JK-BMS >= hardware version 11.0 (f.e. JK-B2A8S20P hw 11.XW, sw 11.26) + # Please use "JK04" if you have some old JK-BMS <= hardware version 3.0 (f.e. JK-B2A16S hw 3.0, sw. 3.3.0) + protocol_version: JK02_32S + device_host: jk-bms.lan + +esphome: + name: ${name} + comment: ${device_description} + min_version: 2024.6.0 + project: + name: "syssi.esphome-jk-bms" + version: 2.3.0 + +esp32: + variant: esp32c3 + board: esp32-c3-devkitm-1 + framework: + type: esp-idf + +external_components: + - source: ${external_components_source} + refresh: 0s + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + use_address: ${device_host} + +logger: + level: DEBUG + logs: + esp32_ble_tracker: INFO + esp32_ble_client: INFO + +web_server: + port: 80 + auth: + username: admin + password: superLongP4ss + +# If you don't use Home Assistant please remove this `api` section and uncomment the `mqtt` component! +api: + encryption: + key: !secret api_encryption_key + +ota: + - platform: esphome + password: !secret api_encryption_key + on_begin: + then: + - switch.turn_off: ble_client_switch0 + - logger.log: "BLE connection suspended for OTA update" + +# mqtt: +# broker: !secret mqtt_host +# username: !secret mqtt_username +# password: !secret mqtt_password +# id: mqtt_client + +esp32_ble_tracker: + scan_parameters: + active: false + +ble_client: + - mac_address: ${mac_address} + id: client0 + +jk_bms_ble: + - ble_client_id: client0 + protocol_version: ${protocol_version} + throttle: 5s + id: bms0 + +binary_sensor: + - platform: jk_bms_ble + balancing: + name: "${name} balancing" + charging: + name: "${name} charging" + discharging: + name: "${name} discharging" + heating: + name: "${name} heating" + online_status: + name: "${name} online status" + dry_contact_1: + name: "${name} dry contact 1" + dry_contact_2: + name: "${name} dry contact 2" + +button: + - platform: jk_bms_ble + retrieve_settings: + name: "${name} retrieve settings" + retrieve_device_info: + name: "${name} retrieve device info" + +number: + - platform: jk_bms_ble + jk_bms_ble_id: bms0 + balance_trigger_voltage: + name: "${name} balance trigger voltage" + cell_count: + name: "${name} cell count" + total_battery_capacity: + name: "${name} total battery capacity" + cell_voltage_overvoltage_protection: + name: "${name} cell voltage overvoltage protection" + cell_voltage_overvoltage_recovery: + name: "${name} cell voltage overvoltage recovery" + cell_voltage_undervoltage_protection: + name: "${name} cell voltage undervoltage protection" + cell_voltage_undervoltage_recovery: + name: "${name} cell voltage undervoltage recovery" + balance_starting_voltage: + name: "${name} balance starting voltage" + voltage_calibration: + name: "${name} voltage calibration" + current_calibration: + name: "${name} current calibration" + power_off_voltage: + name: "${name} power off voltage" + max_balance_current: + name: "${name} max balance current" + max_charge_current: + name: "${name} max charge current" + max_discharge_current: + name: "${name} max discharge current" + smart_sleep_voltage: + name: "${name} smart sleep voltage" + cell_soc100_voltage: + name: "${name} cell soc100 voltage" + cell_soc0_voltage: + name: "${name} cell soc0 voltage" + cell_request_charge_voltage: + name: "${name} cell request charge voltage" + cell_request_float_voltage: + name: "${name} cell request float voltage" + cell_request_charge_voltage_time: + name: "${name} cell request charge voltage time" + cell_request_float_voltage_time: + name: "${name} cell request float voltage time" + charge_overcurrent_protection_delay: + name: "${name} charge overcurrent protection delay" + charge_overcurrent_protection_recovery_time: + name: "${name} charge overcurrent protection recovery time" + discharge_overcurrent_protection_delay: + name: "${name} discharge overcurrent protection delay" + discharge_overcurrent_protection_recovery_time: + name: "${name} discharge overcurrent protection recovery time" + short_circuit_protection_delay: + name: "${name} short circuit protection delay" + short_circuit_protection_recovery_time: + name: "${name} short circuit protection recovery time" + charge_overtemperature_protection: + name: "${name} charge overtemperature protection" + charge_overtemperature_protection_recovery: + name: "${name} charge overtemperature protection recovery" + discharge_overtemperature_protection: + name: "${name} discharge overtemperature protection" + discharge_overtemperature_protection_recovery: + name: "${name} discharge overtemperature protection recovery" + charge_undertemperature_protection: + name: "${name} charge undertemperature protection" + charge_undertemperature_protection_recovery: + name: "${name} charge undertemperature protection recovery" + power_tube_overtemperature_protection: + name: "${name} power tube overtemperature protection" + power_tube_overtemperature_protection_recovery: + name: "${name} power tube overtemperature protection recovery" + discharge_precharge_time: + name: "${name} discharge precharge time" + heating_start_temperature: + name: "${name} heating start temperature" + heating_stop_temperature: + name: "${name} heating stop temperature" + +sensor: + - platform: jk_bms_ble + jk_bms_ble_id: bms0 + min_cell_voltage: + name: "${name} min cell voltage" + max_cell_voltage: + name: "${name} max cell voltage" + min_voltage_cell: + name: "${name} min voltage cell" + max_voltage_cell: + name: "${name} max voltage cell" + delta_cell_voltage: + name: "${name} delta cell voltage" + average_cell_voltage: + name: "${name} average cell voltage" + cell_voltage_1: + name: "${name} cell voltage 1" + cell_voltage_2: + name: "${name} cell voltage 2" + cell_voltage_3: + name: "${name} cell voltage 3" + cell_voltage_4: + name: "${name} cell voltage 4" + cell_voltage_5: + name: "${name} cell voltage 5" + cell_voltage_6: + name: "${name} cell voltage 6" + cell_voltage_7: + name: "${name} cell voltage 7" + cell_voltage_8: + name: "${name} cell voltage 8" + cell_voltage_9: + name: "${name} cell voltage 9" + cell_voltage_10: + name: "${name} cell voltage 10" + cell_voltage_11: + name: "${name} cell voltage 11" + cell_voltage_12: + name: "${name} cell voltage 12" + cell_voltage_13: + name: "${name} cell voltage 13" + cell_voltage_14: + name: "${name} cell voltage 14" + cell_voltage_15: + name: "${name} cell voltage 15" + cell_voltage_16: + name: "${name} cell voltage 16" + cell_voltage_17: + name: "${name} cell voltage 17" + cell_voltage_18: + name: "${name} cell voltage 18" + cell_voltage_19: + name: "${name} cell voltage 19" + cell_voltage_20: + name: "${name} cell voltage 20" + cell_voltage_21: + name: "${name} cell voltage 21" + cell_voltage_22: + name: "${name} cell voltage 22" + cell_voltage_23: + name: "${name} cell voltage 23" + cell_voltage_24: + name: "${name} cell voltage 24" + cell_resistance_1: + name: "${name} cell resistance 1" + cell_resistance_2: + name: "${name} cell resistance 2" + cell_resistance_3: + name: "${name} cell resistance 3" + cell_resistance_4: + name: "${name} cell resistance 4" + cell_resistance_5: + name: "${name} cell resistance 5" + cell_resistance_6: + name: "${name} cell resistance 6" + cell_resistance_7: + name: "${name} cell resistance 7" + cell_resistance_8: + name: "${name} cell resistance 8" + cell_resistance_9: + name: "${name} cell resistance 9" + cell_resistance_10: + name: "${name} cell resistance 10" + cell_resistance_11: + name: "${name} cell resistance 11" + cell_resistance_12: + name: "${name} cell resistance 12" + cell_resistance_13: + name: "${name} cell resistance 13" + cell_resistance_14: + name: "${name} cell resistance 14" + cell_resistance_15: + name: "${name} cell resistance 15" + cell_resistance_16: + name: "${name} cell resistance 16" + cell_resistance_17: + name: "${name} cell resistance 17" + cell_resistance_18: + name: "${name} cell resistance 18" + cell_resistance_19: + name: "${name} cell resistance 19" + cell_resistance_20: + name: "${name} cell resistance 20" + cell_resistance_21: + name: "${name} cell resistance 21" + cell_resistance_22: + name: "${name} cell resistance 22" + cell_resistance_23: + name: "${name} cell resistance 23" + cell_resistance_24: + name: "${name} cell resistance 24" + total_voltage: + name: "${name} total voltage" + current: + name: "${name} current" + heating_current: + name: "${name} heating current" + power: + name: "${name} power" + charging_power: + name: "${name} charging power" + discharging_power: + name: "${name} discharging power" + temperature_sensor_1: + name: "${name} temperature sensor 1" + temperature_sensor_2: + name: "${name} temperature sensor 2" + temperature_sensor_3: + name: "${name} temperature sensor 3" + temperature_sensor_4: + name: "${name} temperature sensor 4" + temperature_sensor_5: + name: "${name} temperature sensor 5" + power_tube_temperature: + name: "${name} power tube temperature" + balancing: + name: "${name} balancing" + state_of_charge: + name: "${name} state of charge" + state_of_health: + name: "${name} state of health" + capacity_remaining: + name: "${name} capacity remaining" + total_battery_capacity_setting: + name: "${name} total battery capacity setting" + charging_cycles: + name: "${name} charging cycles" + total_charging_cycle_capacity: + name: "${name} total charging cycle capacity" + total_runtime: + name: "${name} total runtime" + balancing_current: + name: "${name} balancing current" + errors_bitmask: + name: "${name} errors bitmask" + emergency_time_countdown: + name: "${name} emergency time countdown" + charge_status_id: + name: "${name} charge status id" + charge_status_time_elapsed: + name: "${name} charge status time elapsed" + +switch: + - platform: jk_bms_ble + charging: + name: "${name} charging" + discharging: + name: "${name} discharging" + balancer: + name: "${name} balancer" + emergency: + name: "${name} emergency" + heating: + name: "${name} heating" + disable_temperature_sensors: + name: "${name} disable temperature sensors" + display_always_on: + name: "${name} display always on" + smart_sleep: + name: "${name} smart sleep" + disable_pcl_module: + name: "${name} disable pcl module" + timed_stored_data: + name: "${name} timed stored data" + charging_float_mode: + name: "${name} charging float mode" + + - platform: ble_client + ble_client_id: client0 + name: "${name} enable bluetooth connection" + id: ble_client_switch0 + +text_sensor: + - platform: jk_bms_ble + errors: + name: "${name} errors" + total_runtime_formatted: + name: "${name} total runtime formatted" + charge_status: + name: "${name} charge status" + software_version: + name: "${name} software version" + hardware_version: + name: "${name} hardware version" diff --git a/esphome/settings/old/ac_childroom_gree.yaml b/esphome/settings/old/ac_childroom_gree.yaml new file mode 100644 index 0000000..512c0b1 --- /dev/null +++ b/esphome/settings/old/ac_childroom_gree.yaml @@ -0,0 +1,85 @@ +#=============================================================================== +# Контроллер кондиционера в гостиной +# Wemos D1 mini +#=============================================================================== +substitutions: + node_name: ac_childroom # Use a unique name. + node_id: ac_childroom # Use a unique id. + deviceid: ac_childroom + devicename: ac_childroom + friendly_node_name: "Кондиционер Детская Старый" + +#=============================================================================== +# Общий конфиг +#=============================================================================== +esphome: + name: ${node_name} + friendly_name: ${friendly_node_name} + +esp8266: + board: esp12e + +web_server: + port: 80 + auth: + username: admin + password: superLongP4ss + +# Enable Home Assistant API +api: + encryption: + key: !secret api_encryption_key + +ota: + - platform: esphome + password: !secret api_encryption_key + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "${devicename} Fallback Hotspot" + password: !secret esphome_captive_pass + +captive_portal: + +# Enable logging +logger: + baud_rate: 0 # disable LOG output on UART as UART is used for Sinclair AC unit +# level: VERBOSE + +uart: + tx_pin: 1 + rx_pin: 3 + baud_rate: 4800 + parity: EVEN + +time: + - platform: sntp + +external_components: + - source: github://gekkehenkie11/esphome_gree_ac + components: [sinclair_ac] + refresh: 0s + +climate: + - platform: sinclair_ac + name: ${devicename} + horizontal_swing_select: + name: ${devicename} Horizontal Swing Mode + vertical_swing_select: + name: ${devicename} Vertical Swing Mode + display_select: + name: ${devicename} Display Mode + display_unit_select: + name: ${devicename} Display Unit + plasma_switch: + name: ${devicename} Plasma + sleep_switch: + name: ${devicename} Sleep + xfan_switch: + name: ${devicename} X-fan + save_switch: + name: ${devicename} Save/8 Heat diff --git a/esphome/settings/old/ac_childroom_midea.yaml b/esphome/settings/old/ac_childroom_midea.yaml new file mode 100644 index 0000000..8972dc7 --- /dev/null +++ b/esphome/settings/old/ac_childroom_midea.yaml @@ -0,0 +1,69 @@ +esphome: + name: ac_childroom + +esp8266: + board: d1_mini + +# Disable logging over UART (required) +logger: + baud_rate: 0 + +# Enable Home Assistant API +api: + +ota: + - platform: esphome + password: !secret api_encryption_key + +web_server: + port: 80 + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Childroom AC Fallback" + password: !secret esphome_captive_pass + +# UART settings for Midea dongle (required) +uart: + tx_pin: GPIO1 # hardware dependant + rx_pin: GPIO3 # hardware dependant + baud_rate: 9600 + debug: + +# Main settings +climate: + - platform: midea + name: childroom_ac # Use a unique name. +# transmitter_id: # Optional. Add this option to use IR transmitter. + period: 1s # Optional + timeout: 2s # Optional + num_attempts: 3 # Optional + autoconf: true # Autoconfigure most options. + beeper: true # Beep on commands. + visual: # Optional. Example of visual settings override. + min_temperature: 17 °C # min: 17 + max_temperature: 30 °C # max: 30 + temperature_step: 1 °C # min: 0.5 + supported_modes: # All capabilities in this section detected by autoconf. + - FAN_ONLY # This capability is always used. + - HEAT_COOL + - COOL + - HEAT + - DRY + custom_fan_modes: + - SILENT + - TURBO + supported_presets: # All capabilities in this section detected by autoconf. + - ECO + - BOOST + - SLEEP # This capability is always used. + custom_presets: # All capabilities in this section detected by autoconf. + - FREEZE_PROTECTION + supported_swing_modes: + - VERTICAL # This capability is always used. + - HORIZONTAL + - BOTH \ No newline at end of file diff --git a/esphome/settings/old/ac_mainroom_old.yaml b/esphome/settings/old/ac_mainroom_old.yaml new file mode 100644 index 0000000..7388a9d --- /dev/null +++ b/esphome/settings/old/ac_mainroom_old.yaml @@ -0,0 +1,66 @@ +esphome: + name: mainroom_ac + +esp8266: + board: esp12e + +# Disable logging over UART (required) +logger: + baud_rate: 0 + +# Enable Home Assistant API +api: + +ota: + +web_server: + port: 80 + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Mainroom AC Fallback" + password: !secret esphome_captive_pass + +# UART settings for Midea dongle (required) +uart: + tx_pin: GPIO1 # hardware dependant + rx_pin: GPIO3 # hardware dependant + baud_rate: 9600 + +# Main settings +climate: + - platform: midea + name: mainroom_ac # Use a unique name. +# transmitter_id: # Optional. Add this option to use IR transmitter. + period: 1s # Optional + timeout: 2s # Optional + num_attempts: 3 # Optional + autoconf: true # Autoconfigure most options. + beeper: true # Beep on commands. + visual: # Optional. Example of visual settings override. + min_temperature: 17 °C # min: 17 + max_temperature: 30 °C # max: 30 + temperature_step: 1 °C # min: 0.5 + supported_modes: # All capabilities in this section detected by autoconf. + - FAN_ONLY # This capability is always used. + - HEAT_COOL + - COOL + - HEAT + - DRY + custom_fan_modes: + - SILENT + - TURBO + supported_presets: # All capabilities in this section detected by autoconf. + - ECO + - BOOST + - SLEEP # This capability is always used. + custom_presets: # All capabilities in this section detected by autoconf. + - FREEZE_PROTECTION + supported_swing_modes: + - VERTICAL # This capability is always used. + - HORIZONTAL + - BOTH \ No newline at end of file diff --git a/esphome/settings/presence.h b/esphome/settings/presence.h new file mode 100644 index 0000000..c434595 --- /dev/null +++ b/esphome/settings/presence.h @@ -0,0 +1,336 @@ +#include "esphome.h" + +#define BLE_PIN D1 + +class HappyBubblesDevice : public Component, public CustomMQTTDevice { +protected: + // char hostname[20] = "hall"; + const char* hostname = "hall"; + String buf = ""; + int txPower = -59; + char ble_mac_addr[13]; + char ble_rssi [5]; + char ble_is_scan_resp [2]; + char ble_type [2]; + char ble_data[100]; + + char tx_power [3]; + char beacon_uuid [33]; + char beacon_major [5]; + char beacon_minor [5]; + char instance_id [13]; + char json_ble_send[500]; + char topic [130]; + + typedef struct { + uint8_t type; + uint8_t start; + uint8_t end; + uint8_t size; + } ble_tok_t; + +public: + HappyBubblesDevice(const char* host_param) { + hostname = host_param; + } + void setup() override + { + Serial.begin(115200); + } + void loop() override + { + while (Serial.available() > 0) { + char inChar = Serial.read(); + + if (inChar == '\n') { + //если буфер наполнен + // parseData(); + char charBuf[120]; + buf.toCharArray(charBuf, 120); + process_serial(charBuf); + buf = ""; + } + else if (inChar != '\r') { + buf += inChar; + } + } + } + + String getValue(String data, char separator, int index) + { + int found = 0; + int strIndex[] = { 0, -1 }; + int maxIndex = data.length() - 1; + + for (int i = 0; i <= maxIndex && found <= index; i++) { + if (data.charAt(i) == separator || i == maxIndex) { + found++; + strIndex[0] = strIndex[1] + 1; + strIndex[1] = (i == maxIndex) ? i + 1 : i; + } + } + + return found > index ? data.substring(strIndex[0], strIndex[1]) : ""; + } + + float calcDistance(int rssi, int txPower) + { + if (rssi == 0) { + return -1.0; + } + + float ratio = rssi * 1.0 / txPower; + if (ratio < 1.0) { + return pow(ratio, 10); + } + else { + return (0.89976) * pow(ratio, 7.7095) + 0.111; + } + } + + String floatToString(float x, byte precision = 2) + { + char tmp[50]; + dtostrf(x, 0, precision, tmp); + return String(tmp); + } + + void process_serial(char *buf) + { + os_printf("********* got serial to process %d ** %s \n\r", strlen(buf), buf); + char * pch; + pch = strtok(buf, "|"); + int i = 0; + + memset(ble_mac_addr, 0, 12); + memset(ble_rssi, 0, 5); + memset(ble_is_scan_resp, 0, 1); + memset(ble_type, 0, 1); + memset(ble_data, 0, 100); + + while(pch != NULL) + { + switch(i) + { + case 0: + { + strcpy(ble_mac_addr, pch); + break; + } + case 1: + { + strcpy(ble_rssi, pch); + break; + } + case 2: + { + strcpy(ble_is_scan_resp, pch); + break; + } + case 3: + { + strcpy(ble_type, pch); + break; + } + case 4: + { + strcpy(ble_data, pch); + break; + } + } + i++; + //os_printf("token: %s\n", pch); + pch = strtok(NULL, "|"); + } + + //basic filters + //check mac is 12 chars + int should_send = 0; + if(strlen(ble_mac_addr) != 12) + { + os_printf("bad mac, not 12, %d, %s\n", strlen(ble_mac_addr), ble_mac_addr); + should_send = 1; + } + //check mac is all hex + if (!ble_mac_addr[strspn(ble_mac_addr, "0123456789abcdefABCDEF")] == 0) + { + os_printf("bad mac, not all hex %s\n", ble_mac_addr); + should_send = 2; + } + //check data is all hex + if (strlen(ble_data) < 8 || !ble_data[strspn(ble_data, "0123456789abcdefABCDEF")] == 0 ) + { + os_printf("bad data %s\n", ble_data); + should_send = 3; + } + //check rssi is all numbers + if (strlen(ble_rssi) < 1 || !ble_rssi[strspn(ble_rssi, "-0123456789")] == 0) + { + os_printf("bad rssi %s\n", ble_rssi); + should_send = 4; + } + //check scan_response is 0 or 1 + if (strlen(ble_is_scan_resp) < 1 || !ble_is_scan_resp[strspn(ble_is_scan_resp, "01")] == 0) + { + os_printf("bad scanresp %s\n", ble_is_scan_resp); + should_send = 5; + } + //check ble_type is hex + if (strlen(ble_type) < 1 || !ble_type[strspn(ble_type, "0123456789abcdefABCDEF")] == 0) + { + os_printf("bad type %s\n", ble_type); + should_send = 6; + } + if(should_send == 0) + { + //os_printf("^^^^^^^^^GOT THROUGH FILTERS!\r\n"); + } + else + { + //os_printf("xxxxxxxxxxFAIL FILTERS! %d \r\n", should_send); + //os_printf("=====%s || %s || %s || %s || %s ===DONE\n", ble_mac_addr, ble_rssi, ble_is_scan_resp, ble_type, ble_data); + return; + } + + //what type of beacon is this? + int beacon_type = 99; + + // iterate through the beacon data, but easier if it is bytes + uint8_t adv_bytes[strlen(ble_data)/2]; + + for(int i=0; i<(strlen(ble_data)/2); i++) { + uint8_t d1 = 0; + + if(ble_data[i*2] > '9') { + d1 += ((ble_data[i*2] - 'a' + 10) * 0x10); + } + else { + d1 += ((ble_data[i*2] - '0') * 0x10); + } + + if(ble_data[i*2+1] > '9') { + d1 += ble_data[i*2+1] - 'a' + 10; + } + else { + d1 += ble_data[i*2+1] - '0'; + } + + adv_bytes[i] = d1; + } + + // start with 6 tokens + ble_tok_t tokens[6]; + + uint8_t token_i = 0; + int stop = 0; + int pos = 0; + while(!stop) { + tokens[token_i].size = adv_bytes[pos]; + tokens[token_i].type = adv_bytes[pos+1]; + tokens[token_i].start = pos+2; + tokens[token_i].end = pos+tokens[token_i].size; + + /* + printf("tok: %d, size: %02hhx, type: %02hhx, start: %d end: %d\n", token_i, tokens[token_i].size, tokens[token_i].type, tokens[token_i].start, tokens[token_i].end); + for(int j=tokens[token_i].start; j<=tokens[token_i].end; j++) { + printf("%02hhx", adv_bytes[j]); + } + printf("\n\n"); + */ + pos = tokens[token_i].end + 1; + if(pos >= sizeof(adv_bytes)) { + stop = 1; + } + token_i++; + } + + // iterate through the tokens and determine what kind of beacon it is + for(int i = 0; i <= token_i; i++) { + // is iBeacon? + if(tokens[i].type == 0xff + && adv_bytes[tokens[i].start] == 0x4c + && adv_bytes[tokens[i].start+1] == 0x00 + && adv_bytes[tokens[i].start+2] == 0x02 + && adv_bytes[tokens[i].start+3] == 0x15) { + + beacon_type = 1; //ibeacon + + //now extract uuid + memset(beacon_uuid, 0, 33); + memcpy(beacon_uuid, &ble_data[(tokens[i].start+4)*2], 32); + beacon_uuid[32] = '\0'; + + //extract major + memset(beacon_major, 0, 5); + memcpy(beacon_major, &ble_data[(tokens[i].start+20)*2], 4); + beacon_major[4] = '\0'; + + //extract minor + memset(beacon_minor, 0, 5); + memcpy(beacon_minor, &ble_data[(tokens[i].start+22)*2], 4); + beacon_minor[4] = '\0'; + + //extract tx_power + memset(tx_power, 0, 3); + memcpy(tx_power, &ble_data[(tokens[i].start+24)*2], 2); + tx_power[3] = '\0'; + + os_printf("^^^^^ ibeacon %s %s %s %s\n", beacon_uuid, beacon_major, beacon_minor, tx_power); + } + } + + //add some filters to + if(beacon_type == 0) + { + //os_printf("send some mqtt for eddystone %s ========\n", beacon_uuid); + // sendMQTTeddystone(ble_mac_addr, beacon_uuid, instance_id, tx_power, ble_rssi); + } + else if(beacon_type == 1) + { + //os_printf("send some mqtt for ibeacon %s ========\n", beacon_uuid); + sendMQTTibeacon(ble_mac_addr, beacon_uuid, beacon_major, beacon_minor, tx_power, ble_rssi); + } + + //os_printf("send some mqtt for mac %s =====%d===\n", ble_mac_addr, strlen(ble_mac_addr)); + // sendMQTTraw(ble_mac_addr, ble_rssi, ble_is_scan_resp, ble_type, ble_data); + } + + // void sendMQTTeddystone(char *mac, char *namespace, char *instance_id, char *tx_power, char *rssi) + // { + // return; + // } + void sendMQTTibeacon(char* mac, char* uuid, char* major, char* minor, char* tx_power, char* rssi) + { + float distance = calcDistance(atoi(rssi), 0x50); + String distanceStr = floatToString(distance, 10); + + memset(json_ble_send, 0, 500); + os_sprintf(json_ble_send, "{\"hostname\": \"%s\",\"beacon_type\": \"ibeacon\",\"id\": \"%s\",\"rssi\": %s,\"uuid\": \"%s\",\"major\": \"%s\",\"minor\": \"%s\",\"tx_power\": \"%s\", \"distance\": \"%s\"}", hostname, mac, rssi, uuid, major, minor, tx_power, distanceStr.c_str()); + memset(topic, 0, 130); + os_sprintf(topic, "home/presence/%s", hostname); + publish(topic, json_ble_send); + } + // void sendMQTTraw(char * mac, char * rssi, char * is_scan, char * type, char * data) + // { + // memset(json_ble_send, 0, 500); + // os_sprintf(json_ble_send, "{\"hostname\": \"%s\",\"mac\": \"%s\",\"rssi\": %s,\"is_scan_response\": \"%s\",\"type\": \"%s\",\r\n\"data\": \"%s\"}", hostname, mac, rssi, is_scan, type, data); + // memset(topic, 0, 130); + // os_sprintf(topic, "happy-bubbles/ble/%s/raw/%s", hostname, mac); + // // publish(topic, json_ble_send); + // } +}; + +class BleSwitch : public Component, public Switch { +public: + void setup() override + { + // This will be called by App.setup() + pinMode(BLE_PIN, OUTPUT); + write_state(true); + } + void write_state(bool state) override + { + digitalWrite(BLE_PIN, !state); + publish_state(state); + } +}; \ No newline at end of file diff --git a/esphome/settings/presence_bedroom.yaml b/esphome/settings/presence_bedroom.yaml new file mode 100644 index 0000000..d1dd096 --- /dev/null +++ b/esphome/settings/presence_bedroom.yaml @@ -0,0 +1,62 @@ +#=============================================================================== +# Счетчик питьевой воды +# NodeMCU ESP8266 +#=============================================================================== +substitutions: + device_name: presence_bedroom + upper_devicename: PresenceBedroom + room: bedroom +#=============================================================================== +esphome: + name: ${device_name} + platform: ESP8266 + board: d1_mini + includes: + - presence.h + +# Настройки Wi-Fi +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "$upper_devicename Fallback" + password: !secret esphome_captive_pass + +captive_portal: + + +api: # Enable Home Assistant API + password: !secret esphome_pass + reboot_timeout: 0s + +ota: + password: !secret esphome_pass + +web_server: + port: 80 + +logger: + baud_rate: 0 + +mqtt: + broker: !secret mqtt_ip + username: !secret mqtt_user + password: !secret mqtt_password + +custom_component: +- lambda: |- + auto hb = new HappyBubblesDevice("${room}"); + App.register_component(hb); + return {hb}; + +switch: +- platform: custom + lambda: |- + auto ble_switch = new BleSwitch(); + App.register_component(ble_switch); + return {ble_switch}; + + switches: + name: "Ble scan enable" diff --git a/esphome/settings/presence_kladovka.yaml b/esphome/settings/presence_kladovka.yaml new file mode 100644 index 0000000..cb60388 --- /dev/null +++ b/esphome/settings/presence_kladovka.yaml @@ -0,0 +1,62 @@ +#=============================================================================== +# Прошивка для пат Happy Bubbles +# NodeMCU ESP8266 +#=============================================================================== +substitutions: + device_name: presence_kladovka + upper_devicename: PresenceKladovka + room: kladovka +#=============================================================================== +esphome: + name: ${device_name} + platform: ESP8266 + board: d1_mini + includes: + - presence.h + +# Настройки Wi-Fi +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "$upper_devicename Fallback" + password: !secret esphome_captive_pass + +captive_portal: + + +api: # Enable Home Assistant API + password: !secret esphome_pass + reboot_timeout: 0s + +ota: + password: !secret esphome_pass + +web_server: + port: 80 + +logger: + baud_rate: 0 + +mqtt: + broker: !secret mqtt_ip + username: !secret mqtt_user + password: !secret mqtt_password + +custom_component: +- lambda: |- + auto hb = new HappyBubblesDevice("${room}"); + App.register_component(hb); + return {hb}; + +switch: +- platform: custom + lambda: |- + auto ble_switch = new BleSwitch(); + App.register_component(ble_switch); + return {ble_switch}; + + switches: + name: "Ble scan enable" diff --git a/esphome/settings/presence_radar_bedroom.yaml b/esphome/settings/presence_radar_bedroom.yaml new file mode 100644 index 0000000..3e7cb94 --- /dev/null +++ b/esphome/settings/presence_radar_bedroom.yaml @@ -0,0 +1,250 @@ +substitutions: + # Set the device name + name: presence_radar_bedroom + # Set the friendly name + friendly_name: Presence Radar Bedroom + # Provide the wifi SSID + wifi: !secret wifi_24_name + #Provide the wifi password + wifi_pass: !secret wifi_24_pass + #Provide an OTA password: + ota_pass: !secret api_encryption_key + device_host: presence-radar-bedroom.lan + +### No modifications needed below here ### +#################################################################################### + +esphome: + name: $name + friendly_name: $friendly_name + platformio_options: + board_build.flash_mode: dio + board_build.f_cpu: 80000000L + name_add_mac_suffix: false + +wifi: + ssid: $wifi + password: $wifi_pass + power_save_mode: LIGHT + use_address: 192.168.1.109 #${device_host} + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + +captive_portal: + +web_server: + port: 80 + +esp32: + board: lolin_c3_mini + framework: + type: esp-idf + +# Enable Home Assistant API +api: + encryption: + key: $ota_pass + +ota: + - platform: esphome + password: $ota_pass + +logger: + level: DEBUG + +uart: + tx_pin: GPIO4 + rx_pin: GPIO3 + baud_rate: 256000 + parity: NONE + stop_bits: 1 + +ld2410: + +binary_sensor: + - platform: ld2410 + has_target: + name: Presence + has_moving_target: + name: Moving Target + has_still_target: + name: Still Target + out_pin_presence_status: + name: Out Pin Presence Status + +sensor: + - platform: ld2410 + light: + name: Light + moving_distance: + name : Moving Distance + still_distance: + name: Still Distance + moving_energy: + name: Move Energy + still_energy: + name: Still Energy + detection_distance: + name: Detection Distance + g0: + move_energy: + name: g0 move energy + still_energy: + name: g0 still energy + g1: + move_energy: + name: g1 move energy + still_energy: + name: g1 still energy + g2: + move_energy: + name: g2 move energy + still_energy: + name: g2 still energy + g3: + move_energy: + name: g3 move energy + still_energy: + name: g3 still energy + g4: + move_energy: + name: g4 move energy + still_energy: + name: g4 still energy + g5: + move_energy: + name: g5 move energy + still_energy: + name: g5 still energy + g6: + move_energy: + name: g6 move energy + still_energy: + name: g6 still energy + g7: + move_energy: + name: g7 move energy + still_energy: + name: g7 still energy + g8: + move_energy: + name: g8 move energy + still_energy: + name: g8 still energy + - platform: internal_temperature + name: ESP Temperature + unit_of_measurement: °C + device_class: TEMPERATURE + update_interval: 30s + entity_category: "diagnostic" + - platform: uptime + name: Uptime + id: sys_uptime + update_interval: 10s + - platform: wifi_signal + name: WiFi RSSI + id: wifi_signal_db + update_interval: 30s + entity_category: "diagnostic" + +switch: + - platform: ld2410 + engineering_mode: + name: "LD2410 Engineering Mode" + bluetooth: + name: "LD2410 Bluetooth" + +number: + - platform: ld2410 + timeout: + name: Timeout + light_threshold: + name: Light Threshold + max_move_distance_gate: + name: Max Move Distance Gate + max_still_distance_gate: + name: Max Still Distance Gate + g0: + move_threshold: + name: g0 move threshold + still_threshold: + name: g0 still threshold + g1: + move_threshold: + name: g1 move threshold + still_threshold: + name: g1 still threshold + g2: + move_threshold: + name: g2 move threshold + still_threshold: + name: g2 still threshold + g3: + move_threshold: + name: g3 move threshold + still_threshold: + name: g3 still threshold + g4: + move_threshold: + name: g4 move threshold + still_threshold: + name: g4 still threshold + g5: + move_threshold: + name: g5 move threshold + still_threshold: + name: g5 still threshold + g6: + move_threshold: + name: g6 move threshold + still_threshold: + name: g6 still threshold + g7: + move_threshold: + name: g7 move threshold + still_threshold: + name: g7 still threshold + g8: + move_threshold: + name: g8 move threshold + still_threshold: + name: g8 still threshold + +button: + - platform: ld2410 + factory_reset: + name: "LD2410 Factory Reset" + restart: + name: "LD2410 Reboot" + query_params: + name: "LD2410 Query Params" + - platform: restart + icon: mdi:power-cycle + name: "ESP Reboot" + +text_sensor: + - platform: ld2410 + version: + name: "LD2410 Firmware Version" + mac_address: + name: "LD2410 MAC Address" + +select: + - platform: ld2410 + distance_resolution: + name: "Distance Resolution" + baud_rate: + name: "Baud Rate" + light_function: + name: Light Function + out_pin_level: + name: Out Pin Level + +light: + - platform: status_led + name: sys_status + pin: + number: GPIO8 + inverted: True + internal: True + restore_mode: ALWAYS_OFF \ No newline at end of file diff --git a/esphome/settings/radar_esphome.yaml b/esphome/settings/radar_esphome.yaml new file mode 100644 index 0000000..8803445 --- /dev/null +++ b/esphome/settings/radar_esphome.yaml @@ -0,0 +1,225 @@ +esphome: + name: presence_bedroom + friendly_name: Presence Bedroom + +esp32: + board: esp32-c3-devkitm-1 + framework: + type: arduino + +# Enable logging +logger: + +# Enable Home Assistant API +api: + encryption: + key: !secret esphome_pass + +ota: + platform: esphome + password: !secret esphome_pass + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Radar Hotspot" + password: !secret esphome_captive_pass + +captive_portal: + +web_server: + port: 80 + include_internal: true + +# --------------------------------------------------------------------------------- + +light: + - platform: binary + name: "Blue Status Light" + output: light_output + id: led_light + restore_mode: ALWAYS_OFF + +output: + - platform: gpio + pin: GPIO2 + id: light_output + +uart: + id: ld2410_uart + tx_pin: GPIO21 # TX + rx_pin: GPIO20 # RX + baud_rate: 256000 + parity: NONE + stop_bits: 1 + +ld2410: + uart_id: ld2410_uart + throttle: 1500ms + id: ld2410_comp + +select: + - platform: ld2410 + distance_resolution: + name: distance resolution + baud_rate: + name: baud rate + light_function: + name: light function + out_pin_level: + name: out pin level + +button: + - platform: ld2410 + factory_reset: + name: "factory reset" + restart: + name: "restart" + query_params: + name: query params + +number: + - platform: ld2410 + timeout: + name: timeout + max_move_distance_gate: + name: max move distance gate + max_still_distance_gate: + name: max still distance gate + g0: + move_threshold: + name: g0 move threshold + still_threshold: + name: g0 still threshold + g1: + move_threshold: + name: g1 move threshold + still_threshold: + name: g1 still threshold + g2: + move_threshold: + name: g2 move threshold + still_threshold: + name: g2 still threshold + g3: + move_threshold: + name: g3 move threshold + still_threshold: + name: g3 still threshold + g4: + move_threshold: + name: g4 move threshold + still_threshold: + name: g4 still threshold + g5: + move_threshold: + name: g5 move threshold + still_threshold: + name: g5 still threshold + g6: + move_threshold: + name: g6 move threshold + still_threshold: + name: g6 still threshold + g7: + move_threshold: + name: g7 move threshold + still_threshold: + name: g7 still threshold + g8: + move_threshold: + name: g8 move threshold + still_threshold: + name: g8 still threshold + light_threshold: + name: light threshold + +text_sensor: + - platform: ld2410 + version: + name: "presenece sensor version" + mac_address: + name: "presenece sensor mac address" + +switch: + - platform: ld2410 + engineering_mode: + name: "engineering mode" + bluetooth: + name: control Bluetooth + +sensor: + - platform: internal_temperature + name: "Internal Temperature" + + - platform: ld2410 + moving_distance: + name: "Moving distance (cm)" + still_distance: + name: "Still Distance (cm)" + moving_energy: + name: "Move Energy (%)" + still_energy: + name: "Still Energy (%)" + detection_distance: + name: "Distance Detection (cm)" + g0: + move_energy: + name: g0 move energy + still_energy: + name: g0 still energy + g1: + move_energy: + name: g1 move energy + still_energy: + name: g1 still energy + g2: + move_energy: + name: g2 move energy + still_energy: + name: g2 still energy + g3: + move_energy: + name: g3 move energy + still_energy: + name: g3 still energy + g4: + move_energy: + name: g4 move energy + still_energy: + name: g4 still energy + g5: + move_energy: + name: g5 move energy + still_energy: + name: g5 still energy + g6: + move_energy: + name: g6 move energy + still_energy: + name: g6 still energy + g7: + move_energy: + name: g7 move energy + still_energy: + name: g7 still energy + g8: + move_energy: + name: g8 move energy + still_energy: + name: g8 still energy + light: + name: light + +binary_sensor: + + - platform: ld2410 + has_target: + name: Presence + has_moving_target: + name: Moving Target + has_still_target: + name: Still Target diff --git a/esphome/settings/senseair.yaml b/esphome/settings/senseair.yaml new file mode 100644 index 0000000..0ccc150 --- /dev/null +++ b/esphome/settings/senseair.yaml @@ -0,0 +1,81 @@ +# Need to turn off logging because senseair uses uart and have conflicts with logging +logger: +# baud_rate: 0 + +esphome: + name: senseair + platform: ESP8266 + board: d1_mini +font: + - file: "OpenSans-Light.ttf" + id: open_sans_10 + size: 10 + - file: "OpenSans-Light.ttf" + id: open_sans_14 + size: 14 + - file: "OpenSans-Light.ttf" + id: open_sans_18 + size: 28 + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + + # Enable fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Senseair Fallback Hotspot" + password: !secret esphome_captive_pass + +captive_portal: + +# Enable Home Assistant API +api: + password: !secret esphome_pass + +ota: + password: !secret esphome_pass + +# hass sensor =) +time: + - platform: homeassistant + id: homeassistant_time + timezone: Europe/Moscow + +sensor: + - platform: homeassistant + id: co2_mainroom_bed + entity_id: sensor.co2_mainroom_bed + + - platform: homeassistant + id: temperature_outside + entity_id: sensor.temperature_outside + +i2c: + scl: D1 + sda: D2 + scan: False + +# +display: + - platform: ssd1306_i2c + model: "SSD1306 128x64" + address: 0x3C + lambda: |- + it.strftime(90, 0, id(open_sans_14), "%H:%M", id(homeassistant_time).now()); + + if (id(temperature_outside).has_state()) { + it.printf(0, 0, id(open_sans_14), TextAlign::TOP_LEFT , "%.1f°C", id(temperature_outside).state); + } + + it.printf(0, 20, id(open_sans_14), TextAlign::TOP_LEFT , "CO"); + it.printf(22, 27, id(open_sans_10), TextAlign::TOP_LEFT , "2"); + + int value = 0; + if (id(co2_mainroom_bed).has_state() && !isnan(id(co2_mainroom_bed).state)) { + it.printf(35, 18, id(open_sans_18), TextAlign::TOP_LEFT , "%.0f", id(co2_mainroom_bed).state); + + value = (id(co2_mainroom_bed).state*100/2500)*128/100; + } + + it.rectangle(0, 57, 127, 7); + it.filled_rectangle(0, 57, value, 7); diff --git a/esphome/settings/svetlana_bedside_lamp.yaml b/esphome/settings/svetlana_bedside_lamp.yaml new file mode 100644 index 0000000..99b431a --- /dev/null +++ b/esphome/settings/svetlana_bedside_lamp.yaml @@ -0,0 +1,58 @@ +# -------------------------------------------------------------------------- +# Substitutions +# +# These are substitutions as used by the configuration packages from below. +# You can uncomment and update the ones that you want to modify. +# -------------------------------------------------------------------------- + +substitutions: + name: svetlana-bedside-lamp + friendly_name: Svetlana Bedside Lamp + #light_name: ${friendly_name} RGBWW Light + #light_mode_text_sensor_name: ${friendly_name} Light Mode + #default_transition_length: 800ms + +# -------------------------------------------------------------------------- +# Load configuration packages +# +# These provide a convenient way to compose your device configuration from +# some functional building blocks. Pick and mix the blocks that you need. +# +# For customization you can override options in your config or you can +# copy the contents of these packages directly in your config file as +# an example for your own customizations. +# +# Available packages are: +# - core.yaml : core components & hardware setup +# - behavior_default.yaml : default device behavior +# - ota_feedback.yaml : enable visual feedback during OTA updates +# - activate_preset_svc.yaml : 'activate_preset' service for Home Assistant +# -------------------------------------------------------------------------- + +packages: + bslamp2: + url: https://github.com/mmakaay/esphome-xiaomi_bslamp2 + ref: dev + files: + - packages/core.yaml + - packages/behavior_default.yaml + - packages/ota_feedback.yaml + - packages/activate_preset_svc.yaml + refresh: 0s + +# -------------------------------------------------------------------------- +# Use your own preferences for these components. +# -------------------------------------------------------------------------- + +wifi: + ssid: !secret wifi_24_name + password: !secret wifi_24_pass + use_address: ${name}.lan + +api: + encryption: + key: !secret api_encryption_key + +ota: + platform: esphome + password: !secret esphome_pass diff --git a/hass/settings/.HA_VERSION b/hass/settings/.HA_VERSION new file mode 100644 index 0000000..fcba00b --- /dev/null +++ b/hass/settings/.HA_VERSION @@ -0,0 +1 @@ +2026.2.3 \ No newline at end of file diff --git a/hass/settings/.ha_run.lock b/hass/settings/.ha_run.lock new file mode 100644 index 0000000..642bdda --- /dev/null +++ b/hass/settings/.ha_run.lock @@ -0,0 +1 @@ +{"pid": 106582, "version": 1, "ha_version": "2026.2.3", "start_ts": 1773083280.3675456} \ No newline at end of file diff --git a/hass/settings/automations.yaml b/hass/settings/automations.yaml new file mode 100644 index 0000000..43ec25c --- /dev/null +++ b/hass/settings/automations.yaml @@ -0,0 +1,368 @@ +- id: '1673173451954' + alias: Doorbell to Alice + description: '' + trigger: + - platform: state + entity_id: + - binary_sensor.0x00158d0003a5d05d_lock + - sensor.0x00158d0003a5d05d_action + to: doorbell + condition: [] + action: + - service: media_player.play_media + data: + media_content_type: text + media_content_id: Звонок в дверь! + extra: + volume_level: 0.6 + target: + device_id: + - b7ae13cff2fb04a56f1611a7bd9fdb5d + - e600d40f953494c41ec919d2148fd570 + - 49e5a1a4d554d924f61ecaa8968630bf + - 644968e9ab73b2930d141deb2aaec43f + - 37e299b4ee90a2e39ae7e04328439ff4 + - 8883de9fc71bef0b663c61faa4fbefb4 + - f6dbda8398f290149bc8cb48a858452c + - service: notify.telegram + data: + message: Звонок в дверь! + mode: single +- id: '1694942205257' + alias: Unavailable entity detection & notification + description: '' + use_blueprint: + path: gmlupatelli/unavailable_entities_notification.yaml + input: + actions: + - service: notify.telegram + data: + message: 'У вас есть недоступные устройства: {{entities}}' + data: + parse_mode: html + exclude: + device_id: + - fd4ed129390c68716ee6b5ca4ee6abe5 + - a5ddb672314ab72275816e22b91c1e0a +- id: '1696509659566' + alias: Turn On Mirror When Heater Is On + description: '' + trigger: + - platform: device + type: turned_on + device_id: 156bb319cb4e575d641e681a1775d672 + entity_id: c3ec9a6bd6247cdf3771e968416f7a1d + domain: switch + condition: [] + action: + - type: turn_on + device_id: a86a73f9c0cded2becbaea4b58a0c3ca + entity_id: ca2d574ba695471945a76eb9fbd14f7c + domain: switch + mode: single +- id: '1700337065799' + alias: Turn_on_AC_heater_evening + description: '' + trigger: + - platform: time + at: '23:00:00' + condition: + - condition: state + entity_id: sensor.tag_danil_iphone + state: mainroom + action: + - service: remote.send_command + target: + device_id: 3493f23712217b8085d5e05870b37fb4 + data: + command: power_on + device: ac + mode: single +- id: '1700337256838' + alias: Turn_off_AC_at_morning + description: '' + triggers: + - at: 07:00:00 + trigger: time + conditions: [] + actions: + - action: climate.set_hvac_mode + metadata: {} + target: + entity_id: climate.ac_bedroom + data: + hvac_mode: 'off' + - action: fan.turn_off + metadata: {} + data: {} + target: + entity_id: fan.ventiliatsionnaia_sistema + mode: single +- id: '1703092205692' + alias: Turn on curtain light when opened + description: '' + trigger: + - platform: device + device_id: 4b8180d9d908e128920565c0bd31e661 + domain: cover + entity_id: 03d25d0c4f844c78905fa58906f7a383 + type: opened + condition: [] + action: + - type: turn_on + device_id: b446ed5b21362d52ea95df7a716274cc + entity_id: 0ff56edad96924c2438d3df1fa7b27f7 + domain: switch + mode: single +- id: '1703092227298' + alias: Turn off curtain light when closed + description: '' + trigger: + - platform: device + device_id: 4b8180d9d908e128920565c0bd31e661 + domain: cover + entity_id: 03d25d0c4f844c78905fa58906f7a383 + type: closed + condition: [] + action: + - type: turn_off + device_id: b446ed5b21362d52ea95df7a716274cc + entity_id: 0ff56edad96924c2438d3df1fa7b27f7 + domain: switch + mode: single +- id: '1706383112067' + alias: Control Washer+Dishwasher + description: '' + trigger: + - platform: state + entity_id: + - switch.dishwasher + - switch.washer + from: 'on' + to: 'off' + condition: [] + action: + - service: switch.turn_on + metadata: {} + data: {} + target: + entity_id: + - switch.washer + - switch.dishwasher + mode: single +- id: '1722417271264' + alias: Bath ventilation timer + description: '' + trigger: + - entity_id: fan.ventilation_bath + for: + minutes: 15 + platform: state + to: 'on' + condition: [] + action: + - data: {} + entity_id: fan.ventilation_bath + service: homeassistant.turn_off + mode: single +- id: '1722417292820' + alias: Shower ventilation timer + description: '' + trigger: + - entity_id: fan.ventilation_shower + for: + minutes: 15 + platform: state + to: 'on' + condition: [] + action: + - data: {} + entity_id: fan.ventilation_shower + service: homeassistant.turn_off + mode: single +- id: '1728058650984' + alias: Childroom Turn Off Ac in the morning + description: '' + trigger: + - platform: time + at: 07:00:00 + condition: [] + action: + - repeat: + count: 2 + sequence: + - data: + command: power_off_2 + device: ac + action: remote.send_command + target: + device_id: d217abb5dd76093411769c4677b6b002 + mode: single +- id: '1728058703218' + alias: Childroom Turn On Ac in the evening + description: '' + trigger: + - platform: time + at: '23:00:00' + condition: + - condition: state + entity_id: sensor.tag_danil_iphone + state: mainroom + action: + - data: + command: power_on + device: ac + action: remote.send_command + target: + device_id: d217abb5dd76093411769c4677b6b002 + mode: single +- id: '1752861666697' + alias: Громкость по умолчанию Спальня + description: '' + use_blueprint: + path: gist.githubusercontent.com/yandex_station_default_volume.yaml + input: + yandex_station: media_player.yandex_station_m00fhe2003seqr + number_volume: 5 +- id: '1752930144657' + alias: Громкость по умолчанию Кухня + description: '' + use_blueprint: + path: gist.githubusercontent.com/yandex_station_default_volume.yaml + input: + yandex_station: media_player.yandex_station_m00r46000m53db + number_volume: 5 +- id: '1752930171971' + alias: Громкость по умолчанию Душевая + description: '' + use_blueprint: + path: gist.githubusercontent.com/yandex_station_default_volume.yaml + input: + yandex_station: media_player.yandex_station_ff98f029ab48468d28c557be + number_volume: 5 +- id: '1752930196035' + alias: Громкость по умолчанию Детская + description: '' + use_blueprint: + path: gist.githubusercontent.com/yandex_station_default_volume.yaml + input: + yandex_station: media_player.yandex_station_940050344110102101cb +- id: '1752930212912' + alias: Громкость по умолчанию Ванна + description: '' + use_blueprint: + path: gist.githubusercontent.com/yandex_station_default_volume.yaml + input: + yandex_station: media_player.yandex_station_ly00000000000008674600007209d3f5 + number_volume: 5 +- id: '1753212993227' + alias: Low Battery Notifications & Actions + description: '' + use_blueprint: + path: Blackshome/low-battery-notifications-and-actions.yaml + input: + include_time: time_enabled + time: '10:00:00' + battery_level: 10 + exclude_sensors: + entity_id: + - sensor.monsterphone13_battery_level + include_easy_notify: disabled_easy_notify + notify_device: [] + include_persistent_notification: disabled_persistent_notification + include_custom_actions: enable_custom_actions + custom_actions: + - action: notify.telegram_monster + data: + message: 'Садится батарея в датчиках: + + + {{all_sensors}}' + data: + parse_mode: html +- id: '1767036452762' + alias: Дверь в гостиную - закрыта + description: '' + triggers: + - trigger: state + entity_id: + - binary_sensor.door_mainroom_slider_contact + to: + - 'off' + from: + - 'on' + conditions: [] + actions: + - action: light.turn_off + metadata: {} + target: + entity_id: light.plug_yolka + data: {} + - action: input_boolean.turn_on + metadata: {} + target: + entity_id: input_boolean.guest_mode + data: {} + mode: single +- id: '1767036484608' + alias: Дверь в гостиную - открыта + description: '' + triggers: + - trigger: state + entity_id: + - binary_sensor.door_mainroom_slider_contact + to: + - 'on' + from: + - 'off' + conditions: [] + actions: + - action: light.turn_on + metadata: {} + target: + entity_id: light.plug_yolka + data: {} + - action: input_boolean.turn_off + metadata: {} + target: + entity_id: input_boolean.guest_mode + data: {} + mode: single +- id: '1768899857603' + alias: Детская - Утром отключаем отопление + description: '' + triggers: + - trigger: time + at: 08:00:00 + conditions: + - condition: state + entity_id: input_boolean.radiator_enabled + state: + - 'on' + actions: + - action: climate.set_temperature + metadata: {} + target: + entity_id: climate.radiator_childroom + data: + temperature: 22 + mode: single +- id: '1768899913660' + alias: Детская - Вечером включаем отопление + description: '' + triggers: + - trigger: time + at: '22:00:00' + conditions: + - condition: state + entity_id: input_boolean.radiator_enabled + state: + - 'on' + actions: + - action: climate.set_temperature + metadata: {} + target: + entity_id: climate.radiator_childroom + data: + temperature: 24 + mode: single diff --git a/hass/settings/blueprints/automation/Blackshome/low-battery-notifications-and-actions.yaml b/hass/settings/blueprints/automation/Blackshome/low-battery-notifications-and-actions.yaml new file mode 100644 index 0000000..0daeb0d --- /dev/null +++ b/hass/settings/blueprints/automation/Blackshome/low-battery-notifications-and-actions.yaml @@ -0,0 +1,1072 @@ +blueprint: + name: Low Battery Notifications & Actions + description: "# \U0001FAAB Low Battery Notifications & Actions\n**Version: 2.9**\n\n\U0001F680 + Stay Charged, Stay Smart! Let's automate and take charge of your battery maintenance!\U0001F50B⚡\n\n**If + you like my blueprints, and would like to show your support or just say thank + you?** [Click Here](https://www.paypal.com/donate/?hosted_button_id=WAZS3QSDTPGA8) + \U0001F642\n\n
The Automation Process: \U0001F448\n\n + \ - **Trigger Options:**\n - **Button Helper:** Press a button in the user + interface (UI) to check battery levels.\n - **Time & Day:** Automatically periodically + checks battery levels on any given time and day.\n\n - **Battery Sensors:**\n + \ - Automatically detects all battery sensors used in Home Assistant.\n - + Set a battery low warning percentage to identify all batteries below this level.\n + \ - Detects Low, unavailable & unknown batteries.\n - Excludes specific battery + sensors from notifications.\n - Create a custom group of battery sensors with + its own independent low battery warning percentage.\n\n - **Notification Options:**\n + \ - Opt to send messages to one or multiple devices.\n - Opt to display your + notifications directly within the Home Assistant user interface (UI).\n - Choose + which battery sensors to use, and then select their states from one of three preset + messages:\n - Battery Low % Level + Low Battery Level + Unavailable + Unknown.\n + \ - Battery Low % Level & Low Battery Level.\n - Unavailable or Unknown + Sensors.\n - Opt to receive a confirmation message if all batteries are okay.\n + \ - Opt to use action buttons in your device notification that allows you to + add your low batteries to a To-Do list.\n - Compatible with Apple iOS and Android + devices.\n\n - **Custom Actions:**\n - Customize actions to suit your preferences + and needs, enhancing the automations functionality.\n - Utilize 10 custom predetermined + battery sensors within the blueprint for more tailored and precise actions.\n + \ - Configure custom actions to include features like customizing notifications + or playing announcements on platforms like The Voice (HA), Google, Alexa, TTS, + etc.\n\n - **Custom Conditions:**\n - Enter any custom conditions to further + customize the automation process.\n
\n\nNeed help? \n- FAQ: [Click Here](https://community.home-assistant.io/t/653754/2?u=blacky)\n- + Community Support Including Updates: [Click Here](https://community.home-assistant.io/t/653754)\n\nRequired + = *\n" + domain: automation + input: + trigger_settings: + name: Triggers * + icon: mdi:cog-outline + description: 'You must select at least one trigger * + + ' + collapsed: true + input: + include_button: + name: Use The Button Helper Trigger (Optional) + description: 'Select if you would like a button helper to trigger the automation. + This is useful if you would like to check the battery levels by pressing + a button in the UI. + + + For more information on how to create a button helper [Click Here](https://community.home-assistant.io/t/653754/4) + + ' + default: disable_button_trigger + selector: + select: + options: + - label: Use a button trigger + value: enable_button_trigger + - label: Dont use a button trigger + value: disable_button_trigger + custom_value: false + multiple: false + sort: false + button_entity: + name: Button Helper + description: 'Input your button helper. + + ' + default: [] + selector: + entity: + filter: + - domain: + - input_button + multiple: false + include_time: + name: Use The Time Trigger (Optional) + description: 'Select if you would like to use the time trigger. This is + useful if you would like to periodically check the battery levels on any + given time and day. + + ' + default: time_disabled + selector: + select: + options: + - label: Enable the time options + value: time_enabled + - label: Disable the time options + value: time_disabled + custom_value: false + multiple: false + sort: false + time: + name: Time + description: 'Set the time you would like to run the automation. + + ' + default: 00:00:00 + selector: + time: {} + weekday_options: + name: Weekdays + description: 'Select the days of the week you would like the automation + to run. + + ' + default: + - mon + - tue + - wed + - thu + - fri + - sat + - sun + selector: + select: + multiple: true + mode: list + options: + - label: Monday + value: mon + - label: Tuesday + value: tue + - label: Wednesday + value: wed + - label: Thursday + value: thu + - label: Friday + value: fri + - label: Saturday + value: sat + - label: Sunday + value: sun + custom_value: false + sort: false + battery_settings: + name: Battery Settings + icon: mdi:battery-alert-variant-outline + collapsed: true + input: + battery_level: + name: Battery Low Warning Level + description: 'Set the battery low warning percentage to identify all batteries + below this level. + + ' + default: 20 + selector: + number: + min: 1.0 + max: 100.0 + step: 1.0 + unit_of_measurement: '%' + mode: slider + exclude_sensors: + name: Excluded Battery Sensors (Optional) + description: 'Choose the battery sensors to be excluded when the automation + runs. The automation will attempt to detect all battery sensors used in + Home Assistant, including those of your phones, tablets, etc. However, + it may not always be necessary or desirable to monitor these batteries. + Selecting these batteries here will exclude them from your notifications. + + + **NOTE** - You can only use entities and labels. Areas and devices are + not supported. + + ' + default: + entity_id: [] + selector: + target: + entity: + - device_class: + - battery + custom_group: + name: Battery Sensors - Custom Group (Optional) + description: 'You can select a custom group of battery sensors to be included + in your notifications. This custom group has its own independent ''Battery + Low Warning Level'' setting below. When using all batteries along with + the custom group in a single automation, it is recommended to exclude + the custom group of batteries specified above in the ''Excluded Battery + Sensors'' section. + + + Excluded battery sensors are not linked to this custom group. + + + **NOTE** - You can only use entities and labels. Areas and devices are + not supported. + + ' + default: + entity_id: [] + selector: + target: + entity: + - device_class: + - battery + custom_group_battery_level: + name: Custom Group - Battery Low Warning Level + description: 'Set the battery low warning percentage to identify all batteries + below this level. + + ' + default: 20 + selector: + number: + min: 1.0 + max: 100.0 + step: 1.0 + unit_of_measurement: '%' + mode: slider + easy_notify_settings: + name: Easy Notify + icon: mdi:bell-check-outline + collapsed: true + input: + include_easy_notify: + name: Use The Easy Notify - Device Notification Options (Optional) + description: 'Enabling this option will send notifications to the selected + devices below. It allows you to choose which battery sensors to use, and + then select their states from one of three preset messages. You can also + opt to receive a confirmation message if all batteries are okay. For further + customization or to integrate with voice assistants like HA, Google, Alexa, + TTS, etc., please explore the custom action options below. + + ' + default: disabled_easy_notify + selector: + select: + options: + - label: Enable Device Notification + value: enable_easy_notify + - label: Enable Device Notification + Okay Confirmation Message + value: enable_easy_okay_notify + - label: Disable Device Notification + value: disabled_easy_notify + custom_value: false + multiple: false + sort: false + include_persistent_notification: + name: Use The Easy Notify - UI Notification Options (Optional) + description: 'Enabling this option will display notifications directly within + the Home Assistant user interface (UI). It allows you to choose which + battery sensors to use, and then select their states from one of three + preset messages. You can also opt to receive a confirmation message in + the UI if all batteries are okay. For further customization or to integrate + with voice assistants like HA, Google, Alexa, TTS, etc., please explore + the custom action options below. + + ' + default: disabled_persistent_notification + selector: + select: + options: + - label: Enable UI Notification + value: enable_persistent_notification + - label: Enable UI Notification + Okay Confirmation Message + value: enable_persistent_okay_notification + - label: Disable UI Notification + value: disabled_persistent_notification + custom_value: false + multiple: false + sort: false + sensor_selection: + name: Sensor Selection + description: 'Please select which sensors you would like to include in your + notifications. + + ' + default: enable_all_sensors + selector: + select: + options: + - label: Use Battery Sensors - Custom Group + value: enable_battery_sensors_custom_group + - label: Use All Battery Sensors Minus Excluded Battery Sensors + value: enable_all_sensors + - label: Use All Battery Sensors Minus Excluded Battery Sensors + Custom + Group + value: enable_all_and_custom_group_sensors + custom_value: false + multiple: false + sort: false + notify_device: + name: Devices Notified (Optional) + description: 'If you''ve enabled device notifications above, please select + the devices to receive the notifications. + + ' + default: [] + selector: + device: + filter: + - integration: mobile_app + multiple: true + notify_title: + name: Title + description: 'Enter in the notification title of your message. + + ' + default: Low Battery Notification + selector: + text: {} + notify_message: + name: Message + description: 'Choose one of the three preset messages from the dropdown + menu. + + + **1 - Battery Low % Level + Low Battery Level + Unavailable + Unknown** + Includes sensors with battery percentages below the low warning level, + in a low battery state, or marked as unavailable or unknown. + + + **2 - Battery Low % Level & Low Battery Level** Includes sensors with + battery percentages below the low warning level or in a low battery state. + + + **3 - Unavailable or Unknown Sensors** Includes sensors that are unavailable + or have an unknown state. + + ' + default: all_sensors + selector: + select: + mode: dropdown + options: + - label: 1 - Battery Low % Level + Low Battery Level + Unavailable + + Unknown + value: all_sensors + - label: 2 - Battery Low % Level & Low Battery Level + value: sensors + - label: 3 - Unavailable or Unknown Sensors + value: unavailable_sensors + custom_value: false + multiple: false + sort: false + notify_okay_message: + name: Okay Confirmation Message + description: 'Enter in the notification message you would like to receive + when all your batteries are okay. + + ' + default: YES! All batteries are okay :) + selector: + text: {} + notify_interruption_level: + name: Interruption Level - iOS Only + description: 'On devices running iOS 15 and later, you can configure the + interruption level for your notifications to ensure they are delivered + according to your preferences. Choose the desired interruption level from + the dropdown list. Critical and time-sensitive notifications must be turned + ON within the Home Assistant App, and time-sensitive notifications must + be allowed in your Focus settings. + + + For more information on interruption levels [Click Here](https://community.home-assistant.io/t/653754/192?u=blacky) + + ' + default: active + selector: + select: + mode: dropdown + options: + - label: Default + value: active + - label: Critical Notifications + value: critical + - label: Time Sensitive Notifications + value: time-sensitive + - label: Quiet Notifications Without Waking Screen + value: passive + custom_value: false + multiple: false + sort: false + notify_sound: + name: Notification Sound - iOS Only + description: 'The Home Assistant app for iOS includes built-in notification + sounds, and you can import sounds from your iOS device into the app. Custom + sounds can also be added via iTunes or from your cloud storage. When entering + a sound, ensure you use the full filename, including the extension. + + + For more information on using sounds in the Home Assistant app, [Click + Here](https://community.home-assistant.io/t/653754/192?u=blacky) + + ' + default: [] + selector: + text: {} + notify_data: + name: Android Only Options (Optional) + description: '**High Priority** notifications ensure that you receive important + alerts immediately. These notifications bypass normal delivery delays + and are delivered instantly to your device. + + + **Sticky Notification** ensure that important alerts are not dismissed + when selected. They remain on your notification screen until you actively + clear or swipe them away, ensuring that critical information stays visible + until addressed. + + + **Notification Channel** allow you to easily organize different notification + settings, including notification sounds, vibrations, and other device-specific + features. If you choose this option, please enter your desired channel + name below. + + ' + default: [] + selector: + select: + multiple: true + options: + - label: High Priority + value: high_priority + - label: Sticky Notification + value: sticky + - label: Notification Channel + value: channel + custom_value: false + sort: false + notify_channel: + name: Notification Channel - Android Only + description: 'If you have chosen to use a notification channel, simply enter + the name of an existing channel to apply its pre-configured settings. + If you don''t have a channel yet, you can create a new one by entering + a name here. When your automation sends the first notification, it will + create the channel on your device. After the channel is created, you can + customize its notification settings to your preference directly on your + device. + + + For more information on notification channels [Click Here](https://community.home-assistant.io/t/653754/192?u=blacky) + + ' + default: [] + selector: + text: {} + action_buttons_settings: + name: Action Buttons + icon: mdi:gesture-tap-button + collapsed: true + input: + notify_action_buttons: + name: Easy Notify - Action Buttons (Optional) + description: 'Enhance your device notifications with an actionable To-Do + list button feature. With just a hold, release and tap, effortlessly add + selected items from your low battery notification to any of your chosen + To-Do lists. Plus, for added assurance, you can opt to receive a confirmation + message confirming the action. + + ' + default: disabled_notify_action_buttons + selector: + select: + options: + - label: Add To-Do List Action Buttons + value: enable_to_do_list_button + - label: Add To-Do List Action Buttons + Confirmation Message + value: enable_to_do_list_button_and_confirmation + - label: Disable Action Buttons + value: disabled_notify_action_buttons + custom_value: false + multiple: false + sort: false + to_do_list: + name: Easy Notify Action Buttons - To-Do List Selection + description: 'Choose the To-Do list where you''d like to add your task. + + + **Note** - The default shopping list isn''t compatible due to its lack + of description capability. However, all other To-Do lists are fully supported. + + ' + default: [] + selector: + entity: + filter: + - domain: + - todo + multiple: false + to_do_task_title: + name: Easy Notify Action Buttons - Task Title + description: 'When the action button is pressed, it will add a task to your + chosen To-Do list. Please enter the title you would like for your To-Do + task + + ' + default: Batteries To Be Replaced + selector: + text: {} + action_button_to_do: + name: Easy Notify Action Buttons - Action Button + description: 'Please specify the name for the action button to be displayed + in the notification. When pressed this button effortlessly adds a task + to your chosen To-Do list. + + ' + default: Add To To-Do List! + selector: + text: {} + action_button_cancel: + name: Easy Notify Action Buttons - Cancel Button + description: 'Please specify the name for the cancel button to be displayed + in the notification. This button allows you to cancel the task addition + process. + + ' + default: Cancel + selector: + text: {} + action_button_confirmation_title: + name: Easy Notify Action Buttons - Action & Cancel Button Confirmation Title + description: 'Please enter in a title for the confirmation notification + message when an action button or a cancel button is pressed. + + ' + default: Low Battery Confirmation + selector: + text: {} + action_button_confirmation_message: + name: Easy Notify Action Buttons - Action Button Confirmation Message + description: 'Please enter in the message for the confirmation notification + message when the action button is pressed. + + ' + default: Your low batteries have been added to your To-Do list + selector: + text: {} + cancel_action_button_confirmation_message: + name: Easy Notify Action Buttons - Cancel Button Confirmation Message + description: 'Please enter in the message for the confirmation notification + message when the cancel button is pressed. + + ' + default: Cancelled - Nothing was added to your To-Do list + selector: + text: {} + custom_actions_settings: + name: Custom Actions + icon: mdi:code-tags + collapsed: true + input: + include_custom_actions: + name: Use The Custom Action Options (Optional) + description: 'You can add any custom actions you''d like to run when the + automation is triggered. This can include customizing notifications or + playing announcements on platforms like The Voice (HA), Google, Alexa, + TTS, etc. + + ' + default: disabled_custom_actions + selector: + select: + options: + - label: Enable Custom Actions + value: enable_custom_actions + - label: Disable Custom Actions + value: disabled_custom_actions + custom_value: false + multiple: false + sort: false + custom_actions: + name: Custom Actions + description: 'Add your custom actions that you''d like to run when the automation + is triggered. Below are 10 sensors you can include in your actions, depending + on your preferences. + + + **All Battery Sensors Minus Excluded** + + 1 - Use "{{all_sensors}}" for - Battery Low % Level + Low Battery Level + + Unavailable + Unknown. + + 2 - Use "{{sensors}}" for - Battery Low % Level & Low Battery Level. + + 3 - Use "{{unavailable_sensors}}" for - Unavailable or Unknown Sensors. + + 4 - Use "{{sensors_names}}" for - Battery Low % Level & Low Battery Level + - Sensor name only. + + 5 - Use "{{unavailable_sensors_names}}" for - Unavailable or Unknown Sensors + - Sensor name only. + + + **Battery Sensors - Custom Group** + + 1 - Use "{{all_sensors_custom_group}}" for - Battery Low % Level + Low + Battery Level + Unavailable + Unknown. + + 2 - Use "{{sensors_custom_group}}" for - Battery Low % Level & Low Battery + Level. + + 3 - Use "{{unavailable_sensors_custom_group}}" for - Unavailable or Unknown + Sensors. + + 4 - Use "{{sensors_names_custom_group}}" for - Battery Low % Level & Low + Battery Level - Sensor name only. + + 5 - Use "{{unavailable_sensors_names_custom_group}}" for - Unavailable + or Unknown Sensors - Sensor name only. + + + For more information on how to use these sensors in your actions [Click + Here](https://community.home-assistant.io/t/653754/21) + + ' + default: [] + selector: + action: {} + global_conditions_settings: + name: Global Conditions + icon: mdi:earth + collapsed: true + input: + global_conditions: + name: Global Conditions + description: 'Enter any global conditions you would like to apply to the + automation. + + ' + default: [] + selector: + condition: {} + source_url: https://gist.github.com/Blackshome/4010fb83bb8c19b5fa1425526c6ff0e2 +mode: restart +max_exceeded: silent +variables: + include_button: !input include_button + button_entity: !input button_entity + include_time: !input include_time + time: !input time + weekday_options: !input weekday_options + battery_level: !input battery_level + exclude_sensors: !input exclude_sensors + custom_group: !input custom_group + custom_group_battery_level: !input custom_group_battery_level + include_easy_notify: !input include_easy_notify + include_persistent_notification: !input include_persistent_notification + sensor_selection: !input sensor_selection + notify_device: !input notify_device + notify_title: !input notify_title + notify_message: !input notify_message + notify_okay_message: !input notify_okay_message + notify_interruption_level: !input notify_interruption_level + notify_sound: !input notify_sound + notify_data: !input notify_data + notify_channel: !input notify_channel + notify_action_buttons: !input notify_action_buttons + to_do_list: !input to_do_list + to_do_task_title: !input to_do_task_title + action_button_to_do: !input action_button_to_do + action_button_cancel: !input action_button_cancel + action_button_confirmation_title: !input action_button_confirmation_title + action_button_confirmation_message: !input action_button_confirmation_message + cancel_action_button_confirmation_message: !input cancel_action_button_confirmation_message + include_custom_actions: !input include_custom_actions + global_conditions: !input global_conditions + all_exclude_sensors: "{% set label_entities_list = label_entities(exclude_sensors.label_id) + if exclude_sensors.label_id is defined and label_entities(exclude_sensors.label_id) + is not none else [] %} {% set entity_list = exclude_sensors.entity_id if exclude_sensors.entity_id + is defined else [] %} {% if entity_list is string %}\n {% set entity_list = [entity_list] + %}\n{% endif %} {% set all_exclude_sensors = label_entities_list + entity_list + %} {{ all_exclude_sensors }}" + custom_group_sensors: "{% set label_entities_list = label_entities(custom_group.label_id) + if custom_group.label_id is defined and label_entities(custom_group.label_id) + is not none else [] %} {% set entity_list = custom_group.entity_id if custom_group.entity_id + is defined else [] %} {% if entity_list is string %}\n {% set entity_list = [entity_list] + %}\n{% endif %} {% set custom_group_sensors = label_entities_list + entity_list + %} {{ custom_group_sensors }}" + device_message_data: "{% set message = namespace(data={}) %} {% set push = namespace(data={}) + %} {% if notify_interruption_level in ['active', 'critical', 'time-sensitive', + 'passive'] %}\n {% set push.data = dict(push.data, **{ 'interruption-level': + notify_interruption_level }) %}\n{% endif %} {% if notify_sound != [] %}\n {% + set push.data = dict(push.data, **{ 'sound': notify_sound }) %}\n{% endif %} {% + if push.data %}\n {% set message.data = dict(message.data, **{ 'push': push.data + }) %}\n{% endif %} {% if 'high_priority' in notify_data %}\n {% set message.data + = dict(message.data, **{ 'ttl': 0, 'priority': 'high' }) %}\n{% endif %} {% if + 'channel' in notify_data %}\n {% set message.data = dict(message.data, **{ 'channel': + notify_channel }) %}\n{% endif %} {% if 'sticky' in notify_data %}\n {% set message.data + = dict(message.data, **{ 'sticky': \"true\" }) %}\n{% endif %} {{ message.data + }}" + device_message_data_action_button: "{% set message = namespace(data={}) %} {% set + push = namespace(data={}) %} {% if notify_interruption_level in ['active', 'critical', + 'time-sensitive', 'passive'] %}\n {% set push.data = dict(push.data, **{ 'interruption-level': + notify_interruption_level }) %}\n{% endif %} {% if notify_sound != [] %}\n {% + set push.data = dict(push.data, **{ 'sound': notify_sound }) %}\n{% endif %} {% + if push.data %}\n {% set message.data = dict(message.data, **{ 'push': push.data + }) %}\n{% endif %} {% if 'high_priority' in notify_data %}\n {% set message.data + = dict(message.data, **{ 'ttl': 0, 'priority': 'high' }) %}\n{% endif %} {% if + 'channel' in notify_data %}\n {% set message.data = dict(message.data, **{ 'channel': + notify_channel }) %}\n{% endif %} {% if 'sticky' in notify_data %}\n {% set message.data + = dict(message.data, **{ 'sticky': \"true\" }) %}\n{% endif %} {% set actions + = [\n {'action': action_button_to_do, 'title': action_button_to_do},\n {'action': + action_button_cancel, 'title': action_button_cancel}\n] %}\n {% set message.data + = dict(message.data, **{ 'actions': actions }) %}\n{{ message.data }}" + device_confirmation_message_data: "{% set message = namespace(data={}) %} {% set + push = namespace(data={}) %} {% if notify_interruption_level in ['active', 'critical', + 'time-sensitive', 'passive'] %}\n {% set push.data = dict(push.data, **{ 'interruption-level': + notify_interruption_level }) %}\n{% endif %} {% if notify_sound != [] %}\n {% + set push.data = dict(push.data, **{ 'sound': notify_sound }) %}\n{% endif %} {% + if push.data %}\n {% set message.data = dict(message.data, **{ 'push': push.data + }) %}\n{% endif %} {% if 'high_priority' in notify_data %}\n {% set message.data + = dict(message.data, **{ 'ttl': 0, 'priority': 'high' }) %}\n{% endif %} {% if + 'channel' in notify_data %}\n {% set message.data = dict(message.data, **{ 'channel': + notify_channel }) %}\n{% endif %} {% if 'sticky' in notify_data %}\n {% set message.data + = dict(message.data, **{ 'sticky': \"true\" }) %}\n{% endif %}\n {% set message.data + = dict(message.data, **{ 'url': \"/todo?entity_id=\" ~ to_do_list, 'clickAction': + \"/todo?entity_id=\" ~ to_do_list }) %}\n{{ message.data }}" + all_sensors: "{% set low_battery = namespace(sensors=[]) %} {% for state in states.sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery') %}\n {% if 0 <= state.state | int(-1) <= battery_level | int + and state.entity_id not in all_exclude_sensors %}\n {% set low_battery.sensors + = low_battery.sensors + [state.name ~ ' @ ' ~ state.state ~ '%'] %}\n {% endif + %}\n{% endfor %} {% for state in states.binary_sensor\n | rejectattr('attributes.device_class', + 'undefined')\n | selectattr('attributes.device_class', '==', 'battery')\n | + selectattr('state', 'in', ['on', 'low']) %}\n {% if state.entity_id not in all_exclude_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is + low!'] %}\n {% endif %}\n{% endfor %} {% for state in states.sensor\n | rejectattr('attributes.device_class', + 'undefined')\n | selectattr('attributes.device_class', '==', 'battery')\n | + selectattr('state', 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id + not in all_exclude_sensors %}\n {% set low_battery.sensors = low_battery.sensors + + [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {% + for state in states.binary_sensor\n | rejectattr('attributes.device_class', 'undefined')\n + \ | selectattr('attributes.device_class', '==', 'battery')\n | selectattr('state', + 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id not in all_exclude_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is + ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {{ low_battery.sensors + | join(', ') }}" + sensors: "{% set low_battery = namespace(sensors=[]) %} {% for state in states.sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery') %}\n {% if 0 <= state.state | int(-1) <= battery_level | int + and state.entity_id not in all_exclude_sensors %}\n {% set low_battery.sensors + = low_battery.sensors + [state.name ~ ' @ ' ~ state.state ~ '%'] %}\n {% endif + %}\n{% endfor %} {% for state in states.binary_sensor\n | rejectattr('attributes.device_class', + 'undefined')\n | selectattr('attributes.device_class', '==', 'battery')\n | + selectattr('state', 'in', ['on', 'low']) %}\n {% if state.entity_id not in all_exclude_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is + low!'] %}\n {% endif %}\n{% endfor %} {{ low_battery.sensors | join(', ') }}" + unavailable_sensors: "{% set low_battery = namespace(sensors=[]) %} {% for state + in states.sensor\n | rejectattr('attributes.device_class', 'undefined')\n | + selectattr('attributes.device_class', '==', 'battery')\n | selectattr('state', + 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id not in all_exclude_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is + ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {% for state in states.binary_sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery')\n | selectattr('state', 'in', ['unavailable', 'unknown']) %}\n + \ {% if state.entity_id not in all_exclude_sensors %}\n {% set low_battery.sensors + = low_battery.sensors + [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif + %}\n{% endfor %} {{ low_battery.sensors | join(', ') }}" + sensors_names: "{% set low_battery = namespace(sensors=[]) %} {% for state in states.sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery') %}\n {% if 0 <= state.state | int(-1) <= battery_level | int + and state.entity_id not in all_exclude_sensors %}\n {% set low_battery.sensors + = low_battery.sensors + [state.name] %}\n {% endif %}\n{% endfor %} {% for state + in states.binary_sensor\n | rejectattr('attributes.device_class', 'undefined')\n + \ | selectattr('attributes.device_class', '==', 'battery')\n | selectattr('state', + 'in', ['on', 'low']) %}\n {% if state.entity_id not in all_exclude_sensors %}\n + \ {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% endif + %}\n{% endfor %} {{low_battery.sensors | join(', ')}}" + unavailable_sensors_names: "{% set low_battery = namespace(sensors=[]) %} {% for + state in states.sensor\n | rejectattr('attributes.device_class', 'undefined')\n + \ | selectattr('attributes.device_class', '==', 'battery')\n | selectattr('state', + 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id not in all_exclude_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% + endif %}\n{% endfor %} {% for state in states.binary_sensor\n | rejectattr('attributes.device_class', + 'undefined')\n | selectattr('attributes.device_class', '==', 'battery')\n | + selectattr('state', 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id + not in all_exclude_sensors %}\n {% set low_battery.sensors = low_battery.sensors + + [state.name] %}\n {% endif %}\n{% endfor %} {{low_battery.sensors | join(', + ')}}" + all_sensors_custom_group: "{% set low_battery = namespace(sensors=[]) %} {% for + state in states.sensor\n | rejectattr('attributes.device_class', 'undefined')\n + \ | selectattr('attributes.device_class', '==', 'battery') %}\n {% if 0 <= state.state + | int(-1) <= custom_group_battery_level | int and state.entity_id in custom_group_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' @ ' + ~ state.state ~ '%'] %}\n {% endif %}\n{% endfor %} {% for state in states.binary_sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery')\n | selectattr('state', 'in', ['on', 'low']) %}\n {% if state.entity_id + in custom_group_sensors %}\n {% set low_battery.sensors = low_battery.sensors + + [state.name ~ ' is low!'] %}\n {% endif %}\n{% endfor %} {% for state in states.sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery')\n | selectattr('state', 'in', ['unavailable', 'unknown']) %}\n + \ {% if state.entity_id in custom_group_sensors %}\n {% set low_battery.sensors + = low_battery.sensors + [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif + %}\n{% endfor %} {% for state in states.binary_sensor\n | rejectattr('attributes.device_class', + 'undefined')\n | selectattr('attributes.device_class', '==', 'battery')\n | + selectattr('state', 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id + in custom_group_sensors %}\n {% set low_battery.sensors = low_battery.sensors + + [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {{ + low_battery.sensors | join(', ') }}" + sensors_custom_group: "{% set low_battery = namespace(sensors=[]) %} {% for state + in states.sensor\n | rejectattr('attributes.device_class', 'undefined')\n | + selectattr('attributes.device_class', '==', 'battery') %}\n {% if 0 <= state.state + | int(-1) <= custom_group_battery_level | int and state.entity_id in custom_group_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' @ ' + ~ state.state ~ '%'] %}\n {% endif %}\n{% endfor %} {% for state in states.binary_sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery')\n | selectattr('state', 'in', ['on', 'low']) %}\n {% if state.entity_id + in custom_group_sensors %}\n {% set low_battery.sensors = low_battery.sensors + + [state.name ~ ' is low!'] %}\n {% endif %}\n{% endfor %} {{ low_battery.sensors + | join(', ') }}" + unavailable_sensors_custom_group: "{% set low_battery = namespace(sensors=[]) %} + {% for state in states.sensor\n | rejectattr('attributes.device_class', 'undefined')\n + \ | selectattr('attributes.device_class', '==', 'battery')\n | selectattr('state', + 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id in custom_group_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name ~ ' is + ' ~ state.state ~ '!'] %}\n {% endif %}\n{% endfor %} {% for state in states.binary_sensor\n + \ | rejectattr('attributes.device_class', 'undefined')\n | selectattr('attributes.device_class', + '==', 'battery')\n | selectattr('state', 'in', ['unavailable', 'unknown']) %}\n + \ {% if state.entity_id in custom_group_sensors %}\n {% set low_battery.sensors + = low_battery.sensors + [state.name ~ ' is ' ~ state.state ~ '!'] %}\n {% endif + %}\n{% endfor %} {{ low_battery.sensors | join(', ') }}" + sensors_names_custom_group: "{% set low_battery = namespace(sensors=[]) %} {% for + state in states.sensor\n | rejectattr('attributes.device_class', 'undefined')\n + \ | selectattr('attributes.device_class', '==', 'battery') %}\n {% if 0 <= state.state + | int(-1) <= custom_group_battery_level | int and state.entity_id in custom_group_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% + endif %}\n{% endfor %} {% for state in states.binary_sensor\n | rejectattr('attributes.device_class', + 'undefined')\n | selectattr('attributes.device_class', '==', 'battery')\n | + selectattr('state', 'in', ['on', 'low']) %}\n {% if state.entity_id in custom_group_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% + endif %}\n{% endfor %} {{ low_battery.sensors | join(', ') }}" + unavailable_sensors_names_custom_group: "{% set low_battery = namespace(sensors=[]) + %} {% for state in states.sensor\n | rejectattr('attributes.device_class', 'undefined')\n + \ | selectattr('attributes.device_class', '==', 'battery')\n | selectattr('state', + 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id in custom_group_sensors + %}\n {% set low_battery.sensors = low_battery.sensors + [state.name] %}\n {% + endif %}\n{% endfor %} {% for state in states.binary_sensor\n | rejectattr('attributes.device_class', + 'undefined')\n | selectattr('attributes.device_class', '==', 'battery')\n | + selectattr('state', 'in', ['unavailable', 'unknown']) %}\n {% if state.entity_id + in custom_group_sensors %}\n {% set low_battery.sensors = low_battery.sensors + + [state.name] %}\n {% endif %}\n{% endfor %} {{ low_battery.sensors | join(', + ') }}" + easy_notify_message: "{% set low_battery = namespace(sensors=[]) %} {% if sensor_selection + == 'enable_battery_sensors_custom_group' and notify_message == 'all_sensors' %}\n + \ {{all_sensors_custom_group|replace(', ', '\\n')}}\n{% elif sensor_selection + == 'enable_battery_sensors_custom_group' and notify_message == 'sensors'%}\n {{sensors_custom_group|replace(', + ', '\\n')}}\n{% elif sensor_selection == 'enable_battery_sensors_custom_group' + and notify_message == 'unavailable_sensors'%}\n {{unavailable_sensors_custom_group|replace(', + ', '\\n')}}\n{% elif sensor_selection == 'enable_all_sensors' and notify_message + == 'all_sensors' %}\n {{all_sensors|replace(', ', '\\n')}}\n{% elif sensor_selection + == 'enable_all_sensors' and notify_message == 'sensors'%}\n {{sensors|replace(', + ', '\\n')}}\n{% elif sensor_selection == 'enable_all_sensors' and notify_message + == 'unavailable_sensors'%}\n {{unavailable_sensors|replace(', ', '\\n')}}\n{% + elif sensor_selection == 'enable_all_and_custom_group_sensors' and notify_message + == 'all_sensors' %}\n {{all_sensors|replace(', ', '\\n')}}{{'\\n'}}{{all_sensors_custom_group|replace(', + ', '\\n')}}\n{% elif sensor_selection == 'enable_all_and_custom_group_sensors' + and notify_message == 'sensors'%}\n {{sensors|replace(', ', '\\n')}}{{'\\n'}}{{sensors_custom_group|replace(', + ', '\\n')}}\n{% elif sensor_selection == 'enable_all_and_custom_group_sensors' + and notify_message == 'unavailable_sensors'%}\n {{unavailable_sensors|replace(', + ', '\\n')}}{{'\\n'}}{{unavailable_sensors_custom_group|replace(', ', '\\n')}}\n{% + else %}\n []\n{% endif %}" +triggers: +- trigger: state + entity_id: !input button_entity + id: t0 +- trigger: time + at: !input time + id: t1 +condition: +- condition: or + conditions: + - condition: and + conditions: + - condition: trigger + id: t0 + - '{{ include_button == ''enable_button_trigger'' }}' + - condition: and + conditions: + - condition: trigger + id: t1 + - '{{ include_time == ''time_enabled'' }}' +- condition: or + conditions: + - '{{ include_time == ''time_disabled'' }}' + - condition: and + conditions: + - condition: time + weekday: !input weekday_options + - '{{ include_time == ''time_enabled'' }}' + - condition: trigger + id: t0 +- condition: and + conditions: !input global_conditions +action: +- choose: + - alias: Perform the custom actions + conditions: + - condition: template + value_template: '{{ include_custom_actions == ''enable_custom_actions'' }}' + sequence: !input custom_actions +- choose: + - alias: Use the easy notify options + conditions: + - condition: template + value_template: '{{ (include_easy_notify == ''enable_easy_notify'') or (include_easy_notify + == ''enable_easy_okay_notify'') }}' + - condition: template + value_template: '{{ notify_device | length > 0 }}' + sequence: + - alias: Send a notification to each device + repeat: + for_each: !input notify_device + sequence: + - choose: + - alias: Sensors have been found + conditions: + - '{{ easy_notify_message != '''' }}' + sequence: + - choose: + - alias: Easy notify with no action button + conditions: + - '{{ notify_action_buttons == ''disabled_notify_action_buttons'' + }}' + sequence: + - action: notify.mobile_app_{{ device_attr(repeat.item, 'name') | + slugify }} + data: + title: !input notify_title + message: '{{easy_notify_message}}' + data: '{{ device_message_data }}' + - alias: Easy notify with action button + conditions: + - '{{ notify_action_buttons != ''disabled_notify_action_buttons'' + }}' + sequence: + - action: notify.mobile_app_{{ device_attr(repeat.item, 'name') | + slugify }} + data: + title: !input notify_title + message: '{{easy_notify_message}}' + data: '{{ device_message_data_action_button }}' + - alias: No sensors have been found + conditions: + - '{{ easy_notify_message == '''' }}' + - '{{ include_easy_notify == ''enable_easy_okay_notify'' }}' + sequence: + - action: notify.mobile_app_{{ device_attr(repeat.item, 'name') | slugify + }} + data: + title: !input notify_title + message: !input notify_okay_message + data: '{{ device_message_data }}' +- choose: + - alias: Use the easy notify persistent notification options + conditions: + - condition: template + value_template: '{{ (include_persistent_notification == ''enable_persistent_notification'') + or (include_persistent_notification == ''enable_persistent_okay_notification'') + }}' + sequence: + - choose: + - alias: Sensors have been found + conditions: + - '{{ easy_notify_message != '''' }}' + sequence: + - action: persistent_notification.create + data: + title: "\U0001FAAB {{notify_title}}" + message: '{{easy_notify_message}}' + - alias: No sensors have been found + conditions: + - '{{ easy_notify_message == '''' }}' + - '{{ include_persistent_notification == ''enable_persistent_okay_notification'' + }}' + sequence: + - action: persistent_notification.create + data: + title: "\U0001FAAB {{notify_title}}" + message: !input notify_okay_message +- choose: + - alias: Check if the To-Do action button is enabled + conditions: + - condition: template + value_template: '{{ (include_easy_notify == ''enable_easy_notify'') or (include_easy_notify + == ''enable_easy_okay_notify'') }}' + - condition: template + value_template: '{{(notify_action_buttons == ''enable_to_do_list_button'') or + (notify_action_buttons == ''enable_to_do_list_button_and_confirmation'')}}' + - condition: template + value_template: '{{ notify_device | length > 0 }}' + sequence: + - alias: Wait for a response from the action buttons + wait_for_trigger: + - trigger: event + event_type: mobile_app_notification_action + event_data: + action: '{{ action_button_to_do }}' + - trigger: event + event_type: mobile_app_notification_action + event_data: + action: '{{ action_button_cancel }}' + - choose: + - alias: Check if confirmation message is disabled + conditions: + - condition: template + value_template: '{{ notify_action_buttons == ''enable_to_do_list_button'' + }}' + sequence: + - if: + - alias: Confirmation from the action buttons + condition: template + value_template: '{{ wait.trigger.idx is defined }}' + then: + - alias: Perform the chosen actions + choose: + - conditions: '{{ wait.trigger.event.data.action == action_button_to_do + }}' + sequence: + - alias: Add task to To-Do list + action: todo.add_item + metadata: {} + data: + item: !input to_do_task_title + description: '{{easy_notify_message}}' + target: + entity_id: !input to_do_list + - conditions: '{{ wait.trigger.event.data.action == action_button_cancel + }}' + sequence: + - stop: Stop the automation + - alias: Check if confirmation message is enabled + conditions: + - condition: template + value_template: '{{ notify_action_buttons == ''enable_to_do_list_button_and_confirmation'' + }}' + sequence: + - if: + - alias: Confirmation from the action buttons + condition: template + value_template: '{{ wait.trigger.idx is defined }}' + then: + - alias: Perform the chosen actions + choose: + - conditions: '{{ wait.trigger.event.data.action == action_button_to_do + }}' + sequence: + - alias: Add task to To-Do list + action: todo.add_item + metadata: {} + data: + item: !input to_do_task_title + description: '{{easy_notify_message}}' + target: + entity_id: !input to_do_list + - alias: Send a notification to each device + repeat: + for_each: !input notify_device + sequence: + - action: notify.mobile_app_{{ device_attr(repeat.item, 'name') + | slugify }} + data: + title: !input action_button_confirmation_title + message: !input action_button_confirmation_message + data: '{{ device_confirmation_message_data }}' + - conditions: '{{ wait.trigger.event.data.action == action_button_cancel + }}' + sequence: + - alias: Send a notification to each device + repeat: + for_each: !input notify_device + sequence: + - action: notify.mobile_app_{{ device_attr(repeat.item, 'name') + | slugify }} + data: + title: !input action_button_confirmation_title + message: !input cancel_action_button_confirmation_message + data: '{{ device_message_data }}' diff --git a/hass/settings/blueprints/automation/SirGoodenough/Zigbee2MQTT-Xiaomi_Cube_Controller_MQTT_Triggered.yaml b/hass/settings/blueprints/automation/SirGoodenough/Zigbee2MQTT-Xiaomi_Cube_Controller_MQTT_Triggered.yaml new file mode 100644 index 0000000..dfabaec --- /dev/null +++ b/hass/settings/blueprints/automation/SirGoodenough/Zigbee2MQTT-Xiaomi_Cube_Controller_MQTT_Triggered.yaml @@ -0,0 +1,919 @@ +blueprint: + name: Aqara Magic Cube Zigbee2MQTT MQTT Triggered - 2023-10-20 + author: SirGoodenough + description: "This Blueprint uses a Zigbee2MQTT built sensor to sort out the 38(+54) + unique commands available from the Xiaomi Magic Cube Remote. (Some unique commands + are available thru templating only. See the related document.)\nThe split out + of functions gives you the ability to assign local scripts or functions to do + the things you want the remote to do.\nFunctions that are left empty will simply + do nothing.\n\n### \U0001F34E There is a set of 36 event functions that will trigger + on specific actions on specific sides that are listed as **Group 1 actions \U0001F34E**.\n\n### + \U0001F34A There is a set of 6 event functions that will trigger on specific actions + on *ANY* side that are listed as **Group 2 sctions \U0001F34A**.\n\n### \U0001F350 + There is a set of 30 event functions that will trigger on cube flips to & froma + specific sides that are listed as **Group 3 sctions \U0001F350**.\n\n### \U0001F369 + There are 2 actions (shake and drop) that only occur once and are OK to be combined + with any other group.\n\nPlease be aware that ALL actions except the 2 listed + above, \U0001F369 will trigger an action in **ALL 3 groups at the same time** + every time. Therefore I suggest if you just have a couple of things you want this + remote to do that you choose the *ANY / Group 2 / \U0001F34A* events.\nIf you + want more than a few events, you should select actions in **Group 1 / \U0001F34E + OR Group 3 / \U0001F350**.\nWith careful selection you can use mixed groups, but + you run the risk of a single cube action triggering more than 1 Home Assistant + action and making a mess of things \U0001F371.\n\n#### NOTICE: This cube *can* + be triggered 124 ways, but only 38(+54) of them are unique (with templating).\n##### + This blueprint has been known to freak out when there are spaces or odd characters + in the MQTT Topic. Make sure there are no spaces, ONLY a single word, and ONLY + A thru Z, a thru z, and 0 thru 9 in the topic. (``` / ``` is ok between device + and topic) If there are, you will need to change the name of the cube to remove + those characters.\n### IF YOU SEE --> TemplateError: Must provide a device or + entity ID\nIf you get an error like that, The friendly_name in Z2M likely does + not match the friendly_name on HA. To fix go into the Z2M ```Open web UI``` and + set the friendly_name there. Setting this in just HA or in Z2M without ticking + the update HA box will cause this. See the blueprint documentation page for details.\n\nThere + is sample code to make the template sensor in the help file on GitHib named [Zigbee2MQTT + - Xiaomi Cube Controller MQTT Triggered.md](https://github.com/SirGoodenough/HA_Blueprints/blob/master/Automations/Zigbee2MQTT%20-%20Xiaomi%20Cube%20Controller%20MQTT%20Triggered.md) + & in the [community page related to this](https://community.home-assistant.io/t/zigbee2mqtt-xiaomi-cube-controller/393203).\n\nWithin + this blueprint there is an event handler that will latch the last command that + the blueprint finds and sends that to the event buss. From there a simple Template + sensor can grab it and show you the last action sent. Thie will help when setting + up new functions and to troubleshoot strange behaviours.\n\n> This was forked + from https://community.home-assistant.io/t/z2m-xiaomi-cube-controller/263006 1.2 + project authored by luckypoppy and the friends he pulled together to create the + base. I sincerely thank Him (Them) for their work. I felt there needed to be more + documentation for rookie users to properly set this up. I had quite a few questions + and when I saw a few questions in that chat from people struggling, I wanted to + help. I also had a better idea for troubleshooting info.\n\U0001F4E9 There is + not an official version control system for Blueprints. However I have found something + that comes pretty close. It is not perfect, but for **MOST** Blueprints, it does + just fine. I encourage you to check this script out and use it to easily check + if I have updated this blueprint. \U0001F517 [koter84 Blueprint Update Script](https://github.com/koter84/HomeAssistant_Blueprints_Update/)\n\n[Community + link for this blueprint](https://community.home-assistant.io/t/zigbee2mqtt-xiaomi-cube-controller/393203)\n" + source_url: https://raw.githubusercontent.com/SirGoodenough/HA_Blueprints/master/Automations/Zigbee2MQTT-Xiaomi_Cube_Controller_MQTT_Triggered.yaml + domain: automation + homeassistant: + min_version: 2023.8.0 + input: + topic: + name: Topic + description: "The main MQTT Topic for your cube. \nDetails on finding the correct + topic can be found here: \n[Find my Cube Topic](https://github.com/SirGoodenough/HA_Blueprints/blob/master/Automations/Zigbee2MQTT%20-%20Xiaomi%20Cube%20Controller%20MQTT%20Triggered.md#-to-make-the-blueprint-work-it-will-need)\n" + default: zigbee2mqtt/? + selector: + text: + multiline: false + additional_conditions: + name: Additional conditions + description: "Extra conditions you may want to add to this automation \n(Example: + Home occupied, TV on, etc)\n" + default: [] + selector: + condition: {} + slide_face_0: + name: "Group 1 actions \U0001F34E Slide the cube with face 0 up" + description: Face 0 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + doubletap_face_0: + name: "Group 1 actions \U0001F34E Double tap the cube with face 0 up" + description: Face 0 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + flipped90_face_0: + name: "Group 1 actions \U0001F34E Flip the cube 90 degrees to face 0" + description: Face 0 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + flipped180_face_0: + name: "Group 1 actions \U0001F34E Flip the cube 180 degrees to face 0" + description: '**NOTE:** This action is trick to master, and should be used sparingly... + + Face 0 is the one with the ''Aqara'' LOGO' + default: [] + selector: + action: {} + flip_from_any_to_face_0: + name: "Group 1 actions \U0001F34E Flip the cube from any to face 0" + description: Face 0 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + rotate_cw_face_0: + name: "Group 1 actions \U0001F34E Rotate cube clockwise with face 0 up" + description: Face 0 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + rotate_ccw_face_0: + name: "Group 1 actions \U0001F34E Rotate cube counter clockwise with face 0 + up" + description: Face 0 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + slide_face_1: + name: "Group 1 actions \U0001F34E Slide the cube with face 1 up" + default: [] + selector: + action: {} + doubletap_face_1: + name: "Group 1 actions \U0001F34E Double tap the cube with face 1 up" + default: [] + selector: + action: {} + flipped90_face_1: + name: "Group 1 actions \U0001F34E Flip the cube 90 degrees to face 1" + default: [] + selector: + action: {} + flipped180_face_1: + name: "Group 1 actions \U0001F34E Flip the cube 180 degrees to face 1" + description: '**NOTE:** This action is trick to master, and should be used sparingly...' + default: [] + selector: + action: {} + flip_from_any_to_face_1: + name: "Group 1 actions \U0001F34E Flip the cube from any to face 1" + description: Face 1 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + rotate_cw_face_1: + name: "Group 1 actions \U0001F34E Rotate cube clockwise with face 1 up" + default: [] + selector: + action: {} + rotate_ccw_face_1: + name: "Group 1 actions \U0001F34E Rotate cube counter clockwise with face 1 + up" + default: [] + selector: + action: {} + slide_face_2: + name: "Group 1 actions \U0001F34E Slide the cube with face 2 up" + default: [] + selector: + action: {} + doubletap_face_2: + name: "Group 1 actions \U0001F34E Double tap the cube with face 2 up" + default: [] + selector: + action: {} + flipped90_face_2: + name: "Group 1 actions \U0001F34E Flip the cube 90 degrees to face 2" + default: [] + selector: + action: {} + flipped180_face_2: + name: "Group 1 actions \U0001F34E Flip the cube 180 degrees to face 2" + description: '**NOTE:** This action is trick to master, and should be used sparingly...' + default: [] + selector: + action: {} + flip_from_any_to_face_2: + name: "Group 1 actions \U0001F34E Flip the cube from any to face 2" + description: Face 2 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + rotate_cw_face_2: + name: "Group 1 actions \U0001F34E Rotate cube clockwise with face 2 up" + default: [] + selector: + action: {} + rotate_ccw_face_2: + name: "Group 1 actions \U0001F34E Rotate cube counter clockwise with face 2 + up" + default: [] + selector: + action: {} + slide_face_3: + name: "Group 1 actions \U0001F34E Slide the cube with face 3 up" + default: [] + selector: + action: {} + doubletap_face_3: + name: "Group 1 actions \U0001F34E Double tap the cube with face 3 up" + default: [] + selector: + action: {} + flipped90_face_3: + name: "Group 1 actions \U0001F34E Flip the cube 90 degrees to face 3" + default: [] + selector: + action: {} + flipped180_face_3: + name: "Group 1 actions \U0001F34E Flip the cube 180 degrees to face 3" + description: '**NOTE:** This action is trick to master, and should be used sparingly...' + default: [] + selector: + action: {} + flip_from_any_to_face_3: + name: "Group 1 actions \U0001F34E Flip the cube from any to face 3" + description: Face 3 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + rotate_cw_face_3: + name: "Group 1 actions \U0001F34E Rotate cube clockwise with face 3 up" + default: [] + selector: + action: {} + rotate_ccw_face_3: + name: "Group 1 actions \U0001F34E Rotate cube counter clockwise with face 3 + up" + default: [] + selector: + action: {} + slide_face_4: + name: "Group 1 actions \U0001F34E Slide the cube with face 4 up" + default: [] + selector: + action: {} + doubletap_face_4: + name: "Group 1 actions \U0001F34E Double tap the cube with face 4 up" + default: [] + selector: + action: {} + flipped90_face_4: + name: "Group 1 actions \U0001F34E Flip the cube 90 degrees to face 4" + default: [] + selector: + action: {} + flipped180_face_4: + name: "Group 1 actions \U0001F34E Flip the cube 180 degrees to face 4" + description: '**NOTE:** This action is trick to master, and should be used sparingly...' + default: [] + selector: + action: {} + flip_from_any_to_face_4: + name: "Group 1 actions \U0001F34E Flip the cube from any to face 4" + description: Face 4 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + rotate_cw_face_4: + name: "Group 1 actions \U0001F34E Rotate cube clockwise with face 4 up" + default: [] + selector: + action: {} + rotate_ccw_face_4: + name: "Group 1 actions \U0001F34E Rotate cube counter clockwise with face 4 + up" + default: [] + selector: + action: {} + slide_face_5: + name: "Group 1 actions \U0001F34E Slide the cube with face 5 up" + default: [] + selector: + action: {} + doubletap_face_5: + name: "Group 1 actions \U0001F34E Double tap the cube with face 5 up" + default: [] + selector: + action: {} + flipped90_face_5: + name: "Group 1 actions \U0001F34E Flip the cube 90 degrees to face 5" + default: [] + selector: + action: {} + flipped180_face_5: + name: "Group 1 actions \U0001F34E Flip the cube 180 degrees to face 5" + description: '**NOTE:** This action is trick to master, and should be used sparingly...' + default: [] + selector: + action: {} + flip_from_any_to_face_5: + name: "Group 1 actions \U0001F34E Flip the cube from any to face 5" + description: Face 5 is the one with the 'Aqara' LOGO + default: [] + selector: + action: {} + rotate_cw_face_5: + name: "Group 1 actions \U0001F34E Rotate cube clockwise with face 5 up" + default: [] + selector: + action: {} + rotate_ccw_face_5: + name: "Group 1 actions \U0001F34E Rotate cube counter clockwise with face 5 + up" + default: [] + selector: + action: {} + shake: + name: "Shake the cube \U0001F369" + description: 'This trigger only occurs once in the set-up. + + It can be combined in any group.' + default: [] + selector: + action: {} + fall: + name: "Drop the cube \U0001F369" + description: 'This trigger only occurs once in the set-up. + + It can be combined in any group.' + default: [] + selector: + action: {} + slide_any: + name: "Group 2 actions \U0001F34A Slide the cube with any side" + description: "Side doesn't matter on this one.\n**!!Warning!!** The automations + for the specific side will also trigger. \U0001F34E\U0001F350\nI suggest using + only one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + doubletap_any: + name: "Group 2 actions \U0001F34A Double tap the cube with any side" + description: "Side doesn't matter on this one.\n**!!Warning!!** The automations + for the specific side will also trigger. \U0001F34E\U0001F350\nI suggest using + only one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + flipped90_any: + name: "Group 2 actions \U0001F34A Flip the cube 90 degrees to any side" + description: "Side doesn't matter on this one.\n**!!Warning!!** The automations + for the specific side will also trigger. \U0001F34E\U0001F350\nI suggest using + only one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + flipped180_any: + name: "Group 2 actions \U0001F34A Flip the cube 180 degrees any side" + description: "NOTE: This action is trick to master, and should be used sparingly... + Side doesn't matter on this one.\n**!!Warning!!** The automations for the + specific side will also trigger. \U0001F34E\U0001F350\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + rotate_cw_any: + name: "Group 2 actions \U0001F34A Rotate cube clockwise with any side" + description: "Side doesn't matter on this one.\n**!!Warning!!** The automations + for the specific side will also trigger. \U0001F34E\U0001F350\nI suggest using + only one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + rotate_ccw_any: + name: "Group 2 actions \U0001F34A Rotate cube counter clockwise with any side" + description: "Side doesn't matter on this one.\n**!!Warning!!** The automations + for the specific side will also trigger. \U0001F34E\U0001F350\nI suggest using + only one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 0_from_1: + name: "Group 3 actions \U0001F350 Flip the cube to side 0 from side 1" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 0 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 0_from_2: + name: "Group 3 actions \U0001F350 Flip the cube to side 0 from side 2" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 0 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 0_from_3: + name: "Group 3 actions \U0001F350 Flip the cube to side 0 from side 3" + description: "**!!Warning!!** The flip 180 automations \U0001F34E for side 0 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 0_from_4: + name: "Group 3 actions \U0001F350 Flip the cube to side 0 from side 4" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 0 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 0_from_5: + name: "Group 3 actions \U0001F350 Flip the cube to side 0 from side 5" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 0 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 1_from_0: + name: "Group 3 actions \U0001F350 Flip the cube to side 1 from side 0" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 1 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 1_from_2: + name: "Group 3 actions \U0001F350 Flip the cube to side 1 from side 2" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 1 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 1_from_3: + name: "Group 3 actions \U0001F350 Flip the cube to side 1 from side 3" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 1 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 1_from_4: + name: "Group 3 actions \U0001F350 Flip the cube to side 1 from side 4" + description: "**!!Warning!!** The flip 180 automations \U0001F34E for side 1 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 1_from_5: + name: "Group 3 actions \U0001F350 Flip the cube to side 1 from side 5" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 1 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 2_from_0: + name: "Group 3 actions \U0001F350 Flip the cube to side 2 from side 0" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 2 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 2_from_1: + name: "Group 3 actions \U0001F350 Flip the cube to side 2 from side 1" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 2 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 2_from_3: + name: "Group 3 actions \U0001F350 Flip the cube to side 2 from side 3" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 2 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 2_from_4: + name: "Group 3 actions \U0001F350 Flip the cube to side 2 from side 4" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 2 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 2_from_5: + name: "Group 3 actions \U0001F350 Flip the cube to side 2 from side 5" + description: "**!!Warning!!** The flip 180 automations \U0001F34E for side 2 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 3_from_0: + name: "Group 3 actions \U0001F350 Flip the cube to side 3 from side 0" + description: "**!!Warning!!** The flip 180 automations \U0001F34E for side 3 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 3_from_1: + name: "Group 3 actions \U0001F350 Flip the cube to side 3 from side 1" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 3 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 3_from_2: + name: "Group 3 actions \U0001F350 Flip the cube to side 3 from side 2" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 3 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 3_from_4: + name: "Group 3 actions \U0001F350 Flip the cube to side 3 from side 4" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 3 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 3_from_5: + name: "Group 3 actions \U0001F350 Flip the cube to side 3 from side 5" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 3 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 4_from_0: + name: "Group 3 actions \U0001F350 Flip the cube to side 4 from side 0" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 4 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 4_from_1: + name: "Group 3 actions \U0001F350 Flip the cube to side 4 from side 1" + description: "**!!Warning!!** The flip 180 automations \U0001F34E for side 4 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 4_from_2: + name: "Group 3 actions \U0001F350 Flip the cube to side 4 from side 2" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 4 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 4_from_3: + name: "Group 3 actions \U0001F350 Flip the cube to side 4 from side 3" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 4 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 4_from_5: + name: "Group 3 actions \U0001F350 Flip the cube to side 4 from side 5" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 4 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 5_from_0: + name: "Group 3 actions \U0001F350 Flip the cube to side 5 from side 0" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 5 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 5_from_1: + name: "Group 3 actions \U0001F350 Flip the cube to side 5 from side 1" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 5 + and the ANY \U0001F34A automations will also trigger. \U0001F34E\U0001F350\nI + suggest using only one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 5_from_2: + name: "Group 3 actions \U0001F350 Flip the cube to side 5 from side 2" + description: "**!!Warning!!** The flip 180 automations \U0001F34E for side 5 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 5_from_3: + name: "Group 3 actions \U0001F350 Flip the cube to side 5 from side 3" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 5 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} + 5_from_4: + name: "Group 3 actions \U0001F350 Flip the cube to side 5 from side 4" + description: "**!!Warning!!** The flip 90 automations \U0001F34E for side 5 + and the ANY \U0001F34A automations will also trigger.\nI suggest using only + one of the three groups of triggers, not multiple groups..." + default: [] + selector: + action: {} +trigger: +- platform: mqtt + topic: !input topic +variables: + action: '{{ trigger.payload_json.action }}' + angle: '{{ trigger.payload_json.action_angle | float(0.0) }}' + side: '{{ trigger.payload_json.side }}' + op_mode: '{{ trigger.payload_json.operation_mode }}' + topic_var: !input topic + friendly_name: '{{ topic_var.split(''/'')[1] | regex_replace("[^A-Za-z0-9_/./-]", + "") }}' + device_id: '{{ device_id( friendly_name ) }}' + ieee_id_long: '{{(( device_attr( device_id, ''identifiers'') |list)[0][1]) }}' + ieee_id: '{{ieee_id_long.split(''_'')[1] }}' + num_name: last side + num_ha_name: '{{ ''number.'' + friendly_name + ''_last_side'' }}' + num_ha_val: '{{ states(num_ha_name) | default(0) | int(0) }}' + last_side: ' {# The first time it will not be there, so make sure its 0 instead + of undefined. #} {% if not num_ha_val in (''none'', ''null'', ''unavailable'', + '''') %} {{ num_ha_val }} {% else %} 0 {% endif %}' + mdl: Number Helper for Z2M Cube Integration + mf: SirGoodenough + sa: house + sw: '2023-10-20' + hw: https://github.com/SirGoodenough/HA_Blueprints/blob/master/Automations/Zigbee2MQTT + - Xiaomi Cube Controller.yaml + cu: https://community.home-assistant.io/t/zigbee2mqtt-xiaomi-cube-controller/393203 + config_topic_2: '{{ ''homeassistant/number/'' + ieee_id + ''/last_side/config'' + }}' + topic_2: '{{ ''homeassistant/number/'' + ieee_id + ''/last_side'' }}' +condition: +- condition: template + value_template: '{{ trigger.payload_json is defined and trigger.payload_json.action + is defined and trigger.payload_json.action in (''rotate_right'', ''rotate_left'', + ''flip90'', ''flip180'', ''slide'', ''tap'', ''shake'', ''fall'') }}' +- alias: User pick + condition: !input additional_conditions +action: +- alias: Make number helper to store last side + service: mqtt.publish + data: + topic: '{{ config_topic_2 }}' + retain: true + payload: "{ \"name\": \"{{ num_name }}\",\n \"avty_t\": \"homeassistant/status\",\n + \ \"uniq_id\": \"{{ friendly_name + '-' + device_id }}\",\n \"cmd_t\": \"{{ + topic_2 }}\",\n \"sta_t\": \"{{ topic_2 }}\",\n \"min\": \"0\",\n \"max\": + \"6\",\n \"step\": \"1\",\n \"mode\": \"box\",\n \"ret\": true,\n \"dev\": + {\n \"name\": \"{{ friendly_name }}\",\n \"mdl\": \"{{ mdl }}\",\n \"mf\": + \"{{ mf }}\",\n \"sa\": \"{{ sa }}\",\n \"sw\": \"{{ sw }}\",\n \"hw\": + \"{{ hw }}\",\n \"cu\": \"{{ cu }}\",\n \"ids\": [\n \"{{ ieee_id + + '-' + num_name }}\"\n ]\n }\n}\n" +- alias: Fire Last Action event. This is for optional troubleshooting data. + event: cube_last_action + event_data: + action: '{{ action }}' + side: '{{ side }}' + last_side: '{{ last_side }}' + friendly_name: '{{ friendly_name }}' + device_id: '{{ device_id }}' + ieee_id: '{{ ieee_id }}' + angle: '{{ angle }}' +- alias: Store the current_side as the last_side for the next trigger + service: number.set_value + target: + entity_id: '{{ num_ha_name }}' + data: + value: '{{ side }}' +- alias: "Group 2 \U0001F34A and No Group \U0001F369 These are action events for ANY + Side" + choose: + - conditions: '{{ action == "slide" }}' + sequence: !input slide_any + - conditions: '{{ action == "tap" }}' + sequence: !input doubletap_any + - conditions: '{{ action == "rotate_right" }}' + sequence: !input rotate_cw_any + - conditions: '{{ action == "rotate_left" }}' + sequence: !input rotate_ccw_any + - conditions: '{{ action == "shake" }}' + sequence: !input shake + - conditions: '{{ action == "fall" }}' + sequence: !input fall + - conditions: '{{ action == "flip90" }}' + sequence: + - parallel: + - !input flipped90_any + - alias: These are flip to specific side from any side events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input flip_from_any_to_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input flip_from_any_to_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input flip_from_any_to_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input flip_from_any_to_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input flip_from_any_to_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input flip_from_any_to_face_5 + - conditions: '{{ action == "flip180" }}' + sequence: + - parallel: + - !input flipped180_any + - alias: These are flip to specific side from any side events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input flip_from_any_to_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input flip_from_any_to_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input flip_from_any_to_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input flip_from_any_to_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input flip_from_any_to_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input flip_from_any_to_face_5 +- alias: "Group 1 \U0001F34E These are action events based on the action broken down + by side" + choose: + - conditions: '{{ action == "slide" }}' + sequence: + - alias: These are slide events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input slide_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input slide_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input slide_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input slide_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input slide_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input slide_face_5 + - conditions: '{{ action == "tap" }}' + sequence: + - alias: These are doubletap events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input doubletap_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input doubletap_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input doubletap_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input doubletap_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input doubletap_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input doubletap_face_5 + - conditions: '{{ action == "flip90" }}' + sequence: + - alias: These are flipped90 events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input flipped90_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input flipped90_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input flipped90_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input flipped90_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input flipped90_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input flipped90_face_5 + - conditions: '{{ action == "flip180" }}' + sequence: + - alias: These are flipped180 events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input flipped180_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input flipped180_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input flipped180_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input flipped180_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input flipped180_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input flipped180_face_5 + - conditions: '{{ action == "rotate_right" }}' + sequence: + - alias: These are rotate CW events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input rotate_cw_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input rotate_cw_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input rotate_cw_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input rotate_cw_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input rotate_cw_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input rotate_cw_face_5 + - conditions: '{{ action == "rotate_left" }}' + sequence: + - alias: These are rotate CCW events + choose: + - conditions: '{{ side == 0 }}' + sequence: !input rotate_ccw_face_0 + - conditions: '{{ side == 1 }}' + sequence: !input rotate_ccw_face_1 + - conditions: '{{ side == 2 }}' + sequence: !input rotate_ccw_face_2 + - conditions: '{{ side == 3 }}' + sequence: !input rotate_ccw_face_3 + - conditions: '{{ side == 4 }}' + sequence: !input rotate_ccw_face_4 + - conditions: '{{ side == 5 }}' + sequence: !input rotate_ccw_face_5 +- alias: "Group 3 \U0001F350 Side to side jump events" + choose: + - conditions: '{{ side == 0 }}' + sequence: + - alias: To side 0 from any events + choose: + - conditions: '{{ last_side == 1 }}' + sequence: !input 0_from_1 + - conditions: '{{ last_side == 2 }}' + sequence: !input 0_from_2 + - conditions: '{{ last_side == 3 }}' + sequence: !input 0_from_3 + - conditions: '{{ last_side == 4 }}' + sequence: !input 0_from_4 + - conditions: '{{ last_side == 5 }}' + sequence: !input 0_from_5 + - conditions: '{{ side == 1 }}' + sequence: + - alias: To side 1 from any events + choose: + - conditions: '{{ last_side == 0 }}' + sequence: !input 1_from_0 + - conditions: '{{ last_side == 2 }}' + sequence: !input 1_from_2 + - conditions: '{{ last_side == 3 }}' + sequence: !input 1_from_3 + - conditions: '{{ last_side == 4 }}' + sequence: !input 1_from_4 + - conditions: '{{ last_side == 5 }}' + sequence: !input 1_from_5 + - conditions: '{{ side == 2 }}' + sequence: + - alias: To side 2 from any events + choose: + - conditions: '{{ last_side == 0 }}' + sequence: !input 2_from_0 + - conditions: '{{ last_side == 1 }}' + sequence: !input 2_from_1 + - conditions: '{{ last_side == 3 }}' + sequence: !input 2_from_3 + - conditions: '{{ last_side == 4 }}' + sequence: !input 2_from_4 + - conditions: '{{ last_side == 5 }}' + sequence: !input 2_from_5 + - conditions: '{{ side == 3 }}' + sequence: + - alias: To side 3 from any events + choose: + - conditions: '{{ last_side == 0 }}' + sequence: !input 3_from_0 + - conditions: '{{ last_side == 1 }}' + sequence: !input 3_from_1 + - conditions: '{{ last_side == 2 }}' + sequence: !input 3_from_2 + - conditions: '{{ last_side == 4 }}' + sequence: !input 3_from_4 + - conditions: '{{ last_side == 5 }}' + sequence: !input 3_from_5 + - conditions: '{{ side == 4 }}' + sequence: + - alias: To side 4 from any events + choose: + - conditions: '{{ last_side == 0 }}' + sequence: !input 4_from_0 + - conditions: '{{ last_side == 1 }}' + sequence: !input 4_from_1 + - conditions: '{{ last_side == 2 }}' + sequence: !input 4_from_2 + - conditions: '{{ last_side == 3 }}' + sequence: !input 4_from_3 + - conditions: '{{ last_side == 5 }}' + sequence: !input 4_from_5 + - conditions: '{{ side == 5 }}' + sequence: + - alias: To side 5 from any events + choose: + - conditions: '{{ last_side == 0 }}' + sequence: !input 5_from_0 + - conditions: '{{ last_side == 1 }}' + sequence: !input 5_from_1 + - conditions: '{{ last_side == 2 }}' + sequence: !input 5_from_2 + - conditions: '{{ last_side == 3 }}' + sequence: !input 5_from_3 + - conditions: '{{ last_side == 4 }}' + sequence: !input 5_from_4 +- alias: Delay ⏱ for debounce so toggle functions work. Also blueprint is in single + mode. + delay: 00:00:01 +mode: single +max_exceeded: silent diff --git a/hass/settings/blueprints/automation/gist.githubusercontent.com/yandex_station_default_volume.yaml b/hass/settings/blueprints/automation/gist.githubusercontent.com/yandex_station_default_volume.yaml new file mode 100644 index 0000000..f8b2de8 --- /dev/null +++ b/hass/settings/blueprints/automation/gist.githubusercontent.com/yandex_station_default_volume.yaml @@ -0,0 +1,68 @@ +blueprint: + name: Громкость станции по умолчанию + description: Громкость станции по умолчанию + domain: automation + input: + yandex_station: + name: Яндекс станция + selector: + entity: + domain: + - media_player + multiple: false + number_volume: + name: Громкость по умолчанию (от 1 до 10) + selector: + number: + min: 1.0 + max: 10.0 + step: 1.0 + mode: slider + default: 4 + source_url: https://gist.githubusercontent.com/kai-zer-ru/b790de73330ac58068e12b61e7c1cd0a/raw/78113275ea0a08c43fb5cca947341991ccb503b2/yandex_station_default_volume.yaml +mode: restart +max_exceeded: silent +variables: + yandex_station: !input yandex_station + number_volume: !input number_volume + number_volume_percent: '{{ number_volume | int / 10 }}' +trigger: +- platform: state + entity_id: !input yandex_station + to: paused + for: + hours: 0 + minutes: 5 + seconds: 0 +- platform: state + entity_id: !input yandex_station + to: standby + for: + hours: 0 + minutes: 5 + seconds: 0 +- platform: state + entity_id: !input yandex_station + to: 'off' + for: + hours: 0 + minutes: 5 + seconds: 0 +conditions: +- condition: not + conditions: + - condition: state + entity_id: !input yandex_station + state: playing +action: +- if: + - condition: template + value_template: '{{ state_attr(yandex_station, "volume_level")|round(1) != number_volume_percent + }}' + then: + - action: media_player.volume_set + metadata: {} + data: + volume_level: '{{ number_volume_percent }}' + target: + entity_id: !input yandex_station diff --git a/hass/settings/blueprints/automation/gmlupatelli/unavailable_entities_notification.yaml b/hass/settings/blueprints/automation/gmlupatelli/unavailable_entities_notification.yaml new file mode 100644 index 0000000..cba4582 --- /dev/null +++ b/hass/settings/blueprints/automation/gmlupatelli/unavailable_entities_notification.yaml @@ -0,0 +1,103 @@ +blueprint: + name: Unavailable entity detection & notification + description: Regularly test all entities' status to check for unavailability. + domain: automation + source_url: https://github.com/gmlupatelli/blueprints_repo/blob/master/unavailable_entities_notification/unavailable_entities_notification.yaml + input: + time: + name: Time to test on + description: Test is run at configured time + default: '10:00:00' + selector: + time: {} + monday_enabled: + name: Monday + description: Run test on Monday + default: true + selector: + boolean: {} + tuesday_enabled: + name: Tuesday + description: Run test on Tuesday + default: true + selector: + boolean: {} + wednesday_enabled: + name: Wednesday + description: Run test on Wednesday + default: true + selector: + boolean: {} + thursday_enabled: + name: Thursday + description: Run test on Thursday + default: true + selector: + boolean: {} + friday_enabled: + name: Friday + description: Run test on Friday + default: true + selector: + boolean: {} + saturday_enabled: + name: Saturday + description: Run test on Saturday + default: true + selector: + boolean: {} + sunday_enabled: + name: Sunday + description: Run test on Sunday + default: true + selector: + boolean: {} + exclude: + name: Excluded Entities + description: Entities (e.g. smartphone) to exclude from detection. Only entities + and devices are supported, areas must be expanded! + default: {} + selector: + target: {} + actions: + name: Actions + description: Notifications or similar to be run. {{entities}} is replaced with + the names of unavailable entities. + selector: + action: {} +variables: + monday_enabled: !input monday_enabled + tuesday_enabled: !input tuesday_enabled + wednesday_enabled: !input wednesday_enabled + thursday_enabled: !input thursday_enabled + friday_enabled: !input friday_enabled + saturday_enabled: !input saturday_enabled + sunday_enabled: !input sunday_enabled + current_day: '{{ now().weekday() | int }}' + exclude: !input exclude + entities: "{% set result = namespace(includedEntities=[], excludedEntities = []) + %}\n{% if exclude.entity_id is defined %} \n {% set result.excludedEntities + = result.excludedEntities + exclude.entity_id %}\n{% endif %}\n{% if exclude.device_id + is defined %}\n {% for device_id in exclude.device_id %}\n {% set result.excludedEntities + = result.excludedEntities + device_entities(device_id) %}\n {% endfor %}\n{% + endif %}\n{% for state in states | selectattr('state', 'eq', 'unavailable') %}\n + \ {% if state.state == 'unavailable' and not state.entity_id in result.excludedEntities + %}\n {% set result.includedEntities = result.includedEntities + [state.name] + %}\n {% endif %}\n{% endfor %}\n{{\"⤵ \\n- \"}}{{result.includedEntities|join('\\n- + ')}}" +trigger: +- platform: time + at: !input time +condition: +- condition: template + value_template: "{{ \n (current_day == 0 and monday_enabled) or \n (current_day + == 1 and tuesday_enabled) or \n (current_day == 2 and wednesday_enabled) or\n + \ (current_day == 3 and thursday_enabled) or \n (current_day == 4 and friday_enabled) + or\n (current_day == 5 and saturday_enabled) or\n (current_day == 6 and sunday_enabled)\n}}" +- condition: template + value_template: '{{ entities != "⤵ \n-"}}' +action: +- choose: [] + default: !input actions +mode: single +max_exceeded: silent diff --git a/hass/settings/blueprints/automation/homeassistant/motion_light.yaml b/hass/settings/blueprints/automation/homeassistant/motion_light.yaml new file mode 100644 index 0000000..54a4a4f --- /dev/null +++ b/hass/settings/blueprints/automation/homeassistant/motion_light.yaml @@ -0,0 +1,54 @@ +blueprint: + name: Motion-activated Light + description: Turn on a light when motion is detected. + domain: automation + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml + input: + motion_entity: + name: Motion Sensor + selector: + entity: + domain: binary_sensor + device_class: motion + light_target: + name: Light + selector: + target: + entity: + domain: light + no_motion_wait: + name: Wait time + description: Time to leave the light on after last motion is detected. + default: 120 + selector: + number: + min: 0 + max: 3600 + unit_of_measurement: seconds + +# If motion is detected within the delay, +# we restart the script. +mode: restart +max_exceeded: silent + +trigger: + platform: state + entity_id: !input motion_entity + from: "off" + to: "on" + +action: + - alias: "Turn on the light" + service: light.turn_on + target: !input light_target + - alias: "Wait until there is no motion from device" + wait_for_trigger: + platform: state + entity_id: !input motion_entity + from: "on" + to: "off" + - alias: "Wait the number of seconds that has been set" + delay: !input no_motion_wait + - alias: "Turn off the light" + service: light.turn_off + target: !input light_target diff --git a/hass/settings/blueprints/automation/homeassistant/notify_leaving_zone.yaml b/hass/settings/blueprints/automation/homeassistant/notify_leaving_zone.yaml new file mode 100644 index 0000000..1dc8a0e --- /dev/null +++ b/hass/settings/blueprints/automation/homeassistant/notify_leaving_zone.yaml @@ -0,0 +1,46 @@ +blueprint: + name: Zone Notification + description: Send a notification to a device when a person leaves a specific zone. + domain: automation + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/notify_leaving_zone.yaml + input: + person_entity: + name: Person + selector: + entity: + domain: person + zone_entity: + name: Zone + selector: + entity: + domain: zone + notify_device: + name: Device to notify + description: Device needs to run the official Home Assistant app to receive notifications. + selector: + device: + integration: mobile_app + +trigger: + platform: state + entity_id: !input person_entity + +variables: + zone_entity: !input zone_entity + # This is the state of the person when it's in this zone. + zone_state: "{{ states[zone_entity].name }}" + person_entity: !input person_entity + person_name: "{{ states[person_entity].name }}" + +condition: + condition: template + # The first case handles leaving the Home zone which has a special state when zoning called 'home'. + # The second case handles leaving all other zones. + value_template: "{{ zone_entity == 'zone.home' and trigger.from_state.state == 'home' and trigger.to_state.state != 'home' or trigger.from_state.state == zone_state and trigger.to_state.state != zone_state }}" + +action: + - alias: "Notify that a person has left the zone" + domain: mobile_app + type: notify + device_id: !input notify_device + message: "{{ person_name }} has left {{ zone_state }}" diff --git a/hass/settings/blueprints/script/homeassistant/confirmable_notification.yaml b/hass/settings/blueprints/script/homeassistant/confirmable_notification.yaml new file mode 100644 index 0000000..d52e5a6 --- /dev/null +++ b/hass/settings/blueprints/script/homeassistant/confirmable_notification.yaml @@ -0,0 +1,84 @@ +blueprint: + name: Confirmable Notification + description: >- + A script that sends an actionable notification with a confirmation before + running the specified action. + domain: script + source_url: https://github.com/home-assistant/core/blob/master/homeassistant/components/script/blueprints/confirmable_notification.yaml + input: + notify_device: + name: Device to notify + description: Device needs to run the official Home Assistant app to receive notifications. + selector: + device: + integration: mobile_app + title: + name: "Title" + description: "The title of the button shown in the notification." + default: "" + selector: + text: + message: + name: "Message" + description: "The message body" + selector: + text: + confirm_text: + name: "Confirmation Text" + description: "Text to show on the confirmation button" + default: "Confirm" + selector: + text: + confirm_action: + name: "Confirmation Action" + description: "Action to run when notification is confirmed" + default: [] + selector: + action: + dismiss_text: + name: "Dismiss Text" + description: "Text to show on the dismiss button" + default: "Dismiss" + selector: + text: + dismiss_action: + name: "Dismiss Action" + description: "Action to run when notification is dismissed" + default: [] + selector: + action: + +mode: restart + +sequence: + - alias: "Set up variables" + variables: + action_confirm: "{{ 'CONFIRM_' ~ context.id }}" + action_dismiss: "{{ 'DISMISS_' ~ context.id }}" + - alias: "Send notification" + domain: mobile_app + type: notify + device_id: !input notify_device + title: !input title + message: !input message + data: + actions: + - action: "{{ action_confirm }}" + title: !input confirm_text + - action: "{{ action_dismiss }}" + title: !input dismiss_text + - alias: "Awaiting response" + wait_for_trigger: + - platform: event + event_type: mobile_app_notification_action + event_data: + action: "{{ action_confirm }}" + - platform: event + event_type: mobile_app_notification_action + event_data: + action: "{{ action_dismiss }}" + - choose: + - conditions: "{{ wait.trigger.event.data.action == action_confirm }}" + sequence: !input confirm_action + - conditions: "{{ wait.trigger.event.data.action == action_dismiss }}" + sequence: !input dismiss_action diff --git a/hass/settings/blueprints/template/homeassistant/inverted_binary_sensor.yaml b/hass/settings/blueprints/template/homeassistant/inverted_binary_sensor.yaml new file mode 100644 index 0000000..5be1840 --- /dev/null +++ b/hass/settings/blueprints/template/homeassistant/inverted_binary_sensor.yaml @@ -0,0 +1,27 @@ +blueprint: + name: Invert a binary sensor + description: Creates a binary_sensor which holds the inverted value of a reference binary_sensor + domain: template + source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/template/blueprints/inverted_binary_sensor.yaml + input: + reference_entity: + name: Binary sensor to be inverted + description: The binary_sensor which needs to have its value inverted + selector: + entity: + domain: binary_sensor +variables: + reference_entity: !input reference_entity +binary_sensor: + state: > + {% if states(reference_entity) == 'on' %} + off + {% elif states(reference_entity) == 'off' %} + on + {% else %} + {{ states(reference_entity) }} + {% endif %} + # delay_on: not_used in this example + # delay_off: not_used in this example + # auto_off: not_used in this example + availability: "{{ states(reference_entity) not in ('unknown', 'unavailable') }}" diff --git a/hass/settings/configuration.yaml b/hass/settings/configuration.yaml new file mode 100644 index 0000000..b203400 --- /dev/null +++ b/hass/settings/configuration.yaml @@ -0,0 +1,25 @@ +# Loads default set of integrations. Do not remove. +default_config: + +homeassistant: + packages: !include_dir_named packages + external_url: "https://home-fnv.yandex5.ru" + internal_url: "http://192.168.1.6:8123" + +http: + use_x_forwarded_for: true + ip_ban_enabled: true + login_attempts_threshold: 15 + trusted_proxies: + - 172.19.0.0/24 + - 172.18.0.0/24 + - 192.168.1.0/24 + +# Text to speech +tts: + - platform: google_translate + +automation: !include automations.yaml +script: !include scripts.yaml +scene: !include scenes.yaml + diff --git a/hass/settings/image/6cc087659939dc8bc6047031679fe062/512x512 b/hass/settings/image/6cc087659939dc8bc6047031679fe062/512x512 new file mode 100644 index 0000000000000000000000000000000000000000..d391ed993a9508657fbfa19aa0da0b8d7dd9723b GIT binary patch literal 22311 zcmbTdcT|(>5nhZb&009L6WXwPi zGw^pGfS2@tQUL#Kfd6bjG7vchB^5Od?G@4utxNziAP7W84x*qSCnwzAPHnw&sS2uSLPcLtupx}_uu<(e;_y-Az4<99A(lau%vY+JS;)_d431#IK zl~qm6Ev;?s9i7i#zv=5A7#tcNAF zltY}bxdcwrUKNsG7yfi<+8@jQ-x(J7|I4!f8TNnKwFIC80ZBg|h#8;>IDZaDK_5Z& z_y|R07_lOe;@*W+ZZ__a{9%>v9)S}*|(;!}q;aGPj-Nz<1l zihaj_vVYI*L+pwOYM9hc$x0Gw5B)GHxp@~Pwx?-pY23Y)e{rQG7&B>-=P%ofYX>rU|jPW!cAXbb4z{Lnfg&j$$;cBH=2`xI2g>eE`(*fSaoK5o}wIosHE@%rr;Wpw88z(S8&*RSisRp%KKIMZY@0ZExl7} zP<||?T`n*DksqbH_Mt8_ZKBfqMcT0rZxI~!p=z`lTuPONdm-0Cr0-V8vElX`YNy+U zr5PDk?zxX-24}jF-LL7EdXv5ysPUZk;10 zeG#Yf28bna#!$SVlR+jw#rxBs(A-`UM_2VogRtE=y&sZ-etGknW8>cQtx9--I{F5t-&h! z=7H&(ulN_Q>}Tsj6njPlpW^H~*hK38RzEvdpB)_>18N4_a98>?{p>SJ^p{oHX!hSm z^;ahyeQ+qQNDovwA3m?~bb0G}ca>LrT#p8q^v@5*7g4m+Z4D6@$u<2^#5&A10ParL8O&0{l>3uiw{KQo*vIXkm|Pu9`1X7YXvejqOBKQZWYiZbL< zrH%t-#P|@G1=5RHsEVp~8Wm*(;)NvYpvIanXdgtQ?E`x`zUe%b(PyBFOuRzjdYaLZ z?~>xwh})KTeoV*wo{i~EKI_+5dz)-2ZOb&k{-M>?xe^3Ae#!!E>rx%z>il|hruI6Y zR9N-e3H3&e9y8F0e(@j3?CQ;3dO?ATJ@AQGhix71*`1jD$ek9+vjH3pt;24^z7Yj} zNGWyaFfF`xT>1WJi&6+8f~x4txF>XRUgl%a0_x^)qP0c|h9IQsZfAq1rHXtH_G@PEWQngi?E8ePI3g7%A0K z>8je6Zl-k3mgy9JTS>GqvE4+D>T0qVq>tTGCTnQY=i@!r&6|x`e*QZmB0sPz8y!Xw zF6net+=IuowP;B8VgaRoWUN(^=Zu9D-^aoDhXt|m zygN``cBRegr4so@Mkp|(`xd?I+frN%U+^UA^Bv!Qo9Ea(>z^Ik6SE}_b59W+vZJbs zkz#ui3_Blm?_^p7PD;;3=bQYu2`+85q5s$#-#MPNv}0b*%?onF2P3~+3yL6K`-9Oa9uFf@&TyWlY$GOSr5D58O5(#4jGRz{4-|LrlnE^pVRh~MI z+oP0|N*^R@eZy@yxL`_3`(}#w?XOCttpp$0K2N?jl)_?i{oyx$|ETY?2Bw9|M&vF9 z0}{>nRSVe%7Hwrl^6r8l?q10B(ZdfP1FsGtjj1Q(_U$cR7t6(MV%f%h%CZ;&&0QO+ zbzZCIi;WvqO81xzLY9fj}cZZc=WmeE>k*8Mvan;XUd)A;8#uEo_t_k$LA5A0+n%}QV0iE$& z4U%?KUh|T{tIpXjh-c*HzWAOU?45&UEMjO2DB#I=MdoL=(Q2|1Ec!`g8Gt zQ^>O|t}NB3#3ETw96qvbeTd_{W?53;4Rd?S9ETFmE7W7jSA3t~+ZZPCh=(o(2hru? zrCHo&wQfeG*%~eqZTe)pY|{onnFKcPJ87vou4J_`s)7$P3_=1*wy5fqtC7zEPO>>) zjvWJ0g0Ml*l-0&ti&$D2Om(A|)3UekmCQxys2@no{y|>cuNAi_{512=Z$&4JTF!xvB6tgo@|0Bg4!` zFu_A}c;0hNgB9e|LVA<(!RtZwDmzN5*m3ki=s3k>HjH{OaS(pyo5k=@P+`L7LT1u` z*#_rm!nuvcosBkWdV2Xd@Hc6ANhr?lF8STMm!!I6KCe4!dvU{-e8-B zhC}_ZQ!Xh5r?XZ5j)O1K#%P^8P=a1ZG~FUi<}|oJ2;MV5!!cC#>_rWm@;I3Wex|iL zYRG!s$qKvE>guw`j`hTUHhZX2wK~++Je;VVX?DC&$3KD%5T6#TgnE^cArM3o-8H<- zH4OhH!fMLsq9BnM zw>PeqogOALDO<5~?1{UbaVpyv=os2ue`ou2pm{qpCx+Yc6T5HQEV2D<8~nzACC-1&oiKwaRNt)jcwQixfp}?Xn-4 zvT*mJaYyDc>|ZJ^$;9ju3-!1HluP`nxS@0&RPr;iSp1V#{neaOYS)vF z-9zh@&kW(`)pQK9%2l7SA-q{edd1hAOy$1L{?#i&aANnTVxtkdA()Dadz3p6MU-<3 znw=KWu9%dMi8Ez{m#Aqcu^*yX=q{A25T2nDuttTT%-K7}8iDy>|M%~{)Tp+|iC>S; z+6*|}cSLrx$_uzDg{W7jrX!U#Uq`0u-pYbHLfEWxMlE;XCn=g;_=LD-C5JVh%(FDf zp^yo)NbeB)d8DQUWOru1RaX9maNgsjnSQZ{w_*EXPyHJ)_hm;hasAkkr9odV=IMkH$Oc5XE9{`gisp@E3R+0D3jd=xJhNI0Qq z1^v|NaMa;#9_tI96zJN&$aypnUZ-iJWiPQ@8#)!LEFnk(ZtOXrhfk5`a->*&sdyZL zNc@KVG15w>2Vfg{^Za zB#oknFNBR4u50eqdQ-^RHa6C%BK1C%pa3Ru?#r@%Z#!AhPFXF@zu6Co`^D>#P+_56 z1R$Dw|4EojWyir5##-KD^8bT|G%4F*`V${5wD+|jcl%6WwqEq{xk7iUB;E+84G4vD zOo9$?Wqm@Pw4Qg@QOLI#ym&u*v_{ z1^xm7E+VsYeOupX9>PtBDr!yJMv%egY}elEOWdLmDtK3|_*$ARK;?dG?Nv19bm!y5 zo`gW~QOcas?OWnX&)q^QV|UekuljK865x#Ldb(+EmXdpIL51FQ4cM>%rAl4gQZ?nS z@CL{H^Bg*(ZUa!sSJ#_3t+*rUoivNn> z)Xh1OHqjc3Lc9{>*eLG(hj$_aO7A*xO=BkwLgy;KR<5-BnE*|Z71!5~*tg(eP@UZl z-zni^2txGKiY+N0+kGz6rmFRVhtZb4GmWz5=Lkb*T-E*!;M_iE>XH6OYNN~0T%}Oj zH)rm8ZqrbdjR}-})__~nvan#kakw?h{v$qpOLizMRH;Iro$3C`RCH^6;Njfh9eY=t0UWEDd2-z!rMa|I4WVbDdVKR31P} z(<4u-PmTq_7+Jn%Nrjxa-Ci4?w7B4p5=}_);K&N9qmt2pHngQG}J^I6XEu zPa7aV8d!_ZKz+ZbZwO9{II{Cjr?wcy?*|WY07Q?Ozag!85@+Y$cDr-XN~?y|vN=fF zw3t-L&DZe>+0Yf1yWGU#QeGt(m+-=qm>7eQK(6p3yQX+r?V*ha7@1R&mzD40$YJg| zMtpN6OJ|=H*5VF2f2Kthr)NtWJ}8i1q3a2;Y;Z{E=v~e~7bw*O?5bI9@Rbvn@$jSzBr-4mNJ zROKtEE2gyB?Ndb0nbV-X%ac_ir(V52_V5RT{Dg%*P^0^>v+l}zUgZ=@K>uV5x9_<2 z-CFX2B+0jssJJ=Vr8_}ziWQNQyv=Ib>&uGFbp-L>i~oisVK5yEjuK-+aH4dzCjx z>Nw7x)s339F0+f)27R}pG>l~*Qtl7UKG~4gL~YkfJ+u}}ACRW7)sF3{n7uREP+pB5 zMD5-XffULVo{QH3zEqU3iz@ZQ-DpOGE4;$4*QwBE-WehX9og+iv1*dLg|f*yK+%(; zXH~E(y#N5SsW@OgMO-+Ir=Ut(02>FSw;nMW6nFc$ds?ZJ$SyPkqNC$f>!~%%e%&d+ z5H5uI8+3SNUi~?uBubDh0xSv06C`H-2&ov$-IG@L){UQ?Vfy)f7i0Wo!o;A1byD8n zTnREo*4TS|4t}@d*;qzHDGi$}dX^K9-N;H*W#@*<4R3-IwXV%tX@tUd$sUu5T&E(( z&IX34omVWmT}cnZ)C({1=+ZHwI5`BJJiD#3^2WCAm0Hrj70UVzIG>WTPMK$~L_=k- z36v-;_iH$5lk(!EBv3gV*&s_PI>v{^xRz6?%OHTg6VOuTL6na2xXX}=97QiAP6FGh zyQ|XBTW|9Gk=jjW2gPQ;#*uyli~f+Qr@FM$#9d8n;7UqPbz5o-n?7YYn_WZC_j5ul zM&*}p#g=;B`n}giQCX5d`uz*%_W3^DvOal>@d?C@s05wYTU+9+xgUJFN-9)5`;(su zOY)Pdco>uxsc2w+8J?J3Fk)r@i&G?E$pc9KY6=MRCPlT1Z6#fVwb74?BT1AYBR5sI z$cH-lx(J)TM-C3lo$C%f(Ghi2~V=jV=(!93hCexi`4r~}tqN=Nez_f+y~vr;WrpWk#~$Qrf@s^VhK5=c8TxBW$L zs`}m9sGy%=rBa|7R*j8Du=mg!-Zi$4IF}u5Nv?^Cq#ezs2}(ccR7aZ|k{@QJ-c>iN z^&W}aiN7VpH#B|*#`(NK`{jp?yT7<5-l?SY&qgjOs>1Mg?U%L)^ zlS#sR*od0p5Q)kZqkHeVtMyE96S#M6-5h*Exs$Co7itC4!r2CUz6g=gNFJi5h65^3 z$<$@NwqRj?v!{;t4?B5Hp|v3aGHJBG0nuDfM@kqzXx#e+KDCITV;o|K9(J4)+{j;F zSWGYeqi~;VE}PGg<2c^VW#vdyf{f91s94oIYZMGx`BI5C<{nRbtISPr*wVl=M_)I? zzV->JEfidX=N@Sy3zSIzM8^k-KN}B~<^QOyF!B{gJJ>NtB;GW0eVhStt@A!ez%<3D zdkZ-v^c?ui%HTwR1JmP?R9D;8&DOgHn+u+e2B@Y;%q$SX%M)|nF6jk)6nx_bS!mc_ z;Pq)p^xF+QC(yiWvD)t_{qaPsbX>~UlJ8H!j@0B}w=jhN%h&iw@aJ%e)dTmDf-s58 zkyc`MyjCBf7(@Q2&JkEB+kLfhxjK4YRBge^_rces3^4mY`!&8@mL6ZjPpx3vtzPrC zMyy#>XLTxT%z|%HpH#5T+sjRsrmbz?cPQNGtc6Q1JhIBKw{$o&t$`cdULU&H$F-xD zB(pBqbhRIk64R{L_ZN{NSBn#Sh=9UYQ@b0%>Y7;^-ZDK^rhVz!KcNCO27>x92y>w} z8;4lw+KD=}PG{?5&GI`v$;|xIeKW)yE_z#gfnc4zF%`XIN)=>VE0j^67b2Sduo(37 z09c{NapjJ`n_y+XH@mF6d~!w*h%t-%VTG=h=hX>Q>&zduo`1hK3fYY??{Q2tosyfW zRd@j(Flk4Q0Xg>LQ2VBD zL%DNOUqRO7YR$M(u^TOw@zy+{G{&gK6EmKi1mSG;-)eV?n!l5cn|c#q1|pys3(Zg? z?P{*Ax03Vjcn0FH+QBRf842!=D{Q*sUL!`Hg7~4A?g)J`W4dfvLm3ZIP%AR)28*o| zzO$oo6O&?&OPy*mnMA9@ekUpTb+X-mCF2-S=jm zz_5>xL6FY_`ku{J`)e0{abtilH5T=@D9Cl8hVzZWd)9YFrY>@*a5(Jrhc`|9E z#DJ7n+LnXYqoo;qK}XNsd%hLR$OZE`?PUHcp8SF{+`XwRZYIzi;DIqLxY9A8wUe-w z{B^j-ww`{7;x_2K7TmGNAeVBkQWW{*s!8rYduP=$L+tL6oW<<2bC1xmZN)b;oZ1ZQ zg8Dx3HeBUS4nCYAYkZ;0d`Ck&Wp=+CmOgd*G;fqVz(#F8<%!3PbkC1nj(@4{Ff z02mAuX1uPtyU<3sM1H3|%CAX@MDLKAp2D}3^lzd!KPepYfb+(tHmIu5w}L8`#I@?E z#3Sl9ds+Nv9D}A(w{54MybRfJ>Bf9kY4G;$B(N<-#1a3+KZry;i*$&jB8oJra+h|M z#93V~xhd$ft%x8ZrevVrP%kD+GZab}=Hk&&&r`R@f8JX+qc9r&oLSs{3!N?@esJRP z)zhakUjiC8FLaBVL*qOlj6MBp7CSlJf+hOu&(x8IdI6Y+?c;lW@%Ww6k8kH5sU$1h z>tdgovTEXvamn?1^WkvNM~EwFQrFJpK&+NFsPoF9RiOiDsihDSr#kOG#!xOmAT@p+ zhPGjBledNhGsaxAZ)qLc2PIzD^B8v_YG@61vc2$&GhEh5&Sdqu;W|F4c63qK{6m3% zx(v!>Lk$Cj^?SZuYOOgGXnL}lirSZ~Yf>B`=!Ocknpx8HF6$0*dSG<1)t(iVyZBY# z{N+K}{#JbI=U2eH48^`*uRtmj^z1ExlaMmG>xvabE)eBh`&t#yGX5{#uQ}HtQ z`Y(A$d(%ayk@pgRky~ferAJ(oh*P3Jbfjp35|*eXGc!^QxexMjNni1lq2ta_?#v=0 z7ugGEZSs`C`7+(sUh=tQ74CMCchAza-fT<$R1n^Nk|9E+ZKo<{lB~+S1H`i0n=f@j zB;C9o89U(*C8x+aYE+V&1vci|3VLXF6mGx!wAvN5*Di^U>@%K8)e_I%Fw^Dd>QJ~9 zUYei2qA%ewYI-^>O0amT9Tt2d_~=<`%G1d9=hW4?jRPN79V@=2ay1fL^Wcw7h@vkt zBW8})+I?P?_ugfu?Fv6Tw!aZt8CGuShkl5l@TLq}m@ZVo#+j}5HMP7F-)@XELq(5| z_xJsCv#$TnDW}1!04+wXC`@C;-sfcpHC8CyD;&=pic63SP-T}20A`?qyj`#O1~pFk z70=6iuvD<#T)q;SGFK2N)sh#JkXx+LN`kyenKux!VaITBaZ$BYLwQeb)5mRhzRavM zc;>Dy%N6YSOAV`YwtDis9--4?JLH8y=r$Ec?IZp>&tM{*+pbkN{?egQnq({Sm+7}@ ziNWO~F*?lQkPO@5gak=F7v(NR}Joi1S{3yC-!Y89yq>j4o+BiS4-DK z9o*y0^CJk((r*7eM^B=sKHF|z*u68|t#T%sgJDKZueJ%15k#*i>BKP4^F`5VBR)af{w{kz%7He^QcyJ3cBMHV zKW>paJV`A1A+Sk>UC^IjbykLiR0W~dSif0UG6oeEPJ#jsmlAv{0Kn72ffo0K$!85+D9Z(OO$1BXp&D&)QULqofmw%hJgn?yZ$?1xD|W`?-b+R)S7y z+!dw_Y0CAs=?lKk|9bU~veCt*HXqqv;(sf0-WRDX!QZaCeLY$N->sMJVKE!1FH!oO z%9WSc=x#z}q0*RDXD_b9%%|nNVeZ!rd=#^xps`r1^kiqyN2HCR6ND$Sm?Z55d8-IL z4fdR(v#!3QZJnC)BS7h_(*JDy=taOAVueD@i00fwp1GzOi5Oc$$iI8Bnkr|g zG?)QK>S`YG*l;CM7?*0;`zcP0@vYd@E7ihk!E2jrE)r5Qm`;dzb-TI*2h6LQ&Q^(A ze4-bVF-jYR-NhtiWevakj3YMtQ4`iU2_lM$(c&xR93RCq9|kz561>Tw5WOvq`B?57 z$o1v{cKWhBg{OHH&$#vO4*F&~YzkJ?mVQ(bAK3|c;m=MM`3R-p)};t-BbXOu>|;Di`%>%kryo>W?QLuSBgV|n(4GPGtw{gxh0S3|$%>W7XOx8i_Ko7UjPZ8; z3-IYIE6R8$UQ~aRV5<*dI5(l8QcxM5`6*F=&+Z}LIxG7|I~pSmm9^;>7&9{+#A`cK zU_AM(Jz7*dEm9+=?I@!_rXKXKD@5mORVlDfT9ww#wk-_&zxCXrxbrE0vmNfGCq<2b zo;JWHG2;bIJO~nbn#K^B}B8@ssUgO2TlmL{>p4+2Vl@pOM=}spo`jkn!p+CD<$cZEJDcr|vs+l(v`5TZ;2sDtN6oaavtta{`3$A9cI6Xi$NWz1y`yJ>o z-H`~j*oU_$MEUKqF75|Y01BbEw9I%5Zca`To81?=B$le-@3brNj-!L9itzOVM|I6_V5~+q+>S{i9kQPtO|Qy)-sPw_oLRd%kJh1jXD$)R zJio)<`J?ihHesBv_<0J@TTd~Q(@E)4Vs?duHWJ97F{H8ykd*3{l1e0hdi_iYb8mY7 zN8Y8x444Ukzl=!abW*75eod8}c_zrFT(Px<0FBjsAT&P@eVkkyr>^JKb$y;dEe@YA zBluT_PY$pL*X(Z!-K$O|M9d)X@YHyYgU6O>+WSh_X=T1yuLX^}Eh%9 z`A?sOtv+Z!Jw1P|cq6}w_;w=AzWH+5;v3!<5&dv1aP+=4Qtz5m5^U0^3qoGWXD#OT zOL6a1Kt^fFNB7Z-_#Qc5}Cn@pDD2(wSaOeHQN5x%mlKQn;5cFZ5F+3;6ti% zxc6qgNRHdkX03E5eLi+-7I&gZG`&VkQ|kHcS0$$@HD%hgZQ`vgFm~kc0^hafZb59^*}U>?lY-2qqDf6{A1C&q5(ueQdlgG+Y%>tbi2qZ5 zq&+4DWtoJ_?l-BX0yH^-d$#~Moy$3$OMx&i`Ak4!&O7KpiK`Z5wPvxK?>pKqjKyC^ z4!fXTg?b!|dy|sbIhvlW40MV4 z55@a}&MJnln=17y11txThvT~PH>*A<@fH}RGx8SL@cyM`3SD)EaN5&74Pc+NG}|f~ z)X1&4L8c4DhYO#`#2=gRaR^F(Lw~bY%@m|a<=96R)BnVcBWER>fy)aO)eS)$zX4vf z{n1pnQE|R81`y`e3X?z!+s0wGVV@?SYkp(?!pWKm<{SC0Va-f%G93 z#{RToKS&TxE{OZf#H7QB8sxfSz38z?PO9BiW}h(fYjbSG(;yEq4?84-B_-T;mB83v zDl9(0v_La3lSAE`!TF3UEO$YCh3aUFZyhdN1b!~96$T#~8lf%TT^LofwP9O__*(!z zvkskICe5Kf33qGLk0MF|MDjnS%S?DDgqG198z(9n-x1oVFv`y0$^Ruj%DcMO7Jh8~ zk7c*}@e1CP?U?bfb7*rdhcTsWT{n1*$S+qd#%46HvBDc_j$@?Ox- zgUn>*7WTG)G?;eEiY4tgzG5i~Q^LhoyoCuLU&`7hzP4}6W_2@mwZu1s_P)8{fr+|< z+$Q<=%~o5?O6Tx!6^eDty-A77m94RO3G8y59&MsW|LT~*z|uZ@x~lA2tC1^0p=MA^ zd@Fl>z^9<3qNkRA4WK$7${Ly5tew&~14ICN9YSlNHhjMUD$n>F(!HRnIO(CXw9w6G zhlon57+}8?a1$h-JPYKHnx_hHN8m-Yo zw0#U&dY|1kJ9essWLaA==>{NyqFkl7KMlxTN<)|%{NKr#wI$U{ZDKvM$1IYY0G1l z^Vmx?Zzz=)0h_c+Eo9RkXT(qlg#nrsf2R7xZP*TpM}<_$I<&2bt?`IY(@jS;SdS_O zL|KvTy*!-&RNeM9UvWw~+sao}lm;O>rZqO!vLQTkNPE3J;pW&=fRC;k?5zhkw8S*7AW8kK?a(FKIjhC+9lo@Zz(jPGt#!YvsTzrMT?Echf!&? zxQPubP&oKXFOMUis7W6oAs^KkD6}Og974(jx}L01gS-!|?a7?fJ1YH!+|93b4*1Xr zp7M`^a8q*v_WZcO(%%3^6!GLBVk!HC%O|CzsAfPIIJ{X|SND2}y@FLlNQlC-!b4g+W=iOr13 z(&G)aXkgwZ!hhHr;xc6*seLR+Y9IbGJo*pFNH0?$E`rB}vi4m5Z_qzYB>PfRBpbBcindD5eQRoSv-hQIPqp^f-YVwdG&2Zi zzOveas{UR(t}y5bL6_#!;cSX@F1(*bk>#H^>Y*NF8}_{Mv3Lcly{!Gz;d4Zlr8lh4 zU7zNx>hVXD6tn_2{N6WYOoh5#BVOdye6g`)mFUka3JZEJxVm>Sz}cCtB%Qb_2KB0M z3(g+`3U9RsY>s7)|@*B9wFh0zn#na=F3U#eY8-2ceUjo}3 zHVDyHZWQFdC}8bwVygDw&KC*678$z93$*T&U7Xdw0o467F9ma-OyLilS9|Z9mehLd zU?V^E|K;tftT44%G`h9K9ewKGy0nKsTkNRX6Mki-a8A*-rkJrM}rM8IuTQ zzD+h2iU%v!hU(%qwOvAymZcf0Pw=%n6hk0UVkN)Km59pLCp+BHl~(|O>-tpp&te)@ z3=pcbg4YK_4F@?O)}^|xjwt&al6tH^49R@mT)ZlFP^r$wAi;CC@m01z5|;e03!!lZmnnid(CD%$P@GK~rO0d{$u~HP)2`^T7sp)pNXNjP z$S>=oB#>EN0?_I8)O*AHQxla*X_=pq5{J{` zlOCWK6U1+N`WYf_zb4oyST(FDms1MH_=+U6{?&IMJz!!xB#6V8fV)&Z%8}&1d_u|e zK|D`UkK!mPq5U^*SYpf{M!d$l)=DIUR~L<`2PvQ72gN8Q?3fr@rDJ)4&%>&W8FcI^ zh7fXA1Y%F-Q0EZ0ME4JJ@?B5U+%j$zg)MzhSgjSFF?d6=<-&u^>RVHQfsO=1mF@Fu z-ch!fZNnY+iYN%_YdtLyr5_)v!ULMNbd1xl-j4)PT4OA)AjWSqfA_9_{5Q)W^um|w1opiew{ z)W$%?bB5Dzd`2B;cxc>%5710tRQl+9v&Q3GrV_wQ7BDIdltL2l--_G};8G8cBK6d@z@#EvjPT_ll%&z< z(KR$ODFv9w6Y+OQ3b7Uv)yL3-0hWJAm9DY;rinZtbH=n(9!U2XXJ<1_nW$ypv*>Is zB{;%-1c&eW1|=Z`?_l5V#(7gaEvl;`-rxT)WO^S}_k_cmF7iyFXJRj#a)n2^bXP67 ztXjg8O2|BnB>VMv6z-zJlck1e^cT;$`-J@s^WZ$8&AY8&S*yaU8V}q0gxoam0nN_) z$x3OsV)3sav1zWF>lV&U6Fro+JEdx3J><;h`r71Ig}&oCwVK65!?@KC(uHzmh19mG z_es(Yj49Qvr|`P*?aC!e6YYx>Ge|0YD(Z>iR;Dxd3)pX|l*fmChq1MJvRgebd?GRw zTqDrs?-x6>Kr9mU4OW}09qGz+Vl`f(R-2U{u;K5fS~qqIK+hBIiKqV!kMjgZh*Dv+ zhCs@H=K!dll}mqAu{5X89ndIml{Gwh0K}bF!6;#-hC>qj7INsGk}+~C<4qyPT9i)5 zTCdj77V)ZZca_MuMY`nf1Bu5tYU-zQh4I8%0rqB?wpcFRJF}w7Bf-U@!27MYsE1T@ zwo}#SGvR>mQ;RjhJiP1?_v4-m*M+_L4LB6xc}?0~(j-$l_^I2kWT~fwOmwaErjV4r znjLEdBgy--|DALpMWP<4*W~~e2?L~NNNy2X+LSjmCNs0;VJ#m^o{^yzwHIk1fLxyB zJ;*FgRPbKFGQ9WM8)6Jeg+ZFWN_>_TSXQP0i5G~?N0!A(ZCTDJWXVUc-vZPgp%vfx zpR-|BPQTlbpJk}-AA&8eiL7d+X1l&us*bxW1DoJ1Dilr&q>T1S{DN^zG?syQc1!lI zie$iC0mCV(v-2~@YM$h~_&)E63j-nC3S@Trmg2SI-G)Qml(?PQJ>hI6*A>7J$FPEA z>mH7QanqJ)a*bY)Z)vi8u40(-va!6>_+v9Y51hO&kF$Gd##HkJEQOOARmqTL z*(+g{R}X_Ag%lFNqL~Ww8ks_11-4I`V}BMi5!H12%2O0F|C<3MT^Vd^BWZ;GoP9g8 zN@#`fv~i;{FUywp=O{^V@%>wr;Tumup3K>sZ$s@{9=M`aQAN4%!@%gJn?ltzFxz3Wgd=2`)ZoC3cuJ7bohQzJ0!@P0F`eOS2-9iN);77 zsXi#8brU1oWmgbmSDQD<^!@txFTavsI7dz!iDJWc3tG)bHdaas@3mJ&+1!sA!RsdA zb$j*{aLcqQxF?|aa=p5W`=G}h%prAows;^dddkRSLu z42;|`>rCAnIUbk)`RzKg@IeX8utkL3?L^PcF3j!W&;WG}W&88fFftl$CcK-CjZa^i z%*uCSqhWLS$Q7`^GM6693iSZUQxuCIv2Wf9EFF6Dnb48(mmuvK29=5mY3wDI8YWUGP zU4UcR(>^tbsr&|n-v_se9AVS9$tZ*Lsrq_!dF>tZ%cGyzvd%kdMd-O99eJkTNS=8-e~+=htkm<{l$VtVUeeGJY1h; zUwxW4qAm6Ha|fGf3a@;Hf-RCWqDAe=fDuH?1c0QZ;w7{$9Th1)k%Y^!TC`&0l8Q0h z_{$Kckshxn&4PhK0i521aek76y6p6l<}+w6Nso#Afvy%^5vlYEaK5C_cmUkHob#?F z2C((Q5FH*?)l*9={VnseM(boQs4mEH{+Wwt!s4g)^6rQhxvavdupiSfoAWyHh3<(1 zMbx#xD9h#{1tx#!fx0hO!Bw^=$_l0%Z0>?_;wM{-aNnYzK56X2!U+R35=Tn}L{MLM z6ld3U<$b$md-v1MCwpkC+`J@zz@{oVk`VXI+;rJK3_GLS0szyT!;tSJ)cjXJ7}o=qb6W zs)$%5HdCmz*WPYzzsVc6^AT1pK`nu$vzqRaiP01{)f-TME!NIM;kDcwCwG(Sj`1eG zi_?>`*{}4Weyj(Gb4u8^!*W)d<(9%Mk5wsnlg$Lvx)mb35bBjj!YExNhP3Dp^qOGvoRD1A(R728VJCL`P@-5 zC&OGeVy@_kczXc|B)S4vH@S2qWCbSR13-u{2@sck{s#ybQkoACrp!*8`d4fiMz}0u zk~FL4z$Lt?_duQ&z5LQ;rey}#<48l`)8z+65<%`*HMdC2XHC|{QNq_kL-dclG!CF`)( zZXZ@=5HHuql(ZsxMxAXD<3qAMto66RJ?=uf>=5H$8 zapuXbW?n9ol@{aaS2`LFkPh%Uu&-jE(r9((H;2O1Fxjs+1p&Atq?MDE#bD~8C1zq9 zs00Zzc8v-2?mNX`4Ah96diGD2s1JM_P6qII{H))hg&s!zt?jUr;dHl^ZB_PBm_j7m zizsuK=M5(Z6UN5>j6kU9qN@ays_CSu&ntMIPsrpD`o+K>EXmYdvI}hla%V6uESVw2 zm!2T)&)7YG5d~?+rIRF1M|>%c0h*S5DYqnzfRBS?#N<8FV@MrjN|OE<`tPJJDY(c3 z5>qnGNu(w1(iwP{S>*_=Sw66ncL?QzM5UO)GgG|RLoqtyT0WQ*+xSXyH>;9bwK{K^ zlHnIdMK7}|6#BICyzMnVK7|uNKf5L7Lew=RmTeNPDQukFlYUq! z|A~DQBPAe@rQ7l-GgrlgPJjJw+2;C`NNC^$$3;T}fP~$0AN_BUfhM{@Q=r;(7dO?0 zcUR*AL3DM038$l)w)inxT;$zMWw~GpnE@XfKRYFV8Xd9I^v{9Z`_6LqQ&j;^VYX1e zy*9GfJ)>g6L#vCB`R&@d?(r&zem?1TeKi}^@Qld~c9Z9$khGr_hkRZuVMvRi@AG@a zPtF(ae$Y(A_@9Ex0$o}2I0LG#{}Xi+itH_9^({EfK=hJo7RfJ?&Q-I4l^|#9PioOL z_A``RcSA)x6o6ClR7ikR9XR5p#}v5YffaH`T3plJJJWX2aoAByO~DkP(-5>#MF1$G zl8OLYT1qGZX=y2GfKuk0N+|$R6GbHe8KX2&Km`<1cAx;!NlQQpL7>q<1vZw9P%)-} z38$j(Zk$xX0OP$)!o*6r;B~1&;8RtUK0Er;+JWpe(+xb+XaNA`r5uWkREj7NjGKlC zu5-jXD(V)*r~*{w5A?316%?@t1bWm;DXSG3IJ=|AcC=EIa8;DxgW9YmblxY?2`26o z`G?;Fxb?1DE)FwXGlPq<=)!7oxp7yx=9Wm?VJVH>vrR_mII9YGV05I4B2>za!h*Ow zRh)LsG_SsB82|(dP%}~$=K~)~a8L&;RdEa$&q{VMcsx)?r6D|e8ZH8mdWw=hN8QCW zIUc`-NQ>-f0Z8YA%_rlUlLt7(A@o0$CL~11ieUr{;}tPh#sC2O)J&f~Sme~SQV;-C zGaUO-kK6GwM>La{{VMB zm3LXxR>R6Mo!1IUSjW>DHP=QQtC^ftr_U}_QC0H%N%l)iJwDQITuex59CzS3J_K4zBMF!BW*tBSJm3h4%EzQQKHm5F)Tx{pfM@Xn)adwG9#G*Lk{zySRJ0C;^X zMA0Ib5aGNM>QZ?voW}&#Yv7TmFv8FcFDA!G2Hz> z!hx+z1PTmbjEbuj<2BTAF!^0b&!Y;o7>6sz(vo9p#AOKWM$l?~!1dySfb{(7h^$bG zOd7N0nvK_O7Xlhw)38|Qps50aD7c7d6)A`wl*1bX(wGGllv4p{q@y%|T1qH10GXna zmVgRFK{QYSMJO4n7qd>X2;z9gf7&6xk)+**mCL1o1e4OMz3f5EYRY8Bc4TMrtjTW5 zTd}ubE?Kr0BZKStRoiVc+WFG*OKeV~0#Y{a_r*(Zp=v2^DV@B%!gW~z&esDBJt|0~ zn&s7+HjHC{N9$IXPK8(ypktHATA7;z1EoTYo4Yh~f>w$U5gGuaKJ?wp(uL0*>3dTG zd90G0p+b5b(?&mPuvIZQG!2bX$(uy*X zs*(u<83PnVazl2~RM_H}MKT6ro|M{EJo`{GY-Cb0{Ivzu^}UoPONmxB9oXWzThAPm zF3SslF>}keL-eU_A*i->6T-5g1Y{nyz-ziQY4dr}0%2p*A9UAGr+A4q1;7a$iavOx zI49g1bWQg4o(6L~Z=H`rO=j-4)>a08H}XIR=;!^{0Rc z!KDMHYD@xij%X7atB&HFio}{w*gdJ`@%5lui?z1$0H(Ji0At>h%;y}?NhgX;j>8V% zIP2+4E7@zSJY3jDn)=98y3p?08;-6t-8r6r||*Yf#s{HnaOc2Qcl zH)&^XEbK-Qefc}Ft!Yx`cY7Gssb$KyE#K;^Y7MoP8eWCFEpyW$8=2U&u6bkDr-%Yc z{b{a2cPFBX?Xk$TD$4>D836rjGV<9Y`QggHUMoUbu^uzYs!{^~0M@0ejMVV&iN(~1 zO4R;makW_VVd!hOMGF!I=r|SRSGFchNf|35oPs*nRpCDr%RGZm)W}&^gplwX*!$B? z+7T%AM{=WzkP2duM+T$^inA~)QOg?18CFGZIyXv~QHlV~v-4t${W3VAZTn*i+qnAE zSsp9TIj3h#U?@>mZ>{5&C3lJBF)(#hJm!HO;pQ@!!wi)_!fGsRnrL|B14=2VrA9Hw zVh%y4)fu&BG|Z~uN#xVU*%#KawPd(b8r=NE@CPK-jXvew5e#7z403*I%~bcfS+k?= zDW+(ceGN3DFKUo6r7{3ALHs$b3@k)F4Lbs)1zVrzN)>1V0~j>J7o}P%DK?LKU{Ix| z(&m_gib82KKn|p!0^I?rRt7w`0)Qd_lTxfi^{Li1K}uM5rE%D&aW~n(`8N*uU=Qn6 zoi1)>h3(u&4?bvR=h~*b)6(gKd5szFV*@AgB9a>fh9r$;n1wsCUz7Eyvn@4ZjkUFp z+5|B=$kDb+vvcl9?^|WZKq@7MHDc=;hCNsgY51Zl!6|bH#FNRU8hNHU0ZBavTB1m< z3v5+U%bX8-B(agL<3y8d2^E<84%Ho(opo{NNgD{0{aHK@s2%>br;1h`>^Er6am_mv zpi<(QBM7FEQW|4%KoOdus%lW_mQOs5fTMxj)r-5R?Ok zm~T_ER5=83TRL{PGJvxXCcpwl`?&W5`PL#x4-PPDW!-_bhDWV1vDNC*T3$mHw5T0s z`;MohR~L6^Y~%=7p1np0_BE>w(?)=gUO+glM;4mYK3uy}d|_no_|{b*r|MlgoSug$ zp2v!l13AwErM$48Pq;BmIQ|wL7*hZQax0CdotfC0YUpsm$Q;y)IKb;oR0EzV<0A); zr8F@JAaPD!0N~_PhH=g*I0wBj6XiV6+yF2$=}I<(>S<40Qvr*Ra%txWAR0_C>S!4B z{AmEV095wYuXQ@b807UngVv!ySnW_rJPPO`h-tQ)ahr(;C(^E+K6m70R;MEK5?La$ zgjzwJqwkT`kG)Xx%dhEU-wfhoJ_%@>uc+BQ+JImzrF@ZH%}C<)dzf zgxV#=Gt>n-xs5Ny*7qf0yi;#6$Qdd7Q9fz$a<~4iS3~Q2)%Hey1)PIdc_p%FFut1eYRE~st)23)Jl9?ZDhXASL z+NjI@w|9l|O%Bm>l(R#I%}gksjHzZKFs37y0)S-*sSH8^D>D}p^mWy5N*$k7B< zW#j^zfgaT?w=WLSy%dh2urv5(sxoO_M9!RBvx#K= zcDG8*i6W@zU2&hKH8kCbl^I2IbQwSd^r+r=qR#gj9jXy{W^J)EAYYi_56$h9R^*6K zWz~e9qzaW`jCJJKDF&$}-R$3GX(W|S3b4bd{{VE>)|WKQWLaa8d;IFa{$`8ZPBt|G z3(!zpnrP;hfEJRLiU27wPQ^E&pajJjr%^x*H3Y~e#lH7LAU`s76=tN3c+CJqX=s*k z`DoHUPD@C|iK_yG){0^licHZ!2;C~Z&BS)`myv(~cc^s@O5VZ}^2n+OsjocNHJhz& zR*Evw+Jni@FaH46scfXKFNig{HM^5*YRBxW!?6A@{CpE^7tC1DwC#4JtAdZzjz(EFuTm!{Y3zha@an_rh5-P(k zdBDX+$`3(IX_0}?Cp4jXz#LPs6c1W@oyUqyWvwhIybj|#Mn~4KO7ASBjFM`Nt;AMy z@0nSnBWq)|bT%JjzC!lWh6AX_BD&}`%WkI*AwFyLD92?Z^5<&Rxb0(zU@zlW%o{!G zliomFqR0sYJb#~R+~+y(5hC0&L9@)-H*DREp4`?HmNyW>2yKk)0FEvKj`=(mEMQ>zNi$#(vw<2HN9#r@G z8rrwAJAPIR=v$hS+fKf9RFiJw^AcDO!nEeJiVIKpm;{h#jfik4ic4fFlbqV-cl0Rv z(%XLS@-;CYJlMw{i0x1Z`#zsCo?a4FJLf-krB5m*+i!6xjgR`dV`2dIIO4QE&VhbZ zTyfA-j=M5vXl{&!ws@_g6UYpNa!KlGh7!GvPc%Y1&pzfkt{5NPgiNY`_3G>;ZX?`c zboOzBR~OKVk^4q0uq=y*P(?{&d#Gt_KFc|1{{ZKdoR7oOwO-8|wkouiOgUafI~m;A zvhjVqgeBxp1fIQD^R9v$h;9>nQY)$Mr!~Ml7|3O);S*Xu>sekF{{Uq0e+p@`c~R)} z<{26Fu1?Fu^F@Tci*Ww{o{9by(OT*j_edHk0SC1-$#H0L7$j6vE3{`}0lgcc_Nm_) z%||RT&YNUV%jjr(4ld7A3S!X1EKZLKIOPv2r`1nt!?^J|vecGV`Pf_RWzPZg!TMKI zHINP>x3%4o%e$SU@Xs}id*Ic&x@BFfACym-(3vyo>0Ig(Ozf3N^53b0CyXxPB-+O1 zoaRf1P0ZfFbOO4)Cs>EXR%gg|hEzLc+@pCO)s~ti=Z9JuV7PB3{#gg#M1OJp)B0CM zX#{Lm?n^k}yT;Zk2lE|8YisDvXDd6QCx%9jSVESGRd$2UeQHZ9MNB>&51?a%_*KQ` zp0s;4dxNbmUQ?C7lIHtH7nV?@{!@_9GUQ03gZR~HG-&U%VR@u2#51!ih#pcENIZ-h z>9p$@^y?(HjhU5m^EXmz&=poC%Tly<@%f2x@Ww7SfX)Tu;QVW-Z+_~P3#8? zoMw%MyC%juQiGb$kX&4wY2qyrMkYv@<8bt>>AXecYDpZin4{X>YOu*tIUJ6lid@U7 zUd_D`(NS3t_=?HwV!5Am0#?E!a?SV()dUp{+ZpDmJCkO&9Z1xH)VAHjb~B9gigDyn zA)`5`)I^YJ;qoW}Sp1}lj>>nQHfK<{I28Af&Qh5m9=NGhL~*JPfM8PA*-lWANCKx~Q~1)~vCI9V(MVQL$3dN!+4jmeqF0x0CXg>GU`&3-Xj|WhEvEj zUP#r{s}2oAYjD<+eV%6d58Pw?sVy09&NjBC`@2Xy!{s){>QMAQN~Tw~F^XM5^!s&d z+lyT%o>DZlg2^m3@Uf zaUV*Jp9X-`CG-P6g0!^wB-5A9kNsnE!_<0IdS#Q$!s0=IKIs0nV^O}3PIyvS+slyc z^E)Z+n&_n-Rm~#_w>RwKZb^EE$lL-#>@Cwct}5DNcc{qAj5l4UjGn*O^R9|1B>v2o z$qLf0c82JFwUwe-d1~^qDzmX94nVG#smi_Eiy@TV`7li+pY+WTVScP?9!*%tgox%03C_kkxEtlGCzWiEAPANX>qRk*iXsclw7 zA1sOo&V+R!_pL}FiC{&9lO8fMN&a-?xQVV>-2p74b6{{P$|&@zgnE%uZrrx9mvsf* z%>Mvqj2K`8FDUBX!kKk$me9cpDOlaY5)UIi^YyL3qM^99ON0pd7+}DUQA3XHZYb5& zC$c%yWMjJWo>zi)`;rb;U#Rt~u-QxH;&P?))dm5rhKU~=lpGw4j+DCv5siX%d6vdI zS++Q+n%+h2TZSNMrWG}2cQ6_wkC|$_+D6BLis@R}Sahfw!B1)|7de@28Aex;R&0J; z4pi2xnt8{|RfG*2{LA>#u-h-f^5iD}0G6~@m8|GjfI+MA9ExO;3OZ3uGzdpNwH_(W SO#*?B9Vz0NI#Yq5NB`M+;;6U) literal 0 HcmV?d00001 diff --git a/hass/settings/image/6cc087659939dc8bc6047031679fe062/original b/hass/settings/image/6cc087659939dc8bc6047031679fe062/original new file mode 100644 index 0000000000000000000000000000000000000000..45b4fd654e1b903eed4970c1d446401aa7bbe73f GIT binary patch literal 116343 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�IXrVOEhWIp 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 D!<@C; literal 0 HcmV?d00001 diff --git a/hass/settings/image/ec890142459e316df6628907e28c0986/512x512 b/hass/settings/image/ec890142459e316df6628907e28c0986/512x512 new file mode 100644 index 0000000000000000000000000000000000000000..8a56584f10703fe498a7b5c9ece25f006e675490 GIT binary patch literal 25481 zcmbTdcT^K^)CL%8=tvci9(q9O5FiL5y@y_<_udJDbTmSM(0lI$q;~}cLPsF3T&!H;|DTt?g8&*5d;mUx0FN7hPlHE5gZFnB zz=69?BE0_=!2d3I_ymMR#6S{KGIHDr9d`iucmxFagakxHgoL=WBXP$8gfv97Tw=<^ zbcXgoZhw05nDjCd(4&?i2H4zZ9tnqlSW+^^yG+b1ynOrufbE@=%@`kGP07F#~PBJY^E!?3B+?KYc z4n9IfEvg;R4s*$lCL^nlEA6hcW3AyAE{t*Na9 z^bn{jC7z#C&d!ZR2ud6)k^j3$?R+f(Kn1;l0H7Qp zfG45KR6$Q6D4~rI(|81%H`F1j#962H@1AH`>bw`lZ7GS+8|oskM9}<{3dvfKta}36rW`Bxk^?Vq8Av^%p60o!z|9 zHvCF+T;wh0k-5MmYotfx^4w!`*O;yTb(3$%mKLiZ;0I=@@h4$#FTWsTzp zE$X_{oGp=8ZJUQWJsj`SGrpNggnuE)S@*q{a6>@2Tu7;*p{<}@yq}-BwNEfAu~apo z(_|cs`ZjuL>M*vhe_L4cr$d~BUMAO4X(GaVk0T+F`?Iu+0B9|aGmZTj!EZt95cM*P zuxe5|cUQB&0N*lnt=Cp-I7E8E6Lc%(`^5YEo8`jBdj_?`1w$Ga-n}l^5Rb$ zy{&^#5E%LG1dN%A2@@yy9$Xu`2=WYstuh9j~8pM&Qo5bj)qT zOgjhDpDXXvdg_bXKUrI=TO+~j`_6XnIGa_>nE6ypMfP3?YTumd7$ssnG8i7wW@j)R zD@o$;4qLzz6m%D)_%}(&1O+6AaZd@rOK+%wkHe`L4$exvyf|>MVL-;Badru%}?nXq{lC3@V90~o3al-etEBb2eJqtO(H`Bvn}qbjLN(n8bV!#c`# z)%`R8R37FtXoGqt%&z81ZnRw1uIBDcvsWHB{ue-YAoYRi61I`WCWA!(VR&nM(z?O8 znf(iHdcW%WMR`(S%~HQRm=Q_LrEksZ(%rCW8J0vCM}GKgko^(<+eL!8P0(96~Bo-J^mr?mkmt0xJCe`JHWTYHU=W zZftL|x%dxFM&XDy{MM$sT|hQf5ul5%g^Q^GyjSQOewR#&$a-pU`f7Tn2gOq?V~2Ti~mC(ZxdD ztvn+SE%7mJZi+&!OPSnVIex$m$K_)ivThLi=_%1vr%{p`$bI4!6g>Y_Vz10^+`CqM z|1O1n8qJ#Z>7>@Bc#;ePT8OAW(Us ztrRC)3X|EC+&J5lqzLgJQBgPs3J?0v=RpURqt*Nif0%JKhrJMfLK3Q_K5?(Br!KQG zF>CV2Ocz_Db6(G+m5}fw?9IfLN;z! zR#hLj+MJWRK;dNRb~;1>fD?7J8EVJw-W{K3_Pr5^L=KX0f+lS{hMAtxciLw40`&~Yqy1B1kXo;HL<;TqT>tSCf77#1ucjEHd_hU9Q@in&> z88bK@OwI;`*S~aXf3(gGqpvUi3wZFbNIh+kmEuR7DI>e~`9v|`rmQ^ej&#4{J5hk=`Md&f;2mtOI|I5pJQRJfX15h=iH!`weVW)`qg;UDA(RV_FpFI!5sv|-P z*{Kg~UvB%}6=@^CS4WLHA~FA*^h>CMuiZ%tnrc2RqDmh#2&&Sx%6p-y{V)3Bq9QJk z$J4`H5X5Z9f^OBExJX%wpCQ?vNrCfc0)T&^Dj0`Xe8zvi3daZVDDgAr$#4OS%+l_E zBX}C=RyN|18$im|)sWc{DW9L7i-)`!4XYR-ttms&^5p&=2EMsX?a--ml5CO~-r`2Q zrSqlXa0AH#&wrM{FMq2Wp>`@!7NqBz3i&=2b$7#g@?ld^?yR>`Nr%iYC0HpAl1i_e zBAw2sQHK1?-6EjRajAb^)#e|^4BH7IqmAjTcdXp+ML0AJ+Xg(52eJM3G=9-j1H2&q z>^JCd`KP5mprvw&PCqq)S0DrH*Yd2P_?3wVDmz!pkj85@ zaIZKC)GwSPL7OmvNqD@Mar-Zzcu~ZT|V{Ty73$OTL$Umb7d ziz)|!6tj2&nl_shjebPH@bfl^CDK=n%H6pmKk9ea-S@VXy)EOVRyj7_Evz{6AG^>S zgujXDx0^B2@5`i{zw5aCJHxhsbz(2>FJP&;K;+2SpZh@H_RYkA=g@0G8@=^U3tc~S z98VfME}XOc zUvDZN8W2yRGoxS}>Yo|XLzI9-$BG^)!R(GV0qgp{TIM| zBYFDbX%<^i?@wy2Sv%*nE>(v5$DI}l%-HrM(ql`}QL+YlJoQbjSdvht+ppFM*Ojja z?r<5)1}>}^tZ?~Wm;kd$?#shXeP@n%HE*FpVq7A(YLO9(wV6GWP9^XN!1H^Ybl=DZ zC}OC2W4>BrzkU|PY#1R2Jl=ss*J?Q76l8gt^yRD6YYeTVvpr0;Hj8bSQCvL@4fb42 zN5w03d-JWN&VknqC30$r0}fdGfkwc*>(}34PV#%#PRWt6Pb3arkYe9 z=y!_B%#d@k(yjjmpslE>OcLi!24xwld}~T=`lx_#F?+R-TtYt+faxgJegn>Eoqp zK~g}Br68Zfo}($LCbR6uLqk&%Gs+=g_jO~RD`xB)e|>&y4h0jzY<0v>BcApyYFcsW zdz7Pa8Xc5uHC~#~QLW@hhZL=N1Z|I31SJD&9CE8wbRNH-ICX7HW68wm$vJx}E2C2lKhapt{Nu;#*qW^&Z z&$|m$NM=S;{v)TnxLtQ(^RV~$^9F)$cmkz!N<*wO7pC+KbcK$55-p)6?`5hC>)o4Zp5&i`h%b` z7_|JSRra?WNffc_%0}6+`+CHA(t{bPPEgu}G|vf% z*saqf`Q9paT{G=44=H%gz;nD_e!bvDhEfvCy-G-1LI7Uc2#;LGmza1)gy|^NMbd2lKB?} z;N&Eu^i-{zW+KnI4=XPPKhUQ36))~f?>7@FZeiFSvV07R=xpuRG>Dd+mCQJB^!RuS zcGu=xV)9?AneA{q4lO^Qfb2OxK&qoXD$B5bes%7Fd13hn&UH1r%;@gY1r@ytO4T>c_`s;9QBi8v7nP` z7v~LvZ>7wOnXZm4xtSeS6^@s9_k*WBW)d7|%4U^>UgvljvY4{I8ue7>Muig(kNX^T zxI)a=XnIV^jd+SJ1CbqA_g=jb3NSkj zhe@&{8o#z6JzSQ)K;vuOw@QWggpd7~ODtWp1DDbI?Qo;$y{z&<<%6qb$v!1kL;*Xt zNL|a6*>E9w(bYPn;apvLso@oco`*2hTc)D=!uN6rGk}t3&O2ih}zcC?p7L&arWPno;aGPwCDVZK_qM96VnN|(tB?5YIT~!WJ1@o&MysiCWs`)EGVSTk_FgsqZcw~<_#+8x?`KFai1eFJv*NiKuibk~iQ(X!RtM$r?S!!xXCCXVJON#>nr7dHq#%vKDDxi=v!Nx z^4e$q4#9{eZ-)2SsUC(tdLQ<+p@o}WFmKi}1N5bO;S~ufTZ(Kl z^15F3RQWVN0mk6JV0X4xxEo|}1SvZTF(U>*rLh$wRjy^#@krgc3_ME0T+|I-l{3@3^=2tpp) z(=f?rz-snLl)t>7n`Y#G;5x!igg*0M;5Wd>Au<|=zFbmOUi#?be{|Zd9F>Mka~d%j zDp$^S0OWE%0r`rs!S%P46KZlTXBxzPff+ZAx&hbqzl$`t_Cze(#$F8%C#S!M=kEtw zl{ZK>Mm_6=Dr2N*oq7DCxVy!whgQ6Qc|Pw?OM~x|eGFdD$=)yHObc&<-F*HDIh}T9 z2=Tgp?APS%03kqVCn@^K^Iu8v)<5k_is~?Rpg)AGE(oqVVY zzLT06+@#g?=`^}l#KjB&N`ZRR9uJNf^rXgm+8Q(QGdyzI-m4;UJ8HJ4 zN|HUc9=PTem;P1VcQ5z5mnp+FXQJ)mf}W|9t_^F`DALPY_JmTK+3f?H@)3@4>-MI^ za0c5dSMwx4YAxhAwRygSYAGFZiY_iqZmzAfe)Ff}>RuC%S2jBaSK=ILx zC;v(+W2>bpyNBwTi41ReuYHh^?vH`6dCCH65(#BM?|&M9kzN(mSP5sKr1<)P+QT!r zdenG-j}Y$A8)hD^!uHcFC+z+&!Z7QYmZ8z`5x7+UNI6xK-!Uf8N_mrM+#+8iY^Vln zAET2WfKr!oLgK_)Gz^xng)0)c3j$#OlWSF?n^UDH5vVH1)eBf27KxHQ^4HdUJC9eD z`WXrJXh**~=kbC5CNg)>SH5nX9H&6_CUJ@4acAHUoUO412msoB~y*#8Dm#0-D z;V`m^suR_A2PkoyOh#n9H_Q8m+OM^8K0~SZG`dW4A{|1+buP0{XFT!GZ5B{~nUj@b zRr4?D%N_PJf&L%m=J5BeUrbnu0qkPs0*%cH7MlG{-#K6lzaYxGvuEH}rY~F$ljCFk zhorjiJ#7No(VI#m$%$rl4m%w<<+~nPF^$+icu_Fq=5_4vAT|;d@~c_uWpx<|aL?+! zU&n~ZOsi7Q&khgSS3vr70WwOxq(Vo8DZ@xg_+caA4AdPVag4~9NDdG}F<{i02}*yM zBNCrmBxv=?K=qwU>Z0r3)=} z$r_}4{9#eF-Y-~|Ec0&0y5#axil|I;py(KP`P1tf-|vxvJu`mF6`7%2>AGe^n=@jj zngoebbmJ_SdSDrv>c{H7mX3b@n!LkKpWi8Fk=vB<(8|{Ovkj+Fu!9x-k!nJF8XRxf z>I;95@FCQo?}x@Ajq(S7xE7>(g2$y^hKR?T3{$yWd#A}TK|K{HQKB57wP>qvlcP!} za;C~&uMYd{&XID6dEvL~PVbze17WXKXp4GTURb%CLY487I<#+{ozGSl^KwKEs2SlX zi0vqP^kn>->qdmB6Gxw2#TzLfMsB@L4@(vqN$myKI(6}q^yk2>foD2-Hlt$5#htG| zyXs@14Oj(!_vP(HPpsd~8De(UNm6{VcMG_rDjsmoi%T3s~gDJkjcMeus?2<&TbXjOxLT^{GX_THA!i;JBMv%$` zupRhOD7hCsrF4+y*rcxIJhZk#cr(UOz~i+ZhYDrQCp!?(6Mc_6By!`4+3L{Z}h9WixtjkllZ{S9Gwq@5>nAgsI+*^-}hFV%3_ zK91d!?;xNCzhld!=lQE&4bnSdKd@Ey8%ND_C~#3>c%UOIJGgGZR>Jz=ha*25xHp?0+?3Cyo{4JT(S`bJ$(aCf1+Yv& z=0ElJpJ#^|5MIOPG>EE8PPKKRg3+J8RuRz0W=Dgb<;8wIaYq%>d?XSoDUh-~_)N-A zAX_HFfvi<5rnpS1KiCy~ zX%+t{jIY~b1MF0UQCQaBbzh&oQ~?;Z=+>#J2S2J}h;XCV-UNsnKfB z7d?z)fxd;Kt2dyU_r|I2G7ft1qd3bKT}(5&6zT)=S&nRtt7-=@C{EXP2177WrAwoJ za$gKPnb>2Ib}cFsK1p3#E%XX@e-ztOnNBrYw|8^IOeHyCjU-U{rA(u=?lbeb$ywq? zbul2CZ)CztU1kr~7@t3-8MxI5E<8ftWqA3=2ao@<)+uu@4l|%~So{I~=<+Jx`vtdI z4&nA`CAfBz>q=6CJD_%Agfw~MSFqLAxSh;Hn5#+AQ; zE{jG}C6zinh7U-8m;r^9?|0|Xf-NRi#`QYrlbd9yln*=j@LqqOcAX@nGI4XV9EI*b z6MUEw2uD1v?)_OiWD9rbDKb=hcLLVZhY6u6WLN6gN87u+m=)@_m+Tbm;D_kA-npLr zKpWwG)#vMzTo&Ck60kcAmn0ZM#{rY%eY@fkw9Xp^FW{EZ!dhkdU_ksCA((o!D=1q$ zysnQG_!q!(w8vXM$Rj!fHq+?_%gX+I2mEgQ3TpJWs{l>m6%atZ+|snQ`Xrz+tmpF(8EQKP<{Mz(F&KvCM{>zogCPW+f}JI&Lw^At zH5!j&W{A(JcXZlyyGUv{;3Z1#8)v+P7I=kEJ9t}(Q`GQ4Xr4Wq`nY8R29G&q9#`4j z9(D{&(tGB;bWEz&0A2braouS55N1c~iUeDnTkCRsw|}sLXSboV=8n8sP|C*&saflj z=z~KCE+F2s0o~3VqeZ97Ph6Ld1bIv*qXp@7wWUGibqWcYJZ@&S>0b=TgCRdNEK2M) zmWxgv$UV_X+*wguaRD-8EVUEzyhgB^p$t7~%>`T&M}Pz%L1Cbk&|T56#87eDCu&h{ z?|%#0zoGEkZZL!HBn&L_XA|`Va^JtE3ZV3yrdXOGnsV0oBPv^)#n&N~;LPvn%sZ=< z=L9OupJ-3pw>yYnSyY{fLyS}e?9*keH9!7-*ji4c-{EOd{mYnkd}zY83fApcdS%78 znI-3BdcQQDmZW-w(Ph$q+8E^#)G#hve<^6PiKs;M&@an}Lxr-Py1mZVN@h?yFZ`I; z;SbOr$6M?@uT9*oCZ1nDxQ$qqxy=k%-Tj7Z_6KO7`@$9zvL`$OVR;4i4=Y==+X{Ugw@ zOx>#0w=SJ-7&|9=1Fnk?v_7Ly47gO4a)o*7(7XEfMFo%OQ4ND67Pe^av@D2}Z6L zM0%tnR$Wi->oKujbJwbJ@`#-#bHMwkRge`m^JSUHQ>|d>xp>0YJIQdG*%R>l_B_*w z;BgMoLB*Q`OOeUvt3b*{{}b?BzkERJT5CXm(i5*m*?YJUqO$2jjM-CU*Uk2?)%!)ZCQ`SNZpb|FL5e~@XL(Z&GU|qAq;`!@2 zd1qw6Gd%O@0#y%3>oM|9YW$WX&I-nDy7_ijF9PI%#8T_wkRRzF-*fIf)+4{wj{x>X z65p-no)HadQ|J$4k8Zb>A4d#z#PP4Pbl>5Gr*Ye)ZFL0H(_bW02kPg+B;08Oas<4p z)mbwUKk>Z1$Dw) z#;-wWU$PWtY-Kg_-tZ6BA5nGp4-}0XE$+2U+qE0rp{WYU8-r~STsPbHWP`^T@1?bJ zecF@#<&p9_sZs@`!TloDdzCW+vAhQ2u)kjs#p)KIggT)UG;v;KKi}(VsxY#0KT0HJ ze;|@e%-ix8a8eJ`^<{XixUz0`&%o~?m&wCW3BfzRYU(7b%*yXGg+{s4s}6KjU6oJX zd3SdCj!~g_*nh+`GIz8xwHI#u(%l2kDcP6p%Y02Hjc?a`Gs)uW+m8k&igpa|kJGjV zrCxZ`F#?;Vu;!!0@4-?Hq>NjjgX^XU!H}I!0IRzo z*)!9pul?YN+|j4~`2L0O^K=UrD@9)nb!)-``PhoY>tC-N;YMGJH=K=r#KnJbMDV3r zM`LVtwn-?a&ut}9C)EJ#HeKpxWLcodGw=ONwNjGog!f6_z4yz=t#1KeM_rH+nus5{DeQS)&;p;h7_!3;Ku4Z zdjlb6npsj49u2+H>{*pEe3linP4tb8&|^oQ0FRB%Y2i=AVN!I1jzk(i%)Dn5&AOL( zLrUPU29*D>9+p~Xt--NN`yA=rw`DOt>`wrQHy&DDZ=`bbG@mP^TFxh5m>d;n6$pHo zuO#=&lbzMN2$FxZai4nnUZ&y+q*Yi-TKFmK_(K0gFpm}CH%`E61o*>sU1Ma% zEO}ywt8o0QgwH9_%?JJKE)=_Zwa}vLg#r!$2x4ZJ8uT!}>>cus6#AbRLxxLaAfs;h zsx-wHh%dz7}Zhvc(g5LSZJGyNNxCOMH97T(+b7AIt8OU=L8GE7JM^> z-@C$6d9AoR&+W{Yh}i;2n*#Ot&r;aKLHNC-Oj979G>Nh6#+nK_y9?S`)tAW`B}={D z;tJs!&k_Qyv7qVh6u^&2F#44N1RBOLEn)u2qdXB{lz#_KhGHNz8HjFXAaRlWI+UbU zzSQ?DvG;Dgm|};;SzURCX#Q$0O?&?HwXY(nHI|#6PvDH>@VzhfI!%r&_ryy2Q1Zo| zdgMk(wMc!mt+oMBhvK@y9iUujVnZWnU7KBI?D`k5tW)SCue96z1_X$bg6ZdcX{qHas5J!^kcHf4-^W zY%?642m1{xj}np7-X81bOidZO0XDNK_!PbVlii+Smmb%uy#S8kRS0hmfFKj&rMzYQg#FG_t>cu#(bN* z`{OM&akl->(yc;R&4u)F?vr&`9+Ob%nk8y1I=5t2iSiW^-By z2U?p&S|rBw=3KF3;kb*Ul6KJh=}nU<;|B4CKMR1B)xd! zj{!g?GzojZ)BJo8Qxz`uGXK}Bs|6^I(agtD?uFa7W4-A|7el4QTH8g%{prR>-C&=P zE6|_J%bop@SvFDm-yV&nPd9FUyNl(n^@y!hx=(6_&_tmUJ2|W4d`p2OLiE9by9#7>D)5^rMJ1_xM)Fd}r@mZHPN61} zMvDSw*$Z)L$kBd|PzGFpU)Lpp=5ym% zu{+|VXS%dw$toF0UG-PAvJLX#qr^m_H3}@HOm`@Z2Y>ZLZ@)7K;jC#Gw>UnIDgK-s}A%OJnS{+yY$hdOyUor_P12c(`0Kz zUkb22i54<1K)uc~(o36Ue{w;CdDWmf+!*=As)E+TP;)*TSDeJP<7>E;r_tg%@d1(< zNFsx5>m4A^4Sv(aHyF_9*y2^Jwq~@pG@z2;?NP{10s;TRvB881)5OZ#t8d1azc-Wp zn6Av%M&|C&D}}_MRQWz7CX+Y3b;|ed&+B5nR`3HO7tgiFvj<&xk>K(-fxdJU$@I+3 zGrE4aS2+dfz^N^gI^h@{m;_!ql~}Gax8zR7=o?-+w$LLgTWSEtCDukXcKmsqw(H@TDxbA9I~@xD z_aTjAj^>{h3wQQ^eO){iOfUK=6!a&naJp`lO$tFou+A`NsYuUqU@SBI!AMdmvecaXyfEb$9cJ!eaNG%{ zR$MCF#SiK}^tDNk2v;`6NY01xvkCU~!Lfll_1$dlD>SC(k4Nr?{!g zXi_@X8NaFP9t-V$>WJ|CeeREVnhWH?(!OD$9~F1SgD*1YrY}{eUkYWmvTX_yA-brC znx4UYRJ~_5SeJ+now_j|^I#Z{^?k+#PZ_3d6YcI_1rJ1nP3k&*NRkV(GUL*3{by8- zmV6#t8ttLX2u{uH)hye8u=Xz;3aqee)0Lpb`QFi;j!2}W*C~jIS>5*xL>+v1J?L7c z?|YduHtSnuVyhN$h*sM{=EvH9Q@$T)6321;1PhmASd1UiO2IyMga~$GD@CIg*W|{ zc<|>io;8j?!t8+2YEX<({%Y1B{~-V`4GPX&I&gIqpa7-7ug9fm;S6juPfYu-xE%`x z_7tmoAXVR2-%ujf8?9 z^Qqr|(n$>yA|89+x>>C~9?7X#OR7y>nzSdT!KSpZI zT_RWD$(@qX>lw9BRrJ&ICavd=8`8Ovmv!n_?T!mGQS z=iSsomnthYym-k@<0yZoFAwePmit-FQ{pE~mXFNYKwn8$x5?5BdtO>Xz)8{4JGRjyJH9tmt_P4ztAXio)s-bvYHX{!Q<^7RZ^qKP9lf!Tp>HoB zzBwF6nPK9`+is_hb{Y7Rk&OMaDKye0#n__9J1J;B3gJX-baZdu-P>vvF5UEMlzTO8 zh0qs18?R~OJxM8xB_=tn2m$Pty;x1$TT0CFWzd-!JS&+gbKNh_l*~IeZ1aQcmbJV9 zQxGiGkF6*eqcl2f)~~KBVW9M{vDEM?uq*#sb?(tty_S0=5%UV`PgAWwmsjgjW#Iy3 zqdi{-7;m2wYqNWrH{^|1^{kplqDXxBy8*eS>FF9XR_>Tn+hFvQ#y{31VTL__1`>i; zGB&HqG60X~AcUg)H8p$ILiw)I8<|*1{Dx_9RKT0isl_W zk16f+-}CyVBl_LH--m7gkuua1#rq_L1s(j-)fT*4;T2di+E`{=T#;YJJVC8&TF#ST z9n4(ooNwBkcIN?)ztx&k4W8!r!0Ev3d2hckLd0sKN$eR3VI2sxgrbu}-?v*!Gtgsl zWY1c)P{azroe)=hf?eI}dXHr7R!^$?tRTtHoiS`tS?$cp>Agt@^gD)DMRS5PVRd~= ziT3~d$`t@zQhHlWt8tWYQ%S+|J$3UF)Sc&P9Y$G+{^G#+=+)V&!P7LW$#+#meG6ZPZTUn8mBoLRYp^M}v&1$IpL# zqMmNQ`O1*GD>}EX%G$`tH2Ubl_rr3ly9{+h9^${M%vhJ`htGin?l!H7rsI(D5vPff z-28D+KqI=R<-%}msI{V6@Yf~g*d+7dYF%OJ1#>6i*^|<0uJ7z<|n$WZAA8d*|yN1+RM8{{21tQXhsrM6jD#G9>A zPi!7@-f9$>Nd1ClaOGMEKlPgR@wcDD|M>+H9;nol$D=%*66 zf{G!UyAkewdLC)!s7L0X-M^IDuJV;`PMhliZQZ3QYHH2ZgE^*`Th76meGC1shAOCf zj*y;RnddJ-^R4{PMIje@!rU_+jGiX<2qbNbmKvMN))h=qRx!z(Lz1^G&u>!nB2`V! z-KrdUFQT8k`4(J%K{@r&x=od%2_p4|D4q*f!sKt(ve?Db;B?4ur7Lh1WN0k*0ZB-} zFVHW+_wt-gGS6(kpLp!kG@VTlxv%k=(+YSKtx2NiV7vs$6h^$MlzkmgO+sU2Uy@XT zO9TbdyJCH*_(=!}q`oQS%UW&0ao(xJ<*kznt6sMW$3zHP$1vcJDuN13;LX)k6?)dGpsM9@kDDu{c3 zYx%SEWy>4Wdd9hv_tA~>OD$>!%eGLLt-7Jzp5ir5hM8}@0IoXm*D%?ilQfx^WJZE5 z7xN!dMqO@%i|hYs<6#{9SvXooN>oPp%+`z+tAL7cyk69_RT@lm``z+d989qhCvVC*5V$7e$#|8u%97#&-7kh|o9HLnGgpF@@ z)86QLKzHgI&6?q*9Fipu*gP^*Q_+eR5++5Xiix>AJm||pQ=50&EPaywtRamN-=kGd zbv^h3qqurUUQb;f;a*o25cfy))mw+(x&npz$?9l-tzOu)n5q|;S}#bl{5iP(_NiEB zh?)29&z^m(fVg6&EJ55-w1!ToE@M9y2QUOs zeM6J-mF`U}_MmfElSAxCF*A3L$KuL=)Wg4!rZCXN8!7ssNC!Q1Gp#K!KrzBgHPB*3 z+C?!)8wP#^vzQGU+DfV{a*kpj=_%h+zPW8&@A=}(IV=3==!da1OpUlX1eDxH zs~4qQOys|o{DFTakf%g~1HO#q{lF8y-{?vpHTgl$)-)h0>m_zeXasWbP^QBO#>j7v z{Y<2>zgI|u&5t!2JTpzpvzVbjOjjaJwKV-Gcn7|iZjTk__#$muIkWZZrM`C>U!6xLD7)V2@wTwUW2#jrP&Z_-?$MWgv=}EHY*cOG?85MOi~bkW zU~Hh?x%PQ#%zn8s&`{OrKS^{R$`%9c%GnQ?KU%+C+&x#y0tF4KDUqOBg@h;fx z^Ff#aM}*gCV;b%E8!TsITrKIxmZq=yQeImu6ZeEQUTE@2Z$s5R%-Z@=bdqC|n*87X-bI2&ah%e9lI-?T$3iINLGn7= zeR>&4+`(JYthL-yAC-l0jb(R$+khUznzLWqHUxpah^chRX&u{4Gn~^>?&*o#E>v42_$DZ zp|U!PYYZ=1EHViWdm4ex(Tb8s>ME?V5&kBq2q%04lU&xjd9nsj-!b89V(NS=9PwN} zr*v+wP7YBzeQR2AyD+alSd_Ms*!1g8UL*=TQm@@7)Y8Pb%b&wF)Oo|n-61EZdUB2J zyU{l zQW__O?J6_WRHWgtk7|Jc+zxoDv$*@zlux;M2d!#pmjXGqx%mm^vN|?JS+{%;e~P7y z>9-iBB|ye^3f;DlJYq#(l<>-Hnzxh9k8^NPU>tR=Z8mL#%YVAZa-Uk2xS7ytt+YCI zJ$B=&p0(8Iw?U&Z5>D3nbJrEjTLy+^kY$-VA5}G@WpMFo0rw4$&$rUFS{c1g%|7zr z@#$77oK7V`dNAZwrEI7@>tiAGlu=9yIpDeDsTGZXJ2R{ZesaGt^sCZJQVs8bGk^!J zVMOZpa!5JPQhE$_sAZ&HcSMmx=gUq{;47EZFSnyIoB~e4(;oG$e9h$;kOM4-?`ME3 zmDVPXBo?urRAiDn)^mCn1*y*8%K2p6a7jN}=k8d$5scQn@_`JJuseS0=hm@hZzy(L3sAAzsJ%aVUiA!zElie4XLQ!LQOvzm{$jl|OT0b*G{#Bhw-CXFyROOc|>UumbpkQz++;VoTSSH*$)%axqb;WWt zdKNX1?HQ`l0_~b=N?WB)pq{3si((-Ph0l6yfK`s18ij{nNtC|+L3^NYNXjwb~Eh`&A^VM6=>~|1Y0|fKk7F10d$B%PA^)Q1an%RUTfv(?wWEeW15mr7VX8ntZSC#ZkJKWMq;vR**9z zT)q1}vjE>aa4VIGKXttFS+V{#KB;uqSA^#%rvjP=-z_u1U)0xBBV>8CrOhF-uFPA>h90Q(eNO=4YT7@&fJ*ri0jsfTEQpRjqO_s(_`!%y>S>Q(<5y;P_b5P0UxXHlv zt?e#j<+7Y%`T81=XH{)*1WP$%x<8TB_Z52B0Wzx}mDg}JiDpEQ%Eh}9-uSIc8<6qF zk`Q)!_Z_O!A)~C*?pZ;J`UT3G+JS*kM|$Oec<@Kf#ya-(t(yym5P-}H91~hanKWw( zT4ZgwW}lkSlaRZ2k_A%dAmC%xo3KF&1sU|?l4-#TqsaL@VOQRxo!&i?u*;5s_7#z# zTUMGoTQc(P60pt(VP1cJ@?6XEf?7khYkOL|X_e;4Y#ejk{{V$^6WltLV0M+xKEAb- zo!P8ak)Nx$iN&;J5g!DOg!im@+-=%DF;;FR-76O7nx^VlmIor58!NMIP(Lb&^SeKd zNh!g{Q~ar{0;nBxREcDG?rIZ~a%yKd9clrRNzGCd9V-B!4!un>G6~!3)|&5@=bC&e zl1S=!#WG2Mgk#pEk#dSVQU%%xJOS%Z1AxP)PH7cl9h=T*kqk|=@y9h{Fo~VREP7OP z0C#i$0PCiSWn$ZYw9ugU$I_+P&G%O(oFQc&HxvrQMHkmJ!MYg)h;YhsD!}r<=Za$} zW%)$|<$Im3kEx5hb$&OF7<<<8ObE#QtIc%lnQbo-l;K;39<|!qUMz~F9z83Xq%6-$ zjZS#$xza%<0IQL<_6iOw77Kvq6@Dipkbaest45K*9)xjGHhKY3MImF&TR;!JLnC4X z8D;5AYkk9tzLDf}+NFUNw+*CYv7rUbQv`vyIi&L4da15}#+evV^`vM)A9NG%R2;`T z*3SHe#%LDPdU0JMTa1i>Q>~(U3IyhJ3vDKTZk1*$Y-csP*70W>ML{G=8vt~q!IyUj&StRXHRX zJk*oOO=rmX>S~fL3oN|#;;?mFvOz^Wp0#T7?5dn~tZ6|Z-MKieVvMTF%R?h(`4k>E zH9q1%)3(#cYI6W21oTz?YNm507Aofs#8KXoil$(6hv- zc_3gKw`%H)(YU}TIW?1^Tr7|vb|ye}u>3eRtL5%i1Fr0f(QIVROG(P91m_1F)zx)9 z4P)C)$pmAu`qqjJat|1*M6;h~^C$B73a8fe@eN9&&mL{zTX&E{GE~NU@ZgbL~p1CyM2rY_eL=tBp0rjN7 z2uTz#EPYKm_YRg_Mai1*l(~-!edK7T6-lMUY+I(=Z^GPStqL3*+B7mcysicvn zke;OU=AGnh+FPOPOsT>=uaRg|RU&xF(bV6}b#TNWsTF>pG0W z3zgitZF(CAKjT|A_kn;Ju3k%biMJ(7Z+1c3oF7WY*E$rhx!OSe!L0~n2anddYYX82 z04X>%w*>qFnudXz;y_xh#^XIXteEB=wQXk`fzB#PXupsSM>Q(ou5(oqQR{(E^OvT7 z3SzNrVuPIL2kTHQf+Ma=i13#kjl1es995BGN6~ zUHTfzy1d4D=BrC`&f8Zcnshdd=X{yXXp%y5>_QdgZSVLBitq)6jySDT5K)X)R-|zQ zb`;|7%%`!GQ_MmE$*Qjz18zALJaQP>SYZ2AsTC!RI%9XGblm3lN^!c}&SS>j!+>cA zE-~2Ch{?lnX{e+=GtD!fsL$df6y$G{9l@l=8#LVf#~tVb!{ff&v!o3U>$bPxACkyoK-w49JXcO!9*f|r;xqp_9jwG$thSu@Ae z*1Je%60ZLMmnYM`aZ`M$9N}_f`@nY<(CODL5J7-rZvOzt){)T4MworFvko{0wBThi zDDRrfen^v&p!15gr`%cs;{Ye>Yfe@Kh#@;b zKDIs^@;*p5PLCrUk*{1QIz0ELV#y(I1 z%XSsFr)hW|V}toseICHgD3ylbE2N%S;EM`Iaa5LvtAfI-ds&(Ha>opKRv8_u5VK1m zE62S_b1Au)?KmE^^~7nkjw(y3FKa7w8MsCXDla(yVV z&pD_jo6vE72R-p!MU#B1p5nN*V$!MakzI|M`2aPYU5;8)=4PLiKH=y`6-wg7hRSey z@mi1o@!<6xDf=_Q6@|`}U?k5AVX_GCTQ+)@>?@vWliDPJ@mX(f@VCp*cBi-}W3Ptr zWE_K6W4YblxTr5(2nRe?j9Qt^OGW6;uk9VF!s9&%tQfTsju;wwzXazaG^__gw?uoI zYfZb1)*@bQ{x8;^bpSdX(P3ED^MC}ClU3xoJdE+_Su*M#_^OlN=lG~dENRJc*XFG2 zi|wjL>dcz|02v#qjFY^rg&Fs%Q617OU0!YnEOS)RCAoh=Q^RIl<$*r6rwj^;Fe14Ler>+B(#$9&Ia=i>AdthaaB4De+mvyd z+PtwxUGa=JaantQZKZO3D7fp;lpdvgfd2qmYpxd~wNEr$f(Ft%8jVg4*XVoDb67<` zyU6TmMo1Y~D}Ns>9HG$HOW)~AKGfP0QAJO=vEGNzEWB}e3OQ-g}Cq#Ce?a1@!O zS#H`ujq`G+tyo3^P%;98RF@#jpdXbjpK+2>M*8??eWZ!JDpS(SK)fH{Qezjx( za6mcrq$X-uH=6!gKHTwF(ni|W@_gzJLoXyBYR0sf#dNIX5O6^Et&cM|Vn~&h4<$!x zkzCc%uO&^fxbqYaLGHD?q+O_y?X$U9<|aO#mCC~Gv&8GneFwE^!psZGm<1am;^Bmw2!0n2mB8bNFpbpi6(3Oh2SrOfUC#N+{ zn4Y9!rnr*|dC2REtqN~_&Tyis0LM8boaU>s`Mqk~xGu#;M{HFV+{Xf`0EcRB$?L$V z+!GiIbCc4fDxl!wp_Bq+okiOxQ(uGo2BY{rBY*Kcvb4`vjG|G$Anpp-E0m-dB7SnvbYYzAn(Nt-= zwG6YtlW*Y-ItQ}6^wakd8gIz@Hk8m<=e1QiCnWPymCqukBiXK1xg*Zaz&I5N6zXeoa4M{DN^+CCC$Nmk zbiRwtb(VcPV-=C5+WB$ihs@Qt3hi&Lb5)hjx)HLurEYQctpK7$$iO1A;r6W@(^{vK_H3PspcBYsaL8M+o zQvIS(dFHLXyn(<93i|gHhTA5c$8xy7kPHB6KHDd3)aKKJnn7kWj2bQ)m73~C?NOgP zL)7B5MXHX%o*)CY7XvwMNk27RhR|`wD$+xfz^T>~k(yTv5v%|Y=~D#&d(-w~27-CO z=8(}F@I9&`hdY|A74F8X%Eafeqy;OYG4-x``2PLz&th?SUaEUnO=!EK zUgs57`pgw46q-Jd5kXa^b7>;Vg;-?%qM~R66NXX#^*(4!a+Sdt=xGCB?SIaZ^RkOh z%!_8yLBYqNrV)nrs|5~m`BZE>W14prh=3~D#YjkH=aK8_N!a3m2sv5>VK(hK9S=1$ zeYxvQz+-{I^rcc480krZ(6BmS)ba6-^;KUS9+hh#Mu)vgNt3Aub~=A5ziu-Y2>^ZJ zn#+x_$C|$rhKOSsPTlDZmP~BG?HR$!jP$KL3G$yde8uCRLr@qMqDGBzFIG}|j8s{4 z8}^V>uQXVbU5?D6~-2(y|JDWa)HYID|LyPV{GK8$Q94&av4mj!yD8dewDFc%<6=mK-zw_qBCcg`AZ^} zW;;7(vNao>@^gR}fr{AHE~E1Var~&G7{zk;GOI{OTEyKV7LlcwIT-ZxsXV}=Zqc5d zDgi47-M~@kDZX||&TwkPHbw*PjAy=TypsS3AO5<0tOz(b2dAx7JfD~U0IyV#H)3eq z0g?dcpIRDX=NSEZQx-B)fq|N1VF^{`hf_>0*5swsee=hls9EdJGpX#xs#}XV zlaDJwl1}1sO)Ub3=}7tZG@jL^V`2$i!*iZbp#K2t)k|w;l$kJg4*sUPZ8pp-!Q3&z|Rz18Jty=;P#-V?wr-;Re!uWs9F-dt_?7`SII4$tu(`f z)9|Zdx%q(~g)Rj!DtQF$^~#kYbP&u20H9?^u^B zx=&$SH$2vK@%*{PX#+XzU|puyCm5*hIJk`e0JT@Iqs(NQp>M>={_w7ty$&X=GN=%9lufO0(#YF1B|47_$~zxG9J5y7bChFF2hhFo(}anB7X>Sq-h_oK@@ zxI9#+4yAETPm~aO6kO(%1}YHTidKw~xO($bgx!IjoZ^_#vXVzWqKlKtMnNMT8?mV) zkb#5NkTFxpIP^5|%bbx##miygf#ps(s}RkG7(F_JRgOA}R#TCI&M5|`S8INfy15@X z0Zx4?JGMYe#5brs{VN*YXC^Vxm#1vi$gh?*Wh;PBB7#~h+f2zXl#TK~IP?{*ZrQm| z4hc+WHHT>1?g$(XnKiQ#d>L&eu?&4{GYP@7>LV_gS;};<%{a zb+X)W6rHSb(DtsUO=p(f21y`pCp~K7$dWvVP`fio&IcWT5Wou~C$^Mq;Bff_MX_YAJx|Sdu#^t;N%r{{XCz=g?G(r^m)uC)CxX&EtWb zx*XVyvu9yA_oeb>{s?*OTDo7csNfIEo-7Liz{kB(i#J(w>ds&6legY(O+9qtI+8_n z=T21_W&;$)irG&mKT39Hi!F}wFc!>?0Q{;&)0mI-e~GQIK>q+$5FX}{qmjqV#Qy*) zENHM)*Fz{-Dgm5l+N{F>UVsX+u>sqfm_#wsglil!TG(VMk^vRHWgY;mxMTUnZd%4w zcr~OE+fF>Fk5C`z=jmQubhx~jf3|DX@5lN%_Z8*$%eMYu{?!xQ@-wCGN7RH4DB4(s z9ZAJF4k^&_JZJr(QuaQ19Sj!Wh@e4)L5zBy=C^IF!YCc8t%Mt-B#PRO9CqzoGm+>< zHX&HKr?T)kt04Uu^HXa)DaQLBBxcs z$TT62+uIbm1S zI63KoN_uwu=mH@RsWhb!bQ${7k2Kt1de8zKfBLC}9Pz-ZG2b-9(~1U1k-LM)@ZVFI@M`o`H!ViWVCZyf?_5F zR!m$@zgp$q1{H*|7MT4?XI)x>Lx(Vj5zo|&o|X!!u`TFkqbsN%X{ zz0>QV@S_6eJcGq$Nf;#Jx31IXBe|@Z7Y)+0k}|6RwvAYABbvHxlqcN>@T#`|04w`e zs*UlHkH#@1>;g=aXt($#WQKK@i-RZ{_j&$p&{{Yp4l`AjM;MA!!%%x2*>0t^nj+LPexk&OyCac|y14C9q zNf{+Z>VDpsr))Vnr)|$l%q&R)@+)T8A1oYJR6ucCR@@-1U{WjU1NTJaax2U=F^x)L z?_QsO%q@H_BF@{9r0d$Rm&sLr7mdPg(LMGQ;cAWv?8T2{M-u2*5-T1$Ky>^ z{OaQ;Jt`JVHgQ2nVlEq{SX_`XjR{2A#l@0R3r=7&+Q;?N1>6Xam>trkJci zcPYaPjhOL@x3Cgh88qK09;-|dS3cBd2B&BSdYWN`dh<*O$6mM;r>_+!mIrE5G1yQt z4s*cfm_uh7smTN1=qe(A0ZQOT%Yns4K_?`fRHSq3M%9|)_7IM{ErgqwM5R1k~de%-F zxRfZYt2N7t*FlBkRA$xn=*P*k=lSOust)yGjAO# z&dgG5Ba=ytt+%&Ia8FvBZho|(J!){5Cf zie(BqV>HEc8tnj$kF|N7suRe@r*Xk>>gmk&d zURP=;@3d6^07s3F1c6-&sPg*PKcw#R(00XiAwgey?S{wJ(pG{gT@K(@Y{`&uTGOff zxZ<l2CiSozhgp1N#iw2KfTATSk%}Upiily`WeYwq!bzlpfu>$)}#nCf!2`hA}>mM zk3ebaxEyw=Hu0QQSS&Cu(UaDlj+Edyr30D-(1CJ#)QSM&g-VkhJt^3hfmC`_fjf#7 LYCt%rVITk5<%P$- literal 0 HcmV?d00001 diff --git a/hass/settings/image/ec890142459e316df6628907e28c0986/original b/hass/settings/image/ec890142459e316df6628907e28c0986/original new file mode 100644 index 0000000000000000000000000000000000000000..0e6e6e15ceef32a4bbbe64deeffd888775842543 GIT binary patch literal 139231 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 Mse + {% if not states('sensor.coffee_philips_5400_status') in ['Выключено','unknown']%} Включено + {% elif states('sensor.coffee_philips_5400_status') in ['Выключено','unknown'] or is_state('binary_sensor.coffee_philips_5400_power_status', 'off') %}Выключено + {% endif %} + attributes: + Making coffee: > + {% if not states('sensor.coffee_philips_5400_status') in ['Выключено','unknown'] %} + {{ states('sensor.coffee_philips_5400_status') }} + {% elif states('sensor.coffee_philips_5400_status') in ['Выключено','unknown'] or is_state('binary_sensor.coffee_philips_5400_power_status', 'off') %} Выключено + {% endif %} + + +group: +#Кухня: Кофемашина. Инфо и меню +#Объект: group.kitchen_coffee_machine_info_and_menu + kitchen_coffee_machine_info_and_menu: + name: "Кухня: Кофемашина. Сенсоры" + all: false + entities: + - sensor.coffee_philips_5400_esphome_version #Версия ESPHome + - sensor.coffee_philips_5400_coffee_grounds_container #Контейнер кофейной гущи + - sensor.coffee_philips_5400_coffee_pallet #Поддон + - sensor.coffee_philips_5400_grain_tray #Кофейные зерна в лотке + - sensor.coffee_philips_5400_system_status #Системный статус + - sensor.coffee_philips_5400_making_coffee #Приготовление кофе + - sensor.coffee_machine_power_status #Статус питания + - sensor.coffee_philips_5400_internal_temperature #Температура ESP32 + - sensor.coffee_philips_5400_error_code #Системные ошибки + - sensor.coffee_philips_5400_free_mem_size #Размер свободной памяти + - binary_sensor.coffee_philips_5400_power_status #Статус питания + - number.coffee_philips_5400_valve_closed #Отвод воды закрыл носик кофемашины + - number.coffee_philips_5400_valve_open #Отвод воды открыл носик кофемашины + - number.coffee_philips_5400_valve_position #Позиция сервопривода + - switch.coffee_philips_5400_valve_open_closed #Открыть или закрыть носик кофемашины + - switch.coffee_philips_5400_automatic_water_drain #Автоматически открывать или закрывать носик кофемашины + - input_boolean.kitchen_coffee_machine_auto_coffee_making #Авто приготовление кофе + - counter.coffee_machine_making_coffee #Счетчик для авто приготовление кофе + + + +#Кухня: Кофемашина. Кофейные напитки +#Объект: group.kitchen_coffee_machine_coffee_drinks + kitchen_coffee_machine_coffee_drinks: + name: "Кухня: Кофемашина. Кофейные напитки" + all: false + entities: + - select.coffee_philips_5400_drink #Выбор кофейных напиток + - select.coffee_philips_5400_cups #Выбор количество порции + - select.coffee_philips_5400_grind #Крепость, зерно или молотый кофе + - number.coffee_philips_5400_soffee #Объем кофе + - number.coffee_philips_5400_milk #Объем молока + - button.coffee_philips_5400_prepare #Показать рецепт в сенсоре 90 + - sensor.coffee_philips_5400_messge2_90 #Пакет рецепта + - sensor.coffee_philips_5400_coffee_drink #Сенсор выбранного кофейного напитка + - button.coffee_philips_5400_build_coffee #Приготовить кофе + +#Скрипт нужен для карточки, чтобы при нажатии на кнопку "Питание", кофемашина включилась или выключилась +script: + kitchen_coffee_machine_power: + alias: 'Кухня: Кофемашина. Питание' + sequence: + - choose: + - conditions: + - condition: template + value_template: '{{ is_state("binary_sensor.coffee_philips_5400_power_status","off") }}' + alias: Кофемашина выключена + sequence: + - service: button.press + data: {} + target: + entity_id: button.coffee_philips_5400_power_on + alias: Включить кофемашину + - conditions: + - condition: template + value_template: '{{ is_state("binary_sensor.coffee_philips_5400_power_status","on") }}' + alias: Кофемашина включена + sequence: + - service: button.press + data: {} + target: + entity_id: button.coffee_philips_5400_power_off + alias: Выключить кофемашину + mode: single + icon: mdi:power \ No newline at end of file diff --git a/hass/settings/packages/custom_components/yandex_station/yandex_station.yaml b/hass/settings/packages/custom_components/yandex_station/yandex_station.yaml new file mode 100644 index 0000000..6a49a04 --- /dev/null +++ b/hass/settings/packages/custom_components/yandex_station/yandex_station.yaml @@ -0,0 +1,3 @@ +yandex_station: + username: !secret alice_login + password: !secret alice_pwd \ No newline at end of file diff --git a/hass/settings/packages/dishwasher.yaml b/hass/settings/packages/dishwasher.yaml new file mode 100644 index 0000000..c02fd64 --- /dev/null +++ b/hass/settings/packages/dishwasher.yaml @@ -0,0 +1,76 @@ +# sensor: +# - platform: template +# sensors: +# dishwasher_remaining: +# friendly_name: "Dishwasher remaining" +# value_template: > +# {% if states('sensor.dishwasher_operation_state') == 'Inactive' %} - +# {% elif states('sensor.dishwasher_operation_state') == 'Finished' %} - +# {% elif states('sensor.dishwasher_remaining_program_time') == 'unavailable' %} - +# {% elif (as_timestamp(states('sensor.dishwasher_remaining_program_time')) - as_timestamp(now())) < 61 %} < 1 min +# {% else %} +# {{ (((as_timestamp(states('sensor.dishwasher_remaining_program_time')) - as_timestamp(now())) / 60) | round(0)) | string + " min" }} +# {% endif %} +# dishwasher_progress: +# friendly_name: "Dishwasher progress" +# value_template: > +# {% if states('sensor.dishwasher_operation_state') == 'Inactive' %} - +# {% elif states('sensor.dishwasher_operation_state') == 'Finished' %} - +# {% elif states('sensor.dishwasher_program_progress') == 'unavailable' %} - +# {% else %} +# {{ states('sensor.dishwasher_program_progress') + "%" }} +# {% endif %} + +mqtt: + sensor: + - name: hc_dishwasher_state + unique_id: hc_dishwasher_state + state_topic: "homeconnect/dishwasher/state" + value_template: "{{ value_json.state }}" + json_attributes_topic: "homeconnect/dishwasher/state" + - name: hc_dishwasher_remaining + unique_id: hc_dishwasher_remaining + state_topic: "homeconnect/dishwasher/state" + value_template: "{{ value_json.remaining }}" + json_attributes_topic: "homeconnect/dishwasher/state" + binary_sensor: + - state_topic: "homeconnect/dishwasher/state" + name: hc_dishwasher_door + unique_id: hc_dishwasher_door + device_class: opening + payload_on: "Open" + payload_off: "Closed" + value_template: "{{ value_json.door }}" + json_attributes_topic: "homeconnect/dishwasher/state" + - state_topic: "homeconnect/dishwasher/state" + name: hc_dishwasher_power + unique_id: hc_dishwasher_power + payload_on: true + payload_off: false + value_template: "{{ value_json.power }}" + json_attributes_topic: "homeconnect/dishwasher/state" +template: + binary_sensor: + - name: hc_dishwasher_running + unique_id: hc_dishwasher_running + state: "{{ is_state('sensor.hc_dishwasher_state', 'Run') }}" + +counter: + dishwasher_door_open_count: + name: dishwasher_door_open_count + +homeassistant: + customize: + sensor.hc_dishwasher_state: + friendly_name: Посудомойка Статус + binary_sensor.hc_dishwasher_door: + friendly_name: Посудомойка Дверца + binary_sensor.hc_dishwasher_remaining: + friendly_name: Посудомойка До конца программы + sensor.hc_dishwasher_running: + friendly_name: Посудомоечная машина + binary_sensor.hc_dishwasher_power: + friendly_name: Посудомойка Питание + + +# homeconnect/dishwasher/state {"state": "Ready", "door": "Closed", "remaining": "0:15", "power": false, "lowwaterpressure": false, "aquastop": false, "error": false, "remainingseconds": 900} \ No newline at end of file diff --git a/hass/settings/packages/groups.yaml b/hass/settings/packages/groups.yaml new file mode 100644 index 0000000..e69de29 diff --git a/hass/settings/packages/heat_counter.yaml b/hass/settings/packages/heat_counter.yaml new file mode 100644 index 0000000..d739b91 --- /dev/null +++ b/hass/settings/packages/heat_counter.yaml @@ -0,0 +1,35 @@ +template: +- sensor: + - name: heat_total + unit_of_measurement: gKal + default_entity_id: sensor.heat_total + state: '{{ states(''sensor.saures_teploschetchik_fonvizina'') | float + 32.7600 | round(4) }}' + - name: heat_hourly_cost + unit_of_measurement: '₽' + state: "{{ states('sensor.heat_hourly') | float * 3035 | round(2) }}" + - name: heat_daily_cost + unit_of_measurement: '₽' + state: "{{ states('sensor.heat_daily') | float * 3035 | round(2) }}" + - name: heat_monthly_cost + unit_of_measurement: '₽' + state: "{{ states('sensor.heat_monthly') | float * 3035 | round(2) }}" + +utility_meter: + heat_hourly: + source: sensor.saures_teploschetchik_fonvizina + cycle: hourly + heat_daily: + source: sensor.saures_teploschetchik_fonvizina + cycle: daily + heat_monthly: + source: sensor.saures_teploschetchik_fonvizina + cycle: monthly + +homeassistant: + customize: + sensor.heat_hourly: + friendly_name: Тепло в час + sensor.heat_hourly: + friendly_name: Тепло в день + sensor.heat_hourly: + friendly_name: Тепло в месяц diff --git a/hass/settings/packages/notifications/telegram.yaml b/hass/settings/packages/notifications/telegram.yaml new file mode 100644 index 0000000..132d378 --- /dev/null +++ b/hass/settings/packages/notifications/telegram.yaml @@ -0,0 +1,21 @@ +telegram_bot: + - platform: polling + api_key: !secret telegram_key + allowed_chat_ids: + - !secret telegram_group_chat + - !secret telegram_monster_chat + - !secret telegram_sveta_chat + +notify: + - platform: telegram + name: telegram + chat_id: !secret telegram_group_chat + parse_mode: html + - platform: telegram + name: telegram_monster + chat_id: !secret telegram_monster_chat + parse_mode: html + - platform: telegram + name: telegram_sveta + chat_id: !secret telegram_sveta_chat + parse_mode: html diff --git a/hass/settings/packages/power/power_counter.yaml b/hass/settings/packages/power/power_counter.yaml new file mode 100644 index 0000000..b6f2669 --- /dev/null +++ b/hass/settings/packages/power/power_counter.yaml @@ -0,0 +1,191 @@ +# recorder: +# include: +# entities: +# - sensor.power_total +# - sensor.power_active_power +# - sensor.power_monthly_cost_t1 +# - sensor.power_monthly_cost_t2 +# - sensor.power_monthly_cost_t3 + +modbus: + name: modbus_power + type: serial + method: rtu + port: /dev/ttyUSB0 + baudrate: 9600 + stopbits: 1 + bytesize: 8 + parity: N #N + sensors: + - name: power_total + unit_of_measurement: kWh + slave: 1 + address: 10 + precision: 2 + scale: 0.01 + data_type: uint32 + + - name: power_voltage_a + slave: 1 + address: 128 + precision: 1 + scale: 0.1 + unit_of_measurement: 'V' + + - name: power_voltage_b + slave: 1 + address: 129 + precision: 1 + scale: 0.1 + unit_of_measurement: 'V' + + - name: power_voltage_c + slave: 1 + address: 130 + precision: 1 + scale: 0.1 + unit_of_measurement: 'V' + + - name: power_current_a + slave: 1 + address: 131 + precision: 2 + scale: 0.01 + unit_of_measurement: 'A' + + - name: power_current_b + slave: 1 + address: 132 + precision: 2 + scale: 0.01 + unit_of_measurement: 'A' + + - name: power_current_c + slave: 1 + address: 133 + precision: 2 + scale: 0.01 + unit_of_measurement: 'A' + + - name: power_active_power + slave: 1 + address: 134 + data_type: int32 + precision: 3 + scale: 0.001 + unit_of_measurement: kW + + - name: power_reactive_power + slave: 1 + address: 139 + data_type: int32 + precision: 3 + scale: 0.001 + unit_of_measurement: 'Kvar' + + - name: power_power_factor + slave: 1 + address: 149 + precision: 3 + scale: 0.001 + unit_of_measurement: '%' + + - name: power_frequency + slave: 1 + address: 17 + precision: 2 + scale: 0.01 + unit_of_measurement: 'Hz' + +sensor: + - platform: template + sensors: + power_main_total: + unit_of_measurement: 'kWh' + value_template: "{{ states('sensor.power_total') | float - 7072.7 | round(2) }}" + #7072.7 - разница показаний. + + power_monthly_cost_t1: + unit_of_measurement: '₽' + value_template: "{{ states('sensor.power_monthly_t1') | float * 8.23 | round(2) }}" + power_monthly_cost_t2: + unit_of_measurement: '₽' + value_template: "{{ states('sensor.power_monthly_t2') | float * 2.62 | round(2) }}" + power_monthly_cost_t3: + unit_of_measurement: '₽' + value_template: "{{ states('sensor.power_monthly_t3') | float * 5.66 | round(2) }}" + power_monthly_cost_total: + unit_of_measurement: '₽' + value_template: "{{ states('sensor.power_monthly_cost_t1') | float + states('sensor.power_monthly_cost_t2') | float + states('sensor.power_monthly_cost_t3') | float | round(2) }}" + +utility_meter: + power_hourly: + source: sensor.power_total + cycle: hourly + power_daily: + source: sensor.power_total + cycle: daily + power_monthly: + source: sensor.power_total + cycle: monthly + + power_theory: + source: sensor.power_total + cycle: monthly + tariffs: + - t1 + - t2 + - t3 + power_monthly_t1: + source: sensor.power_theory_t1 + cycle: monthly + power_monthly_t2: + source: sensor.power_theory_t2 + cycle: monthly + power_monthly_t3: + source: sensor.power_theory_t3 + cycle: monthly + +homeassistant: + customize: + sensor.power_main_total: + friendly_name: Общий счётчик + + sensor.power_total: + friendly_name: Потреблено итого + + sensor.power_voltage_a: + friendly_name: Напряжение A + + sensor.power_voltage_b: + friendly_name: Напряжение B + + sensor.power_voltage_c: + friendly_name: Напряжение C + + sensor.power_current_a: + friendly_name: Ток A + + sensor.power_current_b: + friendly_name: Ток B + + sensor.power_current_c: + friendly_name: Ток C + + sensor.power_frequency: + friendly_name: Частота + + sensor.power_active_power: + friendly_name: Активная нагрузка + + sensor.power_reactive_power: + friendly_name: Реактивная нагрузка + + sensor.power_power_factor: + friendly_name: Коэффициент мощности + + sensor.power_export: + friendly_name: Экспортировано + + sensor.power_import: + friendly_name: Импортировано \ No newline at end of file diff --git a/hass/settings/packages/tags_test.yaml b/hass/settings/packages/tags_test.yaml new file mode 100644 index 0000000..263187d --- /dev/null +++ b/hass/settings/packages/tags_test.yaml @@ -0,0 +1,59 @@ +sensor: +# Old phone - 75f45ca5a0b55b563f827339c91da5be + - platform: mqtt_room + device_id: "irk:f8cfda8942512292fd767127fd5028c1" + name: 'tag_danil_iphone' + state_topic: 'espresense/devices/irk:f8cfda8942512292fd767127fd5028c1' + timeout: 30 + away_timeout: 300 + + - platform: mqtt_room + device_id: "irk:23c0abe5a5167d5f3a9fed8f5811e2cb" + name: 'tag_svetlana_iphone' + state_topic: 'espresense/devices/irk:23c0abe5a5167d5f3a9fed8f5811e2cb' + timeout: 30 + away_timeout: 300 + + - platform: mqtt_room + device_id: "irk:ee497d98b502c47ec3f631336ec37eed" + name: 'tag_mama_iphone' + state_topic: 'espresense/devices/irk:ee497d98b502c47ec3f631336ec37eed' + timeout: 30 + away_timeout: 300 + + +homeassistant: + customize: + sensor.tag_danil_iphone: + friendly_name: Данил (телефон) + sensor.tag_svetlana_iphone: + friendly_name: Света (телефон) + sensor.tag_mama_iphone: + friendly_name: Мама (телефон) + +automation: + alias: "Presence: Beacons" + description: "" + trigger: + - platform: state + entity_id: + - sensor.tag_danil_iphone + - sensor.tag_svetlana_iphone + - sensor.tag_mama_iphone + enabled: true + condition: [] + action: + - service: device_tracker.see + data: + dev_id: "{{ trigger.entity_id.split('.')[1] }}" + location_name: | + {% set locations = ['mainroom', 'kitchen'] %} + {% if trigger.to_state.state in locations %} + home + {% elif trigger.to_state.state not in locations %} + not_home + {% else %} + unknown + {% endif %} + source_type: router + mode: restart \ No newline at end of file diff --git a/hass/settings/packages/tv/bedroom_tv.yaml b/hass/settings/packages/tv/bedroom_tv.yaml new file mode 100644 index 0000000..34d1810 --- /dev/null +++ b/hass/settings/packages/tv/bedroom_tv.yaml @@ -0,0 +1,26 @@ +rest_command: + bedroom_tv_wol: + url: "http://192.168.1.1/wol_action.asp?dstmac=C0:D7:AA:AA:1B:12" + method: get + content_type: "application/json" + username: !secret router_username + password: !secret router_password + +automation: + - id: 'bedroomtv_wakeup' + alias: "Wake up bedroom tv on turn_on" + trigger: + - platform: webostv.turn_on + entity_id: media_player.bedroom_tv + action: + - service: cover.set_cover_position + target: + entity_id: cover.curtain_bedroom + data: + position: 38 + - service: rest_command.bedroom_tv_wol + - delay: 5 + - service: media_player.select_source + data: + entity_id: media_player.bedroom_tv + source: YouTube diff --git a/hass/settings/packages/tv/kitchen_tv.yaml b/hass/settings/packages/tv/kitchen_tv.yaml new file mode 100644 index 0000000..0ae6f3e --- /dev/null +++ b/hass/settings/packages/tv/kitchen_tv.yaml @@ -0,0 +1,22 @@ +# Either put this here or in your automations.yaml +rest_command: + kitchen_tv_wol: + url: "http://192.168.1.1/wol_action.asp?dstmac=B4:B2:91:C0:A7:FD" + method: get + content_type: "application/json" + username: !secret router_username + password: !secret router_password + +automation: + - id: 'kitchentv_wakeup' + alias: "Wake up kitchen tv on turn_on" + trigger: + - platform: webostv.turn_on + entity_id: media_player.kitchen_tv + action: + - service: rest_command.kitchen_tv_wol + - delay: 10 + - service: media_player.select_source + data: + entity_id: media_player.kitchen_tv + source: Wink diff --git a/hass/settings/packages/tv/mainroom_tv.yaml b/hass/settings/packages/tv/mainroom_tv.yaml new file mode 100644 index 0000000..71a4aa1 --- /dev/null +++ b/hass/settings/packages/tv/mainroom_tv.yaml @@ -0,0 +1,23 @@ +# Either put this here or in your automations.yaml +rest_command: + mainroom_tv_wol: + url: "http://192.168.1.1/wol_action.asp?dstmac=AC:5A:F0:99:65:11" + method: get + content_type: "application/json" + username: !secret router_username + password: !secret router_password + + +automation: + - id: 'mainroomtv_wakeup' + alias: "Wake up mainroom tv on turn_on" + trigger: + - platform: webostv.turn_on + entity_id: media_player.mainroom_tv + action: + - service: rest_command.mainroom_tv_wol + - delay: 5 + - service: media_player.select_source + data: + entity_id: media_player.mainroom_tv + source: Wink diff --git a/hass/settings/packages/watercontrol.yaml b/hass/settings/packages/watercontrol.yaml new file mode 100644 index 0000000..5e7bc40 --- /dev/null +++ b/hass/settings/packages/watercontrol.yaml @@ -0,0 +1,65 @@ +################################################# +# WATER # +################################################# +mqtt: + sensor: + - unique_id: counter_cold + state_topic: 'home/watercontrol/counter2_1' + name: 'counter_cold' + value_template: '{{ (value | float ) }}' + unit_of_measurement: 'm³' + device_class: water + state_class: total_increasing + - unique_id: counter_hot + state_topic: 'home/watercontrol/counter2_2' + name: 'counter_hot' + value_template: '{{ (value | float ) }}' + unit_of_measurement: 'm³' + device_class: water + state_class: total_increasing + - unique_id: uptime_watercontrol + state_topic: 'home/watercontrol/$uptime' + name: 'uptime_watercontrol' + value_template: '{{ value | int }}' + switch: + - unique_id: water_valve + name: water_valve + state_topic: "home/watercontrol/valves" + command_topic: "home/watercontrol/valves/set" + payload_on: true + payload_off: false + optimistic: false + retain: false + +template: + sensor: + - name: counter_hot_outer + device_class: water + state_class: total_increasing + unit_of_measurement: 'm³' + state: "{{ states('sensor.counter_hot') | float + 88.97 | round(2) }}" + - name: counter_cold_outer + device_class: water + state_class: total_increasing + unit_of_measurement: 'm³' + state: "{{ states('sensor.counter_cold') | float + 144.7 | round(2) }}" + + binary_sensor: + - name: dryer_running + state: "{{ not is_state('sensor.sushilnaia_mash_machine_state', 'stop') }}" + - name: washer_running + state: "{{ not is_state('sensor.stiralnaia_mashina_machine_state', 'stop') }}" + +homeassistant: + customize: + switch.water_valve: + friendly_name: Подача воды + binary_sensor.dryer_running: + friendly_name: "Сушильная машина" + binary_sensor.washer_running: + friendly_name: "Стиральная машина" + + sensor.counter_hot_outer: + friendly_name: "Счетчик Внешний Горячая" + sensor.counter_cold_outer: + friendly_name: "Счетчик Внешний Холодная" diff --git a/hass/settings/scenes.yaml b/hass/settings/scenes.yaml new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/hass/settings/scenes.yaml @@ -0,0 +1 @@ +[] diff --git a/hass/settings/scripts.yaml b/hass/settings/scripts.yaml new file mode 100644 index 0000000..09614f6 --- /dev/null +++ b/hass/settings/scripts.yaml @@ -0,0 +1,71 @@ +new_script: + alias: Сценарий Я Ушёл + sequence: + - service: switch.turn_off + data: {} + target: + entity_id: switch.watercontrol_valves + - service: climate.set_preset_mode + data: + preset_mode: away + target: + area_id: + - gostinaia + - kukhnia + - spalnia + - detskaia + - service: media_player.turn_off + data: {} + target: + device_id: + - 368a8521d684580dd39b88502808b3bc + - 07a253973c89fdb7e7b66174bf5a1275 + - b60210b82dc048bffc5a59f683de2f0a + - service: cover.close_cover + data: {} + target: + area_id: + - gostinaia + - kukhnia + - spalnia + mode: single + icon: mdi:shield-lock +'1675839976060': + alias: Вскипяти чайник + sequence: + - service: input_select.set_options + data: + options: Boil Water + target: + entity_id: select.chunmi_a1_35e9_cook_mode + mode: single +'1676313705945': + alias: Сценарий Я Дома + sequence: + - service: switch.turn_on + data: {} + target: + entity_id: switch.watercontrol_valves + - service: climate.set_preset_mode + data: + preset_mode: manual + target: + area_id: + - gostinaia + - kukhnia + - spalnia + - detskaia + - if: + - condition: sun + before: sunset + after: sunrise + then: + - service: cover.open_cover + data: {} + target: + area_id: + - gostinaia + - kukhnia + - spalnia + mode: single + icon: mdi:shield-lock diff --git a/hass/settings/secrets.yaml b/hass/settings/secrets.yaml new file mode 100755 index 0000000..e69de29 diff --git a/hass/settings/secrets.yaml.sample b/hass/settings/secrets.yaml.sample new file mode 100644 index 0000000..28ff92e --- /dev/null +++ b/hass/settings/secrets.yaml.sample @@ -0,0 +1,167 @@ + +################################### +# MAIN SETTINGS # +################################### +ha_password: xxxxxxxxx +timezone: Europe/London +base_url: xxxxxxxxx +base_host: xxxxxxxxx +base_localname: xxxxxxxxx +ha_internal_ip: xxxxxxxxx +modbus_host: modbus.host +modbus_port: 9977 +modbus_admin_pass: xxxxxxxxx + +yandex_tts_key: xxxxxxxxx +################################### +# RECORDER SETTINGS # +################################### +mysql_url: xxxxxxxxx + +################################### +# ESPHOME SETTINGS # +################################### +wifi_24_name: xxxxxxxxx +wifi_24_pass: xxxxxxxxx +esphome_pass: xxxxxxxxx +esphome_captive_pass: xxxxxxxxx + +################################### +# APPLETV SETTINGS # +################################### +atv4_ip: xxxxxxxxx +atv4_login: xxxxxxxxx +atv4_credentials: xxxxxxxxx + +################################### +# PROXY SETTINGS # +################################### +#proxy_url: xxxxxxxxx +proxy_url: xxxxxxxxx + +################################### +# MQTT SETTINGS # +################################### +mqtt_ip: xxxxxxxxx +mqtt_user: xxxxxxxxx +mqtt_password: xxxxxxxxx +mqtt_clientid: xxxxxxxxx + +################################### +# XIAOMI AND AQARA SETTINGS # +################################### +aqara1_mac: xxxxxxxxxxxx +aqara1_key: xxxxxxxxxxxxxxxx + +mirobot_ip: xxxxxxxxx +mirobot_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +purifier_ip: xxxxxxxxx +purifier_key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx + +breaser_ip: xxxxxxxxx +breaser_token: xxxxxxxxx + +xiaomi_remote_host: xxxxxxxxx +xiaomi_remote_token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +################################### +# NEST # +################################### +nest_client_id: xxxxxxxxx +nest_client_secret: xxxxxxxxx + +################################### +# NOTIFICATION SETTINGS # +################################### +telegram_key: xxxxxxxxx +telegram_group_chat: 0 +telegram_monster_chat: 0 +telegram_sveta_chat: xxxxxxxxx +telegram_card_chat: xxxxxxxxx + +################################### +# TAGS # +################################### +tag_danil_pocket: xxxxxxxxx +tag_danil_keys: xxxxxxxxx +tag_svetlana_keys: xxxxxxxxx +tag_mama_keys: xxxxxxxxx +tag_test: xxxxxxxxx + +################################### +# ZONES # +################################### +home_latitude: 1.0 +home_longitude: 1.0 +home_coords: xxxxxxxxx + +work_latitude: 1.0 +work_longitude: 1.0 +work_coords: xxxxxxxxx + +################################### +# SYNOLOGY SETTINGS # +################################### +syno_url: xxxxxxxxx +syno_ip: xxxxxxxxx +syno_user: xxxxxxxxx +syno_pass: xxxxxxxxx +rtsp_entrance: xxxxxxxxx + +# ----------------------------------------------------------- # + +################################### +# APPDAEMON SETTINGS # +################################### +ha_url: xxxxxxxxx +ha_token: xxxxxxxxx + + +################################### +# NARODMON SETTINGS # +################################### +narodmon_key: xxxxxxxxx + +################################### +# MOS.RU SETTINGS # +################################### +mosru_login: xxxxxxxxx +mosru_pwd: xxxxxxxxx +mosru_token: xxxxxxxxx +mosru_session: xxxxxxxxx +#mosru_flat_id: xxxxxxxxx +mosru_flat_id: xxxxxxxxx +mosru_paycode: xxxxxxxxx +mosru_belorechenskaya_flat_id: xxxxxxxxx +mosru_belorechenskaya_paycode: xxxxxxxxx + +################################### +# Amazon Alexa # +################################### +amazon_mail: xxxxxxxxx +amazon_pass: xxxxxxxxx +alexa_client_id: xxxxxxxxx +alexa_client_secret: xxxxxxxxx + +################################### +# Yandex Alice # +################################### +alice_login: xxxxxxxxx +alice_pwd: xxxxxxxxx + +################################### +# Tuya # +################################### +tuya_username: xxxxxxxxx +tuya_password: xxxxxxxxx + +################################### +# iCloud # +################################### +icloud_mail: xxxxxxxxx +icloud_password: xxxxxxxxx + +################################### +# InfluxDb # +################################### +influxdb_token: xxxxxxxxx \ No newline at end of file diff --git a/hass/settings/ui-lovelace.yaml b/hass/settings/ui-lovelace.yaml new file mode 100644 index 0000000..6f2fb30 --- /dev/null +++ b/hass/settings/ui-lovelace.yaml @@ -0,0 +1,23 @@ +title: Home +views: +type: entities +entities: + - entity: switch.dishwasher_power + type: 'custom:multiple-entity-row' + name: Dishwasher + show_state: false + state_color: true + secondary_info: + entity: sensor.dishwasher_operation_state + name: 'Status:' + icon: 'mdi:dishwasher' + entities: + - entity: sensor.dishwasher_progress + name: Progress + - entity: sensor.dishwasher_remaining + name: Remaining + - entity: binary_sensor.dishwasher_door + name: false + icon: true + state_color: true + - entity: switch.water_valve diff --git a/hass/settings/www/community/jk-bms-card/jk-bms-card.js b/hass/settings/www/community/jk-bms-card/jk-bms-card.js new file mode 100644 index 0000000..92c22f9 --- /dev/null +++ b/hass/settings/www/community/jk-bms-card/jk-bms-card.js @@ -0,0 +1,34 @@ +function e(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function t(e,t,n,l){var s,a=arguments.length,i=a<3?t:null===l?l=Object.getOwnPropertyDescriptor(t,n):l;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)i=Reflect.decorate(e,t,n,l);else for(var r=e.length-1;r>=0;r--)(s=e[r])&&(i=(a<3?s(i):a>3?s(t,n,i):s(t,n))||i);return a>3&&i&&Object.defineProperty(t,n,i),i}"function"==typeof SuppressedError&&SuppressedError; +/** + * @license + * Copyright 2019 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ +const n=globalThis,l=n.ShadowRoot&&(void 0===n.ShadyCSS||n.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,s=Symbol(),a=new WeakMap;let i=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==s)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o;const t=this.t;if(l&&void 0===e){const n=void 0!==t&&1===t.length;n&&(e=a.get(t)),void 0===e&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&a.set(t,e))}return e}toString(){return this.cssText}};const r=(e,...t)=>{const n=1===e.length?e[0]:t.reduce(((t,n,l)=>t+(e=>{if(!0===e._$cssResult$)return e.cssText;if("number"==typeof e)return e;throw Error("Value passed to 'css' function must be a 'css' function result: "+e+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+e[l+1]),e[0]);return new i(n,e,s)},c=l?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t="";for(const n of e.cssRules)t+=n.cssText;return(e=>new i("string"==typeof e?e:e+"",void 0,s))(t)})(e):e +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */,{is:o,defineProperty:_,getOwnPropertyDescriptor:d,getOwnPropertyNames:h,getOwnPropertySymbols:g,getPrototypeOf:p}=Object,u=globalThis,v=u.trustedTypes,m=v?v.emptyScript:"",f=u.reactiveElementPolyfillSupport,b=(e,t)=>e,y={toAttribute(e,t){switch(t){case Boolean:e=e?m:null;break;case Object:case Array:e=null==e?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=null!==e;break;case Number:n=null===e?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch(e){n=null}}return n}},x=(e,t)=>!o(e,t),C={attribute:!0,type:String,converter:y,reflect:!1,useDefault:!1,hasChanged:x};Symbol.metadata??=Symbol("metadata"),u.litPropertyMetadata??=new WeakMap;let S=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=C){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){const n=Symbol(),l=this.getPropertyDescriptor(e,n,t);void 0!==l&&_(this.prototype,e,l)}}static getPropertyDescriptor(e,t,n){const{get:l,set:s}=d(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:l,set(t){const a=l?.call(this);s?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??C}static _$Ei(){if(this.hasOwnProperty(b("elementProperties")))return;const e=p(this);e.finalize(),void 0!==e.l&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(b("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(b("properties"))){const e=this.properties,t=[...h(e),...g(e)];for(const n of t)this.createProperty(n,e[n])}const e=this[Symbol.metadata];if(null!==e){const t=litPropertyMetadata.get(e);if(void 0!==t)for(const[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(const[e,t]of this.elementProperties){const n=this._$Eu(e,t);void 0!==n&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const t=[];if(Array.isArray(e)){const n=new Set(e.flat(1/0).reverse());for(const e of n)t.unshift(c(e))}else void 0!==e&&t.push(c(e));return t}static _$Eu(e,t){const n=t.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof e?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((e=>this.enableUpdating=e)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((e=>e(this)))}addController(e){(this._$EO??=new Set).add(e),void 0!==this.renderRoot&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){const e=new Map,t=this.constructor.elementProperties;for(const n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return((e,t)=>{if(l)e.adoptedStyleSheets=t.map((e=>e instanceof CSSStyleSheet?e:e.styleSheet));else for(const l of t){const t=document.createElement("style"),s=n.litNonce;void 0!==s&&t.setAttribute("nonce",s),t.textContent=l.cssText,e.appendChild(t)}})(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((e=>e.hostConnected?.()))}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach((e=>e.hostDisconnected?.()))}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){const n=this.constructor.elementProperties.get(e),l=this.constructor._$Eu(e,n);if(void 0!==l&&!0===n.reflect){const s=(void 0!==n.converter?.toAttribute?n.converter:y).toAttribute(t,n.type);this._$Em=e,null==s?this.removeAttribute(l):this.setAttribute(l,s),this._$Em=null}}_$AK(e,t){const n=this.constructor,l=n._$Eh.get(e);if(void 0!==l&&this._$Em!==l){const e=n.getPropertyOptions(l),s="function"==typeof e.converter?{fromAttribute:e.converter}:void 0!==e.converter?.fromAttribute?e.converter:y;this._$Em=l,this[l]=s.fromAttribute(t,e.type)??this._$Ej?.get(l)??null,this._$Em=null}}requestUpdate(e,t,n){if(void 0!==e){const l=this.constructor,s=this[e];if(n??=l.getPropertyOptions(e),!((n.hasChanged??x)(s,t)||n.useDefault&&n.reflect&&s===this._$Ej?.get(e)&&!this.hasAttribute(l._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:l,wrapped:s},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==s||void 0!==a)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===l&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const e=this.scheduleUpdate();return null!=e&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}const e=this.constructor.elementProperties;if(e.size>0)for(const[t,n]of e){const{wrapped:e}=n,l=this[t];!0!==e||this._$AL.has(t)||void 0===l||this.C(t,void 0,n,l)}}let e=!1;const t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach((e=>e.hostUpdate?.())),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach((e=>e.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach((e=>this._$ET(e,this[e]))),this._$EM()}updated(e){}firstUpdated(e){}};S.elementStyles=[],S.shadowRootOptions={mode:"open"},S[b("elementProperties")]=new Map,S[b("finalized")]=new Map,f?.({ReactiveElement:S}),(u.reactiveElementVersions??=[]).push("2.1.0"); +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ +const w=globalThis,$=w.trustedTypes,k=$?$.createPolicy("lit-html",{createHTML:e=>e}):void 0,A="$lit$",E=`lit$${Math.random().toFixed(9).slice(2)}$`,M="?"+E,O=`<${M}>`,T=document,V=()=>T.createComment(""),z=e=>null===e||"object"!=typeof e&&"function"!=typeof e,D=Array.isArray,N="[ \t\n\f\r]",P=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,I=/-->/g,L=/>/g,U=RegExp(`>|${N}(?:([^\\s"'>=/]+)(${N}*=${N}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),H=/'/g,F=/"/g,R=/^(?:script|style|textarea|title)$/i,j=(e=>(t,...n)=>({_$litType$:e,strings:t,values:n}))(1),B=Symbol.for("lit-noChange"),K=Symbol.for("lit-nothing"),W=new WeakMap,J=T.createTreeWalker(T,129);function Z(e,t){if(!D(e)||!e.hasOwnProperty("raw"))throw Error("invalid template strings array");return void 0!==k?k.createHTML(t):t}const q=(e,t)=>{const n=e.length-1,l=[];let s,a=2===t?"":3===t?"":"",i=P;for(let t=0;t"===c[0]?(i=s??P,o=-1):void 0===c[1]?o=-2:(o=i.lastIndex-c[2].length,r=c[1],i=void 0===c[3]?U:'"'===c[3]?F:H):i===F||i===H?i=U:i===I||i===L?i=P:(i=U,s=void 0);const d=i===U&&e[t+1].startsWith("/>")?" ":"";a+=i===P?n+O:o>=0?(l.push(r),n.slice(0,o)+A+n.slice(o)+E+d):n+E+(-2===o?t:d)}return[Z(e,a+(e[n]||"")+(2===t?"":3===t?"":"")),l]};class G{constructor({strings:e,_$litType$:t},n){let l;this.parts=[];let s=0,a=0;const i=e.length-1,r=this.parts,[c,o]=q(e,t);if(this.el=G.createElement(c,n),J.currentNode=this.el.content,2===t||3===t){const e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;null!==(l=J.nextNode())&&r.length0){l.textContent=$?$.emptyScript:"";for(let n=0;nD(e)||"function"==typeof e?.[Symbol.iterator])(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==K&&z(this._$AH)?this._$AA.nextSibling.data=e:this.T(T.createTextNode(e)),this._$AH=e}$(e){const{values:t,_$litType$:n}=e,l="number"==typeof n?this._$AC(e):(void 0===n.el&&(n.el=G.createElement(Z(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===l)this._$AH.p(t);else{const e=new X(l,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=W.get(e.strings);return void 0===t&&W.set(e.strings,t=new G(e)),t}k(e){D(this._$AH)||(this._$AH=[],this._$AR());const t=this._$AH;let n,l=0;for(const s of e)l===t.length?t.push(n=new Y(this.O(V()),this.O(V()),this,this.options)):n=t[l],n._$AI(s),l++;l2||""!==n[0]||""!==n[1]?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=K}_$AI(e,t=this,n,l){const s=this.strings;let a=!1;if(void 0===s)e=Q(this,e,t,0),a=!z(e)||e!==this._$AH&&e!==B,a&&(this._$AH=e);else{const l=e;let i,r;for(e=s[0],i=0;i{const l=n?.renderBefore??t;let s=l._$litPart$;if(void 0===s){const e=n?.renderBefore??null;l._$litPart$=s=new Y(t.insertBefore(V(),e),e,void 0,n??{})}return s._$AI(e),s})(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return B}}re._$litElement$=!0,re.finalized=!0,ie.litElementHydrateSupport?.({LitElement:re});const ce=ie.litElementPolyfillSupport;ce?.({LitElement:re}),(ie.litElementVersions??=[]).push("4.2.0"); +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */ +const oe=e=>(t,n)=>{void 0!==n?n.addInitializer((()=>{customElements.define(e,t)})):customElements.define(e,t)} +/** + * @license + * Copyright 2017 Google LLC + * SPDX-License-Identifier: BSD-3-Clause + */,_e={attribute:!0,type:String,converter:y,reflect:!1,hasChanged:x},de=(e=_e,t,n)=>{const{kind:l,metadata:s}=n;let a=globalThis.litPropertyMetadata.get(s);if(void 0===a&&globalThis.litPropertyMetadata.set(s,a=new Map),"setter"===l&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),"accessor"===l){const{name:l}=n;return{set(n){const s=t.get.call(this);t.set.call(this,n),this.requestUpdate(l,s,e)},init(t){return void 0!==t&&this.C(l,void 0,e,t),t}}}if("setter"===l){const{name:l}=n;return function(n){const s=this[l];t.call(this,n),this.requestUpdate(l,s,e)}}throw Error("Unsupported decorator location: "+l)};function he(e){return(t,n)=>"object"==typeof n?de(e,t,n):((e,t,n)=>{const l=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),l?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}const ge="jk-bms-content-card-editor",pe="jk-bms-card";var ue;!function(e){e.delta_cell_voltage="delta_cell_voltage",e.balancing="balancing",e.balancing_current="balancing_current",e.power="power",e.balance_trigger_voltage="balance_trigger_voltage",e.total_runtime_formatted="total_runtime_formatted",e.charging="charging",e.charging_power="charging_power",e.discharging="discharging",e.discharging_power="discharging_power",e.balancer="balancer",e.heater="heater",e.total_voltage="total_voltage",e.total_battery_capacity_setting="total_battery_capacity_setting",e.total_charging_cycle_capacity="total_charging_cycle_capacity",e.average_cell_voltage="average_cell_voltage",e.current="current",e.state_of_charge="state_of_charge",e.capacity_remaining="capacity_remaining",e.charging_cycles="charging_cycles",e.power_tube_temperature="power_tube_temperature",e.min_voltage_cell="min_voltage_cell",e.max_voltage_cell="max_voltage_cell",e.errors="errors",e.software_version="software_version",e.hardware_version="hardware_version",e.cell_voltage_1="cell_voltage_1",e.cell_voltage_2="cell_voltage_2",e.cell_voltage_3="cell_voltage_3",e.cell_voltage_4="cell_voltage_4",e.cell_voltage_5="cell_voltage_5",e.cell_voltage_6="cell_voltage_6",e.cell_voltage_7="cell_voltage_7",e.cell_voltage_8="cell_voltage_8",e.cell_voltage_9="cell_voltage_9",e.cell_voltage_10="cell_voltage_10",e.cell_voltage_11="cell_voltage_11",e.cell_voltage_12="cell_voltage_12",e.cell_voltage_13="cell_voltage_13",e.cell_voltage_14="cell_voltage_14",e.cell_voltage_15="cell_voltage_15",e.cell_voltage_16="cell_voltage_16",e.cell_voltage_17="cell_voltage_17",e.cell_voltage_18="cell_voltage_18",e.cell_voltage_19="cell_voltage_19",e.cell_voltage_20="cell_voltage_20",e.cell_voltage_21="cell_voltage_21",e.cell_voltage_22="cell_voltage_22",e.cell_voltage_23="cell_voltage_23",e.cell_voltage_24="cell_voltage_24",e.cell_voltage_25="cell_voltage_25",e.cell_voltage_26="cell_voltage_26",e.cell_voltage_27="cell_voltage_27",e.cell_voltage_28="cell_voltage_28",e.cell_voltage_29="cell_voltage_29",e.cell_voltage_30="cell_voltage_30",e.cell_voltage_31="cell_voltage_31",e.cell_voltage_32="cell_voltage_32",e.cell_voltage_33="cell_voltage_33",e.cell_voltage_34="cell_voltage_34",e.cell_voltage_35="cell_voltage_35",e.cell_voltage_36="cell_voltage_36",e.cell_voltage_37="cell_voltage_37",e.cell_voltage_38="cell_voltage_38",e.cell_voltage_39="cell_voltage_39",e.cell_voltage_40="cell_voltage_40",e.cell_voltage_41="cell_voltage_41",e.cell_voltage_42="cell_voltage_42",e.cell_voltage_43="cell_voltage_43",e.cell_voltage_44="cell_voltage_44",e.cell_voltage_45="cell_voltage_45",e.cell_voltage_46="cell_voltage_46",e.cell_voltage_47="cell_voltage_47",e.cell_voltage_48="cell_voltage_48",e.cell_voltage_49="cell_voltage_49",e.cell_voltage_50="cell_voltage_50",e.cell_voltage_51="cell_voltage_51",e.cell_voltage_52="cell_voltage_52",e.cell_voltage_53="cell_voltage_53",e.cell_voltage_54="cell_voltage_54",e.cell_voltage_55="cell_voltage_55",e.cell_voltage_56="cell_voltage_56",e.cell_voltage_57="cell_voltage_57",e.cell_voltage_58="cell_voltage_58",e.cell_voltage_59="cell_voltage_59",e.cell_voltage_60="cell_voltage_60",e.cell_voltage_61="cell_voltage_61",e.cell_voltage_62="cell_voltage_62",e.cell_voltage_63="cell_voltage_63",e.cell_voltage_64="cell_voltage_64",e.cell_voltage_65="cell_voltage_65",e.cell_voltage_66="cell_voltage_66",e.cell_voltage_67="cell_voltage_67",e.cell_voltage_68="cell_voltage_68",e.cell_voltage_69="cell_voltage_69",e.cell_voltage_70="cell_voltage_70",e.cell_voltage_71="cell_voltage_71",e.cell_voltage_72="cell_voltage_72",e.cell_voltage_73="cell_voltage_73",e.cell_voltage_74="cell_voltage_74",e.cell_voltage_75="cell_voltage_75",e.cell_voltage_76="cell_voltage_76",e.cell_voltage_77="cell_voltage_77",e.cell_voltage_78="cell_voltage_78",e.cell_voltage_79="cell_voltage_79",e.cell_voltage_80="cell_voltage_80",e.cell_voltage_81="cell_voltage_81",e.cell_voltage_82="cell_voltage_82",e.cell_voltage_83="cell_voltage_83",e.cell_voltage_84="cell_voltage_84",e.cell_voltage_85="cell_voltage_85",e.cell_voltage_86="cell_voltage_86",e.cell_voltage_87="cell_voltage_87",e.cell_voltage_88="cell_voltage_88",e.cell_voltage_89="cell_voltage_89",e.cell_voltage_90="cell_voltage_90",e.cell_voltage_91="cell_voltage_91",e.cell_voltage_92="cell_voltage_92",e.cell_voltage_93="cell_voltage_93",e.cell_voltage_94="cell_voltage_94",e.cell_voltage_95="cell_voltage_95",e.cell_voltage_96="cell_voltage_96",e.cell_resistance_1="cell_resistance_1",e.cell_resistance_2="cell_resistance_2",e.cell_resistance_3="cell_resistance_3",e.cell_resistance_4="cell_resistance_4",e.cell_resistance_5="cell_resistance_5",e.cell_resistance_6="cell_resistance_6",e.cell_resistance_7="cell_resistance_7",e.cell_resistance_8="cell_resistance_8",e.cell_resistance_9="cell_resistance_9",e.cell_resistance_10="cell_resistance_10",e.cell_resistance_11="cell_resistance_11",e.cell_resistance_12="cell_resistance_12",e.cell_resistance_13="cell_resistance_13",e.cell_resistance_14="cell_resistance_14",e.cell_resistance_15="cell_resistance_15",e.cell_resistance_16="cell_resistance_16",e.cell_resistance_17="cell_resistance_17",e.cell_resistance_18="cell_resistance_18",e.cell_resistance_19="cell_resistance_19",e.cell_resistance_20="cell_resistance_20",e.cell_resistance_21="cell_resistance_21",e.cell_resistance_22="cell_resistance_22",e.cell_resistance_23="cell_resistance_23",e.cell_resistance_24="cell_resistance_24",e.cell_resistance_25="cell_resistance_25",e.cell_resistance_26="cell_resistance_26",e.cell_resistance_27="cell_resistance_27",e.cell_resistance_28="cell_resistance_28",e.cell_resistance_29="cell_resistance_29",e.cell_resistance_30="cell_resistance_30",e.cell_resistance_31="cell_resistance_31",e.cell_resistance_32="cell_resistance_32",e.cell_resistance_33="cell_resistance_33",e.cell_resistance_34="cell_resistance_34",e.cell_resistance_35="cell_resistance_35",e.cell_resistance_36="cell_resistance_36",e.cell_resistance_37="cell_resistance_37",e.cell_resistance_38="cell_resistance_38",e.cell_resistance_39="cell_resistance_39",e.cell_resistance_40="cell_resistance_40",e.cell_resistance_41="cell_resistance_41",e.cell_resistance_42="cell_resistance_42",e.cell_resistance_43="cell_resistance_43",e.cell_resistance_44="cell_resistance_44",e.cell_resistance_45="cell_resistance_45",e.cell_resistance_46="cell_resistance_46",e.cell_resistance_47="cell_resistance_47",e.cell_resistance_48="cell_resistance_48",e.cell_resistance_49="cell_resistance_49",e.cell_resistance_50="cell_resistance_50",e.cell_resistance_51="cell_resistance_51",e.cell_resistance_52="cell_resistance_52",e.cell_resistance_53="cell_resistance_53",e.cell_resistance_54="cell_resistance_54",e.cell_resistance_55="cell_resistance_55",e.cell_resistance_56="cell_resistance_56",e.cell_resistance_57="cell_resistance_57",e.cell_resistance_58="cell_resistance_58",e.cell_resistance_59="cell_resistance_59",e.cell_resistance_60="cell_resistance_60",e.cell_resistance_61="cell_resistance_61",e.cell_resistance_62="cell_resistance_62",e.cell_resistance_63="cell_resistance_63",e.cell_resistance_64="cell_resistance_64",e.cell_resistance_65="cell_resistance_65",e.cell_resistance_66="cell_resistance_66",e.cell_resistance_67="cell_resistance_67",e.cell_resistance_68="cell_resistance_68",e.cell_resistance_69="cell_resistance_69",e.cell_resistance_70="cell_resistance_70",e.cell_resistance_71="cell_resistance_71",e.cell_resistance_72="cell_resistance_72",e.cell_resistance_73="cell_resistance_73",e.cell_resistance_74="cell_resistance_74",e.cell_resistance_75="cell_resistance_75",e.cell_resistance_76="cell_resistance_76",e.cell_resistance_77="cell_resistance_77",e.cell_resistance_78="cell_resistance_78",e.cell_resistance_79="cell_resistance_79",e.cell_resistance_80="cell_resistance_80",e.cell_resistance_81="cell_resistance_81",e.cell_resistance_82="cell_resistance_82",e.cell_resistance_83="cell_resistance_83",e.cell_resistance_84="cell_resistance_84",e.cell_resistance_85="cell_resistance_85",e.cell_resistance_86="cell_resistance_86",e.cell_resistance_87="cell_resistance_87",e.cell_resistance_88="cell_resistance_88",e.cell_resistance_89="cell_resistance_89",e.cell_resistance_90="cell_resistance_90",e.cell_resistance_91="cell_resistance_91",e.cell_resistance_92="cell_resistance_92",e.cell_resistance_93="cell_resistance_93",e.cell_resistance_94="cell_resistance_94",e.cell_resistance_95="cell_resistance_95",e.cell_resistance_96="cell_resistance_96",e.temperature_sensor_1="temperature_sensor_1",e.temperature_sensor_2="temperature_sensor_2",e.temperature_sensor_3="temperature_sensor_3",e.temperature_sensor_4="temperature_sensor_4"}(ue||(ue={}));var ve={title:"JK BMS Card",description:"A customizable Home Assistant card to emulate the JK BMS screen",version:"Version"},me={language:"Language",title:"Title",prefix:"Prefix of the sensors",cellCount:"Number of cells",cellColumns:"Number of columns",cellLayout:"Cell Layout",layout:"Layout",deltaVoltageUnit:"Delta Voltage Unit",cellColorMode:"Cell Color Mode",cellOrientation:"Cell Orientation",minCellVoltage:"Min Cell Voltage (V)",maxCellVoltage:"Max Cell Voltage (V)",manualAssignment:"Manual entity assignment",tempSensorsCount:"Number of temperature sensors available",hasHeater:"Heater option is used"},fe={charge:"Charge",discharge:"Discharge",balance:"Balance",heater:"Heater"},be={power:"Power:",capacity:"Capacity:",cycleCapacity:"Cycle Cap:",averageCellV:"Avg Cell V:",balanceCurrent:"Balance Cur:",stateOfCharge:"SOC:",remainingAmps:"Remaining:",cycles:"Cycles:",delta:"Delta Voltage:",mosfetTemp:"MOS Temp:",temperature_sensor_1:"Temp. 1:",temperature_sensor_2:"Temp. 2:",temperature_sensor_3:"Temp. 3:",temperature_sensor_4:"Temp. 4:"},ye={capacity:"Capacity",time:"Time","grid-solar":"Grid/Solar",load:"Load","total-voltage":"Total Voltage",current:"Current",mosfetTemp:"MOS Temp",delta:"Delta",temperature_sensor:"Temp",balancing:"Balancing",volt:"V",charge:"Charge",discharge:"Discharge",remaining:"Remaining"},xe={common:ve,config:me,switches:fe,stats:be,html_texts:ye},Ce={title:"Карта JK BMS",description:"Налаштовувана картка Home Assistant для емуляції екрану JK BMS",version:"Версія"},Se={language:"Мова",title:"Заголовок",prefix:"Префікс сенсорів",cellCount:"Кількість комірок",cellColumns:"Кількість стовпців",cellLayout:"Розташування комірок",layout:"Макет",deltaVoltageUnit:"Одиниця дельта напруги",cellColorMode:"Режим кольору комірок",cellOrientation:"Орієнтація комірок",minCellVoltage:"Мін. напруга комірки (В)",maxCellVoltage:"Макс. напруга комірки (В)",manualAssignment:"Ручне призначення сутності",tempSensorsCount:"Кількість доступних датчиків температури",hasHeater:"Використовується опція підігріву"},we={charge:"Заряд",discharge:"Розряд",balance:"Баланс",heater:"Підігрів"},$e={power:"Потужність:",capacity:"Ємність:",cycleCapacity:"Ємність циклу:",averageCellV:"Середня напруга комірки:",balanceCurrent:"Струм балансування:",stateOfCharge:"Заряд:",remainingAmps:"Залишок (Аг):",cycles:"Цикли:",delta:"Дельта напруги:",mosfetTemp:"Температура MOS:",temperature_sensor_1:"Темп. 1:",temperature_sensor_2:"Темп. 2:",temperature_sensor_3:"Темп. 3:",temperature_sensor_4:"Темп. 4:"},ke={capacity:"Ємність",time:"Час","grid-solar":"Мережа/Сонячна",load:"Навантаження","total-voltage":"Загальна напруга",current:"Струм",mosfetTemp:"Темп. MOS",delta:"Дельта",temperature_sensor:"Темп",balancing:"Балансування",volt:"В",charge:"Заряд",discharge:"Розряд",remaining:"Залишок"},Ae={common:Ce,config:Se,switches:we,stats:$e,html_texts:ke},Ee={title:"Card JK BMS",description:"Un card Home Assistant personalizabil care imită ecranul JK BMS",version:"Versiune"},Me={language:"Limba",title:"Titlu",prefix:"Prefixul senzorilor",cellCount:"Număr de celule",cellColumns:"Număr de coloane",cellLayout:"Aranjament celule",layout:"Aranjament general",deltaVoltageUnit:"Unitate diferență tensiune",cellColorMode:"Mod colorare celule",cellOrientation:"Orientare celule",minCellVoltage:"Tensiune minimă celulă (V)",maxCellVoltage:"Tensiune maximă celulă (V)",manualAssignment:"Atribuire manuală entități",tempSensorsCount:"Număr senzori temperatură disponibili",hasHeater:"Opțiunea încălzitor este utilizată"},Oe={charge:"Încărcare",discharge:"Descărcare",balance:"Echilibrare",heater:"Încălzitor"},Te={power:"Putere:",capacity:"Capacitate:",cycleCapacity:"Cap. totală:",averageCellV:"Medie celule:",balanceCurrent:"Curent echilibrare:",stateOfCharge:"SOC:",remainingAmps:"Rămase:",cycles:"Cicluri:",delta:"Diferență tensiune:",mosfetTemp:"Temp. MOSFET:",temperature_sensor_1:"Temp. 1:",temperature_sensor_2:"Temp. 2:",temperature_sensor_3:"Temp. 3:",temperature_sensor_4:"Temp. 4:"},Ve={capacity:"Capacitate",time:"Timp","grid-solar":"Rețea/Solar",load:"Consum","total-voltage":"Tensiune totală",current:"Curent",mosfetTemp:"Temp. MOSFET",delta:"Diferență",temperature_sensor:"Temp",balancing:"Echilibrare",volt:"V",charge:"Încărcare",discharge:"Descărcare",remaining:"Rămas"},ze={common:Ee,config:Me,switches:Oe,stats:Te,html_texts:Ve},De={title:"JK BMS Karte",description:"Eine anpassbare Home Assistant Karte, die den JK BMS Bildschirm nachbildet",version:"Version"},Ne={language:"Sprache",title:"Titel",prefix:"Präfix der Sensoren",cellCount:"Anzahl der Zellen",cellColumns:"Anzahl der Spalten",cellLayout:"Zellen-Layout",layout:"Layout",deltaVoltageUnit:"Einheit der Spannungsdifferenz",cellColorMode:"Zellen-Farbmodus",cellOrientation:"Zellen-Ausrichtung",minCellVoltage:"Min. Zellspannung (V)",maxCellVoltage:"Max. Zellspannung (V)",manualAssignment:"Manuelle Entitäten-Zuweisung",tempSensorsCount:"Anzahl verfügbarer Temperatursensoren",hasHeater:"Heizungs-Option wird verwendet"},Pe={charge:"Laden",discharge:"Entladen",balance:"Balancing",heater:"Heizung"},Ie={power:"Leistung:",capacity:"Kapazität:",cycleCapacity:"Zyklus-Kap.:",averageCellV:"Durchschn. V:",balanceCurrent:"Balancing-Strom:",stateOfCharge:"SOC:",remainingAmps:"Verbleibend:",cycles:"Zyklen:",delta:"Spannungsdiff.:",mosfetTemp:"MOS Temp:",temperature_sensor_1:"Temp. 1:",temperature_sensor_2:"Temp. 2:",temperature_sensor_3:"Temp. 3:",temperature_sensor_4:"Temp. 4:"},Le={capacity:"Kapazität",time:"Zeit","grid-solar":"Netz/Solar",load:"Last","total-voltage":"Gesamtspannung",current:"Stromstärke",mosfetTemp:"MOS Temp",delta:"Differenz",temperature_sensor:"Temp",balancing:"Balancing",volt:"V",charge:"Laden",discharge:"Entladen",remaining:"Restzeit"},Ue={common:De,config:Ne,switches:Pe,stats:Ie,html_texts:Le};const He={hass:null},Fe={en:Object.freeze({__proto__:null,common:ve,config:me,default:xe,html_texts:ye,stats:be,switches:fe}),uk:Object.freeze({__proto__:null,common:Ce,config:Se,default:Ae,html_texts:ke,stats:$e,switches:we}),ro:Object.freeze({__proto__:null,common:Ee,config:Me,default:ze,html_texts:Ve,stats:Te,switches:Oe}),de:Object.freeze({__proto__:null,common:De,config:Ne,default:Ue,html_texts:Le,stats:Ie,switches:Pe})};function Re(e,t="",n=""){try{let l=He.cardConfig?.language,s=localStorage.getItem("selectedLanguage");null===s&&(s=localStorage.getItem("assist_debug_language")),null===s&&(s=localStorage.getItem("editor-language")),null===s&&(s="en"),s=s.replace(/['"]+/g,"").replace("-","_");const a=l||He.hass?.selectedLanguage||He.hass?.locale?.language||He.hass?.language||s;let i;try{i=e?.split(".").reduce(((e,t)=>e[t]),Fe[a])}catch(t){i=e?.split(".")?.reduce(((e,t)=>e[t]),Fe.en)}return void 0===i&&(i=e?.split(".")?.reduce(((e,t)=>e[t]),Fe.en)),""!==t&&""!==n&&(i=i.replace(t,n)),i}catch(t){return e}}const je=(e,t)=>{const n=e?.entities[t]?.toString()?.trim();return n&&n.length>1?n:t?.toString()},Be=(e,t,n,l="sensor")=>{if(!e)return;e.stopPropagation();const s=je(t,n),a=s.includes("sensor.")||s.includes("switch.")||s.includes("number.")||s.includes("binary_sensor.")?s:l+"."+t?.prefix+"_"+s;let i=new CustomEvent("hass-more-info",{detail:{entityId:a},composed:!0});e.target.dispatchEvent(i)},Ke=(e,t,n,l=2,s="",a="sensor")=>{const i=je(t,n);if(!i)return s;const r=i.includes("sensor.")||i.includes("switch.")||i.includes("number.")||i.includes("binary_sensor.")?i:"".concat(a,".").concat(t.prefix,"_").concat(i),c=e?.states[r],o=c?.state,_=Number(o);return isNaN(_)?o??s:_.toFixed(l)},We=(e="V",t)=>{const n="string"==typeof t?parseFloat(t):t;if(isNaN(n))return"-";if("mV"===e)return"".concat((1e3*n).toFixed(0)," mV");const l=n.toLocaleString("en-US",{minimumFractionDigits:0,maximumFractionDigits:3});return"".concat(l," V")};var Je,Ze,qe,Ge,Qe,Xe,Ye,et,tt,nt,lt,st,at,it;let rt=class extends re{constructor(){super(...arguments),this.minCellId="",this.maxCellId="",this.maxDeltaV=0,this.shouldBalance=!1}_navigate(e,t,n="sensor"){Be(e,this.config,t,n)}getState(e,t=2,n="",l="sensor"){return Ke(this.hass,this.config,e,t,n,l)}_renderSwitch(t,n){const l=this.getState(t,0,"","switch"),s="on"===l?"status-on":"status-off";return j(Je||(Je=e(['\n

\n "])),(e=>this._navigate(e,t,"switch")),Re("switches."+n),s,l.toUpperCase())}configOrEnum(e){return je(this.config,e)}render(){if(He.hass=this.hass,!this.hass||!this.config)return j(Ze||(Ze=e([""])));const t=this.config.title||"Bat 1";this.maxDeltaV=parseFloat(this.getState(ue.delta_cell_voltage,3,"0"));const n=parseFloat(this.getState(ue.balancing_current,2,"0")),l=parseFloat(this.getState(ue.power,2,"0")),s=Number(this.getState(ue.balance_trigger_voltage,2,"","number"));this.shouldBalance=this.maxDeltaV>=s;const a=l>0?"power-positive":l<0?"power-negative":"power-even",i=n>0?"balance-positive":n<0?"balance-negative":"balance-even",r=this.shouldBalance?"delta-needs-balancing":"delta-ok",c=this.getState(ue.total_runtime_formatted),o=c&&"unknown"!=c?j(qe||(qe=e([" | ",': ',""])),Re("html_texts.time"),c.toUpperCase()):"";return j(Ge||(Ge=e(['\n \n
\n
\n
\n\n
\n ',"\n ","\n ","\n ","\n
\n \n ",'\n\n
\n
\n
\n '," ","\n
\n ",' '," A\n ",'\n
\n\n
\n
\n '," A\n
\n ",' \n
\n\n \n \n \n\n
\n ',"\n
\n \n "])),(e=>this._navigate(e,ue.total_runtime_formatted)),t,o,"1"==this.config.hasHeater?"4":"3",this._renderSwitch(ue.charging,"charge"),this._renderSwitch(ue.discharging,"discharge"),this._renderSwitch(ue.balancer,"balance"),"1"==this.config.hasHeater?this._renderSwitch(ue.heater,"heater"):"",this._renderError(),(e=>this._navigate(e,ue.total_voltage)),this.getState(ue.total_voltage),Re("html_texts.volt"),Re("stats.power"),a,(e=>this._navigate(e,ue.power)),this.getState(ue.power),Re("stats.capacity"),(e=>this._navigate(e,ue.total_battery_capacity_setting)),this.getState(ue.total_battery_capacity_setting),Re("stats.cycleCapacity"),(e=>this._navigate(e,ue.total_charging_cycle_capacity)),this.getState(ue.total_charging_cycle_capacity),Re("stats.averageCellV"),(e=>this._navigate(e,ue.average_cell_voltage)),this.getState(ue.average_cell_voltage,3),Re("html_texts.volt"),Re("stats.balanceCurrent"),i,n.toFixed(1),this._renderTemps(1),(e=>this._navigate(e,ue.current)),this.getState(ue.current),Re("stats.stateOfCharge"),(e=>this._navigate(e,ue.state_of_charge)),this.getState(ue.state_of_charge),Re("stats.remainingAmps"),(e=>this._navigate(e,ue.capacity_remaining)),this.getState(ue.capacity_remaining),Re("stats.cycles"),(e=>this._navigate(e,ue.charging_cycles)),this.getState(ue.charging_cycles),Re("stats.delta"),r,(e=>this._navigate(e,ue.delta_cell_voltage)),We(this.config.deltaVoltageUnit,this.maxDeltaV),Re("stats.mosfetTemp"),(e=>this._navigate(e,ue.power_tube_temperature)),this.getState(ue.power_tube_temperature),this._renderTemps(2),this.config.cellColumns??2,this._renderCells("bankMode"==this.config.cellLayout))}updated(){requestAnimationFrame((()=>this._updateFlowLine()))}connectedCallback(){super.connectedCallback(),window.addEventListener("resize",this._updateFlowLine.bind(this))}disconnectedCallback(){super.disconnectedCallback(),window.removeEventListener("resize",this._updateFlowLine.bind(this))}_renderError(){const t=this.getState(ue.errors,0);return t.trim().length<=1||"0"==t?j(Qe||(Qe=e([""]))):j(Xe||(Xe=e(['',""])),t)}_renderTemps(t){const n=[],l=this.config?.tempSensorsCount??0;for(let s=t;s<=l;s+=2)n.push(j(Ye||(Ye=e(["\n
",' \n \n ',"\n ","\n \n ","\n
\n "])),t,(e=>this._navigate(e,ue["cell_voltage_".concat(t)])),t.toString().padStart(2,"0"),i?j(st||(st=e([''," ",""])),i,n,Re("html_texts.volt")):j(at||(at=e([""," ",""])),n,Re("html_texts.volt")),r)}_updateFlowLine(){const e=parseFloat(this.getState(ue.balancing_current,3,"0")),t=this.renderRoot.querySelector("#cell-".concat(this.minCellId)),n=this.renderRoot.querySelector("#cell-".concat(this.maxCellId)),l=this.renderRoot.querySelector("#flow-path");if(!l)return;if(!this.shouldBalance&&0===e||!t||!n)return l.setAttribute("d",""),void(l.style.display="none");l.style.display="inline";const s=(this.renderRoot instanceof ShadowRoot?this.renderRoot.host:this).getBoundingClientRect(),a=t.getBoundingClientRect(),i=e=>{const t=e.left+e.width/2this.fetchHistory()),6e4)}_navigate(e,t,n="sensor"){Be(e,this.config,t,n)}updated(e){e.has("hass")&&this._updateRealtimeHistory()}_updateRealtimeHistory(){if(!this.hass||!this.config)return;const e=[ue.total_voltage,ue.current,ue.power_tube_temperature,ue.delta_cell_voltage],t=Date.now()-36e5;e.forEach((e=>{const n=this._resolveEntityId(e);if(!n)return;const l=this.hass.states[n];if(!l)return;const s=parseFloat(l.state),a=new Date(l.last_updated).getTime();if(isNaN(s))return;const i=this.historyData[n]||[],r=i.length>0?i[i.length-1]:null;if(!r||a>r.time){const e=[...i,{state:s,time:a}];for(;e.length>0&&e[0].timee)),t=[...new Set(e)];if(0===t.length)return;const n=new Date,l=new Date(n.getTime()-36e5);try{const e=await this.hass.callWS({type:"history/history_during_period",start_time:l.toISOString(),end_time:n.toISOString(),entity_ids:t,minimal_response:!0,no_attributes:!0});if(e){const t={};Object.keys(e).forEach((n=>{const l=e[n];Array.isArray(l)&&(t[n]=l.map((e=>({state:parseFloat(e.s||e.state),time:1e3*(e.lu||new Date(e.last_updated).getTime()/1e3)}))).filter((e=>!isNaN(e.state))))})),this.historyData={...this.historyData,...t}}}catch(e){console.warn("JK BMS Card: Failed to fetch history via WS",e)}}configOrEnum(e){return je(this.config,e)}_resolveEntityId(e){const t=this.configOrEnum(e);if(t)return t.includes(".")?t:"sensor.".concat(this.config.prefix,"_").concat(t)}_renderSparkline(t,n){const l=this._resolveEntityId(t);if(!l||!this.historyData[l]||this.historyData[l].length<2)return j(ct||(ct=e(['\n
'])));const s=this.historyData[l];let a=1/0,i=-1/0;s.forEach((e=>{const t=Number(Number(e.state).toFixed(3));ti&&(i=t)}));let r=i-a;if(r<1){const e=(a+i)/2;a=e-.5,i=e+.5}else a-=.05*r,i+=.05*r;const c=s[0].time,o=s[s.length-1].time-c;if(o<=0)return j(ot||(ot=e([""])));let _="";return s.forEach(((e,t)=>{const n=(e.time-c)/o*100,l=100-(e.state-a)/(i-a)*100;_+="".concat(0===t?"M":"L"," ").concat(n.toFixed(1),",").concat(l.toFixed(1)," ")})),j(_t||(_t=e(['\n
\n \n \n \n \n
\n '])),_,n,_,n)}getState(e,t=2,n="",l="sensor"){return Ke(this.hass,this.config,e,t,n,l)}render(){if(He.hass=this.hass,!this.hass||!this.config)return j(dt||(dt=e([""])));const t=this.getState(ue.hardware_version),n=this.getState(ue.software_version),l=this.config.title||j(ht||(ht=e(["Bat 1 - ",": "," Ah
\n HW: "," | SW: ",""])),Re("html_texts.capacity"),this.getState(ue.total_battery_capacity_setting),t,n),s=this.getState(ue.total_runtime_formatted),a=s&&"unknown"!=s?j(gt||(gt=e(["",": ",""])),Re("html_texts.time"),s.toUpperCase()):"",i=parseFloat(this.getState(ue.current)),r=this.getState(ue.charging_power),c=this.getState(ue.discharging_power),o=i>0,_=i<0,d="on"===this.getState(ue.charging,0,"","switch"),h="on"===this.getState(ue.discharging,0,"","switch"),g="on"===this.getState(ue.balancing,0,"","binary_sensor");parseFloat(this.getState(ue.balancing_current));const p=this.getState(ue.state_of_charge);this.getState(ue.total_battery_capacity_setting);const u=this.getState(ue.total_voltage),v=this.getState(ue.power_tube_temperature),m=this.getState(ue.total_charging_cycle_capacity),f=parseFloat(this.getState(ue.charging_cycles)).toFixed(0).toString();return this.tempSensorsCount=this.config.tempSensorsCount,this.calculateDynamicMinMax(),j(pt||(pt=e(['\n \n
\n
\n\n
\n \x3c!-- Solar/Grid Node --\x3e\n
\n
\n \n
\n
','
\n
\n ',': ','\n
\n
\n
\n
\n
\n\n \x3c!-- Reactor (SOC) --\x3e\n
\n
\n
SoC:
\n
',"%
\n ",'\n
\n
\n\n \x3c!-- Load Node --\x3e\n
\n
\n \n
\n
','
\n
\n ',': ','\n
\n \n
\n
\n
\n
\n\n \x3c!-- SVG Flow Lines --\x3e\n \n \x3c!-- Left path (Charge) - Rough coordinates for now, will refine --\x3e\n \n \x3c!-- Right path (Discharge) --\x3e\n \n\n \n \n \n \n \n \n
\n\n \x3c!-- Stats Panels --\x3e\n
\n
\n
\n ','\n
',':
\n
\n
\n\n
\n ','\n
',':
\n
\n
\n
\n\n
\n
\n ','\n
',':
\n
\n
\n\n
\n ','\n
'," ",':
\n
\n
\n
','
\n
\n
\n \n
\n
\n
\n
\n
\n \n \x3c!-- Add number of cycles --\x3e\n
\n
\n
','
\n
\n
\n \n
\n
\n
\n
\n
\n
\n\n \x3c!-- Cells --\x3e\n
\n ',"\n
\n\n \n "])),(e=>this._navigate(e,ue.software_version)),l,(e=>this._navigate(e,ue.total_runtime_formatted)),a,(e=>this._navigate(e,ue.charging,"switch")),o?"var(--solar-color)":"#444",Re("html_texts.grid-solar"),Re("html_texts.charge"),d?"status-on":"status-off",d?"ON":"OFF",(e=>this._navigate(e,ue.charging_power)),r,g?"reactor-ring-balancing":"reactor-ring-base",(e=>this._navigate(e,ue.state_of_charge)),p,g?j(ut||(ut=e(['
\n ','\n
\n '," ",'\n
\n
\n ',"\n ",'\n
\n\n \x3c!-- Right column (2 and 4) --\x3e\n
\n ',"\n ","\n
\n "])),t?a(ue.temperature_sensor_1,1):"",l?a(ue.temperature_sensor_3,3):"",n?a(ue.temperature_sensor_2,2):"",s?a(ue.temperature_sensor_4,4):"")}_renderCells(){const e=[],t="bankMode"===this.config.cellLayout,n=this.config.cellColumns||2,l=this.config.cellCount||16,s=Math.floor(l/n),a=t?Math.ceil(l/n):l,i=l%n;for(let r=1;r<=a;r++){const c=[];if(t)if(i&&r===a)c.push(l);else for(let e=0;e100&&(d=100));const h=parseFloat(s),g=!isNaN(h)&&h>0,p=this.config.cellColorMode||"progress";let u="";if("gradient"===p){const e=[{r:180,g:60,b:60},{r:180,g:180,b:50},{r:60,g:180,b:60},{r:60,g:120,b:200},{r:90,g:60,b:200}];let t=Math.floor(d/25);t>=4&&(t=3);const n=d%25/25,l=e[t],s=e[t+1],a=Math.round(l.r+(s.r-l.r)*n),i=Math.round(l.g+(s.g-l.g)*n),r=Math.round(l.b+(s.b-l.b)*n);u="background: rgba(".concat(a,", ").concat(i,", ").concat(r,", 0.85);")}const v="gradient"===p?"background: rgba(0, 0, 0, 0.25); padding: 1px 3px; border-radius: 3px;":"",m=this.config.cellOrientation||"horizontal",f="vertical"===m?"cell-item cell-item-vertical":"cell-item";t.push(j(yt||(yt=e(['\n
\n ',"\n ","\n
\n "])),f,u,"progress"===p?j(xt||(xt=e(['\n
'])),d):"","vertical"===m?j(Ct||(Ct=e(['\n ','\n \n ','\n '," ","\n \n ","\n "])),(e=>this._navigate(e,ue["cell_voltage_".concat(n)])),String(n).padStart(2,"0"),r,v,l,Re("html_texts.volt"),g?j($t||($t=e(['\n .icon-circle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n justify-self: start;\n }\n\n .icon-stats > :nth-child(2) {\n justify-self: end;\n padding-right: 5px;\n }\n\n .icon-stats > .stat-value {\n font-size: 1.2em;\n font-weight: bold;\n }\n\n /* Cell Grid */\n\n .cell-grid {\n display: grid;\n gap: 6px;\n }\n\n .grid-1 {\n grid-template-columns: 1fr;\n }\n\n .grid-2 {\n grid-template-columns: repeat(2, 1fr);\n }\n\n .grid-3 {\n grid-template-columns: repeat(3, 1fr);\n }\n\n .grid-4 {\n grid-template-columns: repeat(4, 1fr);\n }\n\n .grid-5 {\n grid-template-columns: repeat(5, 1fr);\n }\n\n .grid-6 {\n grid-template-columns: repeat(6, 1fr);\n }\n\n .grid-7 {\n grid-template-columns: repeat(7, 1fr);\n }\n\n .grid-8 {\n grid-template-columns: repeat(8, 1fr);\n }\n\n .cell-item {\n background: var(--secondary-background-color, #2a2a2a);\n border-radius: 8px;\n padding: 4px 6px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 4px;\n font-size: 0.85em;\n position: relative;\n overflow: hidden;\n z-index: 0;\n }\n\n .cell-item-vertical {\n flex-direction: column;\n justify-content: center;\n padding: 6px 4px;\n gap: 3px;\n }\n\n .cell-item-vertical .cell-id {\n margin-right: 0;\n margin-bottom: 2px;\n }\n\n .cell-item-bg {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n background: rgba(48, 144, 199, 0.2);\n z-index: -1;\n transition: width 0.5s ease-out;\n }\n\n .cell-id {\n display: inline-block;\n padding: 0.1rem 0.25rem;\n background-color: #195569;\n color: #e4f3f8;\n border-radius: 999px;\n font-weight: 500;\n font-size: 1em;\n min-width: 1.4rem;\n text-align: center;\n margin-right: 3px;\n flex-shrink: 0;\n }\n\n .cell-volts {\n color: var(--primary-text-color);\n font-family: monospace;\n font-size: 1.2em;\n }\n\n .cell-res {\n color: var(--secondary-text-color);\n font-size: 1em;\n font-family: monospace;\n }\n\n .cell-low {\n color: #FFA500;\n }\n\n /* Example warning color */\n\n .cell-high {\n color: var(--discharge-color);\n }\n\n .status-on {\n color: var(--accent-color);\n font-weight: bold;\n }\n\n .status-off {\n color: var(--disabled-text-color, #666);\n font-weight: bold;\n }\n\n .clickable {\n cursor: pointer;\n }\n\n /* SVG Overlay for Lines */\n\n .flow-svg {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n z-index: 1;\n }\n\n .flow-svg path {\n fill: none;\n stroke-width: 2;\n stroke-dasharray: 8;\n }\n\n .path-charge {\n stroke: var(--solar-color);\n animation: flow 1s linear infinite;\n }\n\n .path-discharge {\n stroke: var(--discharge-color);\n animation: flow 1s linear infinite;\n }\n\n .path-inactive {\n stroke: #444;\n stroke-dasharray: 0;\n animation: none;\n }\n\n @keyframes flow {\n from {\n stroke-dashoffset: 16;\n }\n to {\n stroke-dashoffset: 0;\n }\n }\n\n /* Sparkline CSS */\n /* Sparkline CSS */\n\n .metric-group {\n position: relative;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 8px 0;\n z-index: 1;\n }\n\n .sparkline-container {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n overflow: hidden;\n opacity: 0.3;\n z-index: -1;\n pointer-events: none;\n }\n\n .sparkline-svg {\n width: 100%;\n height: 100%;\n }\n\n .spark-line {\n fill: none;\n stroke-width: 2;\n vector-effect: non-scaling-stroke;\n }\n\n .spark-area {\n fill-opacity: 0.2;\n stroke: none;\n }\n "]))),t([he()],At.prototype,"hass",void 0),t([he()],At.prototype,"config",void 0),t([he()],At.prototype,"historyData",void 0),At=t([oe("jk-bms-core-reactor-layout")],At);const Vt="1.2.10";console.groupCollapsed("%c🔋 JK-BMS Battery Card%c ready! 🚀 (v".concat(Vt,")"),"background: linear-gradient(to right, #41cd52, #3090c7); color: white; font-weight: bold; padding: 2px 8px; border-radius: 6px;","background: none; color: #AAA; font-style: italic;"),console.log("%c📖 Docs:","color: #41cd52; font-weight: bold;","https://github.com/Pho3niX90/jk-bms-card"),console.groupEnd();let zt=Tt=class extends re{setConfig(e){this._config=Tt.getStubConfig(),this._config={...this._config,...e},He.cardConfig=this._config}static getStubConfig(){return{language:"",title:Re("title"),prefix:"jk_bms",cellCount:16,cellColumns:2,cellLayout:"bankMode",tempSensorsCount:0,hasHeater:0,entities:Object.keys(ue).reduce(((e,t)=>(e[t]="",e)),{})}}static async getConfigElement(){return await Promise.resolve().then((function(){return It})),document.createElement(ge)}getCardSize(){return 3}render(){return He.hass=this.hass,this.hass&&this._config?"core-reactor"===this._config.layout?j(Mt||(Mt=e([""])),this.hass,this._config):j(Ot||(Ot=e(["\n \n "])),this.hass,this._config):j(Et||(Et=e([""])))}};var Dt,Nt;t([he()],zt.prototype,"hass",void 0),t([he()],zt.prototype,"_config",void 0),zt=Tt=t([oe(pe)],zt),window.customCards.push({type:pe,name:"JK BMS Card",preview:!0,description:Re("common.description"),configurable:!0});let Pt=class extends re{constructor(){super(...arguments),this._computeLabelCallback=e=>Re("config.".concat(e.name))??e.name}setConfig(e){this._config={...this._config,...e}}render(){if(!this._config||!this.hass)return j(Dt||(Dt=e([""])));const t=Object.values(ue).map((e=>({name:e,selector:{entity:{}}})));return j(Nt||(Nt=e(["\n\t\t\t\n\t\t"])),this.hass,this._config,this._computeLabelCallback.bind(this),[{type:"grid",title:Re("config.title"),schema:[{type:"grid",schema:[{name:"title",selector:{text:{}}}]}]},{type:"grid",title:Re("config.language"),schema:[{type:"grid",schema:[{name:"language",selector:{select:{options:[{label:"Auto (follow HA)",value:""},{label:"English",value:"en"},{label:"Română",value:"ro"},{label:"Українська",value:"uk"},{label:"German",value:"de"}],mode:"dropdown"}}}]}]},{type:"grid",title:Re("config.prefix"),schema:[{type:"grid",schema:[{name:"prefix",selector:{text:{}}}]}]},{type:"grid",title:Re("config.layout"),schema:[{type:"grid",schema:[{name:"layout",selector:{select:{options:[{label:"Default",value:"default"},{label:"Core Reactor",value:"core-reactor"}]}}},{name:"deltaVoltageUnit",selector:{select:{options:[{label:"Volts (V)",value:"V"},{label:"Millivolts (mV)",value:"mV"}]}}},{name:"minCellVoltage",selector:{number:{min:2,max:4,step:.01,mode:"box"}}}]},{type:"grid",column_min_width:"200px",schema:[{name:"cellColorMode",selector:{select:{options:[{label:"Progress Bar",value:"progress"},{label:"Voltage Gradient",value:"gradient"}]}}},{name:"cellOrientation",selector:{select:{options:[{label:"Vertical",value:"vertical"},{label:"Horizontal",value:"horizontal"}]}}},{name:"maxCellVoltage",selector:{number:{min:2,max:4,step:.01,mode:"box"}}}]}]},{type:"grid",title:Re("config.cellCount"),schema:[{type:"grid",schema:[{name:"cellCount",selector:{number:{min:2,max:48,step:2}}},{name:"cellColumns",selector:{number:{min:1,max:8,step:1}}},{name:"cellLayout",selector:{select:{options:[{label:"Incremental",value:"incremental"},{label:"Bank Mode",value:"bankMode"}]}}}]}]},{type:"grid",title:Re("config.tempSensorsCount"),schema:[{type:"grid",schema:[{name:"tempSensorsCount",selector:{number:{min:0,max:4,step:2}}}]}]},{type:"grid",title:Re("config.hasHeater"),schema:[{type:"grid",schema:[{name:"hasHeater",selector:{select:{multiple:!1,mode:"list",options:[{label:"Yes",value:"1"},{label:"No",value:"0"}]}}}]}]},{type:"expandable",title:Re("config.manualAssignment"),schema:[{name:"entities",type:"grid",schema:t}]}],this._valueChanged.bind(this))}_valueChanged(e){!function(e,t,n,l){l=l||{},n=null==n?{}:n;const s=new Event(t,{bubbles:void 0===l.bubbles||l.bubbles,cancelable:Boolean(l.cancelable),composed:void 0===l.composed||l.composed});s.detail=n,e.dispatchEvent(s)}(this,"config-changed",{config:e.detail.value})}};t([he()],Pt.prototype,"hass",void 0),t([he()],Pt.prototype,"_config",void 0),t([he()],Pt.prototype,"lovelace",void 0),Pt=t([oe(ge)],Pt);var It=Object.freeze({__proto__:null,get JkBmsCardEditor(){return Pt}});export{Vt as CARD_VERSION,zt as JkBmsCard}; diff --git a/hass/settings/www/community/jk-bms-card/jk-bms-card.js.gz b/hass/settings/www/community/jk-bms-card/jk-bms-card.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f786afa0b89cbc325bed85adce4f61adee5210ba GIT binary patch literal 20658 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[a])&&(r=(o<3?s(r):o>3?s(e,i,r):s(e,i))||r);return o>3&&r&&Object.defineProperty(e,i,r),r}const e=window,i=e.ShadowRoot&&(void 0===e.ShadyCSS||e.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,n=Symbol(),s=new WeakMap;let o=class{constructor(t,e,i){if(this._$cssResult$=!0,i!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(i&&void 0===t){const i=void 0!==e&&1===e.length;i&&(t=s.get(e)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),i&&s.set(e,t))}return t}toString(){return this.cssText}};const r=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,i,n)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[n+1]),t[0]);return new o(i,t,n)},a=i?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const i of t.cssRules)e+=i.cssText;return(t=>new o("string"==typeof t?t:t+"",void 0,n))(e)})(t):t;var l;const d=window,c=d.trustedTypes,h=c?c.emptyScript:"",u=d.reactiveElementPolyfillSupport,v={toAttribute(t,e){switch(e){case Boolean:t=t?h:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let i=t;switch(e){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,e)=>e!==t&&(e==e||t==t),p={attribute:!0,type:String,converter:v,reflect:!1,hasChanged:f};let g=class extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;this.finalize(),(null!==(e=this.h)&&void 0!==e?e:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,i)=>{const n=this._$Ep(i,e);void 0!==n&&(this._$Ev.set(n,i),t.push(n))})),t}static createProperty(t,e=p){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const i="symbol"==typeof t?Symbol():"__"+t,n=this.getPropertyDescriptor(t,i,e);void 0!==n&&Object.defineProperty(this.prototype,t,n)}}static getPropertyDescriptor(t,e,i){return{get(){return this[e]},set(n){const s=this[t];this[e]=n,this.requestUpdate(t,s,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||p}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const i of e)this.createProperty(i,t[i])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const i=new Set(t.flat(1/0).reverse());for(const t of i)e.unshift(a(t))}else void 0!==t&&e.push(a(t));return e}static _$Ep(t,e){const i=e.attribute;return!1===i?void 0:"string"==typeof i?i:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,i;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(i=t.hostConnected)||void 0===i||i.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var t;const n=null!==(t=this.shadowRoot)&&void 0!==t?t:this.attachShadow(this.constructor.shadowRootOptions);return((t,n)=>{i?t.adoptedStyleSheets=n.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):n.forEach((i=>{const n=document.createElement("style"),s=e.litNonce;void 0!==s&&n.setAttribute("nonce",s),n.textContent=i.cssText,t.appendChild(n)}))})(n,this.constructor.elementStyles),n}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,i){this._$AK(t,i)}_$EO(t,e,i=p){var n;const s=this.constructor._$Ep(t,i);if(void 0!==s&&!0===i.reflect){const o=(void 0!==(null===(n=i.converter)||void 0===n?void 0:n.toAttribute)?i.converter:v).toAttribute(e,i.type);this._$El=t,null==o?this.removeAttribute(s):this.setAttribute(s,o),this._$El=null}}_$AK(t,e){var i;const n=this.constructor,s=n._$Ev.get(t);if(void 0!==s&&this._$El!==s){const t=n.getPropertyOptions(s),o="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(i=t.converter)||void 0===i?void 0:i.fromAttribute)?t.converter:v;this._$El=s,this[s]=o.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,i){let n=!0;void 0!==t&&(((i=i||this.constructor.getPropertyOptions(t)).hasChanged||f)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===i.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,i))):n=!1),!this.isUpdatePending&&n&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const i=this._$AL;try{e=this.shouldUpdate(i),e?(this.willUpdate(i),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(i)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(i)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}};var _;g.finalized=!0,g.elementProperties=new Map,g.elementStyles=[],g.shadowRootOptions={mode:"open"},null==u||u({ReactiveElement:g}),(null!==(l=d.reactiveElementVersions)&&void 0!==l?l:d.reactiveElementVersions=[]).push("1.5.0");const m=window,y=m.trustedTypes,b=y?y.createPolicy("lit-html",{createHTML:t=>t}):void 0,$=`lit$${(Math.random()+"").slice(9)}$`,w="?"+$,E=`<${w}>`,A=document,C=(t="")=>A.createComment(t),S=t=>null===t||"object"!=typeof t&&"function"!=typeof t,O=Array.isArray,j=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,k=/-->/g,x=/>/g,T=RegExp(">|[ \t\n\f\r](?:([^\\s\"'>=/]+)([ \t\n\f\r]*=[ \t\n\f\r]*(?:[^ \t\n\f\r\"'`<>=]|(\"|')|))|$)","g"),U=/'/g,P=/"/g,M=/^(?:script|style|textarea|title)$/i,N=(t=>(e,...i)=>({_$litType$:t,strings:e,values:i}))(1),I=Symbol.for("lit-noChange"),R=Symbol.for("lit-nothing"),H=new WeakMap,D=A.createTreeWalker(A,129,null,!1),F=(t,e)=>{const i=t.length-1,n=[];let s,o=2===e?"":"",r=j;for(let e=0;e"===l[0]?(r=null!=s?s:j,d=-1):void 0===l[1]?d=-2:(d=r.lastIndex-l[2].length,a=l[1],r=void 0===l[3]?T:'"'===l[3]?P:U):r===P||r===U?r=T:r===k||r===x?r=j:(r=T,s=void 0);const h=r===T&&t[e+1].startsWith("/>")?" ":"";o+=r===j?i+E:d>=0?(n.push(a),i.slice(0,d)+"$lit$"+i.slice(d)+$+h):i+$+(-2===d?(n.push(void 0),e):h)}const a=o+(t[i]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==b?b.createHTML(a):a,n]};class L{constructor({strings:t,_$litType$:e},i){let n;this.parts=[];let s=0,o=0;const r=t.length-1,a=this.parts,[l,d]=F(t,e);if(this.el=L.createElement(l,i),D.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(n=D.nextNode())&&a.length0){n.textContent=y?y.emptyScript:"";for(let i=0;iO(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.k(t):this.g(t)}O(t,e=this._$AB){return this._$AA.parentNode.insertBefore(t,e)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}g(t){this._$AH!==R&&S(this._$AH)?this._$AA.nextSibling.data=t:this.T(A.createTextNode(t)),this._$AH=t}$(t){var e;const{values:i,_$litType$:n}=t,s="number"==typeof n?this._$AC(t):(void 0===n.el&&(n.el=L.createElement(n.h,this.options)),n);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===s)this._$AH.p(i);else{const t=new G(s,this),e=t.v(this.options);t.p(i),this.T(e),this._$AH=t}}_$AC(t){let e=H.get(t.strings);return void 0===e&&H.set(t.strings,e=new L(t)),e}k(t){O(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let i,n=0;for(const s of t)n===e.length?e.push(i=new z(this.O(C()),this.O(C()),this,this.options)):i=e[n],i._$AI(s),n++;n2||""!==i[0]||""!==i[1]?(this._$AH=Array(i.length-1).fill(new String),this.strings=i):this._$AH=R}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,i,n){const s=this.strings;let o=!1;if(void 0===s)t=W(this,t,e,0),o=!S(t)||t!==this._$AH&&t!==I,o&&(this._$AH=t);else{const n=t;let r,a;for(t=s[0],r=0;r{var n,s;const o=null!==(n=null==i?void 0:i.renderBefore)&&void 0!==n?n:e;let r=o._$litPart$;if(void 0===r){const t=null!==(s=null==i?void 0:i.renderBefore)&&void 0!==s?s:null;o._$litPart$=r=new z(e.insertBefore(C(),t),t,void 0,null!=i?i:{})}return r._$AI(t),r})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return I}}tt.finalized=!0,tt._$litElement$=!0,null===(Q=globalThis.litElementHydrateSupport)||void 0===Q||Q.call(globalThis,{LitElement:tt});const et=globalThis.litElementPolyfillSupport;null==et||et({LitElement:tt}),(null!==(X=globalThis.litElementVersions)&&void 0!==X?X:globalThis.litElementVersions=[]).push("3.2.2");const it=(t,e)=>"method"===e.kind&&e.descriptor&&!("value"in e.descriptor)?{...e,finisher(i){i.createProperty(e.key,t)}}:{kind:"field",key:Symbol(),placement:"own",descriptor:{},originalKey:e.key,initializer(){"function"==typeof e.initializer&&(this[e.key]=e.initializer.call(this))},finisher(i){i.createProperty(e.key,t)}};function nt(t){return(e,i)=>void 0!==i?((t,e,i)=>{e.constructor.createProperty(i,t)})(t,e,i):it(t,e)}function st(t){return nt({...t,state:!0})}var ot;function rt(){return document.querySelector("hc-main")?document.querySelector("hc-main").hass:document.querySelector("home-assistant")?document.querySelector("home-assistant").hass:void 0}null===(ot=window.HTMLSlotElement)||void 0===ot||ot.prototype.assignedElements;const at="lovelace-player-device-id";function lt(){if(!localStorage[at]){const t=()=>Math.floor(1e5*(1+Math.random())).toString(16).substring(1);window.fully&&"function"==typeof fully.getDeviceId?localStorage[at]=fully.getDeviceId():localStorage[at]=`${t()}${t()}-${t()}${t()}`}return localStorage[at]}let dt=lt();const ct=new URLSearchParams(window.location.search);var ht;function ut(t){return!!String(t).includes("{%")||(!!String(t).includes("{{")||void 0)}ct.get("deviceID")&&null!==(ht=ct.get("deviceID"))&&("clear"===ht?localStorage.removeItem(at):localStorage[at]=ht,dt=lt()),window.cardMod_template_cache=window.cardMod_template_cache||{};const vt=window.cardMod_template_cache;async function ft(t,e,i){const n=rt().connection,s=JSON.stringify([e,i]);let o=vt[s];o?(o.callbacks.has(t)||pt(t),t(o.value),o.callbacks.add(t)):(pt(t),t(""),i=Object.assign({user:rt().user.name,browser:dt,hash:location.hash.substr(1)||""},i),vt[s]=o={template:e,variables:i,value:"",callbacks:new Set([t]),unsubscribe:n.subscribeMessage((t=>function(t,e){const i=vt[t];i&&(i.value=e.result,i.callbacks.forEach((t=>t(e.result))))}(s,t)),{type:"render_template",template:e,variables:i})})}async function pt(t){let e;for(const[i,n]of Object.entries(vt))if(n.callbacks.has(t)){n.callbacks.delete(t),0==n.callbacks.size&&(e=n.unsubscribe,delete vt[i]);break}e&&await(await e)()}var gt;const _t=(t,e)=>{if(t===e)return!0;if(typeof t!=typeof e)return!1;if(!(t instanceof Object&&e instanceof Object))return!1;for(const i in t)if(t.hasOwnProperty(i)){if(!e.hasOwnProperty(i))return!1;if(t[i]!==e[i]){if("object"!=typeof t[i])return!1;if(!_t(t[i],e[i]))return!1}}for(const i in e)if(e.hasOwnProperty(i)&&!t.hasOwnProperty(i))return!1;return!0};window.autoEntities_cache=null!==(gt=window.autoEntities_cache)&&void 0!==gt?gt:{};const mt=window.autoEntities_cache;async function yt(t){var e;return mt.areas=null!==(e=mt.areas)&&void 0!==e?e:await t.callWS({type:"config/area_registry/list"}),mt.areas}function bt(){return mt.areas}async function $t(t){var e;return mt.devices=null!==(e=mt.devices)&&void 0!==e?e:await t.callWS({type:"config/device_registry/list"}),mt.devices}function wt(){return mt.devices}async function Et(t){var e;return mt.entities=null!==(e=mt.entities)&&void 0!==e?e:await t.callWS({type:"config/entity_registry/list"}),mt.entities}function At(){return mt.entities}const Ct=/([mhd])\s+ago\s*$/i,St="m ago";function Ot(t,e){if("string"==typeof t&&t.startsWith("$$")&&(t=t.substring(2),e=JSON.stringify(e)),"string"==typeof e&&"string"==typeof t&&(t.startsWith("/")&&t.endsWith("/")||-1!==t.indexOf("*"))){return t.startsWith("/")||(t=`/^${t=t.replace(/\./g,".").replace(/\*/g,".*")}$/`),new RegExp(t.slice(1,-1)).test(e)}if("string"==typeof t){const i=Ct.exec(t);if(i){t=t.replace(i[0],"");e=((new Date).getTime()-new Date(e).getTime())/6e4;const n=i[1];"h"===n?e/=60:"d"===n&&(e=e/60/24)}}if("string"==typeof t){if(t.startsWith("<="))return parseFloat(e)<=parseFloat(t.substring(2));if(t.startsWith(">="))return parseFloat(e)>=parseFloat(t.substring(2));if(t.startsWith("<"))return parseFloat(e)"))return parseFloat(e)>parseFloat(t.substring(1));if(t.startsWith("!"))return parseFloat(e)!=parseFloat(t.substring(1));if(t.startsWith("="))return parseFloat(e)==parseFloat(t.substring(1))}return t===e}const jt={options:async()=>!0,sort:async()=>!0,domain:async(t,e,i)=>Ot(e,i.entity_id.split(".")[0]),entity_id:async(t,e,i)=>Ot(e,i.entity_id),state:async(t,e,i)=>Ot(e,i.state),name:async(t,e,i)=>{var n;return Ot(e,null===(n=i.attributes)||void 0===n?void 0:n.friendly_name)},group:async(t,e,i)=>{var n,s,o;return null===(o=null===(s=null===(n=t.states[e])||void 0===n?void 0:n.attributes)||void 0===s?void 0:s.entity_id)||void 0===o?void 0:o.includes(i.entity_id)},attributes:async(t,e,i)=>{for(const[t,n]of Object.entries(e)){let e=t.split(" ")[0],s=i.attributes;for(const t of e.split(":"))s=s?s[t]:void 0;if(void 0===s||!Ot(n,s))return!1}return!0},not:async(t,e,i)=>!await kt(t,e,i.entity_id),and:async(t,e,i)=>{for(const n of e)if(!await kt(t,n,i.entity_id))return!1;return!0},or:async(t,e,i)=>{for(const n of e)if(await kt(t,n,i.entity_id))return!0;return!1},device:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id));if(!n)return!1;const s=(await $t(t)).find((t=>t.id===n.device_id));return!!s&&(Ot(e,s.name_by_user)||Ot(e,s.name))},device_manufacturer:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id));if(!n)return!1;const s=(await $t(t)).find((t=>t.id===n.device_id));return!!s&&Ot(e,s.manufacturer)},device_model:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id));if(!n)return!1;const s=(await $t(t)).find((t=>t.id===n.device_id));return!!s&&Ot(e,s.model)},area:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id));if(!n)return!1;let s=(await yt(t)).find((t=>t.area_id===n.area_id));if(s)return Ot(e,s.name)||Ot(e,s.area_id);const o=(await $t(t)).find((t=>t.id===n.device_id));return!!o&&(s=(await yt(t)).find((t=>t.area_id===o.area_id)),!!s&&(Ot(e,s.name)||Ot(e,s.area_id)))},entity_category:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id));return!!n&&Ot(e,n.entity_category)},last_changed:async(t,e,i)=>(Ct.test(e)||(e+=St),Ot(e,i.last_changed)),last_updated:async(t,e,i)=>(Ct.test(e)||(e+=St),Ot(e,i.last_updated)),last_triggered:async(t,e,i)=>null!=i.attributes.last_triggered&&(Ct.test(e)||(e+=St),Ot(e,i.attributes.last_triggered)),integration:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id));return!!n&&Ot(e,n.platform)},hidden_by:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id));return!!n&&Ot(e,n.hidden_by)},label:async(t,e,i)=>{const n=(await Et(t)).find((t=>t.entity_id===i.entity_id)),s=await async function(t){var e;return mt.labels=null!==(e=mt.labels)&&void 0!==e?e:await t.callWS({type:"config/label_registry/list"}),mt.labels}(t),o=(t,e)=>{if(Ot(t,e))return!0;const i=s.find((t=>t.label_id===e));if(!i)return!1;return Ot(t,i.name)};if(!n)return!1;if(!n.labels)return!1;const r=n.labels.some((t=>o(e,t)));if(r)return r;const a=(await $t(t)).find((t=>t.id===n.device_id));if(!a)return!1;return a.labels.some((t=>o(e,t)))}};async function kt(t,e,i){var n;if(!t.states[i])return!1;for(let[s,o]of Object.entries(e))if(s=s.trim().split(" ")[0].trim(),!await(null===(n=jt[s])||void 0===n?void 0:n.call(jt,t,o,t.states[i])))return!1;return!0}function xt(t,e,i){var n,s,o,r;const[a,l]=i.reverse?[-1,1]:[1,-1];return i.ignore_case&&(t=null!==(s=null===(n=null==t?void 0:t.toLowerCase)||void 0===n?void 0:n.call(t))&&void 0!==s?s:t,e=null!==(r=null===(o=null==e?void 0:e.toLowerCase)||void 0===o?void 0:o.call(e))&&void 0!==r?r:e),i.numeric&&(isNaN(parseFloat(t))&&isNaN(parseFloat(e))||(t=isNaN(parseFloat(t))?void 0:parseFloat(t),e=isNaN(parseFloat(e))?void 0:parseFloat(e))),void 0===t&&void 0===e?0:void 0===t?a:void 0===e?l:i.numeric?t===e?0:(i.reverse?-1:1)*(t0,domain:(t,e,i)=>{var n,s;return xt(null===(n=null==t?void 0:t.entity_id)||void 0===n?void 0:n.split(".")[0],null===(s=null==e?void 0:e.entity_id)||void 0===s?void 0:s.split(".")[0],i)},entity_id:(t,e,i)=>xt(null==t?void 0:t.entity_id,null==e?void 0:e.entity_id,i),friendly_name:(t,e,i)=>{var n,s,o,r;return xt((null===(n=null==t?void 0:t.attributes)||void 0===n?void 0:n.friendly_name)||(null===(s=null==t?void 0:t.entity_id)||void 0===s?void 0:s.split(".")[1]),(null===(o=null==e?void 0:e.attributes)||void 0===o?void 0:o.friendly_name)||(null===(r=null==e?void 0:e.entity_id)||void 0===r?void 0:r.split(".")[1]),i)},name:(t,e,i)=>{var n,s,o,r;return xt((null===(n=null==t?void 0:t.attributes)||void 0===n?void 0:n.friendly_name)||(null===(s=null==t?void 0:t.entity_id)||void 0===s?void 0:s.split(".")[1]),(null===(o=null==e?void 0:e.attributes)||void 0===o?void 0:o.friendly_name)||(null===(r=null==e?void 0:e.entity_id)||void 0===r?void 0:r.split(".")[1]),i)},device:(t,e,i)=>{var n,s;const o=At().find((e=>e.entity_id===t.entity_id)),r=At().find((t=>t.entity_id===e.entity_id));if(!o||!r)return 0;const a=wt().find((t=>t.id===o.device_id)),l=wt().find((t=>t.id===r.device_id));return a&&l?xt(null!==(n=a.name_by_user)&&void 0!==n?n:a.name,null!==(s=l.name_by_user)&&void 0!==s?s:l.name,i):0},area:(t,e,i)=>{const n=At().find((e=>e.entity_id===t.entity_id)),s=At().find((t=>t.entity_id===e.entity_id));if(!n||!s)return 0;const o=wt().find((t=>t.id===n.device_id)),r=wt().find((t=>t.id===s.device_id));if(!o||!r)return 0;const a=bt().find((t=>t.area_id===o.area_id)),l=bt().find((t=>t.area_id===r.area_id));return a&&l?xt(a.name,l.name,i):0},state:(t,e,i)=>xt(null==t?void 0:t.state,null==e?void 0:e.state,i),attribute:(t,e,i)=>{var n;const[s,o]=(null==i?void 0:i.reverse)?[-1,1]:[1,-1];let r=null==t?void 0:t.attributes,a=null==e?void 0:e.attributes;for(const t of null===(n=null==i?void 0:i.attribute)||void 0===n?void 0:n.split(":")){if(void 0===r&&void 0===a)return 0;if(void 0===r)return s;if(void 0===a)return o;[r,a]=[r[t],a[t]]}return xt(r,a,i)},last_changed:(t,e,i)=>{const[n,s]=(null==i?void 0:i.reverse)?[-1,1]:[1,-1];return null==(null==t?void 0:t.last_changed)&&null==(null==e?void 0:e.last_changed)?0:null==(null==t?void 0:t.last_changed)?n:null==(null==e?void 0:e.last_changed)?s:(i.numeric=!0,xt(new Date(null==t?void 0:t.last_changed).getTime(),new Date(null==e?void 0:e.last_changed).getTime(),i))},last_updated:(t,e,i)=>{const[n,s]=(null==i?void 0:i.reverse)?[-1,1]:[1,-1];return null==(null==t?void 0:t.last_updated)&&null==(null==e?void 0:e.last_updated)?0:null==(null==t?void 0:t.last_updated)?n:null==(null==e?void 0:e.last_updated)?s:(i.numeric=!0,xt(new Date(null==t?void 0:t.last_updated).getTime(),new Date(null==e?void 0:e.last_updated).getTime(),i))},last_triggered:(t,e,i)=>{var n,s,o,r,a,l;const[d,c]=(null==i?void 0:i.reverse)?[-1,1]:[1,-1];return null==(null===(n=null==t?void 0:t.attributes)||void 0===n?void 0:n.last_triggered)&&null==(null===(s=null==e?void 0:e.attributes)||void 0===s?void 0:s.last_triggered)?0:null==(null===(o=null==t?void 0:t.attributes)||void 0===o?void 0:o.last_triggered)?d:null==(null===(r=null==e?void 0:e.attributes)||void 0===r?void 0:r.last_triggered)?c:(i.numeric=!0,xt(new Date(null===(a=null==t?void 0:t.attributes)||void 0===a?void 0:a.last_triggered).getTime(),new Date(null===(l=null==e?void 0:e.attributes)||void 0===l?void 0:l.last_triggered).getTime(),i))}};function Ut(t,e){return function(i,n){var s,o;return null!==(o=null===(s=Tt[e.method])||void 0===s?void 0:s.call(Tt,t.states[i.entity],t.states[n.entity],e))&&void 0!==o?o:0}}var Pt="1.13.0";const Mt=["none","domain","entity_id","state","name","group","area","device","device_manufacturer","device_model","attributes","last_changed","last_updated","last_triggered","entity_category","integration","hidden_by","label"],Nt={type:"select",options:[["domain","Entity Domain"],["entity_id","Entity ID"],["state","Entity State"],["name","Friendly Name"],["group","Member of Group"],["area","In area"],["device","Device"],["label","Label"],["device_manufacturer","Device Manufacturer"],["device_model","Device Model"],["attributes","Attribute"],["last_changed","Last Change"],["last_updated","Last Update"],["last_triggered","Last Trigger"],["entity_category","Entity Category"],["integration","Governing integration"],["hidden_by","Hidden by"]]},It=([t,e],i)=>{var n;return Mt.includes(t)?{type:"grid",name:"",schema:[Object.assign(Object.assign({},Nt),{name:`key_${i}`,label:"Property"}),{name:`value_${i}`,selector:null!==(n={attributes:{object:{}}}[t])&&void 0!==n?n:{text:{}},label:"Value"}]}:{type:"Constant",name:"Some filters are not shown",value:"Please switch to the CODE EDITOR to access all options."}},Rt=[{name:"options",selector:{object:{}}}],Ht=[{name:"data",selector:{object:{}}}],Dt=[{name:"method",label:"Sort method",type:"select",options:[["domain","Entity Domain"],["entity_id","Entity ID"],["friendly_name","Friendly Name"],["state","Entity State"],["last_changed","Last Change"],["last_updated","Last Update"],["last_triggered","Last Trigger"]]},{type:"constant",name:"Sorting options:",value:""},{type:"grid",name:"",schema:[{name:"reverse",type:"boolean",label:"Reverse"},{name:"ignore_case",type:"boolean",label:"Ignore case"},{name:"numeric",type:"boolean",label:"Numeric sort"},{name:"ip",type:"boolean",label:"IP address short"}]}],Ft=[{type:"grid",name:"",schema:[{name:"show_empty",type:"boolean",label:"Show if empty"},{name:"card_param",type:"string",label:"Parameter to populate"}]}];class Lt extends tt{constructor(){super(...arguments),this._selectedTab=0,this._cardGUIMode=!0,this._cardGUIModeAvailable=!0}setConfig(t){this._config=t}connectedCallback(){super.connectedCallback(),(async()=>{var t,e;if(customElements.get("ha-form"))return;const i=await(null===(e=(t=window).loadCardHelpers)||void 0===e?void 0:e.call(t));if(!i)return;const n=await i.createCardElement({type:"entity"});n&&await n.getConfigElement()})()}_handleSwitchTab(t){this._selectedTab=parseInt(t.detail.index,10)}_addFilterGroup(){var t;if(!this._config)return;const e=[...null===(t=this._config.filter)||void 0===t?void 0:t.include];e.push({});const i=Object.assign(Object.assign({},this._config.filter),{include:e});this._config=Object.assign(Object.assign({},this._config),{filter:i}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_deleteFilterGroup(t){var e;if(!this._config)return;const i=[...null===(e=this._config.filter)||void 0===e?void 0:e.include];i.splice(t,1);const n=Object.assign(Object.assign({},this._config.filter),{include:i});this._config=Object.assign(Object.assign({},this._config),{filter:n}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_moveFilterGroup(t,e){var i;if(!this._config)return;const n=[...null===(i=this._config.filter)||void 0===i?void 0:i.include];[n[t],n[t+e]]=[n[t+e],n[t]];const s=Object.assign(Object.assign({},this._config.filter),{include:n});this._config=Object.assign(Object.assign({},this._config),{filter:s}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_addSpecialEntry(){var t;if(!this._config)return;const e=[...null===(t=this._config.filter)||void 0===t?void 0:t.include];e.push({type:""});const i=Object.assign(Object.assign({},this._config.filter),{include:e});this._config=Object.assign(Object.assign({},this._config),{filter:i}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}async _changeSpecialEntry(t,e){var i,n,s,o;if(!this._config)return;const r=null!==(n=Object.assign({},null===(i=e.detail.value)||void 0===i?void 0:i.data))&&void 0!==n?n:{type:""};r.type=null!==(s=r.type)&&void 0!==s?s:"";const a=[...null===(o=this._config.filter)||void 0===o?void 0:o.include];a[t]=r;const l=Object.assign(Object.assign({},this._config.filter),{include:a});this._config=Object.assign(Object.assign({},this._config),{filter:l}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}async _changeGroupOptions(t,e){var i;if(!this._config)return;const n=e.detail.value,s=[...null===(i=this._config.filter)||void 0===i?void 0:i.include];s[t]=Object.assign({},n);const o=Object.assign(Object.assign({},this._config.filter),{include:s});this._config=Object.assign(Object.assign({},this._config),{filter:o}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_changeFilter(t,e){var i;if(!this._config)return;const n=((t,e)=>{var i;const n={};for(let s=0;s<=t.filter.include.length+1;s++)void 0!==e[`key_${s}`]&&(n[e[`key_${s}`]]=null!==(i=e[`value_${s}`])&&void 0!==i?i:"");return void 0!==e.key_new&&(n[e.key_new]=""),n})(this._config,e.detail.value),s=[...null===(i=this._config.filter)||void 0===i?void 0:i.include];s[t]=Object.assign(Object.assign({},n),{options:s[t].options}),this._config.filter=Object.assign(Object.assign({},this._config.filter),{include:s}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_changeSortOptions(t){if(!this._config)return;const e=t.detail.value;this._config=Object.assign(Object.assign({},this._config),{sort:e}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_changeCardOptions(t){if(!this._config)return;const e=t.detail.value;this._config=Object.assign(Object.assign({},this._config),e),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_showEmptyToggle(){if(!this._config)return;const t=!1===this._config.show_empty;this._config=Object.assign(Object.assign({},this._config),{show_empty:t}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_changeCardParam(t){if(!this._config)return;const e=""===t.target.value||"entities"===t.target.value?void 0:t.target.value;this._config=Object.assign(Object.assign({},this._config),{card_param:e}),this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_getCardConfig(){const t=Object.assign({},this._config.card);return t[this._config.card_param||"entities"]=[],t}_handleCardConfigChanged(t){if(t.stopPropagation(),!this._config)return;const e=Object.assign({},t.detail.config);delete e[this._config.card_param||"entities"],this._config=Object.assign(Object.assign({},this._config),{card:e}),this._cardGUIModeAvailable=t.detail.guiModeAvailable,this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}}))}_deleteCard(t){this._config&&(this._config=Object.assign({},this._config),delete this._config.card,this.dispatchEvent(new CustomEvent("config-changed",{detail:{config:this._config}})))}_toggleCardMode(t){var e;null===(e=this._cardEditorEl)||void 0===e||e.toggleMode()}_cardGUIModeChanged(t){t.stopPropagation(),this._cardGUIMode=t.detail.guiMode,this._cardGUIModeAvailable=t.detail.guiModeAvailable}render(){return this.hass&&this._config?N` +
+
+ + + + + + +
+
+ ${[this._renderFilterEditor,this._renderSortEditor,this._renderCardEditor,this._renderHelp][this._selectedTab].bind(this)()} +
+
+ `:N``}_renderHelp(){return N` +
+

Auto entities

+

+ See + + auto-entities on github + + for usage instructions. +

+

Not all options are available in the GUI editor.

+
+ `}_renderFilterEditor(){var t;return(null===(t=this._config.filter)||void 0===t?void 0:t.template)||this._config.entities?N` +
+

+ Your filter method is not handled by the GUI editor. +

+

Please switch to the CODE EDITOR to access all options.

+
+ `:N` + ${this._config.filter.include.map(((t,e)=>N` +
+
+ this._moveFilterGroup(e,-1)} + > + + + this._moveFilterGroup(e,1)} + > + + + this._deleteFilterGroup(e)} + > + + +
+ ${void 0===t.type?N` + {const e=Object.assign({},t);return delete e.options,[...Object.entries(e).map(It),Object.assign(Object.assign({},Nt),{name:"key_new",label:"Select property"})]})(t)} + .data=${(t=>{const e=Object.assign({},t);return delete e.options,Object.assign({},...Object.entries(e).map((([t,e],i)=>({[`key_${i}`]:t,[`value_${i}`]:e}))))})(t)} + .computeLabel=${t=>{var e;return null!==(e=t.label)&&void 0!==e?e:t.name}} + @value-changed=${t=>this._changeFilter(e,t)} + > +

Options:

+ this._changeGroupOptions(e,t)} + > + `:N` + this._changeSpecialEntry(e,t)} + > + `} +
+ `))} + + Add filter group + + + Add non-filter entry + + `}_renderSortEditor(){var t;const e=null!==(t=this._config.sort)&&void 0!==t?t:{method:"none"};return N` +
+ {var e;return null!==(e=t.label)&&void 0!==e?e:t.name}} + @value-changed=${this._changeSortOptions} + > +
+ `}_renderCardEditor(){var t;const e=Object.assign({},this._config);return e.show_empty=null===(t=e.show_empty)||void 0===t||t,N` +
+ {var e;return null!==(e=t.label)&&void 0!==e?e:t.name}} + .data=${e} + @value-changed=${this._changeCardOptions} + > + ${this._config.card?N` +
+ + ${!this._cardEditorEl||this._cardGUIMode?"Show code editor":"Show Visual Editor"} + + + Change card type + +
+ + `:N` + + `} +
+ `}static get styles(){return[r` + mwc-tab-bar { + border-bottom: 1px solid var(--divider-color); + } + + .box { + margin-top: 8px; + border: 1px solid var(--divider-color); + padding: 12px; + } + .option { + display: flex; + align-items: center; + gap: 8px; + } + + .box .toolbar { + display: flex; + justify-content: flex-end; + width: 100%; + gap: 8px; + } + .gui-mode-button { + margin-right: auto; + } + a { + color: var(--primary-color); + } + `]}}t([st()],Lt.prototype,"_config",void 0),t([nt()],Lt.prototype,"lovelace",void 0),t([nt()],Lt.prototype,"hass",void 0),t([st()],Lt.prototype,"_selectedTab",void 0),t([st()],Lt.prototype,"_cardGUIMode",void 0),t([st()],Lt.prototype,"_cardGUIModeAvailable",void 0),t([function(t,e){return(({finisher:t,descriptor:e})=>(i,n)=>{var s;if(void 0===n){const n=null!==(s=i.originalKey)&&void 0!==s?s:i.key,o=null!=e?{kind:"method",placement:"prototype",key:n,descriptor:e(i.key)}:{...i,key:n};return null!=t&&(o.finisher=function(e){t(e,n)}),o}{const s=i.constructor;void 0!==e&&Object.defineProperty(i,n,e(n)),null==t||t(s,n)}})({descriptor:i=>{const n={get(){var e,i;return null!==(i=null===(e=this.renderRoot)||void 0===e?void 0:e.querySelector(t))&&void 0!==i?i:null},enumerable:!0,configurable:!0};if(e){const e="symbol"==typeof i?Symbol():"__"+i;n.get=function(){var i,n;return void 0===this[e]&&(this[e]=null!==(n=null===(i=this.renderRoot)||void 0===i?void 0:i.querySelector(t))&&void 0!==n?n:null),this[e]}}return n}})}("hui-card-element-editor")],Lt.prototype,"_cardEditorEl",void 0),customElements.define("auto-entities-editor",Lt),window.customCards=window.customCards||[],window.customCards.push({type:"auto-entities",name:"Auto Entities",preview:!1,description:"Entity Filter on Steroids. Auto Entities allows you to fill other cards with entities automatically, based on a number of attributes."}),window.queueMicrotask=window.queueMicrotask||(t=>window.setTimeout(t,1));const Wt=["section","divider"];class Gt extends tt{constructor(){super(...arguments),this.empty=!1,this._updateCooldown={timer:void 0,rerun:!1},this._renderer=t=>{this._template="string"==typeof t?t.split(/[\s,]+/):t}}static getConfigElement(){return document.createElement("auto-entities-editor")}static getStubConfig(){return{card:{type:"entities"},filter:{include:[],exclude:[]}}}setConfig(t){var e,i;if(!t)throw new Error("No configuration.");if(!(null===(e=t.card)||void 0===e?void 0:e.type))throw new Error("No card type specified.");if(!t.filter&&!t.entities)throw new Error("No filters specified.");t=JSON.parse(JSON.stringify(t)),this._config=t,(null===(i=this._config.filter)||void 0===i?void 0:i.template)&&ut(this._config.filter.template)&&ft(this._renderer,this._config.filter.template,{config:t}),this._cardBuilt=new Promise((t=>this._cardBuiltResolve=t)),queueMicrotask((()=>this.build_else())),queueMicrotask((()=>this.update_all()))}connectedCallback(){var t,e;super.connectedCallback(),(null===(e=null===(t=this._config)||void 0===t?void 0:t.filter)||void 0===e?void 0:e.template)&&ut(this._config.filter.template)&&ft(this._renderer,this._config.filter.template,{config:this._config})}disconnectedCallback(){super.disconnectedCallback(),pt(this._renderer)}async update_all(){if(this.card&&(this.card.hass=this.hass),this.else&&(this.else.hass=this.hass),this._updateCooldown.timer)return void(this._updateCooldown.rerun=!0);this._updateCooldown.rerun=!1,this._updateCooldown.timer=window.setTimeout((()=>{this._updateCooldown.timer=void 0,this._updateCooldown.rerun&&this.update_all()}),500);const t=await this.update_entities();this.update_card(t)}async build_else(){if(void 0===this._config.else)return;const t=await window.loadCardHelpers();this.else=await t.createCardElement(this._config.else),this.else.hass=this.hass}async update_card(t){var e,i,n,s,o,r,a,l,d,c,h,u;if(this._entities&&_t(t,this._entities)&&_t(this._cardConfig,this._config.card))return;const v=(null===(e=this._cardConfig)||void 0===e?void 0:e.type)!==this._config.card.type;this._entities=t,this._cardConfig=JSON.parse(JSON.stringify(this._config.card));const f=Object.assign({[this._config.card_param||"entities"]:t},this._config.card);if(!this.card||v){const t=await window.loadCardHelpers();console.oldError=console.oldError||[];const e=console.error;console.oldError.push(e),console.error=(...t)=>{var i,n,s,o,r,a;3===t.length&&t[2].message&&((null===(n=(i=t[2].message).startsWith)||void 0===n?void 0:n.call(i,"Entities"))||(null===(o=(s=t[2].message).startsWith)||void 0===o?void 0:o.call(s,"Either entities"))||(null===(a=(r=t[2].message).endsWith)||void 0===a?void 0:a.call(r,"entity")))||e(...t)};try{if(this.card=await t.createCardElement(f),"hui-error-card"===this.card.localName){const t=this.card;await customElements.whenDefined("hui-error-card");let e=10;for(;!t._config&&e;)await new Promise((t=>window.setTimeout(t,100))),e--;if((null===(s=null===(n=null===(i=t._config)||void 0===i?void 0:i.error)||void 0===n?void 0:n.startsWith)||void 0===s?void 0:s.call(n,"Entities"))||(null===(a=null===(r=null===(o=t._config)||void 0===o?void 0:o.error)||void 0===r?void 0:r.startsWith)||void 0===a?void 0:a.call(r,"Either entities"))||(null===(c=null===(d=null===(l=t._config)||void 0===l?void 0:l.error)||void 0===d?void 0:d.endsWith)||void 0===c?void 0:c.call(d,"entity")))return this.card=void 0,this._entities=void 0,this._cardConfig=void 0,void(null===(h=this._cardBuiltResolve)||void 0===h||h.call(this))}}finally{console.error=console.oldError.pop()}}else this.card.setConfig(f);null===(u=this._cardBuiltResolve)||void 0===u||u.call(this),this.card.hass=this.hass,this.empty=0===t.length||t.every((t=>Wt.includes(t.type)));const p=this.empty&&!1===this._config.show_empty&&void 0===this._config.else;this.style.display=p?"none":null,this.style.margin=p?"0":null,this.card.requestUpdate&&(await this.updateComplete,this.card.requestUpdate())}async update_entities(){var t,e,i,n,s,o,r,a;const l=t=>t?"string"==typeof t?{entity:t.trim()}:t:null;let d=[...(null===(e=null===(t=this._config)||void 0===t?void 0:t.entities)||void 0===e?void 0:e.map(l))||[]];if(!this.hass)return d;if(this._template&&(d=d.concat(this._template.map(l))),d=d.filter(Boolean),null===(i=this._config.filter)||void 0===i?void 0:i.include){const t=Object.keys(this.hass.states).map(l);for(const e of this._config.filter.include){if(e.type){d.push(e);continue}let i=[];for(const n of t)await kt(this.hass,e,n.entity)&&i.push(JSON.parse(JSON.stringify(Object.assign(Object.assign({},n),e.options)).replace(/this.entity_id/g,n.entity)));if(e.sort&&(await Et(this.hass),await $t(this.hass),await yt(this.hass),i=i.sort(Ut(this.hass,e.sort)),null!==(n=e.sort.count)&&void 0!==n?n:e.sort.first)){const t=null!==(s=e.sort.first)&&void 0!==s?s:0;i=i.slice(t,t+(null!==(o=e.sort.count)&&void 0!==o?o:1/0))}d=d.concat(i)}}if(null===(r=this._config.filter)||void 0===r?void 0:r.exclude)for(const t of this._config.filter.exclude){const e=[];for(const i of d)void 0!==i.entity&&await kt(this.hass,t,i.entity)||e.push(i);d=e}if(this._config.sort&&(d=d.sort(Ut(this.hass,this._config.sort)),this._config.sort.count)){const t=null!==(a=this._config.sort.first)&&void 0!==a?a:0;d=d.slice(t,t+this._config.sort.count)}if(this._config.unique){let t=[];for(const e of d)"entity"===this._config.unique&&e.entity&&t.some((t=>t.entity===e.entity))||t.some((t=>_t(t,e)))||t.push(e);d=t}return d}async updated(t){(t.has("_template")||t.has("hass")&&this.hass)&&queueMicrotask((()=>this.update_all()))}createRenderRoot(){return this}render(){return N`${this.empty&&(!1===this._config.show_empty||this._config.else)?this.else:this.card}`}async getCardSize(){var t,e;let i=0;return await this._cardBuilt,this.card&&this.card.getCardSize&&(i=await this.card.getCardSize()),1===i&&(null===(t=this._entities)||void 0===t?void 0:t.length)&&(i=this._entities.length),0===i&&(null===(e=this._config.filter)||void 0===e?void 0:e.include)&&(i=Object.keys(this._config.filter.include).length),i||5}}t([nt()],Gt.prototype,"_config",void 0),t([nt()],Gt.prototype,"hass",void 0),t([nt()],Gt.prototype,"card",void 0),t([nt()],Gt.prototype,"else",void 0),t([nt()],Gt.prototype,"_template",void 0),t([st()],Gt.prototype,"empty",void 0),customElements.get("auto-entities")||(customElements.define("auto-entities",Gt),console.groupCollapsed(`%cAUTO-ENTITIES ${Pt} IS INSTALLED`,"color: green; font-weight: bold"),console.log("Readme:","https://github.com/thomasloven/lovelace-auto-entities"),console.groupEnd()); diff --git a/hass/settings/www/community/lovelace-auto-entities/auto-entities.js.gz b/hass/settings/www/community/lovelace-auto-entities/auto-entities.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..69894b85071162666e70ef3bd8b7b53760e829f0 GIT binary patch literal 13819 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 literal 0 HcmV?d00001 diff --git a/hass/settings/www/community/lovelace-auto-entities/rollup.config.js b/hass/settings/www/community/lovelace-auto-entities/rollup.config.js new file mode 100644 index 0000000..b067bae --- /dev/null +++ b/hass/settings/www/community/lovelace-auto-entities/rollup.config.js @@ -0,0 +1,24 @@ +import nodeResolve from "@rollup/plugin-node-resolve"; +import json from "@rollup/plugin-json"; +import typescript from "rollup-plugin-typescript2"; +import terser from "@rollup/plugin-terser"; +import babel from "@rollup/plugin-babel"; + +const dev = process.env.ROLLUP_WATCH; + +export default { + input: "src/main.ts", + output: { + file: "auto-entities.js", + format: "es", + }, + plugins: [ + nodeResolve(), + json(), + typescript(), + babel({ + exclude: "node_modules/**", + }), + !dev && terser({ format: { comments: false } }), + ], +}; diff --git a/hass/settings/www/community/lovelace-auto-entities/rollup.config.js.gz b/hass/settings/www/community/lovelace-auto-entities/rollup.config.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f7635389e55c4ae27de765ad578bc24215ddab04 GIT binary patch literal 323 zcmV-J0lfYniwFo0oaSZ%|8j3^Y;|xhV{dL|X=g5Ka{z6TF>Avx5QTUDimQi^hS-6Q z34xX_9Re+(r9&yfvCl<8(g~duQiA_`CCjNZWD(}x_fF4GLK(6SG&Q(ICV50?Eh)$! zElKIk!btxkbP<8VCL&*DBH0d1`Zgbxk#oNWxwgW%flhESz@z+d z%G+o!1v0Bivx5eYum)qPM&=UrvE06HHXm=h&!_k2mw@4^-`HSVdFkMs0SIlpTSCsZ zUZ_gw(s4cybMmeiA_LG0i2@BE(q+>B+caGdfTvpeCT56>c8VG=kr%Vs5TP4fcd>)XWGHxg{?B%Xnv@FJL!!2l VjL;3H?|Ig(vOh;>ruZxZ007S5nD_ty literal 0 HcmV?d00001 diff --git a/hass/settings/www/community/lovelace-multiple-entity-row/multiple-entity-row.js b/hass/settings/www/community/lovelace-multiple-entity-row/multiple-entity-row.js new file mode 100644 index 0000000..9550673 --- /dev/null +++ b/hass/settings/www/community/lovelace-multiple-entity-row/multiple-entity-row.js @@ -0,0 +1 @@ +(()=>{"use strict";const t=window,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,n=Symbol(),i=new WeakMap;class r{constructor(t,e,i){if(this._$cssResult$=!0,i!==n)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const n=this.t;if(e&&void 0===t){const e=void 0!==n&&1===n.length;e&&(t=i.get(n)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&i.set(n,t))}return t}toString(){return this.cssText}}const o=(t,...e)=>{const i=1===t.length?t[0]:e.reduce(((e,n,i)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if("number"==typeof t)return t;throw Error("Value passed to 'css' function must be a 'css' function result: "+t+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(n)+t[i+1]),t[0]);return new r(i,t,n)},s=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e="";for(const n of t.cssRules)e+=n.cssText;return(t=>new r("string"==typeof t?t:t+"",void 0,n))(e)})(t):t;var a;const c=window,l=c.trustedTypes,u=l?l.emptyScript:"",h=c.reactiveElementPolyfillSupport,f={toAttribute(t,e){switch(e){case Boolean:t=t?u:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,e){let n=t;switch(e){case Boolean:n=null!==t;break;case Number:n=null===t?null:Number(t);break;case Object:case Array:try{n=JSON.parse(t)}catch(t){n=null}}return n}},d=(t,e)=>e!==t&&(e==e||t==t),p={attribute:!0,type:String,converter:f,reflect:!1,hasChanged:d};class m extends HTMLElement{constructor(){super(),this._$Ei=new Map,this.isUpdatePending=!1,this.hasUpdated=!1,this._$El=null,this.u()}static addInitializer(t){var e;this.finalize(),(null!==(e=this.h)&&void 0!==e?e:this.h=[]).push(t)}static get observedAttributes(){this.finalize();const t=[];return this.elementProperties.forEach(((e,n)=>{const i=this._$Ep(n,e);void 0!==i&&(this._$Ev.set(i,n),t.push(i))})),t}static createProperty(t,e=p){if(e.state&&(e.attribute=!1),this.finalize(),this.elementProperties.set(t,e),!e.noAccessor&&!this.prototype.hasOwnProperty(t)){const n="symbol"==typeof t?Symbol():"__"+t,i=this.getPropertyDescriptor(t,n,e);void 0!==i&&Object.defineProperty(this.prototype,t,i)}}static getPropertyDescriptor(t,e,n){return{get(){return this[e]},set(i){const r=this[t];this[e]=i,this.requestUpdate(t,r,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)||p}static finalize(){if(this.hasOwnProperty("finalized"))return!1;this.finalized=!0;const t=Object.getPrototypeOf(this);if(t.finalize(),void 0!==t.h&&(this.h=[...t.h]),this.elementProperties=new Map(t.elementProperties),this._$Ev=new Map,this.hasOwnProperty("properties")){const t=this.properties,e=[...Object.getOwnPropertyNames(t),...Object.getOwnPropertySymbols(t)];for(const n of e)this.createProperty(n,t[n])}return this.elementStyles=this.finalizeStyles(this.styles),!0}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const n=new Set(t.flat(1/0).reverse());for(const t of n)e.unshift(s(t))}else void 0!==t&&e.push(s(t));return e}static _$Ep(t,e){const n=e.attribute;return!1===n?void 0:"string"==typeof n?n:"string"==typeof t?t.toLowerCase():void 0}u(){var t;this._$E_=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$Eg(),this.requestUpdate(),null===(t=this.constructor.h)||void 0===t||t.forEach((t=>t(this)))}addController(t){var e,n;(null!==(e=this._$ES)&&void 0!==e?e:this._$ES=[]).push(t),void 0!==this.renderRoot&&this.isConnected&&(null===(n=t.hostConnected)||void 0===n||n.call(t))}removeController(t){var e;null===(e=this._$ES)||void 0===e||e.splice(this._$ES.indexOf(t)>>>0,1)}_$Eg(){this.constructor.elementProperties.forEach(((t,e)=>{this.hasOwnProperty(e)&&(this._$Ei.set(e,this[e]),delete this[e])}))}createRenderRoot(){var n;const i=null!==(n=this.shadowRoot)&&void 0!==n?n:this.attachShadow(this.constructor.shadowRootOptions);return((n,i)=>{e?n.adoptedStyleSheets=i.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet)):i.forEach((e=>{const i=document.createElement("style"),r=t.litNonce;void 0!==r&&i.setAttribute("nonce",r),i.textContent=e.cssText,n.appendChild(i)}))})(i,this.constructor.elementStyles),i}connectedCallback(){var t;void 0===this.renderRoot&&(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostConnected)||void 0===e?void 0:e.call(t)}))}enableUpdating(t){}disconnectedCallback(){var t;null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostDisconnected)||void 0===e?void 0:e.call(t)}))}attributeChangedCallback(t,e,n){this._$AK(t,n)}_$EO(t,e,n=p){var i;const r=this.constructor._$Ep(t,n);if(void 0!==r&&!0===n.reflect){const o=(void 0!==(null===(i=n.converter)||void 0===i?void 0:i.toAttribute)?n.converter:f).toAttribute(e,n.type);this._$El=t,null==o?this.removeAttribute(r):this.setAttribute(r,o),this._$El=null}}_$AK(t,e){var n;const i=this.constructor,r=i._$Ev.get(t);if(void 0!==r&&this._$El!==r){const t=i.getPropertyOptions(r),o="function"==typeof t.converter?{fromAttribute:t.converter}:void 0!==(null===(n=t.converter)||void 0===n?void 0:n.fromAttribute)?t.converter:f;this._$El=r,this[r]=o.fromAttribute(e,t.type),this._$El=null}}requestUpdate(t,e,n){let i=!0;void 0!==t&&(((n=n||this.constructor.getPropertyOptions(t)).hasChanged||d)(this[t],e)?(this._$AL.has(t)||this._$AL.set(t,e),!0===n.reflect&&this._$El!==t&&(void 0===this._$EC&&(this._$EC=new Map),this._$EC.set(t,n))):i=!1),!this.isUpdatePending&&i&&(this._$E_=this._$Ej())}async _$Ej(){this.isUpdatePending=!0;try{await this._$E_}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var t;if(!this.isUpdatePending)return;this.hasUpdated,this._$Ei&&(this._$Ei.forEach(((t,e)=>this[e]=t)),this._$Ei=void 0);let e=!1;const n=this._$AL;try{e=this.shouldUpdate(n),e?(this.willUpdate(n),null===(t=this._$ES)||void 0===t||t.forEach((t=>{var e;return null===(e=t.hostUpdate)||void 0===e?void 0:e.call(t)})),this.update(n)):this._$Ek()}catch(t){throw e=!1,this._$Ek(),t}e&&this._$AE(n)}willUpdate(t){}_$AE(t){var e;null===(e=this._$ES)||void 0===e||e.forEach((t=>{var e;return null===(e=t.hostUpdated)||void 0===e?void 0:e.call(t)})),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$Ek(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$E_}shouldUpdate(t){return!0}update(t){void 0!==this._$EC&&(this._$EC.forEach(((t,e)=>this._$EO(e,this[e],t))),this._$EC=void 0),this._$Ek()}updated(t){}firstUpdated(t){}}var y;m.finalized=!0,m.elementProperties=new Map,m.elementStyles=[],m.shadowRootOptions={mode:"open"},null==h||h({ReactiveElement:m}),(null!==(a=c.reactiveElementVersions)&&void 0!==a?a:c.reactiveElementVersions=[]).push("1.6.1");const v=window,b=v.trustedTypes,_=b?b.createPolicy("lit-html",{createHTML:t=>t}):void 0,g="$lit$",$=`lit$${(Math.random()+"").slice(9)}$`,w="?"+$,A=`<${w}>`,S=document,O=()=>S.createComment(""),E=t=>null===t||"object"!=typeof t&&"function"!=typeof t,j=Array.isArray,P="[ \t\n\f\r]",k=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,x=/-->/g,C=/>/g,N=RegExp(`>|${P}(?:([^\\s"'>=/]+)(${P}*=${P}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),D=/'/g,T=/"/g,U=/^(?:script|style|textarea|title)$/i,R=t=>(e,...n)=>({_$litType$:t,strings:e,values:n}),H=R(1),M=(R(2),Symbol.for("lit-noChange")),I=Symbol.for("lit-nothing"),z=new WeakMap,L=S.createTreeWalker(S,129,null,!1),F=(t,e)=>{const n=t.length-1,i=[];let r,o=2===e?"":"",s=k;for(let e=0;e"===c[0]?(s=null!=r?r:k,l=-1):void 0===c[1]?l=-2:(l=s.lastIndex-c[2].length,a=c[1],s=void 0===c[3]?N:'"'===c[3]?T:D):s===T||s===D?s=N:s===x||s===C?s=k:(s=N,r=void 0);const h=s===N&&t[e+1].startsWith("/>")?" ":"";o+=s===k?n+A:l>=0?(i.push(a),n.slice(0,l)+g+n.slice(l)+$+h):n+$+(-2===l?(i.push(void 0),e):h)}const a=o+(t[n]||"")+(2===e?"":"");if(!Array.isArray(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return[void 0!==_?_.createHTML(a):a,i]};class B{constructor({strings:t,_$litType$:e},n){let i;this.parts=[];let r=0,o=0;const s=t.length-1,a=this.parts,[c,l]=F(t,e);if(this.el=B.createElement(c,n),L.currentNode=this.el.content,2===e){const t=this.el.content,e=t.firstChild;e.remove(),t.append(...e.childNodes)}for(;null!==(i=L.nextNode())&&a.length0){i.textContent=b?b.emptyScript:"";for(let n=0;nj(t)||"function"==typeof(null==t?void 0:t[Symbol.iterator]))(t)?this.T(t):this._(t)}k(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}$(t){this._$AH!==t&&(this._$AR(),this._$AH=this.k(t))}_(t){this._$AH!==I&&E(this._$AH)?this._$AA.nextSibling.data=t:this.$(S.createTextNode(t)),this._$AH=t}g(t){var e;const{values:n,_$litType$:i}=t,r="number"==typeof i?this._$AC(t):(void 0===i.el&&(i.el=B.createElement(i.h,this.options)),i);if((null===(e=this._$AH)||void 0===e?void 0:e._$AD)===r)this._$AH.v(n);else{const t=new W(r,this),e=t.u(this.options);t.v(n),this.$(e),this._$AH=t}}_$AC(t){let e=z.get(t.strings);return void 0===e&&z.set(t.strings,e=new B(t)),e}T(t){j(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let n,i=0;for(const r of t)i===e.length?e.push(n=new J(this.k(O()),this.k(O()),this,this.options)):n=e[i],n._$AI(r),i++;i2||""!==n[0]||""!==n[1]?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=I}get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}_$AI(t,e=this,n,i){const r=this.strings;let o=!1;if(void 0===r)t=V(this,t,e,0),o=!E(t)||t!==this._$AH&&t!==M,o&&(this._$AH=t);else{const i=t;let s,a;for(t=r[0],s=0;s{var i,r;const o=null!==(i=null==n?void 0:n.renderBefore)&&void 0!==i?i:e;let s=o._$litPart$;if(void 0===s){const t=null!==(r=null==n?void 0:n.renderBefore)&&void 0!==r?r:null;o._$litPart$=s=new J(e.insertBefore(O(),t),t,void 0,null!=n?n:{})}return s._$AI(t),s})(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),null===(t=this._$Do)||void 0===t||t.setConnected(!1)}render(){return M}}nt.finalized=!0,nt._$litElement$=!0,null===(tt=globalThis.litElementHydrateSupport)||void 0===tt||tt.call(globalThis,{LitElement:nt});const it=globalThis.litElementPolyfillSupport;null==it||it({LitElement:nt}),(null!==(et=globalThis.litElementVersions)&&void 0!==et?et:globalThis.litElementVersions=[]).push("3.3.2");var rt="\\d\\d?",ot="\\d\\d",st="[^\\s]+";function at(t,e){for(var n=[],i=0,r=t.length;i-1?r:null}};function lt(t){for(var e=[],n=1;n3?0:(t-t%10!=10?1:0)*t%10]}},pt=(lt({},dt),function(t){return+t-1}),mt=[null,rt],yt=[null,st],vt=["isPm",st,function(t,e){var n=t.toLowerCase();return n===e.amPm[0]?0:n===e.amPm[1]?1:null}],bt=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(t){var e=(t+"").match(/([+-]|\d\d)/gi);if(e){var n=60*+e[1]+parseInt(e[2],10);return"+"===e[0]?n:-n}return 0}];ct("monthNamesShort"),ct("monthNames");function _t(){return(_t=Object.assign||function(t){for(var e=1;e0?"".concat(e,":").concat(Dt(n),":").concat(Dt(i)):n>0?"".concat(n,":").concat(Dt(i)):i>0?""+i:null}function Ut(t){return Ut="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ut(t)}function Rt(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function Ht(t,e,n){return(e=function(t){var e=function(t,e){if("object"!==Ut(t)||null===t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var i=n.call(t,"string");if("object"!==Ut(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"===Ut(e)?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var Mt=function(t,e,n){var i=e?function(t){switch(t.number_format){case"comma_decimal":return["en-US","en"];case"decimal_comma":return["de","es","it"];case"space_comma":return["fr","sv","cs"];case"system":return;default:return t.language}}(e):void 0;if(Number.isNaN=Number.isNaN||function t(e){return"number"==typeof e&&t(e)},"none"!==(null==e?void 0:e.number_format)&&!Number.isNaN(Number(t))&&Intl)try{return new Intl.NumberFormat(i,It(t,n)).format(Number(t))}catch(e){return console.error(e),new Intl.NumberFormat(void 0,It(t,n)).format(Number(t))}return"string"==typeof t?t:"".concat(function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;return Math.round(t*Math.pow(10,e))/Math.pow(10,e)}(t,null==n?void 0:n.maximumFractionDigits).toString()).concat("currency"===(null==n?void 0:n.style)?" ".concat(n.currency):"")},It=function(t,e){var n=function(t){for(var e=1;e-1?t.split(".")[1].length:0;n.minimumFractionDigits=i,n.maximumFractionDigits=i}return n},zt=Number.isNaN||function(t){return"number"==typeof t&&t!=t};function Lt(t,e){if(t.length!==e.length)return!1;for(var n=0;ne.hide_if.above)return!0;e.hide_if.value&&(i=i.concat(e.hide_if.value))}else i=i.concat(e.hide_if);return i.some((function(t){return"number"==typeof t?t===+n:t===n}))};function te(t){return te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},te(t)}function ee(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function ne(t){for(var e=1;e\n
\n ',"","\n
\n "])),this._hass,this.config,this.renderSecondaryInfo(),!1,this.config.column?"entities-column":"entities-row",this.entities.map((function(e){return t.renderEntity(e.stateObj,e)})),this.renderMainEntity()):this.renderWarning():H(oe||(oe=we([""])))}},{key:"renderSecondaryInfo",value:function(){if(!this.config.secondary_info||"string"==typeof(t=this.config.secondary_info)&&Ct.includes(t)||Xt(this.info,this.config.secondary_info))return null;var t;if("string"==typeof this.config.secondary_info)return H(ae||(ae=we(["",""])),this.config.secondary_info);var e=_e(this.info,this.config.secondary_info);return H(ce||(ce=we([""," ",""])),e,this.renderValue(this.info,this.config.secondary_info))}},{key:"renderMainEntity",value:function(){return!1===this.config.show_state?null:H(le||(le=we(['
\n ',"\n
","
\n
"])),ge(this.config),this.onRowClick,this.config.state_header&&H(ue||(ue=we(["",""])),this.config.state_header),this.renderValue(this.stateObj,this.config))}},{key:"renderEntity",value:function(t,e){if(!t||Xt(t,e))return e.default?H(he||(he=we(['
\n ',"\n
","
\n
"])),ge(e),e.name,e.default):null;var n=this.clickHandler(t.entity_id,e.tap_action);return H(fe||(fe=we(['
\n ',"\n
","
\n
"])),ge(e),n,_e(t,e),e.icon?this.renderIcon(t,e):this.renderValue(t,e))}},{key:"renderValue",value:function(t,e){if(!0===e.toggle)return H(de||(de=we([''])),t,this._hass);var n;if(e.attribute&&[Pt,kt].includes(e.attribute))return H(pe||(pe=we([""])),this._hass,t[null===(n=e.attribute)||void 0===n?void 0:n.replace("-","_")]);if(e.format&&xt.includes(e.format)){var i,r=e.attribute?null!==(i=t.attributes[e.attribute])&&void 0!==i?i:t[e.attribute]:t.state,o=new Date(r);return o instanceof Date&&!isNaN(o.getTime())?H(me||(me=we([""])),this._hass,o,e.format):r}return function(t,e,n){if(Qt(e))return t.localize("state.default.".concat(e.state));var i=n.attribute?e.attributes[n.attribute]:e.state,r=!1===n.unit?void 0:void 0!==n.attribute?n.unit:n.unit||e.attributes.unit_of_measurement;if(n.format){if(isNaN(parseFloat(i))||!isFinite(i));else if("brightness"===n.format)i=Math.round(i/255*100),r="%";else if("duration"===n.format)i=Tt(i),r=void 0;else if("duration-m"===n.format)i=Tt(i/1e3),r=void 0;else if("duration-h"===n.format)i=Tt(3600*i),r=void 0;else if(n.format.startsWith("precision")){var o=parseInt(n.format.slice(-1),10);i=Mt(parseFloat(i),t.locale,{minimumFractionDigits:o,maximumFractionDigits:o})}else"kilo"===n.format?i=Mt(i/1e3,t.locale,{maximumFractionDigits:2}):"invert"===n.format?i=Mt(i-2*i,t.locale):"position"===n.format?i=Mt(100-i,t.locale):"celsius_to_fahrenheit"===n.format?i=Mt(1.8*i+32,t.locale,{maximumFractionDigits:0}):"fahrenheit_to_celsius"===n.format&&(i=Mt(5*(i-32)/9,t.locale,{maximumFractionDigits:1}));return"".concat(i).concat(r?" ".concat(r):"")}if(n.attribute)return"".concat(isNaN(i)?i:Mt(i,t.locale)).concat(r?" ".concat(r):"");var s=ne(ne({},e),{},{attributes:ne(ne({},e.attributes),{},{unit_of_measurement:r})});return function(t,e,n,i,r){var o=e.state;if(o===Et||o===Ot)return t("state.default.".concat(o));if(function(t){return!!t.attributes.unit_of_measurement||!!t.attributes.state_class}(e)){if("monetary"===e.attributes.device_class)try{return Mt(o,n,{style:"currency",currency:e.attributes.unit_of_measurement})}catch(t){}return"".concat(Mt(o,n)).concat(e.attributes.unit_of_measurement?" "+e.attributes.unit_of_measurement:"")}var s,a=function(t){return t.entity_id.substr(0,t.entity_id.indexOf("."))}(e);if("input_datetime"===a)return e.attributes.has_date&&e.attributes.has_time?(s=new Date(e.attributes.year,e.attributes.month-1,e.attributes.day,e.attributes.hour,e.attributes.minute),Jt(s,n)):e.attributes.has_date?(s=new Date(e.attributes.year,e.attributes.month-1,e.attributes.day),Bt(s,n)):e.attributes.has_time?((s=new Date).setHours(e.attributes.hour,e.attributes.minute),Zt(s,n)):e.state;if("humidifier"===a&&"on"===o&&e.attributes.humidity)return"".concat(e.attributes.humidity," %");if("counter"===a||"number"===a||"input_number"===a)return Mt(o,n);if("button"===a||"sensor"===a&&"timestamp"===e.attributes.device_class)return Jt(new Date(o),n);var c=i&&i[e.entity_id];return(null==c?void 0:c.translation_key)&&t("component.".concat(c.platform,".entity.").concat(a,".").concat(c.translation_key,".state.").concat(o))||e.attributes.device_class&&t("component.".concat(a,".entity_component.").concat(e.attributes.device_class,".state.").concat(o))||t("component.".concat(a,".entity_component._.state.").concat(o))||o}(t.localize,s,t.locale,t.entities)}(this._hass,t,e)}},{key:"renderIcon",value:function(t,e){return H(ye||(ye=we([''])),this._hass,t,!0===e.icon?t.attributes.icon||null:e.icon,e.state_color)}},{key:"renderWarning",value:function(){return H(ve||(ve=we(["\n ","\n "])),this._hass.localize("ui.panel.lovelace.warning.entity_not_found","entity",this.config.entity))}},{key:"clickHandler",value:function(t,e){var n=this;return function(){return function(t,e,n,i,r){var o;if(n.tap_action&&(o=n.tap_action),o||(o={action:"more-info"}),!o.confirmation||o.confirmation.exemptions&&o.confirmation.exemptions.some((function(t){return t.user===e.user.id}))||confirm(o.confirmation.text||"Are you sure you want to "+o.action+"?"))switch(o.action){case"more-info":(o.entity||n.entity||n.camera_image)&&(At(t,"hass-more-info",{entityId:o.entity?o.entity:n.entity?n.entity:n.camera_image}),o.haptic&&St(o.haptic));break;case"navigate":o.navigation_path&&(function(t,e,n){void 0===n&&(n=!1),n?history.replaceState(null,"",e):history.pushState(null,"",e),At(window,"location-changed",{replace:n})}(0,o.navigation_path),o.haptic&&St(o.haptic));break;case"url":o.url_path&&window.open(o.url_path),o.haptic&&St(o.haptic);break;case"toggle":n.entity&&(function(t,e){(function(t,e,n){void 0===n&&(n=!0);var i,r=function(t){return t.substr(0,t.indexOf("."))}(e),o="group"===r?"homeassistant":r;switch(r){case"lock":i=n?"unlock":"lock";break;case"cover":i=n?"open_cover":"close_cover";break;default:i=n?"turn_on":"turn_off"}t.callService(o,i,{entity_id:e})})(t,e,wt.includes(t.states[e].state))}(e,n.entity),o.haptic&&St(o.haptic));break;case"call-service":if(!o.service)return;var s=o.service.split(".",2),a=s[0],c=s[1],l=_t({},o.service_data);"entity"===l.entity_id&&(l.entity_id=n.entity),e.callService(a,c,l),o.haptic&&St(o.haptic);break;case"fire-dom-event":At(t,"ll-custom",o),o.haptic&&St(o.haptic)}}(n,n._hass,{entity:t,tap_action:e})}}}],i=[{key:"properties",get:function(){return{_hass:Object,config:Object,stateObj:Object}}},{key:"styles",get:function(){return o(re||(t=["\n .icon-small {\n width: auto;\n }\n .entity {\n text-align: center;\n cursor: pointer;\n }\n .entity span {\n font-size: 10px;\n color: var(--secondary-text-color);\n }\n .entities-row {\n flex-direction: row;\n display: inline-flex;\n justify-content: space-between;\n align-items: center;\n }\n .entities-row .entity {\n margin-right: 16px;\n }\n .entities-row .entity:last-of-type {\n margin-right: 0;\n }\n .entities-column {\n flex-direction: column;\n display: flex;\n align-items: flex-end;\n justify-content: space-evenly;\n }\n .entities-column .entity div {\n display: inline-block;\n vertical-align: middle;\n }\n"],e||(e=t.slice(0)),re=Object.freeze(Object.defineProperties(t,{raw:{value:Object.freeze(e)}}))));var t,e}}],n&&Ee(e.prototype,n),i&&Ee(e,i),Object.defineProperty(e,"prototype",{writable:!1}),c}(nt);customElements.define("multiple-entity-row",xe)})(); \ No newline at end of file diff --git a/hass/settings/www/community/lovelace-multiple-entity-row/multiple-entity-row.js.gz b/hass/settings/www/community/lovelace-multiple-entity-row/multiple-entity-row.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c81639e46909679338e088dab95ad50811012a50 GIT binary patch literal 12278 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⪼i^%PzWc~=S|5QQ1tDU$}B-CKBpviGr(m)u91l49V!7d zt|2CmG>-TsoQf@4qDp)p2VyWt1I>)03-*8h zaaUZ>^{om?PNUDwAppBa0F_=n1$XP$$0v^<YWVGjkau^E1cj%m z?S&T6z@@KzR4pdEVzjZ3UwjBtsXJ4r@Wm_p?a+2PC8mj~8*hy*tZHsM3@N3pKssbd zRWttB7^0Rj`EQM~Q9J(t92Sk*+PJO1|Iqr-NgLCyO$Eg7O7-uH5W4~iZl8u4Q0xeB z`Qpjly5U2*;7v9wz9_c#{=tQ9!=@-*+PD)<_NFQ$Z4Lf-qz3D?F+ppuY*TBnsoBT% z<49_sb}F*F_+(Tr#g#NLuxyId^rvhp*s1r$mlJ0caX5idzu$o&$FIv2yZGTo&ZmED zZAR|>V;fp`vEKq|-7!cM&>-MNx6o~hTCV*og#~p7Y-x+TVMs3Cp8og{UBAwqaYzk( zhsANi`2H zqP$N1d~#q~Ir2y7UWS!tE~O%}-d+|GrEEEIBHf z8;=^2J;2U;S&&O&?zGU}-m{`v+qe=)N5VOE=xh4(SRyUhZW)!dN7Am`b~QWGVf`|| zHd{tU?-3@0;uPE8+at-a3segqLi~szw%dyK%FKY|l1i)G4r7R~9f|4NZL&OO)4+$m z)Kc0w*ha*ffTMq%a=e*#AGbc zWtY;1LFyI+D{by;mdN)slhpE0qJl+@Ye%l^DYEzhnNS9rEGwZ>t^;q=fD|P7U?i1L zk`n6vqN$NV0Z0Os+iU_mZp!<rRq5&@!z+>(95-kd-nPqWkeeYE*n+c=X?<4kUF^MP@AgnUO^se}<#y zm5t4|9hS);EP{*3ngA*?bD9CAlFK5nMM6R7Xh<0X3uHhd%GIcFt`v@-?^E>qU=gGc zIutd?^b|h|4xo3T$x1XWlnw1^Y^@Z=Gav5FNd))r-^VHdEJ4%0A|;(yG`>5DBxxdO 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�c~orGAqZC)EYEPx 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%0DY{vEScURtZKmT=42y-lgwl@ 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�+yXf!{{XKra`trM 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 86400: # 86400 секунд = 24 часа + restart_script() + time.sleep(60) # Проверяем каждую минуту + client.loop(timeout=1.0) + + +# Map their value names to easier state names +topics = { + "OperationState": "state", + "DoorState": "door", + "RemainingProgramTime": "remaining", + "PowerState": "power", + "LowWaterPressure": "lowwaterpressure", + "AquaStopOccured": "aquastop", + "InternalError": "error", + "FatalErrorOccured": "error", + "MachineCareReminder": "machinecarereminder", + "ActiveProgram": "activeprogram" #8215 - machine care +} + + + +def client_connect(client, device, mqtt_topic): + host = device["host"] + + state = {} + for topic in topics: + state[topics[topic]] = None + + while True: + try: + ws = HCSocket(host, device["key"], device.get("iv",None)) + dev = HCDevice(ws, device.get("features", None)) + + ws.debug = True + ws.reconnect() + + while True: + msg = dev.recv() + if msg is None: + break + if len(msg) > 0: + print(now(), msg) + + update = False + for topic in topics: + value = msg.get(topic, None) + if value is None: + continue + + # Convert "On" to True, "Off" to False + if value == "On": + value = True + elif value == "Off": + value = False + + new_topic = topics[topic] + if new_topic == "remaining": + state["remainingseconds"] = value + value = "%d:%02d" % (value / 60 / 60, (value / 60) % 60) + + state[new_topic] = value + update = True + + if not update: + continue + + msg = json.dumps(state) + print("publish", mqtt_topic, msg) + client.publish(mqtt_topic + "/state", msg, retain=True) + + except Exception as e: + print("ERROR", host, e, file=sys.stderr) + + time.sleep(5) + +if __name__ == "__main__": + hc2mqtt(auto_envvar_prefix='HC') diff --git a/homeconnect2mqtt/docker/src/requirements.txt b/homeconnect2mqtt/docker/src/requirements.txt new file mode 100644 index 0000000..ff8a012 --- /dev/null +++ b/homeconnect2mqtt/docker/src/requirements.txt @@ -0,0 +1,9 @@ +bs4 +requests +pycryptodome +websocket-client +sslpsk +paho.mqtt +lxml +click +requests \ No newline at end of file diff --git a/homeconnect2mqtt/settings/homeconnect2mqtt.env.sample b/homeconnect2mqtt/settings/homeconnect2mqtt.env.sample new file mode 100644 index 0000000..0d17ff7 --- /dev/null +++ b/homeconnect2mqtt/settings/homeconnect2mqtt.env.sample @@ -0,0 +1,3 @@ +HC_MQTT_HOST=xxxxxxxxx +HC_MQTT_USER=xxxxxxxxx +HC_MQTT_PASSWORD=xxxxxxxxx diff --git a/keenetic/docker/Dockerfile b/keenetic/docker/Dockerfile new file mode 100644 index 0000000..c9abc66 --- /dev/null +++ b/keenetic/docker/Dockerfile @@ -0,0 +1,16 @@ +FROM python:3.11-slim + +WORKDIR /app + +# Установка зависимостей +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +# Копирование кода +COPY main.py . + +# Порт приложения +EXPOSE 8000 + +# Запуск +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/keenetic/docker/main.py b/keenetic/docker/main.py new file mode 100644 index 0000000..7a61d67 --- /dev/null +++ b/keenetic/docker/main.py @@ -0,0 +1,123 @@ +import os +import asyncssh +from fastapi import FastAPI, HTTPException, Depends, status +from fastapi.security import HTTPBasic, HTTPBasicCredentials +from pydantic import BaseModel +import secrets +import uvicorn + +app = FastAPI(title="Keenetic SSH Controller") +security = HTTPBasic() + +# --- КОНФИГУРАЦИЯ ИЗ ENV --- +ROUTER_HOST = os.getenv("ROUTER_HOST", "192.168.1.1") +ROUTER_PORT = int(os.getenv("ROUTER_PORT", "22")) +ROUTER_USER = os.getenv("ROUTER_USER", "admin") + +# SSH Auth +SSH_KEY_PATH = os.getenv("SSH_KEY_PATH") +SSH_PASSWORD = os.getenv("SSH_PASSWORD") + +# API Auth +API_USER = os.getenv("API_USER", "api_user") +API_PASS = os.getenv("API_PASS", "strong_password") + +# --- ЖЕСТКИЙ ВАЙТЛИСТ КОМАНД --- +# Разрешены только команды, начинающиеся с этих префиксов +COMMAND_WHITELIST = [ + "ip hotspot host", + "system configuration save" +] + +# Опасные символы, которые запрещены в любой команде +DANGEROUS_CHARS = [";", "|", "&", "$", "`", ">", "<", "\n", "\r", "!"] + +class CommandRequest(BaseModel): + command: str + +def get_current_user(credentials: HTTPBasicCredentials = Depends(security)): + correct_username = secrets.compare_digest(credentials.username, API_USER) + correct_password = secrets.compare_digest(credentials.password, API_PASS) + if not (correct_username and correct_password): + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Incorrect credentials", + headers={"WWW-Authenticate": "Basic"}, + ) + return credentials.username + +def validate_command(command: str) -> bool: + """ + Проверяет команду against жесткий вайтлист. + """ + if not command or not command.strip(): + return False + + command = command.strip() + + # 1. Проверка на опасные символы (защита от инъекций) + for char in DANGEROUS_CHARS: + if char in command: + return False + + # 2. Проверка по вайтлисту (префикс) + for allowed_pattern in COMMAND_WHITELIST: + if command.startswith(allowed_pattern): + return True + + return False + +async def execute_ssh_command(command: str): + # Валидация команды + if not validate_command(command): + raise HTTPException( + status_code=403, + detail=f"Command not allowed. Contact administrator to whitelist this command." + ) + + connect_kwargs = { + "host": ROUTER_HOST, + "port": ROUTER_PORT, + "username": ROUTER_USER, + "known_hosts": None + } + + if SSH_KEY_PATH and os.path.exists(SSH_KEY_PATH): + connect_kwargs["client_keys"] = [SSH_KEY_PATH] + elif SSH_PASSWORD: + connect_kwargs["password"] = SSH_PASSWORD + else: + raise HTTPException(status_code=500, detail="SSH Auth not configured (Key or Password required)") + + try: + async with asyncssh.connect(**connect_kwargs) as conn: + result = await conn.run(command) + return { + "stdout": result.stdout, + "stderr": result.stderr, + "exit_code": result.exit_status + } + except asyncssh.Error as exc: + raise HTTPException(status_code=503, detail=f"SSH Connection failed: {str(exc)}") + except Exception as exc: + raise HTTPException(status_code=500, detail=f"Internal error: {str(exc)}") + +@app.post("/run") +async def run_command(request: CommandRequest, username: str = Depends(get_current_user)): + return await execute_ssh_command(request.command) + +@app.get("/health") +async def health_check(): + return {"status": "ok"} + +@app.get("/allowed-commands") +async def get_allowed_commands(username: str = Depends(get_current_user)): + """ + Возвращает список разрешенных паттернов команд. + """ + return { + "whitelist": COMMAND_WHITELIST + } + +if __name__ == "__main__": + uvicorn.run(app, host="0.0.0.0", port=8000) \ No newline at end of file diff --git a/keenetic/docker/requirements.txt b/keenetic/docker/requirements.txt new file mode 100644 index 0000000..ed7fd0a --- /dev/null +++ b/keenetic/docker/requirements.txt @@ -0,0 +1,4 @@ +fastapi +uvicorn +asyncssh +python-multipart \ No newline at end of file diff --git a/keenetic/settings/keenetic.env.sample b/keenetic/settings/keenetic.env.sample new file mode 100644 index 0000000..e4f69ee --- /dev/null +++ b/keenetic/settings/keenetic.env.sample @@ -0,0 +1,9 @@ +# Настройки роутера +ROUTER_HOST=xxxxxxxxx +ROUTER_PORT=xxxxxxxxx +ROUTER_USER=xxxxxxxxx +SSH_PASSWORD=xxxxxxxxx + +# Настройки API +API_USER=xxxxxxxxx +API_PASS=xxxxxxxxx diff --git a/matter-bridge/settings/matter-bridge.env.sample b/matter-bridge/settings/matter-bridge.env.sample new file mode 100644 index 0000000..fe44f98 --- /dev/null +++ b/matter-bridge/settings/matter-bridge.env.sample @@ -0,0 +1,4 @@ +HAMH_HOME_ASSISTANT_URL=xxxxxxxxx +HAMH_HOME_ASSISTANT_ACCESS_TOKEN=xxxxxxxxx +HAMH_LOG_LEVEL=xxxxxxxxx +HAMH_WEB_PORT=xxxxxxxxx diff --git a/mosquitto/docker/Dockerfile b/mosquitto/docker/Dockerfile new file mode 100644 index 0000000..7d26c65 --- /dev/null +++ b/mosquitto/docker/Dockerfile @@ -0,0 +1,8 @@ +FROM eclipse-mosquitto:1.6 + +ADD run.sh /run.sh + +RUN chmod +x /run.sh + +#CMD ["/run.sh"] +ENTRYPOINT ["/run.sh"] \ No newline at end of file diff --git a/mosquitto/docker/run.sh b/mosquitto/docker/run.sh new file mode 100644 index 0000000..9c417d1 --- /dev/null +++ b/mosquitto/docker/run.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +if [ "$MQTT_USERNAME" != "" ] && [ "$MQTT_PASSWORD" != "" ]; +then + sed -i -e 's/#allow_anonymous true/allow_anonymous false/g' /mosquitto/config/mosquitto.conf + sed -i -e 's/#password_file/password_file \/mosquitto\/passwd/g' /mosquitto/config/mosquitto.conf + touch /mosquitto/passwd + mosquitto_passwd -b /mosquitto/passwd $MQTT_USERNAME $MQTT_PASSWORD +fi +mosquitto -c /mosquitto/config/mosquitto.conf -v diff --git a/mosquitto/settings/mqtt.env.sample b/mosquitto/settings/mqtt.env.sample new file mode 100644 index 0000000..6d54f2c --- /dev/null +++ b/mosquitto/settings/mqtt.env.sample @@ -0,0 +1,2 @@ +MQTT_USERNAME=xxxxxxxxx +MQTT_PASSWORD=xxxxxxxxx \ No newline at end of file diff --git a/neptun2mqtt/docker/Dockerfile b/neptun2mqtt/docker/Dockerfile new file mode 100644 index 0000000..772b287 --- /dev/null +++ b/neptun2mqtt/docker/Dockerfile @@ -0,0 +1,8 @@ +FROM python:3.8-slim + +ADD ./src/requirements.txt /src/requirements.txt +RUN pip3 install -r /src/requirements.txt + +ADD ./src /src + +CMD ["python", "-u", "/src/neptun2mqtt.py"] diff --git a/neptun2mqtt/docker/src/neptun2mqtt.py b/neptun2mqtt/docker/src/neptun2mqtt.py new file mode 100644 index 0000000..eb5dac5 --- /dev/null +++ b/neptun2mqtt/docker/src/neptun2mqtt.py @@ -0,0 +1,131 @@ +from pymodbus.client import ModbusTcpClient, ModbusTlsClient, ModbusSerialClient +from pymodbus.payload import BinaryPayloadDecoder, BinaryPayloadBuilder +from pymodbus.constants import Endian + +import paho.mqtt.client as mqtt +import os +import time +import threading +import pymodbus +import time + +MQTT_SERVER = os.getenv('MQTT_SERVER', "") +MQTT_PORT = os.getenv('MQTT_PORT', 1883) +MQTT_USER = os.getenv('MQTT_USER', "") +MQTT_PASS = os.getenv('MQTT_PASS', "") +QUERY_TIME = os.getenv('QUERY_TIME', 60) +PREFIX = os.getenv('PREFIX', 'home/watercontrol') +NEPTUN_IP = os.getenv('NEPTUN_IP', '192.168.1.147') +NEPTUN_ID = os.getenv('NEPTUN_ID', 240) +COUNTERS_SLOT = int(os.getenv('NEPTUN_WATER_COUNTERS_SLOT', 2)) + +############################################################### +slot_config = {1: [107, 109], 2:[111, 113], 3:[115, 117], 4:[119, 121]} + +def prepare_mqtt(): + print("Connecting to MQTT server", MQTT_SERVER, ":", MQTT_PORT, "with username", MQTT_USER,":",MQTT_PASS) + client = mqtt.Client() + if (MQTT_USER != "" and MQTT_PASS != ""): + client.username_pw_set(MQTT_USER, MQTT_PASS) + client.connect(MQTT_SERVER, MQTT_PORT, 60) + + return client + +def push_data(client, model, sid, data): + for key, value in data.items(): + path = PATH_FMT.format(model=model, + sid=sid, + prop=key) + client.publish(path, payload=value, qos=0, retain=True) + +def on_mqtt_message(client, userdata, msg): + print(msg.topic+" "+str(msg.payload)) + parts = msg.topic.replace(PREFIX, "").strip("/").split("/") + print(parts) + if (len(parts) != 2): + return + if (parts[0] == 'valves' and parts[1] == 'set'): + value = msg.payload == b'ON' + print('value: {}'.format(value)) + + modbus = ModbusTcpClient(NEPTUN_IP, port=503, method='rtu') + response = modbus.read_holding_registers(address=0, count=1, slave=NEPTUN_ID) + decoder = BinaryPayloadDecoder.fromRegisters(response.registers, byteorder=Endian.Big, wordorder=Endian.Big) + bits = decoder.decode_bits() + bits[0] = value + bits[1] = value + builder = BinaryPayloadBuilder(wordorder=Endian.Big,byteorder=Endian.Big) + builder.add_bits(bits) + registers = builder.to_registers() + print("new payload: {}".format(registers)) + modbus.write_register(0, registers[0], slave=NEPTUN_ID) + modbus.close() + value_str = "OFF" + if value: + value_str = "ON" + client.publish(PREFIX + "/valves", payload=value_str, qos=0, retain=True) + +def on_connect(client, userdata, rc, kwargs): + client.subscribe(PREFIX + "/valves/set") + client.subscribe(PREFIX + "/counter3_1/set") + client.subscribe(PREFIX + "/counter3_2/set") + config = '{"~": "' + PREFIX + '/valves", "name": "watercontrol_valves", "device_class": "switch", "state_topic": "~", "command_topic":"~/set","unique_id": "watercontrol_neptun_' + NEPTUN_IP + '"}' + client.publish("homeassistant/switch/watercontrol/valves/config", payload=config, qos=0, retain=True) + +def refresh_loop(client): + while True: + try: + modbus = ModbusTcpClient(NEPTUN_IP, port=503, method='rtu') + response = modbus.read_holding_registers(address=0, count=1, slave=NEPTUN_ID) + decoder = BinaryPayloadDecoder.fromRegisters(response.registers, byteorder=Endian.Big, wordorder=Endian.Big) + bits = decoder.decode_bits() + valve1 = bits[0] + valve2 = bits[1] + print("config_decoded: {}, valve1: {}, valve2: {}".format(bits, valve1, valve2)) + value = "OFF" + if valve1 and valve2: + value = "ON" + client.publish(PREFIX + "/valves", payload=value, qos=0, retain=True) + + reg_config = slot_config[COUNTERS_SLOT] + reg_cold = reg_config[0] + reg_hot = reg_config[1] + + response = modbus.read_holding_registers(reg_cold, count=2, slave=NEPTUN_ID) + decoder = BinaryPayloadDecoder.fromRegisters(response.registers, byteorder=Endian.Big, wordorder=Endian.Big) + value = decoder.decode_32bit_uint()/1000 + print("counter_cold: {}".format(value)) + client.publish("{}/counter{}_1".format(PREFIX, COUNTERS_SLOT), payload=value, qos=0, retain=True) + + response = modbus.read_holding_registers(reg_hot, count=2, slave=NEPTUN_ID) + decoder = BinaryPayloadDecoder.fromRegisters(response.registers, byteorder=Endian.Big, wordorder=Endian.Big) + value = decoder.decode_32bit_uint()/1000 + print("counter_hot: {}".format(value)) + client.publish("{}/counter{}_2".format(PREFIX, COUNTERS_SLOT), payload=value, qos=0, retain=True) + + alert_status_response = modbus.read_holding_registers(address=3, count=1, slave=NEPTUN_ID) + decoder = BinaryPayloadDecoder.fromRegisters(alert_status_response.registers, byteorder=Endian.Big, wordorder=Endian.Big) + bits = decoder.decode_bits() + for i in range(1,5): + print("alert_{}: {}".format(i, bits[i])) + client.publish("{}/alert_{}".format(PREFIX, i), payload=bits[i-1], qos=0, retain=True) + + modbus.close() + except Exception as e: + print("ERROR", NEPTUN_IP, e) + time.sleep(QUERY_TIME) + +if __name__ == "__main__": + client = prepare_mqtt() + + client.on_message = on_mqtt_message + client.on_connect = on_connect + + #start thread for lamp refresh loop + t1 = threading.Thread(target=refresh_loop, args=[client]) + t1.start() + + # and process mqtt messages in this thread + client.loop_forever() + + diff --git a/neptun2mqtt/docker/src/requirements.txt b/neptun2mqtt/docker/src/requirements.txt new file mode 100644 index 0000000..d8a01c2 --- /dev/null +++ b/neptun2mqtt/docker/src/requirements.txt @@ -0,0 +1,2 @@ +paho-mqtt==1.5.0 +pymodbus==3.2.1 diff --git a/neptun2mqtt/settings/neptun.env.sample b/neptun2mqtt/settings/neptun.env.sample new file mode 100644 index 0000000..20a2ccb --- /dev/null +++ b/neptun2mqtt/settings/neptun.env.sample @@ -0,0 +1,4 @@ +MQTT_SERVER=xxxxxxxxx +MQTT_USER=xxxxxxxxx +MQTT_PASS=xxxxxxxxx +NEPTUN_IP=xxxxxxxxx \ No newline at end of file diff --git a/nginx/settings/site-confs/default.conf b/nginx/settings/site-confs/default.conf new file mode 100644 index 0000000..eed11f1 --- /dev/null +++ b/nginx/settings/site-confs/default.conf @@ -0,0 +1,29 @@ +server { + listen 80 default_server; + #listen 443 default ssl; + + server_name _; + + #ssl_certificate /config/keys/cert.crt; + #ssl_certificate_key /config/keys/cert.key; + + client_max_body_size 0; + + location ~/.well-known/acme-challenge/(.*)$ { + proxy_pass http://certbot; + } + + location / { + real_ip_header X-Forwarded-For; + set_real_ip_from 0.0.0.0/0; + + proxy_pass http://hass; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Host $remote_addr; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + } +} diff --git a/nginx/settings/site-confs/gitea.conf b/nginx/settings/site-confs/gitea.conf new file mode 100644 index 0000000..fab8d20 --- /dev/null +++ b/nginx/settings/site-confs/gitea.conf @@ -0,0 +1,39 @@ +upstream gitea { + server 192.168.1.6:3000; +} +upstream certbot2 { + server 192.168.1.6:8081; +} + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +server { + listen 80; + #listen 443 ssl; + server_name gitea.yandex5.ru; + + #ssl_certificate /config/keys/live/gitea.yandex5.ru/fullchain.pem; + #ssl_certificate_key /config/keys/live/gitea.yandex5.ru/privkey.pem; + + #access_log off; + location ~/.well-known/acme-challenge/(.*)$ { + proxy_pass http://certbot2; + } + + location / { + real_ip_header X-Forwarded-For; + set_real_ip_from 0.0.0.0/0; + + proxy_pass http://gitea; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Host $remote_addr; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + } +} diff --git a/nginx/settings/site-confs/home-fnv.conf b/nginx/settings/site-confs/home-fnv.conf new file mode 100644 index 0000000..9e563c7 --- /dev/null +++ b/nginx/settings/site-confs/home-fnv.conf @@ -0,0 +1,65 @@ +upstream hass { + server 192.168.1.6:8123; +} +upstream certbot { + server 192.168.1.6:8081; +} +upstream z2m { + server 192.168.1.6:8080; +} + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} + +server { + listen 80; + listen 443 ssl; + server_name home-fnv.yandex5.ru; + + ssl_certificate /config/keys/live/home-fnv.yandex5.ru/fullchain.pem; + ssl_certificate_key /config/keys/live/home-fnv.yandex5.ru/privkey.pem; + + #access_log off; + location ~/.well-known/acme-challenge/(.*)$ { + proxy_pass http://certbot; + } + + #access_log off; + location /z2m { + auth_basic "Administrator’s Area"; + auth_basic_user_file conf.d/z2m_htpasswd; + + proxy_pass http://192.168.1.6:8080/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + location /z2m/api { + auth_basic "Administrator’s Area"; + auth_basic_user_file conf.d/z2m_htpasswd; + + proxy_pass http://192.168.1.6:8080/api; + proxy_set_header Host $host; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } + + location / { + real_ip_header X-Forwarded-For; + set_real_ip_from 0.0.0.0/0; + + proxy_pass http://hass; + proxy_set_header Host $host; + proxy_http_version 1.1; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Host $remote_addr; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection $connection_upgrade; + } +} \ No newline at end of file diff --git a/node-red/docker/Dockerfile b/node-red/docker/Dockerfile new file mode 100644 index 0000000..f845406 --- /dev/null +++ b/node-red/docker/Dockerfile @@ -0,0 +1,7 @@ +FROM nodered/node-red + +WORKDIR /usr/src/node-red +RUN npm install node-red-contrib-home-assistant-websocket +RUN npm install node-red-contrib-tuya-smart-device +RUN npm install node-red-node-base64 + diff --git a/node-red/settings/data/flows.json b/node-red/settings/data/flows.json new file mode 100644 index 0000000..4de5dea --- /dev/null +++ b/node-red/settings/data/flows.json @@ -0,0 +1,186 @@ +[ + { + "id": "32f338f62fe84201", + "type": "tab", + "label": "Doorbell", + "disabled": false, + "info": "", + "env": [] + }, + { + "id": "9d88782117d11324", + "type": "server", + "name": "Home Assistant", + "version": 5, + "addon": false, + "rejectUnauthorizedCerts": true, + "ha_boolean": "y|yes|true|on|home|open", + "connectionDelay": true, + "cacheJson": true, + "heartbeat": false, + "heartbeatInterval": "30", + "areaSelector": "friendlyName", + "deviceSelector": "friendlyName", + "entitySelector": "friendlyName", + "statusSeparator": ": ", + "statusYear": "hidden", + "statusMonth": "short", + "statusDay": "numeric", + "statusHourCycle": "default", + "statusTimeFormat": "h:m", + "enableGlobalContextStore": false + }, + { + "id": "bac739064a0752d3", + "type": "tuya-smart-device", + "z": "32f338f62fe84201", + "deviceName": "Doorbell", + "disableAutoStart": false, + "deviceId": "", + "deviceKey": "", + "storeAsCreds": true, + "deviceIp": "192.168.1.113", + "retryTimeout": 1000, + "findTimeout": 10000, + "tuyaVersion": "3.3", + "eventMode": "event-both", + "x": 120, + "y": 80, + "wires": [ + [ + "9d1686a6ee7e63cc", + "7e8087c473a88f87" + ], + [] + ] + }, + { + "id": "9d1686a6ee7e63cc", + "type": "function", + "z": "32f338f62fe84201", + "name": "Add timestamp to LOG", + "func": "var now = new Date();\n// Create formatted time\nvar yyyy = now.getFullYear();\nvar mm = now.getMonth() < 9 ? \"0\" + (now.getMonth() + 1) : (now.getMonth() + 1); // getMonth() is zero-based\nvar dd = now.getDate() < 10 ? \"0\" + now.getDate() : now.getDate();\nvar hh = now.getHours() < 10 ? \"0\" + now.getHours() : now.getHours();\nvar mmm = now.getMinutes() < 10 ? \"0\" + now.getMinutes() : now.getMinutes();\nvar ss = now.getSeconds() < 10 ? \"0\" + now.getSeconds() : now.getSeconds();\nvar time = yyyy + \"-\" + mm + \"-\" + dd + \" \" + hh + \":\" + mmm + \":\" + ss;\n\nmsg.payload = { Time: time, Message: msg.payload }\nreturn msg;", + "outputs": 1, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 400, + "y": 80, + "wires": [ + [] + ] + }, + { + "id": "66848b1b1b258fcd", + "type": "inject", + "z": "32f338f62fe84201", + "name": "Fake message", + "props": [ + { + "p": "payload" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "{\"data\":{\"dps\":{\"154\":\"aHR0cHM6Ly9yZWdpb3dlYmNhbS5kZS9maWxlYWRtaW4vdXNlcl91cGxvYWQvMDFfc3RvcmNoX2tpcmNoemFydGVuMjAyMS5qcGc/dmVyPTE2MzkzMDIyNjYzNDk=\"},\"t\":1664969089},\"deviceId\":\"bfd52cb7f15a171ef3qznk\",\"deviceName\":\"Dorbell pietro\"}", + "payloadType": "json", + "x": 160, + "y": 160, + "wires": [ + [ + "7e8087c473a88f87" + ] + ] + }, + { + "id": "7e8087c473a88f87", + "type": "switch", + "z": "32f338f62fe84201", + "name": "If contains picture", + "property": "payload.data.dps", + "propertyType": "msg", + "rules": [ + { + "t": "hask", + "v": "154", + "vt": "str" + }, + { + "t": "else" + } + ], + "checkall": "true", + "repair": false, + "outputs": 2, + "x": 370, + "y": 160, + "wires": [ + [ + "ef4a301c9859d91a" + ], + [] + ] + }, + { + "id": "ef4a301c9859d91a", + "type": "change", + "z": "32f338f62fe84201", + "name": "Extract base64 adress", + "rules": [ + { + "t": "set", + "p": "payload", + "pt": "msg", + "to": "payload.data.dps[\"154\"]", + "tot": "msg" + } + ], + "action": "", + "property": "", + "from": "", + "to": "", + "reg": false, + "x": 600, + "y": 160, + "wires": [ + [ + "5936f72cfa385634" + ] + ] + }, + { + "id": "5936f72cfa385634", + "type": "base64", + "z": "32f338f62fe84201", + "name": "Decode base64 adress", + "action": "b64", + "property": "payload", + "x": 830, + "y": 160, + "wires": [ + [ + "e8ac1a2ea3533224" + ] + ] + }, + { + "id": "e8ac1a2ea3533224", + "type": "ha-fire-event", + "z": "32f338f62fe84201", + "name": "Fire Event in Hass", + "server": "9d88782117d11324", + "version": 0, + "event": "doorbell_call", + "data": "{\"doorbell_pic\":payload}", + "dataType": "jsonata", + "x": 1050, + "y": 160, + "wires": [ + [] + ] + } +] \ No newline at end of file diff --git a/node-red/settings/data/node-red-contrib-home-assistant-websocket.json b/node-red/settings/data/node-red-contrib-home-assistant-websocket.json new file mode 100644 index 0000000..f7a835f --- /dev/null +++ b/node-red/settings/data/node-red-contrib-home-assistant-websocket.json @@ -0,0 +1,3 @@ +{ + "nodes": {} +} \ No newline at end of file diff --git a/node-red/settings/data/settings.js b/node-red/settings/data/settings.js new file mode 100644 index 0000000..80b5590 --- /dev/null +++ b/node-red/settings/data/settings.js @@ -0,0 +1,560 @@ +/** + * This is the default settings file provided by Node-RED. + * + * It can contain any valid JavaScript code that will get run when Node-RED + * is started. + * + * Lines that start with // are commented out. + * Each entry should be separated from the entries above and below by a comma ',' + * + * For more information about individual settings, refer to the documentation: + * https://nodered.org/docs/user-guide/runtime/configuration + * + * The settings are split into the following sections: + * - Flow File and User Directory Settings + * - Security + * - Server Settings + * - Runtime Settings + * - Editor Settings + * - Node Settings + * + **/ + +module.exports = { + +/******************************************************************************* + * Flow File and User Directory Settings + * - flowFile + * - credentialSecret + * - flowFilePretty + * - userDir + * - nodesDir + ******************************************************************************/ + + /** The file containing the flows. If not set, defaults to flows_.json **/ + flowFile: 'flows.json', + + /** By default, credentials are encrypted in storage using a generated key. To + * specify your own secret, set the following property. + * If you want to disable encryption of credentials, set this property to false. + * Note: once you set this property, do not change it - doing so will prevent + * node-red from being able to decrypt your existing credentials and they will be + * lost. + */ + //credentialSecret: "a-secret-key", + + /** By default, the flow JSON will be formatted over multiple lines making + * it easier to compare changes when using version control. + * To disable pretty-printing of the JSON set the following property to false. + */ + flowFilePretty: true, + + /** By default, all user data is stored in a directory called `.node-red` under + * the user's home directory. To use a different location, the following + * property can be used + */ + //userDir: '/home/nol/.node-red/', + + /** Node-RED scans the `nodes` directory in the userDir to find local node files. + * The following property can be used to specify an additional directory to scan. + */ + //nodesDir: '/home/nol/.node-red/nodes', + +/******************************************************************************* + * Security + * - adminAuth + * - https + * - httpsRefreshInterval + * - requireHttps + * - httpNodeAuth + * - httpStaticAuth + ******************************************************************************/ + + /** To password protect the Node-RED editor and admin API, the following + * property can be used. See https://nodered.org/docs/security.html for details. + */ + //adminAuth: { + // type: "credentials", + // users: [{ + // username: "admin", + // password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.", + // permissions: "*" + // }] + //}, + + /** The following property can be used to enable HTTPS + * This property can be either an object, containing both a (private) key + * and a (public) certificate, or a function that returns such an object. + * See http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener + * for details of its contents. + */ + + /** Option 1: static object */ + //https: { + // key: require("fs").readFileSync('privkey.pem'), + // cert: require("fs").readFileSync('cert.pem') + //}, + + /** Option 2: function that returns the HTTP configuration object */ + // https: function() { + // // This function should return the options object, or a Promise + // // that resolves to the options object + // return { + // key: require("fs").readFileSync('privkey.pem'), + // cert: require("fs").readFileSync('cert.pem') + // } + // }, + + /** If the `https` setting is a function, the following setting can be used + * to set how often, in hours, the function will be called. That can be used + * to refresh any certificates. + */ + //httpsRefreshInterval : 12, + + /** The following property can be used to cause insecure HTTP connections to + * be redirected to HTTPS. + */ + //requireHttps: true, + + /** To password protect the node-defined HTTP endpoints (httpNodeRoot), + * including node-red-dashboard, or the static content (httpStatic), the + * following properties can be used. + * The `pass` field is a bcrypt hash of the password. + * See https://nodered.org/docs/security.html#generating-the-password-hash + */ + //httpNodeAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + //httpStaticAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + +/******************************************************************************* + * Server Settings + * - uiPort + * - uiHost + * - apiMaxLength + * - httpServerOptions + * - httpAdminRoot + * - httpAdminMiddleware + * - httpNodeRoot + * - httpNodeCors + * - httpNodeMiddleware + * - httpStatic + * - httpStaticRoot + ******************************************************************************/ + + /** the tcp port that the Node-RED web server is listening on */ + uiPort: process.env.PORT || 1880, + + /** By default, the Node-RED UI accepts connections on all IPv4 interfaces. + * To listen on all IPv6 addresses, set uiHost to "::", + * The following property can be used to listen on a specific interface. For + * example, the following would only allow connections from the local machine. + */ + //uiHost: "127.0.0.1", + + /** The maximum size of HTTP request that will be accepted by the runtime api. + * Default: 5mb + */ + //apiMaxLength: '5mb', + + /** The following property can be used to pass custom options to the Express.js + * server used by Node-RED. For a full list of available options, refer + * to http://expressjs.com/en/api.html#app.settings.table + */ + //httpServerOptions: { }, + + /** By default, the Node-RED UI is available at http://localhost:1880/ + * The following property can be used to specify a different root path. + * If set to false, this is disabled. + */ + //httpAdminRoot: '/admin', + + /** The following property can be used to add a custom middleware function + * in front of all admin http routes. For example, to set custom http + * headers. It can be a single function or an array of middleware functions. + */ + // httpAdminMiddleware: function(req,res,next) { + // // Set the X-Frame-Options header to limit where the editor + // // can be embedded + // //res.set('X-Frame-Options', 'sameorigin'); + // next(); + // }, + + + /** Some nodes, such as HTTP In, can be used to listen for incoming http requests. + * By default, these are served relative to '/'. The following property + * can be used to specify a different root path. If set to false, this is + * disabled. + */ + //httpNodeRoot: '/red-nodes', + + /** The following property can be used to configure cross-origin resource sharing + * in the HTTP nodes. + * See https://github.com/troygoode/node-cors#configuration-options for + * details on its contents. The following is a basic permissive set of options: + */ + //httpNodeCors: { + // origin: "*", + // methods: "GET,PUT,POST,DELETE" + //}, + + /** If you need to set an http proxy please set an environment variable + * called http_proxy (or HTTP_PROXY) outside of Node-RED in the operating system. + * For example - http_proxy=http://myproxy.com:8080 + * (Setting it here will have no effect) + * You may also specify no_proxy (or NO_PROXY) to supply a comma separated + * list of domains to not proxy, eg - no_proxy=.acme.co,.acme.co.uk + */ + + /** The following property can be used to add a custom middleware function + * in front of all http in nodes. This allows custom authentication to be + * applied to all http in nodes, or any other sort of common request processing. + * It can be a single function or an array of middleware functions. + */ + //httpNodeMiddleware: function(req,res,next) { + // // Handle/reject the request, or pass it on to the http in node by calling next(); + // // Optionally skip our rawBodyParser by setting this to true; + // //req.skipRawBodyParser = true; + // next(); + //}, + + /** When httpAdminRoot is used to move the UI to a different root path, the + * following property can be used to identify a directory of static content + * that should be served at http://localhost:1880/. + * When httpStaticRoot is set differently to httpAdminRoot, there is no need + * to move httpAdminRoot + */ + //httpStatic: '/home/nol/node-red-static/', //single static source + /** + * OR multiple static sources can be created using an array of objects... + * Each object can also contain an options object for further configuration. + * See https://expressjs.com/en/api.html#express.static for available options. + */ + //httpStatic: [ + // {path: '/home/nol/pics/', root: "/img/"}, + // {path: '/home/nol/reports/', root: "/doc/"}, + // {path: '/home/nol/videos/', root: "/vid/", options: {maxAge: '1d'}} + //], + + /** + * All static routes will be appended to httpStaticRoot + * e.g. if httpStatic = "/home/nol/docs" and httpStaticRoot = "/static/" + * then "/home/nol/docs" will be served at "/static/" + * e.g. if httpStatic = [{path: '/home/nol/pics/', root: "/img/"}] + * and httpStaticRoot = "/static/" + * then "/home/nol/pics/" will be served at "/static/img/" + */ + //httpStaticRoot: '/static/', + +/******************************************************************************* + * Runtime Settings + * - lang + * - runtimeState + * - diagnostics + * - logging + * - contextStorage + * - exportGlobalContextKeys + * - externalModules + ******************************************************************************/ + + /** Uncomment the following to run node-red in your preferred language. + * Available languages include: en-US (default), ja, de, zh-CN, zh-TW, ru, ko + * Some languages are more complete than others. + */ + // lang: "de", + + /** Configure diagnostics options + * - enabled: When `enabled` is `true` (or unset), diagnostics data will + * be available at http://localhost:1880/diagnostics + * - ui: When `ui` is `true` (or unset), the action `show-system-info` will + * be available to logged in users of node-red editor + */ + diagnostics: { + /** enable or disable diagnostics endpoint. Must be set to `false` to disable */ + enabled: true, + /** enable or disable diagnostics display in the node-red editor. Must be set to `false` to disable */ + ui: true, + }, + /** Configure runtimeState options + * - enabled: When `enabled` is `true` flows runtime can be Started/Stopped + * by POSTing to available at http://localhost:1880/flows/state + * - ui: When `ui` is `true`, the action `core:start-flows` and + * `core:stop-flows` will be available to logged in users of node-red editor + * Also, the deploy menu (when set to default) will show a stop or start button + */ + runtimeState: { + /** enable or disable flows/state endpoint. Must be set to `false` to disable */ + enabled: false, + /** show or hide runtime stop/start options in the node-red editor. Must be set to `false` to hide */ + ui: false, + }, + /** Configure the logging output */ + logging: { + /** Only console logging is currently supported */ + console: { + /** Level of logging to be recorded. Options are: + * fatal - only those errors which make the application unusable should be recorded + * error - record errors which are deemed fatal for a particular request + fatal errors + * warn - record problems which are non fatal + errors + fatal errors + * info - record information about the general running of the application + warn + error + fatal errors + * debug - record information which is more verbose than info + info + warn + error + fatal errors + * trace - record very detailed logging + debug + info + warn + error + fatal errors + * off - turn off all logging (doesn't affect metrics or audit) + */ + level: "info", + /** Whether or not to include metric events in the log output */ + metrics: false, + /** Whether or not to include audit events in the log output */ + audit: false + } + }, + + /** Context Storage + * The following property can be used to enable context storage. The configuration + * provided here will enable file-based context that flushes to disk every 30 seconds. + * Refer to the documentation for further options: https://nodered.org/docs/api/context/ + */ + //contextStorage: { + // default: { + // module:"localfilesystem" + // }, + //}, + + /** `global.keys()` returns a list of all properties set in global context. + * This allows them to be displayed in the Context Sidebar within the editor. + * In some circumstances it is not desirable to expose them to the editor. The + * following property can be used to hide any property set in `functionGlobalContext` + * from being list by `global.keys()`. + * By default, the property is set to false to avoid accidental exposure of + * their values. Setting this to true will cause the keys to be listed. + */ + exportGlobalContextKeys: false, + + /** Configure how the runtime will handle external npm modules. + * This covers: + * - whether the editor will allow new node modules to be installed + * - whether nodes, such as the Function node are allowed to have their + * own dynamically configured dependencies. + * The allow/denyList options can be used to limit what modules the runtime + * will install/load. It can use '*' as a wildcard that matches anything. + */ + externalModules: { + // autoInstall: false, /** Whether the runtime will attempt to automatically install missing modules */ + // autoInstallRetry: 30, /** Interval, in seconds, between reinstall attempts */ + // palette: { /** Configuration for the Palette Manager */ + // allowInstall: true, /** Enable the Palette Manager in the editor */ + // allowUpdate: true, /** Allow modules to be updated in the Palette Manager */ + // allowUpload: true, /** Allow module tgz files to be uploaded and installed */ + // allowList: ['*'], + // denyList: [], + // allowUpdateList: ['*'], + // denyUpdateList: [] + // }, + // modules: { /** Configuration for node-specified modules */ + // allowInstall: true, + // allowList: [], + // denyList: [] + // } + }, + + +/******************************************************************************* + * Editor Settings + * - disableEditor + * - editorTheme + ******************************************************************************/ + + /** The following property can be used to disable the editor. The admin API + * is not affected by this option. To disable both the editor and the admin + * API, use either the httpRoot or httpAdminRoot properties + */ + //disableEditor: false, + + /** Customising the editor + * See https://nodered.org/docs/user-guide/runtime/configuration#editor-themes + * for all available options. + */ + editorTheme: { + /** The following property can be used to set a custom theme for the editor. + * See https://github.com/node-red-contrib-themes/theme-collection for + * a collection of themes to chose from. + */ + //theme: "", + + /** To disable the 'Welcome to Node-RED' tour that is displayed the first + * time you access the editor for each release of Node-RED, set this to false + */ + //tours: false, + + palette: { + /** The following property can be used to order the categories in the editor + * palette. If a node's category is not in the list, the category will get + * added to the end of the palette. + * If not set, the following default order is used: + */ + //categories: ['subflows', 'common', 'function', 'network', 'sequence', 'parser', 'storage'], + }, + + projects: { + /** To enable the Projects feature, set this value to true */ + enabled: false, + workflow: { + /** Set the default projects workflow mode. + * - manual - you must manually commit changes + * - auto - changes are automatically committed + * This can be overridden per-user from the 'Git config' + * section of 'User Settings' within the editor + */ + mode: "manual" + } + }, + + codeEditor: { + /** Select the text editor component used by the editor. + * As of Node-RED V3, this defaults to "monaco", but can be set to "ace" if desired + */ + lib: "monaco", + options: { + /** The follow options only apply if the editor is set to "monaco" + * + * theme - must match the file name of a theme in + * packages/node_modules/@node-red/editor-client/src/vendor/monaco/dist/theme + * e.g. "tomorrow-night", "upstream-sunburst", "github", "my-theme" + */ + // theme: "vs", + /** other overrides can be set e.g. fontSize, fontFamily, fontLigatures etc. + * for the full list, see https://microsoft.github.io/monaco-editor/docs.html#interfaces/editor.IStandaloneEditorConstructionOptions.html + */ + //fontSize: 14, + //fontFamily: "Cascadia Code, Fira Code, Consolas, 'Courier New', monospace", + //fontLigatures: true, + } + }, + + markdownEditor: { + mermaid: { + /** enable or disable mermaid diagram in markdown document + */ + enabled: true + } + }, + + }, + +/******************************************************************************* + * Node Settings + * - fileWorkingDirectory + * - functionGlobalContext + * - functionExternalModules + * - functionTimeout + * - nodeMessageBufferMaxLength + * - ui (for use with Node-RED Dashboard) + * - debugUseColors + * - debugMaxLength + * - execMaxBufferSize + * - httpRequestTimeout + * - mqttReconnectTime + * - serialReconnectTime + * - socketReconnectTime + * - socketTimeout + * - tcpMsgQueueSize + * - inboundWebSocketTimeout + * - tlsConfigDisableLocalFiles + * - webSocketNodeVerifyClient + ******************************************************************************/ + + /** The working directory to handle relative file paths from within the File nodes + * defaults to the working directory of the Node-RED process. + */ + //fileWorkingDirectory: "", + + /** Allow the Function node to load additional npm modules directly */ + functionExternalModules: true, + + /** Default timeout, in seconds, for the Function node. 0 means no timeout is applied */ + functionTimeout: 0, + + /** The following property can be used to set predefined values in Global Context. + * This allows extra node modules to be made available with in Function node. + * For example, the following: + * functionGlobalContext: { os:require('os') } + * will allow the `os` module to be accessed in a Function node using: + * global.get("os") + */ + functionGlobalContext: { + // os:require('os'), + }, + + /** The maximum number of messages nodes will buffer internally as part of their + * operation. This applies across a range of nodes that operate on message sequences. + * defaults to no limit. A value of 0 also means no limit is applied. + */ + //nodeMessageBufferMaxLength: 0, + + /** If you installed the optional node-red-dashboard you can set it's path + * relative to httpNodeRoot + * Other optional properties include + * readOnly:{boolean}, + * middleware:{function or array}, (req,res,next) - http middleware + * ioMiddleware:{function or array}, (socket,next) - socket.io middleware + */ + //ui: { path: "ui" }, + + /** Colourise the console output of the debug node */ + //debugUseColors: true, + + /** The maximum length, in characters, of any message sent to the debug sidebar tab */ + debugMaxLength: 1000, + + /** Maximum buffer size for the exec node. Defaults to 10Mb */ + //execMaxBufferSize: 10000000, + + /** Timeout in milliseconds for HTTP request connections. Defaults to 120s */ + //httpRequestTimeout: 120000, + + /** Retry time in milliseconds for MQTT connections */ + mqttReconnectTime: 15000, + + /** Retry time in milliseconds for Serial port connections */ + serialReconnectTime: 15000, + + /** Retry time in milliseconds for TCP socket connections */ + //socketReconnectTime: 10000, + + /** Timeout in milliseconds for TCP server socket connections. Defaults to no timeout */ + //socketTimeout: 120000, + + /** Maximum number of messages to wait in queue while attempting to connect to TCP socket + * defaults to 1000 + */ + //tcpMsgQueueSize: 2000, + + /** Timeout in milliseconds for inbound WebSocket connections that do not + * match any configured node. Defaults to 5000 + */ + //inboundWebSocketTimeout: 5000, + + /** To disable the option for using local files for storing keys and + * certificates in the TLS configuration node, set this to true. + */ + //tlsConfigDisableLocalFiles: true, + + /** The following property can be used to verify WebSocket connection attempts. + * This allows, for example, the HTTP request headers to be checked to ensure + * they include valid authentication information. + */ + //webSocketNodeVerifyClient: function(info) { + // /** 'info' has three properties: + // * - origin : the value in the Origin header + // * - req : the HTTP request + // * - secure : true if req.connection.authorized or req.connection.encrypted is set + // * + // * The function should return true if the connection should be accepted, false otherwise. + // * + // * Alternatively, if this function is defined to accept a second argument, callback, + // * it can be used to verify the client asynchronously. + // * The callback takes three arguments: + // * - result : boolean, whether to accept the connection or not + // * - code : if result is false, the HTTP error status to return + // * - reason: if result is false, the HTTP reason string to return + // */ + //}, +} diff --git a/postgres/settings/postgres.env.sample b/postgres/settings/postgres.env.sample new file mode 100644 index 0000000..0b0bf8b --- /dev/null +++ b/postgres/settings/postgres.env.sample @@ -0,0 +1,3 @@ +POSTGRES_USER=xxxxxxxxx +POSTGRES_PASSWORD=xxxxxxxxx +POSTGRES_DB=xxxxxxxxx \ No newline at end of file diff --git a/services/docker-wol.service b/services/docker-wol.service new file mode 100644 index 0000000..fca309b --- /dev/null +++ b/services/docker-wol.service @@ -0,0 +1,11 @@ +[Unit] +Description=Listen for wake-on-lan from docker via pipe + +[Service] +Restart=always +User=nobody +Group=nogroup +ExecStart=/usr/bin/wakeonlan -f /dev/hass-wolpipe + +[Install] +WantedBy=multi-user.target diff --git a/services/install.sh b/services/install.sh new file mode 100755 index 0000000..e0d9143 --- /dev/null +++ b/services/install.sh @@ -0,0 +1,10 @@ +#!/bin/bash +sudo apt install -y wakeonlan +sudo mkfifo /dev/hass-wolpipe + +sudo chmod 644 /dev/hass-wolpipe +sudo cp -R docker-wol.service /etc/systemd/system/docker-wol.service + +sudo systemctl daemon-reload +sudo systemctl start docker-wol +sudo systemctl enable docker-wol diff --git a/zigbee2mqtt/settings/DIYRuZ_FreePad.js b/zigbee2mqtt/settings/DIYRuZ_FreePad.js new file mode 100644 index 0000000..81a1420 --- /dev/null +++ b/zigbee2mqtt/settings/DIYRuZ_FreePad.js @@ -0,0 +1,132 @@ +const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters'); +const genMultistateInputClusterId = 18; + +const getKey = (object, value) => { + for (const key in object) { + if (object[key] == value) return key; + } +}; +const bind = async (endpoint, target, clusters) => { + for (const cluster of clusters) { + await endpoint.bind(cluster, target); + } +}; + +const fz = { + diyruz_freepad_clicks: { + cluster: 'genMultistateInput', + type: ['readResponse', 'attributeReport'], + convert: (model, msg, publish, options, meta) => { + const button = getKey(model.endpoint(msg.device), msg.endpoint.ID); + const lookup = { + 0: 'hold', + 1: 'single', + 2: 'double', + 3: 'triple', + 4: 'quadruple', + 255: 'release', + }; + const clicks = msg.data['presentValue']; + const action = lookup[clicks] ? lookup[clicks] : `many_${clicks}`; + return { + action: `${button}_${action}`, + }; + }, + }, +}; + +const tz = { + diyruz_freepad_on_off_config: { + key: ['switch_type', 'switch_actions'], + convertSet: async (entity, key, value, meta) => { + const switchTypesLookup = { + toggle: 0x00, + momentary: 0x01, + multifunction: 0x02, + }; + const switchActionsLookup = { + on: 0x00, + off: 0x01, + toggle: 0x02, + }; + const intVal = parseInt(value, 10); + const switchType = switchTypesLookup.hasOwnProperty(value) ? switchTypesLookup[value] : intVal; + const switchActions = switchActionsLookup.hasOwnProperty(value) ? switchActionsLookup[value] : intVal; + + const payloads = { + switch_type: { + switchType, + }, + switch_actions: { + switchActions, + }, + }; + + await entity.write('genOnOffSwitchCfg', payloads[key]); + }, + }, +}; + +const device = { + zigbeeModel: ['DIYRuZ_FreePad'], + model: 'DIYRuZ_FreePad', + vendor: 'DIYRuZ', + description: '[DiY 8/12/20 button keypad](http://modkam.ru/?p=1114)', + supports: 'single, double, triple, quadruple, many, hold/release', + fromZigbee: [fz.diyruz_freepad_clicks, zigbeeHerdsmanConverters.fromZigbeeConverters.battery], + toZigbee: [tz.diyruz_freepad_on_off_config, zigbeeHerdsmanConverters.toZigbeeConverters.factory_reset], + meta: { + configureKey: 1, + }, + configure: async (device, coordinatorEndpoint) => { + const endpoint = device.getEndpoint(1); + await bind(endpoint, coordinatorEndpoint, ['genPowerCfg']); + if (device.applicationVersion < 3) { //Legacy PM2 firmwares + const payload = [{ + attribute: 'batteryPercentageRemaining', + minimumReportInterval: 0, + maximumReportInterval: 3600, + reportableChange: 0, + }, { + attribute: 'batteryVoltage', + minimumReportInterval: 0, + maximumReportInterval: 3600, + reportableChange: 0, + }]; + await endpoint.configureReporting('genPowerCfg', payload); + } + + + device.endpoints.forEach(async (ep) => { + if (ep.outputClusters.includes(genMultistateInputClusterId)) { + await bind(ep, coordinatorEndpoint, ['genMultistateInput']); + } + }); + }, + endpoint: (device) => { + return { + button_1: 1, + button_2: 2, + button_3: 3, + button_4: 4, + button_5: 5, + button_6: 6, + button_7: 7, + button_8: 8, + button_9: 9, + button_10: 10, + button_11: 11, + button_12: 12, + button_13: 13, + button_14: 14, + button_15: 15, + button_16: 16, + button_17: 17, + button_18: 18, + button_19: 19, + button_20: 20, + }; + }, +}; + +module.exports = device; \ No newline at end of file diff --git a/zigbee2mqtt/settings/configuration_backup_v1.yaml b/zigbee2mqtt/settings/configuration_backup_v1.yaml new file mode 100644 index 0000000..347b5cd --- /dev/null +++ b/zigbee2mqtt/settings/configuration_backup_v1.yaml @@ -0,0 +1,235 @@ +homeassistant: true +permit_join: false +frontend: + port: 8080 +experimental: + new_api: true +mqtt: + base_topic: z2m-tcp + server: mqtt://192.168.1.6:1883 + user: hass + password: mqttpass +serial: + port: tcp://192.168.1.132:6638 +advanced: + log_level: info + channel: 11 + pan_id: 6754 + last_seen: ISO_8601_local + homeassistant_legacy_entity_attributes: false + legacy_api: false + legacy_availability_payload: false + transmit_power: 20 +external_converters: + - ptvo_counter_2ch.js +device_options: + legacy: false +devices: + '0x00124b001f315241': + friendly_name: light_3 + '0x00124b001d3a3a12': + friendly_name: light_4 + '0xa4c138b6bab321de': + friendly_name: washer + '0xa4c138bc0d05b7bf': + friendly_name: light_hall_long + '0xa4c13809d74d5e1f': + friendly_name: dishwasher + '0x00124b001f2f63d9': + friendly_name: light_2 + '0x00124b001d644d03': + friendly_name: light_1 + '0x54ef4410000d6708': + friendly_name: brightness_bath + '0x54ef4410001ffbb1': + friendly_name: shower_light_sensor + '0x00158d00012d9ad7': + friendly_name: temperature_balcony + '0xa4c1388a7a97e475': + friendly_name: temperature_outside_bedroom + '0x00158d00089761d4': + friendly_name: temperature_bedroom + '0x54ef4410003138d4': + friendly_name: plug_water_heater + '0x000b3cfffefadaaa': + friendly_name: light_bedroom_2 + '0x086bd7fffe0042b0': + friendly_name: light_bedroom_7 + '0x00158d00035356c6': + friendly_name: button_test + '0x00158d000392b34f': + friendly_name: door_shower + '0x54ef441000673f2a': + friendly_name: radiator_kitchen + '0x54ef4410006fe989': + friendly_name: radiator_bedroom + '0x54ef4410006fe51e': + friendly_name: radiator_bedroom_balcony + '0x00158d000913e2e7': + friendly_name: temperature_mainroom + '0x00158d000944bbdf': + friendly_name: temperature_kitchen + '0xa4c1385ae827ec1c': + friendly_name: light_bath + '0x00158d00053f1e20': + friendly_name: curtain_mainroom + '0x00158d000398d9e7': + friendly_name: motion_bath + '0x00158d0003941e67': + friendly_name: door_bath + '0x00158d00079836a0': + friendly_name: curtain_kitchen + '0x000d6f0012060764': + friendly_name: smoke_detector_kitchen + '0x9035eafffe541813': + friendly_name: shower_mirror + '0x00158d0003969a5d': + friendly_name: door_locker_hall_left + '0x54ef4410001ff4ec': + friendly_name: brightness_hall + '0x00158d000398fa90': + friendly_name: motion_shower_center + '0x00158d00053f38ef': + friendly_name: curtain_bedroom + '0x00158d0002b0c46a': + friendly_name: curtain_bedroom_balcony + '0x00158d000398f9a1': + friendly_name: motion_hall_1 + '0x00158d000396c997': + friendly_name: door_kitchen + '0x00158d000396981f': + friendly_name: door_cloakroom + '0x00158d0003a10728': + friendly_name: door_childroom + '0x00158d000396c880': + friendly_name: door_bedroom + '0x00158d0003f1b8ee': + friendly_name: motion_childroom + '0x00158d00091c43c7': + friendly_name: temperature_bath + '0x00158d0008e1b6bc': + friendly_name: water_leak_bath_bath + '0x00158d00072a2198': + friendly_name: water_leak_bath_sink + '0x00158d0008e019d0': + friendly_name: water_leak_kitchen_fridge + '0x9035eafffe891816': + friendly_name: light_bath_mirror + '0x000d6f00131ca650': + friendly_name: smoke_detector_hall + '0x54ef4410002c8a61': + friendly_name: plug_server + '0x00158d0003a3a0f8': + friendly_name: button_shower_sink + '0x00158d0006ca2293': + friendly_name: water_leak_radiator_hub + '0xe0798dfffebca4cc': + friendly_name: switch_mirror_bath_heater + '0x54ef4410001952e3': + friendly_name: plug_yolka + '0x00158d000398de0b': + friendly_name: motion_hall_2 + '0x00158d00044bac2c': + friendly_name: motion_bath_2 + '0xe0798dfffec0fba2': + friendly_name: switch_mirror_shower_heater + '0xa4c138e184df9c4b': + friendly_name: light_mainroom_mainlamp + '0xa4c1382016d75a72': + friendly_name: light_mainroom_spotlights + '0xa4c13858fba9206a': + friendly_name: light_mainroom_pc_spotlight + '0xa4c138f30d13e363': + friendly_name: light_balcony_spotlight + '0xa4c13872c98a123d': + friendly_name: light_bedroom_nightlight_left + '0xa4c138ec247343ac': + friendly_name: light_bedroom_spotlights + '0xa4c138ebc36bcef7': + friendly_name: light_bedroom_pc_spotlight + '0xa4c138665085e34c': + friendly_name: light_bedroom_mainlight + '0xa4c138c4615096df': + friendly_name: light_bedroom_pc_nightlight + '0xa4c1381b0d3a90a8': + friendly_name: light_bedroom_nightlight_right + '0x54ef441000313804': + friendly_name: light_curtain_mainroom + '0x54ef44100031341f': + friendly_name: light_curtain_kitchen + '0xa4c138e15f46046e': + friendly_name: light_kitchen_table_lamp + '0xa4c138881ad5f2a7': + friendly_name: light_kitchen_bar_lamp + '0xa4c1389d59a26238': + friendly_name: light_kitchen_set + '0xa4c1385ff0c3da73': + friendly_name: light_kitchen_spotlights + '0xa4c138227e28f0f5': + friendly_name: light_childroom_main + '0xa4c138af504f84c7': + friendly_name: light_childroom_bed + '0xa4c13835b22ecd89': + friendly_name: light_childroom_spotlights + '0xa4c138a0cfb8e117': + friendly_name: ventilation_bath + '0xa4c1382b628aacb6': + friendly_name: light_bath_shelf + '0xa4c1385548a794f5': + friendly_name: ventilation_shower + '0xa4c138b789359794': + friendly_name: light_shower_main_spotlights + '0xa4c1385a75956001': + friendly_name: light_shower_shower_spotlights + '0xa4c138dbf32f44f8': + friendly_name: light_shower_shelf_light + '0x00158d000398f9f6': + friendly_name: motion_shower_shower + '0x00158d0003a106ea': + friendly_name: door_locker2_hall_right + '0x00158d0003536fac': + friendly_name: door_locker2_hall_left + '0x00158d0003a10585': + friendly_name: door_locker3_hall_left + '0xa4c138f709069275': + friendly_name: curtain_bedroom_bobbinet_balcony + '0x00158d00090e5cf7': + friendly_name: temperature_childroom + '0x00158d000396c7ab': + friendly_name: door_locker_hall_right + '0x00158d000396c934': + friendly_name: door_locker3_hall_right + '0x00158d0002113158': + friendly_name: water_leak_water_hub + '0xa4c1381710c7c92a': + friendly_name: curtain_mainroom_bobbinet + '0x54ef4410005d97df': + friendly_name: presence_shower + '0x00158d0003cc41a2': + friendly_name: motion_kitchenset_right + '0x00158d0000f6b2fa': + friendly_name: motion_kitchenset_left + '0xa4c1381257c87bdc': + friendly_name: curtain_kitchen_bobbinet + '0x00124b0022145c82': + friendly_name: co2_bedroom + '0x00158d00039d4fea': + friendly_name: door_entrance + '0x54ef4410006ff081': + friendly_name: radiator_mainroom + '0x54ef441000703fc3': + friendly_name: radiator_childroom + '0x00158d0008e038bc': + friendly_name: water_leak_shower_sink + '0x00158d00091c7eac': + friendly_name: temperature_winecooler + '0x00158d0003a5d05d': + friendly_name: lock_door + '0x00158d00090e6601': + friendly_name: temperature_shower +groups: {} +availability: + active: + timeout: 1440 + passive: + timeout: 1440 diff --git a/zigbee2mqtt/settings/configuration_backup_v2.yaml b/zigbee2mqtt/settings/configuration_backup_v2.yaml new file mode 100644 index 0000000..3fc65ee --- /dev/null +++ b/zigbee2mqtt/settings/configuration_backup_v2.yaml @@ -0,0 +1,227 @@ +homeassistant: true +frontend: + port: 8080 +mqtt: + base_topic: z2m-tcp + server: mqtt://192.168.1.6:1883 + user: hass + password: mqttpass +serial: + port: tcp://192.168.1.132:6638 +advanced: + log_level: info + channel: 11 + pan_id: 6754 + last_seen: ISO_8601_local + transmit_power: 20 +device_options: {} +devices: + '0x00124b001f315241': + friendly_name: light_3 + '0x00124b001d3a3a12': + friendly_name: light_4 + '0xa4c138b6bab321de': + friendly_name: washer + '0xa4c138bc0d05b7bf': + friendly_name: light_hall_long + '0xa4c13809d74d5e1f': + friendly_name: dishwasher + '0x00124b001f2f63d9': + friendly_name: light_2 + '0x00124b001d644d03': + friendly_name: light_1 + '0x54ef4410000d6708': + friendly_name: brightness_bath + '0x54ef4410001ffbb1': + friendly_name: shower_light_sensor + '0x00158d00012d9ad7': + friendly_name: temperature_balcony + '0xa4c1388a7a97e475': + friendly_name: temperature_outside_bedroom + '0x00158d00089761d4': + friendly_name: temperature_bedroom + '0x54ef4410003138d4': + friendly_name: plug_water_heater + '0x000b3cfffefadaaa': + friendly_name: light_bedroom_2 + '0x086bd7fffe0042b0': + friendly_name: light_bedroom_7 + '0x00158d00035356c6': + friendly_name: button_test + '0x00158d000392b34f': + friendly_name: door_shower + '0x54ef441000673f2a': + friendly_name: radiator_kitchen + '0x54ef4410006fe989': + friendly_name: radiator_bedroom + '0x54ef4410006fe51e': + friendly_name: radiator_bedroom_balcony + '0x00158d000913e2e7': + friendly_name: temperature_mainroom + '0x00158d000944bbdf': + friendly_name: temperature_kitchen + '0xa4c1385ae827ec1c': + friendly_name: light_bath + '0x00158d00053f1e20': + friendly_name: curtain_mainroom + '0x00158d000398d9e7': + friendly_name: motion_bath + '0x00158d0003941e67': + friendly_name: door_bath + '0x00158d00079836a0': + friendly_name: curtain_kitchen + '0x000d6f0012060764': + friendly_name: smoke_detector_kitchen + '0x9035eafffe541813': + friendly_name: shower_mirror + '0x00158d0003969a5d': + friendly_name: door_locker_hall_left + '0x54ef4410001ff4ec': + friendly_name: brightness_hall + '0x00158d000398fa90': + friendly_name: motion_shower_center + '0x00158d00053f38ef': + friendly_name: curtain_bedroom + '0x00158d0002b0c46a': + friendly_name: curtain_bedroom_balcony + '0x00158d000398f9a1': + friendly_name: motion_hall_1 + '0x00158d000396c997': + friendly_name: door_kitchen + '0x00158d000396981f': + friendly_name: door_cloakroom + '0x00158d0003a10728': + friendly_name: door_childroom + '0x00158d000396c880': + friendly_name: door_bedroom + '0x00158d0003f1b8ee': + friendly_name: motion_childroom + '0x00158d00091c43c7': + friendly_name: temperature_bath + '0x00158d0008e1b6bc': + friendly_name: water_leak_bath_bath + '0x00158d00072a2198': + friendly_name: water_leak_bath_sink + '0x00158d0008e019d0': + friendly_name: water_leak_kitchen_fridge + '0x9035eafffe891816': + friendly_name: light_bath_mirror + '0x000d6f00131ca650': + friendly_name: smoke_detector_hall + '0x54ef4410002c8a61': + friendly_name: plug_server + '0x00158d0003a3a0f8': + friendly_name: button_shower_sink + '0x00158d0006ca2293': + friendly_name: water_leak_radiator_hub + '0xe0798dfffebca4cc': + friendly_name: switch_mirror_bath_heater + '0x54ef4410001952e3': + friendly_name: plug_yolka + '0x00158d000398de0b': + friendly_name: motion_hall_2 + '0x00158d00044bac2c': + friendly_name: motion_bath_2 + '0xe0798dfffec0fba2': + friendly_name: switch_mirror_shower_heater + '0xa4c138e184df9c4b': + friendly_name: light_mainroom_mainlamp + '0xa4c1382016d75a72': + friendly_name: light_mainroom_spotlights + '0xa4c13858fba9206a': + friendly_name: light_mainroom_pc_spotlight + '0xa4c138f30d13e363': + friendly_name: light_balcony_spotlight + '0xa4c13872c98a123d': + friendly_name: light_bedroom_nightlight_left + '0xa4c138ec247343ac': + friendly_name: light_bedroom_spotlights + '0xa4c138ebc36bcef7': + friendly_name: light_bedroom_pc_spotlight + '0xa4c138665085e34c': + friendly_name: light_bedroom_mainlight + '0xa4c138c4615096df': + friendly_name: light_bedroom_pc_nightlight + '0xa4c1381b0d3a90a8': + friendly_name: light_bedroom_nightlight_right + '0x54ef441000313804': + friendly_name: light_curtain_mainroom + '0x54ef44100031341f': + friendly_name: light_curtain_kitchen + '0xa4c138e15f46046e': + friendly_name: light_kitchen_table_lamp + '0xa4c138881ad5f2a7': + friendly_name: light_kitchen_bar_lamp + '0xa4c1389d59a26238': + friendly_name: light_kitchen_set + '0xa4c1385ff0c3da73': + friendly_name: light_kitchen_spotlights + '0xa4c138227e28f0f5': + friendly_name: light_childroom_main + '0xa4c138af504f84c7': + friendly_name: light_childroom_bed + '0xa4c13835b22ecd89': + friendly_name: light_childroom_spotlights + '0xa4c138a0cfb8e117': + friendly_name: ventilation_bath + '0xa4c1382b628aacb6': + friendly_name: light_bath_shelf + '0xa4c1385548a794f5': + friendly_name: ventilation_shower + '0xa4c138b789359794': + friendly_name: light_shower_main_spotlights + '0xa4c1385a75956001': + friendly_name: light_shower_shower_spotlights + '0xa4c138dbf32f44f8': + friendly_name: light_shower_shelf_light + '0x00158d000398f9f6': + friendly_name: motion_shower_shower + '0x00158d0003a106ea': + friendly_name: door_locker2_hall_right + '0x00158d0003536fac': + friendly_name: door_locker2_hall_left + '0x00158d0003a10585': + friendly_name: door_locker3_hall_left + '0xa4c138f709069275': + friendly_name: curtain_bedroom_bobbinet_balcony + '0x00158d00090e5cf7': + friendly_name: temperature_childroom + '0x00158d000396c7ab': + friendly_name: door_locker_hall_right + '0x00158d000396c934': + friendly_name: door_locker3_hall_right + '0x00158d0002113158': + friendly_name: water_leak_water_hub + '0xa4c1381710c7c92a': + friendly_name: curtain_mainroom_bobbinet + '0x54ef4410005d97df': + friendly_name: presence_shower + '0x00158d0003cc41a2': + friendly_name: motion_kitchenset_right + '0x00158d0000f6b2fa': + friendly_name: motion_kitchenset_left + '0xa4c1381257c87bdc': + friendly_name: curtain_kitchen_bobbinet + '0x00124b0022145c82': + friendly_name: co2_bedroom + '0x00158d00039d4fea': + friendly_name: door_entrance + '0x54ef4410006ff081': + friendly_name: radiator_mainroom + '0x54ef441000703fc3': + friendly_name: radiator_childroom + '0x00158d0008e038bc': + friendly_name: water_leak_shower_sink + '0x00158d00091c7eac': + friendly_name: temperature_winecooler + '0x00158d0003a5d05d': + friendly_name: lock_door + '0x00158d00090e6601': + friendly_name: temperature_shower +groups: {} +availability: + active: + timeout: 1440 + passive: + timeout: 1440 +version: 2 diff --git a/zigbee2mqtt/settings/configuration_backup_v3.yaml b/zigbee2mqtt/settings/configuration_backup_v3.yaml new file mode 100644 index 0000000..99b9335 --- /dev/null +++ b/zigbee2mqtt/settings/configuration_backup_v3.yaml @@ -0,0 +1,230 @@ +homeassistant: + enabled: true +frontend: + enabled: true + port: 8080 +mqtt: + base_topic: z2m-tcp + server: mqtt://192.168.1.6:1883 + user: hass + password: mqttpass +serial: + port: tcp://192.168.1.132:6638 +advanced: + log_level: info + channel: 11 + pan_id: 6754 + last_seen: ISO_8601_local + transmit_power: 20 +device_options: {} +devices: + '0x00124b001f315241': + friendly_name: light_3 + '0x00124b001d3a3a12': + friendly_name: light_4 + '0xa4c138b6bab321de': + friendly_name: washer + '0xa4c138bc0d05b7bf': + friendly_name: light_hall_long + '0xa4c13809d74d5e1f': + friendly_name: dishwasher + '0x00124b001f2f63d9': + friendly_name: light_2 + '0x00124b001d644d03': + friendly_name: light_1 + '0x54ef4410000d6708': + friendly_name: brightness_bath + '0x54ef4410001ffbb1': + friendly_name: shower_light_sensor + '0x00158d00012d9ad7': + friendly_name: temperature_balcony + '0xa4c1388a7a97e475': + friendly_name: temperature_outside_bedroom + '0x00158d00089761d4': + friendly_name: temperature_bedroom + '0x54ef4410003138d4': + friendly_name: plug_water_heater + '0x000b3cfffefadaaa': + friendly_name: light_bedroom_2 + '0x086bd7fffe0042b0': + friendly_name: light_bedroom_7 + '0x00158d00035356c6': + friendly_name: button_test + '0x00158d000392b34f': + friendly_name: door_shower + '0x54ef441000673f2a': + friendly_name: radiator_kitchen + '0x54ef4410006fe989': + friendly_name: radiator_bedroom + '0x54ef4410006fe51e': + friendly_name: radiator_bedroom_balcony + '0x00158d000913e2e7': + friendly_name: temperature_mainroom + '0x00158d000944bbdf': + friendly_name: temperature_kitchen + '0xa4c1385ae827ec1c': + friendly_name: light_bath + '0x00158d00053f1e20': + friendly_name: curtain_mainroom + '0x00158d000398d9e7': + friendly_name: motion_bath + '0x00158d0003941e67': + friendly_name: door_bath + '0x00158d00079836a0': + friendly_name: curtain_kitchen + '0x000d6f0012060764': + friendly_name: smoke_detector_kitchen + '0x9035eafffe541813': + friendly_name: shower_mirror + '0x00158d0003969a5d': + friendly_name: door_locker_hall_left + '0x54ef4410001ff4ec': + friendly_name: brightness_hall + '0x00158d000398fa90': + friendly_name: motion_shower_center + '0x00158d00053f38ef': + friendly_name: curtain_bedroom + '0x00158d0002b0c46a': + friendly_name: curtain_bedroom_balcony + '0x00158d000398f9a1': + friendly_name: motion_hall_1 + '0x00158d000396c997': + friendly_name: door_kitchen + '0x00158d000396981f': + friendly_name: door_cloakroom + '0x00158d0003a10728': + friendly_name: door_childroom + '0x00158d000396c880': + friendly_name: door_bedroom + '0x00158d0003f1b8ee': + friendly_name: motion_childroom + '0x00158d00091c43c7': + friendly_name: temperature_bath + '0x00158d0008e1b6bc': + friendly_name: water_leak_bath_bath + '0x00158d00072a2198': + friendly_name: water_leak_bath_sink + '0x00158d0008e019d0': + friendly_name: water_leak_kitchen_fridge + '0x9035eafffe891816': + friendly_name: light_bath_mirror + '0x000d6f00131ca650': + friendly_name: smoke_detector_hall + '0x54ef4410002c8a61': + friendly_name: plug_server + '0x00158d0003a3a0f8': + friendly_name: button_shower_sink + '0x00158d0006ca2293': + friendly_name: water_leak_radiator_hub + '0xe0798dfffebca4cc': + friendly_name: switch_mirror_bath_heater + '0x54ef4410001952e3': + friendly_name: plug_yolka + '0x00158d000398de0b': + friendly_name: motion_hall_2 + '0x00158d00044bac2c': + friendly_name: motion_bath_2 + '0xe0798dfffec0fba2': + friendly_name: switch_mirror_shower_heater + '0xa4c138e184df9c4b': + friendly_name: light_mainroom_mainlamp + '0xa4c1382016d75a72': + friendly_name: light_mainroom_spotlights + '0xa4c13858fba9206a': + friendly_name: light_mainroom_pc_spotlight + '0xa4c138f30d13e363': + friendly_name: light_balcony_spotlight + '0xa4c13872c98a123d': + friendly_name: light_bedroom_nightlight_left + '0xa4c138ec247343ac': + friendly_name: light_bedroom_spotlights + '0xa4c138ebc36bcef7': + friendly_name: light_bedroom_pc_spotlight + '0xa4c138665085e34c': + friendly_name: light_bedroom_mainlight + '0xa4c138c4615096df': + friendly_name: light_bedroom_pc_nightlight + '0xa4c1381b0d3a90a8': + friendly_name: light_bedroom_nightlight_right + '0x54ef441000313804': + friendly_name: light_curtain_mainroom + '0x54ef44100031341f': + friendly_name: light_curtain_kitchen + '0xa4c138e15f46046e': + friendly_name: light_kitchen_table_lamp + '0xa4c138881ad5f2a7': + friendly_name: light_kitchen_bar_lamp + '0xa4c1389d59a26238': + friendly_name: light_kitchen_set + '0xa4c1385ff0c3da73': + friendly_name: light_kitchen_spotlights + '0xa4c138227e28f0f5': + friendly_name: light_childroom_main + '0xa4c138af504f84c7': + friendly_name: light_childroom_bed + '0xa4c13835b22ecd89': + friendly_name: light_childroom_spotlights + '0xa4c138a0cfb8e117': + friendly_name: ventilation_bath + '0xa4c1382b628aacb6': + friendly_name: light_bath_shelf + '0xa4c1385548a794f5': + friendly_name: ventilation_shower + '0xa4c138b789359794': + friendly_name: light_shower_main_spotlights + '0xa4c1385a75956001': + friendly_name: light_shower_shower_spotlights + '0xa4c138dbf32f44f8': + friendly_name: light_shower_shelf_light + '0x00158d000398f9f6': + friendly_name: motion_shower_shower + '0x00158d0003a106ea': + friendly_name: door_locker2_hall_right + '0x00158d0003536fac': + friendly_name: door_locker2_hall_left + '0x00158d0003a10585': + friendly_name: door_locker3_hall_left + '0xa4c138f709069275': + friendly_name: curtain_bedroom_bobbinet_balcony + '0x00158d00090e5cf7': + friendly_name: temperature_childroom + '0x00158d000396c7ab': + friendly_name: door_locker_hall_right + '0x00158d000396c934': + friendly_name: door_locker3_hall_right + '0x00158d0002113158': + friendly_name: water_leak_water_hub + '0xa4c1381710c7c92a': + friendly_name: curtain_mainroom_bobbinet + '0x54ef4410005d97df': + friendly_name: presence_shower + '0x00158d0003cc41a2': + friendly_name: motion_kitchenset_right + '0x00158d0000f6b2fa': + friendly_name: motion_kitchenset_left + '0xa4c1381257c87bdc': + friendly_name: curtain_kitchen_bobbinet + '0x00124b0022145c82': + friendly_name: co2_bedroom + '0x00158d00039d4fea': + friendly_name: door_entrance + '0x54ef4410006ff081': + friendly_name: radiator_mainroom + '0x54ef441000703fc3': + friendly_name: radiator_childroom + '0x00158d0008e038bc': + friendly_name: water_leak_shower_sink + '0x00158d00091c7eac': + friendly_name: temperature_winecooler + '0x00158d0003a5d05d': + friendly_name: lock_door + '0x00158d00090e6601': + friendly_name: temperature_shower +groups: {} +availability: + enabled: true + active: + timeout: 1440 + passive: + timeout: 1440 +version: 3 diff --git a/zigbee2mqtt/settings/ptvo_counter_2ch.js b/zigbee2mqtt/settings/ptvo_counter_2ch.js new file mode 100644 index 0000000..f404f3e --- /dev/null +++ b/zigbee2mqtt/settings/ptvo_counter_2ch.js @@ -0,0 +1,37 @@ +const zigbeeHerdsmanConverters = require('zigbee-herdsman-converters'); + +const exposes = zigbeeHerdsmanConverters.exposes; +const ea = exposes.access; +const e = exposes.presets; +const fz = zigbeeHerdsmanConverters.fromZigbeeConverters; +const tz = zigbeeHerdsmanConverters.toZigbeeConverters; + +const ptvo_switch = zigbeeHerdsmanConverters.findByDevice({modelID: 'ptvo.switch'}); +fz.legacy = ptvo_switch.meta.tuyaThermostatPreset; + +const device = { + zigbeeModel: ['ptvo_counter_2ch'], + model: 'ptvo_counter_2ch', + vendor: 'Custom devices (DiY)', + description: '[Configurable firmware](https://ptvo.info/zigbee-configurable-firmware-features/)', + fromZigbee: [fz.ignore_basic_report, fz.battery, fz.ptvo_switch_analog_input, fz.on_off,], + toZigbee: [tz.ptvo_switch_trigger, tz.ptvo_switch_analog_input, tz.on_off,], + exposes: [e.battery(), + exposes.numeric('l3', ea.STATE_SET).withDescription('Counter value. Write zero or positive value to set a counter value. Write a negative value to set a wakeup interval in minutes'), + exposes.numeric('l5', ea.STATE_SET).withDescription('Counter value. Write zero or positive value to set a counter value. Write a negative value to set a wakeup interval in minutes'), + e.switch().withEndpoint('l6'), + e.battery_voltage(), +], + meta: { + multiEndpoint: true, + + }, + endpoint: (device) => { + return { + l3: 3, l5: 5, l6: 6, + }; + }, + icon: 'data:image/png;base64,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', +}; + +module.exports = device;

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