From 1aef768ff08f19d2fbc24c95276a0325bb179f82 Mon Sep 17 00:00:00 2001 From: sfam Date: Fri, 28 Aug 2015 00:02:26 +0100 Subject: [PATCH 001/190] Initial support for THOMSON routers --- .../components/device_tracker/thomson.py | 156 ++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 homeassistant/components/device_tracker/thomson.py diff --git a/homeassistant/components/device_tracker/thomson.py b/homeassistant/components/device_tracker/thomson.py new file mode 100644 index 00000000000..a1ed9ff5f4b --- /dev/null +++ b/homeassistant/components/device_tracker/thomson.py @@ -0,0 +1,156 @@ +""" +homeassistant.components.device_tracker.thomson +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Device tracker platform that supports scanning a THOMSON router for device +presence. + +This device tracker needs telnet to be enabled on the router. + +Configuration: + +To use the THOMSON tracker you will need to add something like the following +to your config/configuration.yaml + +device_tracker: + platform: thomson + host: YOUR_ROUTER_IP + username: YOUR_ADMIN_USERNAME + password: YOUR_ADMIN_PASSWORD + +Variables: + +host +*Required +The IP address of your router, e.g. 192.168.1.1. + +username +*Required +The username of an user with administrative privileges, usually 'admin'. + +password +*Required +The password for your given admin account. +""" +import logging +from datetime import timedelta +import re +import threading +import telnetlib + +from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD +from homeassistant.helpers import validate_config +from homeassistant.util import Throttle +from homeassistant.components.device_tracker import DOMAIN + +# Return cached results if last scan was less then this time ago +MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) + +_LOGGER = logging.getLogger(__name__) + +_DEVICES_REGEX = re.compile( + r'(?P(([0-9a-f]{2}[:-]){5}([0-9a-f]{2})))\s' + + r'(?P([0-9]{1,3}[\.]){3}[0-9]{1,3})\s+' + + r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))') + +# pylint: disable=unused-argument +def get_scanner(hass, config): + """ Validates config and returns a THOMSON scanner. """ + if not validate_config(config, + {DOMAIN: [CONF_HOST, CONF_USERNAME, CONF_PASSWORD]}, + _LOGGER): + return None + + scanner = ThomsonDeviceScanner(config[DOMAIN]) + + return scanner if scanner.success_init else None + + +class ThomsonDeviceScanner(object): + """ This class queries a router running THOMSON firmware + for connected devices. Adapted from ASUSWRT scanner. + """ + + def __init__(self, config): + self.host = config[CONF_HOST] + self.username = config[CONF_USERNAME] + self.password = config[CONF_PASSWORD] + + self.lock = threading.Lock() + + self.last_results = {} + + # Test the router is accessible + data = self.get_thomson_data() + self.success_init = data is not None + + def scan_devices(self): + """ Scans for new devices and return a + list containing found device ids. """ + + self._update_info() + return [client['mac'] for client in self.last_results] + + def get_device_name(self, device): + """ Returns the name of the given device + or None if we don't know. """ + if not self.last_results: + return None + for client in self.last_results: + if client['mac'] == device: + return client['host'] + return None + + @Throttle(MIN_TIME_BETWEEN_SCANS) + def _update_info(self): + """ Ensures the information from the THOMSON router is up to date. + Returns boolean if scanning successful. """ + if not self.success_init: + return False + + with self.lock: + _LOGGER.info("Checking ARP") + data = self.get_thomson_data() + if not data: + return False + + # flag C stands for CONNECTED + active_clients = [client for client in data.values() if + client['status'].find('C') != -1] + self.last_results = active_clients + return True + + def get_thomson_data(self): + """ Retrieve data from THOMSON and return parsed result. """ + try: + telnet = telnetlib.Telnet(self.host) + telnet.read_until(b'Username : ') + telnet.write((self.username + '\r\n').encode('ascii')) + telnet.read_until(b'Password : ') + telnet.write((self.password + '\r\n').encode('ascii')) + telnet.read_until(b'=>') + telnet.write(('hostmgr list\r\n').encode('ascii')) + devices_result = telnet.read_until(b'=>').split(b'\r\n') + telnet.write('exit\r\n'.encode('ascii')) + except EOFError: + _LOGGER.exception("Unexpected response from router") + return + except ConnectionRefusedError: + _LOGGER.exception("Connection refused by router," + + " is telnet enabled?") + return + + devices = {} + for device in devices_result: + match = _DEVICES_REGEX.search(device.decode('utf-8')) + if match: + devices[match.group('ip')] = { + 'ip': match.group('ip'), + 'mac': match.group('mac').upper(), + 'host': match.group('host'), + 'status': match.group('status') + } + return devices From 1311e00e901c7c651ac3c2cde9ebd4a12ffe0e1e Mon Sep 17 00:00:00 2001 From: sfam Date: Fri, 28 Aug 2015 00:03:05 +0100 Subject: [PATCH 002/190] Initial support for THOMSON routers --- .coveragerc | 1 + 1 file changed, 1 insertion(+) diff --git a/.coveragerc b/.coveragerc index 63763cb9231..28a8fd310ef 100644 --- a/.coveragerc +++ b/.coveragerc @@ -36,6 +36,7 @@ omit = homeassistant/components/device_tracker/luci.py homeassistant/components/device_tracker/netgear.py homeassistant/components/device_tracker/nmap_tracker.py + homeassistant/components/device_tracker/thomson.py homeassistant/components/device_tracker/tomato.py homeassistant/components/device_tracker/tplink.py homeassistant/components/discovery.py From 4ef4aa2095db1a361d2d6070cf57aa20522ae9ae Mon Sep 17 00:00:00 2001 From: sfam Date: Fri, 28 Aug 2015 00:09:24 +0100 Subject: [PATCH 003/190] fix pylint warnings --- homeassistant/components/device_tracker/thomson.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/device_tracker/thomson.py b/homeassistant/components/device_tracker/thomson.py index a1ed9ff5f4b..ffe1a7f64c2 100644 --- a/homeassistant/components/device_tracker/thomson.py +++ b/homeassistant/components/device_tracker/thomson.py @@ -50,12 +50,13 @@ _LOGGER = logging.getLogger(__name__) _DEVICES_REGEX = re.compile( r'(?P(([0-9a-f]{2}[:-]){5}([0-9a-f]{2})))\s' + r'(?P([0-9]{1,3}[\.]){3}[0-9]{1,3})\s+' + - r'(?P([^\s]+))\s+' + - r'(?P([^\s]+))\s+' + - r'(?P([^\s]+))\s+' + - r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))\s+' + + r'(?P([^\s]+))\s+' + r'(?P([^\s]+))') + # pylint: disable=unused-argument def get_scanner(hass, config): """ Validates config and returns a THOMSON scanner. """ @@ -95,7 +96,7 @@ class ThomsonDeviceScanner(object): return [client['mac'] for client in self.last_results] def get_device_name(self, device): - """ Returns the name of the given device + """ Returns the name of the given device or None if we don't know. """ if not self.last_results: return None @@ -116,7 +117,7 @@ class ThomsonDeviceScanner(object): data = self.get_thomson_data() if not data: return False - + # flag C stands for CONNECTED active_clients = [client for client in data.values() if client['status'].find('C') != -1] From 71e60dcfe9c738cda6ebe9d80309e855a2a0defa Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Thu, 27 Aug 2015 22:41:12 -0400 Subject: [PATCH 004/190] Fixed Issue #280 --- scripts/homeassistant.daemon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/homeassistant.daemon b/scripts/homeassistant.daemon index bef4cd90f4a..4dd6b37a9c5 100755 --- a/scripts/homeassistant.daemon +++ b/scripts/homeassistant.daemon @@ -79,7 +79,7 @@ case "$1" in uninstall) uninstall ;; - retart) + restart) stop start ;; From 76a8bd396906e425a9cbc27c35768ff45a0f1e6c Mon Sep 17 00:00:00 2001 From: MakeMeASandwich Date: Fri, 28 Aug 2015 14:42:41 +0200 Subject: [PATCH 005/190] Add support for Adafruit temperature/humidity sensors --- .coveragerc | 1 + homeassistant/components/sensor/dht.py | 160 +++++++++++++++++++++++++ requirements.txt | 3 + 3 files changed, 164 insertions(+) create mode 100644 homeassistant/components/sensor/dht.py diff --git a/.coveragerc b/.coveragerc index 63763cb9231..54c1b234351 100644 --- a/.coveragerc +++ b/.coveragerc @@ -57,6 +57,7 @@ omit = homeassistant/components/notify/syslog.py homeassistant/components/notify/xmpp.py homeassistant/components/sensor/bitcoin.py + homeassistant/components/sensor/dht.py homeassistant/components/sensor/efergy.py homeassistant/components/sensor/forecast.py homeassistant/components/sensor/mysensors.py diff --git a/homeassistant/components/sensor/dht.py b/homeassistant/components/sensor/dht.py new file mode 100644 index 00000000000..1334bdc59b7 --- /dev/null +++ b/homeassistant/components/sensor/dht.py @@ -0,0 +1,160 @@ +""" +homeassistant.components.sensor.dht +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Adafruit DHT temperature and humidity sensor. +As this requires access to the GPIO, you will need to run home-assistant +as root (FIXME). + +Configuration: + +To use the Adafruit DHT sensor you will need to +add something like the following to your config/configuration.yaml: + +sensor: + platform: dht + sensor: DHT22 + pin: 23 + monitored_conditions: + - temperature + - humidity + +Variables: + +sensor +*Required +The sensor type, DHT11, DHT22 or AM2302 + +pin +*Required +The pin the sensor is connected to, something like +'P8_11' for Beaglebone, '23' for Raspberry Pi + +monitored_conditions +*Optional +Conditions to monitor. Available conditions are temperature and humidity. +""" +import logging +from datetime import timedelta + +from homeassistant.util import Throttle +from homeassistant.const import TEMP_FAHRENHEIT +from homeassistant.helpers.entity import Entity + +# TODO: update this requirement to upstream as soon as it supports python3 +REQUIREMENTS = ['git+git://github.com/mala-zaba/Adafruit_Python_DHT'] +_LOGGER = logging.getLogger(__name__) +SENSOR_TYPES = { + 'temperature': ['Temperature', ''], + 'humidity': ['Humidity', '%'] +} +# Return cached results if last scan was less then this time ago +# DHT11 is able to deliver data once per second, DHT22 once every two +MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=30) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """ Get the DHT sensor. """ + + try: + import Adafruit_DHT + + except ImportError: + _LOGGER.exception( + "Unable to import Adafruit_DHT. " + "Did you maybe not install the 'Adafruit_DHT' package?") + + return False + + SENSOR_TYPES['temperature'][1] = hass.config.temperature_unit + unit = hass.config.temperature_unit + available_sensors = { + "DHT11": Adafruit_DHT.DHT11, + "DHT22": Adafruit_DHT.DHT22, + "AM2302": Adafruit_DHT.AM2302 + } + sensor = available_sensors[config['sensor']] + + pin = config['pin'] + + if not sensor or not pin: + _LOGGER.error( + "Config error " + "Please check your settings for DHT, sensor not supported.") + return None + + data = DHTClient(Adafruit_DHT, sensor, pin) + dev = [] + try: + for variable in config['monitored_conditions']: + if variable not in SENSOR_TYPES: + _LOGGER.error('Sensor type: "%s" does not exist', variable) + else: + dev.append(DHTSensor(data, variable, unit)) + except KeyError: + pass + + add_devices(dev) + + +# pylint: disable=too-few-public-methods +class DHTSensor(Entity): + + """ Implements an DHT sensor. """ + + def __init__(self, dht_client, sensor_type, temp_unit): + self.client_name = 'DHT sensor' + self._name = SENSOR_TYPES[sensor_type][0] + self.dht_client = dht_client + self.temp_unit = temp_unit + self.type = sensor_type + self._state = None + self._unit_of_measurement = SENSOR_TYPES[sensor_type][1] + self.update() + + @property + def name(self): + return '{} {}'.format(self.client_name, self._name) + + @property + def state(self): + """ Returns the state of the device. """ + return self._state + + @property + def unit_of_measurement(self): + """ Unit of measurement of this entity, if any. """ + return self._unit_of_measurement + + def update(self): + """ Gets the latest data from the DHT and updates the states. """ + + self.dht_client.update() + data = self.dht_client.data + + if self.type == 'temperature': + self._state = round(data['temperature'], 1) + if self.temp_unit == TEMP_FAHRENHEIT: + self._state = round(data['temperature'] * 1.8 + 32, 1) + elif self.type == 'humidity': + self._state = round(data['humidity'], 1) + + +class DHTClient(object): + + """ Gets the latest data from the DHT sensor. """ + + def __init__(self, adafruit_dht, sensor, pin): + self.adafruit_dht = adafruit_dht + self.sensor = sensor + self.pin = pin + self.data = dict() + + @Throttle(MIN_TIME_BETWEEN_UPDATES) + def update(self): + """ Gets the latest data the DHT sensor. """ + humidity, temperature = self.adafruit_dht.read_retry(self.sensor, + self.pin) + if temperature: + self.data['temperature'] = temperature + if humidity: + self.data['humidity'] = humidity diff --git a/requirements.txt b/requirements.txt index d27815e13cd..394d038de13 100644 --- a/requirements.txt +++ b/requirements.txt @@ -105,6 +105,9 @@ https://github.com/rkabadi/pyedimax/archive/master.zip # RPI-GPIO platform (*.rpi_gpio) RPi.GPIO >=0.5.11 +# Adafruit temperature/humidity sensor +git+git://github.com/mala-zaba/Adafruit_Python_DHT + # PAHO MQTT Binding (mqtt) paho-mqtt>=1.1 From 3f4d5eae1c224c382e0d1bad262139de570a4d1a Mon Sep 17 00:00:00 2001 From: MakeMeASandwich Date: Fri, 28 Aug 2015 18:14:13 +0200 Subject: [PATCH 006/190] work around build failures also on non-RPi/BB-machines --- homeassistant/components/sensor/dht.py | 7 +++++-- requirements.txt | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensor/dht.py b/homeassistant/components/sensor/dht.py index 1334bdc59b7..c7df4b4a8d3 100644 --- a/homeassistant/components/sensor/dht.py +++ b/homeassistant/components/sensor/dht.py @@ -2,8 +2,11 @@ homeassistant.components.sensor.dht ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Adafruit DHT temperature and humidity sensor. +You need a Python3 compatible version of the Adafruit_Python_DHT library +(e.g. https://github.com/mala-zaba/Adafruit_Python_DHT, +also see requirements.txt). As this requires access to the GPIO, you will need to run home-assistant -as root (FIXME). +as root. Configuration: @@ -40,7 +43,7 @@ from homeassistant.util import Throttle from homeassistant.const import TEMP_FAHRENHEIT from homeassistant.helpers.entity import Entity -# TODO: update this requirement to upstream as soon as it supports python3 +# update this requirement to upstream as soon as it supports python3 REQUIREMENTS = ['git+git://github.com/mala-zaba/Adafruit_Python_DHT'] _LOGGER = logging.getLogger(__name__) SENSOR_TYPES = { diff --git a/requirements.txt b/requirements.txt index 394d038de13..f851f70e86f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -106,7 +106,8 @@ https://github.com/rkabadi/pyedimax/archive/master.zip RPi.GPIO >=0.5.11 # Adafruit temperature/humidity sensor -git+git://github.com/mala-zaba/Adafruit_Python_DHT +# uncomment on a Raspberry Pi / Beaglebone +#git+git://github.com/mala-zaba/Adafruit_Python_DHT # PAHO MQTT Binding (mqtt) paho-mqtt>=1.1 From dfae1a44a632ecdf13994208d29beb611d8ada90 Mon Sep 17 00:00:00 2001 From: pavoni Date: Fri, 28 Aug 2015 23:11:55 +0100 Subject: [PATCH 007/190] Add standby state to WeMo Insight Switch, and add WeMo Maker --- homeassistant/components/switch/__init__.py | 8 ++--- homeassistant/components/switch/wemo.py | 34 ++++++++++++++++++++- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index b141c36f7b5..60411b2815e 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -24,6 +24,8 @@ ENTITY_ID_FORMAT = DOMAIN + '.{}' ATTR_TODAY_MWH = "today_mwh" ATTR_CURRENT_POWER_MWH = "current_power_mwh" +ATTR_STANDBY_STATE = "standby_state" +ATTR_SENSOR_STATE = "sensor_state" MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) @@ -37,6 +39,8 @@ DISCOVERY_PLATFORMS = { PROP_TO_ATTR = { 'current_power_mwh': ATTR_CURRENT_POWER_MWH, 'today_power_mw': ATTR_TODAY_MWH, + 'standby_state': ATTR_STANDBY_STATE, + 'sensor_state': ATTR_SENSOR_STATE } _LOGGER = logging.getLogger(__name__) @@ -45,21 +49,18 @@ _LOGGER = logging.getLogger(__name__) def is_on(hass, entity_id=None): """ Returns if the switch is on based on the statemachine. """ entity_id = entity_id or ENTITY_ID_ALL_SWITCHES - return hass.states.is_state(entity_id, STATE_ON) def turn_on(hass, entity_id=None): """ Turns all or specified switch on. """ data = {ATTR_ENTITY_ID: entity_id} if entity_id else None - hass.services.call(DOMAIN, SERVICE_TURN_ON, data) def turn_off(hass, entity_id=None): """ Turns all or specified switch off. """ data = {ATTR_ENTITY_ID: entity_id} if entity_id else None - hass.services.call(DOMAIN, SERVICE_TURN_OFF, data) @@ -84,7 +85,6 @@ def setup(hass, config): switch.update_ha_state(True) hass.services.register(DOMAIN, SERVICE_TURN_OFF, handle_switch_service) - hass.services.register(DOMAIN, SERVICE_TURN_ON, handle_switch_service) return True diff --git a/homeassistant/components/switch/wemo.py b/homeassistant/components/switch/wemo.py index 33f5f03799b..f6fb0c266fe 100644 --- a/homeassistant/components/switch/wemo.py +++ b/homeassistant/components/switch/wemo.py @@ -37,6 +37,7 @@ class WemoSwitch(SwitchDevice): def __init__(self, wemo): self.wemo = wemo self.insight_params = None + self.maker_params = None @property def unique_id(self): @@ -60,6 +61,34 @@ class WemoSwitch(SwitchDevice): if self.insight_params: return self.insight_params['todaymw'] + @property + def standby_state(self): + """ Is the device on - or in standby. """ + if self.insight_params: + return self.insight_params['standby_state'] + + @property + def sensor_state(self): + """ Is the sensor on or off. """ + if self.maker_params and self.has_sensor: + # Note a state of 1 matches the WeMo app 'not triggered'! + if self.maker_params['sensorstate']: + return 'off' + else: + return 'on' + + @property + def switch_mode(self): + """ Is the switch configured as toggle(0) or momentary (1). """ + if self.maker_params: + return self.maker_params['switchmode'] + + @property + def has_sensor(self): + """ Is the sensor present? """ + if self.maker_params: + return self.maker_params['hassensor'] + @property def is_on(self): """ True if switch is on. """ @@ -76,5 +105,8 @@ class WemoSwitch(SwitchDevice): def update(self): """ Update WeMo state. """ self.wemo.get_state(True) - if self.wemo.model.startswith('Belkin Insight'): + if self.wemo.model_name == 'Insight': self.insight_params = self.wemo.insight_params + self.insight_params['standby_state'] = self.wemo.get_standby_state + elif self.wemo.model_name == 'Maker': + self.maker_params = self.wemo.maker_params From 2a0d459722a0f3e112ff9f9c384920d0d53da330 Mon Sep 17 00:00:00 2001 From: pavoni Date: Sat, 29 Aug 2015 00:27:28 +0100 Subject: [PATCH 008/190] Fix blank line regression --- homeassistant/components/switch/__init__.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index 60411b2815e..4f83b8aa24f 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -49,18 +49,21 @@ _LOGGER = logging.getLogger(__name__) def is_on(hass, entity_id=None): """ Returns if the switch is on based on the statemachine. """ entity_id = entity_id or ENTITY_ID_ALL_SWITCHES + return hass.states.is_state(entity_id, STATE_ON) def turn_on(hass, entity_id=None): """ Turns all or specified switch on. """ data = {ATTR_ENTITY_ID: entity_id} if entity_id else None + hass.services.call(DOMAIN, SERVICE_TURN_ON, data) def turn_off(hass, entity_id=None): """ Turns all or specified switch off. """ data = {ATTR_ENTITY_ID: entity_id} if entity_id else None + hass.services.call(DOMAIN, SERVICE_TURN_OFF, data) @@ -85,6 +88,7 @@ def setup(hass, config): switch.update_ha_state(True) hass.services.register(DOMAIN, SERVICE_TURN_OFF, handle_switch_service) + hass.services.register(DOMAIN, SERVICE_TURN_ON, handle_switch_service) return True From 936e20bdf7a82bd364edf5617e5488312aaaab06 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Fri, 28 Aug 2015 20:17:07 -0400 Subject: [PATCH 009/190] Cleaned up some entities. 1) Modified device tracker entities to allow for attributes to be overwritten with configuration data. 2) Modified ISY lights to hide brightness when off. --- homeassistant/components/device_tracker/__init__.py | 8 ++++++-- homeassistant/components/isy994.py | 5 +++++ homeassistant/components/light/isy994.py | 6 ++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index e529327f505..099c23973f0 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -12,6 +12,7 @@ from datetime import timedelta from homeassistant.loader import get_component from homeassistant.helpers import validate_config +from homeassistant.helpers.entity import _OVERWRITE import homeassistant.util as util import homeassistant.util.dt as dt_util @@ -162,9 +163,12 @@ class DeviceTracker(object): state = STATE_HOME if is_home else STATE_NOT_HOME + # overwrite properties that have been set in the config file + attr = dict(dev_info['state_attr']) + attr.update(_OVERWRITE.get(dev_info['entity_id'], {})) + self.hass.states.set( - dev_info['entity_id'], state, - dev_info['state_attr']) + dev_info['entity_id'], state, attr) def update_devices(self, now): """ Update device states based on the found devices. """ diff --git a/homeassistant/components/isy994.py b/homeassistant/components/isy994.py index 5cdfbe1b277..ad165d64d6c 100644 --- a/homeassistant/components/isy994.py +++ b/homeassistant/components/isy994.py @@ -156,6 +156,11 @@ class ISYDeviceABC(ToggleEntity): attr = {ATTR_FRIENDLY_NAME: self.name} for name, prop in self._attrs.items(): attr[name] = getattr(self, prop) + attr = self._attr_filter(attr) + return attr + + def _attr_filter(self, attr): + """ Placeholder for attribute filters. """ return attr @property diff --git a/homeassistant/components/light/isy994.py b/homeassistant/components/light/isy994.py index b231fe3e441..5b62120ee98 100644 --- a/homeassistant/components/light/isy994.py +++ b/homeassistant/components/light/isy994.py @@ -38,3 +38,9 @@ class ISYLightDevice(ISYDeviceABC): _attrs = {ATTR_BRIGHTNESS: 'value'} _onattrs = [ATTR_BRIGHTNESS] _states = [STATE_ON, STATE_OFF] + + def _attr_filter(self, attr): + """ Filter brightness out of entity while off. """ + if ATTR_BRIGHTNESS in attr and not self.is_on: + del attr[ATTR_BRIGHTNESS] + return attr From c49cdf7ffd966160d189973c973ac77b9090eb2d Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Fri, 28 Aug 2015 20:18:54 -0400 Subject: [PATCH 010/190] Pylint fixes to ISY component. --- homeassistant/components/isy994.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/isy994.py b/homeassistant/components/isy994.py index ad165d64d6c..f5998faeaf8 100644 --- a/homeassistant/components/isy994.py +++ b/homeassistant/components/isy994.py @@ -161,6 +161,7 @@ class ISYDeviceABC(ToggleEntity): def _attr_filter(self, attr): """ Placeholder for attribute filters. """ + # pylint: disable=no-self-use return attr @property From 0a2652630f6f2e6e86889283c2614f10a2c08308 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Aug 2015 11:50:43 -0700 Subject: [PATCH 011/190] Frontend: Style loading page like login form --- .../components/frontend/index.html.template | 48 +++++++++++++----- .../components/frontend/www_static/splash.png | Bin 0 -> 11636 bytes 2 files changed, 35 insertions(+), 13 deletions(-) create mode 100644 homeassistant/components/frontend/www_static/splash.png diff --git a/homeassistant/components/frontend/index.html.template b/homeassistant/components/frontend/index.html.template index f84c8653b31..556fe4e67c8 100644 --- a/homeassistant/components/frontend/index.html.template +++ b/homeassistant/components/frontend/index.html.template @@ -5,24 +5,46 @@ Home Assistant - - - - - - + + + - - -

Initializing Home Assistant

- - - + + + +
+ +

Initializing

+
+ + + diff --git a/homeassistant/components/frontend/www_static/splash.png b/homeassistant/components/frontend/www_static/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5411ecb4b2612011c33b5dcbf593864c775857 GIT binary patch literal 11636 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 Date: Sat, 29 Aug 2015 20:32:46 +0100 Subject: [PATCH 012/190] Add defult methods to base class for switch_state and sensor_state --- homeassistant/components/switch/__init__.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/homeassistant/components/switch/__init__.py b/homeassistant/components/switch/__init__.py index 4f83b8aa24f..f245406fb28 100644 --- a/homeassistant/components/switch/__init__.py +++ b/homeassistant/components/switch/__init__.py @@ -108,6 +108,16 @@ class SwitchDevice(ToggleEntity): """ Today total power usage in mw. """ return None + @property + def standby_state(self): + """ Is the device on - or in standby. """ + return None + + @property + def sensor_state(self): + """ Is the sensor on or off. """ + return None + @property def device_state_attributes(self): """ Returns device specific state attributes. """ From 3839c3d0efc0d4a6d3b056e0109fdb6b01f5ea18 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 18:59:05 -0400 Subject: [PATCH 013/190] Created setup.py for standard installs. --- .../frontend/www_static/__init__.py | 0 .../frontend/www_static/images/__init__.py | 0 homeassistant/const.py | 3 ++ pylintrc | 2 +- setup.py | 48 +++++++++++++++++++ 5 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/frontend/www_static/__init__.py create mode 100644 homeassistant/components/frontend/www_static/images/__init__.py create mode 100755 setup.py diff --git a/homeassistant/components/frontend/www_static/__init__.py b/homeassistant/components/frontend/www_static/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/homeassistant/components/frontend/www_static/images/__init__.py b/homeassistant/components/frontend/www_static/images/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/homeassistant/const.py b/homeassistant/const.py index 7d58dbb01d2..a3b9cc8d396 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,4 +1,7 @@ """ Constants used by Home Assistant components. """ + +__version__ = "0.7.0" + # Can be used to specify a catch all when registering state or event listeners. MATCH_ALL = '*' diff --git a/pylintrc b/pylintrc index 54b1f80cdc5..888fb50ee0f 100644 --- a/pylintrc +++ b/pylintrc @@ -1,5 +1,5 @@ [MASTER] -ignore=external +ignore=external,setup.py reports=no # Reasons disabled: diff --git a/setup.py b/setup.py new file mode 100755 index 00000000000..fb6f88ac115 --- /dev/null +++ b/setup.py @@ -0,0 +1,48 @@ +import os +import re +from setuptools import setup, find_packages + +PACKAGE_NAME = 'homeassistant' +HERE = os.path.abspath(os.path.dirname(__file__)) +with open(os.path.join(HERE, PACKAGE_NAME, 'const.py')) as fp: + VERSION = re.search("__version__ = ['\"]([^']+)['\"]\n", fp.read()).group(1) + +PACKAGES = find_packages() + \ + ['homeassistant.external', 'homeassistant.external.noop', + 'homeassistant.external.nzbclients', 'homeassistant.external.vera'] + +PACKAGE_DATA = \ + {'homeassistant.components.frontend': ['index.html.template'], + 'homeassistant.components.frontend.www_static': ['*.*'], + 'homeassistant.components.frontend.www_static.images': ['*.*']} + +setup( + name=PACKAGE_NAME, + version=VERSION, + license='MIT License', + url='https://home-assistant.io/', + download_url='https://github.com/automicus/pyisy/tarball/0.7.0', + author='Paulus Schoutsen', + author_email='paulus@paulusschoutsen.nl', + description='Open-source home automation platform running on Python 3.', + packages=PACKAGES, + include_package_data=True, + package_data=PACKAGE_DATA, + zip_safe=False, + platforms='any', + install_requires=['requests==2.7.0', 'pyyaml==3.11', 'pytz==2015.4', + 'netdisco==0.3', 'astral==0.8.1'], + keywords=['home', 'automation'], + entry_points={ + 'console_scripts': [ + 'hass = homeassistant.__main__:main' + ] + }, + classifiers=[ + 'Intended Audience :: End Users/Desktop', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + 'Programming Language :: Python :: 3.4', + 'Topic :: Home Automation' + ] +) From 18e32165a49f2eb354b07167345668163d537344 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 20:06:54 -0400 Subject: [PATCH 014/190] Cleaned up main file to remove dependency management. --- homeassistant/__main__.py | 91 +++++++++++---------------------------- setup.py | 3 +- 2 files changed, 25 insertions(+), 69 deletions(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 2514b35587f..40cde95751f 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -4,12 +4,14 @@ from __future__ import print_function import sys import os import argparse -import subprocess import importlib -DEPENDENCIES = ['requests>=2.0', 'pyyaml>=3.11', 'pytz>=2015.2'] -IS_VIRTUAL = (getattr(sys, 'base_prefix', sys.prefix) != sys.prefix or - hasattr(sys, 'real_prefix')) +from homeassistant import bootstrap +import homeassistant.config as config_util +from homeassistant.components import frontend, demo + +USER_DATA_DIR = os.getenv('APPDATA') if os.name == "nt" \ + else os.path.expanduser('~') def validate_python(): @@ -31,54 +33,6 @@ def ensure_pip(): sys.exit() -# Copy of homeassistant.util.package because we can't import yet -def install_package(package): - """Install a package on PyPi. Accepts pip compatible package strings. - Return boolean if install successfull.""" - args = [sys.executable, '-m', 'pip', 'install', '--quiet', package] - if not IS_VIRTUAL: - args.append('--user') - try: - return 0 == subprocess.call(args) - except subprocess.SubprocessError: - return False - - -def validate_dependencies(): - """ Validate all dependencies that HA uses. """ - ensure_pip() - - print("Validating dependencies...") - import_fail = False - - for requirement in DEPENDENCIES: - if not install_package(requirement): - import_fail = True - print('Fatal Error: Unable to install dependency', requirement) - - if import_fail: - print(("Install dependencies by running: " - "python3 -m pip install -r requirements.txt")) - sys.exit() - - -def ensure_path_and_load_bootstrap(): - """ Ensure sys load path is correct and load Home Assistant bootstrap. """ - try: - from homeassistant import bootstrap - - except ImportError: - # This is to add support to load Home Assistant using - # `python3 homeassistant` instead of `python3 -m homeassistant` - - # Insert the parent directory of this file into the module search path - sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..')) - - from homeassistant import bootstrap - - return bootstrap - - def validate_git_submodules(): """ Validate the git submodules are cloned. """ try: @@ -94,13 +48,25 @@ def ensure_config_path(config_dir): """ Gets the path to the configuration file. Creates one if it not exists. """ + lib_dir = os.path.join(config_dir, 'lib') + # Test if configuration directory exists if not os.path.isdir(config_dir): - print(('Fatal Error: Unable to find specified configuration ' - 'directory {} ').format(config_dir)) - sys.exit() + try: + os.mkdir(config_dir) + except OSError: + print(('Fatal Error: Unable to create specified configuration ' + 'directory {} ').format(config_dir)) + sys.exit() - import homeassistant.config as config_util + # Test if library directory exists + if not os.path.isdir(lib_dir): + try: + os.mkdir(lib_dir) + except OSError: + print(('Fatal Error: Unable to create library ' + 'directory {} ').format(lib_dir)) + sys.exit() config_path = config_util.ensure_config_exists(config_dir) @@ -117,7 +83,7 @@ def get_arguments(): parser.add_argument( '-c', '--config', metavar='path_to_config_dir', - default="config", + default=os.path.join(USER_DATA_DIR, '.homeassistant'), help="Directory that contains the Home Assistant configuration") parser.add_argument( '--demo-mode', @@ -134,12 +100,6 @@ def get_arguments(): def main(): """ Starts Home Assistant. """ validate_python() - validate_dependencies() - - # Windows needs this to pick up new modules - importlib.invalidate_caches() - - bootstrap = ensure_path_and_load_bootstrap() validate_git_submodules() @@ -149,8 +109,6 @@ def main(): config_path = ensure_config_path(config_dir) if args.demo_mode: - from homeassistant.components import frontend, demo - hass = bootstrap.from_config_dict({ frontend.DOMAIN: {}, demo.DOMAIN: {} @@ -159,11 +117,10 @@ def main(): hass = bootstrap.from_config_file(config_path) if args.open_ui: - from homeassistant.const import EVENT_HOMEASSISTANT_START - def open_browser(event): """ Open the webinterface in a browser. """ if hass.config.api is not None: + from homeassistant.const import EVENT_HOMEASSISTANT_START import webbrowser webbrowser.open(hass.config.api.base_url) diff --git a/setup.py b/setup.py index fb6f88ac115..f922459e509 100755 --- a/setup.py +++ b/setup.py @@ -30,8 +30,7 @@ setup( package_data=PACKAGE_DATA, zip_safe=False, platforms='any', - install_requires=['requests==2.7.0', 'pyyaml==3.11', 'pytz==2015.4', - 'netdisco==0.3', 'astral==0.8.1'], + install_requires=['requests==2.7.0', 'pyyaml==3.11', 'pytz==2015.4'], keywords=['home', 'automation'], entry_points={ 'console_scripts': [ From 6fdf9b8d7cf53f667c11f94c1b80e4a6321bb987 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 21:11:24 -0400 Subject: [PATCH 015/190] Many changes to cleanup config directory and lib installations. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cleaned up default config directory determination. Made bootstrap creators for HA always set config directory. Made bootstrap creators set the local library in the Python Path. Moved all exceptions to their own file to make imports easier. Moved default configuration directory be in the users’ profile. Moved pip installs to be done to a lib folder in the config directory. Reduced requirements.txt to only the barebones reqs. --- homeassistant/__main__.py | 7 +- homeassistant/bootstrap.py | 14 ++-- homeassistant/config.py | 10 ++- homeassistant/core.py | 25 +++---- homeassistant/exceptions.py | 15 +++++ homeassistant/util/package.py | 10 +-- requirements.txt | 122 +--------------------------------- 7 files changed, 53 insertions(+), 150 deletions(-) create mode 100644 homeassistant/exceptions.py diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 40cde95751f..59c2cd11abb 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -10,9 +10,6 @@ from homeassistant import bootstrap import homeassistant.config as config_util from homeassistant.components import frontend, demo -USER_DATA_DIR = os.getenv('APPDATA') if os.name == "nt" \ - else os.path.expanduser('~') - def validate_python(): """ Validate we're running the right Python version. """ @@ -83,7 +80,7 @@ def get_arguments(): parser.add_argument( '-c', '--config', metavar='path_to_config_dir', - default=os.path.join(USER_DATA_DIR, '.homeassistant'), + default=config_util.get_default_config_dir(), help="Directory that contains the Home Assistant configuration") parser.add_argument( '--demo-mode', @@ -112,7 +109,7 @@ def main(): hass = bootstrap.from_config_dict({ frontend.DOMAIN: {}, demo.DOMAIN: {} - }) + }, config_dir=config_dir) else: hass = bootstrap.from_config_file(config_path) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index e5f6d2b9672..e4cd307019e 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -61,13 +61,13 @@ def setup_component(hass, domain, config=None): return True -def _handle_requirements(component, name): +def _handle_requirements(hass, component, name): """ Installs requirements for component. """ if not hasattr(component, 'REQUIREMENTS'): return True for req in component.REQUIREMENTS: - if not pkg_util.install_package(req): + if not pkg_util.install_package(req, target=hass.config.path('lib')): _LOGGER.error('Not initializing %s because could not install ' 'dependency %s', name, req) return False @@ -88,7 +88,7 @@ def _setup_component(hass, domain, config): domain, ", ".join(missing_deps)) return False - if not _handle_requirements(component, domain): + if not _handle_requirements(hass, component, domain): return False try: @@ -138,14 +138,14 @@ def prepare_setup_platform(hass, config, domain, platform_name): component) return None - if not _handle_requirements(platform, platform_path): + if not _handle_requirements(hass, platform, platform_path): return None return platform # pylint: disable=too-many-branches, too-many-statements -def from_config_dict(config, hass=None): +def from_config_dict(config, hass=None, config_dir=None): """ Tries to configure Home Assistant from a config dict. @@ -153,6 +153,9 @@ def from_config_dict(config, hass=None): """ if hass is None: hass = core.HomeAssistant() + if config_dir is not None: + hass.config.config_dir = os.path.abspath(config_dir) + hass.config.mount_local_path() process_ha_core_config(hass, config.get(core.DOMAIN, {})) @@ -196,6 +199,7 @@ def from_config_file(config_path, hass=None): # Set config dir to directory holding config file hass.config.config_dir = os.path.abspath(os.path.dirname(config_path)) + hass.config.mount_local_path() config_dict = config_util.load_config_file(config_path) diff --git a/homeassistant/config.py b/homeassistant/config.py index 54ad297e62a..ca2d43eeb40 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -7,7 +7,7 @@ Module to help with parsing and generating configuration files. import logging import os -from homeassistant.core import HomeAssistantError +from homeassistant.exceptions import HomeAssistantError from homeassistant.const import ( CONF_LATITUDE, CONF_LONGITUDE, CONF_TEMPERATURE_UNIT, CONF_NAME, CONF_TIME_ZONE) @@ -16,6 +16,7 @@ import homeassistant.util.location as loc_util _LOGGER = logging.getLogger(__name__) YAML_CONFIG_FILE = 'configuration.yaml' +CONFIG_DIR_NAME = '.homeassistant' DEFAULT_CONFIG = ( # Tuples (attribute, default, auto detect property, description) @@ -39,6 +40,13 @@ DEFAULT_COMPONENTS = { } +def get_default_config_dir(): + """ Put together the default configuration directory based on OS. """ + data_dir = os.getenv('APPDATA') if os.name == "nt" \ + else os.path.expanduser('~') + return os.path.join(data_dir, CONFIG_DIR_NAME) + + def ensure_config_exists(config_dir, detect_location=True): """ Ensures a config file exists in given config dir. Creating a default one if needed. diff --git a/homeassistant/core.py b/homeassistant/core.py index 76b4b38f3fc..309c9336706 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -7,6 +7,7 @@ of entities and react to changes. """ import os +import sys import time import logging import threading @@ -21,9 +22,12 @@ from homeassistant.const import ( EVENT_CALL_SERVICE, ATTR_NOW, ATTR_DOMAIN, ATTR_SERVICE, MATCH_ALL, EVENT_SERVICE_EXECUTED, ATTR_SERVICE_CALL_ID, EVENT_SERVICE_REGISTERED, TEMP_CELCIUS, TEMP_FAHRENHEIT, ATTR_FRIENDLY_NAME) +from homeassistant.exceptions import ( + HomeAssistantError, InvalidEntityFormatError, NoEntitySpecifiedError) import homeassistant.util as util import homeassistant.util.dt as date_util import homeassistant.helpers.temperature as temp_helper +from homeassistant.config import get_default_config_dir DOMAIN = "homeassistant" @@ -660,7 +664,11 @@ class Config(object): self.api = None # Directory that holds the configuration - self.config_dir = os.path.join(os.getcwd(), 'config') + self.config_dir = get_default_config_dir() + + def mount_local_path(self): + """ Add local library to Python Path """ + sys.path.insert(0, self.path('lib')) def path(self, *path): """ Returns path to the file within the config dir. """ @@ -695,21 +703,6 @@ class Config(object): } -class HomeAssistantError(Exception): - """ General Home Assistant exception occured. """ - pass - - -class InvalidEntityFormatError(HomeAssistantError): - """ When an invalid formatted entity is encountered. """ - pass - - -class NoEntitySpecifiedError(HomeAssistantError): - """ When no entity is specified. """ - pass - - def create_timer(hass, interval=TIMER_INTERVAL): """ Creates a timer. Timer will start on HOMEASSISTANT_START. """ # We want to be able to fire every time a minute starts (seconds=0). diff --git a/homeassistant/exceptions.py b/homeassistant/exceptions.py new file mode 100644 index 00000000000..4ecd22f9e43 --- /dev/null +++ b/homeassistant/exceptions.py @@ -0,0 +1,15 @@ +""" Exceptions used by Home Assistant """ + +class HomeAssistantError(Exception): + """ General Home Assistant exception occured. """ + pass + + +class InvalidEntityFormatError(HomeAssistantError): + """ When an invalid formatted entity is encountered. """ + pass + + +class NoEntitySpecifiedError(HomeAssistantError): + """ When no entity is specified. """ + pass diff --git a/homeassistant/util/package.py b/homeassistant/util/package.py index d220a5a7e61..3719fecb9ff 100644 --- a/homeassistant/util/package.py +++ b/homeassistant/util/package.py @@ -1,4 +1,5 @@ """Helpers to install PyPi packages.""" +import os import subprocess import sys @@ -8,15 +9,16 @@ from . import environment as env INSTALL_USER = not env.is_virtual() -def install_package(package, upgrade=False, user=INSTALL_USER): +def install_package(package, upgrade=False, target=None): """Install a package on PyPi. Accepts pip compatible package strings. Return boolean if install successfull.""" # Not using 'import pip; pip.main([])' because it breaks the logger - args = [sys.executable, '-m', 'pip', 'install', '--quiet', package] + args = [sys.executable, '-m', 'pip', 'install', '--quiet', + '--isolated', '-I', package] if upgrade: args.append('--upgrade') - if user: - args.append('--user') + if target: + args += ['--target', os.path.abspath(target)] try: return 0 == subprocess.call(args) except subprocess.SubprocessError: diff --git a/requirements.txt b/requirements.txt index f851f70e86f..14c276aa5be 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,119 +1,3 @@ -# Required for Home Assistant core -requests>=2.0 -pyyaml>=3.11 -pytz>=2015.2 - -# Optional, needed for specific components - -# Sun (sun) -astral>=0.8.1 - -# Philips Hue library (lights.hue) -phue>=0.8 - -# Limitlessled/Easybulb/Milight library (lights.limitlessled) -ledcontroller>=1.0.7 - -# Chromecast bindings (media_player.cast) -pychromecast>=0.6.10 - -# Keyboard (keyboard) -pyuserinput>=0.1.9 - -# Tellstick bindings (*.tellstick) -tellcore-py>=1.0.4 - -# Nmap bindings (device_tracker.nmap) -python-libnmap>=0.6.3 - -# PushBullet bindings (notify.pushbullet) -pushbullet.py>=0.7.1 - -# Nest Thermostat bindings (thermostat.nest) -python-nest>=2.4.0 - -# Z-Wave (*.zwave) -pydispatcher>=2.0.5 - -# ISY994 bindings (*.isy994) -PyISY>=1.0.5 - -# PSutil (sensor.systemmonitor) -psutil>=3.0.0 - -# Pushover bindings (notify.pushover) -python-pushover>=0.2 - -# Transmission Torrent Client (*.transmission) -transmissionrpc>=0.11 - -# OpenWeatherMap Web API (sensor.openweathermap) -pyowm>=2.2.1 - -# XMPP Bindings (notify.xmpp) -sleekxmpp>=1.3.1 -dnspython3>=1.12.0 - -# Blockchain (sensor.bitcoin) -blockchain>=1.1.2 - -# MPD Bindings (media_player.mpd) -python-mpd2>=0.5.4 - -# Hikvision (switch.hikvisioncam) -hikvision>=0.4 - -# console log coloring -colorlog>=2.6.0 - -# JSON-RPC interface (media_player.kodi) -jsonrpc-requests>=0.1 - -# Forecast.io Bindings (sensor.forecast) -python-forecastio>=1.3.3 - -# Firmata Bindings (*.arduino) -PyMata==2.07a - -# Rfxtrx sensor (sensor.rfxtrx) -https://github.com/Danielhiversen/pyRFXtrx/archive/master.zip - -# Mysensors -https://github.com/theolind/pymysensors/archive/master.zip#egg=pymysensors-0.1 - -# Netgear (device_tracker.netgear) -pynetgear>=0.3 - -# Netdisco (discovery) -netdisco>=0.3 - -# Wemo (switch.wemo) -pywemo>=0.2 - -# Wink (*.wink) -https://github.com/balloob/python-wink/archive/master.zip#pywink>=0.1 - -# Slack notifier (notify.slack) -slacker>=0.6.8 - -# Temper sensors (sensor.temper) -https://github.com/rkabadi/temper-python/archive/master.zip - -# PyEdimax -https://github.com/rkabadi/pyedimax/archive/master.zip - -# RPI-GPIO platform (*.rpi_gpio) -RPi.GPIO >=0.5.11 - -# Adafruit temperature/humidity sensor -# uncomment on a Raspberry Pi / Beaglebone -#git+git://github.com/mala-zaba/Adafruit_Python_DHT - -# PAHO MQTT Binding (mqtt) -paho-mqtt>=1.1 - -# PyModbus (modbus) -https://github.com/bashwork/pymodbus/archive/python3.zip#pymodbus>=1.2.0 - -# Verisure (verisure) -https://github.com/persandstrom/python-verisure/archive/master.zip +requests==2.7.0 +pyyaml==3.11 +pytz==2015.4 From 75b3cc046dc7499757401381369188fbbf71c882 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Aug 2015 18:17:21 -0700 Subject: [PATCH 016/190] Update frontend with latest changes --- homeassistant/components/frontend/version.py | 2 +- .../frontend/www_static/frontend.html | 163 +++++++++--------- .../www_static/home-assistant-polymer | 2 +- 3 files changed, 82 insertions(+), 85 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 3b00afea13b..defce54a73a 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,2 +1,2 @@ """ DO NOT MODIFY. Auto-generated by build_frontend script """ -VERSION = "e9a79e5367c298e2e5201c35c9b9de8b" +VERSION = "25d26e3bbcae0f4493f787a5673a84fe" diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 26c38c2a31b..82b0dba526a 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -516,51 +516,6 @@ if(n>=0){var s=e.getKey(t);return this.splice("selected",n,1),this.unlinkPaths(" left: 0; }; - } \ No newline at end of file + } \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 1c82a536312..c3b9a55d683 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 1c82a536312e8321716ab7d80a5d17045d20d77f +Subproject commit c3b9a55d6839b933042da14d578c43f9a47499dc From 893ae15042675ef10d255bbc6e7e1554288143e8 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 21:39:50 -0400 Subject: [PATCH 017/190] Changed component REQUIREMENTS to absolute versions. --- homeassistant/components/device_tracker/netgear.py | 2 +- homeassistant/components/device_tracker/nmap_tracker.py | 2 +- homeassistant/components/discovery.py | 2 +- homeassistant/components/isy994.py | 2 +- homeassistant/components/keyboard.py | 2 +- homeassistant/components/light/hue.py | 2 +- homeassistant/components/light/limitlessled.py | 2 +- homeassistant/components/light/tellstick.py | 2 +- homeassistant/components/light/wink.py | 4 ++-- homeassistant/components/media_player/cast.py | 2 +- homeassistant/components/media_player/kodi.py | 2 +- homeassistant/components/media_player/mpd.py | 2 +- homeassistant/components/modbus.py | 4 ++-- homeassistant/components/mqtt.py | 2 +- homeassistant/components/notify/pushbullet.py | 2 +- homeassistant/components/notify/pushover.py | 2 +- homeassistant/components/notify/slack.py | 2 +- homeassistant/components/notify/xmpp.py | 2 +- homeassistant/components/sensor/bitcoin.py | 2 +- homeassistant/components/sensor/dht.py | 3 ++- homeassistant/components/sensor/forecast.py | 2 +- homeassistant/components/sensor/mysensors.py | 4 ++-- homeassistant/components/sensor/openweathermap.py | 2 +- homeassistant/components/sensor/rfxtrx.py | 4 ++-- homeassistant/components/sensor/rpi_gpio.py | 2 +- homeassistant/components/sensor/systemmonitor.py | 2 +- homeassistant/components/sensor/tellstick.py | 2 +- homeassistant/components/sensor/temper.py | 3 ++- homeassistant/components/sensor/transmission.py | 2 +- homeassistant/components/sensor/wink.py | 4 ++-- homeassistant/components/sun.py | 2 +- homeassistant/components/switch/edimax.py | 3 ++- homeassistant/components/switch/hikvisioncam.py | 2 +- homeassistant/components/switch/rpi_gpio.py | 2 +- homeassistant/components/switch/tellstick.py | 2 +- homeassistant/components/switch/transmission.py | 2 +- homeassistant/components/switch/wemo.py | 2 +- homeassistant/components/switch/wink.py | 4 ++-- homeassistant/components/thermostat/nest.py | 2 +- homeassistant/components/verisure.py | 3 ++- homeassistant/components/wink.py | 4 ++-- homeassistant/components/zwave.py | 2 +- 42 files changed, 53 insertions(+), 49 deletions(-) diff --git a/homeassistant/components/device_tracker/netgear.py b/homeassistant/components/device_tracker/netgear.py index c04a1d07b1f..346fbb37d37 100644 --- a/homeassistant/components/device_tracker/netgear.py +++ b/homeassistant/components/device_tracker/netgear.py @@ -42,7 +42,7 @@ from homeassistant.components.device_tracker import DOMAIN MIN_TIME_BETWEEN_SCANS = timedelta(seconds=5) _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['pynetgear>=0.3'] +REQUIREMENTS = ['pynetgear==0.3'] def get_scanner(hass, config): diff --git a/homeassistant/components/device_tracker/nmap_tracker.py b/homeassistant/components/device_tracker/nmap_tracker.py index 00fc8fd12b4..dc12a53f539 100644 --- a/homeassistant/components/device_tracker/nmap_tracker.py +++ b/homeassistant/components/device_tracker/nmap_tracker.py @@ -43,7 +43,7 @@ _LOGGER = logging.getLogger(__name__) # interval in minutes to exclude devices from a scan while they are home CONF_HOME_INTERVAL = "home_interval" -REQUIREMENTS = ['python-libnmap>=0.6.3'] +REQUIREMENTS = ['python-libnmap==0.6.1'] def get_scanner(hass, config): diff --git a/homeassistant/components/discovery.py b/homeassistant/components/discovery.py index 4ad0299cc8f..c21249fbc60 100644 --- a/homeassistant/components/discovery.py +++ b/homeassistant/components/discovery.py @@ -19,7 +19,7 @@ from homeassistant.const import ( DOMAIN = "discovery" DEPENDENCIES = [] -REQUIREMENTS = ['netdisco>=0.3'] +REQUIREMENTS = ['netdisco==0.3'] SCAN_INTERVAL = 300 # seconds diff --git a/homeassistant/components/isy994.py b/homeassistant/components/isy994.py index f5998faeaf8..63c7b6c4af6 100644 --- a/homeassistant/components/isy994.py +++ b/homeassistant/components/isy994.py @@ -21,7 +21,7 @@ from homeassistant.const import ( DOMAIN = "isy994" DEPENDENCIES = [] -REQUIREMENTS = ['PyISY>=1.0.5'] +REQUIREMENTS = ['PyISY==1.0.5'] DISCOVER_LIGHTS = "isy994.lights" DISCOVER_SWITCHES = "isy994.switches" DISCOVER_SENSORS = "isy994.sensors" diff --git a/homeassistant/components/keyboard.py b/homeassistant/components/keyboard.py index 5359791087e..3629fce31bf 100644 --- a/homeassistant/components/keyboard.py +++ b/homeassistant/components/keyboard.py @@ -14,7 +14,7 @@ from homeassistant.const import ( DOMAIN = "keyboard" DEPENDENCIES = [] -REQUIREMENTS = ['pyuserinput>=0.1.9'] +REQUIREMENTS = ['pyuserinput==0.1.9'] def volume_up(hass): diff --git a/homeassistant/components/light/hue.py b/homeassistant/components/light/hue.py index c3b28ec1dd6..b438d7b92b1 100644 --- a/homeassistant/components/light/hue.py +++ b/homeassistant/components/light/hue.py @@ -16,7 +16,7 @@ from homeassistant.components.light import ( ATTR_FLASH, FLASH_LONG, FLASH_SHORT, ATTR_EFFECT, EFFECT_COLORLOOP) -REQUIREMENTS = ['phue>=0.8'] +REQUIREMENTS = ['phue==0.8'] MIN_TIME_BETWEEN_SCANS = timedelta(seconds=10) MIN_TIME_BETWEEN_FORCED_SCANS = timedelta(milliseconds=100) diff --git a/homeassistant/components/light/limitlessled.py b/homeassistant/components/light/limitlessled.py index b3e0858ffe2..8fdb525d4e0 100644 --- a/homeassistant/components/light/limitlessled.py +++ b/homeassistant/components/light/limitlessled.py @@ -34,7 +34,7 @@ from homeassistant.components.light import (Light, ATTR_BRIGHTNESS, from homeassistant.util.color import color_RGB_to_xy _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['ledcontroller>=1.0.7'] +REQUIREMENTS = ['ledcontroller==1.0.7'] def setup_platform(hass, config, add_devices_callback, discovery_info=None): diff --git a/homeassistant/components/light/tellstick.py b/homeassistant/components/light/tellstick.py index 9132604b294..8068d20bb74 100644 --- a/homeassistant/components/light/tellstick.py +++ b/homeassistant/components/light/tellstick.py @@ -9,7 +9,7 @@ from homeassistant.components.light import Light, ATTR_BRIGHTNESS from homeassistant.const import ATTR_FRIENDLY_NAME import tellcore.constants as tellcore_constants -REQUIREMENTS = ['tellcore-py>=1.0.4'] +REQUIREMENTS = ['tellcore-py==1.0.4'] def setup_platform(hass, config, add_devices_callback, discovery_info=None): diff --git a/homeassistant/components/light/wink.py b/homeassistant/components/light/wink.py index e8c8eb7a224..4b5af0c3250 100644 --- a/homeassistant/components/light/wink.py +++ b/homeassistant/components/light/wink.py @@ -9,8 +9,8 @@ from homeassistant.components.light import ATTR_BRIGHTNESS from homeassistant.components.wink import WinkToggleDevice from homeassistant.const import CONF_ACCESS_TOKEN -REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/master.zip' - '#pywink>=0.1'] +REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/' + + 'c2b700e8ca866159566ecf5e644d9c297f69f257.zip'] def setup_platform(hass, config, add_devices_callback, discovery_info=None): diff --git a/homeassistant/components/media_player/cast.py b/homeassistant/components/media_player/cast.py index 5fca233013a..d19e4166c1c 100644 --- a/homeassistant/components/media_player/cast.py +++ b/homeassistant/components/media_player/cast.py @@ -19,7 +19,7 @@ from homeassistant.components.media_player import ( SUPPORT_PREVIOUS_TRACK, SUPPORT_NEXT_TRACK, MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW, MEDIA_TYPE_VIDEO) -REQUIREMENTS = ['pychromecast>=0.6.10'] +REQUIREMENTS = ['pychromecast==0.6.10'] CONF_IGNORE_CEC = 'ignore_cec' CAST_SPLASH = 'https://home-assistant.io/images/cast/splash.png' SUPPORT_CAST = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ diff --git a/homeassistant/components/media_player/kodi.py b/homeassistant/components/media_player/kodi.py index 4b24f8694ed..dfc2f64a2a8 100644 --- a/homeassistant/components/media_player/kodi.py +++ b/homeassistant/components/media_player/kodi.py @@ -48,7 +48,7 @@ except ImportError: jsonrpc_requests = None _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['jsonrpc-requests>=0.1'] +REQUIREMENTS = ['jsonrpc-requests==0.1'] SUPPORT_KODI = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK | SUPPORT_SEEK diff --git a/homeassistant/components/media_player/mpd.py b/homeassistant/components/media_player/mpd.py index 0239173f7cc..aca2413d3e4 100644 --- a/homeassistant/components/media_player/mpd.py +++ b/homeassistant/components/media_player/mpd.py @@ -48,7 +48,7 @@ from homeassistant.components.media_player import ( MEDIA_TYPE_MUSIC) _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['python-mpd2>=0.5.4'] +REQUIREMENTS = ['python-mpd2==0.5.4'] SUPPORT_MPD = SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_TURN_OFF | \ SUPPORT_PREVIOUS_TRACK | SUPPORT_NEXT_TRACK diff --git a/homeassistant/components/modbus.py b/homeassistant/components/modbus.py index 0bd3b23c2f9..e6c3f1cfcee 100644 --- a/homeassistant/components/modbus.py +++ b/homeassistant/components/modbus.py @@ -38,8 +38,8 @@ from homeassistant.const import (EVENT_HOMEASSISTANT_START, DOMAIN = "modbus" DEPENDENCIES = [] -REQUIREMENTS = ['https://github.com/bashwork/pymodbus/archive/python3.zip' - '#pymodbus>=1.2.0'] +REQUIREMENTS = ['https://github.com/bashwork/pymodbus/archive/' + + 'd7fc4f1cc975631e0a9011390e8017f64b612661.zip'] # Type of network MEDIUM = "type" diff --git a/homeassistant/components/mqtt.py b/homeassistant/components/mqtt.py index aa1a3167029..073406e9700 100644 --- a/homeassistant/components/mqtt.py +++ b/homeassistant/components/mqtt.py @@ -66,7 +66,7 @@ SERVICE_PUBLISH = 'publish' EVENT_MQTT_MESSAGE_RECEIVED = 'MQTT_MESSAGE_RECEIVED' DEPENDENCIES = [] -REQUIREMENTS = ['paho-mqtt>=1.1'] +REQUIREMENTS = ['paho-mqtt==1.1'] CONF_BROKER = 'broker' CONF_PORT = 'port' diff --git a/homeassistant/components/notify/pushbullet.py b/homeassistant/components/notify/pushbullet.py index 5e322cfc3b5..58462954d2e 100644 --- a/homeassistant/components/notify/pushbullet.py +++ b/homeassistant/components/notify/pushbullet.py @@ -28,7 +28,7 @@ from homeassistant.components.notify import ( from homeassistant.const import CONF_API_KEY _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['pushbullet.py>=0.7.1'] +REQUIREMENTS = ['pushbullet.py==0.7.1'] def get_service(hass, config): diff --git a/homeassistant/components/notify/pushover.py b/homeassistant/components/notify/pushover.py index 1bc5e9ac9a3..0df035a4a6e 100644 --- a/homeassistant/components/notify/pushover.py +++ b/homeassistant/components/notify/pushover.py @@ -42,7 +42,7 @@ from homeassistant.components.notify import ( DOMAIN, ATTR_TITLE, BaseNotificationService) from homeassistant.const import CONF_API_KEY -REQUIREMENTS = ['python-pushover>=0.2'] +REQUIREMENTS = ['python-pushover==0.2'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/notify/slack.py b/homeassistant/components/notify/slack.py index 859b5b0388a..d604cffb754 100644 --- a/homeassistant/components/notify/slack.py +++ b/homeassistant/components/notify/slack.py @@ -32,7 +32,7 @@ from homeassistant.components.notify import ( DOMAIN, BaseNotificationService) from homeassistant.const import CONF_API_KEY -REQUIREMENTS = ['slacker>=0.6.8'] +REQUIREMENTS = ['slacker==0.6.8'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/notify/xmpp.py b/homeassistant/components/notify/xmpp.py index e756be82014..81268c734b7 100644 --- a/homeassistant/components/notify/xmpp.py +++ b/homeassistant/components/notify/xmpp.py @@ -45,7 +45,7 @@ from homeassistant.helpers import validate_config from homeassistant.components.notify import ( DOMAIN, ATTR_TITLE, BaseNotificationService) -REQUIREMENTS = ['sleekxmpp>=1.3.1', 'dnspython3>=1.12.0'] +REQUIREMENTS = ['sleekxmpp==1.3.1', 'dnspython3==1.12.0'] def get_service(hass, config): diff --git a/homeassistant/components/sensor/bitcoin.py b/homeassistant/components/sensor/bitcoin.py index e0ecbab6db5..b30886448ad 100644 --- a/homeassistant/components/sensor/bitcoin.py +++ b/homeassistant/components/sensor/bitcoin.py @@ -71,7 +71,7 @@ from homeassistant.util import Throttle from homeassistant.helpers.entity import Entity -REQUIREMENTS = ['blockchain>=1.1.2'] +REQUIREMENTS = ['blockchain==1.1.2'] _LOGGER = logging.getLogger(__name__) OPTION_TYPES = { 'wallet': ['Wallet balance', 'BTC'], diff --git a/homeassistant/components/sensor/dht.py b/homeassistant/components/sensor/dht.py index c7df4b4a8d3..7949a7a44fa 100644 --- a/homeassistant/components/sensor/dht.py +++ b/homeassistant/components/sensor/dht.py @@ -44,7 +44,8 @@ from homeassistant.const import TEMP_FAHRENHEIT from homeassistant.helpers.entity import Entity # update this requirement to upstream as soon as it supports python3 -REQUIREMENTS = ['git+git://github.com/mala-zaba/Adafruit_Python_DHT'] +REQUIREMENTS = ['http://github.com/mala-zaba/Adafruit_Python_DHT/archive/' + + '4101340de8d2457dd194bca1e8d11cbfc237e919.zip'] _LOGGER = logging.getLogger(__name__) SENSOR_TYPES = { 'temperature': ['Temperature', ''], diff --git a/homeassistant/components/sensor/forecast.py b/homeassistant/components/sensor/forecast.py index a9783104cd8..b56432ab89b 100644 --- a/homeassistant/components/sensor/forecast.py +++ b/homeassistant/components/sensor/forecast.py @@ -49,7 +49,7 @@ Details for the API : https://developer.forecast.io/docs/v2 import logging from datetime import timedelta -REQUIREMENTS = ['python-forecastio>=1.3.3'] +REQUIREMENTS = ['python-forecastio==1.3.3'] try: import forecastio diff --git a/homeassistant/components/sensor/mysensors.py b/homeassistant/components/sensor/mysensors.py index a626858db31..994b110a585 100644 --- a/homeassistant/components/sensor/mysensors.py +++ b/homeassistant/components/sensor/mysensors.py @@ -36,8 +36,8 @@ ATTR_NODE_ID = "node_id" ATTR_CHILD_ID = "child_id" _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['https://github.com/theolind/pymysensors/archive/master.zip' - '#egg=pymysensors-0.1'] +REQUIREMENTS = ['https://github.com/theolind/pymysensors/archive/' + + '35b87d880147a34107da0d40cb815d75e6cb4af7.zip'] def setup_platform(hass, config, add_devices, discovery_info=None): diff --git a/homeassistant/components/sensor/openweathermap.py b/homeassistant/components/sensor/openweathermap.py index f4635cd13ca..537fc9f59b5 100644 --- a/homeassistant/components/sensor/openweathermap.py +++ b/homeassistant/components/sensor/openweathermap.py @@ -48,7 +48,7 @@ from homeassistant.util import Throttle from homeassistant.const import (CONF_API_KEY, TEMP_CELCIUS, TEMP_FAHRENHEIT) from homeassistant.helpers.entity import Entity -REQUIREMENTS = ['pyowm>=2.2.1'] +REQUIREMENTS = ['pyowm==2.2.1'] _LOGGER = logging.getLogger(__name__) SENSOR_TYPES = { 'weather': ['Condition', ''], diff --git a/homeassistant/components/sensor/rfxtrx.py b/homeassistant/components/sensor/rfxtrx.py index ffc688804ef..8e5a1ad3dca 100644 --- a/homeassistant/components/sensor/rfxtrx.py +++ b/homeassistant/components/sensor/rfxtrx.py @@ -26,8 +26,8 @@ from collections import OrderedDict from homeassistant.const import (TEMP_CELCIUS) from homeassistant.helpers.entity import Entity -REQUIREMENTS = ['https://github.com/Danielhiversen/pyRFXtrx/archive/master.zip' - '#RFXtrx>=0.15'] +REQUIREMENTS = ['https://github.com/Danielhiversen/pyRFXtrx/archive/' + + 'ec7a1aaddf8270db6e5da1c13d58c1547effd7cf.zip'] DATA_TYPES = OrderedDict([ ('Temperature', TEMP_CELCIUS), diff --git a/homeassistant/components/sensor/rpi_gpio.py b/homeassistant/components/sensor/rpi_gpio.py index c57cf31b397..f973b24a301 100644 --- a/homeassistant/components/sensor/rpi_gpio.py +++ b/homeassistant/components/sensor/rpi_gpio.py @@ -53,7 +53,7 @@ DEFAULT_VALUE_HIGH = "HIGH" DEFAULT_VALUE_LOW = "LOW" DEFAULT_BOUNCETIME = 50 -REQUIREMENTS = ['RPi.GPIO>=0.5.11'] +REQUIREMENTS = ['RPi.GPIO==0.5.11'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/sensor/systemmonitor.py b/homeassistant/components/sensor/systemmonitor.py index 1d1bdb1f3b5..b473cc27283 100644 --- a/homeassistant/components/sensor/systemmonitor.py +++ b/homeassistant/components/sensor/systemmonitor.py @@ -66,7 +66,7 @@ import homeassistant.util.dt as dt_util from homeassistant.helpers.entity import Entity from homeassistant.const import STATE_ON, STATE_OFF -REQUIREMENTS = ['psutil>=3.0.0'] +REQUIREMENTS = ['psutil==3.0.0'] SENSOR_TYPES = { 'disk_use_percent': ['Disk Use', '%'], 'disk_use': ['Disk Use', 'GiB'], diff --git a/homeassistant/components/sensor/tellstick.py b/homeassistant/components/sensor/tellstick.py index 7d024333023..e93c6e4c97f 100644 --- a/homeassistant/components/sensor/tellstick.py +++ b/homeassistant/components/sensor/tellstick.py @@ -35,7 +35,7 @@ import homeassistant.util as util DatatypeDescription = namedtuple("DatatypeDescription", ['name', 'unit']) -REQUIREMENTS = ['tellcore-py>=1.0.4'] +REQUIREMENTS = ['tellcore-py==1.0.4'] # pylint: disable=unused-argument diff --git a/homeassistant/components/sensor/temper.py b/homeassistant/components/sensor/temper.py index e443e81b93f..8579a922661 100644 --- a/homeassistant/components/sensor/temper.py +++ b/homeassistant/components/sensor/temper.py @@ -18,7 +18,8 @@ from homeassistant.const import CONF_NAME, DEVICE_DEFAULT_NAME _LOGGER = logging.getLogger(__name__) -REQUIREMENTS = ['https://github.com/rkabadi/temper-python/archive/master.zip'] +REQUIREMENTS = ['https://github.com/rkabadi/temper-python/archive/' + + '3dbdaf2d87b8db9a3cd6e5585fc704537dd2d09b.zip'] # pylint: disable=unused-argument diff --git a/homeassistant/components/sensor/transmission.py b/homeassistant/components/sensor/transmission.py index b9ed3ea4e9f..587f5131d9d 100644 --- a/homeassistant/components/sensor/transmission.py +++ b/homeassistant/components/sensor/transmission.py @@ -67,7 +67,7 @@ from transmissionrpc.error import TransmissionError import logging -REQUIREMENTS = ['transmissionrpc>=0.11'] +REQUIREMENTS = ['transmissionrpc==0.11'] SENSOR_TYPES = { 'current_status': ['Status', ''], 'download_speed': ['Down Speed', 'MB/s'], diff --git a/homeassistant/components/sensor/wink.py b/homeassistant/components/sensor/wink.py index 4056bbd7733..0b3d33cea24 100644 --- a/homeassistant/components/sensor/wink.py +++ b/homeassistant/components/sensor/wink.py @@ -8,8 +8,8 @@ import logging from homeassistant.helpers.entity import Entity from homeassistant.const import CONF_ACCESS_TOKEN, STATE_OPEN, STATE_CLOSED -REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/master.zip' - '#pywink>=0.1'] +REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/' + + 'c2b700e8ca866159566ecf5e644d9c297f69f257.zip'] def setup_platform(hass, config, add_devices, discovery_info=None): diff --git a/homeassistant/components/sun.py b/homeassistant/components/sun.py index 507c4a2b63b..802eddb4a3a 100644 --- a/homeassistant/components/sun.py +++ b/homeassistant/components/sun.py @@ -31,7 +31,7 @@ from homeassistant.helpers.entity import Entity from homeassistant.components.scheduler import ServiceEventListener DEPENDENCIES = [] -REQUIREMENTS = ['astral>=0.8.1'] +REQUIREMENTS = ['astral==0.8.1'] DOMAIN = "sun" ENTITY_ID = "sun.sun" diff --git a/homeassistant/components/switch/edimax.py b/homeassistant/components/switch/edimax.py index 17fe6d61735..200c5746e27 100644 --- a/homeassistant/components/switch/edimax.py +++ b/homeassistant/components/switch/edimax.py @@ -44,7 +44,8 @@ from homeassistant.const import CONF_HOST, CONF_USERNAME, CONF_PASSWORD,\ DEFAULT_USERNAME = 'admin' DEFAULT_PASSWORD = '1234' DEVICE_DEFAULT_NAME = 'Edimax Smart Plug' -REQUIREMENTS = ['https://github.com/rkabadi/pyedimax/archive/master.zip'] +REQUIREMENTS = ['https://github.com/rkabadi/pyedimax/archive/' + + '365301ce3ff26129a7910c501ead09ea625f3700.zip'] # setup logger _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/switch/hikvisioncam.py b/homeassistant/components/switch/hikvisioncam.py index 5ab084319fc..6ab82df482a 100644 --- a/homeassistant/components/switch/hikvisioncam.py +++ b/homeassistant/components/switch/hikvisioncam.py @@ -49,7 +49,7 @@ except ImportError: hikvision.api = None _LOGGING = logging.getLogger(__name__) -REQUIREMENTS = ['hikvision>=0.4'] +REQUIREMENTS = ['hikvision==0.4'] # pylint: disable=too-many-arguments # pylint: disable=too-many-instance-attributes diff --git a/homeassistant/components/switch/rpi_gpio.py b/homeassistant/components/switch/rpi_gpio.py index bb9cf13e3ed..4afa38aa80a 100644 --- a/homeassistant/components/switch/rpi_gpio.py +++ b/homeassistant/components/switch/rpi_gpio.py @@ -36,7 +36,7 @@ from homeassistant.const import (DEVICE_DEFAULT_NAME, DEFAULT_INVERT_LOGIC = False -REQUIREMENTS = ['RPi.GPIO>=0.5.11'] +REQUIREMENTS = ['RPi.GPIO==0.5.11'] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/switch/tellstick.py b/homeassistant/components/switch/tellstick.py index 4fde4babf9e..230151382e7 100644 --- a/homeassistant/components/switch/tellstick.py +++ b/homeassistant/components/switch/tellstick.py @@ -19,7 +19,7 @@ import tellcore.constants as tellcore_constants SINGAL_REPETITIONS = 1 -REQUIREMENTS = ['tellcore-py>=1.0.4'] +REQUIREMENTS = ['tellcore-py==1.0.4'] # pylint: disable=unused-argument diff --git a/homeassistant/components/switch/transmission.py b/homeassistant/components/switch/transmission.py index 7575951f53b..d5cf716c770 100644 --- a/homeassistant/components/switch/transmission.py +++ b/homeassistant/components/switch/transmission.py @@ -48,7 +48,7 @@ from transmissionrpc.error import TransmissionError import logging _LOGGING = logging.getLogger(__name__) -REQUIREMENTS = ['transmissionrpc>=0.11'] +REQUIREMENTS = ['transmissionrpc==0.11'] # pylint: disable=unused-argument diff --git a/homeassistant/components/switch/wemo.py b/homeassistant/components/switch/wemo.py index d133191e6db..2d6e25b296b 100644 --- a/homeassistant/components/switch/wemo.py +++ b/homeassistant/components/switch/wemo.py @@ -8,7 +8,7 @@ import logging from homeassistant.components.switch import SwitchDevice -REQUIREMENTS = ['pywemo>=0.2'] +REQUIREMENTS = ['pywemo==0.2'] # pylint: disable=unused-argument diff --git a/homeassistant/components/switch/wink.py b/homeassistant/components/switch/wink.py index 556a40b181f..c9fb045d9c0 100644 --- a/homeassistant/components/switch/wink.py +++ b/homeassistant/components/switch/wink.py @@ -9,8 +9,8 @@ import logging from homeassistant.components.wink import WinkToggleDevice from homeassistant.const import CONF_ACCESS_TOKEN -REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/master.zip' - '#pywink>=0.1'] +REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/' + + 'c2b700e8ca866159566ecf5e644d9c297f69f257.zip'] def setup_platform(hass, config, add_devices, discovery_info=None): diff --git a/homeassistant/components/thermostat/nest.py b/homeassistant/components/thermostat/nest.py index cb74fa091ff..1de729b590d 100644 --- a/homeassistant/components/thermostat/nest.py +++ b/homeassistant/components/thermostat/nest.py @@ -6,7 +6,7 @@ import logging from homeassistant.components.thermostat import ThermostatDevice from homeassistant.const import (CONF_USERNAME, CONF_PASSWORD, TEMP_CELCIUS) -REQUIREMENTS = ['python-nest>=2.4.0'] +REQUIREMENTS = ['python-nest==2.4.0'] # pylint: disable=unused-argument diff --git a/homeassistant/components/verisure.py b/homeassistant/components/verisure.py index f084ce9874c..d716c8c46ad 100644 --- a/homeassistant/components/verisure.py +++ b/homeassistant/components/verisure.py @@ -61,7 +61,8 @@ DISCOVER_SWITCHES = 'verisure.switches' DEPENDENCIES = [] REQUIREMENTS = [ - 'https://github.com/persandstrom/python-verisure/archive/master.zip' + 'https://github.com/persandstrom/python-verisure/archive/' + + '9873c4527f01b1ba1f72ae60f7f35854390d59be.zip' ] _LOGGER = logging.getLogger(__name__) diff --git a/homeassistant/components/wink.py b/homeassistant/components/wink.py index d56a244b84c..eb2beac508a 100644 --- a/homeassistant/components/wink.py +++ b/homeassistant/components/wink.py @@ -16,8 +16,8 @@ from homeassistant.const import ( DOMAIN = "wink" DEPENDENCIES = [] -REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/master.zip' - '#pywink>=0.1'] +REQUIREMENTS = ['https://github.com/balloob/python-wink/archive/' + + 'c2b700e8ca866159566ecf5e644d9c297f69f257.zip'] DISCOVER_LIGHTS = "wink.lights" DISCOVER_SWITCHES = "wink.switches" diff --git a/homeassistant/components/zwave.py b/homeassistant/components/zwave.py index ce189a242b4..ef7e7308959 100644 --- a/homeassistant/components/zwave.py +++ b/homeassistant/components/zwave.py @@ -12,7 +12,7 @@ from homeassistant.const import ( DOMAIN = "zwave" DEPENDENCIES = [] -REQUIREMENTS = ['pydispatcher>=2.0.5'] +REQUIREMENTS = ['pydispatcher==2.0.5'] CONF_USB_STICK_PATH = "usb_path" DEFAULT_CONF_USB_STICK_PATH = "/zwaveusbstick" From 0b6358e759263d50429130766fa2be81a2e26197 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 22:19:52 -0400 Subject: [PATCH 018/190] Implemented comments from Paulus. Revised main to use frontend and demo strings rather than importing their domains. Removed submodule validation. Moved local library mounting to the bootstrap module and out of core. Added requirements_all.txt for all dependencies. Made core dependencies looser. Small updates to setup.py. --- .travis.yml | 2 +- homeassistant/__main__.py | 33 ++++------ homeassistant/bootstrap.py | 15 +++-- homeassistant/core.py | 4 -- requirements.txt | 6 +- requirements_all.txt | 120 +++++++++++++++++++++++++++++++++++++ setup.py | 10 +++- 7 files changed, 155 insertions(+), 35 deletions(-) create mode 100644 requirements_all.txt diff --git a/.travis.yml b/.travis.yml index 7af8ce86dcd..65e417fffb6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: python python: - "3.4" install: - - pip install -r requirements.txt + - pip install -r requirements_all.txt - pip install flake8 pylint coveralls script: - flake8 homeassistant --exclude bower_components,external diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 59c2cd11abb..02ef2c401f3 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -8,7 +8,6 @@ import importlib from homeassistant import bootstrap import homeassistant.config as config_util -from homeassistant.components import frontend, demo def validate_python(): @@ -30,17 +29,6 @@ def ensure_pip(): sys.exit() -def validate_git_submodules(): - """ Validate the git submodules are cloned. """ - try: - # pylint: disable=no-name-in-module, unused-variable - from homeassistant.external.noop import WORKING # noqa - except ImportError: - print("Repository submodules have not been initialized") - print("Please run: git submodule update --init --recursive") - sys.exit() - - def ensure_config_path(config_dir): """ Gets the path to the configuration file. Creates one if it not exists. """ @@ -49,11 +37,16 @@ def ensure_config_path(config_dir): # Test if configuration directory exists if not os.path.isdir(config_dir): - try: - os.mkdir(config_dir) - except OSError: - print(('Fatal Error: Unable to create specified configuration ' - 'directory {} ').format(config_dir)) + if config_dir == config_util.get_default_config_dir(): + try: + os.mkdir(config_dir) + except OSError: + print(('Fatal Error: Unable to create default configuration ' + 'directory {} ').format(config_dir)) + sys.exit() + else: + print(('Fatal Error: Specified configuration directory does ' + 'not exist {} ').format(config_dir)) sys.exit() # Test if library directory exists @@ -98,8 +91,6 @@ def main(): """ Starts Home Assistant. """ validate_python() - validate_git_submodules() - args = get_arguments() config_dir = os.path.join(os.getcwd(), args.config) @@ -107,8 +98,8 @@ def main(): if args.demo_mode: hass = bootstrap.from_config_dict({ - frontend.DOMAIN: {}, - demo.DOMAIN: {} + 'frontend': {}, + 'demo': {} }, config_dir=config_dir) else: hass = bootstrap.from_config_file(config_path) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index e4cd307019e..61685dbf2fe 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -144,6 +144,11 @@ def prepare_setup_platform(hass, config, domain, platform_name): return platform +def mount_local_lib_path(config_dir): + """ Add local library to Python Path """ + sys.path.insert(0, os.path.join(config_dir, 'lib')) + + # pylint: disable=too-many-branches, too-many-statements def from_config_dict(config, hass=None, config_dir=None): """ @@ -154,8 +159,9 @@ def from_config_dict(config, hass=None, config_dir=None): if hass is None: hass = core.HomeAssistant() if config_dir is not None: - hass.config.config_dir = os.path.abspath(config_dir) - hass.config.mount_local_path() + config_dir = os.path.abspath(config_dir) + hass.config.config_dir = config_dir + mount_local_lib_path(config_dir) process_ha_core_config(hass, config.get(core.DOMAIN, {})) @@ -198,8 +204,9 @@ def from_config_file(config_path, hass=None): hass = core.HomeAssistant() # Set config dir to directory holding config file - hass.config.config_dir = os.path.abspath(os.path.dirname(config_path)) - hass.config.mount_local_path() + config_dir = os.path.abspath(os.path.dirname(config_path)) + hass.config.config_dir = config_dir + mount_local_lib_path(config_dir) config_dict = config_util.load_config_file(config_path) diff --git a/homeassistant/core.py b/homeassistant/core.py index 309c9336706..0ad05694d65 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -666,10 +666,6 @@ class Config(object): # Directory that holds the configuration self.config_dir = get_default_config_dir() - def mount_local_path(self): - """ Add local library to Python Path """ - sys.path.insert(0, self.path('lib')) - def path(self, *path): """ Returns path to the file within the config dir. """ return os.path.join(self.config_dir, *path) diff --git a/requirements.txt b/requirements.txt index 14c276aa5be..a21c2db6208 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -requests==2.7.0 -pyyaml==3.11 -pytz==2015.4 +requests>=2,<3 +pyyaml>=3.11,<4 +pytz>=2015.4 diff --git a/requirements_all.txt b/requirements_all.txt new file mode 100644 index 00000000000..f9f02b49740 --- /dev/null +++ b/requirements_all.txt @@ -0,0 +1,120 @@ +# Required for Home Assistant core +requests>=2,<3 +pyyaml>=3.11,<4 +pytz>=2015.4 + +# Optional, needed for specific components + +# Sun (sun) +astral==0.8.1 + +# Philips Hue library (lights.hue) +phue==0.8 + +# Limitlessled/Easybulb/Milight library (lights.limitlessled) +ledcontroller==1.0.7 + +# Chromecast bindings (media_player.cast) +pychromecast==0.6.10 + +# Keyboard (keyboard) +pyuserinput==0.1.9 + +# Tellstick bindings (*.tellstick) +tellcore-py==1.0.4 + +# Nmap bindings (device_tracker.nmap) +python-libnmap==0.6.3 + +# PushBullet bindings (notify.pushbullet) +pushbullet.py==0.7.1 + +# Nest Thermostat bindings (thermostat.nest) +python-nest==2.4.0 + +# Z-Wave (*.zwave) +pydispatcher==2.0.5 + +# ISY994 bindings (*.isy994) +PyISY==1.0.5 + +# PSutil (sensor.systemmonitor) +psutil==3.0.0 + +# Pushover bindings (notify.pushover) +python-pushover==0.2 + +# Transmission Torrent Client (*.transmission) +transmissionrpc==0.11 + +# OpenWeatherMap Web API (sensor.openweathermap) +pyowm==2.2.1 + +# XMPP Bindings (notify.xmpp) +sleekxmpp==1.3.1 +dnspython3==1.12.0 + +# Blockchain (sensor.bitcoin) +blockchain==1.1.2 + +# MPD Bindings (media_player.mpd) +python-mpd2==0.5.4 + +# Hikvision (switch.hikvisioncam) +hikvision==0.4 + +# console log coloring +colorlog==2.6.0 + +# JSON-RPC interface (media_player.kodi) +jsonrpc-requests==0.1 + +# Forecast.io Bindings (sensor.forecast) +python-forecastio==1.3.3 + +# Firmata Bindings (*.arduino) +PyMata==2.07a + +# Rfxtrx sensor (sensor.rfxtrx) +https://github.com/Danielhiversen/pyRFXtrx/archive/ec7a1aaddf8270db6e5da1c13d58c1547effd7cf.zip + +# Mysensors +https://github.com/theolind/pymysensors/archive/35b87d880147a34107da0d40cb815d75e6cb4af7.zip + +# Netgear (device_tracker.netgear) +pynetgear==0.3 + +# Netdisco (discovery) +netdisco==0.3 + +# Wemo (switch.wemo) +pywemo==0.2 + +# Wink (*.wink) +https://github.com/balloob/python-wink/archive/c2b700e8ca866159566ecf5e644d9c297f69f257.zip + +# Slack notifier (notify.slack) +slacker==0.6.8 + +# Temper sensors (sensor.temper) +https://github.com/rkabadi/temper-python/archive/3dbdaf2d87b8db9a3cd6e5585fc704537dd2d09b.zip + +# PyEdimax +https://github.com/rkabadi/pyedimax/archive/365301ce3ff26129a7910c501ead09ea625f3700.zip + +# RPI-GPIO platform (*.rpi_gpio) +# Uncomment for Raspberry Pi +# RPi.GPIO ==0.5.11 + +# Adafruit temperature/humidity sensor +# uncomment on a Raspberry Pi / Beaglebone +# http://github.com/mala-zaba/Adafruit_Python_DHT/archive/4101340de8d2457dd194bca1e8d11cbfc237e919.zip + +# PAHO MQTT Binding (mqtt) +paho-mqtt==1.1 + +# PyModbus (modbus) +https://github.com/bashwork/pymodbus/archive/d7fc4f1cc975631e0a9011390e8017f64b612661.zip + +# Verisure (verisure) +https://github.com/persandstrom/python-verisure/archive/9873c4527f01b1ba1f72ae60f7f35854390d59be.zip diff --git a/setup.py b/setup.py index f922459e509..610a7398735 100755 --- a/setup.py +++ b/setup.py @@ -6,6 +6,8 @@ PACKAGE_NAME = 'homeassistant' HERE = os.path.abspath(os.path.dirname(__file__)) with open(os.path.join(HERE, PACKAGE_NAME, 'const.py')) as fp: VERSION = re.search("__version__ = ['\"]([^']+)['\"]\n", fp.read()).group(1) +DOWNLOAD_URL = \ + 'https://github.com/balloob/home-assistant/tarball/{}'.format(VERSION) PACKAGES = find_packages() + \ ['homeassistant.external', 'homeassistant.external.noop', @@ -16,12 +18,15 @@ PACKAGE_DATA = \ 'homeassistant.components.frontend.www_static': ['*.*'], 'homeassistant.components.frontend.www_static.images': ['*.*']} +REQUIRES = \ + [line.strip() for line in open('requirements.txt', 'r')] + setup( name=PACKAGE_NAME, version=VERSION, license='MIT License', url='https://home-assistant.io/', - download_url='https://github.com/automicus/pyisy/tarball/0.7.0', + download_url=DOWNLOAD_URL, author='Paulus Schoutsen', author_email='paulus@paulusschoutsen.nl', description='Open-source home automation platform running on Python 3.', @@ -30,7 +35,7 @@ setup( package_data=PACKAGE_DATA, zip_safe=False, platforms='any', - install_requires=['requests==2.7.0', 'pyyaml==3.11', 'pytz==2015.4'], + install_requires=REQUIRES, keywords=['home', 'automation'], entry_points={ 'console_scripts': [ @@ -39,6 +44,7 @@ setup( }, classifiers=[ 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Developers', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent', 'Programming Language :: Python :: 3.4', From f5b98c86f0d87f3c4261aaf586067b79ed9df936 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 22:34:35 -0400 Subject: [PATCH 019/190] Mostly PyLint and Flake8 updates. Rewrote imports of exceptions to be from the exceptions module. Made nmap scanner check for libnmap dependency without crashing. Various flake8 and pylint updates. --- homeassistant/__main__.py | 3 +- homeassistant/bootstrap.py | 1 + .../components/device_tracker/nmap_tracker.py | 12 +++++-- homeassistant/components/mqtt.py | 2 +- homeassistant/core.py | 3 +- homeassistant/exceptions.py | 1 + homeassistant/helpers/entity.py | 2 +- homeassistant/remote.py | 31 ++++++++++--------- 8 files changed, 32 insertions(+), 23 deletions(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index 02ef2c401f3..c6f0fd97b98 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -108,10 +108,9 @@ def main(): def open_browser(event): """ Open the webinterface in a browser. """ if hass.config.api is not None: - from homeassistant.const import EVENT_HOMEASSISTANT_START import webbrowser webbrowser.open(hass.config.api.base_url) - + from homeassistant.const import EVENT_HOMEASSISTANT_START hass.bus.listen_once(EVENT_HOMEASSISTANT_START, open_browser) hass.start() diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 61685dbf2fe..e9f04d9ab71 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -10,6 +10,7 @@ start by calling homeassistant.start_home_assistant(bus) """ import os +import sys import logging from collections import defaultdict diff --git a/homeassistant/components/device_tracker/nmap_tracker.py b/homeassistant/components/device_tracker/nmap_tracker.py index dc12a53f539..ee1650594ee 100644 --- a/homeassistant/components/device_tracker/nmap_tracker.py +++ b/homeassistant/components/device_tracker/nmap_tracker.py @@ -26,8 +26,12 @@ from collections import namedtuple import subprocess import re -from libnmap.process import NmapProcess -from libnmap.parser import NmapParser, NmapParserException +try: + from libnmap.process import NmapProcess + from libnmap.parser import NmapParser, NmapParserException + LIB_LOADED = True +except ImportError: + LIB_LOADED = False import homeassistant.util.dt as dt_util from homeassistant.const import CONF_HOSTS @@ -52,6 +56,10 @@ def get_scanner(hass, config): _LOGGER): return None + if not LIB_LOADED: + _LOGGER.error("Error while importing dependency python-libnmap.") + return False + scanner = NmapDeviceScanner(config[DOMAIN]) return scanner if scanner.success_init else None diff --git a/homeassistant/components/mqtt.py b/homeassistant/components/mqtt.py index 073406e9700..474b5ebb53e 100644 --- a/homeassistant/components/mqtt.py +++ b/homeassistant/components/mqtt.py @@ -46,7 +46,7 @@ The keep alive in seconds for this client. Default is 60. import logging import socket -from homeassistant.core import HomeAssistantError +from homeassistant.exceptions import HomeAssistantError import homeassistant.util as util from homeassistant.helpers import validate_config from homeassistant.const import ( diff --git a/homeassistant/core.py b/homeassistant/core.py index 0ad05694d65..c04e9a9ab63 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -7,7 +7,6 @@ of entities and react to changes. """ import os -import sys import time import logging import threading @@ -23,7 +22,7 @@ from homeassistant.const import ( EVENT_SERVICE_EXECUTED, ATTR_SERVICE_CALL_ID, EVENT_SERVICE_REGISTERED, TEMP_CELCIUS, TEMP_FAHRENHEIT, ATTR_FRIENDLY_NAME) from homeassistant.exceptions import ( - HomeAssistantError, InvalidEntityFormatError, NoEntitySpecifiedError) + HomeAssistantError, InvalidEntityFormatError) import homeassistant.util as util import homeassistant.util.dt as date_util import homeassistant.helpers.temperature as temp_helper diff --git a/homeassistant/exceptions.py b/homeassistant/exceptions.py index 4ecd22f9e43..bd32d356670 100644 --- a/homeassistant/exceptions.py +++ b/homeassistant/exceptions.py @@ -1,5 +1,6 @@ """ Exceptions used by Home Assistant """ + class HomeAssistantError(Exception): """ General Home Assistant exception occured. """ pass diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 0ca63856c27..b29379049d3 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -7,7 +7,7 @@ Provides ABC for entities in HA. from collections import defaultdict -from homeassistant.core import NoEntitySpecifiedError +from homeassistant.exceptions import NoEntitySpecifiedError from homeassistant.const import ( ATTR_FRIENDLY_NAME, ATTR_UNIT_OF_MEASUREMENT, ATTR_HIDDEN, diff --git a/homeassistant/remote.py b/homeassistant/remote.py index 2488f0a9c46..2193ede86e7 100644 --- a/homeassistant/remote.py +++ b/homeassistant/remote.py @@ -18,6 +18,7 @@ import urllib.parse import requests import homeassistant.core as ha +from homeassistant.exceptions import HomeAssistantError import homeassistant.bootstrap as bootstrap from homeassistant.const import ( @@ -84,12 +85,12 @@ class API(object): except requests.exceptions.ConnectionError: _LOGGER.exception("Error connecting to server") - raise ha.HomeAssistantError("Error connecting to server") + raise HomeAssistantError("Error connecting to server") except requests.exceptions.Timeout: error = "Timeout when talking to {}".format(self.host) _LOGGER.exception(error) - raise ha.HomeAssistantError(error) + raise HomeAssistantError(error) def __repr__(self): return "API({}, {}, {})".format( @@ -102,7 +103,7 @@ class HomeAssistant(ha.HomeAssistant): def __init__(self, remote_api, local_api=None): if not remote_api.validate_api(): - raise ha.HomeAssistantError( + raise HomeAssistantError( "Remote API at {}:{} not valid: {}".format( remote_api.host, remote_api.port, remote_api.status)) @@ -121,7 +122,7 @@ class HomeAssistant(ha.HomeAssistant): # Ensure a local API exists to connect with remote if self.config.api is None: if not bootstrap.setup_component(self, 'api'): - raise ha.HomeAssistantError( + raise HomeAssistantError( 'Unable to setup local API to receive events') ha.create_timer(self) @@ -132,7 +133,7 @@ class HomeAssistant(ha.HomeAssistant): # Setup that events from remote_api get forwarded to local_api # Do this after we fire START, otherwise HTTP is not started if not connect_remote_events(self.remote_api, self.config.api): - raise ha.HomeAssistantError(( + raise HomeAssistantError(( 'Could not setup event forwarding from api {} to ' 'local api {}').format(self.remote_api, self.config.api)) @@ -293,7 +294,7 @@ def validate_api(api): else: return APIStatus.UNKNOWN - except ha.HomeAssistantError: + except HomeAssistantError: return APIStatus.CANNOT_CONNECT @@ -318,7 +319,7 @@ def connect_remote_events(from_api, to_api): return False - except ha.HomeAssistantError: + except HomeAssistantError: _LOGGER.exception("Error setting up event forwarding") return False @@ -342,7 +343,7 @@ def disconnect_remote_events(from_api, to_api): return False - except ha.HomeAssistantError: + except HomeAssistantError: _LOGGER.exception("Error removing an event forwarder") return False @@ -354,7 +355,7 @@ def get_event_listeners(api): return req.json() if req.status_code == 200 else {} - except (ha.HomeAssistantError, ValueError): + except (HomeAssistantError, ValueError): # ValueError if req.json() can't parse the json _LOGGER.exception("Unexpected result retrieving event listeners") @@ -371,7 +372,7 @@ def fire_event(api, event_type, data=None): _LOGGER.error("Error firing event: %d - %d", req.status_code, req.text) - except ha.HomeAssistantError: + except HomeAssistantError: _LOGGER.exception("Error firing event") @@ -387,7 +388,7 @@ def get_state(api, entity_id): return ha.State.from_dict(req.json()) \ if req.status_code == 200 else None - except (ha.HomeAssistantError, ValueError): + except (HomeAssistantError, ValueError): # ValueError if req.json() can't parse the json _LOGGER.exception("Error fetching state") @@ -404,7 +405,7 @@ def get_states(api): return [ha.State.from_dict(item) for item in req.json()] - except (ha.HomeAssistantError, ValueError, AttributeError): + except (HomeAssistantError, ValueError, AttributeError): # ValueError if req.json() can't parse the json _LOGGER.exception("Error fetching states") @@ -434,7 +435,7 @@ def set_state(api, entity_id, new_state, attributes=None): else: return True - except ha.HomeAssistantError: + except HomeAssistantError: _LOGGER.exception("Error setting state") return False @@ -457,7 +458,7 @@ def get_services(api): return req.json() if req.status_code == 200 else {} - except (ha.HomeAssistantError, ValueError): + except (HomeAssistantError, ValueError): # ValueError if req.json() can't parse the json _LOGGER.exception("Got unexpected services result") @@ -475,5 +476,5 @@ def call_service(api, domain, service, service_data=None): _LOGGER.error("Error calling service: %d - %s", req.status_code, req.text) - except ha.HomeAssistantError: + except HomeAssistantError: _LOGGER.exception("Error calling service") From bfa3900e6a3027d889916bf28a5accb265f16887 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 22:44:59 -0400 Subject: [PATCH 020/190] Updated core config directory tests --- tests/test_core.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/tests/test_core.py b/tests/test_core.py index 6e7b52795b2..1aab679805a 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -16,6 +16,8 @@ from datetime import datetime import pytz import homeassistant.core as ha +from homeassistant.exceptions import ( + HomeAssistantError, InvalidEntityFormatError) import homeassistant.util.dt as dt_util from homeassistant.helpers.event import track_state_change from homeassistant.const import ( @@ -41,7 +43,7 @@ class TestHomeAssistant(unittest.TestCase): """ Stop down stuff we started. """ try: self.hass.stop() - except ha.HomeAssistantError: + except HomeAssistantError: # Already stopped after the block till stopped test pass @@ -250,7 +252,7 @@ class TestState(unittest.TestCase): def test_init(self): """ Test state.init """ self.assertRaises( - ha.InvalidEntityFormatError, ha.State, + InvalidEntityFormatError, ha.State, 'invalid_entity_format', 'test_state') def test_domain(self): @@ -489,18 +491,24 @@ class TestConfig(unittest.TestCase): def test_config_dir_set_correct(self): """ Test config dir set correct. """ - self.assertEqual(os.path.join(os.getcwd(), "config"), + data_dir = os.getenv('APPDATA') if os.name == "nt" \ + else os.path.expanduser('~') + self.assertEqual(os.path.join(data_dir, ".homeassistant"), self.config.config_dir) def test_path_with_file(self): """ Test get_config_path method. """ - self.assertEqual(os.path.join(os.getcwd(), "config", "test.conf"), + data_dir = os.getenv('APPDATA') if os.name == "nt" \ + else os.path.expanduser('~') + self.assertEqual(os.path.join(data_dir, ".homeassistant", "test.conf"), self.config.path("test.conf")) def test_path_with_dir_and_file(self): """ Test get_config_path method. """ + data_dir = os.getenv('APPDATA') if os.name == "nt" \ + else os.path.expanduser('~') self.assertEqual( - os.path.join(os.getcwd(), "config", "dir", "test.conf"), + os.path.join(data_dir, ".homeassistant", "dir", "test.conf"), self.config.path("dir", "test.conf")) def test_temperature_not_convert_if_no_preference(self): From b750457afa8d7b9c00fe428d90f9c586961fa37e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Aug 2015 20:11:27 -0700 Subject: [PATCH 021/190] Bugfixes frontend --- homeassistant/components/frontend/version.py | 2 +- .../frontend/www_static/frontend.html | 24 ++++++++++-------- .../www_static/home-assistant-polymer | 2 +- .../components/frontend/www_static/splash.png | Bin 11636 -> 51901 bytes 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index defce54a73a..6eea0024c30 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,2 +1,2 @@ """ DO NOT MODIFY. Auto-generated by build_frontend script """ -VERSION = "25d26e3bbcae0f4493f787a5673a84fe" +VERSION = "441ca74ed89c1db053bc2f55d57a48c6" diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 82b0dba526a..06f43dec560 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -3549,7 +3549,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN color: white; border-radius: 1em; padding: 4px 8px; - font-weight: 400; + font-weight: 500; text-transform: uppercase; overflow: hidden; text-overflow: ellipsis; @@ -3566,7 +3566,9 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN iron-image { border-radius: 50%; - } \ No newline at end of file +console.group&&(console.groupCollapsed("Dispatch: %s",t),console.group("payload"),console.debug(e),console.groupEnd())},e.dispatchError=function(t){console.group&&(console.debug("Dispatch error: "+t),console.groupEnd())},e.storeHandled=function(t,e,n){console.group&&e!==n&&console.debug("Store "+t+" handled action")},e.dispatchEnd=function(t){console.group&&(console.debug("Dispatch done, new state: ",t.toJS()),console.groupEnd())}},function(t,e,n){function r(t,e){this.__prevState=t,this.__evaluator=e,this.__prevValues=i.Map(),this.__observers=[]}var i=n(2),o=n(7),u=n(8);Object.defineProperty(r.prototype,"notifyObservers",{writable:!0,configurable:!0,value:function(t){if(this.__observers.length>0){var e=i.Map();this.__observers.forEach(function(n){var r,i=n.getter,a=o(i),s=this.__prevState;this.__prevValues.has(a)?r=this.__prevValues.get(a):(r=this.__evaluator.evaluate(s,i),this.__prevValues=this.__prevValues.set(a,r));var c=this.__evaluator.evaluate(t,i);u(r,c)||(n.handler.call(null,c),e=e.set(a,c))}.bind(this)),this.__prevValues=e}this.__prevState=t}}),Object.defineProperty(r.prototype,"onChange",{writable:!0,configurable:!0,value:function(t,e){var n={getter:t,handler:e};return this.__observers.push(n),function(){var t=this.__observers.indexOf(n);t>-1&&this.__observers.splice(t,1)}.bind(this)}}),Object.defineProperty(r.prototype,"reset",{writable:!0,configurable:!0,value:function(t){this.__prevState=t,this.__prevValues=i.Map(),this.__observers=[]}}),t.exports=r},function(t,e,n){var r=n(2);t.exports=function(t,e){if(t.hasOwnProperty("__hashCode"))return t.__hashCode;var n=r.fromJS(t).hashCode();return e||(Object.defineProperty(t,"__hashCode",{enumerable:!1,configurable:!1,writable:!1,value:n}),Object.freeze(t)),n}},function(t,e,n){var r=n(2);t.exports=function(t,e){return r.is(t,e)}},function(t,e,n){function r(t){return s(t)&&a(t[t.length-1])}function i(t){return t[t.length-1]}function o(t){return t.slice(0,t.length-1)}function u(t){if(!c(t))throw new Error("Cannot create Getter from KeyPath: "+t);return[t,l]}var a=n(3).isFunction,s=n(3).isArray,c=n(10).isKeyPath,l=function(t){return t};t.exports={isGetter:r,getComputeFn:i,getDeps:o,fromKeyPath:u}},function(t,e,n){var r=n(3).isArray,i=n(3).isFunction;e.isKeyPath=function(t){return r(t)&&!i(t[t.length-1])}},function(t,e,n){function r(){this.__cachedGetters=i.Map({})}var i=n(2),o=n(1).toImmutable,u=n(7),a=n(8),s=n(9).getComputeFn,c=n(9).getDeps,l=n(10).isKeyPath,f=n(9).isGetter,d=!1;Object.defineProperty(r.prototype,"evaluate",{writable:!0,configurable:!0,value:function(t,e){if(l(e))return t.getIn(e);if(!f(e))throw new Error("evaluate must be passed a keyPath or Getter");var n=u(e);if(this.__isCached(t,e))return this.__cachedGetters.getIn([n,"value"]);var r=c(e).map(function(e){return this.evaluate(t,e)}.bind(this));if(this.__hasStaleValue(t,e)){var i=this.__cachedGetters.getIn([n,"args"]);if(a(i,o(r))){var p=this.__cachedGetters.getIn([n,"value"]);return this.__cacheValue(t,e,i,p),p}}if(d===!0)throw d=!1,new Error("Evaluate may not be called within a Getters computeFn");var h;d=!0;try{h=s(e).apply(null,r),d=!1}catch(v){throw d=!1,v}return this.__cacheValue(t,e,r,h),h}}),Object.defineProperty(r.prototype,"__hasStaleValue",{writable:!0,configurable:!0,value:function(t,e){var n=u(e),r=this.__cachedGetters;return r.has(n)&&r.getIn([n,"stateHashCode"])!==t.hashCode()}}),Object.defineProperty(r.prototype,"__cacheValue",{writable:!0,configurable:!0,value:function(t,e,n,r){var a=u(e);this.__cachedGetters=this.__cachedGetters.set(a,i.Map({value:r,args:o(n),stateHashCode:t.hashCode()}))}}),Object.defineProperty(r.prototype,"__isCached",{writable:!0,configurable:!0,value:function(t,e){var n=u(e);return this.__cachedGetters.hasIn([n,"value"])&&this.__cachedGetters.getIn([n,"stateHashCode"])===t.hashCode()}}),Object.defineProperty(r.prototype,"untrack",{writable:!0,configurable:!0,value:function(t){}}),Object.defineProperty(r.prototype,"reset",{writable:!0,configurable:!0,value:function(){this.__cachedGetters=i.Map({})}}),t.exports=r},function(t,e,n){function r(t,e){var n={};return i(e,function(e,r){n[r]=t.evaluate(e)}),n}var i=n(3).each;t.exports=function(t){return{getInitialState:function(){return r(t,this.getDataBindings())},componentDidMount:function(){var e=this;e.__unwatchFns=[],i(this.getDataBindings(),function(n,r){var i=t.observe(n,function(t){var n={};n[r]=t,e.setState(n)});e.__unwatchFns.push(i)})},componentWillUnmount:function(){for(;this.__unwatchFns.length;)this.__unwatchFns.shift()()}}}},function(t,e,n){function r(t){return this instanceof r?(this.__handlers=o({}),t&&u(this,t),void this.initialize()):new r(t)}function i(t){return t instanceof r}var o=n(2).Map,u=n(3).extend,a=n(1).toJS,s=n(1).toImmutable;Object.defineProperty(r.prototype,"initialize",{writable:!0,configurable:!0,value:function(){}}),Object.defineProperty(r.prototype,"getInitialState",{writable:!0,configurable:!0,value:function(){return o()}}),Object.defineProperty(r.prototype,"handle",{writable:!0,configurable:!0,value:function(t,e,n){var r=this.__handlers.get(e);return"function"==typeof r?r.call(this,t,n,e):t}}),Object.defineProperty(r.prototype,"handleReset",{writable:!0,configurable:!0,value:function(t){return this.getInitialState()}}),Object.defineProperty(r.prototype,"on",{writable:!0,configurable:!0,value:function(t,e){this.__handlers=this.__handlers.set(t,e)}}),Object.defineProperty(r.prototype,"serialize",{writable:!0,configurable:!0,value:function(t){return a(t)}}),Object.defineProperty(r.prototype,"deserialize",{writable:!0,configurable:!0,value:function(t){return s(t)}}),t.exports=r,t.exports.isStore=i}])})},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(175),u=r(o);e["default"]=u["default"](i.reactor),t.exports=e["default"]},function(t,e){"use strict";var n=function(t){var e,n={};if(!(t instanceof Object)||Array.isArray(t))throw new Error("keyMirror(...): Argument must be an object.");for(e in t)t.hasOwnProperty(e)&&(n[e]=e);return n};t.exports=n},function(t,e){"use strict";function n(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}t.exports=n},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(184),o=r(i);e.callApi=o["default"]},function(t,e,n){"use strict";function r(t){return i(t)?t:Object(t)}var i=n(6);t.exports=r},function(t,e,n){"use strict";var r=n(20),i=n(12),o=n(13),u="[object Array]",a=Object.prototype,s=a.toString,c=r(Array,"isArray"),l=c||function(t){return o(t)&&i(t.length)&&s.call(t)==u};t.exports=l},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(200),u=i(o),a=n(201),s=r(a),c=u["default"];e.actions=c;var l=s;e.getters=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){t.registerStores({restApiCache:l["default"]})}function o(t){return[["restApiCache",t.entity],function(t){return!!t}]}function u(t){return[["restApiCache",t.entity],function(t){return t||s.toImmutable({})}]}function a(t){return function(e){return["restApiCache",t.entity,e]}}Object.defineProperty(e,"__esModule",{value:!0}),e.register=i,e.createHasDataGetter=o,e.createEntityMapGetter=u,e.createByIdGetter=a;var s=n(3),c=n(224),l=r(c),f=n(223),d=r(f);e.createApiActions=d["default"]},function(t,e){"use strict";function n(t){return"number"==typeof t&&t>-1&&t%1==0&&r>=t}var r=9007199254740991;t.exports=n},function(t,e){"use strict";function n(t){return!!t&&"object"==typeof t}t.exports=n},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"partial-base",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1}},computeMenuButtonClass:function(t,e){return!t&&e?"invisible":""},toggleMenu:function(){this.fire("open-menu")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),o=r(i);e["default"]=o["default"]({ENTITY_HISTORY_DATE_SELECTED:null,ENTITY_HISTORY_FETCH_START:null,ENTITY_HISTORY_FETCH_ERROR:null,ENTITY_HISTORY_FETCH_SUCCESS:null,RECENT_ENTITY_HISTORY_FETCH_START:null,RECENT_ENTITY_HISTORY_FETCH_ERROR:null,RECENT_ENTITY_HISTORY_FETCH_SUCCESS:null,LOG_OUT:null}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return null!=t&&o(i(t))}var i=n(49),o=n(12);t.exports=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(137),n(58),e["default"]=new o["default"]({is:"state-info",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),o=r(i);e["default"]=o["default"]({LOGBOOK_DATE_SELECTED:null,LOGBOOK_ENTRIES_FETCH_START:null,LOGBOOK_ENTRIES_FETCH_ERROR:null,LOGBOOK_ENTRIES_FETCH_SUCCESS:null}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(225),u=i(o),a=n(79),s=r(a),c=u["default"];e.actions=c;var l=s;e.getters=l},function(t,e,n){"use strict";function r(t,e){var n=null==t?void 0:t[e];return i(n)?n:void 0}var i=n(126);t.exports=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),o=r(i);e["default"]=o["default"]({VALIDATING_AUTH_TOKEN:null,VALID_AUTH_TOKEN:null,INVALID_AUTH_TOKEN:null,LOG_OUT:null}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({authAttempt:a["default"],authCurrent:c["default"],rememberAuth:f["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(187),a=i(u),s=n(188),c=i(s),l=n(189),f=i(l),d=n(185),p=r(d),h=n(186),v=r(h),_=p;e.actions=_;var y=v;e.getters=y},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var u,a=t[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!e||n.length!==e);r=!0);}catch(s){i=!0,o=s}finally{try{!r&&a["return"]&&a["return"]()}finally{if(i)throw o}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),a=function(){function t(t,e){for(var n=0;n-1&&t%1==0&&e>t}var r=/^\d+$/,i=9007199254740991;t.exports=n},function(t,e,n){"use strict";function r(t,e,n){if(!u(n))return!1;var r=typeof e;if("number"==r?i(n)&&o(e,n.length):"string"==r&&e in n){var a=n[e];return t===t?t===a:a!==a}return!1}var i=n(16),o=n(25),u=n(6);t.exports=r},function(t,e,n){"use strict";function r(t){return o(t)&&i(t)&&a.call(t,"callee")&&!s.call(t,"callee")}var i=n(16),o=n(13),u=Object.prototype,a=u.hasOwnProperty,s=u.propertyIsEnumerable;t.exports=r},function(t,e,n){"use strict";var r=n(20),i=n(16),o=n(6),u=n(123),a=r(Object,"keys"),s=a?function(t){var e=null==t?void 0:t.constructor;return"function"==typeof e&&e.prototype===t||"function"!=typeof t&&i(t)?u(t):o(t)?a(t):[]}:u;t.exports=s},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=n(62),a=r(u);e["default"]=new o["default"]({is:"domain-icon",properties:{domain:{type:String,value:""},state:{type:String,value:""}},computeIcon:function(t,e){return a["default"](t,e)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"loading-box"}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=n(176),a=r(u);n(32),n(60),n(174),n(171),n(173),n(172),e["default"]=new o["default"]({is:"state-card-content",properties:{stateObj:{type:Object,observer:"stateObjChanged"}},stateObjChanged:function(t,e){var n=o["default"].dom(this);if(!t)return void(n.lastChild&&n.removeChild(n.lastChild));var r=a["default"](t);if(e&&a["default"](e)===r)n.lastChild.stateObj=t;else{n.lastChild&&n.removeChild(n.lastChild);var i=document.createElement("state-card-"+r);i.stateObj=t,n.appendChild(i)}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17),e["default"]=new o["default"]({is:"state-card-display",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e){"use strict";function n(t,e){return t?e.map(function(e){return e in t.attributes?"has-"+e:""}).join(" "):""}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e,n){function r(){y&&clearTimeout(y),p&&clearTimeout(p),g=0,p=y=m=void 0}function s(e,n){n&&clearTimeout(n),p=y=m=void 0,e&&(g=o(),h=t.apply(_,d),y||p||(d=_=void 0))}function c(){var t=e-(o()-v);0>=t||t>e?s(m,p):y=setTimeout(c,t)}function l(){s(O,y)}function f(){if(d=arguments,v=o(),_=this,m=O&&(y||!w),b===!1)var n=w&&!y;else{p||w||(g=v);var r=b-(v-g),i=0>=r||r>b;i?(p&&(p=clearTimeout(p)),g=v,h=t.apply(_,d)):p||(p=setTimeout(l,r))}return i&&y?y=clearTimeout(y):y||e===b||(y=setTimeout(c,e)),n&&(i=!0,h=t.apply(_,d)),!i||y||p||(d=_=void 0),h}var d,p,h,v,_,y,m,g=0,b=!1,O=!0;if("function"!=typeof t)throw new TypeError(u);if(e=0>e?0:+e||0,n===!0){var w=!0;O=!1}else i(n)&&(w=!!n.leading,b="maxWait"in n&&a(+n.maxWait||0,e),O="trailing"in n?!!n.trailing:O);return f.cancel=r,f}var i=n(68),o=n(180),u="Expected a function",a=Math.max;t.exports=r},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),o=r(i);e["default"]=o["default"]({SERVER_CONFIG_LOADED:null,COMPONENT_LOADED:null,LOG_OUT:null}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({serverComponent:a["default"],serverConfig:c["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(192),a=i(u),s=n(193),c=i(s),l=n(190),f=r(l),d=n(191),p=r(d),h=f;e.actions=h;var v=p;e.getters=v},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var o=n(202),u=i(o),a=n(203),s=r(a),c=u["default"];e.actions=c;var l=s;e.getters=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),o=r(i);e["default"]=o["default"]({NAVIGATE:null,SHOW_SIDEBAR:null,LOG_OUT:null}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({notifications:a["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(220),a=i(u),s=n(218),c=r(s),l=n(219),f=r(l),d=c;e.actions=d;var p=f;e.getters=p},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({streamStatus:a["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(232),a=i(u),s=n(228),c=r(s),l=n(229),f=r(l),d=c;e.actions=d;var p=f;e.getters=p},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(5),o=r(i);e["default"]=o["default"]({API_FETCH_ALL_START:null,API_FETCH_ALL_SUCCESS:null,API_FETCH_ALL_FAIL:null,SYNC_SCHEDULED:null,SYNC_SCHEDULE_CANCELLED:null}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({isFetchingData:a["default"],isSyncScheduled:c["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(234),a=i(u),s=n(235),c=i(s),l=n(233),f=r(l),d=n(82),p=r(d),h=f;e.actions=h;var v=p;e.getters=v},function(t,e){"use strict";function n(t){return t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate()}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e){"use strict";function n(t){var e=t.split(" "),n=r(e,2),i=n[0],o=n[1],u=i.split(":"),a=r(u,3),s=a[0],c=a[1],l=a[2],f=o.split("-"),d=r(f,3),p=d[0],h=d[1],v=d[2];return new Date(Date.UTC(v,parseInt(h,10)-1,p,s,c,l))}Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){var n=[],r=!0,i=!1,o=void 0;try{for(var u,a=t[Symbol.iterator]();!(r=(u=a.next()).done)&&(n.push(u.value),!e||n.length!==e);r=!0);}catch(s){i=!0,o=s}finally{try{!r&&a["return"]&&a["return"]()}finally{if(i)throw o}}return n}return function(e,n){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,n);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e,n){if(null!=t){void 0!==n&&n in i(t)&&(e=[n]);for(var r=0,o=e.length;null!=t&&o>r;)t=t[e[r++]];return r&&r==o?t:void 0}}var i=n(8);t.exports=r},function(t,e,n){"use strict";function r(t,e,n,a,s,c){return t===e?!0:null==t||null==e||!o(t)&&!u(e)?t!==t&&e!==e:i(t,e,r,n,a,s,c)}var i=n(102),o=n(6),u=n(13);t.exports=r},function(t,e,n){"use strict";function r(t,e){var n=-1,r=o(t)?Array(t.length):[];return i(t,function(t,i,o){r[++n]=e(t,i,o)}),r}var i=n(97),o=n(16);t.exports=r},function(t,e){"use strict";function n(t){return function(e){return null==e?void 0:e[t]}}t.exports=n},function(t,e,n){"use strict";var r=n(48),i=r("length");t.exports=i},function(t,e,n){"use strict";function r(t,e){var n=typeof t;if("string"==n&&a.test(t)||"number"==n)return!0;if(i(t))return!1;var r=!u.test(t);return r||null!=e&&t in o(e)}var i=n(9),o=n(8),u=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\n\\]|\\.)*?\1)\]/,a=/^\w*$/;t.exports=r},function(t,e,n){"use strict";function r(t){return t===t&&!i(t)}var i=n(6);t.exports=r},function(t,e,n){"use strict";function r(t){if(o(t))return t;var e=[];return i(t).replace(u,function(t,n,r,i){e.push(r?i.replace(a,"$1"):n||t)}),e}var i=n(109),o=n(9),u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\n\\]|\\.)*?)\2)\]/g,a=/\\(\\)?/g;t.exports=r},function(t,e){"use strict";function n(t){return t}t.exports=n},function(t,e,n){"use strict";function r(t){return u(t)?i(t):o(t)}var i=n(48),o=n(106),u=n(50);t.exports=r},function(t,e,n){(function(t){"use strict";!function(e,n){t.exports=n()}(void 0,function(){function e(){return Ln.apply(null,arguments)}function n(t){Ln=t}function r(t){return"[object Array]"===Object.prototype.toString.call(t)}function i(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function o(t,e){var n,r=[];for(n=0;n0)for(n in Rn)r=Rn[n],i=e[r],"undefined"!=typeof i&&(t[r]=i);return t}function h(t){p(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),zn===!1&&(zn=!0,e.updateOffset(this),zn=!1)}function v(t){return t instanceof h||null!=t&&null!=t._isAMomentObject}function _(t){return 0>t?Math.ceil(t):Math.floor(t)}function y(t){var e=+t,n=0;return 0!==e&&isFinite(e)&&(n=_(e)),n}function m(t,e,n){var r,i=Math.min(t.length,e.length),o=Math.abs(t.length-e.length),u=0;for(r=0;i>r;r++)(n&&t[r]!==e[r]||!n&&y(t[r])!==y(e[r]))&&u++;return u+o}function g(){}function b(t){return t?t.toLowerCase().replace("_","-"):t}function O(t){for(var e,n,r,i,o=0;o0;){if(r=w(i.slice(0,e).join("-")))return r;if(n&&n.length>=e&&m(i,n,!0)>=e-1)break;e--}o++}return null}function w(e){var n=null;if(!Hn[e]&&"undefined"!=typeof t&&t&&t.exports)try{n=Nn._abbr,!function(){var t=new Error('Cannot find module "./locale"');throw t.code="MODULE_NOT_FOUND",t}(),S(n)}catch(r){}return Hn[e]}function S(t,e){var n;return t&&(n="undefined"==typeof e?T(t):M(t,e),n&&(Nn=n)),Nn._abbr}function M(t,e){return null!==e?(e.abbr=t,Hn[t]=Hn[t]||new g,Hn[t].set(e),S(t),Hn[t]):(delete Hn[t],null)}function T(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return Nn;if(!r(t)){if(e=w(t))return e;t=[t]}return O(t)}function j(t,e){var n=t.toLowerCase();Yn[n]=Yn[n+"s"]=Yn[e]=t}function E(t){return"string"==typeof t?Yn[t]||Yn[t.toLowerCase()]:void 0}function I(t){var e,n,r={};for(n in t)u(t,n)&&(e=E(n),e&&(r[e]=t[n]));return r}function P(t,n){return function(r){return null!=r?(C(this,t,r),e.updateOffset(this,n),this):D(this,t)}}function D(t,e){return t._d["get"+(t._isUTC?"UTC":"")+e]()}function C(t,e,n){return t._d["set"+(t._isUTC?"UTC":"")+e](n)}function A(t,e){var n;if("object"==typeof t)for(n in t)this.set(n,t[n]);else if(t=E(t),"function"==typeof this[t])return this[t](e);return this}function x(t,e,n){var r=""+Math.abs(t),i=e-r.length,o=t>=0;return(o?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}function k(t,e,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),t&&(Bn[t]=i),e&&(Bn[e[0]]=function(){return x(i.apply(this,arguments),e[1],e[2])}),n&&(Bn[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),t)})}function L(t){return t.match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"")}function N(t){var e,n,r=t.match(Gn);for(e=0,n=r.length;n>e;e++)Bn[r[e]]?r[e]=Bn[r[e]]:r[e]=L(r[e]);return function(i){var o="";for(e=0;n>e;e++)o+=r[e]instanceof Function?r[e].call(i,t):r[e];return o}}function R(t,e){return t.isValid()?(e=z(e,t.localeData()),Fn[e]=Fn[e]||N(e),Fn[e](t)):t.localeData().invalidDate()}function z(t,e){function n(t){return e.longDateFormat(t)||t}var r=5;for(Un.lastIndex=0;r>=0&&Un.test(t);)t=t.replace(Un,n),Un.lastIndex=0,r-=1;return t}function H(t){return"function"==typeof t&&"[object Function]"===Object.prototype.toString.call(t)}function Y(t,e,n){or[t]=H(e)?e:function(t){return t&&n?n:e}}function G(t,e){return u(or,t)?or[t](e._strict,e._locale):new RegExp(U(t))}function U(t){return t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,n,r,i){return e||n||r||i}).replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function F(t,e){var n,r=e;for("string"==typeof t&&(t=[t]),"number"==typeof e&&(r=function(t,n){n[e]=y(t)}),n=0;nr;r++){if(i=s([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(o="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(o.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[r].test(t))return r;if(n&&"MMM"===e&&this._shortMonthsParse[r].test(t))return r;if(!n&&this._monthsParse[r].test(t))return r}}function $(t,e){var n;return"string"==typeof e&&(e=t.localeData().monthsParse(e),"number"!=typeof e)?t:(n=Math.min(t.date(),q(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,n),t)}function Z(t){return null!=t?($(this,t),e.updateOffset(this,!0),this):D(this,"Month")}function X(){return q(this.year(),this.month())}function Q(t){var e,n=t._a;return n&&-2===l(t).overflow&&(e=n[sr]<0||n[sr]>11?sr:n[cr]<1||n[cr]>q(n[ar],n[sr])?cr:n[lr]<0||n[lr]>24||24===n[lr]&&(0!==n[fr]||0!==n[dr]||0!==n[pr])?lr:n[fr]<0||n[fr]>59?fr:n[dr]<0||n[dr]>59?dr:n[pr]<0||n[pr]>999?pr:-1,l(t)._overflowDayOfYear&&(ar>e||e>cr)&&(e=cr),l(t).overflow=e),t}function tt(t){e.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function et(t,e){var n=!0;return a(function(){return n&&(tt(t+"\n"+(new Error).stack),n=!1),e.apply(this,arguments)},e)}function nt(t,e){_r[t]||(tt(e),_r[t]=!0)}function rt(t){var e,n,r=t._i,i=yr.exec(r);if(i){for(l(t).iso=!0,e=0,n=mr.length;n>e;e++)if(mr[e][1].exec(r)){t._f=mr[e][0];break}for(e=0,n=gr.length;n>e;e++)if(gr[e][1].exec(r)){t._f+=(i[6]||" ")+gr[e][0];break}r.match(nr)&&(t._f+="Z"),wt(t)}else t._isValid=!1}function it(t){var n=br.exec(t._i);return null!==n?void(t._d=new Date(+n[1])):(rt(t),void(t._isValid===!1&&(delete t._isValid,e.createFromInputFallback(t))))}function ot(t,e,n,r,i,o,u){var a=new Date(t,e,n,r,i,o,u);return 1970>t&&a.setFullYear(t),a}function ut(t){var e=new Date(Date.UTC.apply(null,arguments));return 1970>t&&e.setUTCFullYear(t),e}function at(t){return st(t)?366:365}function st(t){return t%4===0&&t%100!==0||t%400===0}function ct(){return st(this.year())}function lt(t,e,n){var r,i=n-e,o=n-t.day();return o>i&&(o-=7),i-7>o&&(o+=7),r=Dt(t).add(o,"d"),{week:Math.ceil(r.dayOfYear()/7),year:r.year()}}function ft(t){return lt(t,this._week.dow,this._week.doy).week}function dt(){return this._week.dow}function pt(){return this._week.doy}function ht(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")}function vt(t){var e=lt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")}function _t(t,e,n,r,i){var o,u=6+i-r,a=ut(t,0,1+u),s=a.getUTCDay();return i>s&&(s+=7),n=null!=n?1*n:i,o=1+u+7*(e-1)-s+n,{year:o>0?t:t-1,dayOfYear:o>0?o:at(t-1)+o}}function yt(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")}function mt(t,e,n){return null!=t?t:null!=e?e:n}function gt(t){var e=new Date;return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}function bt(t){var e,n,r,i,o=[];if(!t._d){for(r=gt(t),t._w&&null==t._a[cr]&&null==t._a[sr]&&Ot(t),t._dayOfYear&&(i=mt(t._a[ar],r[ar]),t._dayOfYear>at(i)&&(l(t)._overflowDayOfYear=!0),n=ut(i,0,t._dayOfYear),t._a[sr]=n.getUTCMonth(),t._a[cr]=n.getUTCDate()),e=0;3>e&&null==t._a[e];++e)t._a[e]=o[e]=r[e];for(;7>e;e++)t._a[e]=o[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[lr]&&0===t._a[fr]&&0===t._a[dr]&&0===t._a[pr]&&(t._nextDay=!0,t._a[lr]=0),t._d=(t._useUTC?ut:ot).apply(null,o),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm), +t._nextDay&&(t._a[lr]=24)}}function Ot(t){var e,n,r,i,o,u,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(o=1,u=4,n=mt(e.GG,t._a[ar],lt(Dt(),1,4).year),r=mt(e.W,1),i=mt(e.E,1)):(o=t._locale._week.dow,u=t._locale._week.doy,n=mt(e.gg,t._a[ar],lt(Dt(),o,u).year),r=mt(e.w,1),null!=e.d?(i=e.d,o>i&&++r):i=null!=e.e?e.e+o:o),a=_t(n,r,i,u,o),t._a[ar]=a.year,t._dayOfYear=a.dayOfYear}function wt(t){if(t._f===e.ISO_8601)return void rt(t);t._a=[],l(t).empty=!0;var n,r,i,o,u,a=""+t._i,s=a.length,c=0;for(i=z(t._f,t._locale).match(Gn)||[],n=0;n0&&l(t).unusedInput.push(u),a=a.slice(a.indexOf(r)+r.length),c+=r.length),Bn[o]?(r?l(t).empty=!1:l(t).unusedTokens.push(o),V(o,r,t)):t._strict&&!r&&l(t).unusedTokens.push(o);l(t).charsLeftOver=s-c,a.length>0&&l(t).unusedInput.push(a),l(t).bigHour===!0&&t._a[lr]<=12&&t._a[lr]>0&&(l(t).bigHour=void 0),t._a[lr]=St(t._locale,t._a[lr],t._meridiem),bt(t),Q(t)}function St(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?(r=t.isPM(n),r&&12>e&&(e+=12),r||12!==e||(e=0),e):e}function Mt(t){var e,n,r,i,o;if(0===t._f.length)return l(t).invalidFormat=!0,void(t._d=new Date(NaN));for(i=0;io)&&(r=o,n=e));a(t,n||e)}function Tt(t){if(!t._d){var e=I(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],bt(t)}}function jt(t){var e=new h(Q(Et(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function Et(t){var e=t._i,n=t._f;return t._locale=t._locale||T(t._l),null===e||void 0===n&&""===e?d({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),v(e)?new h(Q(e)):(r(n)?Mt(t):n?wt(t):i(e)?t._d=e:It(t),t))}function It(t){var n=t._i;void 0===n?t._d=new Date:i(n)?t._d=new Date(+n):"string"==typeof n?it(t):r(n)?(t._a=o(n.slice(0),function(t){return parseInt(t,10)}),bt(t)):"object"==typeof n?Tt(t):"number"==typeof n?t._d=new Date(n):e.createFromInputFallback(t)}function Pt(t,e,n,r,i){var o={};return"boolean"==typeof n&&(r=n,n=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=i,o._l=n,o._i=t,o._f=e,o._strict=r,jt(o)}function Dt(t,e,n,r){return Pt(t,e,n,r,!1)}function Ct(t,e){var n,i;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Dt();for(n=e[0],i=1;it&&(t=-t,n="-"),n+x(~~(t/60),2)+e+x(~~t%60,2)})}function Rt(t){var e=(t||"").match(nr)||[],n=e[e.length-1]||[],r=(n+"").match(Tr)||["-",0,0],i=+(60*r[1])+y(r[2]);return"+"===r[0]?i:-i}function zt(t,n){var r,o;return n._isUTC?(r=n.clone(),o=(v(t)||i(t)?+t:+Dt(t))-+r,r._d.setTime(+r._d+o),e.updateOffset(r,!1),r):Dt(t).local()}function Ht(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Yt(t,n){var r,i=this._offset||0;return null!=t?("string"==typeof t&&(t=Rt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&n&&(r=Ht(this)),this._offset=t,this._isUTC=!0,null!=r&&this.add(r,"m"),i!==t&&(!n||this._changeInProgress?ne(this,Zt(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?i:Ht(this)}function Gt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Ut(t){return this.utcOffset(0,t)}function Ft(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ht(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Rt(this._i)),this}function Vt(t){return t=t?Dt(t).utcOffset():0,(this.utcOffset()-t)%60===0}function qt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Wt(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var t={};if(p(t,this),t=Et(t),t._a){var e=t._isUTC?s(t._a):Dt(t._a);this._isDSTShifted=this.isValid()&&m(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Kt(){return!this._isUTC}function Jt(){return this._isUTC}function $t(){return this._isUTC&&0===this._offset}function Zt(t,e){var n,r,i,o=t,a=null;return Lt(t)?o={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(o={},e?o[e]=t:o.milliseconds=t):(a=jr.exec(t))?(n="-"===a[1]?-1:1,o={y:0,d:y(a[cr])*n,h:y(a[lr])*n,m:y(a[fr])*n,s:y(a[dr])*n,ms:y(a[pr])*n}):(a=Er.exec(t))?(n="-"===a[1]?-1:1,o={y:Xt(a[2],n),M:Xt(a[3],n),d:Xt(a[4],n),h:Xt(a[5],n),m:Xt(a[6],n),s:Xt(a[7],n),w:Xt(a[8],n)}):null==o?o={}:"object"==typeof o&&("from"in o||"to"in o)&&(i=te(Dt(o.from),Dt(o.to)),o={},o.ms=i.milliseconds,o.M=i.months),r=new kt(o),Lt(t)&&u(t,"_locale")&&(r._locale=t._locale),r}function Xt(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Qt(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function te(t,e){var n;return e=zt(e,t),t.isBefore(e)?n=Qt(t,e):(n=Qt(e,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n}function ee(t,e){return function(n,r){var i,o;return null===r||isNaN(+r)||(nt(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),o=n,n=r,r=o),n="string"==typeof n?+n:n,i=Zt(n,r),ne(this,i,t),this}}function ne(t,n,r,i){var o=n._milliseconds,u=n._days,a=n._months;i=null==i?!0:i,o&&t._d.setTime(+t._d+o*r),u&&C(t,"Date",D(t,"Date")+u*r),a&&$(t,D(t,"Month")+a*r),i&&e.updateOffset(t,u||a)}function re(t,e){var n=t||Dt(),r=zt(n,this).startOf("day"),i=this.diff(r,"days",!0),o=-6>i?"sameElse":-1>i?"lastWeek":0>i?"lastDay":1>i?"sameDay":2>i?"nextDay":7>i?"nextWeek":"sameElse";return this.format(e&&e[o]||this.localeData().calendar(o,this,Dt(n)))}function ie(){return new h(this)}function oe(t,e){var n;return e=E("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=v(t)?t:Dt(t),+this>+t):(n=v(t)?+t:+Dt(t),n<+this.clone().startOf(e))}function ue(t,e){var n;return e=E("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=v(t)?t:Dt(t),+t>+this):(n=v(t)?+t:+Dt(t),+this.clone().endOf(e)e-o?(n=t.clone().add(i-1,"months"),r=(e-o)/(o-n)):(n=t.clone().add(i+1,"months"),r=(e-o)/(n-o)),-(i+r)}function fe(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(n=Dt([2e3,1]).day(e),r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[e]=new RegExp(r.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Ue(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Re(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Be(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Ve(t,e){k(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qe(t,e){return e._meridiemParse}function We(t){return"p"===(t+"").toLowerCase().charAt(0)}function Ke(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}function Je(t,e){e[pr]=y(1e3*("0."+t))}function $e(){return this._isUTC?"UTC":""}function Ze(){return this._isUTC?"Coordinated Universal Time":""}function Xe(t){return Dt(1e3*t)}function Qe(){return Dt.apply(null,arguments).parseZone()}function tn(t,e,n){var r=this._calendar[t];return"function"==typeof r?r.call(e,n):r}function en(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function nn(){return this._invalidDate}function rn(t){return this._ordinal.replace("%d",t)}function on(t){return t}function un(t,e,n,r){var i=this._relativeTime[n];return"function"==typeof i?i(t,e,n,r):i.replace(/%d/i,t)}function an(t,e){var n=this._relativeTime[t>0?"future":"past"];return"function"==typeof n?n(e):n.replace(/%s/i,e)}function sn(t){var e,n;for(n in t)e=t[n],"function"==typeof e?this[n]=e:this["_"+n]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function cn(t,e,n,r){var i=T(),o=s().set(r,e);return i[n](o,t)}function ln(t,e,n,r,i){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return cn(t,e,n,i);var o,u=[];for(o=0;r>o;o++)u[o]=cn(t,o,n,i);return u}function fn(t,e){return ln(t,e,"months",12,"month")}function dn(t,e){return ln(t,e,"monthsShort",12,"month")}function pn(t,e){return ln(t,e,"weekdays",7,"day")}function hn(t,e){return ln(t,e,"weekdaysShort",7,"day")}function vn(t,e){return ln(t,e,"weekdaysMin",7,"day")}function _n(){var t=this._data;return this._milliseconds=$r(this._milliseconds),this._days=$r(this._days),this._months=$r(this._months),t.milliseconds=$r(t.milliseconds),t.seconds=$r(t.seconds),t.minutes=$r(t.minutes),t.hours=$r(t.hours),t.months=$r(t.months),t.years=$r(t.years),this}function yn(t,e,n,r){var i=Zt(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function mn(t,e){return yn(this,t,e,1)}function gn(t,e){return yn(this,t,e,-1)}function bn(t){return 0>t?Math.floor(t):Math.ceil(t)}function On(){var t,e,n,r,i,o=this._milliseconds,u=this._days,a=this._months,s=this._data;return o>=0&&u>=0&&a>=0||0>=o&&0>=u&&0>=a||(o+=864e5*bn(Sn(a)+u),u=0,a=0),s.milliseconds=o%1e3,t=_(o/1e3),s.seconds=t%60,e=_(t/60),s.minutes=e%60,n=_(e/60),s.hours=n%24,u+=_(n/24),i=_(wn(u)),a+=i,u-=bn(Sn(i)),r=_(a/12),a%=12,s.days=u,s.months=a,s.years=r,this}function wn(t){return 4800*t/146097}function Sn(t){return 146097*t/4800}function Mn(t){var e,n,r=this._milliseconds;if(t=E(t),"month"===t||"year"===t)return e=this._days+r/864e5,n=this._months+wn(e),"month"===t?n:n/12;switch(e=this._days+Math.round(Sn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}}function Tn(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*y(this._months/12)}function jn(t){return function(){return this.as(t)}}function En(t){return t=E(t),this[t+"s"]()}function In(t){return function(){return this._data[t]}}function Pn(){return _(this.days()/7)}function Dn(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}function Cn(t,e,n){var r=Zt(t).abs(),i=di(r.as("s")),o=di(r.as("m")),u=di(r.as("h")),a=di(r.as("d")),s=di(r.as("M")),c=di(r.as("y")),l=i0,l[4]=n,Dn.apply(null,l)}function An(t,e){return void 0===pi[t]?!1:void 0===e?pi[t]:(pi[t]=e,!0)}function xn(t){var e=this.localeData(),n=Cn(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}function kn(){var t,e,n,r=hi(this._milliseconds)/1e3,i=hi(this._days),o=hi(this._months);t=_(r/60),e=_(t/60),r%=60,t%=60,n=_(o/12),o%=12;var u=n,a=o,s=i,c=e,l=t,f=r,d=this.asSeconds();return d?(0>d?"-":"")+"P"+(u?u+"Y":"")+(a?a+"M":"")+(s?s+"D":"")+(c||l||f?"T":"")+(c?c+"H":"")+(l?l+"M":"")+(f?f+"S":""):"P0D"}var Ln,Nn,Rn=e.momentProperties=[],zn=!1,Hn={},Yn={},Gn=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Un=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Fn={},Bn={},Vn=/\d/,qn=/\d\d/,Wn=/\d{3}/,Kn=/\d{4}/,Jn=/[+-]?\d{6}/,$n=/\d\d?/,Zn=/\d{1,3}/,Xn=/\d{1,4}/,Qn=/[+-]?\d{1,6}/,tr=/\d+/,er=/[+-]?\d+/,nr=/Z|[+-]\d\d:?\d\d/gi,rr=/[+-]?\d+(\.\d{1,3})?/,ir=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,or={},ur={},ar=0,sr=1,cr=2,lr=3,fr=4,dr=5,pr=6;k("M",["MM",2],"Mo",function(){return this.month()+1}),k("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),k("MMMM",0,0,function(t){return this.localeData().months(this,t)}),j("month","M"),Y("M",$n),Y("MM",$n,qn),Y("MMM",ir),Y("MMMM",ir),F(["M","MM"],function(t,e){e[sr]=y(t)-1}),F(["MMM","MMMM"],function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[sr]=i:l(n).invalidMonth=t});var hr="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),vr="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),_r={};e.suppressDeprecationWarnings=!1;var yr=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mr=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],gr=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],br=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=et("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),k(0,["YY",2],0,function(){return this.year()%100}),k(0,["YYYY",4],0,"year"),k(0,["YYYYY",5],0,"year"),k(0,["YYYYYY",6,!0],0,"year"),j("year","y"),Y("Y",er),Y("YY",$n,qn),Y("YYYY",Xn,Kn),Y("YYYYY",Qn,Jn),Y("YYYYYY",Qn,Jn),F(["YYYYY","YYYYYY"],ar),F("YYYY",function(t,n){n[ar]=2===t.length?e.parseTwoDigitYear(t):y(t)}),F("YY",function(t,n){n[ar]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return y(t)+(y(t)>68?1900:2e3)};var Or=P("FullYear",!1);k("w",["ww",2],"wo","week"),k("W",["WW",2],"Wo","isoWeek"),j("week","w"),j("isoWeek","W"),Y("w",$n),Y("ww",$n,qn),Y("W",$n),Y("WW",$n,qn),B(["w","ww","W","WW"],function(t,e,n,r){e[r.substr(0,1)]=y(t)});var wr={dow:0,doy:6};k("DDD",["DDDD",3],"DDDo","dayOfYear"),j("dayOfYear","DDD"),Y("DDD",Zn),Y("DDDD",Wn),F(["DDD","DDDD"],function(t,e,n){n._dayOfYear=y(t)}),e.ISO_8601=function(){};var Sr=et("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments);return this>t?this:t}),Mr=et("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments);return t>this?this:t});Nt("Z",":"),Nt("ZZ",""),Y("Z",nr),Y("ZZ",nr),F(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Rt(t)});var Tr=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var jr=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Er=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Zt.fn=kt.prototype;var Ir=ee(1,"add"),Pr=ee(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var Dr=et("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});k(0,["gg",2],0,function(){return this.weekYear()%100}),k(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),j("weekYear","gg"),j("isoWeekYear","GG"),Y("G",er),Y("g",er),Y("GG",$n,qn),Y("gg",$n,qn),Y("GGGG",Xn,Kn),Y("gggg",Xn,Kn),Y("GGGGG",Qn,Jn),Y("ggggg",Qn,Jn),B(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,r){e[r.substr(0,2)]=y(t)}),B(["gg","GG"],function(t,n,r,i){n[i]=e.parseTwoDigitYear(t)}),k("Q",0,0,"quarter"),j("quarter","Q"),Y("Q",Vn),F("Q",function(t,e){e[sr]=3*(y(t)-1)}),k("D",["DD",2],"Do","date"),j("date","D"),Y("D",$n),Y("DD",$n,qn),Y("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),F(["D","DD"],cr),F("Do",function(t,e){e[cr]=y(t.match($n)[0],10)});var Cr=P("Date",!0);k("d",0,"do","day"),k("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),k("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),k("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),k("e",0,0,"weekday"),k("E",0,0,"isoWeekday"),j("day","d"),j("weekday","e"),j("isoWeekday","E"),Y("d",$n),Y("e",$n),Y("E",$n),Y("dd",ir),Y("ddd",ir),Y("dddd",ir),B(["dd","ddd","dddd"],function(t,e,n){var r=n._locale.weekdaysParse(t);null!=r?e.d=r:l(n).invalidWeekday=t}),B(["d","e","E"],function(t,e,n,r){e[r]=y(t)});var Ar="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),xr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),kr="Su_Mo_Tu_We_Th_Fr_Sa".split("_");k("H",["HH",2],0,"hour"),k("h",["hh",2],0,function(){return this.hours()%12||12}),Ve("a",!0),Ve("A",!1),j("hour","h"),Y("a",qe),Y("A",qe),Y("H",$n),Y("h",$n),Y("HH",$n,qn),Y("hh",$n,qn),F(["H","HH"],lr),F(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),F(["h","hh"],function(t,e,n){e[lr]=y(t),l(n).bigHour=!0});var Lr=/[ap]\.?m?\.?/i,Nr=P("Hours",!0);k("m",["mm",2],0,"minute"),j("minute","m"),Y("m",$n),Y("mm",$n,qn),F(["m","mm"],fr);var Rr=P("Minutes",!1);k("s",["ss",2],0,"second"),j("second","s"),Y("s",$n),Y("ss",$n,qn),F(["s","ss"],dr);var zr=P("Seconds",!1);k("S",0,0,function(){return~~(this.millisecond()/100)}),k(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),k(0,["SSS",3],0,"millisecond"),k(0,["SSSS",4],0,function(){return 10*this.millisecond()}),k(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),k(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),k(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),k(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),k(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),j("millisecond","ms"),Y("S",Zn,Vn),Y("SS",Zn,qn),Y("SSS",Zn,Wn);var Hr;for(Hr="SSSS";Hr.length<=9;Hr+="S")Y(Hr,tr);for(Hr="S";Hr.length<=9;Hr+="S")F(Hr,Je);var Yr=P("Milliseconds",!1);k("z",0,0,"zoneAbbr"),k("zz",0,0,"zoneName");var Gr=h.prototype;Gr.add=Ir,Gr.calendar=re,Gr.clone=ie,Gr.diff=ce,Gr.endOf=Oe,Gr.format=pe,Gr.from=he,Gr.fromNow=ve,Gr.to=_e,Gr.toNow=ye,Gr.get=A,Gr.invalidAt=Pe,Gr.isAfter=oe,Gr.isBefore=ue,Gr.isBetween=ae,Gr.isSame=se,Gr.isValid=Ee,Gr.lang=Dr,Gr.locale=me,Gr.localeData=ge,Gr.max=Mr,Gr.min=Sr,Gr.parsingFlags=Ie,Gr.set=A,Gr.startOf=be,Gr.subtract=Pr,Gr.toArray=Te,Gr.toObject=je,Gr.toDate=Me,Gr.toISOString=de,Gr.toJSON=de,Gr.toString=fe,Gr.unix=Se,Gr.valueOf=we,Gr.year=Or,Gr.isLeapYear=ct,Gr.weekYear=Ae,Gr.isoWeekYear=xe,Gr.quarter=Gr.quarters=Ne,Gr.month=Z,Gr.daysInMonth=X,Gr.week=Gr.weeks=ht,Gr.isoWeek=Gr.isoWeeks=vt,Gr.weeksInYear=Le,Gr.isoWeeksInYear=ke,Gr.date=Cr,Gr.day=Gr.days=Ue,Gr.weekday=Fe,Gr.isoWeekday=Be,Gr.dayOfYear=yt,Gr.hour=Gr.hours=Nr,Gr.minute=Gr.minutes=Rr,Gr.second=Gr.seconds=zr,Gr.millisecond=Gr.milliseconds=Yr,Gr.utcOffset=Yt,Gr.utc=Ut,Gr.local=Ft,Gr.parseZone=Bt,Gr.hasAlignedHourOffset=Vt,Gr.isDST=qt,Gr.isDSTShifted=Wt,Gr.isLocal=Kt,Gr.isUtcOffset=Jt,Gr.isUtc=$t,Gr.isUTC=$t,Gr.zoneAbbr=$e,Gr.zoneName=Ze,Gr.dates=et("dates accessor is deprecated. Use date instead.",Cr),Gr.months=et("months accessor is deprecated. Use month instead",Z),Gr.years=et("years accessor is deprecated. Use year instead",Or),Gr.zone=et("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Gt);var Ur=Gr,Fr={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Br={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Vr="Invalid date",qr="%d",Wr=/\d{1,2}/,Kr={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Jr=g.prototype;Jr._calendar=Fr,Jr.calendar=tn,Jr._longDateFormat=Br,Jr.longDateFormat=en,Jr._invalidDate=Vr,Jr.invalidDate=nn,Jr._ordinal=qr,Jr.ordinal=rn,Jr._ordinalParse=Wr,Jr.preparse=on,Jr.postformat=on,Jr._relativeTime=Kr,Jr.relativeTime=un,Jr.pastFuture=an,Jr.set=sn,Jr.months=W,Jr._months=hr,Jr.monthsShort=K,Jr._monthsShort=vr,Jr.monthsParse=J,Jr.week=ft,Jr._week=wr,Jr.firstDayOfYear=pt,Jr.firstDayOfWeek=dt,Jr.weekdays=ze,Jr._weekdays=Ar,Jr.weekdaysMin=Ye,Jr._weekdaysMin=kr,Jr.weekdaysShort=He,Jr._weekdaysShort=xr,Jr.weekdaysParse=Ge,Jr.isPM=We,Jr._meridiemParse=Lr,Jr.meridiem=Ke,S("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,n=1===y(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}}),e.lang=et("moment.lang is deprecated. Use moment.locale instead.",S),e.langData=et("moment.langData is deprecated. Use moment.localeData instead.",T);var $r=Math.abs,Zr=jn("ms"),Xr=jn("s"),Qr=jn("m"),ti=jn("h"),ei=jn("d"),ni=jn("w"),ri=jn("M"),ii=jn("y"),oi=In("milliseconds"),ui=In("seconds"),ai=In("minutes"),si=In("hours"),ci=In("days"),li=In("months"),fi=In("years"),di=Math.round,pi={s:45,m:45,h:22,d:26,M:11},hi=Math.abs,vi=kt.prototype;vi.abs=_n,vi.add=mn,vi.subtract=gn,vi.as=Mn,vi.asMilliseconds=Zr,vi.asSeconds=Xr,vi.asMinutes=Qr,vi.asHours=ti,vi.asDays=ei,vi.asWeeks=ni,vi.asMonths=ri,vi.asYears=ii,vi.valueOf=Tn,vi._bubble=On,vi.get=En,vi.milliseconds=oi,vi.seconds=ui,vi.minutes=ai,vi.hours=si,vi.days=ci,vi.weeks=Pn,vi.months=li,vi.years=fi,vi.humanize=xn,vi.toISOString=kn,vi.toString=kn,vi.toJSON=kn,vi.locale=me,vi.localeData=ge,vi.toIsoString=et("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",kn),vi.lang=Dr,k("X",0,0,"unix"),k("x",0,0,"valueOf"),Y("x",er),Y("X",rr),F("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),F("x",function(t,e,n){n._d=new Date(y(t))}),e.version="2.10.6",n(Dt),e.fn=Ur,e.min=At,e.max=xt,e.utc=s,e.unix=Xe,e.months=fn,e.isDate=i,e.locale=S,e.invalid=d,e.duration=Zt,e.isMoment=v,e.weekdays=pn,e.parseZone=Qe,e.localeData=T,e.isDuration=Lt,e.monthsShort=dn,e.weekdaysMin=vn,e.defineLocale=M,e.weekdaysShort=hn,e.normalizeUnits=E,e.relativeTimeThreshold=An;var _i=e;return _i})}).call(e,n(130)(t))},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"ha-card",properties:{title:{type:String},header:{type:String}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"ha-label-badge",properties:{value:{type:String},icon:{type:String},label:{type:String},description:{type:String},image:{type:String,observe:"imageChanged"}},computeClasses:function(t){return t&&t.length>5?"value big":"value"}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(55),o=r(i),u=n(2),a=n(1),s=r(a),c=6e4,l=u.util.parseDateTime;e["default"]=new s["default"]({is:"relative-ha-datetime",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object},relativeTime:{type:String,value:"not set"}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this._interval=setInterval(this.updateRelative,c)},detached:function(){clearInterval(this._interval)},datetimeChanged:function(t){this.parsedDateTime=t?l(t):null,this.updateRelative()},datetimeObjChanged:function(t){this.parsedDateTime=t,this.updateRelative()},updateRelative:function(){this.relativeTime=this.parsedDateTime?o["default"](this.parsedDateTime).fromNow():""}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(30),n(148),n(147),e["default"]=new o["default"]({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){if(t||!e)return{line:[],timeline:[]};var n={},r=[];e.forEach(function(t){if(t&&0!==t.size){var e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=e?e.attributes.unit_of_measurement:!1;i?i in n?n[i].push(t.toArray()):n[i]=[t.toArray()]:r.push(t.toArray())}}),r=r.length>0&&r;var i=Object.keys(n).map(function(t){return[t,n[t]]});return{line:i,timeline:r}},googleApiLoaded:function(){var t=this;google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){return t.apiLoaded=!0}})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size},extractUnit:function(t){return t[0]},extractData:function(t){return t[1]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(17),e["default"]=new u["default"]({is:"state-card-toggle",properties:{stateObj:{type:Object,observer:"stateObjChanged"},toggleChecked:{type:Boolean,value:!1}},ready:function(){this.forceStateChange()},toggleTapped:function(t){t.stopPropagation()},toggleChanged:function(t){var e=t.target.checked;e&&"off"===this.stateObj.state?this.turn_on():e||"on"!==this.stateObj.state||this.turn_off()},stateObjChanged:function(t){t&&this.updateToggle(t)},updateToggle:function(t){this.toggleChecked=t&&"on"===t.state},forceStateChange:function(){this.updateToggle(this.stateObj)},turn_on:function(){var t=this;i.serviceActions.callTurnOn(this.stateObj.entityId).then(function(){return t.forceStateChange()})},turn_off:function(){var t=this;i.serviceActions.callTurnOff(this.stateObj.entityId).then(function(){return t.forceStateChange()})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return i.reactor.evaluate(i.serviceGetters.canToggleEntity(t))}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=r;var i=n(2);t.exports=e["default"]},function(t,e){"use strict";function n(t,e){switch(t){case"homeassistant":return"home";case"group":return"homeassistant-24:group";case"device_tracker":return"social:person";case"switch":return"image:flash-on";case"media_player":var n="hardware:cast";return e&&"off"!==e&&"idle"!==e&&(n+="-connected"),n;case"sun":return"image:wb-sunny";case"light":return"image:wb-incandescent";case"simple_alarm":return"social:notifications";case"notify":return"announcement";case"thermostat":return"homeassistant-100:thermostat";case"sensor":return"visibility";case"configurator":return"settings";case"conversation":return"av:hearing";case"script":return"description";case"scene":return"social:pages";case"updater":return"update_available"===e?"icons:cloud-download":"icons:cloud-done";default:return"bookmark"}}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return u["default"](t).format("LT")}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=i;var o=n(55),u=r(o);t.exports=e["default"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e["default"]=function(t,e){r.authActions.validate(t,{rememberAuth:e,useStreaming:r.localStoragePreferences.useStreaming})},t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e){var n=null==t?void 0:t[e];return i(n)?n:void 0}var i=n(183);t.exports=r},function(t,e){"use strict";function n(t){return!!t&&"object"==typeof t}t.exports=n},function(t,e,n){"use strict";function r(t){return i(t)&&a.call(t)==o}var i=n(68),o="[object Function]",u=Object.prototype,a=u.toString; +t.exports=r},function(t,e){"use strict";function n(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=["isLoadingEntityHistory"];e.isLoadingEntityHistory=i;var o=["currentEntityHistoryDate"];e.currentDate=o;var u=["entityHistory"];e.entityHistoryMap=u;var a=[o,u,function(t,e){return e.get(t)||r.toImmutable({})}];e.entityHistoryForCurrentDate=a;var s=[o,u,function(t,e){return!!e.get(t)}];e.hasDataForCurrentDate=s;var c=["recentEntityHistory"];e.recentEntityHistoryMap=c;var l=["recentEntityHistory"];e.recentEntityHistoryUpdatedMap=l},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({currentEntityHistoryDate:a["default"],entityHistory:c["default"],isLoadingEntityHistory:f["default"],recentEntityHistory:p["default"],recentEntityHistoryUpdated:v["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(195),a=i(u),s=n(196),c=i(s),l=n(197),f=i(l),d=n(198),p=i(d),h=n(199),v=i(h),_=n(194),y=r(_),m=n(69),g=r(m),b=y;e.actions=b;var O=g;e.getters=O},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n6e4}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var u=n(221),a=n(241),s=i(a),c=n(243),l=i(c),f=n(245),d=i(f),p=n(22),h=r(p),v=n(36),_=r(v),y=n(10),m=r(y),g=n(70),b=r(g),O=n(37),w=r(O),S=n(206),M=r(S),T=n(73),j=r(T),E=n(76),I=r(E),P=n(39),D=r(P),C=n(19),A=r(C),x=n(40),k=r(x),L=n(42),N=r(L),R=n(238),z=r(R),H=n(11),Y=r(H),G=function U(){o(this,U);var t=s["default"]();Object.defineProperties(this,{demo:{value:!1,enumerable:!0},localStoragePreferences:{value:u.localStoragePreferences,enumerable:!0},reactor:{value:t,enumerable:!0},util:{value:d["default"],enumerable:!0},startLocalStoragePreferencesSync:{value:u.localStoragePreferences.startSync.bind(u.localStoragePreferences,t)},startUrlSync:{value:I.urlSync.startSync.bind(null,t)},stopUrlSync:{value:I.urlSync.stopSync.bind(null,t)}}),l["default"](this,t,{auth:h,config:_,entity:m,entityHistory:b,event:w,logbook:M,moreInfo:j,navigation:I,notification:D,service:A,stream:k,sync:N,voice:z,restApi:Y})};e["default"]=G,t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e,n){var r=t?t.length:0;return n&&o(t,e,n)&&(e=!1),r?i(t,e):[]}var i=n(98),o=n(26);t.exports=r},function(t,e){"use strict";function n(t){var e=t?t.length:0;return e?t[e-1]:void 0}t.exports=n},function(t,e,n){"use strict";function r(t,e,n,r){var s=t?t.length:0;return s?(null!=e&&"boolean"!=typeof e&&(r=n,n=u(t,e,r)?void 0:e,e=!1),n=null==n?n:i(n,r,3),e?a(t,n):o(t,n)):[]}var i=n(24),o=n(110),u=n(26),a=n(124);t.exports=r},function(t,e,n){"use strict";function r(t,e,n){var r=a(t)?i:u;return e=o(e,n,3),r(t,e)}var i=n(93),o=n(24),u=n(47),a=n(9);t.exports=r},function(t,e,n){"use strict";function r(t,e){return i(t,o(e))}var i=n(89),o=n(54);t.exports=r},function(t,e,n){"use strict";function r(t,e,n){if(null==t)return[];n&&s(t,e,n)&&(e=void 0);var r=-1;e=i(e,n,3);var c=o(t,function(t,n,i){return{criteria:e(t,n,i),index:++r,value:t}});return u(c,a)}var i=n(24),o=n(47),u=n(108),a=n(114),s=n(26);t.exports=r},function(t,e,n){(function(e){"use strict";function r(t){var e=t?t.length:0;for(this.data={hash:a(null),set:new u};e--;)this.push(t[e])}var i=n(113),o=n(20),u=o(e,"Set"),a=o(Object,"create");r.prototype.push=i,t.exports=r}).call(e,function(){return this}())},function(t,e){"use strict";function n(t,e){for(var n=-1,r=t.length,i=Array(r);++ne&&!o||!i||n&&!u&&a||r&&a)return 1;if(e>t&&!n||!a||o&&!r&&i||u&&i)return-1}return 0}t.exports=n},function(t,e,n){"use strict";var r=n(100),i=n(115),o=i(r);t.exports=o},function(t,e,n){"use strict";function r(t,e,n,c){c||(c=[]);for(var l=-1,f=t.length;++le&&(e=-e>i?0:i+e),n=void 0===n||n>i?i:+n||0,0>n&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Array(i);++r=a,f=l?u():null,d=[];f?(r=o,c=!1):(l=!1,f=e?[]:d);t:for(;++nc))return!1;for(;++s0;++rd;d++)f._columns[d]=[];var p=0;return n&&u(),c.keySeq().sortBy(function(t){return i(t)}).forEach(function(t){if("a"===t)return void(f._demo=!0);var n=i(t);n>=0&&10>n?f._badges.push.apply(f._badges,r(c.get(t)).sortBy(o).toArray()):"group"===t?c.get(t).filter(function(t){return!t.attributes.auto}).sortBy(o).forEach(function(t){var n=s.util.expandGroup(t,e);n.forEach(function(t){return l[t.entityId]=!0}),a(t.entityDisplay,n.toArray())}):a(t,r(c.get(t)).sortBy(o).toArray())}),f},computeShowIntroduction:function(t,e){return t||e._demo},computeShowHideInstruction:function(t,e){return t.size>0&&!0&&!e._demo},computeStatesOfCard:function(t,e){return t[e]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(29),n(134),n(58),e["default"]=new u["default"]({is:"logbook-entry", +entityClicked:function(t){t.preventDefault(),i.moreInfoActions.selectEntity(this.entryObj.entityId)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(29),e["default"]=new u["default"]({is:"services-list",behaviors:[s["default"]],properties:{serviceDomains:{type:Array,bindNuclear:[i.serviceGetters.entityMap,function(t){return t.valueSeq().sortBy(function(t){return t.domain}).toJS()}]}},computeServices:function(t){return this.services.get(t).toArray()},serviceClicked:function(t){t.preventDefault(),this.fire("service-selected",{domain:t.model.domain.domain,service:t.model.service})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(90),o=r(i),u=n(86),a=r(u),s=n(88),c=r(s),l=n(91),f=r(l),d=n(1),p=r(d);e["default"]=new p["default"]({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){if(this.isAttached){for(var t=p["default"].dom(this),e=this.unit,n=this.data;t.lastChild;)t.removeChild(t.lastChild);if(0!==n.length){var r=new google.visualization.LineChart(this),i=new google.visualization.DataTable;i.addColumn({type:"datetime",id:"Time"});var u={legend:{position:"top"},titlePosition:"none",vAxes:{0:{title:e}},hAxis:{format:"H:mm"},lineWidth:1,chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}};this.isSingleDevice&&(u.legend.position="none",u.vAxes[0].title=null,u.chartArea.left=40,u.chartArea.height="80%",u.chartArea.top=5,u.enableInteractivity=!1);var s=o["default"](a["default"](n),"lastChangedAsDate");s=f["default"](c["default"](s,function(t){return t.getTime()}));for(var l=[],d=new Array(n.length),h=0;hnew Date&&(a=new Date);var s=0;n.forEach(function(e){if(0!==e.length){var n=e[0].entityDisplay,r=void 0,i=null,o=null;e.forEach(function(e){null!==i&&e.state!==i?(r=e.lastChangedAsDate,t(n,i,o,r),i=e.state,o=r):null===i&&(i=e.state,o=e.lastChangedAsDate)}),t(n,i,o,a),s++}}),r.draw(i,{height:55+42*s,timeline:{showRowLabels:n.length>1},hAxis:{format:"H:mm"}})}}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);e["default"]=new u["default"]({is:"stream-status",behaviors:[s["default"]],properties:{isStreaming:{type:Boolean,bindNuclear:i.streamGetters.isStreamingEvents},hasError:{type:Boolean,bindNuclear:i.streamGetters.hasStreamingEventsError}},toggleChanged:function(){this.isStreaming?i.streamActions.stop():i.streamActions.start()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(31),n(59),n(162);var c=["camera","configurator"];e["default"]=new u["default"]({is:"more-info-dialog",behaviors:[s["default"]],properties:{stateObj:{type:Object,bindNuclear:i.moreInfoGetters.currentEntity,observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:[i.moreInfoGetters.currentEntityHistory,function(t){return t?[t]:!1}]},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(_delayedDialogOpen, _isLoadingHistoryData)"},_isLoadingHistoryData:{type:Boolean,bindNuclear:i.entityHistoryGetters.isLoadingEntityHistory},hasHistoryComponent:{type:Boolean,bindNuclear:i.configGetters.isComponentLoaded("history"),observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:i.moreInfoGetters.isCurrentEntityHistoryStale,observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},_delayedDialogOpen:{type:Boolean,value:!1},_boundOnBackdropTap:{type:Function,value:function(){return this._onBackdropTap.bind(this)}}},computeIsLoadingHistoryData:function(t,e){return!t||e},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&i.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){var e=this;return t?(this.showHistoryComponent=-1===c.indexOf(this.stateObj.domain)&&this.hasHistoryComponent,void this.async(function(){e.fetchHistoryData(),e.dialogOpen=!0},10)):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){var e=this;t?(this.$.dialog.backdropElement.addEventListener("click",this._boundOnBackdropTap),this.async(function(){return e._delayedDialogOpen=!0},10)):!t&&this.stateObj&&(i.moreInfoActions.deselectEntity(),this._delayedDialogOpen=!1)},_onBackdropTap:function(){this.$.dialog.backdropElement.removeEventListener("click",this._boundOnBackdropTap),this.dialogOpen=!1}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(4),u=r(o);n(142),n(158),n(157),n(156),n(153),n(154),n(155),n(159),n(150),e["default"]=new Polymer({is:"home-assistant-main",behaviors:[u["default"]],properties:{narrow:{type:Boolean,value:!1},activePane:{type:String,bindNuclear:i.navigationGetters.activePane,observer:"activePaneChanged"},isSelectedStates:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("states")},isSelectedHistory:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("history")},isSelectedLogbook:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("logbook")},isSelectedDevEvent:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("devEvent")},isSelectedDevState:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("devState")},isSelectedDevService:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("devService")},showSidebar:{type:Boolean,bindNuclear:i.navigationGetters.showSidebar}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():i.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&i.navigationActions.showSidebar(!1)},activePaneChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){i.startUrlSync()},computeForceNarrow:function(t,e){return t||!e},detached:function(){i.stopUrlSync()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=n(2),a=n(4),s=r(a),c=n(64),l=r(c);e["default"]=new o["default"]({is:"login-form",behaviors:[s["default"]],properties:{isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:u.authGetters.isValidating},isInvalid:{type:Boolean,bindNuclear:u.authGetters.isInvalidAttempt},errorMessage:{type:String,bindNuclear:u.authGetters.attemptErrorMessage}},listeners:{keydown:"passwordKeyDown","loginButton.click":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],validatingChanged:function(t,e){t||e||(this.$.passwordInput.value="")},isValidatingChanged:function(t){var e=this;t||this.async(function(){return e.$.passwordInput.focus()},10)},passwordKeyDown:function(t){13===t.keyCode?(this.validatePassword(),t.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),l["default"](this.$.passwordInput.value,this.$.rememberLogin.checked)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(14),n(146),e["default"]=new u["default"]({is:"partial-dev-call-service",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},domain:{type:String,value:""},service:{type:String,value:""},serviceData:{type:String,value:""}},serviceSelected:function(t){this.domain=t.detail.domain,this.service=t.detail.service},callService:function(){var t=void 0;try{t=this.serviceData?JSON.parse(this.serviceData):{}}catch(e){return void alert("Error parsing JSON: "+e)}i.serviceActions.callService(this.domain,this.service,t)},computeFormClasses:function(t){return"layout "+(t?"vertical":"horizontal")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(14),n(138),e["default"]=new u["default"]({is:"partial-dev-fire-event",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},eventType:{type:String,value:""},eventData:{type:String,value:""}},eventSelected:function(t){this.eventType=t.detail.eventType},fireEvent:function(){var t=void 0;try{t=this.eventData?JSON.parse(this.eventData):{}}catch(e){return void alert("Error parsing JSON: "+e)}i.eventActions.fireEvent(this.eventType,t)},computeFormClasses:function(t){return"layout "+(t?"vertical":"horizontal")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(14),n(135),e["default"]=new u["default"]({is:"partial-dev-set-state",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},entityId:{type:String,value:""},state:{type:String,value:""},stateAttributes:{type:String,value:""}},setStateData:function(t){var e=t?JSON.stringify(t,null," "):"";this.$.inputData.value=e,this.$.inputDataWrapper.update(this.$.inputData)},entitySelected:function(t){var e=i.reactor.evaluate(i.entityGetters.byId(t.detail.entityId));this.entityId=e.entityId,this.state=e.state,this.stateAttributes=JSON.stringify(e.attributes,null," ")},handleSetState:function(){var t=void 0;try{t=this.stateAttributes?JSON.parse(this.stateAttributes):{}}catch(e){return void alert("Error parsing JSON: "+e)}i.entityActions.save({entityId:this.entityId,state:this.state,attributes:t})},computeFormClasses:function(t){return"layout "+(t?"vertical":"horizontal")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(14),n(59),e["default"]=new u["default"]({is:"partial-history",behaviors:[s["default"]],properties:{narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},isDataLoaded:{type:Boolean,bindNuclear:i.entityHistoryGetters.hasDataForCurrentDate,observer:"isDataLoadedChanged"},stateHistory:{type:Object,bindNuclear:i.entityHistoryGetters.entityHistoryForCurrentDate},isLoadingData:{type:Boolean,bindNuclear:i.entityHistoryGetters.isLoadingEntityHistory},selectedDate:{type:String,value:null,bindNuclear:i.entityHistoryGetters.currentDate}},isDataLoadedChanged:function(t){t||this.async(function(){return i.entityHistoryActions.fetchSelectedDate()},1)},handleRefreshClick:function(){i.entityHistoryActions.fetchSelectedDate()},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new Pikaday({field:this.$.datePicker.inputElement,onSelect:i.entityHistoryActions.changeCurrentDate})},detached:function(){this.datePicker.destroy()},computeContentClasses:function(t){return"flex content "+(t?"narrow":"wide")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(14),n(141),n(30),e["default"]=new u["default"]({is:"partial-logbook",behaviors:[s["default"]],properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},selectedDate:{type:String,bindNuclear:i.logbookGetters.currentDate},isLoading:{type:Boolean,bindNuclear:i.logbookGetters.isLoadingEntries},isStale:{type:Boolean,bindNuclear:i.logbookGetters.isCurrentStale,observer:"isStaleChanged"},entries:{type:Array,bindNuclear:[i.logbookGetters.currentEntries,function(t){return t.toArray()}]},datePicker:{type:Object}},isStaleChanged:function(t){var e=this;t&&this.async(function(){return i.logbookActions.fetchDate(e.selectedDate)},1)},handleRefresh:function(){i.logbookActions.fetchDate(this.selectedDate)},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new Pikaday({field:this.$.datePicker.inputElement,onSelect:i.logbookActions.changeCurrentDate})},detached:function(){this.datePicker.destroy()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(14),n(143),n(144),e["default"]=new u["default"]({is:"partial-zone",behaviors:[s["default"]],properties:{narrow:{type:Boolean,value:!1},isFetching:{type:Boolean,bindNuclear:i.syncGetters.isFetching},isStreaming:{type:Boolean,bindNuclear:i.streamGetters.isStreamingEvents},canListen:{type:Boolean,bindNuclear:[i.voiceGetters.isVoiceSupported,i.configGetters.isComponentLoaded("conversation"),function(t,e){return t&&e}]},isListening:{type:Boolean,bindNuclear:i.voiceGetters.isListening},showListenInterface:{type:Boolean,bindNuclear:[i.voiceGetters.isListening,i.voiceGetters.isTransmitting,function(t,e){return t||e}]},introductionLoaded:{type:Boolean,bindNuclear:i.configGetters.isComponentLoaded("introduction")},locationName:{type:String,bindNuclear:i.configGetters.locationName},showMenu:{type:Boolean,value:!1},states:{type:Object,bindNuclear:i.entityGetters.visibleEntityMap},columns:{type:Number}},created:function(){this.windowChange=this.windowChange.bind(this)},attached:function(){for(var t=this,e=[],n=0;4>n;n++)e.push(940+350*n);this.mqls=e.map(function(e){var n=window.matchMedia("(min-width: "+e+"px)");return n.addListener(t.windowChange),n}),this.windowChange()},detached:function(){var t=this;this.mqls.forEach(function(e){return e.removeListener(t.windowChange)})},windowChange:function(){this.columns=this.mqls.reduce(function(t,e){return t+e.matches},1)},handleRefresh:function(){i.syncActions.fetchAll()},handleListenClick:function(){this.isListening?i.voiceActions.stop():i.voiceActions.listen()},computeDomains:function(t){return t.keySeq().toArray()},computeMenuButtonClass:function(t,e){return!t&&e?"invisible":""},computeStatesOfDomain:function(t,e){return t.get(e).toArray()},computeListenButtonIcon:function(t){return t?"av:mic-off":"av:mic"},computeRefreshButtonClass:function(t){return t?"ha-spin":void 0},computeShowIntroduction:function(t,e){return t||0===e.size},toggleMenu:function(){this.fire("open-menu")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);e["default"]=new u["default"]({is:"notification-manager",behaviors:[s["default"]],properties:{text:{type:String,bindNuclear:i.notificationGetters.lastNotificationMessage,observer:"showNotification"}},showNotification:function(t){t&&this.$.toast.show()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"more-info-camera",properties:{stateObj:{type:Object},dialogOpen:{type:Boolean}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(t){return t?"/api/camera_proxy_stream/"+this.stateObj.entityId:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(30),e["default"]=new u["default"]({is:"more-info-configurator",behaviors:[s["default"]],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:i.streamGetters.isStreamingEvents},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"}},computeIsConfigurable:function(t){return"configure"===t.state},computeSubmitCaption:function(t){return t.attributes.submit_caption||"Set configuration"},submitClicked:function(){var t=this;this.isConfiguring=!0;var e={configure_id:this.stateObj.attributes.configure_id};i.serviceActions.callService("configurator","configure",e).then(function(){t.isConfiguring=!1,t.isStreaming||i.syncActions.fetchAll()},function(){t.isConfiguring=!1})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=n(177),a=r(u);n(163),n(164),n(168),n(161),n(169),n(167),n(165),n(166),n(160),n(170),e["default"]=new o["default"]({is:"more-info-content",properties:{stateObj:{type:Object,observer:"stateObjChanged"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"}},dialogOpenChanged:function(t){var e=o["default"].dom(this);e.lastChild&&(e.lastChild.dialogOpen=t)},stateObjChanged:function(t,e){var n=o["default"].dom(this);if(!t)return void(n.lastChild&&n.removeChild(n.lastChild));var r=a["default"](t);if(e&&a["default"](e)===r)n.lastChild.dialogOpen=this.dialogOpen,n.lastChild.stateObj=t;else{n.lastChild&&n.removeChild(n.lastChild);var i=document.createElement("more-info-"+r);i.stateObj=t,i.dialogOpen=this.dialogOpen,n.appendChild(i)}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=["entity_picture","friendly_name","unit_of_measurement"];e["default"]=new o["default"]({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return-1===u.indexOf(t)}):[]},getAttributeValue:function(t,e){return t.attributes[e]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(31),e["default"]=new u["default"]({is:"more-info-group",behaviors:[s["default"]],properties:{stateObj:{type:Object},states:{type:Array,bindNuclear:[i.moreInfoGetters.currentEntity,i.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}},updateStates:function(){this.states=this.stateObj&&this.stateObj.attributes.entity_id?stateStore.gets(this.stateObj.attributes.entity_id).toArray():[]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(33),s=r(a);n(139);var c=["brightness","xy_color"];e["default"]=new u["default"]({is:"more-info-light",properties:{stateObj:{type:Object,observer:"stateObjChanged"},brightnessSliderValue:{type:Number,value:0}},stateObjChanged:function(t){var e=this;t&&"on"===t.state&&(this.brightnessSliderValue=t.attributes.brightness),this.async(function(){return e.fire("iron-resize")},500)},computeClassNames:function(t){return s["default"](t,c)},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?i.serviceActions.callTurnOff(this.stateObj.entityId):i.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},colorPicked:function(t){var e=t.detail.rgb;i.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,rgb_color:[e.r,e.g,e.b]})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(33),s=r(a),c=["volume_level"];e["default"]=new u["default"]({is:"more-info-media_player",properties:{stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},volumeSliderValue:{type:Number,value:0},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1}},stateObjChanged:function(t){var e=this;t&&(this.isOff="off"===t.state,this.isPlaying="playing"===t.state,this.volumeSliderValue=100*t.attributes.volume_level,this.isMuted=t.attributes.is_volume_muted,this.supportsPause=0!==(1&t.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&t.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&t.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&t.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&t.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&t.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&t.attributes.supported_media_commands)),this.async(function(){return e.fire("iron-resize")},500)},computeClassNames:function(t){return s["default"](t,c)},computeIsOff:function(t){return"off"===t.state},computeMuteVolumeIcon:function(t){return t?"av:volume-off":"av:volume-up"},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"av:pause":"av:stop":"av:play-arrow"},computeHidePowerButton:function(t,e,n){return t?!e:!n},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},volumeSliderChanged:function(t){var e=parseFloat(t.target.value),n=e>0?e/100:0;this.callService("volume_set",{volume_level:n})},callService:function(t,e){var n=e||{};n.entity_id=this.stateObj.entityId,i.serviceActions.callService("media_player",t,n)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"more-info-script",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(63),u=r(o),a=i.util.parseDateTime;e["default"]=new Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return a(t.attributes.next_rising)},computeSetting:function(t){return a(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return u["default"](this.itemDate(t))}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(33),s=r(a),c=["away_mode"];e["default"]=new u["default"]({is:"more-info-thermostat",properties:{stateObj:{type:Object,observer:"stateObjChanged"},tempMin:{type:Number},tempMax:{type:Number},targetTemperatureSliderValue:{type:Number},awayToggleChecked:{type:Boolean}},stateObjChanged:function(t){this.targetTemperatureSliderValue=t.state,this.awayToggleChecked="on"===t.attributes.away_mode,this.tempMin=t.attributes.min_temp,this.tempMax=t.attributes.max_temp},computeClassNames:function(t){return s["default"](t,c)},targetTemperatureSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||i.serviceActions.callService("thermostat","set_temperature",{entity_id:this.stateObj.entityId,temperature:e})},toggleChanged:function(t){var e=t.target.checked;e&&"off"===this.stateObj.attributes.away_mode?this.service_set_away(!0):e||"on"!==this.stateObj.attributes.away_mode||this.service_set_away(!1)},service_set_away:function(t){var e=this;i.serviceActions.callService("thermostat","set_away_mode",{away_mode:t,entity_id:this.stateObj.entityId}).then(function(){return e.stateObjChanged(e.stateObj)})}}),t.exports=e["default"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e["default"]=new Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},updateTapped:function(){r.serviceActions.callService("updater","update",{})},linkTapped:function(){window.open(this.stateObj.attributes.link,"_blank")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17),n(32),e["default"]=new o["default"]({is:"state-card-configurator",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17);var u=["playing","paused"];e["default"]=new o["default"]({is:"state-card-media_player",properties:{stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"}},computeIsPlaying:function(t){return-1!==u.indexOf(t.state)},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e=void 0;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(32),n(60),e["default"]=new o["default"]({is:"state-card-scene",properties:{stateObj:{type:Object},allowToggle:{type:Boolean,value:!1,computed:"computeAllowToggle(stateObj)"}},computeAllowToggle:function(t){return"off"===t.state||t.attributes.active_requested}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17),e["default"]=new o["default"]({is:"state-card-thermostat",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e){"use strict";function n(t){return{attached:function(){var e=this;this.__unwatchFns=Object.keys(this.properties).reduce(function(n,r){if(!("bindNuclear"in e.properties[r]))return n;var i=e.properties[r].bindNuclear;if(!i)throw new Error("Undefined getter specified for key "+r);return e[r]=t.evaluate(i),n.concat(t.observe(i,function(t){e[r]=t}))},[])},detached:function(){for(;this.__unwatchFns.length;)this.__unwatchFns.shift()()}}}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return-1!==a.indexOf(t.domain)?t.domain:u["default"](t.entityId)?"toggle":"display"}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=i;var o=n(61),u=r(o),a=["thermostat","configurator","scene","media_player"];t.exports=e["default"]},function(t,e){"use strict";function n(t){return-1!==r.indexOf(t.domain)?t.domain:"default"}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n;var r=["light","group","sun","configurator","thermostat","script","media_player","camera","updater"];t.exports=e["default"]},function(t,e){"use strict";function n(t,e,n){var r=1-t-e,i=n/255,o=i/e*t,u=i/e*r,a=1.612*o-.203*i-.302*u,s=.509*-o+1.412*i+.066*u,c=.026*o-.072*i+.962*u;a=.0031308>=a?12.92*a:1.055*Math.pow(a,1/2.4)-.055,s=.0031308>=s?12.92*s:1.055*Math.pow(s,1/2.4)-.055,c=.0031308>=c?12.92*c:1.055*Math.pow(c,1/2.4)-.055;var l=Math.max(a,s,c);return a/=l,s/=l,c/=l,a=255*a,0>a&&(a=255),s=255*s,0>s&&(s=255),c=255*c,0>c&&(c=255),[a,s,c]}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){var r;(function(t,i,o){"use strict";(function(){function u(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return"function"==typeof t}function s(t){return"object"==typeof t&&null!==t}function c(t){W=t}function l(t){Z=t}function f(){return function(){t.nextTick(_)}}function d(){return function(){q(_)}}function p(){var t=0,e=new tt(_),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function h(){var t=new MessageChannel;return t.port1.onmessage=_,function(){t.port2.postMessage(0)}}function v(){return function(){setTimeout(_,1)}}function _(){for(var t=0;$>t;t+=2){var e=rt[t],n=rt[t+1];e(n),rt[t]=void 0,rt[t+1]=void 0}$=0}function y(){try{var t=n(250);return q=t.runOnLoop||t.runOnContext,d()}catch(e){return v()}}function m(){}function g(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function O(t){try{return t.then}catch(e){return at.error=e,at}}function w(t,e,n,r){try{t.call(e,n,r)}catch(i){return i}}function S(t,e,n){Z(function(t){var r=!1,i=w(n,e,function(n){r||(r=!0,e!==n?j(t,n):I(t,n))},function(e){r||(r=!0,P(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&i&&(r=!0,P(t,i))},t)}function M(t,e){e._state===ot?I(t,e._result):e._state===ut?P(t,e._result):D(e,void 0,function(e){j(t,e)},function(e){P(t,e)})}function T(t,e){if(e.constructor===t.constructor)M(t,e);else{var n=O(e);n===at?P(t,at.error):void 0===n?I(t,e):a(n)?S(t,e,n):I(t,e)}}function j(t,e){t===e?P(t,g()):u(e)?T(t,e):I(t,e); +}function E(t){t._onerror&&t._onerror(t._result),C(t)}function I(t,e){t._state===it&&(t._result=e,t._state=ot,0!==t._subscribers.length&&Z(C,t))}function P(t,e){t._state===it&&(t._state=ut,t._result=e,Z(E,t))}function D(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+ot]=n,i[o+ut]=r,0===o&&t._state&&Z(C,t)}function C(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r,i,o=t._result,u=0;uu;u++)D(r.resolve(t[u]),void 0,e,n);return i}function H(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(m);return j(n,t),n}function Y(t){var e=this,n=new e(m);return P(n,t),n}function G(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function U(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function F(t){this._id=ht++,this._state=void 0,this._result=void 0,this._subscribers=[],m!==t&&(a(t)||G(),this instanceof F||U(),L(this,t))}function B(){var t;if("undefined"!=typeof i)t=i;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;(!n||"[object Promise]"!==Object.prototype.toString.call(n.resolve())||n.cast)&&(t.Promise=vt)}var V;V=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var q,W,K,J=V,$=0,Z=({}.toString,function(t,e){rt[$]=t,rt[$+1]=e,$+=2,2===$&&(W?W(_):K())}),X="undefined"!=typeof window?window:void 0,Q=X||{},tt=Q.MutationObserver||Q.WebKitMutationObserver,et="undefined"!=typeof t&&"[object process]"==={}.toString.call(t),nt="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,rt=new Array(1e3);K=et?f():tt?p():nt?h():void 0===X?y():v();var it=void 0,ot=1,ut=2,at=new A,st=new A;N.prototype._validateInput=function(t){return J(t)},N.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")},N.prototype._init=function(){this._result=new Array(this.length)};var ct=N;N.prototype._enumerate=function(){for(var t=this,e=t.length,n=t.promise,r=t._input,i=0;n._state===it&&e>i;i++)t._eachEntry(r[i],i)},N.prototype._eachEntry=function(t,e){var n=this,r=n._instanceConstructor;s(t)?t.constructor===r&&t._state!==it?(t._onerror=null,n._settledAt(t._state,e,t._result)):n._willSettleAt(r.resolve(t),e):(n._remaining--,n._result[e]=t)},N.prototype._settledAt=function(t,e,n){var r=this,i=r.promise;i._state===it&&(r._remaining--,t===ut?P(i,n):r._result[e]=n),0===r._remaining&&I(i,r._result)},N.prototype._willSettleAt=function(t,e){var n=this;D(t,void 0,function(t){n._settledAt(ot,e,t)},function(t){n._settledAt(ut,e,t)})};var lt=R,ft=z,dt=H,pt=Y,ht=0,vt=F;F.all=lt,F.race=ft,F.resolve=dt,F.reject=pt,F._setScheduler=c,F._setAsap=l,F._asap=Z,F.prototype={constructor:F,then:function(t,e){var n=this,r=n._state;if(r===ot&&!t||r===ut&&!e)return this;var i=new this.constructor(m),o=n._result;if(r){var u=arguments[r-1];Z(function(){k(r,i,u,o)})}else D(n,i,t,e);return i},"catch":function(t){return this.then(null,t)}};var _t=B,yt={Promise:vt,polyfill:_t};n(249).amd?(r=function(){return yt}.call(e,n,e,o),!(void 0!==r&&(o.exports=r))):"undefined"!=typeof o&&o.exports?o.exports=yt:"undefined"!=typeof this&&(this.ES6Promise=yt),_t()}).call(void 0)}).call(e,n(246),function(){return this}(),n(247)(t))},function(t,e,n){"use strict";var r=n(65),i=r(Date,"now"),o=i||function(){return(new Date).getTime()};t.exports=o},function(t,e){"use strict";function n(t){return"number"==typeof t&&t>-1&&t%1==0&&r>=t}var r=9007199254740991;t.exports=n},function(t,e,n){"use strict";var r=n(65),i=n(181),o=n(66),u="[object Array]",a=Object.prototype,s=a.toString,c=r(Array,"isArray"),l=c||function(t){return o(t)&&i(t.length)&&s.call(t)==u};t.exports=l},function(t,e,n){"use strict";function r(t){return null==t?!1:i(t)?l.test(s.call(t)):o(t)&&u.test(t)}var i=n(67),o=n(66),u=/^\[object .+?Constructor\]$/,a=Object.prototype,s=Function.prototype.toString,c=a.hasOwnProperty,l=RegExp("^"+s.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(179),i=n(22),o=function(t,e,n){var o=arguments.length<=3||void 0===arguments[3]?null:arguments[3],u=t.evaluate(i.getters.authInfo),a=u.host+"/api/"+n;return new r.Promise(function(t,n){var r=new XMLHttpRequest;r.open(e,a,!0),r.setRequestHeader("X-HA-access",u.authToken),r.onload=function(){if(r.status>199&&r.status<300)t(JSON.parse(r.responseText));else try{n(JSON.parse(r.responseText))}catch(e){n({})}},r.onerror=function(){return n({})},o?r.send(JSON.stringify(o)):r.send()})};e["default"]=o,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r=n.useStreaming,i=void 0===r?t.evaluate(s.getters.isSupported):r,o=n.rememberAuth,u=void 0===o?!1:o,f=n.host,d=void 0===f?"":f;t.dispatch(a["default"].VALIDATING_AUTH_TOKEN,{authToken:e,host:d}),c.actions.fetchAll(t).then(function(){t.dispatch(a["default"].VALID_AUTH_TOKEN,{authToken:e,host:d,rememberAuth:u}),i?s.actions.start(t,{syncOnInitialConnect:!1}):c.actions.start(t,{skipInitialSync:!0})},function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=e.message,r=void 0===n?l:n;t.dispatch(a["default"].INVALID_AUTH_TOKEN,{errorMessage:r})})}function o(t){t.dispatch(a["default"].LOG_OUT,{})}Object.defineProperty(e,"__esModule",{value:!0}),e.validate=i,e.logOut=o;var u=n(21),a=r(u),s=n(40),c=n(42),l="Unexpected result from API"},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=[["authAttempt","isValidating"],function(t){return!!t}];e.isValidating=n;var r=[["authAttempt","isInvalid"],function(t){return!!t}];e.isInvalidAttempt=r;var i=["authAttempt","errorMessage"];e.attemptErrorMessage=i;var o=["rememberAuth"];e.rememberAuth=o;var u=[["authAttempt","authToken"],["authAttempt","host"],function(t,e){return{authToken:t,host:e}}];e.attemptAuthInfo=u;var a=["authCurrent","authToken"];e.currentAuthToken=a;var s=[a,["authCurrent","host"],function(t,e){return{authToken:t,host:e}}];e.currentAuthInfo=s;var c=[n,["authAttempt","authToken"],["authCurrent","authToken"],function(t,e,n){return t?e:n}];e.authToken=c;var l=[n,u,s,function(t,e,n){return t?e:n}];e.authInfo=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){if(null==t)throw new TypeError("Cannot destructure undefined")}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){var n=e.authToken,r=e.host;return d.toImmutable({authToken:n,host:r,isValidating:"true",isInvalid:!1,errorMessage:""})}function s(t,e){return i(e),_.getInitialState()}function c(t,e){var n=e.errorMessage;return t.withMutations(function(t){return t.set("isValidating",!1).set("isInvalid","true").set("errorMessage",n)})}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n1&&t.set(p,r)})}function a(){return v.getInitialState()}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var n=0;no}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=6e4,u=["currentLogbookDate"];e.currentDate=u;var a=[u,["logbookEntriesUpdated"],function(t,e){return r(e.get(t))}];e.isCurrentStale=a;var s=[u,["logbookEntries"],function(t,e){return e.get(t)||i.toImmutable([])}];e.currentEntries=s;var c=["isLoadingLogbookEntries"];e.isLoadingEntries=c},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({currentLogbookDate:a["default"],isLoadingLogbookEntries:c["default"],logbookEntries:f["default"],logbookEntriesUpdated:p["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(208),a=i(u),s=n(209),c=i(s),l=n(210),f=i(l),d=n(211),p=i(d),h=n(204),v=r(h),_=n(205),y=r(_),m=v;e.actions=m;var g=y;e.getters=g},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n1)for(var n=1;n \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index c3b9a55d683..46dbd30fbae 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit c3b9a55d6839b933042da14d578c43f9a47499dc +Subproject commit 46dbd30fbae80a5421392a8db5fa98de32b89f21 diff --git a/homeassistant/components/frontend/www_static/splash.png b/homeassistant/components/frontend/www_static/splash.png index 3d5411ecb4b2612011c33b5dcbf593864c775857..582140a2bc35f598fc227782ff06039759b39fe5 100644 GIT binary patch literal 51901 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 X4*bsH#oYQwnxd$@(NwIHw~YKRWF8~N From 4e01e7ca9b7c02893808d603c9d4dcaa27718fd5 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 23:17:47 -0400 Subject: [PATCH 022/190] Pip requirements and fixes. 1) Reduced the flags being sent to pip. 2) Required a minimum of pip 7.0.0 for Home Assistant. --- homeassistant/util/package.py | 3 +-- requirements.txt | 1 + requirements_all.txt | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/util/package.py b/homeassistant/util/package.py index 3719fecb9ff..75d59970bfb 100644 --- a/homeassistant/util/package.py +++ b/homeassistant/util/package.py @@ -13,8 +13,7 @@ def install_package(package, upgrade=False, target=None): """Install a package on PyPi. Accepts pip compatible package strings. Return boolean if install successfull.""" # Not using 'import pip; pip.main([])' because it breaks the logger - args = [sys.executable, '-m', 'pip', 'install', '--quiet', - '--isolated', '-I', package] + args = [sys.executable, '-m', 'pip', 'install', '--quiet', package] if upgrade: args.append('--upgrade') if target: diff --git a/requirements.txt b/requirements.txt index a21c2db6208..1b7d2396971 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ requests>=2,<3 pyyaml>=3.11,<4 pytz>=2015.4 +pip>=7.0.0 diff --git a/requirements_all.txt b/requirements_all.txt index f9f02b49740..a900846e30d 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -2,6 +2,7 @@ requests>=2,<3 pyyaml>=3.11,<4 pytz>=2015.4 +pip>=7.0.0 # Optional, needed for specific components From bea81ddd926c560463aac8f26d4d36b2cf53b457 Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sat, 29 Aug 2015 23:31:33 -0400 Subject: [PATCH 023/190] Minor tweaks Moved another import to the top of main. Forced an exit code of 1 when there is an error initializing. --- homeassistant/__main__.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/homeassistant/__main__.py b/homeassistant/__main__.py index c6f0fd97b98..815404b1de1 100644 --- a/homeassistant/__main__.py +++ b/homeassistant/__main__.py @@ -8,6 +8,7 @@ import importlib from homeassistant import bootstrap import homeassistant.config as config_util +from homeassistant.const import EVENT_HOMEASSISTANT_START def validate_python(): @@ -16,7 +17,7 @@ def validate_python(): if major < 3 or (major == 3 and minor < 4): print("Home Assistant requires atleast Python 3.4") - sys.exit() + sys.exit(1) def ensure_pip(): @@ -26,7 +27,7 @@ def ensure_pip(): print("Home Assistant requires 'pip' to be installed.") print("Please install pip: " "https://pip.pypa.io/en/latest/installing.html") - sys.exit() + sys.exit(1) def ensure_config_path(config_dir): @@ -37,17 +38,17 @@ def ensure_config_path(config_dir): # Test if configuration directory exists if not os.path.isdir(config_dir): - if config_dir == config_util.get_default_config_dir(): - try: - os.mkdir(config_dir) - except OSError: - print(('Fatal Error: Unable to create default configuration ' - 'directory {} ').format(config_dir)) - sys.exit() - else: + if config_dir != config_util.get_default_config_dir(): print(('Fatal Error: Specified configuration directory does ' 'not exist {} ').format(config_dir)) - sys.exit() + sys.exit(1) + + try: + os.mkdir(config_dir) + except OSError: + print(('Fatal Error: Unable to create default configuration ' + 'directory {} ').format(config_dir)) + sys.exit(1) # Test if library directory exists if not os.path.isdir(lib_dir): @@ -56,13 +57,13 @@ def ensure_config_path(config_dir): except OSError: print(('Fatal Error: Unable to create library ' 'directory {} ').format(lib_dir)) - sys.exit() + sys.exit(1) config_path = config_util.ensure_config_exists(config_dir) if config_path is None: print('Error getting configuration path') - sys.exit() + sys.exit(1) return config_path @@ -110,7 +111,7 @@ def main(): if hass.config.api is not None: import webbrowser webbrowser.open(hass.config.api.base_url) - from homeassistant.const import EVENT_HOMEASSISTANT_START + hass.bus.listen_once(EVENT_HOMEASSISTANT_START, open_browser) hass.start() From 7343e33063d561dbc5ec2ef7930b7d081a9c7f4a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 29 Aug 2015 22:02:19 -0700 Subject: [PATCH 024/190] Some more frontend bug fixes --- homeassistant/components/frontend/version.py | 2 +- .../components/frontend/www_static/frontend.html | 16 ++++++++-------- .../frontend/www_static/home-assistant-polymer | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 6eea0024c30..f4a1ad184e7 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,2 +1,2 @@ """ DO NOT MODIFY. Auto-generated by build_frontend script """ -VERSION = "441ca74ed89c1db053bc2f55d57a48c6" +VERSION = "e9060d58fc9034468cfefa9794026d0c" diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 06f43dec560..e1b3b84dfc3 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -3825,7 +3825,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN } .content { padding: 0 16px 16px; - }
-

Initializing

+
Initializing
From 4cadc7df963f39f650c8e889d0bfb1bfb802e998 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 30 Aug 2015 13:48:40 -0700 Subject: [PATCH 044/190] Update demo component --- homeassistant/components/demo.py | 10 +++++----- homeassistant/components/light/demo.py | 9 ++++----- homeassistant/components/switch/demo.py | 2 +- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/demo.py b/homeassistant/components/demo.py index 71621502878..5dc91b28370 100644 --- a/homeassistant/components/demo.py +++ b/homeassistant/components/demo.py @@ -46,12 +46,12 @@ def setup(hass, config): hass, component, {component: {CONF_PLATFORM: 'demo'}}) # Setup room groups - lights = hass.states.entity_ids('light') - switches = hass.states.entity_ids('switch') + lights = sorted(hass.states.entity_ids('light')) + switches = sorted(hass.states.entity_ids('switch')) media_players = sorted(hass.states.entity_ids('media_player')) - group.setup_group(hass, 'living room', [lights[0], lights[1], switches[0], + group.setup_group(hass, 'living room', [lights[2], lights[1], switches[0], media_players[1]]) - group.setup_group(hass, 'bedroom', [lights[2], switches[1], + group.setup_group(hass, 'bedroom', [lights[0], switches[1], media_players[0]]) # Setup IP Camera @@ -68,7 +68,7 @@ def setup(hass, config): hass, 'script', {'script': { 'demo': { - 'alias': 'Demo {}'.format(lights[0]), + 'alias': 'Toggle {}'.format(lights[0].split('.')[1]), 'sequence': [{ 'execute_service': 'light.turn_off', 'service_data': {ATTR_ENTITY_ID: lights[0]} diff --git a/homeassistant/components/light/demo.py b/homeassistant/components/light/demo.py index 5c6b1ae6165..40a8cc023c5 100644 --- a/homeassistant/components/light/demo.py +++ b/homeassistant/components/light/demo.py @@ -12,9 +12,8 @@ from homeassistant.components.light import ( LIGHT_COLORS = [ - [0.861, 0.3259], - [0.6389, 0.3028], - [0.1684, 0.0416] + [0.368, 0.180], + [0.460, 0.470], ] @@ -22,8 +21,8 @@ def setup_platform(hass, config, add_devices_callback, discovery_info=None): """ Find and return demo lights. """ add_devices_callback([ DemoLight("Bed Light", False), - DemoLight("Ceiling", True), - DemoLight("Kitchen", True) + DemoLight("Ceiling Lights", True, LIGHT_COLORS[0]), + DemoLight("Kitchen Lights", True, LIGHT_COLORS[1]) ]) diff --git a/homeassistant/components/switch/demo.py b/homeassistant/components/switch/demo.py index 7b2f077d6a8..c097722ac4d 100644 --- a/homeassistant/components/switch/demo.py +++ b/homeassistant/components/switch/demo.py @@ -13,7 +13,7 @@ from homeassistant.const import DEVICE_DEFAULT_NAME def setup_platform(hass, config, add_devices_callback, discovery_info=None): """ Find and return demo switches. """ add_devices_callback([ - DemoSwitch('Ceiling', True), + DemoSwitch('Decorative Lights', True), DemoSwitch('AC', False) ]) From fb4121d4b4deb26159229176cccbdc229ff57563 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 30 Aug 2015 15:07:37 -0700 Subject: [PATCH 045/190] Fix components being loaded twice --- homeassistant/bootstrap.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 03cb762d56e..98c7ae63a8b 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -53,9 +53,6 @@ def setup_component(hass, domain, config=None): return False for component in components: - if component in hass.config.components: - continue - if not _setup_component(hass, component, config): return False @@ -78,6 +75,8 @@ def _handle_requirements(hass, component, name): def _setup_component(hass, domain, config): """ Setup a component for Home Assistant. """ + if domain in hass.config.components: + return True component = loader.get_component(domain) missing_deps = [dep for dep in component.DEPENDENCIES From 1958dfd0c110b475d294380ff086e31ba46e2d2b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 30 Aug 2015 15:45:26 -0700 Subject: [PATCH 046/190] Bugfix release frontend --- homeassistant/components/frontend/version.py | 2 +- .../frontend/www_static/frontend.html | 24 ++++++++++++------- .../www_static/home-assistant-polymer | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index f4a1ad184e7..f6ccfbe7a78 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,2 +1,2 @@ """ DO NOT MODIFY. Auto-generated by build_frontend script """ -VERSION = "e9060d58fc9034468cfefa9794026d0c" +VERSION = "6558cad990c03dd96f9e8b1035495cb6" diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index e1b3b84dfc3..19d13a1f889 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -3768,7 +3768,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN pointer-events: none; }
\ No newline at end of file +t._nextDay&&(t._a[lr]=24)}}function Ot(t){var e,n,r,i,o,u,a;e=t._w,null!=e.GG||null!=e.W||null!=e.E?(o=1,u=4,n=mt(e.GG,t._a[ar],lt(Dt(),1,4).year),r=mt(e.W,1),i=mt(e.E,1)):(o=t._locale._week.dow,u=t._locale._week.doy,n=mt(e.gg,t._a[ar],lt(Dt(),o,u).year),r=mt(e.w,1),null!=e.d?(i=e.d,o>i&&++r):i=null!=e.e?e.e+o:o),a=_t(n,r,i,u,o),t._a[ar]=a.year,t._dayOfYear=a.dayOfYear}function wt(t){if(t._f===e.ISO_8601)return void rt(t);t._a=[],l(t).empty=!0;var n,r,i,o,u,a=""+t._i,s=a.length,c=0;for(i=z(t._f,t._locale).match(Gn)||[],n=0;n0&&l(t).unusedInput.push(u),a=a.slice(a.indexOf(r)+r.length),c+=r.length),Bn[o]?(r?l(t).empty=!1:l(t).unusedTokens.push(o),V(o,r,t)):t._strict&&!r&&l(t).unusedTokens.push(o);l(t).charsLeftOver=s-c,a.length>0&&l(t).unusedInput.push(a),l(t).bigHour===!0&&t._a[lr]<=12&&t._a[lr]>0&&(l(t).bigHour=void 0),t._a[lr]=St(t._locale,t._a[lr],t._meridiem),bt(t),Q(t)}function St(t,e,n){var r;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?(r=t.isPM(n),r&&12>e&&(e+=12),r||12!==e||(e=0),e):e}function Mt(t){var e,n,r,i,o;if(0===t._f.length)return l(t).invalidFormat=!0,void(t._d=new Date(NaN));for(i=0;io)&&(r=o,n=e));a(t,n||e)}function Tt(t){if(!t._d){var e=I(t._i);t._a=[e.year,e.month,e.day||e.date,e.hour,e.minute,e.second,e.millisecond],bt(t)}}function jt(t){var e=new h(Q(Et(t)));return e._nextDay&&(e.add(1,"d"),e._nextDay=void 0),e}function Et(t){var e=t._i,n=t._f;return t._locale=t._locale||T(t._l),null===e||void 0===n&&""===e?d({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),v(e)?new h(Q(e)):(r(n)?Mt(t):n?wt(t):i(e)?t._d=e:It(t),t))}function It(t){var n=t._i;void 0===n?t._d=new Date:i(n)?t._d=new Date(+n):"string"==typeof n?it(t):r(n)?(t._a=o(n.slice(0),function(t){return parseInt(t,10)}),bt(t)):"object"==typeof n?Tt(t):"number"==typeof n?t._d=new Date(n):e.createFromInputFallback(t)}function Pt(t,e,n,r,i){var o={};return"boolean"==typeof n&&(r=n,n=void 0),o._isAMomentObject=!0,o._useUTC=o._isUTC=i,o._l=n,o._i=t,o._f=e,o._strict=r,jt(o)}function Dt(t,e,n,r){return Pt(t,e,n,r,!1)}function Ct(t,e){var n,i;if(1===e.length&&r(e[0])&&(e=e[0]),!e.length)return Dt();for(n=e[0],i=1;it&&(t=-t,n="-"),n+x(~~(t/60),2)+e+x(~~t%60,2)})}function Rt(t){var e=(t||"").match(nr)||[],n=e[e.length-1]||[],r=(n+"").match(Tr)||["-",0,0],i=+(60*r[1])+y(r[2]);return"+"===r[0]?i:-i}function zt(t,n){var r,o;return n._isUTC?(r=n.clone(),o=(v(t)||i(t)?+t:+Dt(t))-+r,r._d.setTime(+r._d+o),e.updateOffset(r,!1),r):Dt(t).local()}function Ht(t){return 15*-Math.round(t._d.getTimezoneOffset()/15)}function Yt(t,n){var r,i=this._offset||0;return null!=t?("string"==typeof t&&(t=Rt(t)),Math.abs(t)<16&&(t=60*t),!this._isUTC&&n&&(r=Ht(this)),this._offset=t,this._isUTC=!0,null!=r&&this.add(r,"m"),i!==t&&(!n||this._changeInProgress?ne(this,Zt(t-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,e.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?i:Ht(this)}function Gt(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}function Ut(t){return this.utcOffset(0,t)}function Ft(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ht(this),"m")),this}function Bt(){return this._tzm?this.utcOffset(this._tzm):"string"==typeof this._i&&this.utcOffset(Rt(this._i)),this}function Vt(t){return t=t?Dt(t).utcOffset():0,(this.utcOffset()-t)%60===0}function qt(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Wt(){if("undefined"!=typeof this._isDSTShifted)return this._isDSTShifted;var t={};if(p(t,this),t=Et(t),t._a){var e=t._isUTC?s(t._a):Dt(t._a);this._isDSTShifted=this.isValid()&&m(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Kt(){return!this._isUTC}function Jt(){return this._isUTC}function $t(){return this._isUTC&&0===this._offset}function Zt(t,e){var n,r,i,o=t,a=null;return Lt(t)?o={ms:t._milliseconds,d:t._days,M:t._months}:"number"==typeof t?(o={},e?o[e]=t:o.milliseconds=t):(a=jr.exec(t))?(n="-"===a[1]?-1:1,o={y:0,d:y(a[cr])*n,h:y(a[lr])*n,m:y(a[fr])*n,s:y(a[dr])*n,ms:y(a[pr])*n}):(a=Er.exec(t))?(n="-"===a[1]?-1:1,o={y:Xt(a[2],n),M:Xt(a[3],n),d:Xt(a[4],n),h:Xt(a[5],n),m:Xt(a[6],n),s:Xt(a[7],n),w:Xt(a[8],n)}):null==o?o={}:"object"==typeof o&&("from"in o||"to"in o)&&(i=te(Dt(o.from),Dt(o.to)),o={},o.ms=i.milliseconds,o.M=i.months),r=new kt(o),Lt(t)&&u(t,"_locale")&&(r._locale=t._locale),r}function Xt(t,e){var n=t&&parseFloat(t.replace(",","."));return(isNaN(n)?0:n)*e}function Qt(t,e){var n={milliseconds:0,months:0};return n.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(n.months,"M").isAfter(e)&&--n.months,n.milliseconds=+e-+t.clone().add(n.months,"M"),n}function te(t,e){var n;return e=zt(e,t),t.isBefore(e)?n=Qt(t,e):(n=Qt(e,t),n.milliseconds=-n.milliseconds,n.months=-n.months),n}function ee(t,e){return function(n,r){var i,o;return null===r||isNaN(+r)||(nt(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period)."),o=n,n=r,r=o),n="string"==typeof n?+n:n,i=Zt(n,r),ne(this,i,t),this}}function ne(t,n,r,i){var o=n._milliseconds,u=n._days,a=n._months;i=null==i?!0:i,o&&t._d.setTime(+t._d+o*r),u&&C(t,"Date",D(t,"Date")+u*r),a&&$(t,D(t,"Month")+a*r),i&&e.updateOffset(t,u||a)}function re(t,e){var n=t||Dt(),r=zt(n,this).startOf("day"),i=this.diff(r,"days",!0),o=-6>i?"sameElse":-1>i?"lastWeek":0>i?"lastDay":1>i?"sameDay":2>i?"nextDay":7>i?"nextWeek":"sameElse";return this.format(e&&e[o]||this.localeData().calendar(o,this,Dt(n)))}function ie(){return new h(this)}function oe(t,e){var n;return e=E("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=v(t)?t:Dt(t),+this>+t):(n=v(t)?+t:+Dt(t),n<+this.clone().startOf(e))}function ue(t,e){var n;return e=E("undefined"!=typeof e?e:"millisecond"),"millisecond"===e?(t=v(t)?t:Dt(t),+t>+this):(n=v(t)?+t:+Dt(t),+this.clone().endOf(e)e-o?(n=t.clone().add(i-1,"months"),r=(e-o)/(o-n)):(n=t.clone().add(i+1,"months"),r=(e-o)/(n-o)),-(i+r)}function fe(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function de(){var t=this.clone().utc();return 0e;e++)if(this._weekdaysParse[e]||(n=Dt([2e3,1]).day(e),r="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[e]=new RegExp(r.replace(".",""),"i")),this._weekdaysParse[e].test(t))return e}function Ue(t){var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=Re(t,this.localeData()),this.add(t-e,"d")):e}function Fe(t){var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")}function Be(t){return null==t?this.day()||7:this.day(this.day()%7?t:t-7)}function Ve(t,e){k(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function qe(t,e){return e._meridiemParse}function We(t){return"p"===(t+"").toLowerCase().charAt(0)}function Ke(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"}function Je(t,e){e[pr]=y(1e3*("0."+t))}function $e(){return this._isUTC?"UTC":""}function Ze(){return this._isUTC?"Coordinated Universal Time":""}function Xe(t){return Dt(1e3*t)}function Qe(){return Dt.apply(null,arguments).parseZone()}function tn(t,e,n){var r=this._calendar[t];return"function"==typeof r?r.call(e,n):r}function en(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,function(t){return t.slice(1)}),this._longDateFormat[t])}function nn(){return this._invalidDate}function rn(t){return this._ordinal.replace("%d",t)}function on(t){return t}function un(t,e,n,r){var i=this._relativeTime[n];return"function"==typeof i?i(t,e,n,r):i.replace(/%d/i,t)}function an(t,e){var n=this._relativeTime[t>0?"future":"past"];return"function"==typeof n?n(e):n.replace(/%s/i,e)}function sn(t){var e,n;for(n in t)e=t[n],"function"==typeof e?this[n]=e:this["_"+n]=e;this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function cn(t,e,n,r){var i=T(),o=s().set(r,e);return i[n](o,t)}function ln(t,e,n,r,i){if("number"==typeof t&&(e=t,t=void 0),t=t||"",null!=e)return cn(t,e,n,i);var o,u=[];for(o=0;r>o;o++)u[o]=cn(t,o,n,i);return u}function fn(t,e){return ln(t,e,"months",12,"month")}function dn(t,e){return ln(t,e,"monthsShort",12,"month")}function pn(t,e){return ln(t,e,"weekdays",7,"day")}function hn(t,e){return ln(t,e,"weekdaysShort",7,"day")}function vn(t,e){return ln(t,e,"weekdaysMin",7,"day")}function _n(){var t=this._data;return this._milliseconds=$r(this._milliseconds),this._days=$r(this._days),this._months=$r(this._months),t.milliseconds=$r(t.milliseconds),t.seconds=$r(t.seconds),t.minutes=$r(t.minutes),t.hours=$r(t.hours),t.months=$r(t.months),t.years=$r(t.years),this}function yn(t,e,n,r){var i=Zt(e,n);return t._milliseconds+=r*i._milliseconds,t._days+=r*i._days,t._months+=r*i._months,t._bubble()}function mn(t,e){return yn(this,t,e,1)}function gn(t,e){return yn(this,t,e,-1)}function bn(t){return 0>t?Math.floor(t):Math.ceil(t)}function On(){var t,e,n,r,i,o=this._milliseconds,u=this._days,a=this._months,s=this._data;return o>=0&&u>=0&&a>=0||0>=o&&0>=u&&0>=a||(o+=864e5*bn(Sn(a)+u),u=0,a=0),s.milliseconds=o%1e3,t=_(o/1e3),s.seconds=t%60,e=_(t/60),s.minutes=e%60,n=_(e/60),s.hours=n%24,u+=_(n/24),i=_(wn(u)),a+=i,u-=bn(Sn(i)),r=_(a/12),a%=12,s.days=u,s.months=a,s.years=r,this}function wn(t){return 4800*t/146097}function Sn(t){return 146097*t/4800}function Mn(t){var e,n,r=this._milliseconds;if(t=E(t),"month"===t||"year"===t)return e=this._days+r/864e5,n=this._months+wn(e),"month"===t?n:n/12;switch(e=this._days+Math.round(Sn(this._months)),t){case"week":return e/7+r/6048e5;case"day":return e+r/864e5;case"hour":return 24*e+r/36e5;case"minute":return 1440*e+r/6e4;case"second":return 86400*e+r/1e3;case"millisecond":return Math.floor(864e5*e)+r;default:throw new Error("Unknown unit "+t)}}function Tn(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*y(this._months/12)}function jn(t){return function(){return this.as(t)}}function En(t){return t=E(t),this[t+"s"]()}function In(t){return function(){return this._data[t]}}function Pn(){return _(this.days()/7)}function Dn(t,e,n,r,i){return i.relativeTime(e||1,!!n,t,r)}function Cn(t,e,n){var r=Zt(t).abs(),i=di(r.as("s")),o=di(r.as("m")),u=di(r.as("h")),a=di(r.as("d")),s=di(r.as("M")),c=di(r.as("y")),l=i0,l[4]=n,Dn.apply(null,l)}function An(t,e){return void 0===pi[t]?!1:void 0===e?pi[t]:(pi[t]=e,!0)}function xn(t){var e=this.localeData(),n=Cn(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)}function kn(){var t,e,n,r=hi(this._milliseconds)/1e3,i=hi(this._days),o=hi(this._months);t=_(r/60),e=_(t/60),r%=60,t%=60,n=_(o/12),o%=12;var u=n,a=o,s=i,c=e,l=t,f=r,d=this.asSeconds();return d?(0>d?"-":"")+"P"+(u?u+"Y":"")+(a?a+"M":"")+(s?s+"D":"")+(c||l||f?"T":"")+(c?c+"H":"")+(l?l+"M":"")+(f?f+"S":""):"P0D"}var Ln,Nn,Rn=e.momentProperties=[],zn=!1,Hn={},Yn={},Gn=/(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Un=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Fn={},Bn={},Vn=/\d/,qn=/\d\d/,Wn=/\d{3}/,Kn=/\d{4}/,Jn=/[+-]?\d{6}/,$n=/\d\d?/,Zn=/\d{1,3}/,Xn=/\d{1,4}/,Qn=/[+-]?\d{1,6}/,tr=/\d+/,er=/[+-]?\d+/,nr=/Z|[+-]\d\d:?\d\d/gi,rr=/[+-]?\d+(\.\d{1,3})?/,ir=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,or={},ur={},ar=0,sr=1,cr=2,lr=3,fr=4,dr=5,pr=6;k("M",["MM",2],"Mo",function(){return this.month()+1}),k("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),k("MMMM",0,0,function(t){return this.localeData().months(this,t)}),j("month","M"),Y("M",$n),Y("MM",$n,qn),Y("MMM",ir),Y("MMMM",ir),F(["M","MM"],function(t,e){e[sr]=y(t)-1}),F(["MMM","MMMM"],function(t,e,n,r){var i=n._locale.monthsParse(t,r,n._strict);null!=i?e[sr]=i:l(n).invalidMonth=t});var hr="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),vr="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),_r={};e.suppressDeprecationWarnings=!1;var yr=/^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mr=[["YYYYYY-MM-DD",/[+-]\d{6}-\d{2}-\d{2}/],["YYYY-MM-DD",/\d{4}-\d{2}-\d{2}/],["GGGG-[W]WW-E",/\d{4}-W\d{2}-\d/],["GGGG-[W]WW",/\d{4}-W\d{2}/],["YYYY-DDD",/\d{4}-\d{3}/]],gr=[["HH:mm:ss.SSSS",/(T| )\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss",/(T| )\d\d:\d\d:\d\d/],["HH:mm",/(T| )\d\d:\d\d/],["HH",/(T| )\d\d/]],br=/^\/?Date\((\-?\d+)/i;e.createFromInputFallback=et("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),k(0,["YY",2],0,function(){return this.year()%100}),k(0,["YYYY",4],0,"year"),k(0,["YYYYY",5],0,"year"),k(0,["YYYYYY",6,!0],0,"year"),j("year","y"),Y("Y",er),Y("YY",$n,qn),Y("YYYY",Xn,Kn),Y("YYYYY",Qn,Jn),Y("YYYYYY",Qn,Jn),F(["YYYYY","YYYYYY"],ar),F("YYYY",function(t,n){n[ar]=2===t.length?e.parseTwoDigitYear(t):y(t)}),F("YY",function(t,n){n[ar]=e.parseTwoDigitYear(t)}),e.parseTwoDigitYear=function(t){return y(t)+(y(t)>68?1900:2e3)};var Or=P("FullYear",!1);k("w",["ww",2],"wo","week"),k("W",["WW",2],"Wo","isoWeek"),j("week","w"),j("isoWeek","W"),Y("w",$n),Y("ww",$n,qn),Y("W",$n),Y("WW",$n,qn),B(["w","ww","W","WW"],function(t,e,n,r){e[r.substr(0,1)]=y(t)});var wr={dow:0,doy:6};k("DDD",["DDDD",3],"DDDo","dayOfYear"),j("dayOfYear","DDD"),Y("DDD",Zn),Y("DDDD",Wn),F(["DDD","DDDD"],function(t,e,n){n._dayOfYear=y(t)}),e.ISO_8601=function(){};var Sr=et("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments);return this>t?this:t}),Mr=et("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",function(){var t=Dt.apply(null,arguments);return t>this?this:t});Nt("Z",":"),Nt("ZZ",""),Y("Z",nr),Y("ZZ",nr),F(["Z","ZZ"],function(t,e,n){n._useUTC=!0,n._tzm=Rt(t)});var Tr=/([\+\-]|\d\d)/gi;e.updateOffset=function(){};var jr=/(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,Er=/^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;Zt.fn=kt.prototype;var Ir=ee(1,"add"),Pr=ee(-1,"subtract");e.defaultFormat="YYYY-MM-DDTHH:mm:ssZ";var Dr=et("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});k(0,["gg",2],0,function(){return this.weekYear()%100}),k(0,["GG",2],0,function(){return this.isoWeekYear()%100}),De("gggg","weekYear"),De("ggggg","weekYear"),De("GGGG","isoWeekYear"),De("GGGGG","isoWeekYear"),j("weekYear","gg"),j("isoWeekYear","GG"),Y("G",er),Y("g",er),Y("GG",$n,qn),Y("gg",$n,qn),Y("GGGG",Xn,Kn),Y("gggg",Xn,Kn),Y("GGGGG",Qn,Jn),Y("ggggg",Qn,Jn),B(["gggg","ggggg","GGGG","GGGGG"],function(t,e,n,r){e[r.substr(0,2)]=y(t)}),B(["gg","GG"],function(t,n,r,i){n[i]=e.parseTwoDigitYear(t)}),k("Q",0,0,"quarter"),j("quarter","Q"),Y("Q",Vn),F("Q",function(t,e){e[sr]=3*(y(t)-1)}),k("D",["DD",2],"Do","date"),j("date","D"),Y("D",$n),Y("DD",$n,qn),Y("Do",function(t,e){return t?e._ordinalParse:e._ordinalParseLenient}),F(["D","DD"],cr),F("Do",function(t,e){e[cr]=y(t.match($n)[0],10)});var Cr=P("Date",!0);k("d",0,"do","day"),k("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),k("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),k("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),k("e",0,0,"weekday"),k("E",0,0,"isoWeekday"),j("day","d"),j("weekday","e"),j("isoWeekday","E"),Y("d",$n),Y("e",$n),Y("E",$n),Y("dd",ir),Y("ddd",ir),Y("dddd",ir),B(["dd","ddd","dddd"],function(t,e,n){var r=n._locale.weekdaysParse(t);null!=r?e.d=r:l(n).invalidWeekday=t}),B(["d","e","E"],function(t,e,n,r){e[r]=y(t)});var Ar="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),xr="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),kr="Su_Mo_Tu_We_Th_Fr_Sa".split("_");k("H",["HH",2],0,"hour"),k("h",["hh",2],0,function(){return this.hours()%12||12}),Ve("a",!0),Ve("A",!1),j("hour","h"),Y("a",qe),Y("A",qe),Y("H",$n),Y("h",$n),Y("HH",$n,qn),Y("hh",$n,qn),F(["H","HH"],lr),F(["a","A"],function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t}),F(["h","hh"],function(t,e,n){e[lr]=y(t),l(n).bigHour=!0});var Lr=/[ap]\.?m?\.?/i,Nr=P("Hours",!0);k("m",["mm",2],0,"minute"),j("minute","m"),Y("m",$n),Y("mm",$n,qn),F(["m","mm"],fr);var Rr=P("Minutes",!1);k("s",["ss",2],0,"second"),j("second","s"),Y("s",$n),Y("ss",$n,qn),F(["s","ss"],dr);var zr=P("Seconds",!1);k("S",0,0,function(){return~~(this.millisecond()/100)}),k(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),k(0,["SSS",3],0,"millisecond"),k(0,["SSSS",4],0,function(){return 10*this.millisecond()}),k(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),k(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),k(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),k(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),k(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),j("millisecond","ms"),Y("S",Zn,Vn),Y("SS",Zn,qn),Y("SSS",Zn,Wn);var Hr;for(Hr="SSSS";Hr.length<=9;Hr+="S")Y(Hr,tr);for(Hr="S";Hr.length<=9;Hr+="S")F(Hr,Je);var Yr=P("Milliseconds",!1);k("z",0,0,"zoneAbbr"),k("zz",0,0,"zoneName");var Gr=h.prototype;Gr.add=Ir,Gr.calendar=re,Gr.clone=ie,Gr.diff=ce,Gr.endOf=Oe,Gr.format=pe,Gr.from=he,Gr.fromNow=ve,Gr.to=_e,Gr.toNow=ye,Gr.get=A,Gr.invalidAt=Pe,Gr.isAfter=oe,Gr.isBefore=ue,Gr.isBetween=ae,Gr.isSame=se,Gr.isValid=Ee,Gr.lang=Dr,Gr.locale=me,Gr.localeData=ge,Gr.max=Mr,Gr.min=Sr,Gr.parsingFlags=Ie,Gr.set=A,Gr.startOf=be,Gr.subtract=Pr,Gr.toArray=Te,Gr.toObject=je,Gr.toDate=Me,Gr.toISOString=de,Gr.toJSON=de,Gr.toString=fe,Gr.unix=Se,Gr.valueOf=we,Gr.year=Or,Gr.isLeapYear=ct,Gr.weekYear=Ae,Gr.isoWeekYear=xe,Gr.quarter=Gr.quarters=Ne,Gr.month=Z,Gr.daysInMonth=X,Gr.week=Gr.weeks=ht,Gr.isoWeek=Gr.isoWeeks=vt,Gr.weeksInYear=Le,Gr.isoWeeksInYear=ke,Gr.date=Cr,Gr.day=Gr.days=Ue,Gr.weekday=Fe,Gr.isoWeekday=Be,Gr.dayOfYear=yt,Gr.hour=Gr.hours=Nr,Gr.minute=Gr.minutes=Rr,Gr.second=Gr.seconds=zr,Gr.millisecond=Gr.milliseconds=Yr,Gr.utcOffset=Yt,Gr.utc=Ut,Gr.local=Ft,Gr.parseZone=Bt,Gr.hasAlignedHourOffset=Vt,Gr.isDST=qt,Gr.isDSTShifted=Wt,Gr.isLocal=Kt,Gr.isUtcOffset=Jt,Gr.isUtc=$t,Gr.isUTC=$t,Gr.zoneAbbr=$e,Gr.zoneName=Ze,Gr.dates=et("dates accessor is deprecated. Use date instead.",Cr),Gr.months=et("months accessor is deprecated. Use month instead",Z),Gr.years=et("years accessor is deprecated. Use year instead",Or),Gr.zone=et("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779",Gt);var Ur=Gr,Fr={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},Br={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},Vr="Invalid date",qr="%d",Wr=/\d{1,2}/,Kr={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},Jr=g.prototype;Jr._calendar=Fr,Jr.calendar=tn,Jr._longDateFormat=Br,Jr.longDateFormat=en,Jr._invalidDate=Vr,Jr.invalidDate=nn,Jr._ordinal=qr,Jr.ordinal=rn,Jr._ordinalParse=Wr,Jr.preparse=on,Jr.postformat=on,Jr._relativeTime=Kr,Jr.relativeTime=un,Jr.pastFuture=an,Jr.set=sn,Jr.months=W,Jr._months=hr,Jr.monthsShort=K,Jr._monthsShort=vr,Jr.monthsParse=J,Jr.week=ft,Jr._week=wr,Jr.firstDayOfYear=pt,Jr.firstDayOfWeek=dt,Jr.weekdays=ze,Jr._weekdays=Ar,Jr.weekdaysMin=Ye,Jr._weekdaysMin=kr,Jr.weekdaysShort=He,Jr._weekdaysShort=xr,Jr.weekdaysParse=Ge,Jr.isPM=We,Jr._meridiemParse=Lr,Jr.meridiem=Ke,S("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10,n=1===y(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th";return t+n}}),e.lang=et("moment.lang is deprecated. Use moment.locale instead.",S),e.langData=et("moment.langData is deprecated. Use moment.localeData instead.",T);var $r=Math.abs,Zr=jn("ms"),Xr=jn("s"),Qr=jn("m"),ti=jn("h"),ei=jn("d"),ni=jn("w"),ri=jn("M"),ii=jn("y"),oi=In("milliseconds"),ui=In("seconds"),ai=In("minutes"),si=In("hours"),ci=In("days"),li=In("months"),fi=In("years"),di=Math.round,pi={s:45,m:45,h:22,d:26,M:11},hi=Math.abs,vi=kt.prototype;vi.abs=_n,vi.add=mn,vi.subtract=gn,vi.as=Mn,vi.asMilliseconds=Zr,vi.asSeconds=Xr,vi.asMinutes=Qr,vi.asHours=ti,vi.asDays=ei,vi.asWeeks=ni,vi.asMonths=ri,vi.asYears=ii,vi.valueOf=Tn,vi._bubble=On,vi.get=En,vi.milliseconds=oi,vi.seconds=ui,vi.minutes=ai,vi.hours=si,vi.days=ci,vi.weeks=Pn,vi.months=li,vi.years=fi,vi.humanize=xn,vi.toISOString=kn,vi.toString=kn,vi.toJSON=kn,vi.locale=me,vi.localeData=ge,vi.toIsoString=et("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",kn),vi.lang=Dr,k("X",0,0,"unix"),k("x",0,0,"valueOf"),Y("x",er),Y("X",rr),F("X",function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))}),F("x",function(t,e,n){n._d=new Date(y(t))}),e.version="2.10.6",n(Dt),e.fn=Ur,e.min=At,e.max=xt,e.utc=s,e.unix=Xe,e.months=fn,e.isDate=i,e.locale=S,e.invalid=d,e.duration=Zt,e.isMoment=v,e.weekdays=pn,e.parseZone=Qe,e.localeData=T,e.isDuration=Lt,e.monthsShort=dn,e.weekdaysMin=vn,e.defineLocale=M,e.weekdaysShort=hn,e.normalizeUnits=E,e.relativeTimeThreshold=An;var _i=e;return _i})}).call(e,n(130)(t))},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"ha-card",properties:{title:{type:String},header:{type:String}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"ha-label-badge",properties:{value:{type:String},icon:{type:String},label:{type:String},description:{type:String},image:{type:String,observe:"imageChanged"}},computeClasses:function(t){return t&&t.length>5?"value big":"value"}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(55),o=r(i),u=n(2),a=n(1),s=r(a),c=6e4,l=u.util.parseDateTime;e["default"]=new s["default"]({is:"relative-ha-datetime",properties:{datetime:{type:String,observer:"datetimeChanged"},datetimeObj:{type:Object,observer:"datetimeObjChanged"},parsedDateTime:{type:Object},relativeTime:{type:String,value:"not set"}},created:function(){this.updateRelative=this.updateRelative.bind(this)},attached:function(){this._interval=setInterval(this.updateRelative,c)},detached:function(){clearInterval(this._interval)},datetimeChanged:function(t){this.parsedDateTime=t?l(t):null,this.updateRelative()},datetimeObjChanged:function(t){this.parsedDateTime=t,this.updateRelative()},updateRelative:function(){this.relativeTime=this.parsedDateTime?o["default"](this.parsedDateTime).fromNow():""}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(30),n(148),n(147),e["default"]=new o["default"]({is:"state-history-charts",properties:{stateHistory:{type:Object},isLoadingData:{type:Boolean,value:!1},apiLoaded:{type:Boolean,value:!1},isLoading:{type:Boolean,computed:"computeIsLoading(isLoadingData, apiLoaded)"},groupedStateHistory:{type:Object,computed:"computeGroupedStateHistory(isLoading, stateHistory)"},isSingleDevice:{type:Boolean,computed:"computeIsSingleDevice(stateHistory)"}},computeIsSingleDevice:function(t){return t&&1===t.size},computeGroupedStateHistory:function(t,e){if(t||!e)return{line:[],timeline:[]};var n={},r=[];e.forEach(function(t){if(t&&0!==t.size){var e=t.find(function(t){return"unit_of_measurement"in t.attributes}),i=e?e.attributes.unit_of_measurement:!1;i?i in n?n[i].push(t.toArray()):n[i]=[t.toArray()]:r.push(t.toArray())}}),r=r.length>0&&r;var i=Object.keys(n).map(function(t){return[t,n[t]]});return{line:i,timeline:r}},googleApiLoaded:function(){var t=this;google.load("visualization","1",{packages:["timeline","corechart"],callback:function(){return t.apiLoaded=!0}})},computeContentClasses:function(t){return t?"loading":""},computeIsLoading:function(t,e){return t||!e},computeIsEmpty:function(t){return t&&0===t.size},extractUnit:function(t){return t[0]},extractData:function(t){return t[1]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(17),e["default"]=new u["default"]({is:"state-card-toggle",properties:{stateObj:{type:Object,observer:"stateObjChanged"},toggleChecked:{type:Boolean,value:!1}},ready:function(){this.forceStateChange()},toggleChanged:function(t){var e=t.target.checked;e&&"off"===this.stateObj.state?this.turn_on():e||"on"!==this.stateObj.state||this.turn_off()},stateObjChanged:function(t){t&&this.updateToggle(t)},updateToggle:function(t){this.toggleChecked=t&&"on"===t.state},forceStateChange:function(){this.updateToggle(this.stateObj)},turn_on:function(){var t=this;i.serviceActions.callTurnOn(this.stateObj.entityId).then(function(){return t.forceStateChange()})},turn_off:function(){var t=this;i.serviceActions.callTurnOff(this.stateObj.entityId).then(function(){return t.forceStateChange()})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return i.reactor.evaluate(i.serviceGetters.canToggleEntity(t))}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=r;var i=n(2);t.exports=e["default"]},function(t,e){"use strict";function n(t,e){switch(t){case"homeassistant":return"home";case"group":return"homeassistant-24:group";case"device_tracker":return"social:person";case"switch":return"image:flash-on";case"media_player":var n="hardware:cast";return e&&"off"!==e&&"idle"!==e&&(n+="-connected"),n;case"sun":return"image:wb-sunny";case"light":return"image:wb-incandescent";case"simple_alarm":return"social:notifications";case"notify":return"announcement";case"thermostat":return"homeassistant-100:thermostat";case"sensor":return"visibility";case"configurator":return"settings";case"conversation":return"av:hearing";case"script":return"description";case"scene":return"social:pages";case"updater":return"update_available"===e?"icons:cloud-download":"icons:cloud-done";default:return"bookmark"}}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return u["default"](t).format("LT")}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=i;var o=n(55),u=r(o);t.exports=e["default"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e["default"]=function(t,e){r.authActions.validate(t,{rememberAuth:e,useStreaming:r.localStoragePreferences.useStreaming})},t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e){var n=null==t?void 0:t[e];return i(n)?n:void 0}var i=n(183);t.exports=r},function(t,e){"use strict";function n(t){return!!t&&"object"==typeof t}t.exports=n},function(t,e,n){"use strict";function r(t){return i(t)&&a.call(t)==o}var i=n(68),o="[object Function]",u=Object.prototype,a=u.toString;t.exports=r},function(t,e){ +"use strict";function n(t){var e=typeof t;return!!t&&("object"==e||"function"==e)}t.exports=n},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(3),i=["isLoadingEntityHistory"];e.isLoadingEntityHistory=i;var o=["currentEntityHistoryDate"];e.currentDate=o;var u=["entityHistory"];e.entityHistoryMap=u;var a=[o,u,function(t,e){return e.get(t)||r.toImmutable({})}];e.entityHistoryForCurrentDate=a;var s=[o,u,function(t,e){return!!e.get(t)}];e.hasDataForCurrentDate=s;var c=["recentEntityHistory"];e.recentEntityHistoryMap=c;var l=["recentEntityHistory"];e.recentEntityHistoryUpdatedMap=l},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({currentEntityHistoryDate:a["default"],entityHistory:c["default"],isLoadingEntityHistory:f["default"],recentEntityHistory:p["default"],recentEntityHistoryUpdated:v["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(195),a=i(u),s=n(196),c=i(s),l=n(197),f=i(l),d=n(198),p=i(d),h=n(199),v=i(h),_=n(194),y=r(_),m=n(69),g=r(m),b=y;e.actions=b;var O=g;e.getters=O},function(t,e,n){"use strict";function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var o=function(){function t(t,e){for(var n=0;n6e4}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(e,"__esModule",{value:!0});var u=n(221),a=n(241),s=i(a),c=n(243),l=i(c),f=n(245),d=i(f),p=n(22),h=r(p),v=n(36),_=r(v),y=n(10),m=r(y),g=n(70),b=r(g),O=n(37),w=r(O),S=n(206),M=r(S),T=n(73),j=r(T),E=n(76),I=r(E),P=n(39),D=r(P),C=n(19),A=r(C),x=n(40),k=r(x),L=n(42),N=r(L),R=n(238),z=r(R),H=n(11),Y=r(H),G=function U(){o(this,U);var t=s["default"]();Object.defineProperties(this,{demo:{value:!1,enumerable:!0},localStoragePreferences:{value:u.localStoragePreferences,enumerable:!0},reactor:{value:t,enumerable:!0},util:{value:d["default"],enumerable:!0},startLocalStoragePreferencesSync:{value:u.localStoragePreferences.startSync.bind(u.localStoragePreferences,t)},startUrlSync:{value:I.urlSync.startSync.bind(null,t)},stopUrlSync:{value:I.urlSync.stopSync.bind(null,t)}}),l["default"](this,t,{auth:h,config:_,entity:m,entityHistory:b,event:w,logbook:M,moreInfo:j,navigation:I,notification:D,service:A,stream:k,sync:N,voice:z,restApi:Y})};e["default"]=G,t.exports=e["default"]},function(t,e,n){"use strict";function r(t,e,n){var r=t?t.length:0;return n&&o(t,e,n)&&(e=!1),r?i(t,e):[]}var i=n(98),o=n(26);t.exports=r},function(t,e){"use strict";function n(t){var e=t?t.length:0;return e?t[e-1]:void 0}t.exports=n},function(t,e,n){"use strict";function r(t,e,n,r){var s=t?t.length:0;return s?(null!=e&&"boolean"!=typeof e&&(r=n,n=u(t,e,r)?void 0:e,e=!1),n=null==n?n:i(n,r,3),e?a(t,n):o(t,n)):[]}var i=n(24),o=n(110),u=n(26),a=n(124);t.exports=r},function(t,e,n){"use strict";function r(t,e,n){var r=a(t)?i:u;return e=o(e,n,3),r(t,e)}var i=n(93),o=n(24),u=n(47),a=n(9);t.exports=r},function(t,e,n){"use strict";function r(t,e){return i(t,o(e))}var i=n(89),o=n(54);t.exports=r},function(t,e,n){"use strict";function r(t,e,n){if(null==t)return[];n&&s(t,e,n)&&(e=void 0);var r=-1;e=i(e,n,3);var c=o(t,function(t,n,i){return{criteria:e(t,n,i),index:++r,value:t}});return u(c,a)}var i=n(24),o=n(47),u=n(108),a=n(114),s=n(26);t.exports=r},function(t,e,n){(function(e){"use strict";function r(t){var e=t?t.length:0;for(this.data={hash:a(null),set:new u};e--;)this.push(t[e])}var i=n(113),o=n(20),u=o(e,"Set"),a=o(Object,"create");r.prototype.push=i,t.exports=r}).call(e,function(){return this}())},function(t,e){"use strict";function n(t,e){for(var n=-1,r=t.length,i=Array(r);++ne&&!o||!i||n&&!u&&a||r&&a)return 1;if(e>t&&!n||!a||o&&!r&&i||u&&i)return-1}return 0}t.exports=n},function(t,e,n){"use strict";var r=n(100),i=n(115),o=i(r);t.exports=o},function(t,e,n){"use strict";function r(t,e,n,c){c||(c=[]);for(var l=-1,f=t.length;++le&&(e=-e>i?0:i+e),n=void 0===n||n>i?i:+n||0,0>n&&(n+=i),i=e>n?0:n-e>>>0,e>>>=0;for(var o=Array(i);++r=a,f=l?u():null,d=[];f?(r=o,c=!1):(l=!1,f=e?[]:d);t:for(;++nc))return!1;for(;++s0;++rd;d++)f._columns[d]=[];var p=0;return n&&u(),c.keySeq().sortBy(function(t){return i(t)}).forEach(function(t){if("a"===t)return void(f._demo=!0);var n=i(t);n>=0&&10>n?f._badges.push.apply(f._badges,r(c.get(t)).sortBy(o).toArray()):"group"===t?c.get(t).filter(function(t){return!t.attributes.auto}).sortBy(o).forEach(function(t){var n=s.util.expandGroup(t,e);n.forEach(function(t){return l[t.entityId]=!0}),a(t.entityDisplay,n.toArray())}):a(t,r(c.get(t)).sortBy(o).toArray())}),f},computeShouldRenderColumn:function(t,e){return 0===t||e.length},computeShowIntroduction:function(t,e,n){return 0===t&&(e||n._demo)},computeShowHideInstruction:function(t,e){return t.size>0&&!0&&!e._demo},computeStatesOfCard:function(t,e){return t[e]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{ +"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(29),n(134),n(58),e["default"]=new u["default"]({is:"logbook-entry",entityClicked:function(t){t.preventDefault(),i.moreInfoActions.selectEntity(this.entryObj.entityId)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(29),e["default"]=new u["default"]({is:"services-list",behaviors:[s["default"]],properties:{serviceDomains:{type:Array,bindNuclear:[i.serviceGetters.entityMap,function(t){return t.valueSeq().sortBy(function(t){return t.domain}).toJS()}]}},computeServices:function(t){return this.services.get(t).toArray()},serviceClicked:function(t){t.preventDefault(),this.fire("service-selected",{domain:t.model.domain.domain,service:t.model.service})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(90),o=r(i),u=n(86),a=r(u),s=n(88),c=r(s),l=n(91),f=r(l),d=n(1),p=r(d);e["default"]=new p["default"]({is:"state-history-chart-line",properties:{data:{type:Object,observer:"dataChanged"},unit:{type:String},isSingleDevice:{type:Boolean,value:!1},isAttached:{type:Boolean,value:!1,observer:"dataChanged"}},created:function(){this.style.display="block"},attached:function(){this.isAttached=!0},dataChanged:function(){this.drawChart()},drawChart:function(){if(this.isAttached){for(var t=p["default"].dom(this),e=this.unit,n=this.data;t.lastChild;)t.removeChild(t.lastChild);if(0!==n.length){var r=new google.visualization.LineChart(this),i=new google.visualization.DataTable;i.addColumn({type:"datetime",id:"Time"});var u={legend:{position:"top"},titlePosition:"none",vAxes:{0:{title:e}},hAxis:{format:"H:mm"},lineWidth:1,chartArea:{left:"60",width:"95%"},explorer:{actions:["dragToZoom","rightClickToReset","dragToPan"],keepInBounds:!0,axis:"horizontal",maxZoomIn:.1}};this.isSingleDevice&&(u.legend.position="none",u.vAxes[0].title=null,u.chartArea.left=40,u.chartArea.height="80%",u.chartArea.top=5,u.enableInteractivity=!1);var s=o["default"](a["default"](n),"lastChangedAsDate");s=f["default"](c["default"](s,function(t){return t.getTime()}));for(var l=[],d=new Array(n.length),h=0;hnew Date&&(a=new Date);var s=0;n.forEach(function(e){if(0!==e.length){var n=e[0].entityDisplay,r=void 0,i=null,o=null;e.forEach(function(e){null!==i&&e.state!==i?(r=e.lastChangedAsDate,t(n,i,o,r),i=e.state,o=r):null===i&&(i=e.state,o=e.lastChangedAsDate)}),t(n,i,o,a),s++}}),r.draw(i,{height:55+42*s,timeline:{showRowLabels:n.length>1},hAxis:{format:"H:mm"}})}}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);e["default"]=new u["default"]({is:"stream-status",behaviors:[s["default"]],properties:{isStreaming:{type:Boolean,bindNuclear:i.streamGetters.isStreamingEvents},hasError:{type:Boolean,bindNuclear:i.streamGetters.hasStreamingEventsError}},toggleChanged:function(){this.isStreaming?i.streamActions.stop():i.streamActions.start()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(31),n(59),n(162);var c=["camera","configurator"];e["default"]=new u["default"]({is:"more-info-dialog",behaviors:[s["default"]],properties:{stateObj:{type:Object,bindNuclear:i.moreInfoGetters.currentEntity,observer:"stateObjChanged"},stateHistory:{type:Object,bindNuclear:[i.moreInfoGetters.currentEntityHistory,function(t){return t?[t]:!1}]},isLoadingHistoryData:{type:Boolean,computed:"computeIsLoadingHistoryData(_delayedDialogOpen, _isLoadingHistoryData)"},_isLoadingHistoryData:{type:Boolean,bindNuclear:i.entityHistoryGetters.isLoadingEntityHistory},hasHistoryComponent:{type:Boolean,bindNuclear:i.configGetters.isComponentLoaded("history"),observer:"fetchHistoryData"},shouldFetchHistory:{type:Boolean,bindNuclear:i.moreInfoGetters.isCurrentEntityHistoryStale,observer:"fetchHistoryData"},showHistoryComponent:{type:Boolean,value:!1},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"},_delayedDialogOpen:{type:Boolean,value:!1},_boundOnBackdropTap:{type:Function,value:function(){return this._onBackdropTap.bind(this)}}},computeIsLoadingHistoryData:function(t,e){return!t||e},fetchHistoryData:function(){this.stateObj&&this.hasHistoryComponent&&this.shouldFetchHistory&&i.entityHistoryActions.fetchRecent(this.stateObj.entityId)},stateObjChanged:function(t){var e=this;return t?(this.showHistoryComponent=this.hasHistoryComponent&&-1===c.indexOf(this.stateObj.domain),void this.async(function(){e.fetchHistoryData(),e.dialogOpen=!0},10)):void(this.dialogOpen=!1)},dialogOpenChanged:function(t){var e=this;t?(this.$.dialog.backdropElement.addEventListener("click",this._boundOnBackdropTap),this.async(function(){return e._delayedDialogOpen=!0},10)):!t&&this.stateObj&&(i.moreInfoActions.deselectEntity(),this._delayedDialogOpen=!1)},_onBackdropTap:function(){this.$.dialog.backdropElement.removeEventListener("click",this._boundOnBackdropTap),this.dialogOpen=!1}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(4),u=r(o);n(142),n(158),n(157),n(156),n(153),n(154),n(155),n(159),n(150),e["default"]=new Polymer({is:"home-assistant-main",behaviors:[u["default"]],properties:{narrow:{type:Boolean,value:!1},activePane:{type:String,bindNuclear:i.navigationGetters.activePane,observer:"activePaneChanged"},isSelectedStates:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("states")},isSelectedHistory:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("history")},isSelectedLogbook:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("logbook")},isSelectedDevEvent:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("devEvent")},isSelectedDevState:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("devState")},isSelectedDevService:{type:Boolean,bindNuclear:i.navigationGetters.isActivePane("devService")},showSidebar:{type:Boolean,bindNuclear:i.navigationGetters.showSidebar}},listeners:{"open-menu":"openMenu","close-menu":"closeMenu"},openMenu:function(){this.narrow?this.$.drawer.openDrawer():i.navigationActions.showSidebar(!0)},closeMenu:function(){this.$.drawer.closeDrawer(),this.showSidebar&&i.navigationActions.showSidebar(!1)},activePaneChanged:function(){this.narrow&&this.$.drawer.closeDrawer()},attached:function(){i.startUrlSync()},computeForceNarrow:function(t,e){return t||!e},detached:function(){i.stopUrlSync()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=n(2),a=n(4),s=r(a),c=n(64),l=r(c);e["default"]=new o["default"]({is:"login-form",behaviors:[s["default"]],properties:{isValidating:{type:Boolean,observer:"isValidatingChanged",bindNuclear:u.authGetters.isValidating},isInvalid:{type:Boolean,bindNuclear:u.authGetters.isInvalidAttempt},errorMessage:{type:String,bindNuclear:u.authGetters.attemptErrorMessage}},listeners:{keydown:"passwordKeyDown","loginButton.click":"validatePassword"},observers:["validatingChanged(isValidating, isInvalid)"],validatingChanged:function(t,e){t||e||(this.$.passwordInput.value="")},isValidatingChanged:function(t){var e=this;t||this.async(function(){return e.$.passwordInput.focus()},10)},passwordKeyDown:function(t){13===t.keyCode?(this.validatePassword(),t.preventDefault()):this.isInvalid&&(this.isInvalid=!1)},validatePassword:function(){this.$.hideKeyboardOnFocus.focus(),l["default"](this.$.passwordInput.value,this.$.rememberLogin.checked)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(14),n(146),e["default"]=new u["default"]({is:"partial-dev-call-service",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},domain:{type:String,value:""},service:{type:String,value:""},serviceData:{type:String,value:""}},serviceSelected:function(t){this.domain=t.detail.domain,this.service=t.detail.service},callService:function(){var t=void 0;try{t=this.serviceData?JSON.parse(this.serviceData):{}}catch(e){return void alert("Error parsing JSON: "+e)}i.serviceActions.callService(this.domain,this.service,t)},computeFormClasses:function(t){return"layout "+(t?"vertical":"horizontal")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(14),n(138),e["default"]=new u["default"]({is:"partial-dev-fire-event",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},eventType:{type:String,value:""},eventData:{type:String,value:""}},eventSelected:function(t){this.eventType=t.detail.eventType},fireEvent:function(){var t=void 0;try{t=this.eventData?JSON.parse(this.eventData):{}}catch(e){return void alert("Error parsing JSON: "+e)}i.eventActions.fireEvent(this.eventType,t)},computeFormClasses:function(t){return"layout "+(t?"vertical":"horizontal")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o);n(14),n(135),e["default"]=new u["default"]({is:"partial-dev-set-state",properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},entityId:{type:String,value:""},state:{type:String,value:""},stateAttributes:{type:String,value:""}},setStateData:function(t){var e=t?JSON.stringify(t,null," "):"";this.$.inputData.value=e,this.$.inputDataWrapper.update(this.$.inputData)},entitySelected:function(t){var e=i.reactor.evaluate(i.entityGetters.byId(t.detail.entityId));this.entityId=e.entityId,this.state=e.state,this.stateAttributes=JSON.stringify(e.attributes,null," ")},handleSetState:function(){var t=void 0;try{t=this.stateAttributes?JSON.parse(this.stateAttributes):{}}catch(e){return void alert("Error parsing JSON: "+e)}i.entityActions.save({entityId:this.entityId,state:this.state,attributes:t})},computeFormClasses:function(t){return"layout "+(t?"vertical":"horizontal")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(14),n(59),e["default"]=new u["default"]({is:"partial-history",behaviors:[s["default"]],properties:{narrow:{type:Boolean},showMenu:{type:Boolean,value:!1},isDataLoaded:{type:Boolean,bindNuclear:i.entityHistoryGetters.hasDataForCurrentDate,observer:"isDataLoadedChanged"},stateHistory:{type:Object,bindNuclear:i.entityHistoryGetters.entityHistoryForCurrentDate},isLoadingData:{type:Boolean,bindNuclear:i.entityHistoryGetters.isLoadingEntityHistory},selectedDate:{type:String,value:null,bindNuclear:i.entityHistoryGetters.currentDate}},isDataLoadedChanged:function(t){t||this.async(function(){return i.entityHistoryActions.fetchSelectedDate()},1)},handleRefreshClick:function(){i.entityHistoryActions.fetchSelectedDate()},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new Pikaday({field:this.$.datePicker.inputElement,onSelect:i.entityHistoryActions.changeCurrentDate})},detached:function(){this.datePicker.destroy()},computeContentClasses:function(t){return"flex content "+(t?"narrow":"wide")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(14),n(141),n(30),e["default"]=new u["default"]({is:"partial-logbook",behaviors:[s["default"]],properties:{narrow:{type:Boolean,value:!1},showMenu:{type:Boolean,value:!1},selectedDate:{type:String,bindNuclear:i.logbookGetters.currentDate},isLoading:{type:Boolean,bindNuclear:i.logbookGetters.isLoadingEntries},isStale:{type:Boolean,bindNuclear:i.logbookGetters.isCurrentStale,observer:"isStaleChanged"},entries:{type:Array,bindNuclear:[i.logbookGetters.currentEntries,function(t){return t.toArray()}]},datePicker:{type:Object}},isStaleChanged:function(t){var e=this;t&&this.async(function(){return i.logbookActions.fetchDate(e.selectedDate)},1)},handleRefresh:function(){i.logbookActions.fetchDate(this.selectedDate)},datepickerFocus:function(){this.datePicker.adjustPosition()},attached:function(){this.datePicker=new Pikaday({field:this.$.datePicker.inputElement,onSelect:i.logbookActions.changeCurrentDate})},detached:function(){this.datePicker.destroy()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(14),n(143),n(144),e["default"]=new u["default"]({is:"partial-zone",behaviors:[s["default"]],properties:{narrow:{type:Boolean,value:!1},isFetching:{type:Boolean,bindNuclear:i.syncGetters.isFetching},isStreaming:{type:Boolean,bindNuclear:i.streamGetters.isStreamingEvents},canListen:{type:Boolean,bindNuclear:[i.voiceGetters.isVoiceSupported,i.configGetters.isComponentLoaded("conversation"),function(t,e){return t&&e}]},isListening:{type:Boolean,bindNuclear:i.voiceGetters.isListening},showListenInterface:{type:Boolean,bindNuclear:[i.voiceGetters.isListening,i.voiceGetters.isTransmitting,function(t,e){return t||e}]},introductionLoaded:{type:Boolean,bindNuclear:i.configGetters.isComponentLoaded("introduction")},locationName:{type:String,bindNuclear:i.configGetters.locationName},showMenu:{type:Boolean,value:!1,observer:"windowChange"},states:{type:Object,bindNuclear:i.entityGetters.visibleEntityMap},columns:{type:Number}},created:function(){var t=this;this.windowChange=this.windowChange.bind(this);for(var e=[],n=0;5>n;n++)e.push(278+278*n);this.mqls=e.map(function(e){var n=window.matchMedia("(min-width: "+e+"px)");return n.addListener(t.windowChange),n})},detached:function(){var t=this;this.mqls.forEach(function(e){return e.removeListener(t.windowChange)})},windowChange:function(){var t=this.mqls.reduce(function(t,e){return t+e.matches},0);this.columns=Math.max(1,t-this.showMenu)},handleRefresh:function(){i.syncActions.fetchAll()},handleListenClick:function(){this.isListening?i.voiceActions.stop():i.voiceActions.listen()},computeDomains:function(t){return t.keySeq().toArray()},computeMenuButtonClass:function(t,e){return!t&&e?"invisible":""},computeStatesOfDomain:function(t,e){return t.get(e).toArray()},computeListenButtonIcon:function(t){return t?"av:mic-off":"av:mic"},computeRefreshButtonClass:function(t){return t?"ha-spin":void 0},computeShowIntroduction:function(t,e){return t||0===e.size},toggleMenu:function(){this.fire("open-menu")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);e["default"]=new u["default"]({is:"notification-manager",behaviors:[s["default"]],properties:{text:{type:String,bindNuclear:i.notificationGetters.lastNotificationMessage,observer:"showNotification"}},showNotification:function(t){t&&this.$.toast.show()}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"more-info-camera",properties:{stateObj:{type:Object},dialogOpen:{type:Boolean}},imageLoaded:function(){this.fire("iron-resize")},computeCameraImageUrl:function(t){return t?"/api/camera_proxy_stream/"+this.stateObj.entityId:"data:image/gif;base64,R0lGODlhAQABAAAAACw="}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(30),e["default"]=new u["default"]({is:"more-info-configurator",behaviors:[s["default"]],properties:{stateObj:{type:Object},action:{type:String,value:"display"},isStreaming:{type:Boolean,bindNuclear:i.streamGetters.isStreamingEvents},isConfigurable:{type:Boolean,computed:"computeIsConfigurable(stateObj)"},isConfiguring:{type:Boolean,value:!1},submitCaption:{type:String,computed:"computeSubmitCaption(stateObj)"}},computeIsConfigurable:function(t){return"configure"===t.state},computeSubmitCaption:function(t){return t.attributes.submit_caption||"Set configuration"},submitClicked:function(){var t=this;this.isConfiguring=!0;var e={configure_id:this.stateObj.attributes.configure_id};i.serviceActions.callService("configurator","configure",e).then(function(){t.isConfiguring=!1,t.isStreaming||i.syncActions.fetchAll()},function(){t.isConfiguring=!1})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=n(177),a=r(u);n(163),n(164),n(168),n(161),n(169),n(167),n(165),n(166),n(160),n(170),e["default"]=new o["default"]({is:"more-info-content",properties:{stateObj:{type:Object,observer:"stateObjChanged"},dialogOpen:{type:Boolean,value:!1,observer:"dialogOpenChanged"}},dialogOpenChanged:function(t){var e=o["default"].dom(this);e.lastChild&&(e.lastChild.dialogOpen=t)},stateObjChanged:function(t,e){var n=o["default"].dom(this);if(!t)return void(n.lastChild&&n.removeChild(n.lastChild));var r=a["default"](t);if(e&&a["default"](e)===r)n.lastChild.dialogOpen=this.dialogOpen,n.lastChild.stateObj=t;else{n.lastChild&&n.removeChild(n.lastChild);var i=document.createElement("more-info-"+r);i.stateObj=t,i.dialogOpen=this.dialogOpen,n.appendChild(i)}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i),u=["entity_picture","friendly_name","unit_of_measurement"];e["default"]=new o["default"]({is:"more-info-default",properties:{stateObj:{type:Object}},computeDisplayAttributes:function(t){return t?Object.keys(t.attributes).filter(function(t){return-1===u.indexOf(t)}):[]},getAttributeValue:function(t,e){return t.attributes[e]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(4),s=r(a);n(31),e["default"]=new u["default"]({is:"more-info-group",behaviors:[s["default"]],properties:{stateObj:{type:Object},states:{type:Array,bindNuclear:[i.moreInfoGetters.currentEntity,i.entityGetters.entityMap,function(t,e){return t?t.attributes.entity_id.map(e.get.bind(e)):[]}]}},updateStates:function(){this.states=this.stateObj&&this.stateObj.attributes.entity_id?stateStore.gets(this.stateObj.attributes.entity_id).toArray():[]}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(33),s=r(a);n(139);var c=["brightness","xy_color"];e["default"]=new u["default"]({is:"more-info-light",properties:{stateObj:{type:Object,observer:"stateObjChanged"},brightnessSliderValue:{type:Number,value:0}},stateObjChanged:function(t){var e=this;t&&"on"===t.state&&(this.brightnessSliderValue=t.attributes.brightness),this.async(function(){return e.fire("iron-resize")},500)},computeClassNames:function(t){return s["default"](t,c)},brightnessSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||(0===e?i.serviceActions.callTurnOff(this.stateObj.entityId):i.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,brightness:e}))},colorPicked:function(t){var e=t.detail.rgb;i.serviceActions.callService("light","turn_on",{entity_id:this.stateObj.entityId,rgb_color:[e.r,e.g,e.b]})}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(33),s=r(a),c=["volume_level"];e["default"]=new u["default"]({is:"more-info-media_player",properties:{stateObj:{type:Object,observer:"stateObjChanged"},isOff:{type:Boolean,value:!1},isPlaying:{type:Boolean,value:!1},isMuted:{type:Boolean,value:!1},volumeSliderValue:{type:Number,value:0},supportsPause:{type:Boolean,value:!1},supportsVolumeSet:{type:Boolean,value:!1},supportsVolumeMute:{type:Boolean,value:!1},supportsPreviousTrack:{type:Boolean,value:!1},supportsNextTrack:{type:Boolean,value:!1},supportsTurnOn:{type:Boolean,value:!1},supportsTurnOff:{type:Boolean,value:!1}},stateObjChanged:function(t){var e=this;t&&(this.isOff="off"===t.state,this.isPlaying="playing"===t.state,this.volumeSliderValue=100*t.attributes.volume_level,this.isMuted=t.attributes.is_volume_muted,this.supportsPause=0!==(1&t.attributes.supported_media_commands),this.supportsVolumeSet=0!==(4&t.attributes.supported_media_commands),this.supportsVolumeMute=0!==(8&t.attributes.supported_media_commands),this.supportsPreviousTrack=0!==(16&t.attributes.supported_media_commands),this.supportsNextTrack=0!==(32&t.attributes.supported_media_commands),this.supportsTurnOn=0!==(128&t.attributes.supported_media_commands),this.supportsTurnOff=0!==(256&t.attributes.supported_media_commands)),this.async(function(){return e.fire("iron-resize")},500)},computeClassNames:function(t){return s["default"](t,c)},computeIsOff:function(t){return"off"===t.state},computeMuteVolumeIcon:function(t){return t?"av:volume-off":"av:volume-up"},computePlaybackControlIcon:function(){return this.isPlaying?this.supportsPause?"av:pause":"av:stop":"av:play-arrow"},computeHidePowerButton:function(t,e,n){return t?!e:!n},handleTogglePower:function(){this.callService(this.isOff?"turn_on":"turn_off")},handlePrevious:function(){this.callService("media_previous_track")},handlePlaybackControl:function(){this.callService("media_play_pause")},handleNext:function(){this.callService("media_next_track")},handleVolumeTap:function(){this.supportsVolumeMute&&this.callService("volume_mute",{is_volume_muted:!this.isMuted})},volumeSliderChanged:function(t){var e=parseFloat(t.target.value),n=e>0?e/100:0;this.callService("volume_set",{volume_level:n})},callService:function(t,e){var n=e||{};n.entity_id=this.stateObj.entityId,i.serviceActions.callService("media_player",t,n)}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);e["default"]=new o["default"]({is:"more-info-script",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(63),u=r(o),a=i.util.parseDateTime;e["default"]=new Polymer({is:"more-info-sun",properties:{stateObj:{type:Object},risingDate:{type:Object,computed:"computeRising(stateObj)"},settingDate:{type:Object,computed:"computeSetting(stateObj)"}},computeRising:function(t){return a(t.attributes.next_rising)},computeSetting:function(t){return a(t.attributes.next_setting)},computeOrder:function(t,e){return t>e?["set","ris"]:["ris","set"]},itemCaption:function(t){return"ris"===t?"Rising ":"Setting "},itemDate:function(t){return"ris"===t?this.risingDate:this.settingDate},itemValue:function(t){return u["default"](this.itemDate(t))}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(2),o=n(1),u=r(o),a=n(33),s=r(a),c=["away_mode"];e["default"]=new u["default"]({is:"more-info-thermostat",properties:{stateObj:{type:Object,observer:"stateObjChanged"},tempMin:{type:Number},tempMax:{type:Number},targetTemperatureSliderValue:{type:Number},awayToggleChecked:{type:Boolean}},stateObjChanged:function(t){this.targetTemperatureSliderValue=t.state,this.awayToggleChecked="on"===t.attributes.away_mode,this.tempMin=t.attributes.min_temp,this.tempMax=t.attributes.max_temp},computeClassNames:function(t){return s["default"](t,c)},targetTemperatureSliderChanged:function(t){var e=parseInt(t.target.value,10);isNaN(e)||i.serviceActions.callService("thermostat","set_temperature",{entity_id:this.stateObj.entityId,temperature:e})},toggleChanged:function(t){var e=t.target.checked;e&&"off"===this.stateObj.attributes.away_mode?this.service_set_away(!0):e||"on"!==this.stateObj.attributes.away_mode||this.service_set_away(!1)},service_set_away:function(t){var e=this;i.serviceActions.callService("thermostat","set_away_mode",{away_mode:t,entity_id:this.stateObj.entityId}).then(function(){return e.stateObjChanged(e.stateObj)})}}),t.exports=e["default"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e["default"]=new Polymer({is:"more-info-updater",properties:{stateObj:{type:Object}},updateTapped:function(){r.serviceActions.callService("updater","update",{})},linkTapped:function(){window.open(this.stateObj.attributes.link,"_blank")}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17),n(32),e["default"]=new o["default"]({is:"state-card-configurator",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17);var u=["playing","paused"];e["default"]=new o["default"]({is:"state-card-media_player",properties:{stateObj:{type:Object},isPlaying:{type:Boolean,computed:"computeIsPlaying(stateObj)"}},computeIsPlaying:function(t){return-1!==u.indexOf(t.state)},computePrimaryText:function(t,e){return e?t.attributes.media_title:t.stateDisplay},computeSecondaryText:function(t){var e=void 0;return"music"===t.attributes.media_content_type?t.attributes.media_artist:"tvshow"===t.attributes.media_content_type?(e=t.attributes.media_series_title,t.attributes.media_season&&t.attributes.media_episode&&(e+=" S"+t.attributes.media_season+"E"+t.attributes.media_episode),e):t.attributes.app_name?t.attributes.app_name:""}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(32),n(60),e["default"]=new o["default"]({is:"state-card-scene",properties:{stateObj:{type:Object},allowToggle:{type:Boolean,value:!1,computed:"computeAllowToggle(stateObj)"}},computeAllowToggle:function(t){return"off"===t.state||t.attributes.active_requested}}),t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=r(i);n(17),e["default"]=new o["default"]({is:"state-card-thermostat",properties:{stateObj:{type:Object}}}),t.exports=e["default"]},function(t,e){"use strict";function n(t){return{attached:function(){var e=this;this.__unwatchFns=Object.keys(this.properties).reduce(function(n,r){if(!("bindNuclear"in e.properties[r]))return n;var i=e.properties[r].bindNuclear;if(!i)throw new Error("Undefined getter specified for key "+r);return e[r]=t.evaluate(i),n.concat(t.observe(i,function(t){e[r]=t}))},[])},detached:function(){for(;this.__unwatchFns.length;)this.__unwatchFns.shift()()}}}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){return-1!==a.indexOf(t.domain)?t.domain:u["default"](t.entityId)?"toggle":"display"}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=i;var o=n(61),u=r(o),a=["thermostat","configurator","scene","media_player"];t.exports=e["default"]},function(t,e){"use strict";function n(t){return-1!==r.indexOf(t.domain)?t.domain:"default"}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n;var r=["light","group","sun","configurator","thermostat","script","media_player","camera","updater"];t.exports=e["default"]},function(t,e){"use strict";function n(t,e,n){var r=1-t-e,i=n/255,o=i/e*t,u=i/e*r,a=1.612*o-.203*i-.302*u,s=.509*-o+1.412*i+.066*u,c=.026*o-.072*i+.962*u;a=.0031308>=a?12.92*a:1.055*Math.pow(a,1/2.4)-.055,s=.0031308>=s?12.92*s:1.055*Math.pow(s,1/2.4)-.055,c=.0031308>=c?12.92*c:1.055*Math.pow(c,1/2.4)-.055;var l=Math.max(a,s,c);return a/=l,s/=l,c/=l,a=255*a,0>a&&(a=255),s=255*s,0>s&&(s=255),c=255*c,0>c&&(c=255),[a,s,c]}Object.defineProperty(e,"__esModule",{value:!0}),e["default"]=n,t.exports=e["default"]},function(t,e,n){var r;(function(t,i,o){"use strict";(function(){function u(t){return"function"==typeof t||"object"==typeof t&&null!==t}function a(t){return"function"==typeof t}function s(t){return"object"==typeof t&&null!==t}function c(t){W=t}function l(t){Z=t}function f(){return function(){t.nextTick(_)}}function d(){return function(){q(_)}}function p(){var t=0,e=new tt(_),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}function h(){var t=new MessageChannel;return t.port1.onmessage=_,function(){t.port2.postMessage(0)}}function v(){return function(){setTimeout(_,1)}}function _(){for(var t=0;$>t;t+=2){var e=rt[t],n=rt[t+1];e(n),rt[t]=void 0,rt[t+1]=void 0}$=0}function y(){try{var t=n(250);return q=t.runOnLoop||t.runOnContext,d()}catch(e){return v()}}function m(){}function g(){return new TypeError("You cannot resolve a promise with itself")}function b(){return new TypeError("A promises callback cannot return that same promise.")}function O(t){try{return t.then}catch(e){return at.error=e,at}}function w(t,e,n,r){try{t.call(e,n,r)}catch(i){return i}}function S(t,e,n){Z(function(t){var r=!1,i=w(n,e,function(n){r||(r=!0,e!==n?j(t,n):I(t,n))},function(e){r||(r=!0,P(t,e))},"Settle: "+(t._label||" unknown promise"));!r&&i&&(r=!0,P(t,i))},t)}function M(t,e){e._state===ot?I(t,e._result):e._state===ut?P(t,e._result):D(e,void 0,function(e){j(t,e)},function(e){P(t,e)})}function T(t,e){ +if(e.constructor===t.constructor)M(t,e);else{var n=O(e);n===at?P(t,at.error):void 0===n?I(t,e):a(n)?S(t,e,n):I(t,e)}}function j(t,e){t===e?P(t,g()):u(e)?T(t,e):I(t,e)}function E(t){t._onerror&&t._onerror(t._result),C(t)}function I(t,e){t._state===it&&(t._result=e,t._state=ot,0!==t._subscribers.length&&Z(C,t))}function P(t,e){t._state===it&&(t._state=ut,t._result=e,Z(E,t))}function D(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+ot]=n,i[o+ut]=r,0===o&&t._state&&Z(C,t)}function C(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r,i,o=t._result,u=0;uu;u++)D(r.resolve(t[u]),void 0,e,n);return i}function H(t){var e=this;if(t&&"object"==typeof t&&t.constructor===e)return t;var n=new e(m);return j(n,t),n}function Y(t){var e=this,n=new e(m);return P(n,t),n}function G(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function U(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function F(t){this._id=ht++,this._state=void 0,this._result=void 0,this._subscribers=[],m!==t&&(a(t)||G(),this instanceof F||U(),L(this,t))}function B(){var t;if("undefined"!=typeof i)t=i;else if("undefined"!=typeof self)t=self;else try{t=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var n=t.Promise;(!n||"[object Promise]"!==Object.prototype.toString.call(n.resolve())||n.cast)&&(t.Promise=vt)}var V;V=Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)};var q,W,K,J=V,$=0,Z=({}.toString,function(t,e){rt[$]=t,rt[$+1]=e,$+=2,2===$&&(W?W(_):K())}),X="undefined"!=typeof window?window:void 0,Q=X||{},tt=Q.MutationObserver||Q.WebKitMutationObserver,et="undefined"!=typeof t&&"[object process]"==={}.toString.call(t),nt="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,rt=new Array(1e3);K=et?f():tt?p():nt?h():void 0===X?y():v();var it=void 0,ot=1,ut=2,at=new A,st=new A;N.prototype._validateInput=function(t){return J(t)},N.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")},N.prototype._init=function(){this._result=new Array(this.length)};var ct=N;N.prototype._enumerate=function(){for(var t=this,e=t.length,n=t.promise,r=t._input,i=0;n._state===it&&e>i;i++)t._eachEntry(r[i],i)},N.prototype._eachEntry=function(t,e){var n=this,r=n._instanceConstructor;s(t)?t.constructor===r&&t._state!==it?(t._onerror=null,n._settledAt(t._state,e,t._result)):n._willSettleAt(r.resolve(t),e):(n._remaining--,n._result[e]=t)},N.prototype._settledAt=function(t,e,n){var r=this,i=r.promise;i._state===it&&(r._remaining--,t===ut?P(i,n):r._result[e]=n),0===r._remaining&&I(i,r._result)},N.prototype._willSettleAt=function(t,e){var n=this;D(t,void 0,function(t){n._settledAt(ot,e,t)},function(t){n._settledAt(ut,e,t)})};var lt=R,ft=z,dt=H,pt=Y,ht=0,vt=F;F.all=lt,F.race=ft,F.resolve=dt,F.reject=pt,F._setScheduler=c,F._setAsap=l,F._asap=Z,F.prototype={constructor:F,then:function(t,e){var n=this,r=n._state;if(r===ot&&!t||r===ut&&!e)return this;var i=new this.constructor(m),o=n._result;if(r){var u=arguments[r-1];Z(function(){k(r,i,u,o)})}else D(n,i,t,e);return i},"catch":function(t){return this.then(null,t)}};var _t=B,yt={Promise:vt,polyfill:_t};n(249).amd?(r=function(){return yt}.call(e,n,e,o),!(void 0!==r&&(o.exports=r))):"undefined"!=typeof o&&o.exports?o.exports=yt:"undefined"!=typeof this&&(this.ES6Promise=yt),_t()}).call(void 0)}).call(e,n(246),function(){return this}(),n(247)(t))},function(t,e,n){"use strict";var r=n(65),i=r(Date,"now"),o=i||function(){return(new Date).getTime()};t.exports=o},function(t,e){"use strict";function n(t){return"number"==typeof t&&t>-1&&t%1==0&&r>=t}var r=9007199254740991;t.exports=n},function(t,e,n){"use strict";var r=n(65),i=n(181),o=n(66),u="[object Array]",a=Object.prototype,s=a.toString,c=r(Array,"isArray"),l=c||function(t){return o(t)&&i(t.length)&&s.call(t)==u};t.exports=l},function(t,e,n){"use strict";function r(t){return null==t?!1:i(t)?l.test(s.call(t)):o(t)&&u.test(t)}var i=n(67),o=n(66),u=/^\[object .+?Constructor\]$/,a=Object.prototype,s=Function.prototype.toString,c=a.hasOwnProperty,l=RegExp("^"+s.call(c).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");t.exports=r},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(179),i=n(22),o=function(t,e,n){var o=arguments.length<=3||void 0===arguments[3]?null:arguments[3],u=t.evaluate(i.getters.authInfo),a=u.host+"/api/"+n;return new r.Promise(function(t,n){var r=new XMLHttpRequest;r.open(e,a,!0),r.setRequestHeader("X-HA-access",u.authToken),r.onload=function(){if(r.status>199&&r.status<300)t(JSON.parse(r.responseText));else try{n(JSON.parse(r.responseText))}catch(e){n({})}},r.onerror=function(){return n({})},o?r.send(JSON.stringify(o)):r.send()})};e["default"]=o,t.exports=e["default"]},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){var n=arguments.length<=2||void 0===arguments[2]?{}:arguments[2],r=n.useStreaming,i=void 0===r?t.evaluate(s.getters.isSupported):r,o=n.rememberAuth,u=void 0===o?!1:o,f=n.host,d=void 0===f?"":f;t.dispatch(a["default"].VALIDATING_AUTH_TOKEN,{authToken:e,host:d}),c.actions.fetchAll(t).then(function(){t.dispatch(a["default"].VALID_AUTH_TOKEN,{authToken:e,host:d,rememberAuth:u}),i?s.actions.start(t,{syncOnInitialConnect:!1}):c.actions.start(t,{skipInitialSync:!0})},function(){var e=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],n=e.message,r=void 0===n?l:n;t.dispatch(a["default"].INVALID_AUTH_TOKEN,{errorMessage:r})})}function o(t){t.dispatch(a["default"].LOG_OUT,{})}Object.defineProperty(e,"__esModule",{value:!0}),e.validate=i,e.logOut=o;var u=n(21),a=r(u),s=n(40),c=n(42),l="Unexpected result from API"},function(t,e){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=[["authAttempt","isValidating"],function(t){return!!t}];e.isValidating=n;var r=[["authAttempt","isInvalid"],function(t){return!!t}];e.isInvalidAttempt=r;var i=["authAttempt","errorMessage"];e.attemptErrorMessage=i;var o=["rememberAuth"];e.rememberAuth=o;var u=[["authAttempt","authToken"],["authAttempt","host"],function(t,e){return{authToken:t,host:e}}];e.attemptAuthInfo=u;var a=["authCurrent","authToken"];e.currentAuthToken=a;var s=[a,["authCurrent","host"],function(t,e){return{authToken:t,host:e}}];e.currentAuthInfo=s;var c=[n,["authAttempt","authToken"],["authCurrent","authToken"],function(t,e,n){return t?e:n}];e.authToken=c;var l=[n,u,s,function(t,e,n){return t?e:n}];e.authInfo=l},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t){if(null==t)throw new TypeError("Cannot destructure undefined")}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function a(t,e){var n=e.authToken,r=e.host;return d.toImmutable({authToken:n,host:r,isValidating:"true",isInvalid:!1,errorMessage:""})}function s(t,e){return i(e),_.getInitialState()}function c(t,e){var n=e.errorMessage;return t.withMutations(function(t){return t.set("isValidating",!1).set("isInvalid","true").set("errorMessage",n)})}Object.defineProperty(e,"__esModule",{value:!0});var l=function(){function t(t,e){for(var n=0;n1&&t.set(p,r)})}function a(){return v.getInitialState()}Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(t,e){for(var n=0;no}Object.defineProperty(e,"__esModule",{value:!0});var i=n(3),o=6e4,u=["currentLogbookDate"];e.currentDate=u;var a=[u,["logbookEntriesUpdated"],function(t,e){return r(e.get(t))}];e.isCurrentStale=a;var s=[u,["logbookEntries"],function(t,e){return e.get(t)||i.toImmutable([])}];e.currentEntries=s;var c=["isLoadingLogbookEntries"];e.isLoadingEntries=c},function(t,e,n){"use strict";function r(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e["default"]=t,e}function i(t){return t&&t.__esModule?t:{"default":t}}function o(t){t.registerStores({currentLogbookDate:a["default"],isLoadingLogbookEntries:c["default"],logbookEntries:f["default"],logbookEntriesUpdated:p["default"]})}Object.defineProperty(e,"__esModule",{value:!0}),e.register=o;var u=n(208),a=i(u),s=n(209),c=i(s),l=n(210),f=i(l),d=n(211),p=i(d),h=n(204),v=r(h),_=n(205),y=r(_),m=v;e.actions=m;var g=y;e.getters=g},function(t,e,n){"use strict";function r(t){return t&&t.__esModule?t:{"default":t}}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}Object.defineProperty(e,"__esModule",{value:!0});var u=function(){function t(t,e){for(var n=0;n1)for(var n=1;n \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index a97750b5dd8..5a103bf5e98 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit a97750b5dd887af42030e01bfe50bc3c60183514 +Subproject commit 5a103bf5e98848318a9550d066a9de2e9289314b From b1876d586efb061750681e8bfebe6b3a2f13edfa Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sun, 30 Aug 2015 20:01:02 -0400 Subject: [PATCH 047/190] Fixed importing of dependency for map tracker. --- .../components/device_tracker/nmap_tracker.py | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/homeassistant/components/device_tracker/nmap_tracker.py b/homeassistant/components/device_tracker/nmap_tracker.py index ee1650594ee..f2da939a79e 100644 --- a/homeassistant/components/device_tracker/nmap_tracker.py +++ b/homeassistant/components/device_tracker/nmap_tracker.py @@ -26,13 +26,6 @@ from collections import namedtuple import subprocess import re -try: - from libnmap.process import NmapProcess - from libnmap.parser import NmapParser, NmapParserException - LIB_LOADED = True -except ImportError: - LIB_LOADED = False - import homeassistant.util.dt as dt_util from homeassistant.const import CONF_HOSTS from homeassistant.helpers import validate_config @@ -52,13 +45,16 @@ REQUIREMENTS = ['python-libnmap==0.6.1'] def get_scanner(hass, config): """ Validates config and returns a Nmap scanner. """ + # pylint: disable=unused-variable if not validate_config(config, {DOMAIN: [CONF_HOSTS]}, _LOGGER): return None - if not LIB_LOADED: + try: + import libnmap # noqa + except ImportError: _LOGGER.error("Error while importing dependency python-libnmap.") - return False + return None scanner = NmapDeviceScanner(config[DOMAIN]) @@ -83,6 +79,13 @@ class NmapDeviceScanner(object): """ This class scans for devices using nmap """ def __init__(self, config): + from libnmap.process import NmapProcess + from libnmap.parser import NmapParser, NmapParserException + + self.nmap_process = NmapProcess + self.nmap_parser = NmapParser + self.nmap_parser_exception = NmapParserException + self.last_results = [] self.hosts = config[CONF_HOSTS] @@ -116,7 +119,7 @@ class NmapDeviceScanner(object): """ Parses results from an nmap scan. Returns True if successful, False otherwise. """ try: - results = NmapParser.parse(stdout) + results = self.nmap_parser.parse(stdout) now = dt_util.now() self.last_results = [] for host in results.hosts: @@ -134,7 +137,7 @@ class NmapDeviceScanner(object): self.last_results.append(device) _LOGGER.info("nmap scan successful") return True - except NmapParserException as parse_exc: + except self.nmap_parser_exception as parse_exc: _LOGGER.error("failed to parse nmap results: %s", parse_exc.msg) self.last_results = [] return False @@ -159,7 +162,7 @@ class NmapDeviceScanner(object): target_list = [t.ip for t in exclude_targets] options += " --exclude {}".format(",".join(target_list)) - nmap = NmapProcess(targets=self.hosts, options=options) + nmap = self.nmap_process(targets=self.hosts, options=options) nmap.run() From e6ac22514027c1e697504d7cc8276c666b047dad Mon Sep 17 00:00:00 2001 From: Ryan Kraus Date: Sun, 30 Aug 2015 20:22:02 -0400 Subject: [PATCH 048/190] Fixed device tracker to install scanner requirements. --- homeassistant/components/device_tracker/__init__.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/device_tracker/__init__.py b/homeassistant/components/device_tracker/__init__.py index 099c23973f0..234863c571c 100644 --- a/homeassistant/components/device_tracker/__init__.py +++ b/homeassistant/components/device_tracker/__init__.py @@ -15,6 +15,7 @@ from homeassistant.helpers import validate_config from homeassistant.helpers.entity import _OVERWRITE import homeassistant.util as util import homeassistant.util.dt as dt_util +from homeassistant.bootstrap import prepare_setup_platform from homeassistant.helpers.event import track_utc_time_change from homeassistant.const import ( @@ -62,9 +63,9 @@ def setup(hass, config): return False tracker_type = config[DOMAIN].get(CONF_PLATFORM) - - tracker_implementation = get_component( - 'device_tracker.{}'.format(tracker_type)) + + tracker_implementation = \ + prepare_setup_platform(hass, config, DOMAIN, tracker_type) if tracker_implementation is None: _LOGGER.error("Unknown device_tracker type specified: %s.", From e95d4cf19cf2a96340a4383bb1dac26d03ed1f5b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 30 Aug 2015 17:48:06 -0700 Subject: [PATCH 049/190] Update screenshot --- docs/architecture-remote.png | Bin 79012 -> 0 bytes docs/architecture.png | Bin 32012 -> 0 bytes docs/screenshots.png | Bin 139670 -> 54390 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 docs/architecture-remote.png delete mode 100644 docs/architecture.png diff --git a/docs/architecture-remote.png b/docs/architecture-remote.png deleted file mode 100644 index 3109c92184675a0542757e43a006fe019ae50b50..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79012 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

3hxJg;cu2Ixj2c5Nq-)B2 zh;?LB>D7CyR|2VNHpTsK}#k zVbFKPHE%{d|3XA5SA;Xahgue{3c9y+`2uO1=dc?Z15c1H2~^}^SB8*K z$!xbo=6YDcAk~3L*6h>|Mxa7t7Qo@=AXh|vjDfbH_#g_+=1hEkpIW29g7P|oS+k!4 z%B>FdskXjs5iM!*y6`n?W(_z=M`B3n6O_DL3V7O}`C6>-s#M$VkA4r>if-BIm33NC zo#B{eBFiV%-#V-?vF|n};vPcMDX%{Hoq9T&Nqp$>#Q!3ez3geacNL(@4OHldEAv+P zaJ7+O^JRZHNzxfSdbCJXTpLinaFq57`)g)0{g^q0x{taZGCk3xHH?wg(!Fr9SH0}H zyBuZ`x4aYAPrfuu(Pjs`=Lis^AHPJu8J!QQ8qUvy++kMV6Z%ybz2&sxl}lsx<5#3& zL87`sez|?*s)cnDI$%C=ZF5s5>?5m`4+%)@NkdtEgeEBlf0!xYzO<_1*1j)e-&d_*W-_Yu*W^&@S(P+e^*7FL_eznoiq5l#+-bK!2jQ6a)S(Gygs^A zG}1e{DDKM--QBy6Gj!U=C`$ORd+TC}808pP0tfFnp!34ewFL!# zIY}sA5Zu4F#23QHOIN7Bi6^~U$j;3K_5rMR?*AW8N73-lqe(?12vCMSN&f<=Z2QY; zExp;xAaA>;up9*)0a$q__q{KXx4D{UDuKgvewpT5?HRtO40~&L!_sFSsP%iAw(tLm z{i=;5#b|N^5!^0brTSSsUnqtgmE9d2p5{OHJ2@>ey{SG+7~Dp2p&ah1iv6^vfuFG+ ztqlZy{e5%=^Kd1VlN9=B4VAjA(1;5^6E-$wXbR%*dxwXtTfE3_eYb+*OBT_Y)hQqG z$^5E}vfRJB@->5`WKv_YcdY*!+rzqF3~*`MbQwn!&C zBh>o~@zOXqXD98Z_rAl%TOMD$`&#Drv;59*@x)=_ z8XHTS1y6m915!!S^(D7DNT2!f%o#Vs-ELdU+1-dXvk0G$oB07B!BGtR*aJ)8C|1{m zLJ%7zl*;trz3DAQt>eXyTDHh;$aKKTID_5+Eq@Ju;Fq$Pi`=MY0j%~XL?18iNzRoJ zg{4=1%W|08g`F2C8n-6qv;k#~0v)?rFO_QDAIJkG81mZ_}nWk-7jhoI=A!(gob2BIArurVd}`>&R>t%tmr-0Zh* z!JKt#=S!yNxoz%(D9LajWW!v`fyHSB+`7T@;(?bICm45E3=IxxKhMyYv(wLA{zwJg zi0eec<)tc+vsk9weR3O@;74~xKzfGtp8RI^<%QQeC?TI|r12?DI*pM-#{I0|#-A4p ztngc}Ju}nfuN*u(Ca|ZGwWFskFJ{9oLtPjBOyAN*ct$t@OpH*dD1`}5hc>I}X`Pt6 z*ouA#hgY&(Qv*>LMchp%)oW+dCBHdueVv2Z$nHCbY>Nn741vhbyAXdTS)+!C>9ZU7 zJAhO}S2TUY3^60y%>fH>&UElKlNs&M5}u?)2QXuI`<^#*$82A_O*lzmCzs+Hp-6j| z-8j@h!SeK$@Zx1{?i1|Sju$2u9r>vDSmyE7oA5OeMyT<_Bi<)X$Mc@YF7=Ka*HQL+ z81%n6e`C{b`PZE;l)LFz+v#ihqRRPP%-7rN0P;oo(lq?Gu~OVA%e$2)I=#{U0iL!@ zM}CR>RKS0FK~}$*zd5~jqX-vvpZYFY<4Wy`?l)g^ZMbkzniZuV7g$|XkU>e5HMV;x zYHx<5xh@F~4OC+W9_V})GJ2iBrZ4w-#h$jyeHr!(-CVR6505B-urIiv-EmG;f{OAn zzmJ_0EuUAitm+JUz!Cg?WMZRzrTN2qUa@G4Vst6)OETDGIb5P#@w^>x4$QnLa6BLA z?r@RyP-fu(K3iX6-X=npWgSqgRgX4@)CxYq0?&oYb1-zs`J-_EbS+TU!qU0sQ~aEX zhrcNnpG8G+HW3x8x1h*rJlC#XKuz|F!6!d0UGR|D+qt05AGXFkwJP(ikA8bJX++o9 z#-lbOfY!lmSH@cnd>YXvIeL9ZwRgTI${G#&;Z;#;UWxjWFt6?zjjCQ< z$K5CXBDCOrUxAV@?jv|1R%DOVKummFLe5=s5vci_4pq^6QLG3hXysWec^2YyHh22D zk?<)Ry>6?W4=gl{RGe}R@{=HX z`ud|wUxt{&NhcDM^A)HI)7!b>gtr7ryRW>{{WF08#f;0s>}jA-09)d~sc zZAK83JULBy4Z3W5R=Rh!%ZI@-bEnBqxS$te+ajyLuJHymsR){(DvF+fF@S96)lS=7 z*gHE0J8B@G8dLiypqX7A^pAEbu?M`}StaKHBuR0|9J3405V(*n8%9F}ZADqJPzxrC zkMSmI=~&ui*B^I&skHi6Lpp09LraxKnL*`mlBX|u-o00g#r6&`TzUVHa21^w>d&JRZ_TmvI7;7c z-&2V2*=c}&*SWO&%V)gMT#S5|)O_mp15Maw=^o?=_9JZ1Uo#OkG$_=A*%%uY#EP(B z>Z(Z(3Jo8>!BM|U>F@QIwq$62=1yesNw&U7Ah)2l^!(Zn_38_zm3O0UEO`781!|sl z;QzidXN4!B++l{`X$TXU`z=tha}WhEbpK=_j|NjneP$=ErR?^CNBo^j(hV8@fJWva`KR{#6CGzx|Xb657Ua zrHtalpzv`1**f^un(*sTdd#Mcn^2E(5qSHA%j1BcUuO=lOW_3d@50ESx56)04Sbv= zO{Y8L2`E64VE7EnQ%;zV1|uOY+nZ92d9KOX9pmXy#IGLF-sk2T{}ThA>w30@yGsDaY#C{mB0cWby1#@P+*ney}$SDH2<}N!Rc(;uNSC9 zDGO5W0}tHFl1?KUo;WQEo~D0hlw&q)^$}G;siR(5R$OUs9`!m?x34MA>~mrlQb~@U z{Q5T)64Th_gsg3i-3t-ml|F{Tg>|7PdZ3!3jh%b;h#e+u^AWDRq{5B7am~V;tDaoA z_bN92CkY!U~KfOmhrCVCq&Q7Hsg9`Gp06B}K)&X$1Pza+nyI zmo-i_KNNde^c{V$&O=jPce9bC`uT<1hEhQA0I=7_^v3}x+|I83x? ziFiMIhF;>1;|)U6HM%;lnk-OR~!fEkX2m_B1A$i?gxihn5`5nQghq}2;@MQlL5W=nRLE9Z^mv6Y!8MMl;G`6a&Edzzo?Y>_VV z>9|9uN#0SOXv0>TD|30JAR9yMcy?Hnx77v2ftcutR&tU z!0O8^D*2;pl`-<;r;f-G3!_fKMgSM__JrPg7bFOPnR}ohe(vGo?x{5uaMcx4c)hl76jt z2hE>}UCQcBrB9;*D}Uc>B4q&YXx5-8QeFkKg&0?Lz=Z3+Bj z${V+<0hRu*HJ8|wo5?d466FkFlUoVKyg&0dZsoTfnjXSk)O=Khv?SEQwv3^JK{u!^#)g|VP`wKuVfS7N-`SM^jULIZE>%n0FMpNvf1~m6NX+I0>)ydo z@m|{hkc6!*fEsB=!~*<+jFycxO>pz2*;8`@>O~?{Py0VmYhEe`yc`RuY@y;k5=Vg) z_boQ{`90F2nMhQ~E!E8d+z$Ix=Kp^H5xY8xr{iSm=@qiw&azVnpXK}K%;&WA;xXBm z2e*K{i-~4sdqnjjy_-^Q%W}Gb&kw`aF2&K&P-L)Kp*`sBp!k6%rN~=z-Tu%27uu;J zU@RE$5W-rTwYywP0#5twUQ6p>!f;2eD%HxM$F(T0%AXBF>rQ3fC?3c3<&0U`GE{S# zAuF7I^lBeP^4&zsA;jqRf;8U^Xo5m2?ju?g|Q|AF9;bp!xkzM zI%)2^L}xqO^+sgu9>^1c0L3$3=KM7jT<(%8+*T^Td3Pg4Y79ZA+pe~oaw=dxbMgQt zwyIB~lG|FcTsIghSOmsuwroIOzSQchl9B z^qB11_7q+upR^?S&H>Jf2cBEG%dV&wWOwQ8e@Fku^k)AZ`j5aVVMIXS;BJ539Ki&% z_qO2t^iiw{)b-3nY=s$BCEf^pQ}R`s6(V|m+4$V5PbD2Gk4oQ@zF{h zI0yyoF}P9Rn9YWf6m}0iB^k|R>^8YE{I;y*TzNTnswl)Z)5Q|yWpVVfy^!9j{hf(; z_q_G3cp)q5e`~0_i{}NZoD0M~YA0j@K3CQk8m{_csLO3x=5{TIfpB71=VN;(S+o-FTc3%NtD@|_z1AE&9oFH>*(rlomezCNgEa)!=+V`&o&Yd-HcDn%J>J9L%P2CUEB-o}zh^3=ZGo7qT`8yews<*Bo9UcUF2 z^V&#x)BA_op&s%!I{*X%LOcdy-D+pm5|Km>9j3t(#gw_LCN)u1L9O|a6RQ)ee&qkR zOhFCqsc8~{#T;yfYf6DE!yTYp`>jQ>WF$??`~a-{?S_;6QR(Q5wNTsq)Z=$cxaulr zsFG&#U8UH@cJ%GQ53H2c*-4=fWHlkT$%p5ehrShPy08;G=a~j2e*E9ihm?TrJ+*9b zU4IgM7@*4=d>2>gQkXdJrWcBV>#UhUzQyU58N0w+n>J+W>=TqO8j^T9O?sih~ zTTB@feq4^HME4=Q&d)RxrBs&?AR%<4rQp{vZBQj&Ps7W1Fa4E|iB;>Qba1m0bQ>M6 z&iOkp0m7HKY0K07FjT&CEL!$`9dV>AsP?mwzzr~aRGWoTpS4*TiOi#6PV|(*>0xcE zcH5NYl_SNb|=4rNq&jAtSKzrEQa-l$~}=6^o-=>DE^f-mwBQCmU4^u+2BG zw8VkE+sKB*AKS3Y0nf>57thK&=)?Uw(J6IK`V*St2o&huVyLr3G5vh3k+4Bzr6H_s zhuiwD>Ux^Iy!;gI*#T2z>K5@&FAo1F(4;uMo=|7y8nqKpIp&}PG=4OG;o?}vvN;a2 zvv(p}VvIoFoOKsSusl|-orj3)!R6>DTN5UouJe}rDvl-7Vx(A^kMvfP2`GFDP+*wzVtF`Lx+#MT-^hjr z^*T_SJ~txGP!}F--?TB3`|G|v&VjPU-gmJ%6MNX8msY)L%>a(h*3FZO8`IAcKHr@t z8rn5T^0G1J9e6-aNW1JT?UMWl#Xv^e_2de3VhKfRZt@W=qJY{4%jMI2oUIX1qWq_% z#;L)>NPpISzN&Ut`i3Z0j!fgsKOT(rU%h%$)$OiB`oS~PiYcese~5ZEcmgHjKkbf% zO9-{cYY(0PRx%Avu8fa8T8qxv7vZf-S#5+3ck=X=ACc(r{}qibUd;fK51xPu;?h0? zmV^&|*uGG$Eoths5GQP7H?an8oU0?%!ubMLqcgj6DY<9*FYSMhL9k&*B3FVQ5w zQ^oGMO7D_RI$8Xzy)+o)HBkZ;Yh`P)D?XaySacQy+qDc`q3&{)z7u4qbyfz9u9C<# z%xhcYk}d;9kj5EDf#eydmt8y&jBqc9On)9*_RTd|z$Ul-ppeOFv9B_8_c@%-Zi~3e zb35N@4N-iF-RaElu%};tcD|$R@48mawW`Juw?!6jzmtvqi@?G{s?^|b&3jAf80DGz zTAh+c1qK>W%jI>5n3|9VI=bqKNt?3{=0wT*S-#lNdZ%I2u8(9Yq*ZY|Rn>r-X8Z@1 z{)2$qS>U}}DNOY;HdsAvBy`*1bHf*R6Mw7hEbV{0u;?5#AtZZ?5HBN9^jGq{Vn|Qg ze&LDxxbZcv4WK#|ZMe1iu-H6)p9$eZ+eBZKzkH4)bt4EhTOrBx2$;-zxZtDxV$_uh z`)^~4@|V4tMv8odl`FR_32F25zVw~*<&?xT{kpho%ZR&;l(72(S^ENlty3JjolT_Y z<0b($Up8#uC)hiiwh%`YS=%tfysOu}HL}u%u3u;wFAisD{40a?W(5&-J9c>{dK!>$ z2M#)SqbeJ>s)+qc0fMdx0)P#+fMbG0dzU^>1I*!((d(jR2Nb07ov4=mL^gmix z4Vy6$jNK;slK$DAuo5u0WFIZPSv_DP z8&0>Y!BZm-mZD>JJDYCAiD`JL=*2W8-XE3B@L}T6fo6^B7h&mGJb-KpV1x?()K$n7 z-khU-)S~d`Qx)VdXx8iJBAdnAZj=v!t;-&Ib}BzMQa?2)v0ltk@w;koWN^Y_PvXHWtQT&!9Cw#1N{O7Q`Kn0^^`FFJ;)ASYZ5MK}-3R4G z9gXZ30z7U{Jo0}MmpxML8M`R)ag3koZsL^q(ilHQfez`V5%Mtg_K=yvLtu>TY_KBa zg0k%-{(GNAGwI&eRMN^Z(vm}6=1O9bv9?qrvi5#pNi97jD72{j-_|pIS zv4Pw%idbHfiKP_ed`4(y4aI+|9!q)ooN~1Zp6ew(Z1Mx7{^S45GM|iv^mp!=!js;h ztq%ud5%-TG>b}SPC&v0jUcq|7k0&k@K!Lk`v#RqR^?%R6@*~AK&r+VtyEsF9X-1L% z*|B6|3gA?dUewiid7J8g8gw)J?>@3mthg{vqXN&5qV&h$v0$u!*GDNB{|+W10QB{2 ztQ2S=miZm*fBQ|WE?~W&$Ad%s(Sp2)rOC_IRQkR5ztJM0n@4|#8g4`BKm<{gZAT>R zUqeU*YgT}`gA#Id!*$=2{NM4@&rRZcW{L|d1(r`mIOQ+ z$82ZX+PMFA&6ZMgOdJuQB2)o%@C&WT8UJ$XK93o3{Pzi(UY3NbV3q_)Bg7H@M+7eGIGtRlMe43pz^=`jqmB2b zn9|5?O$Rt4F&}a_k*r@B*kXTRQwpC{2OFrTm`aXEXo$6E+ z=+ssP<$lXPyI*kjwsMXiHVu}30 z1Jf}fogrKd_~1+HGU1&8)2hPz{?@~dW|9>wcoh&oGO^!w+w(6PUyVn90D5^t!P*AZM{XCL^=+C zM91A*l&b`_EUJchY}Lpl(@sB}8AJgQ*;N9r-DIm=o=B$!o`61R&5a&eCo8;s zk`NHex3a3Dgq#_6+0buqpxmpqIucy1*IAG(AhymH8o?H3xCz*=pcOJza6D5ee3tO$ zd*ND9m%nD7u7tLkjM?By&yLinBX_1c zM7w02a);R7|bW1MGeLn zzw1DV-!uarlU|PpJ@{*WK|R3E^JRcY-H$RT&r~I+%6W6wViukz*N;x+hYM^e9XI0W z)luBKL#*wag^H-2%BACg3plg%Oe!LCq5e-9Pgnsp>KjqgXMdd!v=f1+DbSl(5~&lB z!i~f|bMc}rgvS`$T%<%lV_MSQ6+Y8o(?T?dt&kQ+RCmv&xq~Vg0xQ9QCMSzV2b5uy z^ilHI^I;lAgROKLZvE|Dctj-M&Ea41MC6nc&eGKNX*7^MHE&coHv3R~KDkBRNu3V%&`K-TOFihZAb=*jpSF}qEh7!FKVplMq?gpXO-Prk~}tMy3&DOL2?Z8ztOwTGZiR5&ORcz@TNm7ON8u60ae`LN7%xh+i|$i zFu55LGZ};#X&~&Y1_oq2ptFAuB8$2F2m|Pxkw%(3$ZiQJJW8L_As5L>qHeRQ0IBWI zWBCWa#CW9uY)bY`HB-&-WW3UR2yErkLLO2&N+L8@^gmz@P>yT8ui8fxBeLQ>4rM_o zPu6RFhuGrbuw0VzVL55tB~AuW-syb(3!cWr;hPxX!37^n=GeN*R{uo)M`(QMPqrTY z6VDXhcBIag@P@nf9>2kC4!Tyf}O`WYj-BAxn@C zQ6bA?k6^5E2IA@717puW5pO_zUL)B_Y(x3_p(J1q39Duxh~ZdC3KwzqYSBG(B0OWz z8fLq1OkOF-p4yRVc!~=k-j>ZCjEEH8sgnSD zXx{tlppf<@!iG9qQ`k$pXYCQnyZ`$bxMav4ZTQ@H;;O$vv$((zn4$1j*XpYRDc2IroU49I&(llhsMVU?&ZU`FWf5c+bTCVdA$*^jQjg9*HLAG&FP7E z(@~#o+gJIux1VB;+Ks{<=Ksw)C{Se^=;U34X7WGdfh*s4c_LK6Dtr1-aI94$i_+hH zS^*cZZ;}X>E*4&1hd%ihJH)O;inTkiX9D_g)hOP*&{52&dtkFq@BFq~F_b^n>i0StvN@d{?+Z}17U|7`BW(7;8 z&RZoxViD`&fm-x18{BMD;lID;IL7D7pq`|XjQfbPK$#T=Nmpsfg%k@+>&vS0;rfj8 zrGt?wiA$bwXyj)CqN1eWt7ZH~VGZpU$p zzrUU!qpbRsQ_gx)l_BF!W~yTCsw!+>Z>8n1A*Ozd@B+1!Viq=XrM_-Ct#5FH>y|&?p}_F0{;!1pOGIWl zi0olf#uo84ol~G;0g_6Wd>XYjM=MUi`(7`W&7tmC8G=iAt7&e z)8V{WEA51`RMW=-FRberLT9g#U<(n=rxGoO&r>taq$Wik1;%aoy!o3wU_TB6Pv9lTF_6 z&4RE!pO?Pg!)JsX^Zn@a@AKNWuIZ~_{%kLR9;!lCBU=W0X1W|IgX(EVUa(xgA{ri; zb|%=5F!Bix6|lgNZo3@?i7Vn8t4`_2RJA0Sgq0@oDlNDS0ZQeK8G8Y>aoB}Ru+_I1 zOqrn`HLQ60vzeW4u8_@kmzWigHrHjr z)6w)jKGHl+fYXRne`!o0JwRy*hJfVy<$dTUh2AFvw4Eysh2j)7gZ9kq>{?KrvqJn{Df) zG0ApRo2quU8*hmIiUqL*u>K4-*xY@%OgaXsH(8G_ zR8~Wjl_n!tx%PF#(OT0>gqIVBdK8ojJYl`Y9M8#0e2VnB(D3x>#T_ym0%WUrK^9=d z{MDO72P)J6%zqP&DUgAx_nE}|aUtfS$;?c_+g-gGB)08uZM>n?;i?E-ipMJei7S0G zaHAQ><$YBHOr&qDu$m&+Vy$dV%AKEcoKT1P)~M)uH>}t&E7D^w0tqf)&G3O-p$K6z zwoht}Ln-=Kwxx;t0Dm@sSa{xg#I7z)naN zs^4W@v#a!qDyo68%;++(gk&}ti>co^TZLOK3CLvt2R(Nn<>cyub*54~1k6Ts$XY&@ z660(9`(#d<0c;{8>C!0yz9j#;^ZFrvB3Q{|t`hx@54bk){luPMYThFh^AOZmQUl$h z<(do@S!BE%!HM3TNW30V7kLSABdC7xiyUG?60wBWc~2raH5`4~kfAE=r6bL|WLDID zQoz-=yZRom>6dk-OuoVrv3yI5-r4QHFH%fc?u)eY1|Y&7AI3ayj(+5j+yT_K4~do*+fd;+X-lbOcYrxo@8Tno|Lr}Ku`D*mqZQJw%^PE&CQ3Hg5#_pV*Ql<#2;@+ zmiZryZ~|lVvbSM0hkR4&cM$*0rVc<4T-3d>qv@gR(=~g+^Z2ZMei{ur@ zSMQPiZDE1f4x0Oc8jPXqb|J~}rvBaUx>7F~=a`06AdSxSa7X8Nd<7_pj}}><;_A5w z?;1KbGJpw9uzvI7zF(`i^V(Hm*5miZiru@rMY7Dye26tFV9qpT##x{TNkLK#7WKc+ zVI}JV86*Y!I|JWcBe>X$qzcdd!x!DFFozFBq5wGneX--*tNnUBc=1K%jX(0(PL}c$ zlIQ+`e4D4uMsxYd)kO5?Hq8>r>QUZ!iNn%X*1e1N%zV$P zR;oo$8h+uJ1^5TRU9bfcji8PkWLpEFZ<*@tDS9)> zO7#rh&lHG}QkK^)&nFfUJx^GaI5yjekNPph#_Y>RLV_wiC=}7DqPcE+DG99eGM)vj;qr?k|q zghK__CP4TPDBB5q_tBqn6lQ$^{WA|Q8X2paRi6!3C%xKHnRHfvzax|upGbQKWo)O-#&*BD~L zsg4fiO&n;rs19eT;f%JJNB1}!EhA)GDN<+fT$nO+EA2AXgOg6Km)OtL;EpXS{7_+N zLHpUh+=B2i+T=t?+>AKsnZ944rfk>vLWgTXZ{Z2rTsDj8)38#f<2hAHZ@0ae!o z!5NCpq37|v#FZuLdXr&yhUNkJkrp5t{dC|S`ozW$<}o$k|D7W zy=jK_KJPra^{4t?7-cm+RE|?aiz}0kMO+J*^z!A8v=YwQU;c2~IIf$Aeba z>!}dumT`4e*rrzd1w3rzSq~^A?2|t-de^tx*xf5f1-7FVr11QCtdrgvhIb*g#5;?f2oDrK3ej|8pb!b@jc`N7)(GLn)pVH zWMuj&(T+ZH?V)#8(Bq47^J_!QQ_O30!N&%;h>aJ}CEV$E7I!XP=ULH*VecC#vLT9^ zM5tgS{v{n%8|TByBCF4NI&#-XYLJ6~b+;Jh!FP?2SG}CFw$+1QXsr#}g2izc?b{oC zFK1VXIDyp;xB{FimYOLH&}q1F%|}(qb>U&5s^o2x{wYAVXC&fWc2QN|{%ZgE`$*k< zPf?!PhRR|eXx;SSn0uz<(%*qzrQPdwC;hjNpqb|iqmj0)yf)JJ{jJI@YSI0AO>=Mi zYn9RVX^vw3rU8;rf8I7+Bv+x0pq}Xkkto0EH%khhERtL zjPP>Fz=8ANd^iMQVl&-2T4Of)!KmxWhz_l}XcmWtbmH|X*aBA2Fcz}n9+X6F%5Kz8 zeT|E$4r8RfQfyW*`WZ6n4S)(x;h+U#x=ZD7R+8fVu}BT?Bp&2wLx-f{pgNHd4w>z^ zpzjFIfTw#PSTC4-c;3QC6qmx zO|cx|u34Zn4mdx3us2+y5`+9hp5lq@H;0&vHRl>Ua;(8C?!Y^n7?G7`ltV6Bs^xT| z0b|M0a6&(5^arH&eBDmxDVAkj2<6^G^!H`T2cXN>=;Y3}fo-+~obw}f&SRJRuDe%i ziuT)Y97J^YNba6xBgw-7&pKo8299{|?l(dM@+Z#L$Ho~ai6Q|p`@2kQ9l_b}Y<*M- zi(1m17Hwti=0{_WyX6Y@rc)`~S{#cPD+kq{`~sR1zxfNi@)oi5t;-1nCRwvA9vKb` zAOJ|~3-pErW~4L;;322678wRcjdB2JJ|ZM_nHitx)sxpqGA3YcY7H%2;WUod4D{Xr zt{-^9lehy(efDkM%ymLcbX)k|b8Y}2~EZV<3YPHzrTAlZ*)C! zBJ6BB^wu$+(x^M!6x>I=utwbfSp1Rb>}E(uuix7MMTSEPfi<*5h~@y$>*IjyaKV)- zR~`5KVI#{nIWfKXBsN%xxce%(krMi{qK+60s~ z9lWDg#H%O1lo_7P7qgB1h$WZAGxa!&73Jey1mT;i=83!4-6`kI6~%R*&BW!3g8cnO z+c<8;H+kjv*J>89YnqLmj~AL4+vZ(eJX7`mPBLoq*7=Rg2g7cx92-=Bq+6bz&&EZ|hkg{Fgeu})-zrC?51O)$$JHI5Z8^Snddt+Ha zhphz9yM@6NuXY&v8|5}9ORJu4$!)C;DZ>J4D5cBtR|-XFSg-pPU3Xlu@pLV3iIWY@ zwtb>c2u>ytZ1zv1*<@DySG4`&td_L)@cdLJMpKT|kg3Ep%oFoT&HN-p+LzBzZT1mE zwQU&tq8!(;ML4IFtJs%cvgu-PEXamR z!A|W5NtZI#66as_!9#am5@ZP$xUpuQOL%ZVg|<}A|5c!5H`CFNOLQo{Sv6YoZ?+}` z!||-aXj{jgUfByEml#CZ=a`eeh#%GtJX5Y6hlk?27XxqVb7fXco4+$Wft(CpAs%Xim-@7V%7G4=J7p44L@ zjr@7jTw)V|0ZY=Hx2B9Og0c9aexgpGYr&in7X~2kE}!Kr&$qYaH=b*$H=ECT7Uwg| zJy6C}R_1t-d30+ifRY+GVp$P18)dtUsq?-)gs3S4%Ne}Hw0WE<*f&%_Bnp^8!bLD5 zFj6thFsw0L+qJ2YD-8iOE=wo|{!u77-*VMYP63YH){`>CeOl9jmPLc6o~m{tszxpm zZ;elwV~MtglZOl6=W6R96dY`^yKG5=fJ9u{x=X6Ywcl0dG+aJN1x`EhXKKgH%UT~0 zt-TYX4Ei`ZD_;`;{hINq;ONMYu~x$Ctq^L>Pf?(2{O^XkLw>pbKSqVU14K? zr2hTf>=8-c@A92h2k^?`75PW>x(WFj(0}XtcmrjZ5=4Vk5jPV;4fZMw1hw)Z3%>LR z%Z^3ry`4g-^v z%zip3b$oO~mGl`HMX{TfcCcBFYL@aHb9%k)lH@#>5ICaLo;2GX8q8(x- z8yS{_yz=)1)l*yfa}GRARg0EmO;Zm`2^Mqn)91~GDA2hx*rNS)j9nw2bL6%V#$#@s zF~|97AG}KV$8V%=xgM^;S1GnNb${$?!9zY-8CFd?Qk$9Ma&)z5t#*SWmV^zSWItvU zA>IB{^lu&g1_ugkeg_9mN<|>cGZ`Qj?l`Ht@~EuDLaEXU86T&;W^u}4tCRN7*-j35^yWG5N~ivq5#ca zqzZ#(Ic(CXwq$ge5>oLGBMWbVRj$}M4?j|(!Lrj6gO=ncAVg# z;Dv-5F~*}JR*<{rQI6vJ*kr1nF7cX1PriAl?OwfVIkvF+1A zt0pXtM1nK(`bnyr z7@KU+|H>)H(B`)cYZN3BTfXVz8O)lM?g&OD0gRhB{&sCfbJ9TaRjk(2Rjd8(CQZV% zg5EXQrsdmXxjz%s#}&_fbO;mdbN5{37WKB&DXJe}J93xQnObLw9VIjUjQi_#>Ulxo zxRISB+v|;(#eM2}X=jeopQ+ZxiRf004twTS9H0)a_$9|W5+$~b6~vJUsr@vxu`aZe zP4s}T|Garf=6h#nH2FJiJG9{}?75?@1~H1MWc}uKAbjCe7kw3;CJq6IIYEwCWSlsv zB2pyACy~!uk)n97-@v1YCctZ>U{Oo5!|#d*Aw(IIi{N2;jz@@ejYBZ=hov>|1ENtge6i>(|pWWJ33Nqy1iQrRDf}gde(u&d|MzQ9XCv-TkaO)9tzE z_x=9y>9Iq{_hhp>4G1M4mygvKLT;B%7n5=!1b%n>tE|rt?uCwjH6CeyRUI{d2LRH? zI`*cNqvIA4hu_TG3j5jhyL)*tz}GaVUs}gp`BnBe^4evFg#xajnWS_~`HTo7XP=Np zHeMFFGA=IwL&?eVkFrO@8q8*?3(ziUiJZ7JG=B}Ra^p79-Cm6m+^>v3pkd6hw+vEDHMs>96^8>33UJ z(N=BR)iG7kZKoX#ll)5i+I80}(eHSec?wL{!!#odRes|zk zJ)iR=HK!6`fvJubQnY_3v}f6)kO|c?pHdug)9ow(OMZ#&S@gI3f}kvuB`vLT@2~V` zw)$e=+`M`owp5s4>jwnVK$Xz%v@}572$@+|FHT#wuDy(?V$KD zRq+QI-U>dK!BV7R0Cfaf82pucxqMp(FY5 zO)nm+w_uB}%l_^Qlp&2^+Q?AFUWfprFgSKDLaS(|g++ZBTH9iaiu#An#`nBGQ=b}Wwi@cb)f!C_xVTMt`ygxA zUYU}}zRy!Y7t51Gso(Iu6JO&!h#6I^JGtF^v*BI6&3qYE-aagpZq+@PR)i!;vNUiY z(7wi}KI@55HScMM&MDD_K<~SM;E($W^_5?kPP7`60De67CW_+ngXBO1&33m%(ifEc zdmoC>DqMptz%S9OHMt_gXvq~#HFQ+3J;lH-Glf38V`A+SyQ&&wlJ$_;kU8h0M z(OB#hx2c0I6*7;%zZBFz;l3R>3`oK8k$0s#cXOu|rs5cWxd1 zE+7B!JRoPuJdn8r^#`+>vE#|tB6pz{$E2YWe(ZerdAb`W&GcJvXaVE^0SVJeg$c2d zhLJ0qoqUk*Kzz0%W{;PN7G#=tx|5+PYc?Hn}OABzUR#ul=v6RUc}-@d4hpLjz~Wlr;m9oSN)5}}DtwCy>r)QA|K1h+6Ka8N~T zK&tT*>_2ML;_UY8egLGWvU--!u z0oXP%8LX5?iiKf{8v1Maf8Jka=FH`(TFLC8Kd#`3TGAgT{+^U?D$gN9^zx=|jxmsu z-JwNFrzsS%p+37b?#9ib#}1hE)+kVQKkCtgl#5nxm{RH|m@mdri(Xb4 zoMZ9}0v>+gD>;(}m_cLbYVz1hm4=4T8sA>kHnSxxM?-3NTwu??hAw+c#S%@y#81G| z>A)C5BSPJ*?G%r1I>>T>HM`1Sq2}LfxmepiZSpP%+q}c+Q*&ni@I^3|nq*7~+3!MQ z3=ozV-iFSdJm!YZ@h9)SgWW?M5y0);=HdZdJPQt@s}$I&oH~x#HUnZ}^fPR9bi405 z!(diFmwq=HOUfpRi%Z5%QViur(Wjd0e|y{WKo2|$JuG{O*P?l?jjsyS;OJnPU^#MT zFk4|~U&DS>w7;30JgL#ex6YRCMBtv!7UYD*JU1c6bsL$gxl`EN%ZJ zu~M=RSAk+3T9Jd8mxJLx@sFL0EM_)8;!{h(wElvA&2bHDfU|ggEkLt`Xuc|I7m zln)6K3Uu%0l#B^7!7#@&HjZ6O`mjM#p(dq+*bjqDt4VGzXVa;501wcpDR;%AKl?kX-mBy`Y7-gV0B|lm^iB}{ppHim1 zEW`!FnV!jx@C6lx*|)wqORl?xipfOV(uYGB!+w&7GTw+vV^G5iBN@=8(P1ZvV|!h~ z(uK58SUSjt%1+sN2x3m*z<YJ4M={GXy={3QyF)k4>+OD(`oDLi-bx6 zP83^i9tzGXex`g*CiE=nRkW->2wh{d=)w`L0PKUf9W04~{`$Ub-AzxE-+-dbO#q_^ zqh>b4>tDLvHVIQIBu~!WaKIxpImDS9?skCxP13Fht}}*Pr4ALcXo;HSP0tHc9JffM92>6ePOt2zY*K1M{lxJesUcWBCh7uo_gAN{#OmVjFB){3*t<_KemvJ&s%nH+}v zrIh5CH~W~B!}{>7_UYHHzh%VIsHvpB4o4yhoJaLMI%71Ard56Jk|1bLBx2avp2Ff@ z_(mq7%LrmKM$`ZDSIgK5+|7l()eL2^Q^ByXtD!R>cq)jI=$x+#I4@@cn-r7n09xJw z+%ox_UxA~G9-H|w-&t+aWF{7I^4k5Vk78;#gEymnPx!`~9U@~{+DDrKmz*DMY4~W7qu(d3J*Z7u=dsAH{;^Wvu(s za(dz`7w-@)_@%t`?h9<(4oX=X_@-Ad;wP;>Fz$LV+w^787ms{;hYj`!8&$$t)Yn-& zIp&BG%Om2A)x>>MB@`iwi+FzL&-Pu*%^>3@W&b@z!iUL8BOe3edV{E1NLqFHxQmoG z72O5R*ghGPE;C4fR-|(tZ(~6MEFCw!_8tSg(fpt?t7}eXWVk2f=f#A75j2HXe9zq! zb0K;y8MjMb=GCp}m50eL^1MZAy1~{SWqBdWj$%}^ zV=Jf!%OTu6$63s##M>8f`Tpg&XU_UaNQ;e9bTzgg-JRZ!TT*{=oa|CnQP;>d86(4A zYD&=Xqt%?|HJVCLK-5>C4$|i$aTzmEp6%^V^*ZKmhJx;Qhoyj_*e(mtUiW@Yha4nl z&C+Zm6MOF{+(3l5P`|zKS#tD40eWu%QmiNCcCat1z)ZBUJXsFK?(#slYuO(-DR1)O zv&KAG&JT~en7hL4S zq;K9~L@a|<2?Vk1#Th0e)fyL8tFD3?f(J|m>X=|?C$E)|_p5VKR${Dg}E_A#5a?8(L`;2c!F{1a)Z-x2|Y3~Q!o zSr~Se0%?`B$ZbLmf;y4vK#f-7f~ZB?@T{w|GlpWl2FkTqDADs+zsv6gZ#9NFy2>4v zs+TIWkrnA4p3H!6GN-L9)?@JiyA>YNh&&$HOoO!DF=OY|K4D9dNvy3o#NQq zX@v*Q_4FOB%c?i3r2#Oz>=`Kps#B6y8n1?munQvYFl=DeI{E2f7Nu@{ zbbBMlq2)f?8|EgeqehCOR(+ZxZ!cSS?R2fUsnTc>X5Ra00q{GYio<3bw@VW2 z>i1Gz?m+RxHdf#o4y+a)`*Ehn7tVse3_cr@_ahf_a4B#t8TAS;mY)g;ay6cm#N%y@ zghjKb?c~b53|=X|2hHa5yhq68dt2U)T4px&j>ENfMeU<;%2>^lAnhJ!9W%FEDX=D~ z)_wQSY~^AgWV5R1KtH@zBClk<^n7u*0J)rCVmPxe?9^dHl_Q+H$RE0oXMgLeACB62fsFNF(*k85oJ!3|EerY+*Ki zD#p_?^U6Q8@N;W>jzzWfwQ??nbp=@t-%6u3J=S2Ms|**tXKA`@8mQ-P1E4qDrg^SK z9fFR`jgYINEX+>u}C)_K}u&^JltjO?v0UW6KYLvlFst1k;! vV2CWhh)(y?B01r{d<}U0|K-o&xgRA{=>Bo|4;WyT^H);h@&MBDYry{lg!iUK diff --git a/docs/screenshots.png b/docs/screenshots.png index 09dff77c8946cf83d1cab6b729fd53c1be3c0713..a5e278b0394630fdf83b7ed0e3362da5b1dc5839 100644 GIT binary patch literal 54390 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

PTwYd9DM3f5`=96eZ6VWGM}T~NVIkbui5 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 KMNUMnLSTZyKoDa9 literal 139670 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

(j0{t#Sv_9AeS$SO}r38QM?+XS^~+B( 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 _iwQH9GBN0TpUx(@G6Eo))ysRqoE!u4Rz_=XE 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ñy&b*y-kO7n8k#HZ&QJlG4}oIt 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 Date: Sun, 30 Aug 2015 17:54:18 -0700 Subject: [PATCH 050/190] Upgrade frontend --- homeassistant/components/frontend/version.py | 2 +- homeassistant/components/frontend/www_static/frontend.html | 3 +-- .../components/frontend/www_static/home-assistant-polymer | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index f6ccfbe7a78..e68811c90cf 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,2 +1,2 @@ """ DO NOT MODIFY. Auto-generated by build_frontend script """ -VERSION = "6558cad990c03dd96f9e8b1035495cb6" +VERSION = "0fb3e290ac3984198deea6cc08f63bee" diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 19d13a1f889..eab01e5a14e 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -3828,11 +3828,10 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN } .install { display: block; - white-space: pre; line-height: 1.5em; margin-top: 8px; margin-bottom: 16px; - } \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index d069489d09e..dc5f86223f8 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit d069489d09e9155c44a0fdbdb3cecdab02d18b5f +Subproject commit dc5f86223f810a5506a185c11fc8793d72a9cb6e From 96cfff192a738c4a8dd936b0cc95e16de2ac23a9 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 13 Sep 2015 01:21:30 -0700 Subject: [PATCH 187/190] Fix space after HA started in logbook --- homeassistant/components/demo.py | 2 +- homeassistant/components/frontend/version.py | 2 +- homeassistant/components/frontend/www_static/frontend.html | 2 +- .../components/frontend/www_static/home-assistant-polymer | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/demo.py b/homeassistant/components/demo.py index 5dc91b28370..ac80fed4ad0 100644 --- a/homeassistant/components/demo.py +++ b/homeassistant/components/demo.py @@ -17,7 +17,7 @@ DOMAIN = "demo" DEPENDENCIES = ['introduction', 'conversation'] COMPONENTS_WITH_DEMO_PLATFORM = [ - 'switch', 'light', 'thermostat', 'sensor', 'media_player', 'notify'] + 'switch', 'light', 'sensor', 'media_player', 'notify'] def setup(hass, config): diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 66535d00745..41e727adf89 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,2 +1,2 @@ """ DO NOT MODIFY. Auto-generated by build_frontend script """ -VERSION = "b75148a02ba3d4db17a4cdfb28b1232e" +VERSION = "397aa7c09f4938b1358672c9983f9f32" diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 3c9c2af72c4..60831ab1e66 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -4123,7 +4123,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN a { color: var(--accent-color); - }

yZ%e)VaZOiJY#o(|OFqUP=H znHRS|@ajNJY^J&=XPaw%W|KmNCe*oP|Bbl(>^_wK3xNwsgU5Uvz7LA}%M zd@^7=$wn*cefPaCq<4;jLOl&Vv)bL4Z1vHT9+%CZ5+h!r&6+f0b5-()a;%BSnc-^d z+&3>lRNgvu!Fb&3P>`cbb`ll6e^tyKuuWczV8oJN@4ficAE&H-gxsiGyrgK_P3`Ig zKldxr?rV*;rZb{M+V5Fw{`vzqwqa#+&dxq7vc8+6Ji(Rc!%?(|dA5;-ui#McN1II~ zmOF0qLYJ%K3*{%R>rTIY1EOniwqIFu&ws(aHRj$XPQPlX27Y^~8Wqi5^~_yHI%?)+{_M4xdr-S-^I~NT3_B!&WFv zHieXNsEri+&Xm0DBF>a{`8{ocv|w} zPXK~3uZ^t z$|R?)S74whHj}`5alAO*cVgjlzXP$Ejn%0kvD1m)=1U`%(`1o7U-^xwU&XUH{Rd`N z<8fs8Zbw<9i_G&2RC8b5R}ktGh3k?I?#%pW0m` zM~3OT@e_o9kzffFuwZnhKAvu z{LV?T*upd`=cK~4{mXkIj_K&Fbs#KOGsTEyHVfLP4t~hRvgvLN!vXCoe_25F?ibZf z8;EPm;HLa1li%f=W1ZSGZ~w_pgyzS5pLX2}ljDiQJz!j@dk+Ppy<)m97!-Jrz4B)T zZqidyw8GD#^ANo!`BI!XEz^D(r2WL59mGe){96wiKOni8_I`5^0z(WW;e_G5<8~Qx zzC&Y|gkUtI3rS>l3w3RXcB9J~dv!D|z*Pf>_iS{SAyncce@4ipCAz{r*SuWb%~@Qb z_qXBr!$}>02|^;nsrKoFZghqHD|GH0^eqE3!Me!5uu z==t~aZ$??ieyjuOzS!783qSm@&8h32Vy@KbQuJO z0I7)6bBAKz`CJ4ma2KiOurlyswjWATm^pUDg5NC)BUnY zeQjoi&azQ>qL`CLR>6_`r#~RY!?R=>Kz+s=G=I4#MAs!o4NaJ~XusHjR^xNE$7=v| zQj6&?J9+&nJa79mtke7-5&t4iOZSJPh`~PnBUcYo;B$>fj?=^vdO1pq2o*qm2Ii+-jemXL`lmv$pke{r?qb3i9+!X8kB@eu zy9_j4NnBo66qU1MuUKnKSm3)a>^1p+?qIHy-<~Y|n%@+4X0mlFs~$IBk#~Xwj1ns7 z2<3ax`FvY)J5lbu>~01djJ>liky1d2HVxF}KZqabE|m6&scV#-c%%=K>WwGaZl+}0 z#k^HhbzWzSq!>H+(H66B+l(!uKe%fr_Av2=n+ zsr?qEWB%CCWY{a@luP8ib?Z?*t_CWX%|ZKy5p0r)FZrBn z=6FY3rTu=qRe|1O%$`m%^^zJ$ zEtbx$s^vdpH1qjnGtO(T7E(ox+P4XXq1GC}uY%e1=or)OH$%tu zP~PI~ZoXg@`0AwJikaXf11j=M!h0fa($U;lbNHV) z)g@&yb$N@G7pk37iQ1Ifzla@``!YV4|DusT<{%BnsCkpd9WHWVubs|Nwff?z%BRTm zrlia@)TG9JAr0kF%8Xr2@=`W%HcMSJz7b}ef#Al@t)k+Q#yif#jY}g11WOUR zF07&k?%yG@3s{FY;nj8|UyT|jYN-t#(5=T_`&b49%&D63TV26E7Y3xn?c4EZ>^{!u zFkAK%r@&VzOcqi195#(l3@`9QE@`I4uJl%nkqnDm45WH3cIuM0|Iuy2P`*E#!;YVw zKn#u5o~cc`!I8>{`Q9yMW%UUsojlKc9sXtf4$kM&12cqOW45D5%5sj+)|U}@E!JL- z#Sr|SqUVU8z;~0BV3xK5*0>uE=RFm($$OC${4#h`E5Q$r4jM#_v^6~uTI6&eM`H_K z6s;cQUT-YUQI8otb7zhT&mM^FDXBoeGmM~Utlp@=mmNV>PNqxXoWfYmm<7JMlZNEnc@XnAFaY&)jmpH#i#E;$n`npFv6P=h%F?3v5uOe1t8|5xTFH-OA{< z7Sc%m;N$nGh{yVOzWRsHRNxbKy^RN}ZuWbZ2WVxH%vEEAratxI z6TdWjmHK^?*@K}S%uVO)90^~Ps^+?49+c`3#)!v~P+P$$e83G7+Ox+45yk-eP)jWJ;zd&pH-1p4zi&TOen_J6J# z*KBDDIF1T%W9yW`79bz+YNxJ}J zw~#kLE}Vx;23Y=MG_sl1eBpsQT(~s3dAUPFyBcdb2qBqoF+!&A?~*bco>kqnEKEqE zs+p~E;$s&1PYvp!`{)Fd zxl!|fv!>;!fKyffi^ZM4S=Q;z%pi(thsHGZ@5?-JK7Lk0@I+Nru=(&$*v*+zz+%$A zMZi*+${6X@RK|5)BgkuKPP}?%K~DQTl459&q5{!;UM`7x`@@L!1aVIU4X}zS2B1h# z;70*SNvDt$F&V#ar%8|asJz=9dK>ZvzxmLf0*U44km|q8eU;69(irbQ>EU;_aMtgS zT2Mvx4W@a{pZQY0&2C$~^g$5=VF;$~?vl2M6S=_W-|FkzNeeef7YmsO&VlX$SMCe@ zKzO^f^A5I%3cER2NN_;m$t3bU`ajgYXIN8R*EQ;Wt5gLA6e$4#DT;td4WS4kND-uW zEcD(>Ab^O7C{1ZnLy_L3cMwrRP3TDPgpv?yVhDk=(dW6&cYeIr`M&G?I_rnQBztAA zve%k(%(2Gw6xTx=ofLP7#PH(jk7gyI8Kgf>({cFcgOsV)ZKsQz7U0CDc^3suqKpWc zc}nctMPSc~`S@Ch*KGdu%CY&X?GsKdYWqR1xG$@%14s373z*x&4VmiLv<~S+W@54hRJjE`X6U2 z*(OoOi0<>0m2B5^mMyLbyV<~b{4q}i?y#oKk*o+uj}WgltH4QAiTUJ`vZJ8HlOOPt zT@m=itkG!`cBnPs8LIx}DUfMUZdrToM36F56a`0{5sd75ap5lKju>WnCpj)tCH^>1 zO?%Wjj%%6vHN#0UPEDL)!?kH+K5^sv1=I z&}BwG;Yc9U8+0goaP0cf+N-#{$k=k1#ch_DqJk>)${`QSt$yJ%?N}T}s zW`nqr)>!S>>C@8(2>bB`HDR9w(7Lb529)((j@)_kdt8VKz0*xMVv-vxC%FU}h8(F; z_PGP2PLhvR>1AvDAS7d%0Vabk>$w&(T@t;szWHTc)<@R*(kysH^p7{#ce={736_0! zWTf8QX2h=(f<_kZZKADa&T*lg(l}4C?aO_;juVa{tdAzYv(R*tyPfj^c4(E^Z zX1km=WkI>V>i{TyqpePVs*Bb7s)bGvL_Y@2hq5fnSYC zs>S*Q-fmRlz|Y$srffz$2wX+IJ?q_!_|yF6EQSn$T5WQhM#EFHgLX1O1`i(9%5`}P zWLx@vLK0b2axpmFOl?ZSM7_B_dETNA^~c$L=%R<$3Sx@vmYK&fk|Y^kwwzui2^>M> zb1^ZPIQe9Y#KILVEBQ3z`JZ+N!HGyhAW3X9I6#Ft+eYfJQRJ!)9D!{pPZo)t@HpD8 zNp5^`y3j%mR(IU0B(G>Fjp5?lP3!M>#Ev|#ohpfm{{93I#X!L#1DTS@kjXof%H;X* zmy=J(&&b@X8t2W9%n%6_d50-&TZg?g!1M^Ju;vI-kWbXJ zzWBXT(rELOYAj|CWpOT2@-fy3Yp@jI9Q%QfI82H2YWQt>M2?kwK#1MFZO*<2BDJ`zN&a{w zfSX?TXRciK@GP96cr=|%NVX=KOZy`FU7nmooiq|UiZgYVbb@ikc?R3wn-K67B8=YsHI*K>$+q_IJr>a>^_gJ zsg}i6Gm;@XK+4Y_xw;WL6Nz^?RKKlg=IC|;T8Fw3ppsEKK+S>MF{)&tdcyo^4~RZG zr{ErG07Sw3TGk%^q3~#;!f1+nCgZ9IWqSqfgG`vDR&eyp+`3yW6#RnNx}v|qT1C4% zhp^BJcX`!f0UshMh;bE&>!GmG=_$jXoT>R`RD%A=c(&=a4q<*rCMdMWPG6#K$m`%@ zmH|5Od&G80V8eiW0nY6-EW~i*%8_3cq$-Ul&}d8f2+?atpQJJ(0eOsKfme!uFeZK= z7s_y{_E1h;@m#o13*HPXj4qCD4$1NrI8}Ag4WgaD(Dn0^v=_o|xCgBhqADLdl}M;4 z2F@4@0&IefJmg`=EoRp-U*4nM`r*@{I{5UpNeb#&8Eta%FV#Mm$4pQM)S0l%k6CBy zno$Q`ME0o8?nWnc@E&haInF1Yt!g;P=F%46-h{%uHA9le`;Dl44&Q?2TFL?NrwqFc(Zw>*>I!UTFhndhF;!D^iunYmT79f=(B=|; zV(@-Kc-BazLaRGc@ic*w*~j{ZRWLw0)fIB&jEr=vg3Z=GNZ}!3hMO)B!LKr3+Oz%D0~-+@atOM3K8&L z-lWG*zo?3Db*O^mQMd#Mt$0@j`E;mW^I8*7ih;!YknapU-mZ=Fno`uS3~>jDt4Ex3 zNwV8;*uT{59{Ftqvrhw``zYJYWyk$E9J%KOxayw(h=Sd`fC58IaUE|3kd!*sph`iM z{p~hSh%o&RE#R@U;^Oc6KD6$wA0=1l5MQR^6YP3ZL+{m=j7n3z47cmSlKz70oAeuO z4=MEeRJDp3ftG#{SnbHf9tz4n?CP~zRPe9ZYHT)rKfIP9eJ}A=G!tNNw+T5!-_zt<@dTaj%r0udpVjK@zd!na6{LX5n58&0dEEnPuBeZxz zZ%8$00y(`*co$k^H^7)3nts_0q||1iW=;3P9T&ILm=FP-kNv^5a_tSVgN!F#da z-YyDr7Z;03n;f1@J___%rB1|mMm17%9iR4Bcsx8AL!+1suY6J`N;WcJF> z2=CHl3ro!}5ll1y#AU^KO=Cq){^P%S+$-N~fPtKktGaQ28&2agx z%q<2j-On$~Wj!8{TKd3(Zzzvqs4Gv_GrZgby6O1#wi3 z=Qpa)A6DpM;sE(GB`vp4NjmxOLD@47y3>SjZLAmGw;w{`ozqU2`sV-!zDt5Fc7vnI z&C+%=cRjFPLSFh-Aan8~aR8XP{Z=8j9D8a+^lvX_1Ck_n-3SwX=IXZ3@&MStQ-CeN zb`&{=*iEF6kLQK+-c9?0FSp`t5+JIF+Ev+o6(Wdv~R-}OqSqQCblN-1WUJ6q0;b}l?v;lGT3T&GiL?n{iaiX}-^ZTB$(UI9i ze==lc9_^wtap=&K2UCw5ld~#iuQh>ZOl-6TsAQBl6=J+E&x+NH2#aex9j-i*LX~Xm z_=z~5XAcFS+Md2!D}@%l#3Ii-qiwBNr-Wwl*X$&A24D5Q=H=_H8O|T;-Rd6=4e5q- z;zoXq3*dO!a#8B=Ee>8tAd=YPsKPTXfCiilZxg9yFaeAD#h2^{CWh5zH&B2 z;@zn=HK9g%kshmyNiUC|pJvTF$Cuw8>P$9I{&f5g^*tG6IDKRfAkxL~;Cqw^A;Ddb zwKVB>&i?B3x+SsPATw6rlG9hy;7>5_+0I890@fNehXW=szRU}`O(~Lq5{TM4AHb`p zvsk^$&cerXJGziWl~8di8|l(s@=2vtKbT|X_pJifmw;;#0qo+=y^HfNsKEuGWI*`! z`6n^|Pa1u|-ehtFsd8XY)-a3EaQ@itp}XrKGf=2iaOM05{G~xOT}D1l0E|uBbZf)R zD>J|H$&0}D`1I&7kMjVfr0$=uw^vh|HqR#{8FH_rBc0iW{<$qQ@crZ;a>n+jB&GcC z+itAg<58chfg>x6k6)H;hYb5B;V-#Uv&*ntD+`&p#O}k5RLa0h{5DkxW+fmR{sD+1 z)8~FAc&5wD3&nUhsd;p4F0s5keRZNm5SvNx`}t$&w3hmVG86T9!R$CJ_uc4=5y0jB zUyzMoObh^|kvuNxkQkbz>(Gy*Etq-HSoiKR^rsuK>KDxgqsr z_lY}a7yaVvKwKnL47EXOn; zBmw+3o_-y7hIafR;MfyxoncCGkAEp-wLb*>$L9-=Z%Ad$#sj!U+(Ygcr{|`DYF|}Q zY*U6qP0aXLM z17N{PSEO{#@Xj9gDHZ~_JijQYYD(!eU!HybsxGe6S<&{_8ATH)--r>Dulv6OT)wmN ziuS@ETG8MC{g3~m!whAnElU3Tc^22Ry2&Tb6K8zEv*NxD>Gih=Q=KVo{4LBEfS|zN@{0CfK%wJr`F1fovF$xLp6TL$-uORxdB8cMjxqi3mF`?| z@2czJNdo`9#aH{6|CitS2LNOKmW9`6@*aPSyW*KtH{*;+m-0p6Ki~U5dO7-R z_;TXTe=d1N8>*b%O0H4X`EMQRZvThf^*=SkKCj{>^46pOw&lO||L?pGB5D|#4gY(k zIn}Kt47Pyx{lEXYb^!+Hu>9xm|Gn<|A4XkCFzA{W-|auc^XlZeco3*)U}Vh7(ywr- z>8yTqbO%|y8NQ7vC?Giq-XaJ2DGW?{JZb!N7^-sH7Wl&Y#j*pRsi4eEj{T+&*Cw$1 z*NcE$2IrVrFUvZNPx(G-=hcQ2Mq0_@!wXXylZ`^}0bQeW0g5F#xm8vfX}NpihZS*R zAKPLEu{vkExxxoHB54#5E*|mSyxae03V(|nEZ+FS?$g!dest%;VQ!pPkODUUB>lw& zV8)x=nAYZ`B{NY&wDBY41D|}P9EtRB(fE)u-)S3=)CH>KR}wU!1*=+E)|z__d_V?l z&gZ=Z-cAnZpTrTjMosKfCbiwF_iyd!4?I^nn|QAnvklg}+5MnnKzhAHK(F!K0>)Vu z7!CFn$86k4O?&RLr44$%RQmd#>8n*5&k13vAKpzey8Rn2BB%S{8v?)(&n*Cn1e+=T zt!YdlC!u_yC)P4|FC_k%*}xAZ`rIGg@c$Uo*5b&UPI6apxdl9muc~Wy`++6q@thQk z>~{%E>xmn}?0*NEf4m3C3Nhw=uxe0gB^DpUw-S|K@p>@#z~^X>6lXal!Q71TcgP=% zJ}~$kz*bJUV_vZhPQEKAl#pDY6*KIAB(uB$Z8&WvA2=(NO?pYa;F{TgAC&K~6x%7m zIds;Q0-p#^-p0B|LpHYht#BGqh6f|Qq85}cKO*$7O`2j@*MzTg&)-L!>{8Oz*Yv%BfTzjDcp(nd;R`e;Ab$5w`G z*SetNP~HTQs~mq^%DLa@TlR2NEh_-tT5)?zGpQV`aSd1xq(?>U8J5=?013q?V|Y=T z{Gj=w%x2(EP@Sds$9bnoxg^0DHtlDWd8r2_uDY{l(@9$pblp?=lJSf;)F8dbYhK<7 zFl}#bxpX2mGOs(92NI|zn)MoxK)5}UM>bi;!lybcC$2iR*DNQ1(lPE1u<*IRD#8#v z3sh>P>45VLf)eek8MQMwoB^&!A40k$j~E<3PK zd&`~erF$-LfOuoc^y3n>xD}rKDw5mO^H3PXk;rPlzBJCfO4wO9Le;WO-lbCr9U z;Ud(OE7}fyiFxm6IMYd*UCa%RSeA5>kprxwQzL}>NLmoOl2YFd_#N)FiyeyRMe0l4 z25D2Nz~?u1gpE;7M-On-R`b`&p}e5E?i|MR8(9ykbv$OZ!&{JVf|uUO`OTd|A14Cy ze;w5LtCA`BU9*YhHOOVo@8~CQ(i<_K5uj~@sUxo@_nG(|a+yG&p-R+rH;|Pwax`|Ze$|Y2UH`Lx(yh)&`Cbl-qHDep2Ky6wjuLQwQJhzEA6r`}jvi=SL;RHg z<@+Rr3*IVbDb3f_1)Y0jSz$Y2nU@OOEj!#W0{I|)&rG6(7b)LpF%l_V4sdsP2ILzZ zGD@|SkcaPMCNv2k2o+n^2U+)?{vmgUE9zBlFy3 zCFIw`&~cieth~2DEyXt^b_4SA7KoR!AQo$K_(-Y%K+ARTyeUZL{D-3bz2XKjMULkL z0D#HA<3uJ1L7su4w5C1Fjm)>yHnFJ$J|KCS%+&RqJpI&xeR&_|z%v^lCgO;S!8z05 zfLFb*6riU@*#zCZybi+*8W|TiT4HkLiW{C4_(RG#@J{RX!1oVcoi(w|RpvAlerdi{ z*t{KZ(RLl`Vt$DhGI&y8n)&p;_?5=%)lZK=89gNnzXR74yth4ATk4(t?lDURP8Hg( zdNKc8N`l#Q$(9K|vZz>cOd95+rIo`>IRDv-Vzf&X?Xp~oiiJ+>Pkz@!Mg6Gb8$J!2>gS&_mG(idJ zK%*aISB$!F7HV~Gh%fUAqsvY42_gok{!zgLR>d4=L+v23erZ&w;=M+udgz-pDzFqS z==#s#j}5sxHwTVbFgKG*{dW7Cl59`yqy5I#jmE?`a;d;ua=~_g_IA}}54>3jd!5Vy zHLyz5(*#|)yfm|&Ltit>1xM+DpLz&WJ(0i&3hPD#_l8U|bgT=vae$6_7t{Bq>DmDq z2b=3o6ee!YLl;_?-|;dy-{Nzzo47l0&yjoOk~QKW;NWaeJGWpj+Z~+CAL~)36_gIl zB>Qp7;i!ca3POhFEP$-2L?_u0#}^6T(QZyic=xtnn&a6nU01{EOYw4Wp&*>@+vZgW z_=75jy+04Bgv|2sEthJsmA`Mm@H}Cg%T+mki@ z*N1zArGQRqNT|^j<5JB9dx)KwQaYYkF62lyDk6DR|nSMCTbXp(;Ra&U{HeFD&se3F#p^vzDnMjPI7jhmX zbB~w=H<%7?>)kWsXV}Oj+K=dmX_;6QYm4<)K;Oxm*;GH|v@gz~AN5Y^OM4$|KEk_Bq`0cBdw6r~sZ7J&`7>q2R~&=t z1L5gJCA4C$jE_?$1b~>o!UVkEF+GOf^QK5ZMVKIXkXHgm7bamvpE4inM`7f|`_=Jq6*(Dm&KyAqmj@6IebciH^vU}gD-=tgpv zt1;)Yfs8C;*YZNN;Y@BkptwOtE0&g2A6iOZb9K8tZFN<#(@q%6(3C-kdvEYFQ7NTJ zyUH=>I?iZT;2=bPJc04-QB@Q61#q~qaL%0qQ2D$yX*cCPQpZ5|TN}~ao#M%uD{YB| zxfJqE5!;I+eUG`m_gbiFVcfjK1kITP^=jEmi1Y+2*^0TTB|aGpEANw!d&4|n8$6eN zs`K)Tdj-iNDMdLy)*>lB2AU%1_AaA**d11Z|?PLL7h6-Dd)++_&a&hPXHQg^6Uv^!HcJeMVP$uuNKkMmY+ zU;(dT#>*e#S3Q52pZ8D>qKXu5Qw|g&ov3%B2a-QNgD9m$e+d(Nvw7qa%P4ksCMW<| z=p!!cvq`0CjqsycfMkH?i^TGLrc$|Eu6>fB?b~pNr7U8m;w2^w?KG;*UCsErDq0-~ zX6mypAHdGgCMRO^>;h2*^O@538LHE2E6%6-{2PURaf2Jceev5*Rx4*jOyX)jEj7<< z?)eea$F*6ogOsLs4?;Qg4?SiqJ1r6;MV?sPzt^c z2B%JGmyrRW_OkA+ea4|eU<64 zm4IusJ6yW8=gxr7nlP_F^5KYk3J&_=bvW%_f*`WYYSSLeo_RaxMj^il{m>XSt*yGC z5K_7VB8|~qSqeJ|PtlXEha2KYXh|?J$Vm}6S5;9g$XCzpVwAv&Y$@-}CN4N#igzp9q$m6-^j zp=vr6prPA>$*R}p6|^Jlnw;};X~AWqq!fV@*ZI7P*X9m}V_B{9ej6|Qx?6#C?0|G%lkeNZTeBC;_n>#t`obv0FoY&Z16pPpO_9*hamt zaz<4I>Es}subW7sUFj1ad!C{kGR|b$=^BQ7hynfS#G5PD-6lJetfHA=>4HCFCM78Q zPuo+$)Eq|E(=ogLVrFYhusZ$P3+pjKZShl;>b|eP-Or>$9GcM3l|WcHg*Hw_oRrU@ zQ$eIV5^NHv{jXQk>*(>55j&?Af}IIdx%;9-IRh0qrkb#L>euXF-{zfD)3W(75uvNt z-DrcxS`$v<5+gUmMWm+bR*(4-s?n<+(ymgV%)=F}nE-q+?oAbm{iHQ%Y>aZTncy3% zz2SaLU!h@;u$joIz;q!~dy*7QFhMC-wGJlj<-JE?_F-z18iJ~R#q)2E*sTaZwuHj# zYM7_Y?kn=vO1Gi93zL7}bsKh7d_K;I~WOU@v8}XqiTD?CcdQHlH{ucBkBt z&N^QN662#$JDFR?ye`r zD@c}I=d%Y|s{-z&*EZ&9D)-GFX07tn%jM-6&^u0bM~p&kwJfFH>Y3fjq&sx19d!LO z<%Of;^pZ2bgz;o*4~X`tR?5xw8m_%*?~O^*Se=yGN{L?+Gxnr(>fb(X>GDWZ8&gaT z>Ut2*tFF;86y0nnCoKJvQ6r!0#nO^La9a=b+?>wfBnEw=G;p`R=sRXl{!f6g_MalHeQd+rCQJ9!<~xR)yQ zm6gh)AxFOh2S6J_C1&SSZZ6|agYV$zR=9htedn<6@rfd;Db4~bE!BG*0#vf7GU5KT z*6w--&fC&xA0^~tnY%X&o+d*EvThG-1LEF29R1$@c)yf$*`CJKzSfN@=1^xzr!N{@ zc0HS>!Z6J*NYPr;Ylpbv+D^cDV;c1GSXYdW6MKm|DpmQs$rKALv?UT~xy|pHe-`os zAOPxDw#Ood(}l9O{78)*FG9v&c$?8rJzwa4&y^|tIIl!iY&48%g|fyA91b8#+lj= zQ-sE()gP|i>S=6FqZ1k15Esk3^-dq0W}u|yfY-c>E8%*Uw|577-=jwi=xI#j(=0zr5P<@D@$hNei^U2yF;ghhc86G<@AF{7}VKhxd@H zY0OvBqCp*Y_1eow#L~t;+p>(VR+xRjv>R~Rk!b^*c|`8td-n)R4oq*2&%FQ{hcwu} z>{bbr6%3iqwkS1_4Jiq0Si*UT$}X!!$1T5Ji&p~A+@(@H<3wLHdXK1azYzH6p&w)h z9NO^0y}E_37>UOKx{}ArRS@r$2%&FW#(!1hh;4ePZ~pS2B`i)XWlH1aaT{mY4SoKV z7Pp;C%fK^SP}JJe8=kSs%4Nq}YxUkgAcY#NQMB*;7H}DlM8ne!!>Xn>6-mbGhZ=!7 zH>&`tLXkXA9c&)>D0gGQGXcfN`sL|$?ct8kx^1OJw^nK#dj-*tBKBBtIRi7@o8=;% z7{hKBiA8~sx#r6kGLB7sD!*-R8pG`TUf)|1eUBpY_-+X;C2mwb+t$l>}@*!YlFi_5^(AOUvQWP{C$~yrH^e!bn6Fj z4)U3ddqvmoOp(V7>;k!P1nW~K1&V>Dfx8-W+3Q`C^~BTYC{KaFXzE?~=Gtu6s=IQlZWA@EjR!+ud0t%>^P{WnYfCJE(4vXF4-=40x9cAOY`MiKaNrs-(!uhiVqiB@ zjq>9C*!C)`*Wb;%M*@J}N56-)I|!_Jr>ZUfi_Ra5bV?#*1Ba$>%aTgv>S<{+UI!Ub zHyhpg5#zcUgKJvLc{{BH_Ys>}V0{wK4p;kP@@Yb-BCH7VLdYcZdMUf?Ov*CfU8XPHq#GNZSGIy??-o`hYa>vg0Drp3pd;_sDx z?R_Ar_HoC>V-~NeOwcFJ$6VeV`b^->pQJrg7P=u_YhUebx?xiU1=7|U09(I00 z%_pFeY5M*}JOKhP4j+hqs}%DgEk1m2QZ2*ou0bv05lQQ1pIM)uD_c1*x>05(n%A6% z3jkaW8%i7h;hIa4tHV%SZS8Pl#p`#AePE44=Z?)z`(z+@+@VFZf90H_yKWFmi9a*F z6Q&ZkDe-j3a_dccNl}0a=2}TanQ(aew1mrsmgDtve+;$-U7*Kn{j!NS(vKPf2Oe~Q zXV*jHmX#jd#)pOk^LWiz+98V|JUU-lBoOxeV~FJ4j7C{sH5gKqQ7IuJE#)C&hH*%y z*~J3kXRHPc$}=W`N#L%LqRG<2;bwz2g+eF-qTa$_W8N@vip zQjEX;VrlZ`kkTf*d+nY1in8N;F}qV6z68Lh6P69?W%qG&gKRvPO`W7c`^(fOV*v&f zpC07#@8{VtnMfWE^jZL(y#fP%s~2cjxQO|TR=whxFfmYyeew$(%SHv(u?DGOg&M4y zIkmB%l}+1W|AoULOygVuzO>OJkQrCCT>b?gqY;*}KH{LZg!cANE?B&Ib8H~aa~G!- zPB!VAni;@A74pLR9IZei14%5s7s_W#>FC}B3@Ud|_Vx}Y`(C!o`S`)&$ud9S9RmJg zYaAnJC3=vHFv;zP-5=N?*vGy}&%PBy z;!UPYV^rV|Tq1thN%Omb$>5#|OiF7yXMyhnOr#!@=hAh&NY&Batw5s_j@V&&zVCrS z*EbF1Nsg^yBTXjmU6c>yjJxGyQA>(Fey@322Nk>3isVQut#Z>PH?0A{aDftxR0jazyc|gOsnj z`Nd*0NYw}y=?{uof$V!N@pKgMOj_Snmw}*Gy4K1)|L0JDjwv%xS_;{lv@1!)or|9= zmm5*OlDbE7o!XZbY2mLAgt9?7Hq~c6C%dU!BKh z1=X4B;Nw%OHy~zmwO$mufhpb34NvMHg8LfToSvdu*iEm67>#i;-`%ru3Ns0UIwB7r zC=MDcsE~FfcU$r;YiSM}56HEzUwy8ZXh&x}r8lT3f7{YOUXy#=Hs{JY@F_(@vCLmZ>s^jIlr>z*vCj;j;pKI_v`Su=HbW66( z_(W2d?EEQ@hE)Hlce<$HHTi(BTl&1^^AWMJqvdE| zUU`4!G3CX9o*lYla`cYaUpx5E68Zo6ALhtOviD&E4qOHI#gEJdr&dVY&a{c-&5{os z70Rs9cP9xN=t7v(UEts)q6Yb*P2_waJ{ZYpM%o~=jE}@Gw8|N+G);!OPW3!ea)BoB z0oXQBT5UVh3&wBH`;BdrJQU>4Dvg1*!p9#rRl_;31=@JB>6$Fp$^$)QZrr}VLaTIV zKmbF_S9I_6sedwdCC6RtFj?Slgd0u8EN@x>o0rH-Ce+gGQRzg2)2{m~oZXX*5~fd7gfHehW{2zR1cT3g{3e z^_u_mXqrd`Rj1Qw9U5_Lf9|YwM5uIi${pa0@#L@607+J6C6{pmlUa|=JURss?d8kt zSbpDr2~x8emnxy%0oq;*w{^_)5N}Cd-D%@Kzp-_fU!;1-Tb2u*8YJ~8NZyKgc%QSd z!4(!ExUr)f`y0lXUEXhKj&l^K7!zhU7#r9!35teh3Xdw-4Yv_awWm()u%=FnWI*iF ztHP{}zY5nHd^xr+k4pGBk;sJP`%ScI*OfNTT~bk?S4#(gD1ZJ?LHlID0|u0|Af*P z1L$p(t$OTGDIxU$(I~)(?w$*cAv5*bq2xKcGk23f^^CnFtF^DOQ;;2;yh%WiG8ZBl zE=x@ulCykEI1+6knZp_~S|3(8(T0=e>T!p{bKwEZ8TiA}7T{R^7@durD>YeR!MFI6El|i-S5!0Glv?JzT=N_y$rUoXEb!@fQ2lo@04iYKl762~ z(D)ED4rXJSmlYXFq5A4XaL7Z7c~T5`M2bEb z*9|;qV&k$KPA`kiz6(%Rw@jd`C}}j8>!CiFS0p8ndrTm|nDCXG?1Apf+f>KF=$^CHoh4O1+~^ z(-hjaz5|nb4eav@wkQI46rC4`X0!cZnq4jw;bbY%fe}*pOZwp#Sy>S?n$ZbP0YQ?% zbQ1#`eaTY4iGE^sH)6zm_f!iQ1f4*6pn0VUxU7|VTW3{P!)a;A9K^!2RkXSd( zglqBrj~fAKr@V@OHP=?Pc%TDr)J!OT!4K@iD}?+(|&!fq#80*jR8DV)o>_ z^9CGpLU|4GWXfxRf~#QVLVFb{AJaAxzFa)jYZpkU6mBp5N{MR*65TN=Q!>BS&$_3~6~vM_1Sz4a4<51H2E&#e(3Ga-Z6#e0c{w$dnTQOxM>G zv8h&d=~H62J-O^!m*kqfHgi`eoY--Ez^Pp~qOtpL^M%G|{vtz-oNCzFHg()iJhfcL z=0w>-4P73-DudYFZaQMV;P=A(Pc*Mk;9q;SKV2RijpP^g zVE}KYmo<5}E2fMNJ&8&W+;|?9h$?Db$uZ+9K#H1gD0NTLLX9ij>9&RgIz5Bov-M*S z*gx{H*eOAy617A(zdxp5`sjk63-gL!N z_8wNlYs$(z&a7zCaCf;VAjN1bXlpM+grBu;nezgdbLApw*CN#XIV?HoR7Sc+X3d3i zD7RNMB#=f4>0WG^1c)BQ47dZ1V{GT1WMXpVszyh#aY@lbKfP)!!lz>3=3GrFGPq7= z@!y$W7a2TdzwPBdr>BsqIrRt}FDL@F1k@}M&A+rv^RP)KO?uCUyoMY8Y2H4NE70R4 zjxM&lzG`1WDX`r=9Z_gf;%+Y+k{5W3@kJ7VIs0FV0RV4q`Mln}fP6M$nuk2B4}_X{wy4Lj8qSJaN>W&~yDvEM7Vv*@M|ae1A6kNMbI zc*bhku1!?XP&LQVAwq$ql^$1l>A%Z?O4m;=R#a;WDegFwnK~L@9F9?n^YLd z&OdiVrT4Sc)YT4lytSzK3M>GGKD9p%(*jdC`~0{}*9{i+h-5=zH_6ji&hOruSiy@n zcTEm`f-N2jxbToTf>Vr#&cYZqEtqFAD5n#nq3`N_8_2dn2V=8BXcpjgzW_%!5~jpH zkB4;Pwvyd*<^WmJ~coo5&<4wBMM%GO!TbpYr!p$jY6c>sF+>Q42n4V;A z`EL1&su!;Gdy{T{dOkBeXTyF@noT&CCXQNS==)#DiTDoz2gADJtmhqYZT|!h(~z(FGEXP!sMk@m_8R`nuH#WA;lLI zY0Cb#KU^vri^pm{{am#bM1zBLO*+0tK$=pg384i#Ja z?Ta30D@TO?dmMzq)bbJvUG4r>4^kI1ktmg2PVfEo1y2WuZ2f*~v;vTl3@Gk7rPpOP zI@g^0nb{K#`$bLf^S|t47gbQLb{oHM7c9h18U^|{)La|u(i#yK)?`ojJ;`EOMMgUC z`~JA&PQO!8OFEBTS2LVERl3Rc^;qsQ?op6_j#dv>#BRJo$ri$7{PPw zM`c+Y+K^IoJK(2Zi3CoL`Jc72=->P3iPGX{8Y%nj3B?yR+ypI!wK2F*C6cRzfBx_K ziHs)k%vMxHQtXow{@iPa*kFO=6!!|gyZQ-)viH80j)H<6+n1&S1#07WDO{T3$<987 zB0l&9TNwfA08$`_vwKnb+}EuiCNIM9Q0I84MN##OPQxyg6A}n91Lc)`ej@T2>@v6w zKCC!&<`lpCegptJW`*{To?o3Y~C@L~ek=9IIV;KkF7_Aaz?l0dF}O)TJ)ntX7f@#VyRReE39R0>R5{P&-XKbovw5AIe$uw86hhHrTni77rS>2$fGY zOAG5|x9s6r!qbh*y{=94!rdC5Qu22~;AKUWm91-pj61(l{voyXYURC_GpTMGi#~VX zeznFG`#e8x-tcE@YbKq~3rZk3#7gIKq7uzq8!C$H5rOEBYJ}$AOmRHcCSU z?$}uTsRg4xH+>a)vev6Wj0;_qI8w0F?WQO4(Z9o0xh`Q-E>^etoP5uk~wssU^4w;GgvS_nTy`C{D`FEizQ+#pp$cDS3UW# z4fTo*-Bv69AXC(4Z{}D>XzEc8VMkaZEqt`91@o&iI0Nk)YnXiu^PN!gN8uilf3v4= zM`LCPlY!Hh33HV-p32Sltcm!&_gF7k!HMXdV81)PKDSFormtar`ZoJ)7cFM{_tpvX z)Q3P)Kp!5)hnCX>&alh=DUqPYCsTFD@-6}^nr~pROQ;4G%wlSgA%jL8CcWeR{rw{k zLB^07`QS^Ef+Ew=G!S_k1R7@pkY)@1?w;)K64D3T-qD}0d}U0JHI!-jVm~C`%!~xp zIALw*tb3?~&84?f!92LvjFlYh-A-Kd+l6gZ$Y18}YqAQQV(5{KWKf_MT1DVPhdVrW z?FJpNflOr1Un~n$6adcq%@lE7=KkSpIIibQ{%u}q&df>$7M8pm;pubrCme`m1Tn(W4?KxMxaH(Kj`onQd-)fM9rk@#39z@J4iASV1PBsw6v9l zWB%;D5$}rTXRBwadAoegZapj^FL1EJINWThrR0n5 zOuy=#SrDTog=4ReOo^%ymZ+}OO&J&gg|Gs7id z{B65KjPq?<4Z$%=B1n|d`nI$X5ClC0+)JAtP--NyIcN6jT+0 z+MgWYmgyC z4bH45;4f82@}7w_1E(=Kz%NjG5Z6dZjvye7%K0%?ROi;E7H6P)3p#gMi(gjgW1~j& zyB$(GlNIKDrQ4A#n|X2jZJ}}16E~y%u6U}WbOO2%cqHt4^xUd#n2a9pO2Q9n3(^Zm zMDuO~e?@hba}%Q>ETWCwAuBsh3LeB61z%?$_pF}33A>#7HFH|OF{n$|b8gYQ;TosFaWiG2#= z$JiDvJFO64qNew1IIIC{;M6 zcVv|lD>IUs^@Ti4OS?&webZt3G1Z>z02)~$TLyJSp;~Do0tfeMbp+7=Fv|FjblB*r zUh^zoI=GbADW>W<`gZ$Er$#FU&CCCbyRVFDYwf~pZw08J1xj&uFB0_P4#kTXCFa?h;&!OCS^tPJsl9Yp@`5ZtwTa%#T^~e}?5nwqQDnY&rxLtVG;){R&5P@IoPdPm0)c z0;`#yzSb=J=6P0f)ckyBy%1%6!s+c(ov+%%8jz)g;Q~G{JM*` z;L}_uu+>)V9(1=EQM<0Z5O+`*tWpllbZ<7aUncu>RtV5odwSog*7eA)V{jf`78K8~ z?Iq+(48QPOy*&OpVMm-RWM1}D0?k47t|iMA-DGgNZvbp62%W)5(W&QQn2ynqnANFe zWxww~nLM;nhPRr_;D z5Bak))Gd4@as?>q0;xBuUeDDYoEYG6x?!I%K0Ya-7_$(dgn(X~!`D-nHdB|*OS2^n zSiXR1C0&|f?^hu#Bpg2p#FP z@}th1O^@1+X6p}QsoyS(y*)!qd)tS!G$n(YcS11${%W@x*l^D)#l4(JT$G}&-!u?X z@T~sAH&IVzcq^o4-=u{vvcKSFiU)LFbPQaX47~zaEPbmq8yuORej%C?VjCYMq{Vf% zwi-yZup+j0FZC)MF9hU8>yn0|Jou~*Ojbr8nXgMprMK7}^zN*_SMy)0+w3q$7(208 zTul6|cw?=57`fwz;xz>cun6lwV;Kca@$@vCyi}c;2-M*cq@FaUp=)A zUbNab6~|+hqu&aQv3_?8ewdp0YaOcYs3rUFX+JesJi@J6FSM8&UO66A=Fh#7cxuB_ zZ#i53Mt1YDnI5sFVF@mV%T}L-?%yw5+%1TjInQ<+#2xUM2k}VZhu{R!Uli#UOXt)pyLTy6;^JsV-tQKlndteNXqu^HN`WgMlEZzInx_VB>wvfAS z*2g_&;FfKfqtGFh(On_~Lg;6Vu7TCmRKzb~W9b&wWdGj7|KG3{a& zd#-c-%>ksw2yVm`Oc#Sh*|Zs}h(}lHTBJGe1q9V13SwU~M_x;G8W(XRrkI`Lm>-$% zZVI^)kEdcX1DpN6nQ;0M5m-QIPl^4x5z6vSnOk|J>HnheQW3ah@7#1+;DNft$^{bD z#Nl$=>fWS5=P`~LVP?T_50z~&XjK_;Bf4N{mRz*}Y32*f`sP(x;Sfk?9H~pr(m8&< z&ybwF(W$DEsBmI{aMaeH$)QPGBE<6ih4S%g&RGoPmy}=^+P4gWoRJpy(9HKPf0^DX z_Vc(J8m?ivd=l75w2JR~E3r~QLCuSc0+^x}owlm~=81J#iCo1x3C$lb1;Vh~lG~(xRlI=> z5>OJVHy$biftOEIv}PCrxQ$R)oIf3PsmPAK`PGT^^$0hDJ^%@9{;8K{r6f0 zAiD{QB(E#_a{+q)Z?p%Ywf(7bqsrOS1r?zk73)WW^U1Ee#U9(p4$!$zzajDcrh@qt zhn;U~ef^OoikN9{18$oya<*Z|T*cKT4TSyQFtWMhg3AOL2l?ZQfmT#dhrri5TlU@hhBHS zpZJLga`oauwu>SRYTXE2VwdTWUg`xLGdR0xVh8NLkFz9;`Ig8P_^&NGX>-F3G;iBg zP{J!s7dhf`((0YP?k|<9hzTB+Q=XyPeYKhS2{5RA+Sj|LW8DU>*>fOjprLT-nOENJ z3U827DP?w<#5ng_Qa#K`_gpswa^F^)w!=vGTuLV+^<0ns+$rl=T~X{?Io|PI4(m=# z-4_+zNKHXUrt4Di>;0*_U`Etl(#QIn0F~x&U4RU1_>`0=vD5Noxgts?tx-9% zrA?9{+sz8bImv}ic_r#dXKtj`ksEpB$U70%Fn!~>e{x{??=qt1Kzdp$wuT#8a zX5|>g2~srawqaKJ!eO^&Go=HG8@_a60fR<(-s;9W)35z%h;{=4ve_!H=C`sE&tv&R zAtslS?vGZPIIwE@ol;RZtm`iv%Y54{0~p~Op9u8oVzw(!RBmgP^K5LVOM8hcb(MDD z!e!0UaGhQyN}bqN5^E14Y1L@XNKe)JaORSpIG}GwpHhcbx1tGXz`;_bm3kzIASdX7 zgwxfV;_&e(X}BiCsEaK&pP7UV{rP@E`{-vKSVJngvlsHiqF;9dxX)utjvcc^q6$E-l%N&8 zIhw>PQu$;0CWZx=h0IrOuS%Ulj~u&aZw;>8V7&Byf{wp(U${n9`Xe&#ugOMudpLpX zr}~CO1n54w_xGpCRzli?N+t`1>TaQs(1>>gvSFn#8wddd*C+-fzqnNp58a#~ zXESSo@0KR~MQfq)kb)Ua^3?KC2L){r%P5VbdS*j;UlN(Nf`^)C1iR!NUS2T@>QG2#f^c>)72XUE4x z78*1o4N5qmoqaUbi>rBcVe1;P4fr5VgP$It`A3k{Z@iiRDyv9t9rDO%ME+P$ZZL!Y zGFz9fKXf>-GM=Bo>Y4O>t#5mvve3iTE-r#h<+{(N*dT;!->lAGTGc8klS6(B+4u{P zmtFJ_LPA^*}}@7;X`I<0ovFQBl-xDI}ApJRi}3%lZE7mI)u zxjKJ8h7(jGEhMczs8BsxU!xu2*8WtX3L&ljcDZ3ZG@j@s{*g7pUC@H6%BHHi7q!?2 z_6jZFhXH8SacQC5>M!z2D6`V+NAFUGTYlDohFOon+4`t>BI|Fe*7MFv(@Wod+jEs| zp5hVDANYnqJ{@=l;7r!+jO>@C)S)j&#Ab}aZb!_Qog_ncN`-gfPyJetz!Zl=~@nd{wS2Ly`gcu;$%#zEBFjUl66WYm#ZQQ>;qiB<*u^}n|cuLRt`?c zM}DW_IBL`(P8)*-l{6`HRhmEgR<**Tb5hy9n39mL1?n|? zXn{w9Yo50wR3^muY{MEX*B7FvP$e+YCt@?5f$~>+oW~OXQDBi){}!Luv&*(g$Klmtjnq#*8v9FIV_)=s!XhrZ{T~_?BP#$S?TsEC)HyfllV^F$?$;EBip(5 zY*y{mLK0VbqhzUEHofe|L?kT5n z0}^^B+TSpRzIM&-FxEEvsy@)+o%M&pd4b=6S~Y`m$NtdAqTM|CiH~(+NHG%WWJnsQ zGD!9U)6iLBGSFN3G*EbnRp}gl!~A>dNq;6*O=m}d^3q&QF>09`**kH9$f*n6)L0(t z|DV6h0lx+27vpq~*d$TKy!u`v`dj6DHJ;(aE+SpjSjg)Kid9Bs~Y(G`WJM+Gef9L>WTJI5fb_%#AhiH%c*nZoz8OE z(B|!p?)l2@y)U?v9_<-tk~Fw_ik^U4&~6lceR215hPA9@*U;m7x-HJZ723!$&V#;G zoM{w)_I`02g4Cr~#*ZC`eBRj&&_j}r!20^##{#b&HnraDL#HQUIY z&`^b`8EN2S)GrN0=yn>Wwi!Lvo&Q$V+Z~gBR<#h`cvqP0#GL2XyjNszYjy`ipSn^O z-{G~s&=ZWoM~_RZYo@yhJnr3=iMyZ2W)C~v;t7i;i54j75XiSDw1Ym^F3R&W`I9lY zR!BdluB3VVcECm7G<;6f6R==Cbs^_f2dJvMN4{^D4(>X&&ciSoeNx+cAwJ1si-UKa zOFK6K(ytoVLY7Ld>!aztDvv$skFF5DY{t$V4U8QMDf=m`ujXSAsDmjXqhWvAe zbFrcN7px~qY$wp!TS1w@tuc=EAXgqV6}24NOG_)Rb$?HSs_UBxpOue}U~Hso99t~A zH|2saa%NGI`#|H>z?J5N|C{sYvcPdGR@s|7nREZ?w$QYm5PcA$-Sr1`L3A3UI!3y; zLoMmdDe0_|eZ_trv6HdA(r{<2yd++HQO{CsJ&$gG#e8~!f2Qv9X3y+EX%fz|0xcOB zRm98*?SYH)uVI8-yQ{9hCZH9rp^#=^Z+@nd&W|=#yJ~4bL#GC0^Tlu8!^hRogfAC9Ebg{u#$TnKm#y9+*ezN^?Y7jnpJ0jXj}#ZM<& z=A}J1N#{eDfFPCik9$58+&7KhdA_2gL){y)M~rEV6P?HS5ccTo@ye8z-xRa~(4s?uipU$!?^~TcRTV2r?fJHPOU@ zU&Z?+AG0I=@+cWI%ny(;66d#C6g)@tjiX}^(o1t6qzPf@tXDLZjLwa+&#c4Z*Lx`0 zUFItoCMlvtTxKyo}k%jL769lw01-!W<747maIG9 zeVmLVMPmLUf7TrP36y_jjgQg0_;;|2nUJ$Lv_TO(FJ1W5lk*PDs^lkbw~hnI8XvB{ z=b$@;6#H$@F=X<)ko-kXSj4#dWt=ZI{Kl$DBa&CWH|}t!9yK9+wYm0d){5$Z^54$G z2^kT|Acesr_(a?w=1XC8SL6ck>atNB@3&R`wT^0IRnc+t$A4Eaz}*=C<|w(?PvI<* zi>TRaSY6&PJ2k@jTVxUXgu*HJidqdZb=l@|Na& zY)3#doP&n*^dITk7AiHf3Yc$=+Ag!&im76>*|%IHf?b{Y;D!bDuD4L*cfr(=HR93P zjeb^to^>6dek{S+lQA|kr=s><<*$fQ{gIOl;SCTR9)P?NPh0-w{e~jT3Na@+_yqKY z(aMzDS-v5ebElGj(w5eBi5+~ZNOADevvS^gAXqE)Eg30cP^p4%X{MekKQJQCj5N1$DA;9jL{Xa{3;A*$Pd_S&0WPMdV4f z3hid;uMQqj%Qk>M5Ya}xkW{iYk@ZDLRy9)>{c8Wftt!p1lKDzabr6UD#-ial|LB#j zxZd1_rzmaEjba^|P6{>EzLeigDjh3P|Dne{^@_5o(bqYqOya#m{rg>_{(J0;jZZtU zy1hQ6<;`^z4j|K?!*#_M*rRoW{T%)b44^q3zpmWf2U#)Ezuj?}PO@?2qcGC{^>+UF zSyLmXN{nToSofDINlG&rPEqzZ>oA8L75ly3E+ER~3TujIS@+%HWqSQ$l;J~`U%|Gk zjQx~zwgKn2a!@zx2~Fk+K}#~t)+8U`WrF-&x+sVq9 zM&6KdmcXi$E!8DDU!z{8oS)j~RHu#BEDEu~eZ^^!vmbl-pap+@&M%>u{PGNAPde*) zM=1^0rSr4NBccWnjwnRMB)S>ynxFiMR9*R`0UO9qssJ@{Pr4NVY+cknU>z2MN}$gL zW?AqVW}QQR0yby40U+K|G7bCXQ^KkA=am$&qCbw$ZA&~9IRQ&3l$$MP!wo6W^oa7u zmk-dvca1vxi2WV*QI3{*7gR%n<7o}~21GiRDFs*uw4`UTLv9SC0N?j$*Hns(R2fLM z&RDA29P&rz7+(u-^Pl_RrO_!|>un#%Pv3m{@KkWcyjh!*_DKpLZ}P~&dSL1xVM=3n z(04^*CT7VJ_N)q+Jlv-f5~+tVc!aK6M|kNSd|d9Y(`}%wkNgjQx?8^^o@*$LciW9h zI}GWlzQGBFyqg5ut_Sz;*PtRFXkkr?0Kt z{KWJL=w|KBV&?0|#+z^V<@>}MlX<>TZwJrvYD*2`;I1d&@UMx$*h$!)fUfc@anLyu z^3Ar8yow0=QjI|zW_)jEZEk|AtzjWis**ST$?+%4KG8VOeJrg^;=W`AMUiMog9>Bb z5vA_@ULTiP`hC5vJ$A-7@%*pR5CZC)#f7}&o?CjK;6;OTAG5@;qO!{Q5?vpq z(K_Wk5~bGN{2BnfD-eXYZHSN?=cbFzKkp4*nt2MjwI!7#W5<3x07wXoM&C|tiVRdD zd|8mEO1bGiMe*y#3O}YWe?3|l%MihV)mZz|AVXpbsTX(1RBk2?a&)s^#zy;d3h1FT z&i8DC|IGRwhq>E~0_yj<7623Hl8l#aXVb85z-gY(oD=d~881c4eqApd|F%pOVu;fi zJ~Aj_K|W+g&A6Xo4pGmuFdx9h`y%}JxYP{PWB8%pDVnOIf2*%?85z2l9~Z;C-VML4 zyMy^|^D-fSw>0rub@E87B+ye)oP#Z^sE1=SdGgi_yLTffHBbiz@-1p52rvO*kT^FT zd>>D@UmO9-nTxWRtmIF!Fbi!R#K*ZZ21`;=dx#~TRodD;paw3b=C}HB^_~c9WS42A zQz!eN1+My?efsfL3X5l+Y!G#6+#c)ay_pEbW&m)rlc;p>WjX^*f?Z|vjcJR<+|ROb z{M~-Irdqx6sX-arn#TS?<9Aoq2Sv{;b6A}zY&IqI2e_SOySSW zYae4<;2fDClufE`OVnvwxh_h|<7mWQOlW!xk3atL`tkSDk}Dl+?*Al!ANHwpZ9A z8yp=37#r%*A`bRCNf)@u{(4IbNoh=S9~T60{Z*DF6V5214w~X0QW@;cl$r=8o#r## zkt1&>qGox(C+Cn;CWggCGAup72_er?I?b|vzZ+S<7dm*}^XW7uFVV$9dV0%7D*LMG z>ayjJBljuJqUndrQS6X7)4yq*d-pCVF3j?J0&uSoJJtD{%>VuTQ&rT;*gDh6{2iUu zF^se={eZ<&W0>@Y06KJd`r{prNWdL-=fN<8?tginf0p_G{cz~{ z(zn^V<6TFOl9APgb}Q4AU1teYaQBbeETJ5 zFYE2NKLW9+UA_GGKXBGT8))GMFWYUt2KL+F7^^4sRUG>|3dd?7AB-y6wJ zvX=Fs4GKwj5uCO@*G-?2cwh6eP_?sNEgJN%?C;@#a5C1!qmycXZd?s#X~#bASWsHg z@c46h&@H2f8kMt9%n1p_&LR78`eGopi)=l84X5{vttvZnXM~&g4{Gg$=d8>Xj z-Dm(?RN11JzY{|0EZqu1I_{%*?2fpF4c(_3X6W~rX3Z5q^+dzG(J9R&1dH>-v7Y^5 z>JSZfVM>*GH?}x(`4D!(4yu^H4YmC(m!|58)rycejFa-X$&}KqzIxJ;4x$3h^UA+! zVr{fh2VD_v0;t8tC&Qw2wp7gss2vG?>~YMKozOmS#GDr>q=H>ENB$~s_~?$){Y84R zuSPWfA;*oa)|E%6^2+?hVDx==GHQ47Ql*7)_cLwNsuDp^dGF`2S4juavp}2pX%Ax_ z!N7Rero`7(YMCdcV1>FRNDrU=TTqL>+vaBH@q8Z4qaqWnT{qz_+6@)hk1ToF#ieGQ|!c@ zGcD0<A|S3{RG@b` zJmGpI)8$mz-eS^3M_NgAypd@--Gp&en_psqw@`7=HbTu(dZdFuXkT_@+LbUnhmqLnls(&D%|p?V7PNbQ%Frud2L zjc=k(=T5jUS!yH7eq1msuogAyX&<~9U`u~8yxJfQSCTSRW3=uKDJ0Mil)7gaGrN)I zn!1U+YgUA0kx9dA*r4s*;29-q-Prx49S-oeKAjwg1m|MC&LxKsqqMqBkGbA-VXuDK ztm!K)l7nYXN(SZeZbU9^fht!ud=d=(cncar^tq!i3Dz0bJ_!-hrSe;5=Xh%~$f~v? zeEqlVrm?lnBPX-lgvbfpgRn6S-Ud;1oou!ejQyX@^&Oz=EsOk|>(gq|yG_KcYOQVU zqd@G3MmeQ^j!mV^e$Kj=%JV z!O|z7ioZ4|XUx>Ivbn13-LlE#<)q*}LC3abpaNC4 z!Bq6NmprkhDh)^>sIO^7-Q$f>*o8C8c|1fHo}URcc+{FNhOyKDjkdD4Bp|Y22b7zH39PectNr z?BhLtd1NGdl82t9zQirPLf13fz?-*qI$E5BJ=IcY9+9yaNPzvAEB@XXXXzO^sVfjrlwtwl`~U^~@Y$U$^$zX<6Rd?9p0FEZpJJ@jmq)gO9-G`dD>k)#U&%Q*rU(_riu$- z#2_L`VwYc35}$z_){w9ow$Vc6^+Ot%&gUcw!4DO>_^wfAn9;w)`x#pj)Z$rA}qp zQ|NxC)SCHXp@GP1vb)RgJ7;CF2Y+&c^~=VfpEi$1x1Q00>%Yc4y8q!#f7a-rmv)j5 z*A>A#8UXOS2-eL-DrQZ?jB}V`8UDl_N=BMLg7iUAk?GiUk)$1Y(>+|6l zO$6wsztX|}16&|UfvU#i>1rZ)?cTTsw)so$~3E%V*5*o~QGIAdUqNJW0PNEty8ilB|n!S?T2+_X=bPoEMT^D}w3cVNc<_u{hpS~d$jNf$GPgq9OmHlDk4jYs z4VrTV^IM4 zX%OC3?x<#)ak1DfxyOp!GOELBcI;o4Qf3*`4h#kRqz80vieNr1zQ+dLC}TGfD?ky_ zu^Q`Ipr5VVXsNV4Yw6(&8W)NPN~aVWAXvmve1%p&)~G>c^m;Cb#%sG}6S+|tgF6!} zNms-$2HksQwQoPWy*(yAV+SQ;D)~YvHbtO~`wZDK(~cJW?g1ppjbrZCHpa@A!IS>m zB2Zs|H}H*$$^`rvQCONKZk6S$-`4CTys;3zkjf6}Csq$;BXX^?^fw>&T8m2S5lE@% z8B(J?@Z7J*h7h`Lm$n2 zU5^r~MdR9zcRbBoYsyxHknisien|;&n@hwx3nO^$ft2#r0kL$M4-P>+M1nrKad?v_ zUf0KXO~eXsJ||L7^VUDEEqj=e5-p}ydi-3;SY)rTjVdOe47RS?8|F^H5uilX{y^Xy z?lGy;AQqJmN^-uZK#$5u70ZrT7vP4^Kz!SGi?eNnYWT1gDq#YZAu$C&WME#7e_UUX zVT60glRd#B+J(R->MD#RcAl$4hgUf7#G;A_0m?46-e#GpC}M-(yZ2gKNmfe7!@|Fs z$zu+{--Q{P4y_zxdbAXfZVSgN3|GfU zf5SJKEhqHgMGaGKZt*p7pF7=MoP2++J2ArayT-!nb3)s&+Q&whO;|+hCL_y634(kK z=W$sc-!Sufku1d-+Lp7aNGB$(z)8MBlKMG`8d!ocyG1au_CQbR7}c=&bFy{!m8clc zy^(`|h94-g49s~>x&mex!A|d&UCAtDmvH}Y%M=NM+cdXM3JcZt%|HV@U(BibcPF*U zKN91>7k>yb?eZtMJrDSN{BWFUSNz58IUW4r^v#~F$iJ2hz+wFtqlTn>RaJaheFqwZ zXR|m8BK$;~D_=F{*}ng)6Z+>G{vSL1@GQDReaK`FmvS4sS9pzoMTefe3x#RNB^SvH z{E3L)yN9g7xZVir;|gu$5UF0$+RJTk9zRVhB4*V%!7FIL2;JN0t7L5X&&f1MKgZ1* z2`$OnS9jm7J~T^mBfX5W^=%e%$F0-Mgzx?xpPw>7G@2XA#kF>w>Vt`@Tg(MIeYtkF zbIqTDyB4hOo^DeAd!hu;uyG8Qpz;)?!L7gkG_?eE3yFvRv|703sO$8)y?^i5&9foT zqRucP^H=*jyC8ixlrMYO@o&3ohUL$AemU3};+fGM32(}?J9b|#@{hZ$IA#x4GzL`q zv*Rpy@;c9h?x!_MmM^bBZ{wx{?KLK6r#191TYSp*f zSJJIKxNXnqJ(oLqnrx?ZeD&tni+YnIJcHZtN?y0IA*=w6u+7L+?{=ChqvMwBqup!b z+%zn&4UYHws8^SC9ev93!rY3cr4o&IT|r$w`MHbN_kAJ7e7M9RMmnp8)akif8dI@` zj1s@WhO}#P1NDLKhnM6)K7+MPUpYr&sU$VSqtVQI^)^n&YENb)k4$F;x>du~<2!7w z!G#%=GA&BN*v$Z3rcBr!arG13d2zsJ`_UPB$GCWx?#8VSuQT4MgnBNkA~D}D9}Rn) zxh^RMq$zjY1q|J-&c~nUpqgzM){^}nLXQ_k9do#EiD@^xj)EPcQY3%+Wyj(He2U0l_n>Y zMTMtgveMl2-G|m{7xsI$v$wy-Y-o6w_rvxPgXVz%>w!02=Pk@eV@;(#WtKZbWa;JY zw?i7O4y>9L=g`_vGoGu0_W77HZlVUmc#Koapya)Ke*U=cN2rzjG{l<`k{f=&b}xIp z6)4`Ga&Q5(+e3>HSfh7uXla?x#BaE9KqGA$lef~+>W<=Je9vz_i|qvfZPcYJU*4=8 zm;^eDbNgx0ZnEzVwS0*`sgZ_TbRWfmHu)K!8y7Vqqtd8NB6(^I5-Ulmw;%mA=q|q; z$0r+aTu67+D0^6q8r^yaJ^q=-FSkEj@Th)tL^w$N!=nc><5VDjEoRV`moGjo@=gWyos0uowV^E z+-7Yh`H*A?9mGUoPo^GpmtxxOS+RJpC1-%mI&G|q9bi;PRuQ{QU1NwgZti;rDpo$y zT|R#Ta`zT=gz>8m$ExWDmJw6#xajJ$b8#NWC@#`2e)6U=dNUT@MYVb}6=w@gKnU1s zEG1k0J#W;SzqeIe-tqya6Q*i*gkoPf8Enijv&dD`-aov|jB;Ze?|+<6-Jlj|U+fz0 z!I$})l%9=qq3|&wI{mm&Izx}%_L8rn%*RG{w~5AqVd`A=bD(SK)kFw^>j%O@PTN?f zHL}+?@AJEb$*tG(L&}JczBLd^!xV>JmidRcPmev0QS;OhHH?UU&|)%hUHGPmh>f~F z%CZZ13QPmjetW#m@8)`mnHPK=8lTkIJnm2!4>j((#6$Rn#h<*9N*}~&%(+-=DvLiL zLS)4}-cyom+=j~NJ4~*BdqSt)1Sbr3nD)6I2WYKkyxHIr#_^bV=v&^=(CAum9UDpQ ze@w&Ikjz8-MCdh$32EO7=RlF87eB6xzS1&PKaM}v;T$oj6(*}_I~%K3gC-u&|wKwFxef#@E}oc5sh zAWP$Z>+e;Islx3u;VqhbCk$Fxx9FN96p4L|kGIlQXk-I5QLFvuGjwD`L{lKvkV zilT8Cgn6~-kiWaS^slQw?AADM z5^}N32pZcfFGk?v_)jLPu=#>L-&9NzbRwA&hqmb3n6tMMJzS#iT#!{%r`PeeD+SB@Z22J{zbDAc)V=dFA76SUee)jG3zwz(CA&2XV$$Z`dR^ z6X9=^B)w9FUnMkr{Ca%Df$OO@xAQZFn;^`bOnR=MOEXD#Pv({jiHINTv538NWpy#}`{?>?0q0CS!Snd@F8; zrzGjEg@QO|J8(Uw^I#*&K&KNJnF{Z_SKW_dX!+mMo5LUzi33hV53 ze(V2S5^*p^Lg3ue{q_w5lA;-25?NE`xLcEcxB`y;yRuW|ai5TKeV&2U%3j3p{)tim z+r`qw-WW41LcVa10@-x<;sO~DujU%x#M^WFpwIl>va#e7)c(B^w$NGA7bL^4#gqfC*mZwpoUZ5N;n2GL3vusv#VwXMV(VL{!xg$N< ze6nbkVGrmQI=XgA;bCq^1ipLDctd*VgL{VuJTxmqXQFp{kPg70La8rtaq+HOx4SNu z+i&`=6_@ew<|RgV2Kf=yy^SfFIWpce6W&jt4f=#DfkpdhyqCTJJK_rNr@x5}A|e2< zFS`SB7JS`5`mwM<8VQ?0a!FO`72W*5EF<|PvZ}X=>%P1xLTFXhhn%!bTG9@1eIbL{ zh*~Db%?8AKvT4wBNf7xd?rMJg(VJga))i6VX3fwW0wJd7n+F>&IN}ny+dP`dBm{lT zYKfd$k9SR9VMm7eTf`EbO*WVn^DrgjfF49{qG{AAn=az|OI#`x2O~MF3=?kk;-=hQ zT9QZddNA|q{caGixUy6o1f`ym69n#P)@K!d8S@*adRoXQfgw=izPHBTv|)T{h;j_25ar}XqxgaO ztEnyU=vsl{-}@&*Nh5Yz)dW9v7bmCP@Up!^k(o=0pX|v)@@N@p#LK{fdkh@1m7CAP zZQpcL${wHXE^~RZ8Cv);j!BLFRa73~ivUHxQ^gV1*v14diy5J{20<#b3S&GzFA^B7 z57^Jo1{CZjv2?+93E++ZGzF2$dY7;f5YO5t^!6XL5uN``o&vt(tm%q$UF-=+T}{r$ z(f4l+4yc)KJ5~V#S@uf}y$8a>_CgC>;z^346%Q&;dOXUhsF!vOm;jFVB#zYIi1p?z z@@5sTGJ6ku2Y+t;(p)ipd{+xt8J97b8us0X>W$@Yj;)Xy!T=ZLUpqx50R*j;=H1Kv z%vsa+<0M;NJ{`WUUnB#yEa7Ila3bxRkgc*+)rvUpaA}K-2SGzkIRJm*QnAgF5sy{Q z7u5?nURB-nuY1aT_Y+ms3{|m8Z7Kh9q?n_}*Hh48BWQfIG0~ZCnHH&`@aSl9P-Z-l zU9z+lAY0(Mm(+2+|NBtcb#7w<1b}0hnUL7-GMuL@E!jZ?YWhz{ADVC}^dfJHbK8ft z_}@3ra;N;SGR%90dDu5HDp13LBkWl*ZK(tb?8i6yD4m}`s98TJ@Izvi!sVSTsNHuT zeH+sL!u5-{-6QNR$L2JSx(0(6)kg7 z?lZlY{P3xl_#xRtvh%wAvn~WI9|PM2&!XozJtI7sP+%k{+$BYA^I$ErE=L9mypN{T>(w26c0;2U zpLLVnQ9mk& ze*NRAifLd#e7swtm)<0dH^;lq~)XfV)J@iL~_EN9ZA88Q7;Psp-M*w$+!-QKZ@IX z8pHt+&krT~zf5sx0<{LcIcz0$2cn75_MQ8t+&Hzi;k;)oZqe>*MWafT5-%lb8Ics$ z$$1&PxB2}+088Zzvp&&o+KwNR19?73;M$QMzYYk!xn`dOs$f~3!sko&vJ0EXu{PW- zT7ZM!+L(nVF(KvZ$nhH1745T=qje^z;`4%Mt@>FPXO`Xsf4Cx1m6&Q%EZ< zj)0cggU=9tt8DJ!XTKud&fui8?Z7ae7W-tPNp;qz4$wFK`s2RYsJ+k$ms1?%-2sg2 zpOt7U->YX7*BS`0aI$$RFllH&Yg zV3KTOB5PFn&3#&C?1!rZ{5RsaG^oJWxQ1046%%8T4~|DlcH9gi%|xhG$l%k)blfWP z6tk{J?bm|z2P-X&n7_jO{az*bL_2tt1G{!Mib_re)3YVEUWj-7dg~#9Blp^1YNQ-# zVw}{ZJ}!S~+&ctMtJHyHKACH_m9PrqUSXwdColcT>}D5rf*?v~mRK9S31lP;Z3=`VA4#k4GL(K7cePM4w!Zrw zZ+Q-|$-B_b8$QsjQ!i_ubv}H62hZxE_mb5}+c+(DIrXy`(=Mb#X3%9r3atLP;*0E@ zKCtc|)0tbhl*|0Hcz-{dmwMvszsPd5O1t|0^=R;Iy|7Q~+KVtES@oyAd1jH<5O%ET z0nZHQ@4NmQm44L8g;!jE2L9U1BMl$-jBtzyAObm>fRzSw2*<3W-_}&w*Om=?ZbfOB zmo_650stz}EyZT#$xc9Sq?`WqQDn&^kyVxMptr}8O?K$?D zAT?@!v}x!1(1+csJ*5M)a9VS?9J-Y?P)IeVV^Xg3!u7Gqroz7Ev`58neceIZGG2$y z@9}vKlxMjjdVBA_e&My0n`>j)tK~gYyj0%YN3;4dZ@U-g@;ulzSldb(!_^UKEyd+d zaZUh;be3IC{3OV$*UcDrfXPXIY*({Gx89l$)H-dijT4UngIz*{d~H&%U1l$_%Pk#f zI9P+JTWmco(S=R?!nBqL&stlV^KiA`np~=826)dJC345guc-vK_B!6)v9j8I!225J z>$`ZVCRdZkb#_R%oT;LLpo+m(*y931*2`R^3vBqEyH~dV%-#h{_tb^uWxx$%tUUek z&7|Og1}yj}QdoEu^U;)|$`I*0J;19+gU?YajK@&tV$MwDy%~hMS|&|l}yPMA3;pIzT=lTXCld)gAlW= zA~{*%gwC$VZUAv+bdw=Ybojnmsu)DES;iY-y!m>m)?+fh+M#4DZ1$ID8hTa-Eo`*b z+eqKAlhiVedd0cL4svi;JFfe7HKZ)nk(qF{z-#&5EX`8>CAl^KL=L~@uBt`!^Nuxc zUCA#AR~fo{#hT_6HZSV(7HfXU%`1zZ)JCU7uehI>)KVXv1Fc4F6#hqd*A>=8*R3u1 zAr_>F5a}R9nkXOwk$_0A3euZ^H0hxeiXy%DP(=`kQVms#fE201Cq+UF0tpBKA~l2n zIivWW=RD{3+?~0YT+C!)P%wcht#VQ$kAbTEtn)&Y0Vn?XOh^QcS%*9|iQq88NE6x{8#C*xPTyZUsrdaz~OrB(NHp%8(K`w8T_YvCm$;7!= zn?Y)m*4}KaAJ;rKu57IT<5{N)haNu#l7BE*e*KNH3cOr8m=;Q5xi-gDKe?HXU%O0o ziXsIp1zllbbUyl(slCgI^wj%07o~3{H@tz8>naC;$8<9@ty?CZXSm0-kr*u>P;sE7 z_-3<1)9B)w{hHso{qJF;dZYjF;93}2BaBsF(ZI_MuR^XdtlKI$>obyjrYeqV!alF<<&ZzKj-zMMyWuE`(B)83XD8-u4 z96Y@8@zjf?RNywY@41Xoc1>3;fd5=-d=6HVZCnU?VLjMHWVeK_#oUwS@Eq6a42X;3 znRWicmZO!*>%-=oY~VbJQSFnJnXQXiS@Es_xZH8+*n<4|-;`K7SSvg0#x4djZ;Yuj zdS}CNYM&8UV@|`msN^nMSBJ`Pe^W^45#?_B+S_cIAU+;`l*r?8SwD`qK1@qADBGRX z6EWAkQ(ei2@YU6)OSQ)J(nA1T<7M{^55jvs6(z8RmSR_WF7I%VDd*2>XZ_#t9@ZD# zm5(Dtfw%8>#WfwqyUpJ{?wMlpw=?r3QD>iOm+Q!e!;4_FMl zaE#=Qoc=+3;hA>Gf@exqog(Jb*;ZV?uX5ry=Dto>=FLIn1!J|e`TN`kexKXRD7H2C zBZ?}k%mS5D^55&$Mt^s(JEF4c66K4@E8XSFuM?Y^t%M87=YhlMD6cWmmcv)KZMV-n zt)R9wy*(}3O>mg@EpGx3X$=3c=Wi27&#Ugk0BTDeWF?O?E+sQj^ zqZ_-o`lsj4vIZ$O+o+5D{*wRekiQk6?6CU$@GR~R(hj(~ztcrq_`#6Oc@uCz{yEx_ z;Paqk_m@5k&yW7+eN^0UNr{NRzVA~%Mn{2MLtC(lCW;-tTycZlukjj|kQQc|e%Nb8nF+O2o7;i}vMI^Tm8bjvV*VO5W?z(aVoJNW@pFBWV+5TLEfYj#*w+ z=U%(dy{BQ`sx6eRxYXg$w7YpJ2T;xhttm1_YV{j1_9LUeMb>`H17{2$)kW2Sd1TjqGH zIhHq$fLX-(CMF3GJ__xvZ{bYfa%;3s?j#_$9Y%KN%H}f(rrSYyBBoIch|!Sdr*JgV zcWLn9@2qx%r3%z9NC#j2nm*YM7HIpk_hLLX9iXgX!(=2XoY1AF+-WH_`e>-~i?u0SF z51;KN_-1a?P-2{tZEel(Ji)EqoeB+zIXbs9;&$^PwoQF>RLA_R(E%9BnLU@rHZXQj zeHIgll3d{|T)*lAOc%|AQNNPNHd)LvEnFd7bNXe@1Z87Yn zvDTI=(OlpR);2#LOlS)aVQJDD+Z<(nx0pfRR!FFtwqaT-126!|TPJBE_vgY zsPg?AY)71#TjrsFxXl#PMW3?#nIVx0Q|=y$g5TT9qqwFcL4_fOu0P`0z~?@v6d@Kl zG(6?dykE}NTeE4;1fw-WC3)`lt@M7*u!#l+Y<1{(Zui#c^WG!q>(9REk12j{pts2>H7E>K4&)#GU^fU+ z#Cl_2i+c#_^(bCxniw#3O&eXl_Z=>=$=*28V{||X0VVU~0z^})03kmS*Rb2~sJ$VAdwyP28^8i?Lr*9F#k> zqee}=?jO99%FwCwOI<1m6$^+Y1NInZ)7gGX(!e#Ixwc+>15SrR8XC=G3=mH-=av;MjoW>5SyOT0^<$rRO)Dr7Vh|4nzsez(vw%{V%;$3h z@NKTSiy`v8ljTOO(P!w9>diZ$#z(0aq@`VK3atH^LEry$+8>sTu&L+)NMR(+OWt}# zTTupA)2_%n(ZgTrGPnUE$Rtu)xbWfgh@m_wAB&rr8eui?7zqa2l6>h8Je%tu_nq^l znT89|M41$%dE@suzpISBc15|{^j2&A#fW0>>3=r#b5Xo~RZR|h5By~G_Z&*$L%j3E zV!-prnp_Wa>Bk5<2x*M`V=@xql9|sGp8I4LTG})#NIwvmWq)yXPe!-lEj{FZ)UP`N z>x7T;ELlk{dCDDYrFb0xj9pJ}*MC{DOKO@p%C;35`C9U~H6_K^c~z3LY16ub7fDZHDBh7ZAY;-%d5#b}W}j1Vf`OoeEhqrt z(BbpO(Nejn(Zc8S%XRuZSZ9?5P)yi#Y#3`F9pBoew3;*I?%av2TU0M226Av%#V6I` z0!@7U&Xcyvowsyagr4gu;aS2Af-jsnDAhA81iu@PUaZp^1*_+6>uF+54d;3tDft zs)`-aw&LMDoX4|P9_wn)(oK~*bNQ7V;E&Upg(A|bcDuuKBSXDTJhs51!)kw4Lrbw~2o(8fooA?ypqc*Wg8a~(jajLI`W9P_HYiMa2$=MT1jp9pACOvWlEgWp35B7v z${@_&QF;vqgnAG$c|40G+?Mup!9~CtL&?H2)T!v3RfZCQzTt>yQ_&X9#J`M6o!aqh zu%4YRc3eJZwOkBsNuAs0QP9?8TeF+gNv}6Xhz<1z)o}n^)oAxJz&oVmV$;6ss>AhX zo_ql~F*mh0ZEgfQdzwIAA%BjQGI{t=11QWz6w-ky?*$`d*Ri_m3o=XFX;mUW>kPFl zvrxaR8g!r%V%WOkp$`OSHUqS4&siG43(<+9fXhKJid*lTH!GxW^#d1&sSd9!18j=G zqET8O4?*~Y~QO_)}SWcstSX&G+3_jeK=OGxN@5hFLJlyO{b`^S2JoyAS z)TE}5!1A4kkUyp3!g@)?%y_bTXoe_t9C=ZW0yYqrMeNRVhdk^Bxo;lX+)_McL_fbc ziDUO=XOue>cx0+9pQT+SEktrvV%u@uQ=9Z6^>{6#39ETSO&V!<^{wk`N6keQhnKm* z1`TlChBo!p?+CX_>)C`GQ?oD0I*+zVjd6jkt_#s3#I1#%h(njO9b!=QTRx8-yH%i& zpqR9YSY3^+NuxrS^4qn4*AVT<&td;=@-FPmH9l7n(edJL*)i#*Ng&pg)msjlbXaVk zBcc}(M8OhLjdf5@26(plxkhb*hBF#4ov@`Yt!z$0K#j7zNj)8erVSmp(Q^H`p4gYW zaluJbo%T@iyzMJ=Ku;um((}q|+(59MaJvFExO*D+M=lY}5_8-;H`d=Pq6R31a@(}? z#Q-wWUW_N8h;6U?jOkrexr{!3mj(3Nkh_tnH)Hb)1zq}ZL7)V`nU1i@~X(8LP0Xj(>Tu_4PIqR2SE}E!( z0R_R_5GaSo3kZ1gv+g#iW|~N(H}Tje8=vCF-jj?UJTMw?U=%pO9>*%0P71n@shA)9 zbR7t#X~_R}PZ!6sTJ5@isR$em_RX4(iglAe5?=Q%P`m_ez;x&z+udit5MMbF_Z&z} z>DrSx=S*3eNoS?3)K zWl6Fc=lpwjZ?-E14a>DIPpaW3+#QFT>JIDEte-zoB{_Af8u*hG(SPXI933oxozvSq zjtLg}DO=WA<%DQ(>QquZ6O7-Y(sBz^LUxl>kKu0A5fy(wAnVe2xGYWf(CotzEYskI z7uoD6$1!2sH8+$Q=lLxwy=fX!qN)TO!#{q}=%3V;WPQA;(`I(p(@otEWJnaTMZeP- zY4)Xj?Ki${yXTXm=aV0g<%UF+h(V{nt+EZra*eTztF4V?foRr1@l<^=l~!Mmf8FuYir z=|rMS>U#;+lx3g7D$T1qI4e?lmID}7-E;6c1|KhfqVe|&*Z^6zCA!Z(o0(3Tz&vPs zLY(cT5YH)Sw8ye9!({uND8#-`OsOq4$HEiwVcRRtS?<(Z$9ZA!6!?-R=rtcL=hB0X zNuite?hzq7+f>8hv{#q47vPWT-+@<0 zr~K}5V{=)^`I%4~mnI=^H~^+oo^sH90(unmQ+pPnhp^GLFqK27zlbiD<|T$7UmXcF z*p&hkM3hHnQzgjyfdIqn5jCVlcKzMv1L81WgzcZ+|00lE1yWcs2!Hr7zBfq3@BlR=Y)EO%luDrt(N-AOD}THHNs_uc+n&y z3u3Hz@Y4}cn)~!tfLX_6z)S-Au5Bb&2GzW?77d+~?nX9)Ny!}G$b|!4SpY~pD7<5CZFk#Q`|t}xz8a5obEB#|J1&nlMd!%9!N=YG`v5pcv1S{(vjMtA4lw4*K>*4 z^p3hnk9dvXRfZly)X&>oXTHb-8$)J+p7#LX?w78pdoOs#bY4KEH|rj4wO!|VYJfdc z?H@9Rp1sH*$LPW{*m{92O1#RR|6H=IrUij-DyFK(lwP8L?dhn)$DvDCwFc08Kri&! zQ-8P>m`kV6&$|#&F@QRgV-{&4t_T9NhL)Kz@dN4E8sDBM4D`w5ewwS;&n7f&^z!y2g9$AJ z=4t~sZ9^47WWu&Ss#@|~AoW0(ODrsIvS!HVdv-`S0smG>hHo@h2ex+GF_l`123W zZtOC&-Zd1~J((%n0pN#rZqG$xfG9oTT{`>Y;Dr(79mmZD-v?4T1e%Gg&)cRnl1=4j z7j~efw-Xnx64TF1-ysWU4|`!u0ac%SdxDVU{tMFYjUNeEEdY`Z| zpiF-TJ7W3umqlyO4L&?n_ao&fXqV)F9_#Q@~;$^QEkH&R6*!6$~<%>LmIYNC(N3vYKl zahIJqHaYU51pP*2tmyFbsPm{r8P+Oo#oVWs376^NwXd=nV0IV7k~hzA+aIy-+MbKc zj}~(}UCb;F>#&e|aGq6f*AZbLJ(0yOc5~Mn(K*|^h11ht`voL$LB|yqf~4nLzj5q1 zaYix^h01$osCtfhOY&KW?FKAhE=ZRNCR+XT?Zd&$aA|WzreQuNt`_&N9Fisbq>&eP zbOFuCP0(36v4w5zx3k+_jSV@4ucLX{7{fc1-`~ZtnAis>M+l4O_j}LpFCDL1R zVc+!gJeM^g8}`Ce+o?&HSN07#UF~&i5P*_ zN3^?@u(3M#n)eG+jNo0h5e`9mSVwuv+34+tqRE?dY#qs~Rv}sDz{svcJhqIitSNBG zq{p6XP)SET`p0d!db9%|B?62+o(7?gq2e^c6KG9Me#R3E8%->TEuElU3rv)L32@D9mgY>BSxv>|Ut&rpYl9d};h-yGFSq zn1C>^zEj4w*O~&)QGSP}1CK#0gVlzfDMPipq}^h~{dpV{uSr!v7=|Df+w`b*$g6=Z z|HmH%m=MFnCJzf2>73Qw(3!=m@u*A`gGW1_2No8%-nhl5|1y|9-v@wGU43Xxq`28o|f@ic+(Ky&X~X@M~`wa?iYK^(Bu5zU}~?e%OVIwvQRtEx*jExlU%(o@x99+ zQa2;J3!=v`m$J(G01bpAiToNJ)nZNXJ#@z% z^z*%I{rCqB?4k{`QDM&L1O09Z&rmtl!G6@Ow`4j?rLP)R2_;oO{hmK@6Zg+tmFZsokiXC!`+4`&I`1U=IP{S?kcQI?frHRYN6xXx*EPtsmfpKMcMvI7Djv0osu6BR#>l{R~=@Ojwq)Marp;qSh~ zn>2LCYpMIP-2i%l+Z%3UJ5izIu8)I+hB}Nlc#r6)G(?#?D?4XDI-BaQ-O6W5dYrFj zIv{B@AEA4ij(vMABf-{bf_Is78Jj%QjKF-TJ0>(auZ(GxICs|eH0P|0ekzw@{zz#*0KhO++;)IHwh9p1}7<;wAdG(>|8nFR$3DDLz0f1OUWudSMg0L zH*>E$y~ZeewzUSDm7jayv>gIr24PCVsjMA-sVz=?q+_s_HH?R;t^`&Zp$N<+&9=R| z$=oUz;O}^8mfm)%ow_eMXW$o%k=sW!Tt!x#Te=*Y-lYH3DY>qKgDq;;q2DVDacYq_ z(EF$}!$X36CSy(bQ9Sq1Cy%L+Cg6Je^he0i(YFtWBR_M_NW4gxe*r|!`W3CDUpnWJ zKyCWx+UzJW5Zcs;#!!+=0IdESQ#0$mW-;02xbf60^H>8{;vh%KaY!mZ!9chwx7j#e zVgwbpp;#MsR%J8Z**ku-UO|zZre3)VsxQrD2r;4^=|>^Aok`pC<5jY2Rk~l`cCpLJ zYpxN&o~7AT52w!_!2a+a?By@Ff$?A-Z-YJ$z6Sl3$UqIGOR8>(F{}0+Z2TI45%ZLc z*)#7A4m(+x@z903<+8ol0oJN-?f!ebCG6M2nOQgxJ08X=`Yj^~y*7v_%bFU!C&_tI zPtG|9)yeYtnKcU|xhVQsL$)eRY6-+{h`J?XsbX&2; zGnRL(NFD&t7(Bg}Q*F9Tukq0!{|gaO{~brF^t~?7F|G7>UVJ9NUUtDMHb7`e6f&^@ z&(LiK72S(7_y?SOc0WiXTo*Z|5fB z#woZlMz~UZI3ks%E{=mkk4|^HjA#!pjF6%YaJl(28+O8o&EU3D-;nV9Yho%@08rE- z-R(}!PPnrKRDehm9X)Uu6$?VhR4V+bzM~OOfTA@t@u2+(m!Qi`ig>Rz;swsvK=rFP{$bod32*g=$2ChEo(f55! zAItNjfAgXFeFA>h^an0tXcpzv(X%1pn+LFD9enUN;>D5|Ad`PFVoPj7>+2|E7gQX{ zaGe}QZjyq$%PbVF0W1>rN_VhfTFv7PjlO8eZFu4H<)A4N15p@9|6xCxx+AxtWxU~i zUmS6D(z{CL-1!IgY&qjaQy$Sw8iEvf>Z7*QI+;4k-piiiT;xz&0SoHNGi*8)`+CSx z+~36a*8jo5)J;uo_nu$BUUT(GbL5@$joaO)tIUim>m`M-){QW?mD>|(lZD$MhMTqB z8RV@JfU#xKNpo?`#DieO(+1F3A7;ITM zv|3WdO;l||JF-X8qkb zCjFy5XGL3APQSM1@Vct91uR-=@Oh7(yexN@ZayyxEOm8b;K|=euLa&#C=Lg3b$w-O z@#5hr$`HFn!$hp$s>fUjmTIv0l6D@EqU~2;=C>ZI_DGVvaNEJB;LO(g^HDCdsVRDF z=nSEP)1*E)4h@S(56z$w%3#C*t0gs66(kI^Z0GZvob{1I+b_+3{z#ZEOgakq5TT*V z2ppH<_iME)BI9F`N5`Tjc8`| zQD2FCOP%n0{xgX06(~rz9PeTp<)07up;w7Y?vJi*`xV{8tx7QSr9*c{`pEzRRe5mv z^Z2Mc*UZ^DpVwKlw3IJHq(vR92@p{}`}ugrN4}3QwrLFm>jW8YFQx^cewTmz+%4O_ zW$=?_5m%5yqu79zq$U>#W!nA0&lExq_D9{6P%}knOGeDyZeM0~Kg@KYgH;3x71Jub3ARymxo=?2ulx z@p-6?5~4sVvh=gQGdqz>{M%c$KJTLC@;K?QzRYV!>ql7wM{|nPQ(Ky$mVJ^LNXn0; zT@WWW0ROA|WspNne$@>In))^~N{r4sl*TM$us2MMvJ$BjMs#+7b1|%}jS4!#PjcYi zLNHFQHf6C#qWvb0sx%q^;GlA2G7~ab>(BXMqL$~)fmQ&|S7wuoe2Sq)($-HS(H&(v zNYnNo0gXQ6I78tEiQ_nPPNAlMINvNcJcoKg$&m)qXxEvT*us?1UEDRF-t{Qrv2PHv z6&``TXT2oP8`@(`D?bHcLsw{H);$0&xD}lc9Oi!E9U?FNkT!b$^qOc$9@Tswk zIQkdomlpD;KlE<%FTI4Q->jKxbQ#aVApcJwA!sdfQPywlyN|v>JazhuWqURq)hlEjKU! z9HR#?E*E<*zo|eiTr)(`?`6Fjn=&bs_-Ba!+r3OBWg!23JxMI9=#Qsf#|$}_dkif8 zmI+QulE83##m44$aH6q520bS{Q}&%%6gi)fgk7AvHB~BtEV4+(x_m#|F(NVwsr-LWBL#F5PcQLY&|Afi;@yp{G9qC=sNShL>3P9;e z>wSy|)9B#`c5)~=^lzs!L7aTYaW*w3*@)jN5BuL~g+14Z&plNjr^i@$q8)g8v#>{9%o1MH=nC6o2t6btx=ZWj;_a75wIZB9hTwu zRm1$3!u+hHu8&}Q&c$wzMyc6>6_Xcz>{2dQqftJ~r?t0mev7GRcRRfb<~L3qS839h z{rWJQ17DQ0U@7b~+)XSl?%fPZQH@=I zT9!NC7KX!X9(S9xgb*TdL`}+Pa}dN~!h z*m5x#7%El%R952lc)4uB_cfc-)xAHC1~AfnwJ*18JH+8$ee9=X2(b5)*t{>8@GM-N z&MIpc)9*^XjCTPr8ygu-rm_U0)zM|2j|f3WJAX`yi_cGMwttCn0#hN9p$xQ=YA}ze zYhz&IvF?cH!xgwj(>8NJbOP3-zc3=V&g1b+^J8|C!zUW7K!8x^wr((^KXE&Ot0{;{ z3S%MIcQ5;FEO3IXyS~+Y{`z?FM&-2xj*31Yre+NjZ3-#%xZ0ZySKUr-s=;f=wjIf9 zC(6C$<~w{wiNQYRyz-}7&&!(&6A?SY+ndf{Qj-Lyi`O$Aq)gx@&pqjR_q`YuvhQKv zZ8azqgBGFxL32pW_GK0ZzHngjO>| zS%3luz0yNnc`3gFaJtGLUZ0{zz7i*g5)OZha}}Ljl!XWq-pAY+e4wXD;B_sRxEI41 z<8K2{+qclg4bLv*(pmFeMCm~^Jb*YYDW!hbcXk%v;?b44jQm**uKM%RxW$2BydhMV z&#t=Cq)mpC@yec72qnz|b7oHGsx z8Jd>!q&QD3ab(gC87Z{lrtA@jqI+}DIvw#m?Xvss5+hSU%;LEVFosPLEf;?iqvy^$Zta6LN#UEB{gY465QXxdw{sC z8s6cEv#L4u9F0xjHAqBa)&$)*j!|AkjXs4yUzrGP)2JZ&scaiF-%dAG|RWalQ)InJaVXu zn$@o?AmaBRKBwd1$h%)$2Fi5DaR3oxfw#(_OEl3TS&=gwh!Z!!#QLf->Cor(2Qg!% z-_6F3kR$Q+>uk=_Godb0sbMZP9NbaX7+dBh2};SLSM50J+q$nl#|x^1QoaK82?1I$ zSPg@tosprhLToF?z&y*aG2GGMbK=V7fiOP;Sm?F>!c!@Vi}PPms*extD%b8aWc`cm zUElo@MUU9vWqHB|NdW=e%I4u*_n4sO&+i{y`~;`_2f_{a$~{(1sg z#~*%a2nn3$udOEk>y9sdg&Ea6dCpBRIrAL(Q(X;#+C7Lc_*b(0+gltKLZ08YWD-?2Z-@7)^-#u|v34QN)&> zEXgj5?9ku)f-jx}Nc(7!VWqUTRin?)!}?hl&6=xWZM>rNJFp#*z6?S+B-@G8HTy#` zW`Knlq!J2bI&1uOX1TnZSU$OnQOYkw$0(FsSfUC(*M~Tbe;rQ%HOD8=0&)~=#$&e6A)_OrRj5aw~SCubxtm3|`IV0dx$=UI`8pBG& z3=CDRlM-D>KU+9%{QlTtY;)q%lhBIOiCFlKiZ%Q7r&MK+J#<}rS;ew(_oX$lH!DZ4 zL0X`1?jozcZtp~LU!?NMxf8Ig!X5*Zg@?pLJ+noLN> z7TEyD2Ftc(mjq%WR?+)`Qymb&O_M0S!Z}p^-}YJFL7MM`^)N~EUW}*wMU21jg_z*t12W9K0T8ji$b4-k2Jb)fqW!&NTDhM2d70mKv;6lk+|j$ zl*DQ{Tvvfdhfh40um4JH@icwR6pVPfRw1e7d8kS!F+-E)f7H{RMxMv9bQtmVs4{;8ou=3T4h1Ec=wON2>4 zmwRtn`FBl;Ty&?C?L0DgC`?$(z-}M`>}}ndaf^+k{+ioHv7D}uLo9ZmW+R!M5}Nr_ zLhlQrVSSSzgeiobXEvlF>gy*z+)>(k>382H^LR?DppRIZ=CY+H1sOt|3K@u|78ZUt$@dYv=`K1V>`&_SFJf6BfH)5^DabzTA2aHTc^|D~f zUv)apL6$smExF(y@^4RiZw`uUzYvAypn56X?nn%t5m8)3auny?N1UOmHP`qol#K`# zCo2{0dR8tbbKp5}mUsciv-xfU?dTzS#x(j@1Q%C*nQt%&*f5?HjmXvVvhhSH9b(Ae zHTmE|O0?;Z7H zFDtd$9n5ANzb(Q$X&Jct)zgWD9Nc6tf`<@${Q17YeY?|~wd%T#vMEu%K4O3L-b;Rk zK;YLc3{ajB^`I`CGQ!rxzb%4|`BSO!2Hi)^WwV|v4$si!EHN(UnNhXA0gkiYj$#Ev zy{iA}lPsr9Tz|FO>5pUEv{u!BKgK?n6l`?>$;cGF@iB{~nch`Jm6_2&n3Sq+Y|I}j zKbeXA*OTb<^cE$5UO%-^r^&}p`>!tQPBOfs)IbB6az*=R) z@V_?ly>QJ0DKwvk3t*a0=vNkIy-Mg1_2GQ_zlTC94OCTD4au@9qoN4@DryXGps=8F zZ$9zx_ePYw1 zcYN+4*`3U+U)1}ZxtQOwL*k#hQxYU84EV~s(t5b@SvFpOsafk3Jit=1=(4ptVja5D z8eSSJY}-k$97Jj%KVkeNI{dVDJ%mkjdqE{I!aw>$YNCy&V%?C8a*2*X?5{uMOiYh; zf%#+z2H8V;#O6iy^Wbw@01-XefWR)0YtIe!eA0=%?hp$sRJfO)RDRzhzOPz^$(Fy= zN$Gz!uz7u{{rS(dZ1~p>{eg$Mk zDF%CSz=z&|g4q~7O927CPuzj>Em14kz1;Y6hfgI6k22mZ<6C;DkH-{)X9?tUGr@5&ZO6N+2yyeruW$}%Uz*$y(9Vadx0P$$rVhLeD{W}`&>>W`0V^pj= z;`rF2;{UJ3Wk##mVz$!_U&*^-EZ4_6IXI_s{{#)hkg*%e7SFqH+Ix0~iz9>p4XaPE zABvS_ja8e}DE%Jv<&Ie+@gr*5mgKJl?gu2b)IKHb6(KPEYg+(BFE)gGt9s5(-2uhOa=W&Rc5` zGDnrRc4y7R8djQHNYjww0db00sDzQ7^;>whlg=K|M6V~pCzBzi-=rS$aNaM=TrO*Y zHj#eb?Z@Vjt-*c5(1N)7{CU*plPGuF@AX1XOF{@EO-I~Ocf8-ToA8Ib9XB|Vk1%uB zLoJ&wQNbw^?o$}?7+`~mNRsz``}hRCPj`X_HOoSvchh?^yi-Eeiho+*-gfkf1;a`w zb6s9#HYo`iHX0x%dI{rV>vV_X%Ld6zdwf-%0uG6oWu@?}tW)_ciox`4Q*K(Yl(_vB zzS_!*VXs1jleB}Q(BOMyOPw6(61t)%yccLfd!LA+vBx)sRz++xT7;GAAx^I_mAkIa z>l2p2W4?)=x+`?<-OG2(oauInM60l%Mjnrg3V|7J3Zv~j_PF_LqaScVn8${X(2VPm z@+j|;!jqpVlQDWCEjXCBNr!K5B)8XwgW8IpGn6MjTuPg;M+^m*5FTwF>@8yceRl9O zo=)3JqDn=@K!}r}!b}pmA;L$cnI9-f`u4KvhxI{>GZM-_BAj}T1XsN6o3CTNs|iKT;vc?QiTGrXYvOn)DwEF<^c zA+xwB%J;NK4#UbM3*4*6HJyh(tTUIB$w#3`3@rcsM5RH2$PVn^`~nz70#Z8O5ctZv z+^Lq=+Zj^pz)PfWA<9a_{e%>nJLJM_?nw1(S4*_Qor;5&mT7;0bE^J@r{&)rgXs8%={RC2nCB z+<8;;q2*Wls!kkrGI!#{Tb8=VoEV6Tu;P!Sxd{D;3w{62vPuG&*xL1})u0|1aF}Js zP;@)ZOTF#Z$H$YErZr7hpA3b^!Ge0Ke|`rzT2(}I;SI@AL`czk8tH|@tEjhD7QptT zgVB46#HjHSgd;m^=R3q!a$Mrlk|mKPr72byRH||iz>xhW(47_Hq|;WEGw6;G5oo1U zbb4Lp^un)Q*_*U(UF~nw+ib-4V15+~V$Yd@j0a2<%O^gjp8(|X`kUxK-Rn(Qnd zH=|Ro=qHo?!3hLto#whPJq)l!)~7n3{!s;Oi?=3NXAS4cPinZ0qPsndd3$cw`}}C= zE5cWY%k5w-lDqmr%=Ftl_<*=9>GEM)Z)!xv4&NJ4%DHQIUwTo<8K%`F8In@A#r4Lv zCC<735(VhmycTbI`9Vkd`8W1e0A##;Z(WH30)Sbml$~Nlrh)>Zd1tpC-C2)2A8ARj zJrEL7{W?@msK|#=3WFv|*=VCZR9!rOD z0g!Q!q);3lKH(=d;-tq~5+7WOWH1C#x5UD*Y~y47lp@)~ghJPOPbxyA-@iuT*M*qY zW_AhOXvMTU%FO?Yt3te_Q7@Jl?qnNE+<&{TVs%nN59}yr&J-3v{I62f#%SoTW!aK_ z-j0 zxLB3n6pt!!73CA1*z z_&L%^h0*|9o*J!mDpl34@MOU6O88uyb#Eu8PePgYz#k{OVYga0y9@`@-;2|JrQKy8 zJ)hH9b&5G?F+~xwb5Txd>n{KiZ{5b)@7{1l6S>TWrCZ94KZo-y8&4(W;cyY}W8fI`A>dlRQqijh+C%WO}U9Oyj2*^##6D_yUwN%QjGe)H4q~ zYPTQ%?DT}vF`zaL<$~FtgT{1THu-O+?Xk+Uq5d+qK6_?#x2@74AiKWvTM$TgMxTdIdA<7E1Crbo8CdW~Oc z`;FJvCXz;?FI<*PRRK2;G?$!T+GYKl?s~?bWiuV=1{xump@JpwW8MUj6>q8N4`uT6 z`(5=W45)O4vOo{ngZ`xidE<=@b-&_LL>0to{yCozmXHt|`SGTscs^>9_wOu~rDT!P zjVyYf)gx(bQ0eAfrdcd>{a7O4U(Xq(_>xu!)#vh$4j^9=Lnm`vs1(U4XPcT*lKE0@ zolp+-SF;lI##~PaBSx~cr)t+Nanx7OjO6lb9hIVzqxA&$z!BL^yZ@<&jt;A`cEz*EWv71#ovMS2BuJAQUSIYl@i{1q^oU`f;`I2|UtH7@T(ckP8 z4`tE5@-U(Ncy*%K4k%WOE5yHM<84bi780I745f=ieUh^VTTL>~2OE9MKPpjDWJc3? zbjSMA&NsbN4)x&#Z2Bj@J=GG9Pl$r7qC$sDQRVadQ0_;=Uk@AS*z38`al-*@hHmRx zxrw7PTtbc^(_#u$bj4<1P-b0G!?6X&KHeO#<{6XWypS1ggmfPbQv4n49 zx0uob4{+hkXDXzlY;snVFO?-(>^q;|+EKsXCZ7EY^I$@uY9I6;zJHdh89@AG#NC(z zXGm&3G0*VNa>8>;k?b=LzNodaQX9g&^Mdlan@@{^GT-2KQ^#PQ#5*3}g*keRd(E)^ zI!8ez9vp*$^!#dx;tA_baTZ_4zr4ZnT4;HLmX$A0QJU^pdy5t-1>fW_+&%5H?s}EDG^`19--@NrCxSZ1{ zqOUw1!!;jOh}z(~(#e!F4Xznh#=+@80h(n^KPLwZsAeaCK3oJOj=E6-F~RQo(!Tmp zPu|D`jVz^+QIE$gHT!yfiYjoYMUc}JoQtzEl`RanE5_%; zYS$*z@5Wyi;8SgFrak5BRcRKea(5q3T{w0ma@SPB9WoE?8XZ&y>(#N~42e`b>=nWf z(Hk~QJrPj+9IsrPj?ry>q8q2CvjqB=^^7 zIMhl0G)`M;Jq{T>SzMb_ZQktIw$E_e?stBc@5@e3Q$H27=ykOseNjn3ppbbtkE{r; z9>Z0&=>qX7ALzHgsqR=K#jxU2zfgM>oGbRdBW?7jZQX&3sm;q