From 38e6ca6dbad5c10e43d1fb4f9103c206628ed707 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Mon, 14 Nov 2022 23:36:33 +0100 Subject: [PATCH 01/18] Begin split of sensors code into sensors/ folder --- library/config.py | 1 - library/sensors/sensors_python.py | 223 +++++++++++++++++++++ library/stats.py | 310 ++++++++++-------------------- 3 files changed, 324 insertions(+), 210 deletions(-) create mode 100644 library/sensors/sensors_python.py diff --git a/library/config.py b/library/config.py index a97ac385..37d973df 100644 --- a/library/config.py +++ b/library/config.py @@ -6,7 +6,6 @@ from library.log import logger -PNIC_BEFORE = "" def load_yaml(configfile): with open(configfile, "r") as stream: diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py new file mode 100644 index 00000000..0b4e398f --- /dev/null +++ b/library/sensors/sensors_python.py @@ -0,0 +1,223 @@ +import math + +# CPU & disk sensors +import psutil + +# Nvidia GPU +import GPUtil + +# AMD GPU on Linux +try: + import pyamdgpuinfo +except: + pyamdgpuinfo = None + +# AMD GPU on Windows +try: + import pyadl +except: + pyadl = None + +PNIC_BEFORE = None + + +class CPU: + @staticmethod + def percentage(interval): + return psutil.cpu_percent(interval=interval) + + @staticmethod + def frequency(): + return psutil.cpu_freq() + + @staticmethod + def load(): + return psutil.getloadavg() + + @staticmethod + def is_temperature_available(): + try: + if 'coretemp' in psutil.sensors_temperatures() or 'k10temp' in psutil.sensors_temperatures(): + return True + else: + return False + except AttributeError: + # sensors_temperatures may not be available at all + return False + + @staticmethod + def temperature(): + cpu_temp = 0 + if 'coretemp' in psutil.sensors_temperatures(): + # Intel CPU + cpu_temp = psutil.sensors_temperatures()['coretemp'][0].current + elif 'k10temp' in psutil.sensors_temperatures(): + # AMD CPU + cpu_temp = psutil.sensors_temperatures()['k10temp'][0].current + return cpu_temp + + +class GpuNvidia: + @staticmethod + def stats(): + # Unlike other sensors, Nvidia GPU with GPUtil pulls in all the stats at once + nvidia_gpus = GPUtil.getGPUs() + + try: + memory_used_all = [item.memoryUsed for item in nvidia_gpus] + memory_used_mb = sum(memory_used_all) / len(memory_used_all) + except: + memory_used_mb = math.nan + + try: + memory_total_all = [item.memoryTotal for item in nvidia_gpus] + memory_total_mb = sum(memory_total_all) / len(memory_total_all) + memory_percentage = (memory_used_mb / memory_total_mb) * 100 + except: + memory_percentage = math.nan + + try: + load_all = [item.load for item in nvidia_gpus] + load = (sum(load_all) / len(load_all)) * 100 + except: + load = math.nan + + try: + temperature_all = [item.temperature for item in nvidia_gpus] + temperature = sum(temperature_all) / len(temperature_all) + except: + temperature = math.nan + + return load, memory_percentage, memory_used_mb, temperature + + @staticmethod + def is_available(): + return len(GPUtil.getGPUs()) > 0 + + +class GpuAmd: + @staticmethod + def stats(): + if pyamdgpuinfo: + # Unlike other sensors, AMD GPU with pyamdgpuinfo pulls in all the stats at once + i = 0 + amd_gpus = [] + while i < pyamdgpuinfo.detect_gpus(): + amd_gpus.append(pyamdgpuinfo.get_gpu(i)) + i = i + 1 + + try: + memory_used_all = [item.query_vram_usage() for item in amd_gpus] + memory_used_bytes = sum(memory_used_all) / len(memory_used_all) + memory_used = memory_used_bytes / 1000000 + except: + memory_used_bytes = math.nan + memory_used = math.nan + + try: + memory_total_all = [item.memory_info["vram_size"] for item in amd_gpus] + memory_total_bytes = sum(memory_total_all) / len(memory_total_all) + memory_percentage = (memory_used_bytes / memory_total_bytes) * 100 + except: + memory_percentage = math.nan + + try: + load_all = [item.query_load() for item in amd_gpus] + load = (sum(load_all) / len(load_all)) * 100 + except: + load = math.nan + + try: + temperature_all = [item.query_temperature() for item in amd_gpus] + temperature = sum(temperature_all) / len(temperature_all) + except: + temperature = math.nan + + return load, memory_percentage, memory_used, temperature + elif pyadl: + amd_gpus = pyadl.ADLManager.getInstance().getDevices() + + try: + load_all = [item.getCurrentUsage() for item in amd_gpus] + load = (sum(load_all) / len(load_all)) + except: + load = math.nan + + try: + temperature_all = [item.getCurrentTemperature() for item in amd_gpus] + temperature = sum(temperature_all) / len(temperature_all) + except: + temperature = math.nan + + # Memory absolute (M) and relative (%) usage not supported by pyadl + return load, math.nan, math.nan, temperature + + @staticmethod + def is_available(): + if pyamdgpuinfo and pyamdgpuinfo.detect_gpus() > 0: + return True + elif pyadl and len(pyadl.ADLManager.getInstance().getDevices()) > 0: + return True + else: + return False + + +class Memory: + @staticmethod + def swap_percent(): + return psutil.swap_memory().percent + + @staticmethod + def virtual_percent(): + return psutil.virtual_memory().percent + + @staticmethod + def virtual_used(): + return psutil.virtual_memory().used + + @staticmethod + def virtual_free(): + return psutil.virtual_memory().free + + +class Disk: + @staticmethod + def disk_usage(): + return psutil.disk_usage("/") + + +class Net: + @staticmethod + def stats(wlo_card, eth_card): + pnic_after = psutil.net_io_counters(pernic=True) + global PNIC_BEFORE + if PNIC_BEFORE: + pnic_before = PNIC_BEFORE + else: + pnic_before = pnic_after + + if wlo_card in pnic_after: + upload_wlo = pnic_after[wlo_card].bytes_sent - pnic_before[wlo_card].bytes_sent + uploaded_wlo = pnic_after[wlo_card].bytes_sent + download_wlo = pnic_after[wlo_card].bytes_recv - pnic_before[wlo_card].bytes_recv + downloaded_wlo = pnic_after[wlo_card].bytes_recv + else: + upload_wlo = math.nan + uploaded_wlo = math.nan + download_wlo = math.nan + downloaded_wlo = math.nan + + if eth_card in pnic_after: + upload_eth = pnic_after[eth_card].bytes_sent - pnic_before[eth_card].bytes_sent + uploaded_eth = pnic_after[eth_card].bytes_sent + download_eth = pnic_after[eth_card].bytes_recv - pnic_before[eth_card].bytes_recv + downloaded_eth = pnic_after[eth_card].bytes_recv + else: + upload_eth = math.nan + uploaded_eth = math.nan + download_eth = math.nan + downloaded_eth = math.nan + + PNIC_BEFORE = psutil.net_io_counters(pernic=True) + + return upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo, upload_eth, uploaded_eth, download_eth, downloaded_eth diff --git a/library/stats.py b/library/stats.py index 7a27d553..07509059 100644 --- a/library/stats.py +++ b/library/stats.py @@ -1,32 +1,18 @@ +import datetime import math - -import GPUtil -import psutil from psutil._common import bytes2human -import datetime - -# AMD GPU on Linux -try: - import pyamdgpuinfo -except: - pyamdgpuinfo = None - -# AMD GPU on Windows -try: - import pyadl -except: - pyadl = None - import library.config as config from library.display import display from library.log import logger +import library.sensors.sensors_python as sensors THEME_DATA = config.THEME_DATA CONFIG_DATA = config.CONFIG_DATA ETH_CARD = CONFIG_DATA["config"]["ETH"] WLO_CARD = CONFIG_DATA["config"]["WLO"] + def get_full_path(path, name): if name: return path + name @@ -37,7 +23,7 @@ def get_full_path(path, name): class CPU: @staticmethod def percentage(): - cpu_percentage = psutil.cpu_percent(interval=THEME_DATA['STATS']['CPU']['PERCENTAGE'].get("INTERVAL", None)) + cpu_percentage = sensors.CPU.percentage(interval=THEME_DATA['STATS']['CPU']['PERCENTAGE'].get("INTERVAL", None)) # logger.debug(f"CPU Percentage: {cpu_percentage}") if THEME_DATA['STATS']['CPU']['PERCENTAGE']['TEXT'].get("SHOW", False): @@ -75,7 +61,7 @@ def percentage(): @staticmethod def frequency(): - cpu_freq = psutil.cpu_freq() + cpu_freq = sensors.CPU.frequency() if THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("SHOW", False): display.lcd.DisplayText( @@ -94,7 +80,7 @@ def frequency(): @staticmethod def load(): - cpu_load = psutil.getloadavg() + cpu_load = sensors.CPU.load() # logger.debug(f"CPU Load: ({cpu_load[0]},{cpu_load[1]},{cpu_load[2]})") if THEME_DATA['STATS']['CPU']['LOAD']['ONE']['TEXT'].get("SHOW", False): @@ -147,24 +133,11 @@ def load(): @staticmethod def is_temperature_available(): - try: - if 'coretemp' in psutil.sensors_temperatures() or 'k10temp' in psutil.sensors_temperatures(): - return True - else: - return False - except AttributeError: - # sensors_temperatures may not be available at all - return False + return sensors.CPU.is_temperature_available() @staticmethod def temperature(): - cpu_temp = 0 - if 'coretemp' in psutil.sensors_temperatures(): - # Intel CPU - cpu_temp = psutil.sensors_temperatures()['coretemp'][0].current - elif 'k10temp' in psutil.sensors_temperatures(): - # AMD CPU - cpu_temp = psutil.sensors_temperatures()['k10temp'][0].current + cpu_temp = sensors.CPU.temperature() if THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("SHOW", False): display.lcd.DisplayText( @@ -294,112 +267,29 @@ def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature): class GpuNvidia: @staticmethod def stats(): - # Unlike the CPU, the GPU pulls in all the stats at once - nvidia_gpus = GPUtil.getGPUs() - - try: - memory_used_all = [item.memoryUsed for item in nvidia_gpus] - memory_used_mb = sum(memory_used_all) / len(memory_used_all) - except: - memory_used_mb = math.nan - - try: - memory_total_all = [item.memoryTotal for item in nvidia_gpus] - memory_total_mb = sum(memory_total_all) / len(memory_total_all) - memory_percentage = (memory_used_mb / memory_total_mb) * 100 - except: - memory_percentage = math.nan - - try: - load_all = [item.load for item in nvidia_gpus] - load = (sum(load_all) / len(load_all)) * 100 - except: - load = math.nan - - try: - temperature_all = [item.temperature for item in nvidia_gpus] - temperature = sum(temperature_all) / len(temperature_all) - except: - temperature = math.nan - + load, memory_percentage, memory_used_mb, temperature = sensors.GpuNvidia.stats() display_gpu_stats(load, memory_percentage, memory_used_mb, temperature) @staticmethod def is_available(): - return len(GPUtil.getGPUs()) > 0 + return sensors.GpuNvidia.is_available() class GpuAmd: @staticmethod def stats(): - # Unlike the CPU, the GPU pulls in all the stats at once - if pyamdgpuinfo: - i = 0 - amd_gpus = [] - while i < pyamdgpuinfo.detect_gpus(): - amd_gpus.append(pyamdgpuinfo.get_gpu(i)) - i = i + 1 - - try: - memory_used_all = [item.query_vram_usage() for item in amd_gpus] - memory_used_bytes = sum(memory_used_all) / len(memory_used_all) - memory_used = memory_used_bytes / 1000000 - except: - memory_used_bytes = math.nan - memory_used = math.nan - - try: - memory_total_all = [item.memory_info["vram_size"] for item in amd_gpus] - memory_total_bytes = sum(memory_total_all) / len(memory_total_all) - memory_percentage = (memory_used_bytes / memory_total_bytes) * 100 - except: - memory_percentage = math.nan - - try: - load_all = [item.query_load() for item in amd_gpus] - load = (sum(load_all) / len(load_all)) * 100 - except: - load = math.nan - - try: - temperature_all = [item.query_temperature() for item in amd_gpus] - temperature = sum(temperature_all) / len(temperature_all) - except: - temperature = math.nan - - display_gpu_stats(load, memory_percentage, memory_used, temperature) - elif pyadl: - amd_gpus = pyadl.ADLManager.getInstance().getDevices() - - try: - load_all = [item.getCurrentUsage() for item in amd_gpus] - load = (sum(load_all) / len(load_all)) - except: - load = math.nan - - try: - temperature_all = [item.getCurrentTemperature() for item in amd_gpus] - temperature = sum(temperature_all) / len(temperature_all) - except: - temperature = math.nan - - # Memory absolute (M) and relative (%) usage not supported by pyadl - display_gpu_stats(load, math.nan, math.nan, temperature) + load, memory_percentage, memory_used_mb, temperature = sensors.GpuAmd.stats() + display_gpu_stats(load, memory_percentage, memory_used_mb, temperature) @staticmethod def is_available(): - if pyamdgpuinfo and pyamdgpuinfo.detect_gpus() > 0: - return True - elif pyadl and len(pyadl.ADLManager.getInstance().getDevices()) > 0: - return True - else: - return False + return sensors.GpuAmd.is_available() class Memory: @staticmethod def stats(): - swap_percent = psutil.swap_memory().percent + swap_percent = sensors.Memory.swap_percent() if THEME_DATA['STATS']['MEMORY']['SWAP']['GRAPH'].get("SHOW", False): display.lcd.DisplayProgressBar( @@ -419,7 +309,7 @@ def stats(): None)) ) - virtual_percent = psutil.virtual_memory().percent + virtual_percent = sensors.Memory.virtual_percent() if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['GRAPH'].get("SHOW", False): display.lcd.DisplayProgressBar( @@ -455,7 +345,7 @@ def stats(): "BACKGROUND_IMAGE", None)) ) - virtual_used = psutil.virtual_memory().used + virtual_used = sensors.Memory.virtual_used() if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("SHOW", False): display.lcd.DisplayText( @@ -463,29 +353,29 @@ def stats(): x=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("X", 0), y=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("Y", 0), font=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("FONT", - "roboto-mono/RobotoMono-Regular.ttf"), + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("FONT_COLOR", (0, 0, 0)), background_color=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get("BACKGROUND_COLOR", - (255, 255, 255)), + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], THEME_DATA['STATS']['MEMORY']['VIRTUAL']['USED'].get( "BACKGROUND_IMAGE", None)) ) - virtual_used = psutil.virtual_memory().free + virtual_free = sensors.Memory.virtual_free() if THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(virtual_used / 1000000):>5} M", + text=f"{int(virtual_free / 1000000):>5} M", x=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("X", 0), y=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("Y", 0), font=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("FONT", - "roboto-mono/RobotoMono-Regular.ttf"), + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("FONT_COLOR", (0, 0, 0)), background_color=THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get("BACKGROUND_COLOR", - (255, 255, 255)), + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], THEME_DATA['STATS']['MEMORY']['VIRTUAL']['FREE'].get( "BACKGROUND_IMAGE", None)) @@ -495,7 +385,7 @@ def stats(): class Disk: @staticmethod def stats(): - disk_usage = psutil.disk_usage("/") + disk_usage = sensors.Disk.disk_usage() if THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("SHOW", False): display.lcd.DisplayProgressBar( @@ -533,13 +423,16 @@ def stats(): text=f"{int(disk_usage.percent):>3}%", x=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("SHOW", False): @@ -574,54 +467,34 @@ def stats(): class Net: @staticmethod def stats(): - pnic_after = psutil.net_io_counters(pernic=True) - if config.PNIC_BEFORE: - pnic_before = config.PNIC_BEFORE - else: - pnic_before = pnic_after - - if WLO_CARD in pnic_after: - upload_wlo = pnic_after[WLO_CARD].bytes_sent - pnic_before[WLO_CARD].bytes_sent - upload_wlo_text = f"{bytes2human(upload_wlo)}/s" - uploaded_wlo = pnic_after[WLO_CARD].bytes_sent - uploaded_wlo_text = f"{bytes2human(uploaded_wlo)}" - download_wlo = pnic_after[WLO_CARD].bytes_recv - pnic_before[WLO_CARD].bytes_recv - download_wlo_text = f"{bytes2human(download_wlo)}/s" - downloaded_wlo = pnic_after[WLO_CARD].bytes_recv - downloaded_wlo_text = f"{bytes2human(downloaded_wlo)}" - else: - upload_wlo_text = f"N/A" - uploaded_wlo_text = f"N/A" - download_wlo_text = f"N/A" - downloaded_wlo_text = f"N/A" - - if ETH_CARD in pnic_after: - upload_eth = pnic_after[ETH_CARD].bytes_sent - pnic_before[ETH_CARD].bytes_sent - upload_eth_text = f"{bytes2human(upload_eth)}/s" - uploaded_eth = pnic_after[ETH_CARD].bytes_sent - uploaded_eth_text = f"{bytes2human(uploaded_eth)}" - download_eth = pnic_after[ETH_CARD].bytes_recv - pnic_before[ETH_CARD].bytes_recv - download_eth_text = f"{bytes2human(download_eth)}/s" - downloaded_eth = pnic_after[ETH_CARD].bytes_recv - downloaded_eth_text = f"{bytes2human(downloaded_eth)}" - else: - upload_eth_text = f"N/A" - uploaded_eth_text = f"N/A" - download_eth_text = f"N/A" - downloaded_eth_text = f"N/A" + upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo, upload_eth, uploaded_eth, download_eth, downloaded_eth = sensors.Net.stats( + WLO_CARD, ETH_CARD) + + upload_wlo_text = f"{bytes2human(upload_wlo)}/s" + uploaded_wlo_text = f"{bytes2human(uploaded_wlo)}" + download_wlo_text = f"{bytes2human(download_wlo)}/s" + downloaded_wlo_text = f"{bytes2human(downloaded_wlo)}" + + upload_eth_text = f"{bytes2human(upload_eth)}/s" + uploaded_eth_text = f"{bytes2human(uploaded_eth)}" + download_eth_text = f"{bytes2human(download_eth)}/s" + downloaded_eth_text = f"{bytes2human(downloaded_eth)}" if THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("SHOW", False): display.lcd.DisplayText( text=f"{upload_wlo_text}", x=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("SHOW", False): @@ -629,13 +502,16 @@ def stats(): text=f"{uploaded_wlo_text}", x=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['WLO']['UPLOADED']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("SHOW", False): @@ -643,13 +519,16 @@ def stats(): text=f"{download_wlo_text}", x=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("SHOW", False): @@ -657,13 +536,16 @@ def stats(): text=f"{downloaded_wlo_text}", x=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['WLO']['DOWNLOADED']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("SHOW", False): @@ -671,13 +553,16 @@ def stats(): text=f"{upload_eth_text}", x=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("SHOW", False): @@ -685,13 +570,16 @@ def stats(): text=f"{uploaded_eth_text}", x=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['ETH']['UPLOADED']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("SHOW", False): @@ -699,13 +587,16 @@ def stats(): text=f"{download_eth_text}", x=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) if THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("SHOW", False): @@ -713,16 +604,17 @@ def stats(): text=f"{downloaded_eth_text}", x=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("Y", 0), - font=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), + font=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("FONT", + "roboto-mono/RobotoMono-Regular.ttf"), font_size=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("FONT_SIZE", 10), font_color=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("FONT_COLOR", (0, 0, 0)), - background_color=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), + background_color=THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("BACKGROUND_COLOR", + (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], - THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get("BACKGROUND_IMAGE", - None)) + THEME_DATA['STATS']['NET']['ETH']['DOWNLOADED']['TEXT'].get( + "BACKGROUND_IMAGE", + None)) ) - - config.PNIC_BEFORE = psutil.net_io_counters(pernic=True) class Date: @@ -741,7 +633,7 @@ def stats(): background_color=THEME_DATA['STATS']['DATE']['DAY']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], THEME_DATA['STATS']['DATE']['DAY']['TEXT'].get("BACKGROUND_IMAGE", - None)) + None)) ) if THEME_DATA['STATS']['DATE']['HOUR']['TEXT'].get("SHOW", False): @@ -755,5 +647,5 @@ def stats(): background_color=THEME_DATA['STATS']['DATE']['HOUR']['TEXT'].get("BACKGROUND_COLOR", (255, 255, 255)), background_image=get_full_path(THEME_DATA['PATH'], THEME_DATA['STATS']['DATE']['HOUR']['TEXT'].get("BACKGROUND_IMAGE", - None)) - ) \ No newline at end of file + None)) + ) From 501121dc3864382d710378a79f395b46974c3ccc Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Thu, 17 Nov 2022 16:12:07 +0100 Subject: [PATCH 02/18] WIP refactor sensors --- library/sensors/sensors.py | 91 ++++++++++++++++++++++++++ library/sensors/sensors_python.py | 105 +++++++++++++++--------------- library/stats.py | 14 ++-- 3 files changed, 151 insertions(+), 59 deletions(-) create mode 100644 library/sensors/sensors.py diff --git a/library/sensors/sensors.py b/library/sensors/sensors.py new file mode 100644 index 00000000..fb1cd33f --- /dev/null +++ b/library/sensors/sensors.py @@ -0,0 +1,91 @@ +from abc import ABC, abstractmethod +from collections import namedtuple + + +class CPU(ABC): + @staticmethod + @abstractmethod + def percentage(interval: float) -> float: + pass + + @staticmethod + @abstractmethod + def frequency() -> float: + pass + + @staticmethod + @abstractmethod + def load() -> tuple[float, float, float]: # 1 / 5 / 15min avg + pass + + @staticmethod + @abstractmethod + def is_temperature_available() -> bool: + pass + + @staticmethod + @abstractmethod + def temperature() -> float: + pass + + +class GPU(ABC): + @staticmethod + @abstractmethod + def stats() -> tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) + pass + + @staticmethod + @abstractmethod + def is_available() -> bool: + pass + + +class Memory(ABC): + @staticmethod + @abstractmethod + def swap_percent() -> float: + pass + + @staticmethod + @abstractmethod + def virtual_percent() -> float: + pass + + @staticmethod + @abstractmethod + def virtual_used() -> int: + pass + + @staticmethod + @abstractmethod + def virtual_free() -> int: + pass + + +class Disk(ABC): + @staticmethod + @abstractmethod + def disk_usage_percent() -> float: + pass + + @staticmethod + @abstractmethod + def disk_used() -> int: + pass + + @staticmethod + @abstractmethod + def disk_total() -> int: + pass + + @staticmethod + @abstractmethod + def disk_free() -> int: + pass + + +class Net(ABC): + @abstractmethod + def stats(self) -> tuple[float, float, float, float]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) + pass diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index 0b4e398f..09cf9f02 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -1,4 +1,5 @@ import math +import sensors # CPU & disk sensors import psutil @@ -21,21 +22,21 @@ PNIC_BEFORE = None -class CPU: +class CPU(sensors.CPU): @staticmethod - def percentage(interval): + def percentage(interval: float) -> float: return psutil.cpu_percent(interval=interval) @staticmethod - def frequency(): - return psutil.cpu_freq() + def frequency() -> float: + return psutil.cpu_freq().current @staticmethod - def load(): + def load() -> tuple[float, float, float]: # 1 / 5 / 15min avg: return psutil.getloadavg() @staticmethod - def is_temperature_available(): + def is_temperature_available() -> bool: try: if 'coretemp' in psutil.sensors_temperatures() or 'k10temp' in psutil.sensors_temperatures(): return True @@ -46,7 +47,7 @@ def is_temperature_available(): return False @staticmethod - def temperature(): + def temperature() -> float: cpu_temp = 0 if 'coretemp' in psutil.sensors_temperatures(): # Intel CPU @@ -57,9 +58,9 @@ def temperature(): return cpu_temp -class GpuNvidia: +class GpuNvidia(sensors.GPU): @staticmethod - def stats(): + def stats() -> tuple[float, float, float, float]: # Unlike other sensors, Nvidia GPU with GPUtil pulls in all the stats at once nvidia_gpus = GPUtil.getGPUs() @@ -91,13 +92,13 @@ def stats(): return load, memory_percentage, memory_used_mb, temperature @staticmethod - def is_available(): + def is_available() -> bool: return len(GPUtil.getGPUs()) > 0 -class GpuAmd: +class GpuAmd(sensors.GPU): @staticmethod - def stats(): + def stats() -> tuple[float, float, float, float]: if pyamdgpuinfo: # Unlike other sensors, AMD GPU with pyamdgpuinfo pulls in all the stats at once i = 0 @@ -153,7 +154,7 @@ def stats(): return load, math.nan, math.nan, temperature @staticmethod - def is_available(): + def is_available() -> bool: if pyamdgpuinfo and pyamdgpuinfo.detect_gpus() > 0: return True elif pyadl and len(pyadl.ADLManager.getInstance().getDevices()) > 0: @@ -162,62 +163,64 @@ def is_available(): return False -class Memory: +class Memory(sensors.Memory): @staticmethod - def swap_percent(): + def swap_percent() -> float: return psutil.swap_memory().percent @staticmethod - def virtual_percent(): + def virtual_percent() -> float: return psutil.virtual_memory().percent @staticmethod - def virtual_used(): + def virtual_used() -> int: return psutil.virtual_memory().used @staticmethod - def virtual_free(): + def virtual_free() -> int: return psutil.virtual_memory().free -class Disk: +class Disk(sensors.Disk): @staticmethod - def disk_usage(): - return psutil.disk_usage("/") + def disk_usage_percent() -> float: + return psutil.disk_usage("/").percent + @staticmethod + def disk_used() -> int: + return psutil.disk_usage("/").used + + @staticmethod + def disk_total() -> int: + return psutil.disk_usage("/").total -class Net: @staticmethod - def stats(wlo_card, eth_card): + def disk_free() -> int: + return psutil.disk_usage("/").free + + +class Net(sensors.Net): + def __init__(self, interval: float, if_name: str): + self.pnic_before = None + self.interval = interval + self.if_name = if_name + + def stats(self) -> tuple[float, float, float, float]: + # Get current counters pnic_after = psutil.net_io_counters(pernic=True) - global PNIC_BEFORE - if PNIC_BEFORE: - pnic_before = PNIC_BEFORE - else: - pnic_before = pnic_after - if wlo_card in pnic_after: - upload_wlo = pnic_after[wlo_card].bytes_sent - pnic_before[wlo_card].bytes_sent - uploaded_wlo = pnic_after[wlo_card].bytes_sent - download_wlo = pnic_after[wlo_card].bytes_recv - pnic_before[wlo_card].bytes_recv - downloaded_wlo = pnic_after[wlo_card].bytes_recv - else: - upload_wlo = math.nan - uploaded_wlo = math.nan - download_wlo = math.nan - downloaded_wlo = math.nan - - if eth_card in pnic_after: - upload_eth = pnic_after[eth_card].bytes_sent - pnic_before[eth_card].bytes_sent - uploaded_eth = pnic_after[eth_card].bytes_sent - download_eth = pnic_after[eth_card].bytes_recv - pnic_before[eth_card].bytes_recv - downloaded_eth = pnic_after[eth_card].bytes_recv - else: - upload_eth = math.nan - uploaded_eth = math.nan - download_eth = math.nan - downloaded_eth = math.nan + upload_rate = math.nan + uploaded = math.nan + download_rate = math.nan + downloaded = math.nan + + if self.pnic_before: + if self.if_name in pnic_after: + upload_rate = (pnic_after[self.if_name].bytes_sent - self.pnic_before[self.if_name].bytes_sent) / self.interval + uploaded = pnic_after[self.if_name].bytes_sent + download_rate = (pnic_after[self.if_name].bytes_recv - self.pnic_before[self.if_name].bytes_recv) / self.interval + downloaded = pnic_after[self.if_name].bytes_recv - PNIC_BEFORE = psutil.net_io_counters(pernic=True) + self.pnic_before = pnic_after - return upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo, upload_eth, uploaded_eth, download_eth, downloaded_eth + return upload_rate, uploaded, download_rate, downloaded diff --git a/library/stats.py b/library/stats.py index 07509059..4bab849d 100644 --- a/library/stats.py +++ b/library/stats.py @@ -65,7 +65,7 @@ def frequency(): if THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=str(f'{int(cpu_freq.current) / 1000:.2f}') + " GHz", + text=str(f'{int(cpu_freq) / 1000:.2f}') + " GHz", x=THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), @@ -385,15 +385,13 @@ def stats(): class Disk: @staticmethod def stats(): - disk_usage = sensors.Disk.disk_usage() - if THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("SHOW", False): display.lcd.DisplayProgressBar( x=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("X", 0), y=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("Y", 0), width=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("WIDTH", 0), height=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("HEIGHT", 0), - value=int(disk_usage.percent), + value=int(sensors.Disk.disk_usage_percent()), min_value=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("MIN_VALUE", 0), max_value=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("MAX_VALUE", 100), bar_color=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("BAR_COLOR", (0, 0, 0)), @@ -406,7 +404,7 @@ def stats(): if THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(disk_usage.used / 1000000000):>5} G", + text=f"{int(sensors.Disk.disk_used() / 1000000000):>5} G", x=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), @@ -420,7 +418,7 @@ def stats(): if THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(disk_usage.percent):>3}%", + text=f"{int(sensors.Disk.disk_usage_percent()):>3}%", x=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DISK']['USED']['PERCENT_TEXT'].get("FONT", @@ -437,7 +435,7 @@ def stats(): if THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(disk_usage.total / 1000000000):>5} G", + text=f"{int(sensors.Disk.disk_total() / 1000000000):>5} G", x=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), @@ -451,7 +449,7 @@ def stats(): if THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(disk_usage.free / 1000000000):>5} G", + text=f"{int(sensors.Disk.disk_free() / 1000000000):>5} G", x=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), From 2d2a29408a0ea304d3b0fdba7a3ecaa31bbd728c Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Sun, 27 Nov 2022 21:56:26 +0100 Subject: [PATCH 03/18] Finalize net class for sensors --- .gitignore | 1 + library/lcd_simulated.py | 7 +++++-- library/sensors/sensors.py | 3 ++- library/sensors/sensors_python.py | 29 ++++++++++++++--------------- library/stats.py | 19 +++++++++++-------- 5 files changed, 33 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index bd66cae9..2b110ccd 100644 --- a/.gitignore +++ b/.gitignore @@ -136,3 +136,4 @@ dmypy.json # Simulated display capture screencap.png +tmp diff --git a/library/lcd_simulated.py b/library/lcd_simulated.py index 7f4aeb5b..a67a0a1a 100644 --- a/library/lcd_simulated.py +++ b/library/lcd_simulated.py @@ -39,8 +39,11 @@ def __init__(self, com_port: str = "AUTO", display_width: int = 320, display_hei self.screen_image.save("screencap.png", "PNG") self.orientation = Orientation.PORTRAIT - webServer = HTTPServer(("localhost", 5678), SimulatedLcdWebServer) - logger.debug("To see your simulated screen, open http://%s:%s" % ("localhost", 5678)) + try: + webServer = HTTPServer(("localhost", 5678), SimulatedLcdWebServer) + logger.debug("To see your simulated screen, open http://%s:%s" % ("localhost", 5678)) + except: + logger.error("Error starting webserver! An instance might already be running.") threading.Thread(target=webServer.serve_forever).start() diff --git a/library/sensors/sensors.py b/library/sensors/sensors.py index fb1cd33f..739140f0 100644 --- a/library/sensors/sensors.py +++ b/library/sensors/sensors.py @@ -86,6 +86,7 @@ def disk_free() -> int: class Net(ABC): + @staticmethod @abstractmethod - def stats(self) -> tuple[float, float, float, float]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) + def stats(if_name, interval) -> tuple[int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) pass diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index 09cf9f02..1328962c 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -1,5 +1,5 @@ import math -import sensors +import library.sensors.sensors as sensors # CPU & disk sensors import psutil @@ -19,7 +19,7 @@ except: pyadl = None -PNIC_BEFORE = None +PNIC_BEFORE = {} class CPU(sensors.CPU): @@ -200,12 +200,8 @@ def disk_free() -> int: class Net(sensors.Net): - def __init__(self, interval: float, if_name: str): - self.pnic_before = None - self.interval = interval - self.if_name = if_name - - def stats(self) -> tuple[float, float, float, float]: + @staticmethod + def stats(if_name, interval) -> tuple[int, int, int, int]: # Get current counters pnic_after = psutil.net_io_counters(pernic=True) @@ -214,13 +210,16 @@ def stats(self) -> tuple[float, float, float, float]: download_rate = math.nan downloaded = math.nan - if self.pnic_before: - if self.if_name in pnic_after: - upload_rate = (pnic_after[self.if_name].bytes_sent - self.pnic_before[self.if_name].bytes_sent) / self.interval - uploaded = pnic_after[self.if_name].bytes_sent - download_rate = (pnic_after[self.if_name].bytes_recv - self.pnic_before[self.if_name].bytes_recv) / self.interval - downloaded = pnic_after[self.if_name].bytes_recv + try: + if if_name in pnic_after: + upload_rate = (pnic_after[if_name].bytes_sent - PNIC_BEFORE[if_name].bytes_sent) / interval + uploaded = pnic_after[if_name].bytes_sent + download_rate = (pnic_after[if_name].bytes_recv - PNIC_BEFORE[if_name].bytes_recv) / interval + downloaded = pnic_after[if_name].bytes_recv + except: + # Interface might not be in PNIC_BEFORE for now + pass - self.pnic_before = pnic_after + PNIC_BEFORE[if_name] = pnic_after return upload_rate, uploaded, download_rate, downloaded diff --git a/library/stats.py b/library/stats.py index 4bab849d..70359804 100644 --- a/library/stats.py +++ b/library/stats.py @@ -1,11 +1,12 @@ import datetime import math + from psutil._common import bytes2human import library.config as config +import library.sensors.sensors_python as sensors from library.display import display from library.log import logger -import library.sensors.sensors_python as sensors THEME_DATA = config.THEME_DATA CONFIG_DATA = config.CONFIG_DATA @@ -465,19 +466,14 @@ def stats(): class Net: @staticmethod def stats(): - upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo, upload_eth, uploaded_eth, download_eth, downloaded_eth = sensors.Net.stats( - WLO_CARD, ETH_CARD) + interval = THEME_DATA['STATS']['CPU']['PERCENTAGE'].get("INTERVAL", None) + upload_wlo, uploaded_wlo, download_wlo, downloaded_wlo = sensors.Net.stats(WLO_CARD, interval) upload_wlo_text = f"{bytes2human(upload_wlo)}/s" uploaded_wlo_text = f"{bytes2human(uploaded_wlo)}" download_wlo_text = f"{bytes2human(download_wlo)}/s" downloaded_wlo_text = f"{bytes2human(downloaded_wlo)}" - upload_eth_text = f"{bytes2human(upload_eth)}/s" - uploaded_eth_text = f"{bytes2human(uploaded_eth)}" - download_eth_text = f"{bytes2human(download_eth)}/s" - downloaded_eth_text = f"{bytes2human(downloaded_eth)}" - if THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("SHOW", False): display.lcd.DisplayText( text=f"{upload_wlo_text}", @@ -546,6 +542,13 @@ def stats(): None)) ) + upload_eth, uploaded_eth, download_eth, downloaded_eth = sensors.Net.stats(ETH_CARD, interval) + + upload_eth_text = f"{bytes2human(upload_eth)}/s" + uploaded_eth_text = f"{bytes2human(uploaded_eth)}" + download_eth_text = f"{bytes2human(download_eth)}/s" + downloaded_eth_text = f"{bytes2human(downloaded_eth)}" + if THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("SHOW", False): display.lcd.DisplayText( text=f"{upload_eth_text}", From d5ea94b247a6d28cd63301b32fa51cf179032d5e Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Sun, 27 Nov 2022 22:15:31 +0100 Subject: [PATCH 04/18] Fix network statistics --- library/sensors/sensors_python.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index bd6482aa..8422d58e 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -1,5 +1,6 @@ import math import library.sensors.sensors as sensors +from library.log import logger # CPU & disk sensors import psutil @@ -207,6 +208,7 @@ def disk_free() -> int: class Net(sensors.Net): @staticmethod def stats(if_name, interval) -> tuple[int, int, int, int]: + global PNIC_BEFORE # Get current counters pnic_after = psutil.net_io_counters(pernic=True) @@ -223,8 +225,9 @@ def stats(if_name, interval) -> tuple[int, int, int, int]: downloaded = pnic_after[if_name].bytes_recv except: # Interface might not be in PNIC_BEFORE for now + logger.debug("Ignored %s" % if_name) pass - PNIC_BEFORE[if_name] = pnic_after + PNIC_BEFORE[if_name] = pnic_after[if_name] return upload_rate, uploaded, download_rate, downloaded From 586f01699a2784242793074bcaa160f2ae071326 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Sun, 27 Nov 2022 22:18:35 +0100 Subject: [PATCH 05/18] Fix compatibility for python < 3.8 --- library/sensors/sensors.py | 8 ++++---- library/sensors/sensors_python.py | 10 ++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/library/sensors/sensors.py b/library/sensors/sensors.py index 739140f0..62521f56 100644 --- a/library/sensors/sensors.py +++ b/library/sensors/sensors.py @@ -1,5 +1,5 @@ from abc import ABC, abstractmethod -from collections import namedtuple +from typing import Tuple class CPU(ABC): @@ -15,7 +15,7 @@ def frequency() -> float: @staticmethod @abstractmethod - def load() -> tuple[float, float, float]: # 1 / 5 / 15min avg + def load() -> Tuple[float, float, float]: # 1 / 5 / 15min avg pass @staticmethod @@ -32,7 +32,7 @@ def temperature() -> float: class GPU(ABC): @staticmethod @abstractmethod - def stats() -> tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) + def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) pass @staticmethod @@ -88,5 +88,5 @@ def disk_free() -> int: class Net(ABC): @staticmethod @abstractmethod - def stats(if_name, interval) -> tuple[int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) + def stats(if_name, interval) -> Tuple[int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) pass diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index 8422d58e..06eeb57a 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -1,4 +1,6 @@ import math +from typing import Tuple + import library.sensors.sensors as sensors from library.log import logger @@ -33,7 +35,7 @@ def frequency() -> float: return psutil.cpu_freq().current @staticmethod - def load() -> tuple[float, float, float]: # 1 / 5 / 15min avg: + def load() -> Tuple[float, float, float]: # 1 / 5 / 15min avg: return psutil.getloadavg() @staticmethod @@ -66,7 +68,7 @@ def temperature() -> float: class GpuNvidia(sensors.GPU): @staticmethod - def stats() -> tuple[float, float, float, float]: + def stats() -> Tuple[float, float, float, float]: # Unlike other sensors, Nvidia GPU with GPUtil pulls in all the stats at once nvidia_gpus = GPUtil.getGPUs() @@ -104,7 +106,7 @@ def is_available() -> bool: class GpuAmd(sensors.GPU): @staticmethod - def stats() -> tuple[float, float, float, float]: + def stats() -> Tuple[float, float, float, float]: if pyamdgpuinfo: # Unlike other sensors, AMD GPU with pyamdgpuinfo pulls in all the stats at once i = 0 @@ -207,7 +209,7 @@ def disk_free() -> int: class Net(sensors.Net): @staticmethod - def stats(if_name, interval) -> tuple[int, int, int, int]: + def stats(if_name, interval) -> Tuple[int, int, int, int]: global PNIC_BEFORE # Get current counters pnic_after = psutil.net_io_counters(pernic=True) From a1cd136dff80029f5b814df58c1fe3644135876a Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Sun, 27 Nov 2022 22:22:52 +0100 Subject: [PATCH 06/18] Fix empty dictionnary 'key error' --- library/sensors/sensors_python.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index 06eeb57a..0e28f913 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -227,9 +227,8 @@ def stats(if_name, interval) -> Tuple[int, int, int, int]: downloaded = pnic_after[if_name].bytes_recv except: # Interface might not be in PNIC_BEFORE for now - logger.debug("Ignored %s" % if_name) pass - PNIC_BEFORE[if_name] = pnic_after[if_name] + PNIC_BEFORE.update({if_name: pnic_after[if_name]}) return upload_rate, uploaded, download_rate, downloaded From 10000b454941cf082250849fa0741f29b9af300d Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Fri, 2 Dec 2022 17:40:42 +0100 Subject: [PATCH 07/18] Fix network sensors, add skeleton for simulated sensors --- library/sensors/sensors_python.py | 16 ++--- library/sensors/sensors_simulated.py | 100 +++++++++++++++++++++++++++ 2 files changed, 108 insertions(+), 8 deletions(-) create mode 100644 library/sensors/sensors_simulated.py diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index 0e28f913..9ffd35a8 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -68,7 +68,7 @@ def temperature() -> float: class GpuNvidia(sensors.GPU): @staticmethod - def stats() -> Tuple[float, float, float, float]: + def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) # Unlike other sensors, Nvidia GPU with GPUtil pulls in all the stats at once nvidia_gpus = GPUtil.getGPUs() @@ -106,7 +106,7 @@ def is_available() -> bool: class GpuAmd(sensors.GPU): @staticmethod - def stats() -> Tuple[float, float, float, float]: + def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) if pyamdgpuinfo: # Unlike other sensors, AMD GPU with pyamdgpuinfo pulls in all the stats at once i = 0 @@ -219,16 +219,16 @@ def stats(if_name, interval) -> Tuple[int, int, int, int]: download_rate = math.nan downloaded = math.nan - try: - if if_name in pnic_after: + if if_name in pnic_after: + try: upload_rate = (pnic_after[if_name].bytes_sent - PNIC_BEFORE[if_name].bytes_sent) / interval uploaded = pnic_after[if_name].bytes_sent download_rate = (pnic_after[if_name].bytes_recv - PNIC_BEFORE[if_name].bytes_recv) / interval downloaded = pnic_after[if_name].bytes_recv - except: - # Interface might not be in PNIC_BEFORE for now - pass + except: + # Interface might not be in PNIC_BEFORE for now + pass - PNIC_BEFORE.update({if_name: pnic_after[if_name]}) + PNIC_BEFORE.update({if_name: pnic_after[if_name]}) return upload_rate, uploaded, download_rate, downloaded diff --git a/library/sensors/sensors_simulated.py b/library/sensors/sensors_simulated.py new file mode 100644 index 00000000..4f19a3c4 --- /dev/null +++ b/library/sensors/sensors_simulated.py @@ -0,0 +1,100 @@ +import math +from typing import Tuple +import random + +import library.sensors.sensors as sensors +from library.log import logger + +class CPU(sensors.CPU): + @staticmethod + def percentage(interval: float) -> float: + return random.uniform(0, 100) + + @staticmethod + def frequency() -> float: + return random.uniform(800, 3400) + + @staticmethod + def load() -> Tuple[float, float, float]: # 1 / 5 / 15min avg: + return random.uniform(0, 100), random.uniform(0, 100), random.uniform(0, 100) + + @staticmethod + def is_temperature_available() -> bool: + return True + + @staticmethod + def temperature() -> float: + return random.uniform(30, 90) + + +class Gpu(sensors.GPU): + @staticmethod + def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) + return random.uniform(0, 100), random.uniform(0, 100), random.uniform(300, 16000), random.uniform(30, 90) + + @staticmethod + def is_available() -> bool: + return True + + +class Memory(sensors.Memory): + @staticmethod + def swap_percent() -> float: + return random.uniform(0, 100) + + @staticmethod + def virtual_percent() -> float: + return random.uniform(0, 100) + + @staticmethod + def virtual_used() -> int: + return random.randint(300, 16000) + + @staticmethod + def virtual_free() -> int: + return random.randint(300, 16000) + + +class Disk(sensors.Disk): + @staticmethod + def disk_usage_percent() -> float: + return psutil.disk_usage("/").percent + + @staticmethod + def disk_used() -> int: + return psutil.disk_usage("/").used + + @staticmethod + def disk_total() -> int: + return psutil.disk_usage("/").total + + @staticmethod + def disk_free() -> int: + return psutil.disk_usage("/").free + + +class Net(sensors.Net): + @staticmethod + def stats(if_name, interval) -> Tuple[int, int, int, int]: + global PNIC_BEFORE + # Get current counters + pnic_after = psutil.net_io_counters(pernic=True) + + upload_rate = math.nan + uploaded = math.nan + download_rate = math.nan + downloaded = math.nan + + try: + if if_name in pnic_after: + upload_rate = (pnic_after[if_name].bytes_sent - PNIC_BEFORE[if_name].bytes_sent) / interval + uploaded = pnic_after[if_name].bytes_sent + download_rate = (pnic_after[if_name].bytes_recv - PNIC_BEFORE[if_name].bytes_recv) / interval + downloaded = pnic_after[if_name].bytes_recv + except: + # Interface might not be in PNIC_BEFORE for now + pass + + PNIC_BEFORE.update({if_name: pnic_after[if_name]}) + + return upload_rate, uploaded, download_rate, downloaded From a2371ee7be0d5433bd49fc3ab0ef2a3bc7c3d139 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Sun, 4 Dec 2022 15:50:16 +0100 Subject: [PATCH 08/18] Move lcd communication classes, rework GPU sensors detection --- library/display.py | 8 ++-- library/{ => lcd}/lcd_comm.py | 0 library/{ => lcd}/lcd_comm_rev_a.py | 2 +- library/{ => lcd}/lcd_comm_rev_b.py | 2 +- library/{ => lcd}/lcd_simulated.py | 10 ++--- library/scheduler.py | 12 +----- library/sensors/sensors.py | 4 +- library/sensors/sensors_python.py | 64 +++++++++++++++++++++++----- library/sensors/sensors_simulated.py | 42 +++++------------- library/stats.py | 27 ++++-------- main.py | 10 +---- simple-program.py | 6 +-- 12 files changed, 93 insertions(+), 94 deletions(-) rename library/{ => lcd}/lcd_comm.py (100%) rename library/{ => lcd}/lcd_comm_rev_a.py (99%) rename library/{ => lcd}/lcd_comm_rev_b.py (99%) rename library/{ => lcd}/lcd_simulated.py (91%) diff --git a/library/display.py b/library/display.py index 1cdf6be2..0f474e32 100644 --- a/library/display.py +++ b/library/display.py @@ -1,8 +1,8 @@ from library import config -from library.lcd_comm import Orientation -from library.lcd_comm_rev_a import LcdCommRevA -from library.lcd_comm_rev_b import LcdCommRevB -from library.lcd_simulated import LcdSimulated +from library.lcd.lcd_comm import Orientation +from library.lcd.lcd_comm_rev_a import LcdCommRevA +from library.lcd.lcd_comm_rev_b import LcdCommRevB +from library.lcd.lcd_simulated import LcdSimulated from library.log import logger THEME_DATA = config.THEME_DATA diff --git a/library/lcd_comm.py b/library/lcd/lcd_comm.py similarity index 100% rename from library/lcd_comm.py rename to library/lcd/lcd_comm.py diff --git a/library/lcd_comm_rev_a.py b/library/lcd/lcd_comm_rev_a.py similarity index 99% rename from library/lcd_comm_rev_a.py rename to library/lcd/lcd_comm_rev_a.py index 47340741..e7fa5615 100644 --- a/library/lcd_comm_rev_a.py +++ b/library/lcd/lcd_comm_rev_a.py @@ -3,7 +3,7 @@ from serial.tools.list_ports import comports -from library.lcd_comm import * +from library.lcd.lcd_comm import * from library.log import logger diff --git a/library/lcd_comm_rev_b.py b/library/lcd/lcd_comm_rev_b.py similarity index 99% rename from library/lcd_comm_rev_b.py rename to library/lcd/lcd_comm_rev_b.py index c706122f..8bb6d621 100644 --- a/library/lcd_comm_rev_b.py +++ b/library/lcd/lcd_comm_rev_b.py @@ -2,7 +2,7 @@ from serial.tools.list_ports import comports -from library.lcd_comm import * +from library.lcd.lcd_comm import * from library.log import logger diff --git a/library/lcd_simulated.py b/library/lcd/lcd_simulated.py similarity index 91% rename from library/lcd_simulated.py rename to library/lcd/lcd_simulated.py index 2a013902..13131236 100644 --- a/library/lcd_simulated.py +++ b/library/lcd/lcd_simulated.py @@ -2,7 +2,7 @@ import shutil from http.server import BaseHTTPRequestHandler, HTTPServer -from library.lcd_comm import * +from library.lcd.lcd_comm import * SCREENSHOT_FILE = "screencap.png" WEBSERVER_PORT = 5678 @@ -18,14 +18,14 @@ def do_GET(self): self.send_response(200) self.send_header("Content-type", "text/html") self.end_headers() - self.wfile.write(bytes("", "utf-8")) + self.wfile.write(bytes("", "utf-8")) self.wfile.write(bytes("", "utf-8")) - elif self.path.startswith("/screencap.png"): + elif self.path.startswith("/" + SCREENSHOT_FILE): imgfile = open(SCREENSHOT_FILE, 'rb').read() mimetype = mimetypes.MimeTypes().guess_type(SCREENSHOT_FILE)[0] self.send_response(200) @@ -34,7 +34,7 @@ def do_GET(self): self.wfile.write(imgfile) -# Simulated display: write on a screencap.png file instead of serial port +# Simulated display: write on a file instead of serial port class LcdSimulated(LcdComm): def __init__(self, com_port: str = "AUTO", display_width: int = 320, display_height: int = 480, update_queue: queue.Queue = None): diff --git a/library/scheduler.py b/library/scheduler.py index 4c2a0925..ad668e78 100644 --- a/library/scheduler.py +++ b/library/scheduler.py @@ -95,18 +95,10 @@ def CPUTemperature(): @async_job("GPU_Stats") @schedule(timedelta(seconds=THEME_DATA['STATS']['GPU'].get("INTERVAL", None)).total_seconds()) -def GpuNvidiaStats(): +def GpuStats(): """ Refresh the GPU Stats """ # logger.debug("Refresh GPU Stats") - stats.GpuNvidia.stats() - - -@async_job("GPU_Stats") -@schedule(timedelta(seconds=THEME_DATA['STATS']['GPU'].get("INTERVAL", None)).total_seconds()) -def GpuAmdStats(): - """ Refresh the GPU Stats """ - # logger.debug("Refresh GPU Stats") - stats.GpuAmd.stats() + stats.Gpu.stats() @async_job("Memory_Stats") diff --git a/library/sensors/sensors.py b/library/sensors/sensors.py index 62521f56..e84fdab4 100644 --- a/library/sensors/sensors.py +++ b/library/sensors/sensors.py @@ -2,7 +2,7 @@ from typing import Tuple -class CPU(ABC): +class Cpu(ABC): @staticmethod @abstractmethod def percentage(interval: float) -> float: @@ -29,7 +29,7 @@ def temperature() -> float: pass -class GPU(ABC): +class Gpu(ABC): @staticmethod @abstractmethod def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index 9ffd35a8..dda45006 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -1,5 +1,6 @@ import math from typing import Tuple +from enum import IntEnum, auto import library.sensors.sensors as sensors from library.log import logger @@ -25,7 +26,16 @@ PNIC_BEFORE = {} -class CPU(sensors.CPU): +class GpuType(IntEnum): + UNSUPPORTED = auto() + AMD = auto() + NVIDIA = auto() + + +DETECTED_GPU = GpuType.UNSUPPORTED + + +class Cpu(sensors.Cpu): @staticmethod def percentage(interval: float) -> float: return psutil.cpu_percent(interval=interval) @@ -66,7 +76,34 @@ def temperature() -> float: return cpu_temp -class GpuNvidia(sensors.GPU): +class Gpu(sensors.Gpu): + @staticmethod + def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) + global DETECTED_GPU + if DETECTED_GPU == GpuType.AMD: + return GpuAmd.stats() + elif DETECTED_GPU == GpuType.NVIDIA: + return GpuNvidia.stats() + else: + return math.nan, math.nan, math.nan, math.nan + + @staticmethod + def is_available() -> bool: + global DETECTED_GPU + if GpuAmd.is_available(): + logger.info("Detected AMD GPU(s)") + DETECTED_GPU = GpuType.AMD + elif GpuNvidia.is_available(): + logger.info("Detected Nvidia GPU(s)") + DETECTED_GPU = GpuType.NVIDIA + else: + logger.warning("Your GPU is not supported yet") + DETECTED_GPU = GpuType.UNSUPPORTED + + return DETECTED_GPU != GpuType.UNSUPPORTED + + +class GpuNvidia(sensors.Gpu): @staticmethod def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) # Unlike other sensors, Nvidia GPU with GPUtil pulls in all the stats at once @@ -101,10 +138,13 @@ def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / u @staticmethod def is_available() -> bool: - return len(GPUtil.getGPUs()) > 0 + try: + return len(GPUtil.getGPUs()) > 0 + except: + return False -class GpuAmd(sensors.GPU): +class GpuAmd(sensors.Gpu): @staticmethod def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) if pyamdgpuinfo: @@ -163,11 +203,14 @@ def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / u @staticmethod def is_available() -> bool: - if pyamdgpuinfo and pyamdgpuinfo.detect_gpus() > 0: - return True - elif pyadl and len(pyadl.ADLManager.getInstance().getDevices()) > 0: - return True - else: + try: + if pyamdgpuinfo and pyamdgpuinfo.detect_gpus() > 0: + return True + elif pyadl and len(pyadl.ADLManager.getInstance().getDevices()) > 0: + return True + else: + return False + except: return False @@ -209,7 +252,8 @@ def disk_free() -> int: class Net(sensors.Net): @staticmethod - def stats(if_name, interval) -> Tuple[int, int, int, int]: + def stats(if_name, interval) -> Tuple[ + int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) global PNIC_BEFORE # Get current counters pnic_after = psutil.net_io_counters(pernic=True) diff --git a/library/sensors/sensors_simulated.py b/library/sensors/sensors_simulated.py index 4f19a3c4..63a15bca 100644 --- a/library/sensors/sensors_simulated.py +++ b/library/sensors/sensors_simulated.py @@ -1,11 +1,10 @@ -import math from typing import Tuple import random import library.sensors.sensors as sensors -from library.log import logger -class CPU(sensors.CPU): + +class Cpu(sensors.Cpu): @staticmethod def percentage(interval: float) -> float: return random.uniform(0, 100) @@ -27,7 +26,7 @@ def temperature() -> float: return random.uniform(30, 90) -class Gpu(sensors.GPU): +class Gpu(sensors.Gpu): @staticmethod def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) return random.uniform(0, 100), random.uniform(0, 100), random.uniform(300, 16000), random.uniform(30, 90) @@ -58,43 +57,24 @@ def virtual_free() -> int: class Disk(sensors.Disk): @staticmethod def disk_usage_percent() -> float: - return psutil.disk_usage("/").percent + return random.uniform(0, 100) @staticmethod def disk_used() -> int: - return psutil.disk_usage("/").used + return random.randint(1000000000, 2000000000000) @staticmethod def disk_total() -> int: - return psutil.disk_usage("/").total + return random.randint(1000000000, 2000000000000) @staticmethod def disk_free() -> int: - return psutil.disk_usage("/").free + return random.randint(1000000000, 2000000000000) class Net(sensors.Net): @staticmethod - def stats(if_name, interval) -> Tuple[int, int, int, int]: - global PNIC_BEFORE - # Get current counters - pnic_after = psutil.net_io_counters(pernic=True) - - upload_rate = math.nan - uploaded = math.nan - download_rate = math.nan - downloaded = math.nan - - try: - if if_name in pnic_after: - upload_rate = (pnic_after[if_name].bytes_sent - PNIC_BEFORE[if_name].bytes_sent) / interval - uploaded = pnic_after[if_name].bytes_sent - download_rate = (pnic_after[if_name].bytes_recv - PNIC_BEFORE[if_name].bytes_recv) / interval - downloaded = pnic_after[if_name].bytes_recv - except: - # Interface might not be in PNIC_BEFORE for now - pass - - PNIC_BEFORE.update({if_name: pnic_after[if_name]}) - - return upload_rate, uploaded, download_rate, downloaded + def stats(if_name, interval) -> Tuple[ + int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) + return random.randint(1000000, 999000000), random.randint(1000000, 999000000), random.randint( + 1000000, 999000000), random.randint(1000000, 999000000) diff --git a/library/stats.py b/library/stats.py index 2196919f..26a21698 100644 --- a/library/stats.py +++ b/library/stats.py @@ -24,7 +24,7 @@ def get_full_path(path, name): class CPU: @staticmethod def percentage(): - cpu_percentage = sensors.CPU.percentage(interval=THEME_DATA['STATS']['CPU']['PERCENTAGE'].get("INTERVAL", None)) + cpu_percentage = sensors.Cpu.percentage(interval=THEME_DATA['STATS']['CPU']['PERCENTAGE'].get("INTERVAL", None)) # logger.debug(f"CPU Percentage: {cpu_percentage}") if THEME_DATA['STATS']['CPU']['PERCENTAGE']['TEXT'].get("SHOW", False): @@ -62,7 +62,7 @@ def percentage(): @staticmethod def frequency(): - cpu_freq = sensors.CPU.frequency() + cpu_freq = sensors.Cpu.frequency() if THEME_DATA['STATS']['CPU']['FREQUENCY']['TEXT'].get("SHOW", False): display.lcd.DisplayText( @@ -81,7 +81,7 @@ def frequency(): @staticmethod def load(): - cpu_load = sensors.CPU.load() + cpu_load = sensors.Cpu.load() # logger.debug(f"CPU Load: ({cpu_load[0]},{cpu_load[1]},{cpu_load[2]})") if THEME_DATA['STATS']['CPU']['LOAD']['ONE']['TEXT'].get("SHOW", False): @@ -134,11 +134,11 @@ def load(): @staticmethod def is_temperature_available(): - return sensors.CPU.is_temperature_available() + return sensors.Cpu.is_temperature_available() @staticmethod def temperature(): - cpu_temp = sensors.CPU.temperature() + cpu_temp = sensors.Cpu.temperature() if THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("SHOW", False): display.lcd.DisplayText( @@ -265,26 +265,15 @@ def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature): pass -class GpuNvidia: +class Gpu: @staticmethod def stats(): - load, memory_percentage, memory_used_mb, temperature = sensors.GpuNvidia.stats() + load, memory_percentage, memory_used_mb, temperature = sensors.Gpu.stats() display_gpu_stats(load, memory_percentage, memory_used_mb, temperature) @staticmethod def is_available(): - return sensors.GpuNvidia.is_available() - - -class GpuAmd: - @staticmethod - def stats(): - load, memory_percentage, memory_used_mb, temperature = sensors.GpuAmd.stats() - display_gpu_stats(load, memory_percentage, memory_used_mb, temperature) - - @staticmethod - def is_available(): - return sensors.GpuAmd.is_available() + return sensors.Gpu.is_available() class Memory: diff --git a/main.py b/main.py index 989bce58..751a792a 100644 --- a/main.py +++ b/main.py @@ -71,14 +71,8 @@ def sighandler(signum, frame): scheduler.CPUTemperature() else: logger.warning("Your CPU temperature is not supported yet") - if stats.GpuNvidia.is_available(): - logger.info("Detected Nvidia GPU(s)") - scheduler.GpuNvidiaStats() - elif stats.GpuAmd.is_available(): - logger.info("Detected AMD GPU(s)") - scheduler.GpuAmdStats() - else: - logger.warning("Your GPU is not supported yet") + if stats.Gpu.is_available(): + scheduler.GpuStats() scheduler.MemoryStats() scheduler.DiskStats() scheduler.NetStats() diff --git a/simple-program.py b/simple-program.py index 23e114b0..9b03740b 100644 --- a/simple-program.py +++ b/simple-program.py @@ -8,9 +8,9 @@ from datetime import datetime # Import only the modules for LCD communication -from library.lcd_comm_rev_a import LcdCommRevA, Orientation -from library.lcd_comm_rev_b import LcdCommRevB -from library.lcd_simulated import LcdSimulated +from library.lcd.lcd_comm_rev_a import LcdCommRevA, Orientation +from library.lcd.lcd_comm_rev_b import LcdCommRevB +from library.lcd.lcd_simulated import LcdSimulated from library.log import logger # Set your COM port e.g. COM3 for Windows, /dev/ttyACM0 for Linux, etc. or "AUTO" for auto-discovery From fe061d77b511394e8193f391c9798d611df15667 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Sun, 4 Dec 2022 16:43:13 +0100 Subject: [PATCH 09/18] Update config.yaml with new HW_SENSORS settings --- config.yaml | 12 +++++-- library/sensors/sensors.py | 5 --- library/sensors/sensors_python.py | 4 --- .../{sensors_simulated.py => sensors_stub.py} | 8 ++--- library/stats.py | 31 ++++++++++++++++--- 5 files changed, 39 insertions(+), 21 deletions(-) rename library/sensors/{sensors_simulated.py => sensors_stub.py} (91%) diff --git a/config.yaml b/config.yaml index 289c602a..ab8fbe26 100644 --- a/config.yaml +++ b/config.yaml @@ -13,10 +13,18 @@ config: # THEME: bash-dark-green THEME: 3.5inchTheme2 - # Network metrics - # Put the interface name or let it blank if the card does not exist + # Hardware sensors reading + # Choose the appropriate method for reading your hardware sensors: + # - PYTHON use Python libraries (psutils, GPUtil...) to read hardware sensors (supports all OS but not all HW) + # - LHM use LibreHardwareMonitor library to read hardware sensors (Windows only) + # - STUB use fake random data instead of real hardware sensors + # - AUTO use the best method based on your OS: Windows OS will use LHM, other OS will use Python libraries + HW_SENSORS: AUTO + + # Network interfaces # Linux/MacOS interfaces are named "eth0", "wlan0", "wlp1s0", "enp2s0"... # For Windows use the interfaces pretty name: "Ethernet 2", "Wi-Fi", ... + # Leave the fields empty if the card does not exist on your setup ETH: "eth0" # Ethernet Card WLO: "wlan0" # Wi-Fi Card diff --git a/library/sensors/sensors.py b/library/sensors/sensors.py index e84fdab4..11de9568 100644 --- a/library/sensors/sensors.py +++ b/library/sensors/sensors.py @@ -74,11 +74,6 @@ def disk_usage_percent() -> float: def disk_used() -> int: pass - @staticmethod - @abstractmethod - def disk_total() -> int: - pass - @staticmethod @abstractmethod def disk_free() -> int: diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index dda45006..f2ba997f 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -241,10 +241,6 @@ def disk_usage_percent() -> float: def disk_used() -> int: return psutil.disk_usage("/").used - @staticmethod - def disk_total() -> int: - return psutil.disk_usage("/").total - @staticmethod def disk_free() -> int: return psutil.disk_usage("/").free diff --git a/library/sensors/sensors_simulated.py b/library/sensors/sensors_stub.py similarity index 91% rename from library/sensors/sensors_simulated.py rename to library/sensors/sensors_stub.py index 63a15bca..ee787b8f 100644 --- a/library/sensors/sensors_simulated.py +++ b/library/sensors/sensors_stub.py @@ -47,11 +47,11 @@ def virtual_percent() -> float: @staticmethod def virtual_used() -> int: - return random.randint(300, 16000) + return random.randint(300000000, 16000000000) @staticmethod def virtual_free() -> int: - return random.randint(300, 16000) + return random.randint(300000000, 16000000000) class Disk(sensors.Disk): @@ -63,10 +63,6 @@ def disk_usage_percent() -> float: def disk_used() -> int: return random.randint(1000000000, 2000000000000) - @staticmethod - def disk_total() -> int: - return random.randint(1000000000, 2000000000000) - @staticmethod def disk_free() -> int: return random.randint(1000000000, 2000000000000) diff --git a/library/stats.py b/library/stats.py index 26a21698..0d34d929 100644 --- a/library/stats.py +++ b/library/stats.py @@ -1,10 +1,12 @@ import datetime import math +import os +import platform +import sys from psutil._common import bytes2human import library.config as config -import library.sensors.sensors_python as sensors from library.display import display from library.log import logger @@ -12,6 +14,25 @@ CONFIG_DATA = config.CONFIG_DATA ETH_CARD = CONFIG_DATA["config"]["ETH"] WLO_CARD = CONFIG_DATA["config"]["WLO"] +HW_SENSORS = CONFIG_DATA["config"]["HW_SENSORS"] + +if HW_SENSORS == "PYTHON": + import library.sensors.sensors_python as sensors +elif HW_SENSORS == "LHM": + pass +elif HW_SENSORS == "STUB": + import library.sensors.sensors_stub as sensors +elif HW_SENSORS == "AUTO": + if platform.system() == 'Windows': + pass + else: + import library.sensors.sensors_python as sensors +else: + logger.error("Unsupported SENSORS value in config.yaml") + try: + sys.exit(0) + except: + os._exit(0) def get_full_path(path, name): @@ -375,6 +396,8 @@ def stats(): class Disk: @staticmethod def stats(): + used = sensors.Disk.disk_used() + free = sensors.Disk.disk_free() if THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("SHOW", False): display.lcd.DisplayProgressBar( x=THEME_DATA['STATS']['DISK']['USED']['GRAPH'].get("X", 0), @@ -394,7 +417,7 @@ def stats(): if THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(sensors.Disk.disk_used() / 1000000000):>5} G", + text=f"{int(used / 1000000000):>5} G", x=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DISK']['USED']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), @@ -425,7 +448,7 @@ def stats(): if THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(sensors.Disk.disk_total() / 1000000000):>5} G", + text=f"{int((free + used) / 1000000000):>5} G", x=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DISK']['TOTAL']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), @@ -439,7 +462,7 @@ def stats(): if THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{int(sensors.Disk.disk_free() / 1000000000):>5} G", + text=f"{int(free / 1000000000):>5} G", x=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DISK']['FREE']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), From 6d3f4e550a7047303908c1178f5f1feeee1b9a84 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Fri, 9 Dec 2022 16:02:41 +0100 Subject: [PATCH 10/18] Add LibreHardwareMonitor sensors, fix date format to use locale, fix network speed display --- external/LibreHardwareMonitor/LICENSE | 373 ++++++++++++++++++ .../LibreHardwareMonitorLib.dll | Bin 0 -> 716800 bytes library/sensors/sensors.py | 10 +- .../sensors/sensors_librehardwaremonitor.py | 275 +++++++++++++ library/sensors/sensors_python.py | 10 +- library/sensors/sensors_stub.py | 10 +- library/stats.py | 17 +- main.py | 5 +- requirements.txt | 4 + 9 files changed, 679 insertions(+), 25 deletions(-) create mode 100644 external/LibreHardwareMonitor/LICENSE create mode 100644 external/LibreHardwareMonitor/LibreHardwareMonitorLib.dll create mode 100644 library/sensors/sensors_librehardwaremonitor.py diff --git a/external/LibreHardwareMonitor/LICENSE b/external/LibreHardwareMonitor/LICENSE new file mode 100644 index 00000000..a612ad98 --- /dev/null +++ b/external/LibreHardwareMonitor/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/external/LibreHardwareMonitor/LibreHardwareMonitorLib.dll b/external/LibreHardwareMonitor/LibreHardwareMonitorLib.dll new file mode 100644 index 0000000000000000000000000000000000000000..e5a098be8c6e0aa2982d2b20679679ad65175f29 GIT binary patch literal 716800 zcmeFa2b>$#)iypmBaNhycI{d1j<(s7ZFU(X?cxHsP;7eWHq|!8#*|=F21~TCXm=rj z6l^Du5E6$LN=PRm2`L0Z4-iNUNl1f*bka#Bb@`s>+!<-4EjG#f{@?fi{l5L#y7!)Y z&bjBdbI+}F#OilxhNfu|{D18=P5S~|{wR;b91Midfs{71-W%+@_R_yB?byb+slvIc=z5OwcAW~KhG7GQYj>Fq8L?+%D zELZ$dHeHKqk=2HF!~BTWBv4JeWm8OBwvjDl$NpyOgWZ~D<>B_wJzjTbz}1Zk!Fr@3 zP)$qEHMD)f66x5+g~)ifrJDo0nZ;e*nM4#Wru=$Y0E!tmCvei6!rPk#Z{Epg^3Ud; zoAu07xm}Js?vB+Va&I;eR{G!?wKs?0JY|S!>mUPCx7$jPXgrtT$IDW8`S1;xV@kXw6PK zQdpqdk+?emupKd1Z&>N>3U7!SUEaEb%x>q89m%XrN9+jL&3`QJ&O@Y=jxM@~HD*WO zNtD4?Of6D+KgFMq=(K5@9!kY3E`(<{c)Z>5)3Lw}2z+qH+k=q{@spkIE`n3}6F3!4 z2=El+Z;xlZdp+a6fM5c~R*kV8MOLDA6j@oi?6uckOXQE1TG3Tap`w_({Fb&clZ95^ z64lI+E>uGRcn1Njm;8REY?F3=c`?vN&@m!@yP6ZUh4qN7YYR(&S=61pU-=ofornhJ zS`2lk8^)IPtxfJetnJu&2y7TIvR2*{z7Y+rfGXJ5Tea4vR^43&ynfwe6B0h1h)<~a z4A|_)=twLxV3zkpx|foT;6Vv!Ry94%-Is`QQzhsl*IGAe3=RETgC?_Gw6lU`N_*-x z-BUr@>!Q;Zl2U9jl}1cM(NX`|dS|DUZf9-;5Y_xwfXFgEWYa>j-cl))Hp{H08T72c z1tt5)-AKEcGE^vV^o2VR&bcoyZ)(+Cbj-r&UKgUxH}#^|I|VlxyAW--slPjR;k)Rj zV;7=goB9F225#G!flls>8DnHQHEyJR_;9&erg<6(#yanYv>xtq8A_UpsP zGl(u)$TffKzOBRiGKd~m$eGvuZnxnB7(^u&a@lJ?{?lQUeZ)mw6>{xwUb|*^IfJO0 zLhg{8pX(kzltI)$A@`eSN7oJ?!5|8^kb5z^wPW~b22pl}+_H4r_lFN>5ZNx|K6y*_ z?Zd|~*uvlyA35~m;UgKG#^5uzulU>W{tQlM@Q$U?rs3llv>80_o)`Ovp_?MqC57Bi zzwlD`@L>!>ffRBtfBTcW4iEV=!|3*fXzAVC?fnDNoAm7Tb!#!UV9?;8G9qp_F(B1VnAQEl{M_X^USU;0=e;>d|e zVn}{=L2g}9RC7xAF&=HoD*XUHg^rePiBfB%K`mQF$9*$dPa8TF484D#4j@yZ$q}(c z@YJXkE1IT@24y`T2a(o<(LvLCwbq52Iaiv=KH9V+Gy~;|CIk51T08wZwBHlYP<5&C z`(S$T$Bt$e_ff+*TCwFJ#_E}yZ-gvxLJ%}rD>D{>cw)CeiLx%cpv%xyZ7GXVvyS|q z4(@e>d5^j6w5DK`W#hPj!4c-Tu%{yIecgl@6%^^hfHWBkwaA{>glVp0npM&j0ck28 zCXH`9yB(@bnTvp!7*N7mMf`^SKkmPLqoh8@}V#(HW7 zM^34uE*O5@a4@fMaYR}Pue&4 zQk^pHq6eCNg`Gn^OZAc=R-AN?K8aJtpz0;z{voy=+x-#8sdi7jfNn}#z*c(T4Jxey ztO9p4lIu^HW$11zIl5@H*hlC)>!7noogvmeV!YSTKl@_}Ki{g4wWB9>$MYD)m5te= zwa?KU_C4xP4AdHi3qRcfl`gFjcMDUP;qw_{Nt3%_hPgK>?%*Bp!dNo_uXp*p4n-dF zLnvqA74vxsv=zLd^}2;uMCL9SsC-^?m0Yd50l}^zvzcZYLmim00TJvaeQp9KH%oC- zwhr|QMmnG09;2W#J*)`x+Fz zpKQJiBgYykgIjwUHj6cK0U2-AjYza5(h_yQ-h|P*#jIQeu-+1@Tr6(90_KtYMf#w? z2N}`_8Rx=?D3q78{JY94;9PpEUOpOb1%r7+mm;rRO0SypmK{`1We|Y;JyRkYz5Qli z2piI~z3u`xgEpZLz7;$yGZ{17W02ehs9QayUq&dVSKW}xGGhx~%uhiFQ{{Egy=}tu z2%S2;8eKTOiRfrsqv>fKl0Oz&$k-^u7_(CPAdA&I0siKK(`vXY;Y&y2cErQX)AUv$ z2q@aP)&IlMmR4iTf#uTeK~-UpPe;Q#&5ojQntD)f+8k}pK{Vs&PiV_mDIJIPip!8% z{yBXR#zdspYbd}#k5NqP`XFnud?h-Jdms8C4LC3>U|B<`KwTj<>rL0*L+1EXtQKDm zFSrq5;1Z*FLcncKz%2mm+Xy(g5pZTB0JCskA~kO*=v@E6Z&rSD@;ggODiT7{Axav~ zCjoW&d?^xeMLuUMYM}!4aF9k~v4jh82yB^s3|~StLKwC_Djm!f&c_g7AHcTBtycs)*!&>&sh!yaWu)Hj14P z?@IW6X-17u0qm@J2rYPAK_21aBcM)#2g1~@q82Jpzon6yfI8~C!_-g#Y-BZ=;5 z38YCO$QD1aV24?vb{G{UE8aVON z@4>)ZORoU7VH{M;Ki;VTdh7Ue8h)DN?n9{Icxjgi2u>$KLgq#x;s9muDhkaKD}+|s zSc^h+)Y5o_s-{siz8Qpmemb zPis_EkkURFBC+07XvMJlG5#$$;4ebTnmS%7mb3Bv6a0`XW?Sv`$sk ziSWb!RD?(WZ4v6TyVB2YueUqPE@sDE4B=LPOHhC@DZskYXbwuleJmu!FDEXDo5vT# zPDmgfA8m^l&A2MH+O*A9wln)?| zg-IQ1pcAkUt)^5=8{0J2KCx zG##sZC!DVGtZP?jvu;y<=IhgbzNX9*)&w_&@&s$s>YFT6hmOnC;o~yJBAz@`jGZD= zhPMY8B5Qu$657gBgS-uEvu+9UrfYWq2idpFu!*r^FRd-#ENE2t-F{W3~K63r`2>}Ph07jZpW~{gf*}G zQO$tD)>gKhIp$zg@ohQDkITB6qs=`gu-&FeV>2I94KZcu?3XnRI~$2rfMZAtE3iDwLp|TR9qZT zyl!JiS&hZx0tWx3CZjSZYGPMS2W8{bBC7U`GGA&DRZ~UT%C(59p^SA?wa+vIZOyR? z)AUj->Kg-QW~F7$oc|kL#y|Bd_)Ab1GpPf;b5Ld2T{Fb93C55<=J3~p0>Q>vf4lBM z(VHnuyv5@}X$E^2riP({I^Q-*GmvJ)8$_g0+L?ac+ncSy+Y7(mWq|A6GI)Ej-|{du z4s2zM3$X=g;KC|1wl!sxV2z*O<8Kf~u=yAFu-9VV+S>tz49_ME6WzD=cE&v{-UOkp zxQAt=Ak-cAuncD2>J5W^EVD8hGqJbzLEYOI&}O96nuu*RN_Qb4u_Oc~0hE_vqs3*v zE%%@2XVC*F7iKA_6L+PdMShe^bWfqBN$54Jh^VhWAtDW*EHJr0u?ul&9l6JNq z(#8gp*f-6F7=u{(KOJc+_Rx%l=2(2IA$E-nreymYj@gC=6{^i9ADKE%Gzb=QN}>8{ zl_PLwl?>x4Jub>G6ywZ&HayO`Z)d4ti^z0u!;ju3DouBk3RB~DtG48DrQ286gm9mr zsuP8$Tu;|UI-~_U#&G|+zaL@HS6j9|s*ITUu4 z2zwAdkxXPtSV=tJdlPu%?nIi>1@z0V2BG^7$ljmS(R?(mLP#SkEE|SdIZ%f}&n*^9 zc+QY879L@TU~>~K156`%-BfOEEvZ-P16bj;BnRpgYe|G+ZD)WguW>D@kxtfjc9?GS zgy|7Fb$T_raC+nDFe{eqqWoB=Yv6LMQBY&xILv<;uMaYZz5PZX)^5C~*fR#Dy6Y>h zp|lkjoC66J`6Z}EtWFNHHPB`K(`9?0%jQ9smC3bNQ^UHI{3)0*a3o}6tUk!xY*(g+ z#x%{Zf6!W<2s2ynaKDWl<@eDu;?WKF2Mi-sp3^uBF05?3RU5`|7-@5OSi&soZFzI^ z&1mIG1&%?bIqm{P_3s%gBYRdxqPdoD4LuWdylwD|nKRh&kY#i{#_%LZ!JUhrd>h8_ zNUa`3sTOrTub0}{3*HTyVnXlouu5i4$54J9TxVWES3ao4_X3cuEa=p;gWmPUOR zE_+J(r>#7$&|zHmwNT8{)fhVk!BRFx^M%(TDHpY1apnfSH_<&j`zBWPJe*UqGWF0TD1!6EJGJyHP;l>CxSPH1#fbMVa$Spaz)^XsRZ7OjJ~TFv0S{M z9X$b9V>_Cp&19!FHkx|k2^!7rtP^6H)jBb>9MbMb9-!^U+8;+`tA^!gl#_WmLwdx0 z1It?GX|sSk;OF--q9VW2jE8}*@_Dcz1CR4;3=c9k8=XqWcdRoyln;kdjEs0^!sm!@ zEe?dbzXCnxJ`oK=jfOD>=hbB6+;LGzIG$JtoxbWw#ntJnWL!>Ng-=_xHIE)+I&(4P z33*Z-CQIr@%oI+2?oHGc5#SZf&9`7sOh+)^a7-5iBu*?sx z6J(pdhZdae!Hc81j-u-*_R-t`o&(O-CK9 zvGmwc+jMUc;k#^eb(i-+_;0l_>EgFo;L;OZ3bJBfE6Xy7F&WU9f!^OIM;rx1+)H%#v*sXXqQdz;6?O+*=`(;qlkK z4L=;OjXM})>F)2q3|)oJg6X>ZiVD(^<1=hiI@bv_Xg}ES#G|ElJNPJUn#y+|bZUOf zG{pzDld!W9CL@Ha{I)jWv^C;zoXX@6&GDGLvqADYaxF8;bHqnO4*u!o4B5Wm-aiM zQ}4~z=#GPg!5;EBI@B5^WbOIMqnu5&YV`-x5`(Q(#9}h@Q)n_oN_|i=Ic264LuImB zZP-G;6O8in^+6Vvy9cyUzRO)m2eISV$SgEr>C> z4gpK!EJ#@z*VSq{WDNH3G5GmRLwop`c(UG@6zXjevOR9z)kr7xw!?IkaeR7&PMuzj zE}Y(Ebjy%W)Q3NZHrzbQtNck66Bo`hW_DNaE(H2aBevE16n(NNgJZ_?f9xNWtN_eD zWM~*!LcAg&UZ&xFn#A=yBXv9@<9J?bw7CP2r>JMJFTrFC`R#J=1~b)`jzXGfdRS}x z3}9Aap6PuSo@A`F7+uo)9Q^&QvFxr`Vs!68Kp@3rX>Y`qKM%mA{%+q_M=cXa41>)D zwcZfZ_C7$ZH=sND`BZlR(9W@6LUnf`hEd%z15q7cR8#QXFCYo_5fXb}WZ-zcKMG1@ z37ydJzC@UlA3(=sUa6!?y3Z_*0>DO@nFro35*f*_4kD3u6|CbZD6-04KO(N^R*dNy z8m6rdApze#!Y@tt7LMBUNTe&G_D9{L1AqR> z#+17RpiaRFo{Y32q$50({TR`XK<<#NJ;Y>-2MjTl;@%R%$*v~v-8h6%cUW_lAtpr1 zj63ly>&1i+qL}Gj58S>uCduI0J-12D_`s`5ujteYv1lp(eJH6mDQY=KOFFhK{`K~1 zMjAn$rFjNn6oJjfM9i4gQl@Q|uuXHm`xU^FFQ5r&!b5W(0Kj_?KdE@X(N-{JOV?6F zv*O-Eh;bjr56>mZ#&+p0@_7WHcX!6^j%0fp3c9g7*rvj0| z9{k{M)-269NX)HXZQnD4yhpSdFu?Xi-b;^C$T(VBf2GUe}sb%o`wN?$I^z+9KA z@P2?u-}^khZ6Qp*p3>N(>PH%=8`wK!#FnpoMkG>i<9|nPOE<}=Nu%?IwtL* zaQCUBjc!B>?v^cLKk<4#IMPp!txc*%$t-F@{&@zPP9>HoZev^f+AvEuZCF6U4YzX~2Qiu*g zbwrZbn8b4M$_*pXGIEW`T-*s(r3#v&I|^RCr7jDt@ zcD0ILqAl3VmA13#ZIBC_xHS zuSuq2P8>BN)bVZQdP)XIo(3iCXjAqhQT1K6rT* z%x0YJ^})EA>tnN#clywGSE1|`S<44sT?Mmys6B=&C3RXcGms|6DJV-$>Y<~#8Hf== zCiU-xJtQ-D?_&74a{#p+(Xr0(0fZ}1-cYUt^)JB^Koxu94MJk84Z`L+4ww&I#&m^e zHLw*455u48YC352Z3O{P)fnzd7%Rh;H(PI>M z)@@(&xkqW_^#J4>xI>0pFi} z{Q*kyAbyfDnZCq$y2qdD&WNe0?jHdOX0b4}K97c$8eJZm=H3HHfPfWvB8;2UPJ~l> z2~7=zLZI%QPKRLl+k5X|{;F$OSK47&OI8aSFDLY1`$fo6j6l{mg=GCgNY(%c7xo*b zzwRVxTHOLdhdFV22~PM@qu5T7dhC%bRr922S8DDj)clY8^H(9-LS0DzFYe}8N_)W~ zjkG~4?unHfU$b5X+0D%E$&jW{YG8;Opg3I|?@wUYHbTe{6#>9>d@#L3)CU05@xh`Y zsC3X^I2J5ZA}f{a{TUpcdGlo9vbWTRB39a~*ZT`%`g%oAsU=7sB!fJbad`f#7rYK& z{wNYx<}~r?j`u34tx>Bl!-q5+c}N4eYCXf!rgdu36$k=Jn>JI69u5C~LMn!s`&UG; zeb=SI{HZkP`!~}d=@eQKNHcVbYD_$QK zSemk#dkx5Io|QH2#qh!&_GM@i5iasY_?C!ZRK6WbdxNA+3`x5W%e{)-%ymXKyQXv9 z+Q^JGYn4rka^#x1->;%Z=bB!9A;kDxVN4o>%Mt~tlVc$3cK9|-=z~-+ub-6tQnDWqRWL%sFn^HV4@IY|drg05 zpZsVk2Nj`<4bfmvm--M>%2R{0DCKw9GzC%cEJ7!7vZR1biD2oNwUeRzxMV(A1AbQLSvoSdikH=QNbh%mskG< zZ*MMw4b}1(y)$?K0Jc320F(xhoysUHNXt}S6nD0!jV!Ia1i$H_xm&&2WQbso9U<5+ zM6l0}5bQrOLC2&bof9HBsFp(4qy*=N2#((og7ZQIXYL4r7b3W52MBWSMg4_nuBy>E zlVu}!{iHOLW<9rcQku?5)45?%n(j$yK2%S$rIw$`)A@8g%?&$3b9X(>M|Xtgcnrm% zvi?GiCYzijLmq~2^cy3wlizQ$(?T3}sN=MU2zIFB%ncFjNcm;whX{70@Uja+1Upi4 z*>Z>=)R!k~ZhomnkQHFP@(-VEQ8@t9(JG%dULqw7H)1&)|y+WD_nX&Sj*;c zoh?lBhaI75si*0hR@LT{r^Ef0P=5B?5t`}sG#hq=#;&Kic1LJh>uJ8UBQ)uHnjh^5 zO8Pjq)Q-?}*3*1{M`*h0X(ILxlv{T_ z&A|3)M2A$cd>I_H!m}POj)I$&mj&j+Dsh{jofov=`W#{IeTc>GQw5e8mSOo@Y<7+S%p}(*}_{(IAg45I~VM3WM?6%Vmne>mDwX* z$QjvX1GbS}K42HxveT@BolRMVR5nS<7N3$&^&wxT#`VY}k+1S6Q8boWT8Tnd^ITKS zbIsB@0O^BRxQWOd%+*nTK1%6!iDRj4!iq&xUEFhwb00t%HpZ!PUVJlTFiWkiWRIny z3D_SXaac|o9~VgXHlPI3d^qI)Zq<+LPLP4uwQxE+mBtRP?AOG*R*M^pzfZ24xkfc# z)yrJpPz(1cEVcp6K;_TKtU8cpIOq77Ysr7z57P}`jOTyMt6+O8mwx^yPGP;C+bQ~K zqw*VMP|uxDFBZk%U1q`iYj|;@C)ZO$Ije^9E_wr$9Pt&G5qcGux7E1#^&OG9!cnO2 z%x2D~d!5WpmfnGrabH6bVcE#J4(EohP_@=?iq((JTIo>I0=x(ciMPH(peR8sAFQou z%h^X%H^ReqPl9WIEVKDWq?Om*hY+;PEk)ekcpoMUII-8BwPfvDp`yzv6!y8Owh$Ot z3jsg2j;@o04K``n9?mP9NLIzTSa-+XXc60Cro;WP7^2MlLn^i(_uU==f}&&SiE60m zbHMY9$T#P@qv#J zKdJepijY7AHq`E&WZbU}97%p~XDj%?p-6~E*1!<}B;d9qOt%w>yeE{%?IHiRkpDgL zTH?2d{IAsffgl>{aMgh(N&y9+vE(}a|GjYM;Xl)?Wgz#K8jswjkpJT$|Kl~kq?3zk z%d`b4J$C@+u&T7c^>#3?yn>?Bb8!fOXJO%A=|`(I2(A_2zuy%y1xilbOk;2>GfXZ4t8fO=d?n zN$}$Yi{3ZnO{$68NfPO>txUszYWNQSKg0YVgy}NA;B+SoZKl(CQ}&ExAt|1{>)Vf{ z8PU!}R*y&7_-!D9)hV76h(og_oo0|GBFhuk-IU0zY)-`H|K7pNSX{Hoy)CV2UIJK) z=YWHg%H5JhV~1tKApyrjo~Ax)R>&R~lbw9LKVe6DGpo{({_on6{^{|Cctz{DPl1%@ z;=1&~UxS$)?OMGOmj4^tB z_{;;wX_M>Gyh97yfFKWPRL?f(E(UR4`|#g|*a@v%9ckcshi@aU?!I*GpaaW|#{^h# zbfIok>f!+aGY16_4*<*>b@qgJAy`Jd3nBR*l!BYGxD-2e7XrLl;*^5bNB3`jT86e9 zJ$sepoz*Ty={B>=bIfxwv&Wfr=mWMB$HSx@BOCo5=Hl4V+8LIRio!hGVo{umB5^T+ z1|Au@m=|09U%?3sOm?l}(U>V=T{(gbT7aV=f~vx2pJ=+j z1Z)2yyO22w->5J*`XJlG;#2arCHktv!RG3f6&>6$Vv0xxf#5HS* zF&uLLK2veOgWqO9q6iKWHc~#R&u9#{1r-Oy$mj4~(6W$OFmzcCu!9ZhScWQMOs_38 zT~(HtH_JX8?Os|6t63jh97$ns&J>BnCY~Tp(i(r7r9u&~ucz})8*i~3=}I<<*A*QHPil9>yeWebyda(kJQ`%P>U?-Fw0m3{-9}exz@V&a8V0%s(Jq z+wj2o*JWr>xB+&+Md~h(uFcZU-lWO|FDq+zKNa{}w8x(d{HFH(mx6MOYFzd`S?Zup z!!^i;9>acZw#nTr+&DNJb+rT?ANQF1C^b7{s=PCPn-h+deL5mlfyaU|f_g4u?5MNB z;av=?&yJRHS%#OyH{ejX=@k%=Bff3CL{60H7?rfO*iBWlzyY78D972!c5ISCI0nzjIFRp~^QAqvP zqqNL)_WB22lLAm$K$Vm_8iv+)I0{L-Si9&qngLygH?=R;V56Y-uUU7r-%@KK9c6oTQs0BSwn31oXU7VJL`rK1rg zHx4DU%7~QLu)WU%v%HEAK=TR0%bPDF9xukKvw?WcHPu%-5-nT3?^eM)8uxDa=-Vk( zARc{NKq3L3KMuTyK1eFVTSO!?^cj_FbtuzF<=t@d8}Nc9!&}zx+H5%U6Dnj}!+E`t zSy_#=5eXZMsD_JVd12@ZqjM63-4w!A#*9f2b{B*VGKW4`RghMb1fokq*YHsX--{ce zNSlw7S#uo~2%=C+3&~H8ndLvJSg40|B{nKnTKQ!7!-k|1nwhN_9>u@A*|8NPr1*DT}n!q#f8fgwNCyq0MKkc zPA6LVBpo!HPY_M&18aiv*Vs-}Q3W|hj|u2Yve_16ykbTMN~ee&~~av zD^}4|MCH>8t+yU+po*pFWs9V%HDQT9lh!q4o5ZqD= zcEU;lkBIge(EzX&t9`Jpe|;6n>N?bGt;;>8K$#HeaRurKfu2+#C7J50Pbg5k%IH%n zlv1IusgPeJPcxKNZNQo5pxpLBxdo7w&s2!c(x5DKDJESCLYGO=r4)1nd?v~;6JY*h z+G0aqIr8t=%k725UqG4Q4&K*+RC*7}%sm9DTcu|MZ?cqX^Pwr-jK$l^8CL5v#6LWU zX)awAc+-*6BUOJ?$10&6ZENc&zeW}CZBoVCeST@PbU@V~D_v3b$93GwlDDpWJ0($m zmE_w%E?*8SRGx)5U)~#IY1%69Lnm2YN+*@u?}%fLc7KhvopiI^ym%J$uHB3W$@YQV znl7<+v$NIxB`_r0`XDopr^LkFA{#e^WUfiKC|Jiec&)0%nH#mIIrFCJc8fi&yo|&6 zHz<&hrKj7|7k>`(KYKdU`WSpO)0kM0k!@d-Ze4UaK%sEp&8)m8owjW|4I7!rTh{M= z9@(Tf-vYBQ-4@{4ZH}FG_eH9LoVLsRF}v-yp9oC%Qv%#;`j4?~yw7464wEg~v{T5~ zFqeH{)JqBqBSel>3Ll~WSwFJfcGM-L{Uu$6fRsY0H~FZo2gcEo_`ehXIqL0+|D3Rm z`2R7}!jneW@7_?jM7P`Q_VQnYN-exm0W>x(Hj={e3eXX>wZef45F_9@V(f<3zsO_; zAl?CxuQ1zA3S>SZ2NE(J6ItRcBIF>+Lszw&cTGT=;bmuy;q6ZwpIt(C^eefR(}zVoMs;{cAgXS|9*;Gnh!&$iVRQZY5P`tGf1sj*{qnz#i~VOcRB>7 zYe&WmpKMKW4=nI8UtYlN7+@%ZlRy!1k43n25cs+ynB=G&7IvGMDuVe{i0a6CD*xbv z?jFo?+=2?i?XRl9;7GWq^9S1;c*mr4#kg1_6noRS*k~yBfpM`WV$)H64`3kM&rGNG!H*sf6QUgKhWLa}F!i|ww(24cJcpvCCcD4%P? z_=J1y_~FXon6soI7o~^BA*X80OL|90Y+>buVi%2zZ4JeqGcGn>jn!RYmIgpQYBAF+ zeP|p$ql0Sw*0|UNV$*m#am-oVm?@{TQS6q=_hrF zSt3qvo$elAtyUb5>Ir8qHxbGKbtt<|gmO_G%50!`Cm<2%u8%Xuui<;@u=0~&{iqHL zM%hHXR0FV+FkO-u%PoB5Hi6OEN!yDa5sm81;OVdfL2cVxz1`rZTU%SloPC2bD)j-w zUCE;Ol&IMn_8!D;EU4`>Tr?@e1!S0RO^-Rts>$=dM(9p-SOZt>Es-Bt>&K(xPP%Oo z$`s1*B&5^Y=B|S1rOU>pc>uHAw$+CLU%u=_cQq<}{(FOSlj=6$7MYs$$K12fGWa#`@4#wv z4@X8ayW(@+4B?$Eab)igT88IM{QKxB|NTK{9*!76haL&Kx~CH&xZN{7col($rn>C| zJChraII}coVQ^2#&>XbRH_~Pey}h8`VaTiN@5fb>OO|#+F_uq6jxKdJG&?ihli-Cl zwh`GV`b5Bf1;KPAh>p0WP_&a!Z$I*B9^%O(7-^r+|Ou2ZRk_m&mG&(i;ihUTEQmBBn)a&xha24MGzyW1u9s$?<)nM=L+4 zgL4}%!^Me_TksXH-Yx6P*tfE91}Ie+z{dxg6XjD8_SWIY*)T6<`r*?M9!>P&*(lkX zs~%{53J>g^j=0Ltz?5^DCYSAGlQ!ccnt}aJuE~p=@iMlsKP<)4jPl-po%Mrli>cezO2cb zaFaNqJP?g#r!644fU@?27PBSdUV^rdZvyFYAD)bL4y0q*J!^nV zxlE}u<`DA|z_t{7_0n2M;dJAu!u8m?Eq@(FU-=300RSBj$5~CibPlYHq{1{cjBR5^4sG~)gJlH5zbG~f`g6feQ_Ag-48!_?JfGkPT(dV?yyQ1XQ4jN z0TMr8V%>2Y>Rx>a#43God=$?Nu<>JU$Sa~#=z~&70`vL+I9tAr>Ai$P^%MB^crHN# ze;yyj1lZAP39w-OtgTw6A|<6&BWN};IS%g>UOk3uP@ob6QJV-Hhu6# zLB~>7tU|AkzHvOdA9MZqm~`Tzb8P%SF>Tp6HSmIP#M%ozer~Y9+-xW3Y<)lfo>;oa z;dcC@V0d|DshvD=bsDF7*b?kiD6h8Jh=pxkHY>Y1gf(SK$eC54B-=k*u`iZ^&{#Ay z9Ssv44ZW(mkU{t!_|Mj~x&h8JExQADdI-)pIk4Wx^YB>tqSh;(qYwTRZq}N+4!wmS z?+SEk_XKoaY$-5q^bLK8qL1GS5|Ej-7R&`u`kcxBtJ zpi*9$#4&h3>@l1Qbg~@X^wrY(`Cp7dea}`2%+|EW_miLa*{fq`pSY^lhj7+_N{YL_ zDcSXvp2e|C^mwb*Rn*>)7Cru?Hv89s9*6&TN{{p1fF_jrIVkhs&c}Uhu3`JuEIkd7 zdd=4zsV=9OrJob*u0Zy}V1KfQudlL!Y?qCR9x*oQA^;$=D%)j{OL0O%zUHnT`R@|$| zA`|Dbeey=L$>WmE_)L;Ig;hNu`5TUfze2sx{Waa^bi+T%iBBUQ#bSw6h!FA4MW7gq zcu?TDVuTZw#Miy!5LCK7rtOSAa-O8gwqJe^eyp}+Tgus-#NF#=Q}LK(!YIV`H=OfhIzmeF5vvt*XXgJ7cE^*{&OMl$-&I3|g9!GiY2tP*=D`51sV_W%kh&pQm zZ%9T*J40rKjU4m1kh^+rmYNSkk&RBWa?eCj8{gD^Huk5em0_blATJoIO%DH z!?>8gH9Z}3%tX4?NvE-j+-j$9W1$URmw-Z??xBO5d>hj)wAg86CT*wfR%GTm+wR93 z=}Ca60X)sdCIP^ou#<8;5$PY@kUosUZthAH-)J|d+nE0GSf57v?J-OZEGt3j9c5>3z@qkky^egN*hGEwOaUi-*f2? zF$D@L((n5lwanWB8xH=fgZ2#nmZ0xP)HM4Z>^apn_eP;eOI;$#s%+7aVhrD1s%5bZKSV+@WGzY!9Y zD@^(g6ic!>$X{<5z*M0v&KJ9^W_(D(#cqxzwpHANMP>E>WYnsiFw|YuGdZ8qwJ|L> zQ=LC!XXW_CapHWIXQ&Y02Uw`|Fx*#DP8Lp!Ny=O)zk(8Q`h>%l2XJ#unko;hOLI+l z7|+ZFI{}j-$}6$#sNM@0y*yaqW^G&uj^Cq)ub=zu=Ao7vW9)ixn+^#Mk*q^S?hsxtdu)$l9i?2nrA+wm$edxV2{m`(}uY zwqAM_AslB=!H&|j*$6iK!Oqeg1bh5YS83N!sJpahDAZFr3Za=k<_z~O@91ipK@K*iwTAIl$SO^ z9U5x9M*~;wdqLCb*Q;}*XX>5TWINXB9oJ;1uUo5Uu9=Bn=bE)=<07MK(i{~NRY13KM<>j7Qv8vwwEF=5V|>jsR518RDtq06>m(>GslCl?& zNm9U-n}ZtglkRQ}kd!-T3J%Tg{`L5|kD~P4RSm$8O$7Y-M8MAzxMcDab3C2l{)6RJ zE9u-92~0L5`XvJG2H?E}?lA@bFB9SS;6F*BZR{)E7t8h}3|FxCKknZSQG2>%NL z*}=no;S~a{2H@`rJf;Eo2Lg|70REl8T^oR71V$Tx4-t4cfI~X0#W8ac^%s>`SNU4# zKS$!6%;p79()ikE8G5vIHGVJ>Kykhg>h^X&spA2mPgd2T++a@ z)H4U`n6F355e^0TG83Nz#voGpErXb`2JRnaB;ptm)0QE1{^{lS0J-u9L}6I*K8h?y zyiek{v>TGgFr#L-M)^s=D&&BfF0@cErJb)!jQ34MWB38@2)_%@_o!iOUJNKckupuk z5;5nxM)@M*;Y%2l;k~fmE)={A0rhYk2gr+I)oZ%Sywf!l4Q2unsY-mb&n)kWpWYG1 zxR-)PFYNx zr;WV!+PvNL(o0~fU@&lba)$eqvK$k0x)NjNp#gJY%QX&JI#JAE3*Qh-iKLFO@vmJ( zn}sF^mfdKQv_#8G!K7F9m*udTWR(iv6HqJNgKSNvcOBBrADY9oO532X&Mm`xLK{xH z=xlWd4l_pF2x1!v)xDhOBe933VPPo-2a~Rc&-9idJp|A<)%Ts6#+?0N^(%v!?M~T* zJzCcu>P{H<2Hq6Wv`d)AAR8>08>PRaa8%Iy0?H02pGq@#f(8A4Fb*wQg;0F&-M}8$ z#VGXwI}|$^1EX|G4e>*u?Re)c5VEv|iP2p5c`zz7d6d%-!wC}T9DojqzUWn_Y!^e zWYOJu=IEW1MIR{9*Gv|@QKH{GS@g{kef?z7_eu2oCyRbjqHmroI$EIQ@187rjzn*s zEc#-J{ve_!XnjWML5aR{;%GiAaE8)ww&|s0|4ws1rQGae+>ZQ0pM=|Ks*4z$X6ud0RR&e1rQGaFx?bDJOKPF z0Eh>Gu>c?*0A33K;sHQ2d>-NfpeX=|2LL?)hz9^80EhG zmH;3g0Hy^1@c=MA0EnlW1;fRTC#)r|31F3oclzuIzw2ALd?r?|jAC3Kyp=CwIu^eh zTYyr&>@QptI*iMmufP`oFsxXmJ<(9To6r<1zpq7QVb;|`IW4EXRQY2K;8gxp3%G}a zuP|R#`Llqt)8*Bc%3l$R4e}Syttd~{%G}i2)KU4nAUc(Qh#MPx4K5zp{ihH9m$<^Y zG6ui+QgQh-ax*@NoS6aK{Cgp*yP@b&i>k8dh z;W&69DqN4(sc?Wrh3gF}yg4CSHyMwGRd_5BOVp|GI$aT~SK)QKLVZ`8x8b*U+RiRL^D!~7aq47V`6 z%!!k^!95No6E<9qN7%?kCNNx-CSQzcI#xCR2MSje=?O?VT%;u_NJ4k0Aa8xW1=&$w zkWNsJnF`DCbrfIm6xDo&nu7(g6g*?*5nQvn9c`d@gfZ?)WTiO2mf3MOA{9*4%A3d- zq3w<7g5O6bwekLcTZcQ)8G6FCwu7C4HO*epC2tz|f$ngiCmfie0Iah}Yl8`6+|?XRT7$V)p*jmws;D*>!+H(61ZruR{lkCvOSZKt z*vyaMWrj2yLk>k+y89H?c=``DOV`7Q>Gtl#;MG2FPh6jP9Pmmj2?qI#?`@W!Ac(|@ zN=4u!^JkMq%xCO##2xKBLmacE3)ZPv30Y7<_%z z`v{=ZVDX<;!946U{7J zh>|wFrAV$HNAU@f2{y!*y2RpxHd2+lh-3AFLVT`7IQYi&SUXqbRM8i4LyeWH(ERFA z7h&{4wt!gqC^Rj~V#xcYmv4_ZSCuB=eGU>*ykq6%&GmK9` z*vM&Z{o_~k=9fN0YkmzdUaz%QpWjJswMp~a5zcQ%<$p(hrx=Kt-v?2@Z)W@PCL4z* z&F+71^_mk`Z(M21LW{38$E{@5jwRqwiyTW3m*?6t$ZLstHTZ4Fv37L8ZWG^&Z*zG9 zgZ-%vCps~X&i9(-FVM{uoPXhQg$_E=3XaIgLt{PSMk`(7nw4&GV--x95g)JMe2vJ* za2^*jNXM_;Ly?goU2>!wppq5CWJQ-r%8=8Y3KsE>X5a2AJ&3*m z=NHPE(=VY@m29)4vb`#8ApsE23B#eat>6^M&(?soJW=O zH{}!-3&9D>xllQuR?hd7^Qv-oULu$$E9b4sxlcLYQO>K%$?PeZ`zvR?a;{O%y~_E9 za{j0s9ImF+yDDdea^9(&yOhIoN_mXTse0s=cmev?jtA#IY&DKeKvfK z*3w>t;lV#SN88(YjJDT5!&*Dy)|*vlQbQ1RDimf#=p^9{g92*d_z9j2VB zq}dtfDW@v;ZUD-u%6%Gua;mbw0r&(HI;{ctB!Rz!x(z2JM=f#Ys}A@SF>$1<4k$-0 zp#|%Ja?}#VS_k|F$)P9ffZGVf>9soGGX(Aq%(krMAKYWeX{#N~>&-n&q}2`VzDeMo z4L~`MxmO);vp~(i`Zk`ewejk) zOMSb?PVor~xtLJNfm|=y(4kH?skfNw!u>2J%Cn#&(4lXEZAY68bHr{=spuNK)x$-~ z##=qPR{>nm-HNG=7)t(4ls5Nt)Ew7z@ot!0|H=JTAvSFn@gX9|)NzOcrRNylRHWE1K7Q+Q}e-TF-wrr9w(|KtFy1j4yA#S3?oqUt(L zsx|JT#|zT{B(iOuSd$+@Qwa5}KzgpFZN=Ii|H9+h#C^RNFS4SQO%ge!k_raFNobXl zLYte6c}-zW#-XabCPVlH^5~vAMH1W5biKLHlEcYUaA3=I(Im{F>7uhv4mx7(o=k6U zJNmL$83#>MBqO?Wk0}toOgV76b<)zjj|ezpH7No+hiKo)N>l8T1ygVk8wH2fLfWl2 zCpOCLDX2snA2$VpSR~Y}ei5G%6!8?+fLI)-*J#!RG~sFyli`plQvM5zr4 z94IZOx~sE8sI^?244br^sjXa`Sepc4glbsU)5hKN@@)|mX4O9BhlWHUQm5>9qR?5| zoe1zx_3!_vmsSTSw2E^fw2a3=_GOH$&wh1angD{<+2sr*YN#&WjPZMEsm1E}aCc-IGB=H#{teFBq zbkg=L4be-xOu^+ICWCXEljcN}*5WBRybgQL7TtJS(0%^>>o=mLXa?41C#IT3;h<|B za65X(%x%{Sl=JDkB6CYveT<;-Fy)4D5O(;IELTLJqSYY zC3^yIf#efC!h&tJtHV(Y_>Zq7@gjV13GV`c@qr;Mt>bNosD>BOw5!Os{Bg`7D$r=y zh@63$mU=a?DPKAj_Rjd1$95Y3@|gDta7Zq?4wA;aPr~2posHkpjbKoFb?gGn2%A!V z)LnH^?p;7{_M`5tkNOm%(h-?~ zh91L5$)x?q2JdIq*b5do*`xd*d&z=Wru+q}o@_CU)S3Geq^!ep6kdpR$tZS&`ZsXn@7)a##KQPN% zz^6kUKyk9U8(lei(v9+G??5EZ_~3*{_;cm^>qzipy}`To_KsSbiZiSChOncb*+7T?b0<%fRN7n}Uc-mUA)Aa@bGDa22cc zMWWn?pbYrc57jNX(Yqf&Z-4v%pCfYrSMdfC-pxbsMCPmh!;}d%YG1@rJM?wY@H<}N zr?BKnT+{ms_~!W?N`7y0@9TL)iT)MZv3CUix!RWdgE4*=?SoGS{@L1R{qKgN@U`cE zq#0>u9mCt6-~rPJ?S}UNg~xCtA;)_VL3}LUk9-IrJYwkwP48iZO*~3eegvKh zNz{lac9@CRh&An9&fw1K4-nw{TR#@JW11m#sGb^* z1TPI^=@2r06)Y^%{TP&v>3$r)NxW}`QuZE4L~L*-?0flsviAhSVmZVHvjB?a;QkXu zfDfjBN~rI`Z^XS5zxAJ{_3z&wryYH#D#Mm+GSBzZsBf=fo4XSUq9iDh2!wCca%6Sf zPl6fmL30hfc(PggBQg}1d)WS}xH;B-1eJ}6_W;x~_c`S!f!sU?^!R&aDXw-K{OCPD zDZ&@uo`QD`UZ))@Ou zj5?@vhs1jyL`wx$tT{2%g94HFBD>)kGjV*=EI$i|y(5g74K`Z&1JE1ZH<^k)D5^|; zy>9`6@4tQ5ZpPdnRJBib_a9QV7RID56wM78Chc@O$% zcHhmnK>b^$^MBa;5;(bvYW>db?%UhUBzJn!J!@_!AxSem(@ACsbkaa3fw0Pw$dXCK zEbIj6(8E3q1aTLF5fQ=oKoD`mUs<)lF?R)4{D~duXfK5#EaXP96ijQTiT!6D=VenI_%xNJmTP z*c853w*+`3y~Rv#8H`2Rx0vl)#3Giui-ou`OSTL-q|}kZEb+sr-`PkS`3=inE!x>K zIx;r`a{c?E?0g@wmJdA`vzHGd#HFABlY?TC#Nbg};!%*3ucNjCG5$#e8KcB+H6rST zl0GW>6y+ZC6toXs&=jdMY2Uo9lR7b;aNZf z;N_6~g`mlwSHSvaASgVt;JBd3r{QIjfnmxn{|hvCHAcVcf6@dqWGR$vI*KZzQa&A& z&M?>!*_QnfGA(P7xK=cxuH0_Q;adqxJja@%Zkv4+v0$z#d)@D3eFxgFq0k-^`JKph znj*;~22^Aj_TEolD5%>Lk@kU~v<5m9IpwMMLV@bNh#+dp9c+r6#kVSlqLqkD5ySuw z_JIro@DL5eg+JSyq8$VO#kprNFb(+zlUXVB3z3WxC+~rgF*$^Uxx72^*{jZ z2HG5O=r-n-{-;ghdtOi!k3@~=maXbWp@BbUZ-MxYh^aTibFGQ|0LkFm&&w6nV?{_A zW0b$;o58i}J`DvpcTbOC;t?N%?MW#6I2h(~Y*2(ojsV8FdyKW{Ioe83fT9HBEv&?> zHF-5ryy9e^e++l_EGXoCheq-BYQ|UkDX@{-(8gFPA`mP69}p)yzd&|krGG$_ zWj7(U+MJo{3eR^}sY8xlaa!Q)?Mkn}q6j00PBbZSAnIT%>p*4TXGkudV-Np1To-gf zNlnPol(TyD3!wc!R;x!VP*hK`aMzD!&QvuJHv>&r`{N((octxyalc_v4lWb*GFW;Ns9&qhejb%&loOz6x0?*-6AK3* zMo4--lw2>*0YOKF0H#+Y;KLy}6a+o^9)c6YkRss2Ay@~3X%&J46#*X(!4)7#cexQP zR{ne_e<7aHCP-y6Hh%ORoM5mO5RA^(Af$X0_<5BRN!g0NvDr+jYDr2e* zOsW4THe7H%8Mi+)JC&PU`YQrw!b5>gJ0{^1wmYoZ*{6XdBdKIGw;w+}dJ}H>hzXyn z3^HI_E-XmtZ=mgq8<;PXYjOQIM3cHN1XrEi|Ac(~atQ_jryB&;!ErhMk4B%MoAPmQ zxYN>Km!X((e8eQk!@cqIp->o2#$`mKku3UEE^bB!aSKx8aK}HdaEH`QkLdX6Rl@1% z)emO`u)-jJ#>g|Mt+7K9y)lBa#m5d4=iiAQL8o)*Y3y*m1hZeJAlPC4Hy$JZ08#dz z_;G<}3GBcRI}<}g_8EbPk>qNa{iD9ZTbAK!FY1BD~7B!*Up}&0C7L%sz-#l8?b)JuVQv`~av0 zqQdVF#}4yCs_-UKnze~Ommlc&zKGrt@um;=o^s9Vv$l{WvSe0zdsNR>*zlx(}$D2ya7$;!BudL8n6Tp_yg|kK~TVOMpX({v^1Ho?Cl&H zJ#-4t*{TZRWvMqZyIi~#0oKfYm`Ju2Ui}|Jiul0eYA?lDDamN#xyxGP*)}>cNn(*& z6WOVFEu|Q2jSquY8fb9jv#8ZlJDe(gACY92pX`JuWrSoWU57-n7teNra?!a zj?` zP64b&$=DW$n|~bZmgD(8@DcR9CAhH`Er$KshuG1(kjw1ZX#dL>`+4Nz3JcLEdk$z4 zPc+Yd0#`*sQ|ub}Y+Els!zFwh2!sO%EDZ!H>Gy?NK#3yq1O)sp2let>$;YK0q=!qa z^UbE+o{yTDtKc(;&!weBcZE@o{2AptpbNO?Eb*0bqx?ky&PUe!yzZTV_o+Vbb9C<}cwgmt_XX`{0H4$;S^(VbQ84}obnnUVe%A9w1XBPs zAL^D5fCZpO2a*8hdH`cQM&6`8gLWIdkJo{z0Mx-%w}dBop%Fjkj^z;@U<+QU18lNu z^%&V^x9b#av`^^(TkRnaU>={*BVZ#=I?OF3y%X~06oIXn^t_QrHlsStD@+x%Z2+@$ ziVT4LbYMDwLv>&VfaN+c6Ts;@uor-f1aR^(3&0gR#cTj?^C)K9bEMA%1J_2~zVJEE zw+}r9tX_E!Vqw-O|Fi-atcK>pSq+k)^o5z)J8QA1y|W<>*WOtz=TzQ@}Y|9fi~Pu z4LZOM^Nx=6@W)|;3xo3 z>cG(eg2!n2I0isk2aW~MuLH{gEY^V)0A8&F2Lsrk1FHbMNe5N~xLpTc1K>d&I0?Wn zbl|lBg2!q(T?1gc4!jz`pbi`d;7}bn9>AG8Z~}nqbl^k)cj~}O01xTFFo4H&U@d?r zbzmKUf9Sw^0Ey*V)=vh|qXVY^n5zS)0ytC$P6Mz`2TliYi4L3rV2ci%3E+J?umQkb z9>5;>u=fVOUIOoDb>M6O%`3Egp9f%;4wM1xrvoDZmg~Uz0M68b3jkc90~Z5$j}DXo z+@k~M0QjK}oC_fMYAs_M0VH+cLICr1;35Dg>cAL)bvke;fGc&NAHdBzkOy#&4$KAc zeI1wwp!qm0WAg#@>%cw$UabSm09>R4X92ib2NnQ$PzUw}@RSY|06eDyRCJ~uujPY^ z&fYpeMQ4c)v;w$92Mz&ngAVKm;C>xg4B#mp7y{6Bf|l%o0G8{(B>>){1D680QwJ^s z@URYy0{FEKECev;L@kxW0Ibo0!vS2S14jV3O$Uwy@Kqh4N)ubDMM{7%Q5|zWdqu_L;~1{2;4@!UM(er#-4`ak8c(H1CL)6=U72eXV7UK70y?5Y;E zxj4mE;k=aV;fE>}8tdWebB0)Z5Qdo)l*Yp)+#sH)!5LxcVl+6-L_5Xwp|>-8F6xZQ zk=6NRqhStfh#eE=Z$s{!wJNp!0c*zZpbbk$kcnZP#MKUR25v1I#W_-Ll=T;L1NSgGUk48JT9;fEyuulKD^Z%2WvNVpdvt;cHwwQWqk>YI*S2s6@pwFwOoeZDN9B0f}hL#Dky5;P*OP zgRLRsvM@a^3(0R#ehvAZgkP+D{R)X1F!7FLpLAT&>@OWxEc*+`g}Z%z24`e+6d z5`p^=71kY54|_9Dg{^oup`1!pERk$AD}H(%d?KSuC1>=Aj1J*9WpudTUivk%R{jTm zBBKYxr;jd;Ai0{GP=y?=X@^@C1WqwOSWj3E33E?44>1* z3Mtl7-Lie`E>$+3kv<kzF}57hw?ts=wV6zP34WHhMDcoUNYOX{n0ZAB8@osU_xA+NC&lKta zcBzX$6t7L-fZ`M+ud-SU!&!J1oh*_$^^GdOSw4~9B%a0N(H|q344oM4;G}PHF`R{m zB-DJq&lRuZ=|o3&;wnO43>4lcRM*36K{k?kBT2A_1d=zyIh;P|&r)slFJdPtP&iNM zTT!D6x=<)Qi~lJkgo<~-SvXoqQhdKbyjcImtLZf;UK>A+M)*%@gfhGqoDj*(<`ad= zkd*s~k<4^DFAyhvi$^j7e4v4a|Kah?Y!a=esuUlY11x2srrnxVK-ij}zq z&b8vCuT)?GA2~&=8^IUFW#V=0r{G*9PG+|FO)|iRLS=mwae{5uKB(fJ_W=Cw6kb{J zWjOB^Cw+@J0v0F?NvMH`@Q#Z*kWBC^aK1{MjH|eWRGmV#;#(@tB=Nn4WIBeJ;xuv6 zx0odLZ@_txOb(;Of*!CWp2dHJ3H8E>D)=2<3J(d& zh4EDje$8WBVl9c5rtEJxh}QAW{;rY7@97afw){2-nA8l|RvqO2z&-LhblnnIFb;|v zK#_Jmg{+$5Hc+%Trhv`N9AvosDUe}nnxD4uY_X#wS1~DQh;e05qojZm`2%02!kU+YhMtemp6;(AP~+6Vm+Mx_A6Rx@HD>=*3qfK?4SgR;!+`WktxA3Y zD4q5}&jM=qL&?=J4neg~^SN*O@)gB8p7OF$1IcfC?~`+jDn{=IozCb^cj&0_KEGF95iH?q!4lR4 z3p_auaP$*bu<&zRIkucgCYTBOC6hVgHJta+EG3!LG^BxK`lHjHw1cjaIhO!}<+Cn^ z*t=l#tV3*`4nMRQmC@;k4hIA~dp+PVAYH1U^Riug{8XodYMLJ!0c6Mg*eJ2MAA19_ zgde+xSd$+k7ud}j)h?opfO<5@ksYZDzmX|bzC0Er zr1Is1RK9$W%9jsP`SL+3Up`3X%Yz(grD-bJUz4|KU;7xw!8iQ9iB%p9pKYkD;8wo_SM(-Ng+Nm|^$i zI}5+>pt*OV_*STNK|5KbMRehN07Lf7d7U9UnI8z*Gm5WAG(d_QsT_X~I$+4|FT%1C z&jrP6F!c!8`xRmB8z|fZ&v049r?1~ss|Bp^7F7{7HD0L*r@|dU_i%5xb`+O$7d~Mm zCp0={+;rn(Ly+K^CHV1=EpoJ@6YwACSC4?2PtSNUOk6;;7Z(=w(I6~CtFPOZ?*z;F zdTsgZK(tPaGE>}+Tb>s%H$SY&O^qH^ewJm>T01Ni%+dW8w!o&v_^E0ERir@RKKj)o zXnt+g*j}Cq#5c5;7XtB(?7|Bi*riSDHLTRscm#EZ^=j6w)3Tv5g}Wy2JDR}W&r>!$ zjQ&8~OJk69v)4;@T3mR&WV~V?gR0|1s$oTO)Ze`pT*DR|FNyQmpyLr-$@U$W0GZsK z=0*$E%vNf8ZAeCGt!)wNI^@hZl$Srr(rRP0I$fv_qTiCK_3AaRAqPVpEx1wCv8O>g5RUNHVH5Ntuh1Rqj*Un$B>R6?! ztA&@PDLWQCX=GffYSdRT-yE{{FD{`~OMCU=n%l3x)h-EAOhv|^~ zV;TK8{2z(g5Z`ZyDu^Pz z}(Iz*OkrkjiR@C%au?G?hw6ANA41_=OH^O zgmZAJypWV6+*&!}1|Gpd&Ape@>r3ZBUpt3{ttO|HzSCRYcY ztj(z4nVf7*)@D@o<|i+;Ri`PHI-OEox+z+n!ZSI=nxfaKRjE^}I;f@9DLj*wg#*vd z<`O2jt(7`$tq$6%)hRratyZg6r?6Lz1Xg3#`ElAZz5|vh*e4uY0VBd-&B9esb}95_ zs$kvK0BsHtly$7G#v4+>nn^~@%683mRE?ynU5++WlQodrKe%d znRvpSE%!b~`pz18C(7FtHOG!adBf$Z73^^N*N8%s=t?!$6@yT8ltFix*C8Th^BGNz zy&6zUIJ(2Uo+u4Cm*f6G9#qG!ZObnLL7bUKjl=z`KoBO7xGxg-Z}taxpQsg_hJDVS z{NBN7#lO$S#5~o<{mrK0&oGS-tj{0Z&8H3 z2wNAiwSM(9RPF-e-@4#6i2kjMe$edp)w)U{??{0TjuZ3$%;qYp%tb;$iJKH!R`+y;{0YBHSVH`;|@zr?}^BP)THQXR{ zZKxU&Ot97JEYbQGr)rnLcV-o&R==uR+rcD)#z?ruuwrH;CPhA@v^tww^=iSlz`AQ{ zMZLQ7MLR*=y&QMImJQ<@tbsr$1h4x)r#TRK8q22c|1>)gnCPF&!2JJ(^N$;ACJdv; z*$hJ%_us|8h-GEE@5d!f`zHf|{8aU%`$5>kxb(+k@S*!W+)lNr9oEoT7XCh#ir3>t z#Eq7E7CI17xXk?(pV6FS5-~XVbR(M+Zg5SsSyGR2G(EvFylLER8?FdXG;^!!V(3t{ zCFDXVZ3;FvDxtC|c)3=9)$S?O zD3Yj%Dt>_;pq4YebsZpz#zWl70tW>G_^D?VM6HP|_Q-gaUAt$tGRA5hFAp@Gp;b!5 zOzv(c4VP)!YR8bqN?PjI+A*OUZ$UQwV<#<;{FC(BrrR0i?{-!|WsZf$R88ltR_tE$ z`m_wyo~NBQyO9~#?wcWf4#n|zoCjDyUpA-^`FHg9SQ|d@mp|0EfvYQuxv~BH+mN=# zngY+88a*SIIz}5_LspD7+&S<|qz}?Ej7Av^yVy6`gyRvsR6FUeHE`7oEtTA5)0!0S z-Sf8M>lgrd(%AA006Z%uXKFlNwZ91RnN2?~Z%FqZFO&b~yzwtF)2O#>qL^WD@Yl3g zSWtWB%(D_!102O<11sT%8s(2`g!^A=g!`m*FPLz@>BiF18Q=Uyca1H^9vq;nggav1 znE|?1S*_h6=lKdvS;erPKvn4rbM>?~6|*NNpvS40bwtIiBPwPOamN|oDEuPuOFs)Z zo@`hGf;}^^i27Pjhjr)n4G8M8&hg0BZtDeznL6S`y4}vO&gsa{3&T1pW{*+8UM~^W zk#WbzuQJg15E)r~h^t3RW7jJ3l?i(Tf>*c!eD-g`4Rza+!u*wS>6RG9ffcOrimOll=e;&2`5F!0IYF)0_wYmI@rz-3r z#o(pf;*X-C{4LJoX8w~Yl8{7veXkt94^HN z-gEE)8pR9B9*?7pdqN%fS89@VD`?M1)p{#mJEI-F3D^9^rCuJ$chxtE#(# zyhr9Dh*_oOsTmMUwYwW?b~52WG|ujZG8F&jH~z2DQ1+7E0jg#Eo!S0)r5?FVU*Y0i zHRAsNuO9tMaX+NNM0=FvNB^k+@~r<<0M{z~6ITjrZOx-@-{-u}e|*Q?m)P~Ct0gFr zU+X-Q63?e~avj{SgPaH&nhm)cN6nJi#H$N?>g-9aK$vie36;BRb{Ko=aIrfbmu7RO zTOE?T!0jt_R(xIV)a&1`?3Tdb{(a3W zf%t_%^}eRk)BIikI)w6feQq~v9o(p7_(I|skqY->aI*wD`)=jv@S z)LOFL#dh}zQBJ~r*HD$e3L3xYttS^WzN{?MHD=t2#cI9N+uT~$828^mKqj%j=-kba ztTv)fR?G@4cqWrpQa9aht881hRR?XWC{Y$XlWkU;Zn{0Sva30@I_T6&hqmCEoN7(g zOt)YDLsF_z zSn0IAYOq_PteZFDD*`zLrD*e3uKBrvve8aC3oZ;)i1q=Z^kvc7PD+ zN9%cupnsmuO9V9$h~4q3PPK~}dfAURJjtL2_}Y^UUX?m08Jx>QoRbXdx<6i0=sOKk z@9JcIq~UE(&gCI>ZhP`n^U7^cn#Iz~U0LUKRgN}Q=ejDdx+~XJRjzB{byZG{*SW6B z8!asFx+>QQP}vVUHC`>vEKQtM><7IX=h%J*MrT~lj zKwg#Ek}Fml-D9o}>mh~)1ZZ(ias4vu0_5AT8gRzpR}E?nb!*qet`OPhH9y9noof}} zoa%+U{*5=hbAhWt)l_C;4G3iPRz0S=!{c2)J)V zfz*(I@`eIQM9okgD@a$IG>pMrRck;{SDf%leqDH|#Lm-xFFZ_EcG)C>UY>lUe4cen3!x|9OZ7^OY{QR4z z>M*v`V0!a}<*NYN!stu3>i;$U;673 zVrN7MKRn@AA#bQrA@34p(3?g;@O%r1CT7%0V`mysXZGdkk(Jq3Wg5ZBi!+U=*2OIC z3V_Pw#hXTi>;x}>om_lB2J8YqW9KxNI||nuirwJ>dU?G=bK&ytH|A5Q9p4v6oQpZe z8NInypT`oBzuYgBy0)xVu?o(y#@`Dvg^H6(DSZnrdw!L9m+F}SK!0|K;7 zZMWiF%|A1nu(i}>(l7e#{1usp2HXjm_pdx&=bLB0G9c9sNdJ=aZJc9{?HdSuTIQJf zwqQ?j116F|ySsP*ZVxJC_Q7N_J-n9WT7?#0#9{)kQr8icx{j#Sbws7EBPw+rQK@?fRvxKn`0XJ$Hu!CNxJc$V z@#8M9-^7nX#%~W%^PS0Z&1WWSzcMK|@%Yd5(GtIkk7_?LS+4!UWV!YOld=z3^?gZU z8vn8lnZ~cQkZE)w6E1%Uh@WS;pzi0HFM`I;GmlC<-Wm?tTE*kF2oUZU`b{iUJUWev z$3xr|gpJ%n5N=r4)~XkslO+q8A|YGt&7 z+}lLIdh=k80=u_g?9Rm-Zb{c}QT`TkUaqWblx=sC*HE;&>!J+_>I{n$7^B2+8IVU?k@-kFq%IW=5fgBO%Fl<(fcS;%av**odlC>` z$cD;i0_oA_%AxWFK>QQxHvsWXs6*xJ327fU#9(n7p@c802MIO#pzjdUzTts@zaZ4& zqk5XqWFIv3OhDR)DiCmxkmaLVPN>xfl?Z9aq!92*LTx^(>j+KtL7ye$Z<+5C(#F43 zl80BFbxVAW#ILwFSC+Re?^7ie#hsrjaTIrajl>_cMN{0pPnCFz`%6ig{xzz^f1vsW z(R_A!VTpGYR;fDm7M6CV7uJpjuk^x~LNDyu+2QnI=$N<8>MH*OJbUY`ZqeU3JWj^I z7dEZQH(8UlF6(^fM+UxBa*7%pr`%*s(fX$IwVcL-oY3&1ovPW3S}XR&qq?*PLCSOa#xK5W2iDpyy$j1X zNb5Y5!#|9weESBJYgt%rjA_WXcY^TNSsmrC%d^u_3%kls%6oS?xIw9Pmf~CMCacb8 zm>j-sRealelU3(?OFq6u(>2^Sosf;)rN)LaOt{oIAsg>07WH$<&hW$wtlHGkV_sOL zC7COg@J!8?gjRD{(JGvErLeFHEM13Tek4uBFjtOggn;@x~j=_aY)4O69;?uc^yY-jRNXrLJ;W>J{;b zi7t4pcF24&`7sS)lJ;@K9ur;FH!?tUwIj9m@lvbhy`2?Z)t5MUq6>Vs>ucfeFx+rq zZl^`v^H>Yt^T%~w3i~OkWJhIg-%&k5*X#l;cqTin4$pcG-@WXt%`d&%7Ty9Y*m_Gx6Y57Vf>fa`$@5%BstM1A~ zDBg*p2?jK^O3Q0%AWFT~kqH?Dp;TIWD3z9nykwcEcK`halNWW&73(ZPO(a6X<$83tcWA*5I&a{f2Gp#!4G)>QeXL6b~ zP1AGgX)~`d(aV>K>CVqJ0x8 zGXIS3Aq%Q=uzTouD9)jpOEW?f9eT$8vU9ep!D3*@JK}sx{bN-jG1{hi*^lZUG76O^ zP^)k$A2e8gNTcCOK-FLruCuU1HA7c&LXPROw*(AzWkhH^6~a@5bmT_R=r_pKtJLal zyOY&C&dykj*QVsPT(3=e=e>_9Kd5MOO%y)*qIB-fAm#~2#+zc6Er+Z00-G-_ugpj{;YN>fx1 z_b*&i{QKx={|@4;p4@t+g{o&PwZr|3r!o&1qh=@&Dp{d`+1oWQ7m~#n9>49TO)43m=iFD zfDsiix=IBMtAJ@OpxGLB14f*H5d;jYfaYoyFw`0ps@9M^)*ydjhdP{VgD3L`Pd-*k zkkXG(9wSl;ZWIB`d8)S$<%QM!X8lZFFic*<_4{09#F! z`b##qHcR4tM_5f(bCRB{KD`!9Cx88k)}YEBD?w$;GWCohu$Hs_H`QkAxuDywx&7R1 zwHTv8W~)WZ*5ua7DqEJ-Vog@X27w;?eYLUgsKh?QjeUwW#TYdh|CCDn5}{Lp{g2j0 zG>Nr$Irs~PJxfkeCShrC*c|ZUf%xYEQT~B-11s@9h9`K^hyNb$2Lm4jkxqXU-sb|p zOvBj^Xg~BB=?8U+0nTTyQJmju?3fA*kFIE`1)ZgFF|rY~WbdRY%x6fg2e@#V?cODG3r-f%mV7lSL>#0B7NU<^A|Ks&ZubM4C(90ROwh zD+#FhL5YyQ#oHL+E#j5s`;Fo?pU!uRlW`TVCDo-ubv@n}>}O<7B|au3Z-jGr8SD0R zydMd&bMPDyKav;Eg|kqU;H{{57A%Zs@ijt1sCXht+Jz*=ce0Bi%~U*$UeC(=M%)nP zwAFcx2yHc+Pn0pkP&0*UI-S$RN#9}zBlv>6XZb!^oP%_x#L2jd&!Mpkl*)+f78Pfi z_-}81w$Pg-KNph;Z zFXwx!IN$LooJo2efuHijSa9ksKPkWAv+15LzX!yZo1Kq&hp0*)=$;Z+{Ig0MtwgvJiyOK|KEd5Gl8hwNBxQpYt^BF2tTI0acg z*pZvmuHeHJOzD_U1XVD4cPj70lsBbVKA7?%I}|WVHOj>Jbl*wNcgD&m6YWjTgGzw% zeiq{eMt&I$%w7|CFt8Fh|AMK3M9|3oGZ>&nd!l>+DsN;p!d+^|v$tbp=%3U(*~nf4 zq;HxL%tEs=4P%t`65Ilh&G5)V4>NNS_+s=ivmfAi!usA99Q|KNd*oxN%D7p+5^)>Z zTk%rb4?0P96J5W>&up{wS9z4*29gp41R!IS6^oB^lZjCjdKJJ&b22FvSaxM?k9S}H5$<40UN-nX^T7tlaR zE3|fd7Rr>F4C4m;N*s&4IQXFv=uNmrcK-cNY2^xkd-8!7Jonsl4kUHw6oot+4x9(6 z_c_#Ir8RH|^a>;U4>Xtzj)UE1_h7q`h0bJ}GuWh}1HPZUmz!nS8FQt|TEe9%wFdW( zY*1>ckf{$4NDSbC+fX|h$|jWtNAe+v%|M4?pDATr(`?uq+oP+Tc#|RLHSGdnE0nn# zA@Wzi@eMjIOeM{j40+S=iXsIf_@9dZTsOROX%KG0+nQRG>5 z9O2B5NRd8SUNe7q4lidUBSsdAkQuci8(8>*l+vt9KkWEj%eqiHX>OThHoel#{prc5 z6}7LJ+hs*l^HXkQ(G6N9V)7tKXwj&zF9^K(%*ETGTc?t-+y&?ulnhpEi&PW}gNZ{0 zbSr2r;ne(oBl|3}ZpEy4<~iI6G7ypG%f)5{x;}fj72lwjCFv4tx$rI~k$8}i%fLxI zvOHgPXe(jZ{Z_(h7S_*Kmaf9@6?!dM2{2{?q^=BjKy}~`8>5to!7cr^F-l1p^t!zi zZmZ*;-rDPt_Sqhd6K0FZ28T4Ywf9ohtGiZi3uZqKIiX&=S8mIGj8fzBM&2Qz?(H>3 zPe4}EI}F;=vwwWZ#66YNhqEOx)7VP*8XZccpG0@J67{du+-sCu#Qs{kvl|)ol#27z ziu1IJ^K?4f)ew=&yd4?XIxB5ov32ZRdZ>hEJ@PJZkQmY7<2?9$9e%9`UqIMSj$O#7 zJG30fmzL1jIzB_FwXx&Hg$f%xk*@IAFdxCOllib$wob}sAco=*i0u?+a?DyX#EY|A zt&kPoVh)DVO}Q5LMn5Zr4*&Bgh>esJv^mn3irG`v^jpCUmDzkOD9URdG>$9jmUY<8 zea`A~hR(BGXsnE+gPFG=iotLvG7wBB!-f?eV*?^4YMuG@!3Kn4yNA?+j+BpXOVgJja6>>f}2nf zA(DY!6vCo}Va|(dfCZHr|3`6(KK*INJQY-i9arPNFqxwR2=8?%Tv*b<$*F}YHKDo{ zrG#=QYeIbw2^w}xOUqG5B$VTpP>x&D;>G9w9O`K~ZVBb&RzjUCp%PkJI}@s~(`h-e zNm>R&Ie=85qkKuR9Jgf9aZ4b!m%lRf3^odNLrtiiNGo@WKcSroGQV*Uohh^u8AdjZ z-oN=wB>*W56{{{->@a?h(_yY~I?zQ-5b1a)%-+^uYz_gVMJ_D}B2y*YEUBAe=f5rx$e1_`rJ(-XBAK$BdN=_n~9T zj9*dlTu@=NjS>i zzT*wM$q{8(tfORe>ZEHRV~ny&I;;rf8vn-ZXhkp?9Jbh32vM%nLyS?5)Is>HaUw8AIgVE58jLkJ-3#DMLDDBHa+!t9 z1c_2&SmsdRYKThcqt9m^vf5MlO_lYlFGL-bM*wFb)!j)*`67*Ol%q7~D?%mn7196I zWW+zU;lPen>H1Tf@{M||Y~+TdYTi^m3raN?FrR`3pF~acC1R=h5hIqJh8MGZH{y<6 zeGBHfSqM$HAnyFDcB+&N6|P5IzA29t>Rewn(`htYGINLOK@A4A%(dHFqrxo7h-pRp zBjw5G2R7!c)=2%i6DBB}0$}d+DQBYOO{d}quCGj=aEsse=9tnE7w>>p?$kiUNU74h z#hi-de3L|~?}zCbh5U(SJ5giU7l_Z2`EP${c3Uo;-5<@*R$k}L6s47Ars!$ps#_1PWg;QOIozo7aym7;-3y}^z(+ow!2x;-_nufxpT46-%b<7TjH{r0un<3_hB zy{1?6-zUM__aF}6{P0L)R79st{xE%Ex7@HQ5$(&XDaO8SMz(|85b;lQ1k)xM&cu)~ z^u!P2YVjitd+*rF?bxGWoTp<(8}1v#tdcY>9evFYpYKirD6ud1G6arCrIEuY@!V4RU*@u}dp!X1*&Sb=i@H*>KqtqH}_ zxGbt~q&?YW#oFi2H0*?nHv?atwwgPv*eZy~lY7=sP=XF~!Ff(rWiE(V-K;jLtj4XT z`gx7%c}1lrV^+)^@D{I=>0nFY(<+;kxmL@T)+s8RldUNW-w7XUvYL9Q=1(=U91pA( zEz;cijtF0Zf>ILuW596hgs~=Xn4wKD&(31WH?DI*u0jdvULoGGbaf4}<=)&Qkz;0i z0E(hS`cI5e&Vk(NBWFP}cf|ZuJme*hVL=8Q&LU(Mu%h=}wE@-0sD+!2b*pgTOw>m40T&E9CkRvA^bQNIzFi#L1-5;_O%q8ltj%=%Y%@i*~I|ksYIa#WM<^1rgry2nG@lQ z``Io>UB+*1#;RH2@n|3b!EjSD9JRvPO~8|88+xl*KAkZU7{MBNoC`9gBk71d(S*K? z{;akup9s!=B49UWd*hca?SrAsa81jM^uZO#kRi694W_Yed@u$=7NftLi z+9Cu&wf$r$s=lM%GrtH?L{H|V_z4geeil*GvtM(9WarNth8Id)uUkJnC|gM&Cs=%d zMDdenHl0%B_7$Qas6I|LqNsjcc<}t< zMaq+vRJ@(>pP)S7`lW&Ixi$6sLl)d2S-a=a_}e7j$G#N5qPSM2PO!L%LAzAY-nV?= zy5bjAg)?aJz0BGUQ*v>~wjE!QD3;6~{Cx2oMMbdqNi<90yNYUlHvH{kRAr4hDRQ1& zxLbMt>8&&WA=x?Z@aa!WTz`4)t4|i+q?(mraSO?>R^)rXaqQ{h2UK1ewAjbImXv45 z=9$k*6mPtG=0A&BMMbbUK&rzPmG$@T=ZYUu@h{#o^SR<3EKwglBjpkDB^I#bi$2aE zDTQ9;p?47tDD-*{y_@K-uxg4J?(oq2iGEw5cX{YTMDJDTgC6=#q90V~cRci4MBky% zUwG(aL@!h5GamXwqNgb|ae-TkpAkJ)p**|mPZWBphsKD0L!l!cDjUC_QRr13I+e7yDD*lH?IQYCh2G|&+#)VW z4~&#Q<)L$kVn)H7J>a4JM6qK+^jjV}NOVA)vOw?3p@ItqKd2YDy z2mB!3q=#~Yx9~lM&hgNriGEq3MGsw0^kWJ=%0rJM`fi1;@z4{AzD}Vd9=eL?+4wO= zDXV2q9^bdas-#&Og0L{U4K();{mvsw9ZuioePPcVR!9(UkTuXva^vKBgD+fn z#gEf}pI@Nj$0Y)v-~U0FIQirvfzR(N6+bQ<`257uLgkZN_&&e4SHf}c+vj(F#g9AS zK0g|uICHodOOBkg$5KtvDW z&PHR7nun21;B7J70bSpYDP}oky`+uy=lFo;=rnDp|ZmuoQ z%(<>DPdIRzN;qK1X6)F-)Z>&&cL|;C*WAjT@06W?FZMK!e(%^Dedt`G$Gms!O+;mL zBD+=X4ZBMZTxZK+@}QJ-nC~&#(!t0g=c%CpST%5;l#NN3-voiBHdl>N0wMjS{E;f( z$w6&RrLxkXf|ehsq7Igjo{5DrEs$&+gSFzboj}`a0?n@qh2+EMY{l{do3UaOCNT!qE%IY&9j9K$tk+-}{7i=!#k9La#!0}IZK*eezs z9_boh){Iy5^}s*yKNiw^S9}Qy=LGgol7QPO`NCsUiQ2a0Al0fkr z^!kK&-2$%#U6BlWc%b+-At6-!8A+}Y5_IK2@hS15ycm{?hG==T9^U+q8G*no{6{hm zh<_5lPr^S8Y&!mFM#fQ#c1bIocVhMa#~lB+<9Q4Ix#Us^gE-ogk4Nn#`PKsUA~E4; zZjTp!#TSls&7JYW<9LathyIrs$5dipC1%eYqE49MAVu)g0=5l(lpse~f;SUPGnE)p z*+MVck%aV}JMR;cXE(9QJA+~WAr%*%c zM?*958`k`e9m3QykfDW{_#L46Z5)~_;Xdv7P1pS94bey|!y#9~!N%0f%dtaGqY^SJ zzU=rti8nW&Ylps1KMuzdj(bkgj-mf1$Z=Re%rQ`578@p+PZmBzPY%T5`5wN}Bu(C~ z5z^^HsMSD*12WOvrBQpu-~|~D!t#Dr)b3r-1Rl#L;mUX9hNJl4NH%IO&$s7}5|cHd zTPjv+;@mI8p;(-KVz4I8>CwzPkkVjBhK6bawM6ZK!I+rR@jcd`kEDuEh1l1y#uh04 z9L`{AKgbb?zTZO}MW(Hft`+fD_!|Ap(gJt}?X@B@li_q0#enc}-r+M-`9!R+Wey%4 zlZwg@#iUO1g_zVveqKznpO^*hEFk5h7 zOj!hX#grLv52S^Himh-KxY!X>X26Cx#SEAtq(G$~UNH^;F_D7BA4(d8ir*&58-zq` zfxqk}U;G@sDEML`hL{J=8W;^0 z`bBgzWQU=OU!&Lc;zjwv(3CO7{}d8J#XCq+780>-CC{k-QoNd8CyE#4!h!+SZx&2- z`ccX0N2eDCgowfOl+APR}|(^(^dh4iTe zhBdyCqtV^er1KG;&Jrgp#Qz{hd?=abtLZy3C z(6zZ<{7dKpXfNndR6HSe^Z7{BK00rtdV{5flsTSyC>9_~Z$Y6=F*8|kpedFt3!pWM zt+|bAS5T48!hg#A>W%~Dp35mILnOaqon#Qex#xj1sIh=H$e6i zh1=+49VH6yrjvD)C~&Bh>PZw{M<;72k-Jo?BathMg;64RmTXEVa_hyyD3MzwO_a#3 zkn$#SM@ab-xuvqtpU5qe5+-s3V&#DEKTB~ExfxQtM6OdZp2)RknCnC?E|y7&oRLaI z`g_e(@e5KH+>a`L63$?05jX@xO0dJ)~ZL$$ao`W z%?P8<<|-Dw{t*d*BQfM8JksV0EcW^n9Q(ZB*qbqD zg9Z3o@Sx!aU-^{x^+uNBz}cwE&WBqWIi6PQ;h1Qwf|Ug)VAIwcK^lwFy>?r#6QD;~ zOiD~D*4{U&sMzNMjxW=!y!RgBP<+^>5SbMU&<+=4iDlSXNhWU6CT2cNd$Xqfdl+9} zLxks=xKDi;X!%z^v9y-3eZ2Of$RP(q_VKxJrjmoro)7GnncsG;WXj#U$e~dY)-49| z77zTiIS_y-v5cN;Zovx1*tKjC$NhHY#t<`U>;}4(q33^8oHtjTSZ8(#-Y3o;D5Ws0 zd@o-@WAEl8JoYX=V37F^JcBYC4{k6rJ2v5P*T?9Uq5K^CIGr78N#&7so<-zGb$G;s zKcd5%J@~^CAD3OnZi2Hw*&S3PZ8RwA_ux8Xnv)1NJ)9E@l86gm>A{kS3vcjXNyLTE z_TW32;8jS_$Q-IOFuy~ zER%QuzLi|P8APe3T*?@wE1EgM#6&W^e&x3JDhqXiu}<_uaHGU7yzkn73ZLVJQO$bf zGOzaEgSd>$@-PzHN+(Eg62zF5Qnj3q*-cm90U&2~UHt((?K!EbndwNHCqFMhAz~x9 zVTtnn5(pK}0_LObPMCHTX2d?fC&SUDUZ8e2P=^z!Lj}6Pz7T;>gY^QT>Qzc36BxGqdYcjorxRaTtdJ4E)MzLB7ppy?ys`dTTe98g*WB+~kMc z00d@*_Z+wQw7WL7!heo+tniTAXIFb%a}D#7dCmscTt}xpb?lw;oU9^O+&0+Tk^3^zkFsQ*BBCV(%`W@xEUQ;?n>73X-pa@sT%;ZE?r9kXMK zcq6zFJ$*KKrCwLEm$`x}~0CE5>O^VA+ZR8xpkIil-V9 zByGh_4GG$8#YYVZrrL^w8WN;z#Wf8H(zZQbJ(LbbZz^!b)a{+czs+c-+2O>B8go&8n_cw{J=<8D{A)RF)Fn#wcYtEcU^HU1K7{-LYC^ zu0C!njZzKzIEIMbNRIkgM4yKZNDlh$KBV%%xc|7J=?wLU{pD4Hn6^1;*w@Atj4?_B zz{vlh2}k_2qG`9gAk)ARc6*JCYHwFG9hoi}csZuq9W`VSwvt?Drb|X%j^cJ_HJQ|8 zFLYt4L#Z~$Ekl*vq76XK=*Ei1sHY0mCb?|Tzte3QE~PZ^ZEwqP9i@S9M_a~h>{~^#!{znP+(3p}SKEKP2a}6n4#YDzfA)tE2Nr1!QX=J$3W3O{wxC&ygcV6z{%gN5my?i;v zdHEt=PL&r z)uv8NY;TH0*KSXEei1hYPR4@QN!1Eu56FfI2y5d8sL1UhomP%Tyb5W%$0ATiX5di_ zewY(g>Y`#qZe))FH4Hn+p{lH^q-WuHPH=xDLtctpCk5EBswp}HRTJ1@G{^d8xPHbc zXAgrs?!gJHkfvdwYBU?!rHDNe!&NpR=PH{}&Wu)!(Piz92Z0vZQ~YVI@?O(8_(HDh zJbC4YRXAWHaVE_OPW{MsFa(B}Kg`CH|DE{H?PZ0L)1f7+lF?kZxNjMvdy2RN;)YE- zY*4ZOWNA4PlMa;z>^gqM6TfHS`-ic@Hl(A3xD~sN@+28o^_83q%WAngA`J&8pZUCl zpoEr|ki}h~BN7pntHFtV4;l8^i?>RZWCfQ zjj-5i*|17ow5L(M{2$>>yVGs{9c?B_Ty{a z{2{NTp<#P^&03r&j*qUFFjJXrIwflOZ^!47TY$Y5*zHu`lTBv&EUU?0yk`BH)L92y zf}*!JtFk0EtjZpXg&6n#p$r_n=!izbp!oaJc`$WP^YxGu)woX;8>NHf+nyMNqiBcr3q{<$;=W%lIAywekp4J&<(dF+b2RfPTmi*+K`>9$fztW{p!4wp=Kt+${EgTLD?*!6RsJ9jBvoay3xVRndJF{KV|wCkr! z3b@1pc~Sn_`HI5(G@Lx3UEd&QGLZ|>@+z5fUcF3pOj~bttW9>hvE!piqg*|jhkHW| zt5ZLNv7bv*6)P5;y=2^Y*J=SR_uFn#0MzgYUG ztS(id$!;Udan|axx;M-i9Gp3%-*7NkP2J;B_c+wG=S19Z|46*Z*GBK02r@>yGg|Cp zVek2z{afPg7C57P-OUZNJgm`;a($Sm^eS744bT2@4VhPsJdbNl>{A?F?nGBNzl=kfGQQE(uyDwo*3#@#Hw z3sIuEf-jK4k#nsYoLMF7X1L}A+Ce$2Pi~W|Hzv>jl6$7lIp$}D(U9k&AqzJnTO4EG zhNmwHD~1DzW~-^?u3{GG&s{us0I99`+HFZxns(!hVI@QuHOyliVg)yK;Mn0kZWf&* zR$}RL;F-vy_$kErle7pMXv5tOw7?Zk!H>*aggDsUp(p(%TLSBY)t9b#ZJ~;Dro{GnncvVR{iEMFa3@UmjIfdrR987&l!bwe$m)&3JLkB>l$ z_wmR(_vOTz)p63|%W>`pr#dtHIOaXylzhmYG5?7$M)o}30rM$3Wrj2M=?Z#R#rc_v z^RpG_e^s2Ht2jSjao$~Vexc&Lr{cV~;{2jGC1>}Eb0c&1rHb=`iu21A=Yw>*x3HYy z4ijVlqr+=G_+cH!BB--K@Q4m$Gs%IsX>e!P*0Jr{`y=o6$i79mX1s~a-8<9 zW8c=WM~?SMA0@1Axe1Sbf-j-5Px28QyI;IcLTmBz250?C3hLbJ!}bb_0UGaP$RN4= ztJHhGHFrKXfiOn##u%Dc4W448?8CFG5nJ3CWyqAt8y$E$lW%F$9@1XhQ(JRKc_AQ9 zB}Al0BS}Z>joK?ibUAb>H&WLD&!CvLE*K0dyEN>EiP6~~p_VA9xDsnxy+LJY_BXgy zi2Q!QXjaA@OO~|^YrtYkb}7`|Uhke3VF+9+gRt1$dxux`!p$Cj zx`$WuzOzFl+~zduBWpZr=?E^o!h@w#xbP_+EFDC_W5V^0TiD)dVsbcg@7ztJavyVY zf2J3c%Dsd4bZwnA4gB~@)+-(Fk-D`$>ybBkRVX6LZKL%bEaJ+APxfFDT`qjR2a6bU zTCq-xlIg}olKEQKS$&npRYn@K9y!&EQ`**nyU?`VTGL*&zmmvKbi$SHU0n7mUc|L} z>zFX5b8(Skr#+jXTMc`#8_1IN3y@c?ic*sDDbeG}O5;0)DW7bHUWkvz>!r~E7F*=c zxi98e2+|3cNgqQ9ER&uHT4R(FVe>-HI}Dg9@GZE-7^OhK(?di;!|LcY5{4YQxo^xE zrGw-uSU$@DE=GP;Q7FV81=)6U-y&m_4o0DfR1_{oCRR}>#1{pUB0p7bo?+f(A$27j z?n0`2rw%L0Ev%G(l)Yl}Lg*R5S=`MF?-w@*_00?K^4!5Ki#{kX3=piU5{xL!_~yPV zj8O{9&3zXdqb&L6zH{6%dDVjrA<{@3TAd&cRU1WPlwERjAC70S=$rfYuBjiyK^loe zs}#h+dO_fRXs;->ML-dNZRP{X>^0Mi5PjaOQtzf>&itk^g_mu;Tq*xP)ezxCu6B(92*k2{$&eRDKJw_VR3@F zId?5qAk;d9h2y0IKQI%iWK-d9s<_)($|e-|Tgo9plFbmiRN3K!RoGL~XRT>p4~WWr z1xl}93ykxC3byvlWJ}s=k!xwN8or!G!+rlU-LJZlrrDb8yO9P|_aRU76IM&lTwEc8 zEVo$A_S(4sQu7H6CtJ`6PQI*`c5D-5UyBqt6Lqo%Djjt)2h^donh5dVr8?{%ntKp>n5y0s#VUe zWTf!c>MY~VzMai;G`GL6w77I|JA-5Wa)N9_3OUP{_quC?*dnCh=$5rhx4+|l=f(Ax z3IA%0vL$h;tGDXMcUTk{0y351l!>8OQ8^kgSccXQJ#N^i>1#3vSxiel$sYd%+uEN z8s=Ikm|Ym--i_hx5w5wEj|aJTP0-yd<(i=K7{FUcpg5SJEUvDD)qEMN9&z*X4`737 zR)2c-<+sDJ!~7WRN=J^wHqxw3^eMdxPQx7gJ}Pbm$HC%>NA~78nL`eOo= zxs&OXU<8V*i{$bz%Pg(nTLkT1Duc~SUy{v9_tgTMlpX+Nj4~P!olT*H+p2}y2#x#? zid@HStB1uE5uD>><%=+<^PM|<__}{Y?%|0M0Nx%mpvapiAZTBfPSN` zSGm&j)8=IiBwwL1N_!!%BOgJ)OU+2CG|c>c5WePR{LOw49*Fppj2Kqa@$3bNvnh+c z{CH^&e%c4)(csAWsFvoO(bgRE)=#&S&$6e&11m@=UQhL5mPlGJQd*6uq%wI5Ih_YH zwC7uJQ~D_D!Q66sGuLyJ8~sAL(kr*DJOinunqy5EHOU5AL@S-U@%%A??b9d4Q4stc7Wi5Jq*k0kH~6icJP@on zTdJPG@X~D*OGp)@6HiPw`%I^c%}ynr2t>SiBY{+pm?25bbLIrXj5j&2De&J|f99V( z`5N5x0=s%UpPF{fhv|Ie8h15h5Z@1^A-SFqs@$azbr+b|6 zo9g&?c3cB#i^NZIJ=1oRLw|z{jlAE>PnVra+X;u@^&UYb!`*hfm!UV;@$a#FyaH{h z<3G)|z3?mR_`@W*(<7*t08Ej)(p^ptFRB+q!tVC!WV9YZlbz{kS23hI{$p0U^FOo} zv77Db9d7)W)C=BX7usEdV`>RDQEHC72BK(IYUCt&l;`k6koKZ9)YVOkafirrSBz{x zKP$bK-f8&`a;IIa@7*rnpzgHyukYPaehBiQ(>_3X+uzkj&*B_v4$) zsSGDr?P8Kuowe?AVqIWkPv#3kQ7`j7<;ReGPlgAV+v^t3j+dVW$+XO;h2-4tf2O7e z?1WT7I`e0c)X%HkR8C%svSfHFyG~K<=JG7@Pt^4UjZ845PjZ%_L-+>V8-R_-+{Q+KaM)Gk! za7OY8K0{+ak=O9p59Mi&{RmI4K9ibHlJiM&K1s)?OZQ{vo$>U}HiDt-8c4<7&XEiG zz(P|GMsrxM!cg4oH%I;x!_=kfj;3>wdstmq!Odqv+1+8_%J=d)C|7nZ`gscThU_S! zNJOw5ST;w2uOr@+%Lk*^iG4=&I>*u>8H$Own=TfdAV{~Mp1DL(*af%8# zmjskEn7sr6MF*b_A1E_c_F_Z;)i!5^f~|qlsfe@BFndLP>>BtrkM7F+tsPHP5bv6r z91ey`IEom@PPtqo)iv;2#AyWjLGv9&GsCb?%U+4Z62VYkIC9$d+@#2wek0wh&XG$n zdtl(PRPVjU=r53EyKO#vjdVJDIYRZtjMNxmK*~S8Qr=T&x%QOM^iB(^DeMe1CBFe9 zUi*-ob@50;PLKw2P%*2vOi*m@Q1_L*SsF;;;dBpTCj;ePc_On07=A+0(%#=pUDV9`i7neSZ#) z9p*ipioG4(ZPq6GWG?{^X5Wk!;1b)WgIBBH1Onde4|s1SAblDHY(l^<_yc~i5|BO( z0yamY!?9tSQL)}FOxLOI{|LNgjIyHDHRle%nngyxveXJiR%4>sUi_}RP)6j5%Dz_j1Qt;R*9&CROW_5QIY#ll*}>m|K?)1}7(TSW%fOOM6%r>F3c9;sHQ=eGY^-M!S5??h4hT#uRB z)5FDUvhW&kuE6A#U`P8)e*tyON|ixxE(gWhDPjl~`<5y9Vf+Ynt$>_Zn{c0bJ`5fr zb1HYe|A372EC?INh79A!#N7pbVyyHxq-6$*f5j?KI%k%tmuYl*u-0;3ym{`Q<+vUUR~{oT zl5RTcCi3@k!ksQGCWvRTARer-oUjLL64>j2*X6;Q1@>kZF5T!7Gys$?yX-9()(%dR zSX8NvT@IfeRA$((r5jVi6!#IFpArS^qdWBEapgj+W29Yq?T7{}=j~l~81Ixn z2K=!(@WBAP^bE?>nSfTg(Jb7KoY;+Xu|3h4Zg%t2AesEJ1eKv7LhWer!A8*!F9ETV zSqZxzT)Y&lgsmVf0GN)t>ppirycdo`)|WURZUZZyyPF|SiA?{s@Z%`ZtMMKY~>%uj|aZd149$f*J6q8 z5Lppcfcztr&+=G;aTEOQ8uWs@lm#Cl}Sa1`c)pP=&x z^0+DuZE`p#%6m}EI9~nhV1e*W$v2S4z_2!#lJJFN71dxkGm*=FS<Ot$lydjGoLq_0Il&s4_JB%&=qo5cyiyUFOMMw*+2JyLSpeEzEEg2O& z7*|8CQnKdg8sqccNQd*O^A7e*81{1la;E5k6%8B0H?iOeGX~SojMb7rqhWDC9&ivDcOIiEo!+4q%z3hGyr#Z1G z`2y>EXD2|;`Q-Ld?RgzMgI$F;x=alLc61UqL&r))HjDgC#8Qc9JSH*i=%EHU8E@m* zCQz?we!LQe{XuIPuB50VMjhYEI>wW~cqWY1Tm?lpXXREwQ5IHd6%_ly ztjH=TW-(S@6%>`uN~?mRDk*>oH095{3$qdqraoQ!__80+7g<^wX# z*G%Yr0Y9dLzx&Y$~U-Y;c55$AALP&(H!hgzX#6yRY*fCX> zG@5Y1zSzqH))lWpW<=}Y24{W2f!g5JzF?ouLd8BfBY`JGnE}`p(Wb)LjUOF`Wx(I0 zIR;!0z(Ka{s+s7TH0^+Vc>PMIvAhvVLV$GZoC(F=3-TiS2Lw#yYJ( z`%>e4;kCF?LowTHZ>{VE$XJukSkrU##?>HHnXy*AOl<9x`NM97?xDPhPU4Oc&LD{v ztFW1I)p(A#)XC%(2#2DA^GtO&iZ`o8=rok?d>+aVO-~u+Zqwy%dyaDdhbj0+Vcb5{ zQ7yOF4&{~vj?(+vBVMPdBbT8)D1+Fx2sm5USGR{%c$E)F2`aTXZz2w__5mFwgw*03 z01kpFX;fFMRrsz7Y_1!ax?Ezm)D1jF1-8}=EULh^I)SM0gs$+!v=v@Gk&JyE(-&?i z0NILGNG95oiH_`rc1NN!-gzkbS(kq&AmmofQFceXUFOb2$|^j{3?}0#U)v~-h`VOV z5ffK1+-~1G>yq8Om-|~s5bO@<(K_so?%^vAW`TY*&{f7zye?h5uK%`pS9nx3_fI9d zvu{i$dhG5*U%c;7@?NiaSXfpUuRGr3P{>L2!a|+dpAqk!u6TcyaMg2qDmtGkUN?%@ zZFlz#Us_wdv@Txyg%|G{ldZS-O1F}9@oLHtpXp$oU?nn@BPio5hHn1C>p;w&S?sUV z!_?40;JmtlH>sFT-N4VOz{BbW{!9f9)C~;1NivkJ8+e!s%+(D%O9c+r4ZKqY4%H3( zrwW{3H*oD$k|FG|)EW2JsKAAF1HY^ShwBCkQjS$VKs|XD!5C0wpO)NkG1%0QHmtyRQA(3HT^W1 zn48Vpa})F8^A08N_eL)`##t;%e)xUxqtXnRtyIAO2ma-t^JnOU{rD?k3w#Cezld)uz6*7_ zF8mR|{rJ6Mg})zPKfVk9DBynlXW++0$HtmiCB6$k8E`-TE%1LC`8W$}9Y1{+em>wX zKJ7+^QLZPjCNd{4z${eif%ZW^F*t)xa`%{-a$rhrm3j#&5?*-HYb6EH%LEl@UyV*J zLYE3Oi;S5|m^=CPb=YjEFq^m{S;>`s zpdzJfwD#cGuGtiE=7Zj{U8vS%^C+~LMkKnIA!?T>=yWl;3RuWV`La-6C90&b6;n40 zg;!MPwPr=83$?il(M?=7rG3>?xMCW_r?80e*JI&^X%M*)Q-OGAeZ-xA2jVovx_6o= ze?b)A4O((?z@PaaP7{w?=hGzh^fXbp!#+)v)@v%epRUWDf1W`j5m>!GX8@4&e7_eeP&XN|uZ_wt2z-S6(RenIwG zzsh~q3lU-NZiYC!xX=1}_!CxkEtc$WfOFRuE8{%CIB%3V3~??-9P-I5H=%P-XLC&B z{1Nk^&le4TqVjOj!QuXc^AkAu!U5(V%6Phc4vOjTFDjVkLdNRjQA+TdcVmE^gzwY% zHsS03BcJ&NV9(+Y|BVHjH@a{WyayvucqSCN%qR8>RVJ7$l7QZ(!8jVZR2R2Mrzq~;2zUSIxbj?-otAf0-cC8WM zoPlk@U`URzsk??gg#!Lc_#@awtkj1*YW|p}Q~0AY3%DMbfw8Ok>s$=nt|L3)asNp;>Er}K*Xp&!-X5GLZQ$Sp0}HAASHt_1U2l@c*uDSxf(kc9!>fK)saIx zAHe3MqHu{vL1TZT7Mt6p(_sI$78{Db>9C{MmYIXpMrh~PrpI1bi_IxLUE%rC3 z$1c`lKjdNiYBf|O7=}_scD_I|e<|uKYKMZ8capta2A`@o)hT47l?T+H0E6L(EDort_u7ukiQ~SIzHQ>Ha?2aGWRNalnevrA&j@duU2OmG(LcNB^6{m3z*!nxI*EOPD|StskPQ%h*BbGs+Gl5l$u| zqxYfmcwwg4VkDw4pi)HybMM(#pQ4(n(gM)x+5DI3xE8w z8rt=jZvOS+uOELDT}JVj9Ty`{n8K|PD@iyO6>dVg;K&v}tsJuo-&BsSLf|?HYAcK> zN4W4haoA0~w3}J9V>a&J#uYJ_f;u?hLttwA(S9myO0}H6Rb-1Q-}dnw4QmQC@l=r1 zM7PT*O3PSxg*PG@71rqsTOoCVYH7(XH}&lyrK1?ZEb4%M0BJ zPpuQIY?Hn$q$QmhzSj;8hH->M!V_(ygAJ%kyR9@ta%iJZfl$JZE^7r`PUk1$yqo$x zs70uYce6bb2VRZ#NZ@j6=V`R=7^=W{cmqIA7Jb7`CtXOV~ouEQAmxfYQJt58} zW7F`D&Bmt6&T*Tk&uyNL!n;+~Hx)jm9D#P;OOi<1$y~b~hZZ)`IItTc#{!o3LYL@H~?Q_f;KJ59S&nhk&@01W=};0$Vlac);j zs@R-`C`t%4=OeVUr7XXS?f6(qa@Cw!- z&Y;maR7FfJ4)5BG`pc%|23@-g!+u75M)^Jt8Qcj786;sAB%p9<6c zk0iS6t}Qx+?c+O9BiT{r{66-V=wJ>8+#GhW?Pd>8m1&hoNfS&edW`oOme`6e+mG&H zTg9KmIEeXxu1+Jl_A2R6Do7Q7J}GJBJy@ihrD3U%-qEAk$sWRFo9MIqfN>Dy?A`-w zP&uUsF!8GTQM9V-r?-Cnq}@91J7hh~Y5ZEWrE?iNSt1k9#AhDrVAb0*ujS`ZlD~Nv zG{%-;JqRYlyxP5X+V0!Q3>1Hg9Kn!D%Q&oIg`sPt$dcGFGSbkNpq(jhLZe)`6^_@4 zL##UYn;LZrXVmUTCHjpz6%mHu{x}^XcAYL+FS4@e^t=u!*{q3PyLXGO;_c%fK=)KP zv!lg6%NCmzT}IWIJ*&7Gc}lJwl15TKeUMX z_8KNB9XCE_=Se`V?zg!8LF#BW6_Isnbaq9J&UUe}Y~8UtyHg{;wz_UI3g;Ywb{vHW>vV<5T=-Cq|cn@r@gue1k> z$FexN19))BEFK4Ua*4k@xr*}SRCxyNL6j$J587A=>G7hf~#M@66A>0njJN zYvvy~f<^o#+=+$uLI~UoQ$u)JSXLYm4w?$zsF-~g*b8!t%_8a8^X&!pe267*&m9c* z<0XLWHcxm(C#z6sni|Dor3Hl<+TMl&E7G571F0FzuYa=}mEFg0y10>Ga(I9OWc!t8a zj5-3rW}$U24^gzZO;%bh(0PESe9$!{6-A26o`K+{N$(|VeKRvR5+8A(U5SkyL@3<* z;7%-3M=%!Ki^skSu)R33B$=2odKcYG>={#urS{UoI1-94+WAp*GNqTinI+y0j_jVk zxQO^m3&$wLk4=wwvO;`?Lj1Ug_!ef=pJ(d)!{RF8_8^Mq(8z=_4qT^A6OH zy~=@=K`iIX!Wd>UR8xGJTJjx9Mp4-}RevmZ)x_$q1f-&+C9EaT59A2T8txUX@h$2X zNtm2r@qqa~7KQ;$`Jm$hJq6HCA9N+5>O@Av@n|CB_hw&X zpaq-??oWniem|_;mqq&C9TB%-{3&+$P-B2+JaJidBgTrjP2+7%+sx)B#$9g~*^0ae zO1ZRFpc{)j>IGIs4C8m`A1ZK+Pq8Yet0EW|2wQvB3sDUe*#R`>^Qi+!R9HAT6r+h- ztCBis&pw3E2J8BI7+8h>&(miyLJ}rUE zG;OPLZSGG(r;D|@pR7*QU7J^sl~Tw?0j_KsU(S`CEdIDu&z)rhm|VD?=SjKfO+>?k zCt#&7Yu+VmUCd;2c7YvN7BPzQwzN0+WSy@ zs8?A9HpnV4(HI_FZ5Fwnv>S^BkVw5%j;gNpYfFk;Q|j<^v>pNpZ?Fq)|j-`cj8k^jK1eH|b;5P0H9=FlvBYys?VM zu11!mmRIhEixn*^*Ou_$WHQl;H>z;ztwpU@+thj$i$+4%GC~95z`HxuB-Gu@iJkrOUdPg$-$bKO|0cJ3rv@!aZyrBKr;8_!y)9Bd!H8TZ=$W!-6kiGAzQJPahl{po65EIGR}-RC$Wv}B zt^B2~5E1Ts!-MB06MflJ>|Q0(_lZcKNZV;8){pqa`aWOZ!LnS$@xCcw9$l4_K9rIR zTtyT8<=xpymQn=pj3hY|tB8yeyJw2notTB?hZ4OP`O=)}OB1D+G-pl$_4w+lory$e z+A}p(Bnsw6ft1D1ou?SoSVUMoJs&;GzQ7^LQsB4=HDUR^8(X)MmdTw<-Oi^xzx6ghmXmy@7R zYUUkReo+@0wi1WM4|8rpadO~Wl%U~#JG^AE6_tV9GFat95v9DGa&V&`mR<1y=VnrQ z8BPi@j{}LEWHB)q&q)YgZuB@Jv{X4~3h4IW`l=dX!m^Y-Oj$qG#FXZ zz#fBT{1_@csBJwP{R<%CsO?41I{j*Z@N$uXmiHT!zem7arKnz94)b>tsv38#MclC| zxOk3a9b|(zOkA+y$(G)TUJ_{(1Rd)gs2FIP-v?df;1;WJAMHEB!#5wGF&wI{IUE@e9-9Q+leU|A}ewxxa8NG?M=OyBC9V)lT7U`}n`0 z3(8hmqDBuTvEHgUBBCq#SXT1ws5lc6lL#m<%l{p+P+7@MgBz2H=In70$V9{5yq6kw zC9N#53jboBn^m1xV2FTHT}JGXOmLq>69eaee|3hNrp+*nM1r|(yZF%^x;1|gU742p zvu>!)cgtY6Rp2QCyR~{mS0@S6{%PvygmN9(j?BU^y&tVf%Vr(LQAcfRW{&SIE89>< z$0C9qS9Mg0!P(fCJ7vnOU**)q>eZ1wZH7-_hTkuZ+OFnsn6B@v$#DDNnY2Pb-cG1_ zy<@LWorWA=%^Y{A99N=nF0W}-ZCkFXA;-5@S8@BaImSveICiJWZkSTCRnjVatR}~) zWoH5>ndls)J)>24ggNX~IZP_St8*_Ez{Qu>sZ*<9y>&W#YJ{uXz$zRyEj|^#wfI*~ zi%-RHE&f-g#eYRzeCx*P@_%Yw{G+DDrz~2VpR1?EKdmnQ!_(rQUKc<4w(0UeQ5XNj zY4O+9#lL=9{PlJ4?N0C^tQRQUbJt<}_#IH6RCikFa;M=7N3qkY394Hyqi}@c0c4?) zcXsOusz*;ye_$qir1I@9wNmNX%WWRnEUO+?R>8SxI(#m}YVpsV7N7e*wfG;N7N6Tg zwfKLV7N4u9YW(slr%Tpw^(UzAX)F0tyQ?b0*91pimR7WTaX2=Rkq7> zwAFnI2VADx2c@_()j9-I`6D&Oow@7=;8=y?MH$0J8?mO!preA(22 z7pOq4ZE6D_R)Mdt8yJ}qvKQ6~tS;xw>B^~ed%1Yz}ms$`j5L=mFsY*A;K*Ni@V*!cim+_7K_aKU#8aNiOk9)CsbXatp zr{eoZrgsd|^O9KaB|%rb!7S3!!NF24TiT`5VFWGh82S7CNvPPoKQm;k1AV9sY>}Kj z`p0B4n5Tzh3phl6yyp{qopkwu}jt&&K$;xf@+`V&zkymFk5be?89C=kjKR8@7l zmkwR5Dr~%DOL<8rP{N@Bq!W}lUQvF|RD!y;6al0{eekQ02KIIBU1YLeSx)iNpo?XJ zmMvS_AZesCd&osg)cvqTjOnHHNq>118LvE8CK-QbT1WcRTJ5Dp7t^|iY5fR;n$(Hw zQU92qx{4^}2+5g}zmPU19IqUwdbH_cU0qAs=c#hE@1Y1&q8^DUF{VnX7Y*~EKPg3r z1!0|?fpYwnX;EPH(mKIQi!PR957SyJY4z=)j9TL6Fq2|LuTYQpQ&Lpe&w>W)3u`TV z7v)SZotJy*(8YA1xyzPbrb!dmBmEmcX%$hoJ8A!&w8{59+G{=9bdmO6(*A{R3*vgT zKkuilB5K-DfXF?#vUnH_VTdOO0{)eRAuEYfRed&)w}}0kd1MeS2%K`2e;nU#{ADv@ z6BNsK7tR2KiD6InD*46=cgWXlkFmZ?<1k=9iZZD?s$y1ZC~0+$biu%MHgwYY*Wky& zdwg=86zu_Ae(^iRgEkcLh^O|&LV_OSWnQPTDgr6zdRE12*_?rN`yO0sWR|wW7i|m| z`AzO6$i4h(E1SayPnEU-vg;LI4O&oC`~g+ShgV^rO>>$iJoAt}Dx!>ELSp=qz zda~WxGBP)ArAj|TTf{Au%xg=J!RJP>t@qGg#tuQ+g5e~L&1jUfefYz>j`mWG!^Q=P z_DlczEXoZNJe!&oDI_#2??8$vxbKnC_&UH#i#8i9T=e zGCI|HgV%GyL>m_gE8K$~tE5&1P}%{^t3{&00$i{T3j*sd>Vp)(Qc=>Y_8f->Zrrto zW7b9fN?nozf)tJi^83-=O_AIJO`8Y4(BNgc$l2}9{r)@+OuiEeutadzY9uxWvngZO z5pd;p;?4|o(?Z-j)Nw3wBjGkwUHNx1A=UdLgQw`sCc+X8ueOEbk^G0*;g|CHodLXd z61JlUSfKp7kkVk>2f^8w+W>Q4ukeebBOADFOU9`j$l!6)99;nHE4 zj539IWB%Qshw5Y_*)bPxH%{&cJTQ3|np({BT|G~9_zM-af!bzN8t1c#v~;A-yo{l8 zel7ivDF2mxJ~u~%4^`Xg^X-z0(ZBvpx;*A`5IF>6J>q`6_%sDOyr#V$0W7sK_y3^8z8%q(^~`Z_;qLaMVG;yaq_7I@0pn!oPs_$$k#1NNLUN=< z;p8mi{K7T(u_p00mGvHiL&{QCjzB2d!*^vHO=lmuEXkT?S0-TN`p%ysbEV@6DV&Ie zl3j@VAjp)C5iDQ6js<{RXPH@~6DH!gJ3fj&hsTE|+-UnvCj?Ng6-825+Ac@)8wJH+ zzejJ+uT1eMB5owltT7tyd#5^UbS$bohPILWY37)v^5ja3^DHP>$^(|}5*~qE<<9`1waH*^ArDCZtH;eB_>?r#; z?h>~gJjr9_*6Uc0joU#ydDb^^;kNY&%MWbZ-r(B|R6xSE zHDz(rn?hDlADV2iyFFq2G!!M`<$Vcw0lQwrhmWctNbQaEENC>AK$Q89f9#rt_p$R< zkBTo&;D!!XN%hDmy%O|vq@>&9Pb17M@}stT3YTmIQ7`-q70!u3LgRyU+qxse$V~`;ZTQ25C42@;jI@qurQpTij$f=4Q|})R#RL-vvW`_&sxIK7P+1 z>dr371d^bXJueez=l9G^uY4ymAMb!4_r9(}zO%<x^A8PM5zRr9G^!@ zrz3@IFED4dHNIg8M}_Ek<4B_^XcBA|iG%}eoiZz8o@=^=_FyqRT5(jSFaSuZ3@J?@ z209Wyt}VUtrL@(vcSr9Gw5JgdH1-CXkRkkg*34xC0W7u~cz@n$fE*%!@z|2{FdDVL z+TS(#KGYiTSnsmT*;6;mzj49M-;NNuaJ_5z7gqlL@L8$+2k^ndh-pBkF`h*l8Fr`4 zg~nPV>FXv*?FsC<15viE-x70vk9PI0ShcpTcc3+iZJB5cTN6zZ7#{wI>WsW&4O5KO zFW`s^h8U^4?CaQN!`LemEZnl~d>h3>lLoh^GiOJ)pNZpJ7M*qo?%3=-zrXvozklVf zm9(E)ci}djr}dHWx@{Zm$c99tuBV5`wWDp7J3lmTa8{rM>j#eQQ4{^c=kv_?li)K- zN5UQfi#vCp+dtV`zR4c*E_p}g%d-A$+n1p;=pALV$kB(FWtHHH9U1T7wlL@Rk)?`S z<~v9mqg^_#Rk*550-M$U1D|iR`uE6je~tbwXuK9O1>QHn`iQi-r1Z0SvU;wZ7Xu3v zg!L0Px&VN{j7_~8V*$KU>{j4oK%jdQ!vpEojkv=(im2dSa-jwK zu#jGY?^^twgg*%CvS7>Z&<*j_cp{vg)SiFPbFTIntKeCuJrR12*Pb?d+?MR5XIO`1 z=$WfM4n3XPvw$AA6in0(H>sjT+%hz?3_Og@c2qSV(kvr{B1*ZV7jCnI7jDx;A0A&n zp`A~SPiz?Q+!#VQ4<9gA;=34QNZn&-CbuN>hhb3koB0o-%^S0AR`^?a%$FV{+%Xgi zr(+|(5{6iQKasPsVHrb<46*s-9f_9&P}OW#krfqJT(%LdrV7xp9J+6~Ia3b8tV{~U z`54PhcBgE!nR!oB<_GY84`XXAD%eV1z%%DsN?3I#)6MW!fQ=brfnltg0zij$jJ(`G z-O}8UVvCjT*p%U|CmY2y$XLBW!E0noNIplb@x6ADy~s!4*%w1#?7t*XA>A_XA~$8Z z-Vq-q+w8gu-*Kv@9Xx7o;SeCvd`&e+V3ZI5ZfMHi;O|gHgwl9 z3}t26EK*?tQbuU>=csWlDGOh;;t=O3Dchk+QF#?kS1Cq`jETq*nzFH|5dcQDYO4dp+K&V;5w)Pal443w0{QZDXsHU6w~&;82ytZ)AB|1LLi0(#xR zb~C-RI_&tvRT%KeFU~?Q3y@#9`UF$naW3sZEj^4Wp!zLmERZ7Qx17Ndh!|DRIY*R@ z{7(r~#L@+DCu1Fr!Ck+uB>OnYepJXZ#JPcFKL$UvRVU${ z>5s#ioZ{@4r@ABEmlEZM5&%75rw^D2&kYX+xvs@%V!D)!t^D_q5a?|I(;mDXLahH8 zYgc?T8bp3O%$R$k`^NLr#;Zd|KVt@=h;6zhk}J=sH#1&0-p}jN@Lb-0E(Y1~50uPyu5Y`GwZNPNq9e z#{zibk$_0)F)OL{5`$*PKzKWrsAoggHjFd33<03_2yo{y`Yw1ebglOwGo?49xLU#b zI2sf0r{RU|{m5GBYJ?;kp-XQb<+W`zsz=wnZVZZU+|2AeL3RW^1JUrb*M2-tK9$E+ z={U=ZXG(@}>rUrT-{>cRY!;aaZ~~Jy@|*t*(v_91MEL`wK!ixQmJgwKB9{AigwIXb z5dH|`H@n71`|BViw6mxApbvV`RX*sCJSgN-{De<;9h7&f!zm5>J8H_RgcM`jTXW=mf>k7u~q^tK@ za00!@uQ$fyw^pIyJvpnwN_0&%1}hyhbCoWwBF?7jIMkCqPn^rE*jj0)2mtnaz+`=^FacQwyCYAemiwv} zfqF#xKZivAvl!&+Zk^A;<=(CHdAQxXbq@IWAGnl>TeQ0L-BgtKThZtcr0vOjNr}qn zqq$wO1ia^4(6amiUBWp5T9iTa;0)2b`~yWK@5x0tGu?++6#Vr*iXBR?8vc@7VCQ&5 z9KLJv3qWeL^7rF|CC%Z`>wJ;U2yQmXvt{Ga{FeZLo?|d6`M{|o9farEzl{nZU+FYG@O3`zWmqlgN>CGo&@`?Lp9ma*G*qgD^cyF>zW=Zt2IAeI4-ph}t}Wp|T_e%@WK zDPF{Kyd-G1Bu$5W3=U}>*O#jBbyoPg#3#AycW-7v0!u$+q8W8EYy&D)PbrtnZk<44 zGsDT`_p*mK7 z4bF)*kc(;{`)eQ%)Ik1J18KjlI`t(rko7f?T{V#XHIT1VLXrtP+leaSxL2$~Rg#Ul z&$jJ!Z20GHrIys##1o*fQv{X#-CzW{KB)N#Qord{`I`XEf0tui@D*G&hz79xrjlv_ z1Piy;jp_DHsvCRIRxI}WHcgan}h}w*2ad;lP5@&38{)MDsc3e3cN8bTzkv_&_9{T)CL&QrkULuKWjx@gMP(I~> zi*#zp!f)5e85L1cIn*y=%L!K?L3f7ze;S%fYb*96qR8+a^O1A=w zs{?X$e%S*2a)#iSRQTm2!7q6ezw8bCazfyjZOt$H6~AmPewjsn+3Ngq9^uzbm+TvJ z6lH+JQ6Qya9q3(O>* z!rij24O{ftsF^ya4V`x)#*jaWod@r6E-?f6r{~i^>D?%|8QAq3SE2DF9EYr5VbYrX z9=iS9-3)QwicYfUR>)4J1H_+25~cUhxf3=%_O*A7|_HX=C530!>4?p5NSU-(0+2C zg>`p$JysGINK2sb5$6B|fbfPr_k-fefl4pVxi2(NidxaVBv*V3tiIkADEn`K-wk^! z+!OCoBK=9wvOSPuPhoKf`pqJ1AnTr?aBsY%lrn|AgPrEF4R+@*KL-kwuT>~$(B?wgkQ?>jtNsoOp7`~Xe3ZvAbTDkqv)p0c)+F|OM@KVd^5LDF!8 zFsgL;`e<@tpG1#D@g8(j1a89^4n(p{0ODI#sR5fzhCn~5Izm_)+q9(VvAz!*mzdbd zXWgicWX=f6Mcx^3V$dC^D|8{&QKPK!7+U&7*-y?^`as#wRdwl(vY#vF(g(|ayf|%@ zsKA4m_-O%Ox4A?EA~U$_cWyWTt#tF>l)E`Yq??yMR3;^hLlIz83%gX_Wuj8HN$CuC z$+Hc~(x+Z;O5)9t3PUUa@8TiMrCgLp(ES@r@f<-f!dG;b~&~6FBB4;YkC4Uq4xEX>D zaS{v>qi7`rUbi{5Kwk|PFPQI!v3+Vnoh_2ffp%kDLP^VbktifPH$%LDNPudKSyseC zZTLE|*+DA9yUilAjR(1uLn+Obq10ijIy@T$JT3VV;F>${!mrbayeYeYY-@S*xg;27 zksl`l6b@eYuYp)6oopXjO?3WI0hw#vc` zR6zjT6&gxUm7;iZ$QVZ)%pta!8fr2-N7@R*KyE}^t&*=*IECME%)R{9s(Z1e(p|m| zv}}waZ-++sOA|^}3klA~)&>6k@#511Ug+su!+D$UUhHu2<%_If`1F8vdhq452iMN{ z?a!BVj}J#=4c9aLpj(!=A^kYV@PD_{zUx6uk@?veUd^)0o(Q^|?d6a}NWrj8p0EPt zUG$KD6Wz8poDN&cb=%;;jp^zeq5WoL;&kD`LE{qSk@{Vj1;rbJ%5ZD4Vv*bGU*47% ztQAY!iY4%LI7Z!tuU_yD;I(#?So^V@5c3JI>epZUZA_fb z4>4)D`nyqJsg1(HaN%rt_=Y995WL&y4Hd4!$FK8K{5vs}WP(>u+8O_H1xIdzUb=j@$Zmx9gZc1NdR=G{d%?)k00@-cGPz!88 zTbE-(G)C9pN9`5zxI^Yj)c=~x&^%C@p1WpLIns*{hqrZk7VH2H+!!1M8gA_{-U|H= z{|;$4HY7biVWWEyh$wT_{>~QxS_g>#@B13YFuM8WA7U+8cO<#@1@OHIf42wJ-xH@Tv8wRm(~TUTyZp~^jNXi#!nbX4 z3cp*H|49XITmB>icdEdPmSa1SSfzETwa`SuDYd`+w?sN!kTOsu8;j3F$aQq!GS&>2 z6o~L66@lR8JY7E8uOdJ{VJwFZlGJEoqHYPk3xI#(kM+xMJN|(1UPbHw!8iI#1^N^~ zi+d3UowczXige-;xO^|MG~gZrcB#P6)4fr-@1^@(BC>OsGfH2P!9tOi+kEVJ;dJBB z3HWUuIxTySV*9*9ymJWW7`lh-Y@a#HFg~%yNubLnBH0=AKHzzq>HWOxh1G+V&H6Dc z6~V=zb&f9r*jLl&Ys_-a%CwtC*-OmMsvLI?K_!=tRp(15#6|Z>OwEaI)$qwX1oIJ0)ZteU}qARtN@)L zXw4O{F~WK)Kv;4bW?uye5`uyA5YpB}eSs2{E9lZxB<@+$+s+AMFV}6FV9l zwrolPuzsTSHRLNhoPlHuD>iLInww=>uJ-1_Z3@M|6k(iXb9v>cmU%N)k~fs0Gn85| zwQ=lSESl6nI<*{XCN9{xbX5zsdr2+Pn8is4I$>R9H_8Gn+6_bC5n#g*_!)>Hh4_1L zD#mVnd)cxd2Elg%Sok7-&@{Wp%R%}$43bh*)mlx|1&xq-U^TBoD3Ex^WQbZWfiBm= zU1g9iRC?9M+<9)1hF)zJ3h#v|Rh{3f0gNR7o9vdpiVPsj{K$%t`7NjJR`l-r6`kAa zW$CPnD!w1&XsETqEYfK=nRb&@apAD{X)za>SBHSOxK&8L8f!w0LCdN_P-CC+YK*8g z8C;kzgM2l%&dVN*9N7U<3y(4jFGm)<)JvZS7&+j_s{pfbRt3&y6%IdwgM%~eDq?#{ z!m17%d`97yyWHmh;9-L!%p#r7eb@kJS~z&2g607yg|Di{y$(o0Q7v~VRF3o9W*mGQ z+GNMNhBo3ggQ4|ytY_$zcC2^kBsAbyiW z^YGg?G!wt}P!E3NLml`{47K979TxPlbjK=O^uWs!vp%=<%Ec)#1Mm;(y|=E%{#?6^G(U7hqQ$gZN?&I( zP8{Xt_<3k&|J=?(5ly;(Zdc((e$};-&>6BIcH50*R`hba zt#c$SMrfsVOEZAXk&l7QQ zsZgC8z5Aq~=t1}EBXZE(ur@`m4~Qiz?g!QS8c|vE07AqH2X52$80_4`e-zuWka0RH zK2?iDIBmE8K~8*5~=mo$P0al3#|(TJ2(rRn*)<*`6Qg{5Z={6ZI-+;ha0Y)qB+u zKcpKnF2lm5i{%x&?OD%0d-1a|>4LCB!1`-+1jWwWqROt1#9=Mwt|@sYZtO?MI`*Y8 zhin|teAy&2XR`jyrj%7@bKeNeHCm} zTL5eHD!99fSMgxy^LbeQD6X7aVo3!L4Jp4b9bKsFHgDa4$(5WqT+W1=)W&W^-DY4c z&u*xjLQLAqrxVZ8&5)a@Xaf{YX2t3TKuR9mU;CJ>2*+D8O?J#*^;ul$%8;reYyHE! zku}x#W+SKaZ|xqyJYNFa7cHaYyV`(Uq%E&7c1vZy`Wr|nwT+^>0k5?yHjDFBA`H#} z2LE2Bztj0$xcfEh#BsyiZ}uoXW3^00)b<<>TQsltowLjq${1ytuL|cxKTf468SzBP zsyMKGm$|ZKs@C$o1>!`D-J&qiyFP~AWjA|Oyad-Can81zeHjJkBup`0;q_zRMGYvn zpJ)T?l>?KQ0PHF5K96y|tS6MX-28kayPU|xa>cPsB8fyK(QYU7#G>#HaL!Z@XC>oF z=Z_qgd}^osaMth%xZ*)3Iva{ZnSpc?@_1HGh484Fpwvl_qkL)cGU0+3NAY+&RnZ@FD|GDSk`X->rKYAO=+0L9 zEFJbEyf}FaY|GY{413eprJM(vj5Sa|bdw)}$hGVKA>EVES;R^|qO(t-{Md)` z6QBE0pZlQC{ZqQtIl7JqJ{DN)=8w}af<8)?vF;e&3Mv>=&6Zh#+ezPu`G5-eN@VusYKU=l#_(4>@jAMm2X>xb3h2@-5Y!=L>K)4ksg-_vUma+TL+M0Er z#D<6R9uP_%WdLmqBJDt$=_mIsq}p$U^*H2wH(-zjt;<#og*cX z|1kzlzZr0_Eo2S+%Z2^~&>ZHpN*oSP*tBE1MZ`ymf(cQf9E6YKG;D0b*yzDHO$E}c z*Tbly$RT2-S4`~790K#J=RhG1*2R_XD@Ck5mgu z{u>V>YQ+{dBf>#MdhHy(1&0gv3BTqTM^e#=sllVoqUV!3$JV50=3QWgvo<}uZ}zfo zM4gCE^ny>_gp$jx7W;i<E@loU&J0-lW{>1?~ju&7JtcxmMl0&!O%lF zll#(}hA=BKFy&yw71s)>kkq~ymL+VGh?SmL^&Rk66_CL;rm@c~k}09N%py74b%P01 z0LzCpp|C#TcLGru$^1{z3DCHcn#>TRrK)w~J$bk-J4piWC=Ro6lInaLQK=y)N);N4A zSge}^ifU1v12Vj5MGkZ*bD#pBI|mxa%YpVY2bxb40uFE~7br?rVT)ycg?hpPUk9CRSIf)=qff2cF&4^|G?oo=*1=lUx=48&r#jXcGP!t5mls1qUBPVU1ad!)zT_V9i}(~CpTdsjE~Cv3`AgW zuxI{*ER7s*7AeBij%E>T^k}AAjb=0H%;3Z!0qHgS6cL!G2^jn*X#4{$1$oFlcP|1^ z)qd}%QOVwsdP+QXp5gX(@xM)ES-X3n)Ca0Sc&Gb1l*aOz=Ub8PvuT`v1#p$Lg>5_c zYIvVvKE~!zK#iWM4yOof+dO}M1u4bP?BL$pAmSCyn&nbl=24X4mTp~mx6Y$5fV91G z3%aic>57⋙ltwx(HUGwp2Joj2Wh~Sa#?ImJ74Vu|&45GgT*$cCIZN!FG81qPg=6 zN_UqoiYvaMfM=EqsCV42∈E!1)$rTRqFj^e{J>UV4kOR^}Vg<7`FA_|Gh|2beoK zAvvQASJ5)YaUip-4CsSB^YXGc!#y87?2&L_G2})1HD;|0e;h2ZTxge`=R}XQUL|W} zVPxGaeOXdI0_Y;g&;PYb-ytM50%1hLk1Uf*xdj^41u~12soLA~zlVI)KY*32M8OSX z$bmWsO#9f7@d0G4k8|_nW9T}iU$fw%$0|KZr@DJ?F`^A7%_2dC?|c2^(L5qURR#U4 zm2-oiEeD^3;Dd+nfSqT9x(v~2itJbb-(XK<$MyUsB0CoH+ZfpaIjEtX7I-Px;T^L3 zAB`inwdYT0j>a$&S;|D>Iu9q@;SRR}YddT^wk!CB-9 zEU+{TOvW07m?K4BfudLR2LEFg!ZwAYXQ6Eu{L5HX(elKsdQ5hX4*mkksTh!JCC1Yp z$k!aIPH`*`s$IeA`k))pEON9(?QmeS6Qe%=GYr7!7Av)G`+N*>A}ebo;pAJa?c;NB z>Tm#+#5)2Sj2Xtt>v1g^{Lq?{66U&qu?Bwr(**tso|jxWtTfYw`Ci&uovbsJ|0vM< zD^$#|h4;=irbTvV68WDakLq0GFF4ciLII4;$KiI*HR28uec)T$&6m$LQfEz(CJ?S9ywCEQ~OdQ%gn;- zkx2ze+xxC%k+d&f;Y%o=gL@rfrN4r#=^TbmnY&Sy-FXJZFbjJ@EQxi!b1CXiy-{BJ z1Ch-lKfzh7I{ZAaM&8sd{gGi3WESaGuj7gn3V<9EnEVC^=N~5ZTJR$TE4V{sos1GX z3m;%+dMonsl*$V~8tLOi(yyxP4F6dn@uQFqSwqap@1!AErOxkJrL-evO$<;QagVBx z!nZ)r`2&IntpbPgK;cpR>cH6_Lf`~yka~uIQAB0TL|+fcRj{d%R|fJwLWyGBCwySd zg1Fi*91d97CaE~F$$wzYBaLS2P@?n~W>fl!>djNS21y>letLryyid*Ib- zvR6TK2hIM0{D+bG0XZA9g^eX+n}ybkX54wJyQk&vS!! zWvRv(SUrPv4RHj2b5Ku%_=~~Kf0X^Uzz;ZNzta#<`WxtK+3)Xks#Cf}x(h}0Y*%I? zK+Q}JcBNvO*Y)An$zwr*SLh?Hp0MX=&mRN^Ya|vM{T!0Dxc?SwisYY0hiH!Ee?|h~ z43>QtL;{lzh9R%bk|ck11TT(7>^ z|1o!)#<|8riyNdVz+;%B0p7*35*2g{27xB{1PI2mNzAXmglk6+A~vFR!|ts6D<=3e zb(_j5(U!57p-n24l*WS*+3GiT+ z3wRUTd^NGNX*koU75*DDbQh=}`fAfEVUpdpwqTBu?NaX)Y zsF_T^%vpv;D?Q6Bzx{8KLf=Vb*ndNu>@}5kbuJN3k-Ydg z1??OZuCjA5izKaLV%F4AXMOE~2UarvNh-ciu|fhWiZ+zc7g|~4o6zaZu*$oMI;Cj7 zJ-rYoC*;Jsn^{ydL$U9UldRo3#r-(ao<3C)OJLtvAx!bkrxkXiUj=M8W{lm>J}VYK z8cV5dpgiC$nBn0)W<=%TkknaIc3pZk?!LnAF3zdy3WF+_q1b?Kv77t6QZqSX9bdQ9 zDuyn#w!4Z9?>D0=xdth6Yj$J$WSm-0w3&9Bn;eDaak){aD zqvDaw9l#o~BfKD+Lueo@b|eGgh`#zy(f$XbBp2MvLs@FG-U=*yd=ggAv5O#=SOyK7 z=gGXvtQ5|{K-X`T7q-%E3US%L%KwYBV%Z&L<^jZVmZDO6Tsio4ibGWF9m2$^B;YQP zk>&QkLBV+jKl|r)7p`EKb1OKPGmHW>hV!s=jOFmWA?h`j$}hoh9!ve$fE+378GaKM zBGlnQ&0?HQ-WY&N2AKf=9mGL9Fq~L=*2paIVhH-N)H)Z^W~CIUQ$2S+Aanvo2k7+r z=zzPz#5a~Rt$`$(SL)|(7e}gdhFe_LlRDkC4l!uVwa+UlTZ84hNgzETRYte=&h^!v zM{b(hdxuA}w)QHiOAV^}YjCUUZP+#o1Y3QY4re)Pi**<>{)!&zpxpz714u-o$1EW* zhKU?=b5$Ea+G5>|-RA{%mK(^M7Ixm6hwu~QMOoJY5f^27LCaJSB^yYW@4!$(hTbrWH7Q`LmUBde z(|4hU;;R*(ydKbij>ni7v*(-o407O(Z5Ebd_U^_Gbg1DK8qL?~pMDuKzF|MPcc}!EWXug5J zu8vUVlUtIhya_0+C7RRiO4%oJM>Nl-9K?}zTodwy@+DV(3oXiV8naTDoLc8VVuUraZN;D5CET(3T z0CEK}r_p5yJ;PtNBN^n?IMmP-8Jwj{d@m@#ra{;xdxlyTNRK)=>Q+m`U0$`!(eWx( zcv5*~6`rcEEXIihtSv|PUHx=0l|bhpf*tc&bRIM!RQE|lzq*ed1ML==T!g~sgD9Os zQvFW$h_R?1|0UIYt2d$U@NWnHBKRxeuN{A{2D8M6IyB<~eBX*M;gmDbqvUSD1At+1 z;H~ulHZaW^_W|~2{H5T|0Uv7*W~oYV$ZY5Tir8hnA%umx&lU2~YEwGj3l@!3*Ie*5zf?5*q?U@fCJK@- z8d>Cdat&rZ??ks;Ekt$St*C|ljbTo7Zw98^2)QeQA{6dK2(C2RjY`W$0pK~p9QbiQ zMh`XV*%Nu^=M;o!D8CDdk7D}uu(>zVo{bg82yH}+9hakVI5=`~3m2_50W^qP-JVe=4)+s0aZ1!aAO@u5)b8%pEhyCd^rMZ zbQtAU&>0Jf4r3H5couwu8N*EdTp5$Jt^B&_)3)+wyr8r#l{UC7(>{}FW10NCX@~P? zO`EprVY+N#Pd_6xpHn|mt{APKxeENVQa{6n^z<`A@ym7lH-sctXLc@%b}>5e6Znh4 z&41vRq*SG=5#s-sx*93a93-n`wuo^r^1y$t;b#+EWyKw+eZ9fj%)>f@>NkT6$gLQkr27IRynxOWlVCoUvbXMr02 z&bo-5E=86fuSbz0F1)+c+q)n|3G*YSWMiSTE~1;X+Izqa#ARBgMplwpK zQ%L+Mq$1l)<*jlrgL#uMH*fT)yrn8OJzPXDZ!Bl^CQXFt7R$fYJ2h%!Mq%iTv6m$a zdq`}CzYI)I!rY9}g9C}I-MWZ6W86-$fhyOsh=Y2OKY<$iSw&xQ$R0CKVY(W2cUc|+ zc~jtJp6#w_HehT(w+&fMD9wb`;I&`HA)A!^I#U=*IjeB~$FW#?kERzRs?*K z0fh(nd#oA+vU%bO|6Je9$4D9S(tgg-B8G~pyQ!S^%JAT}#06{o7HQHaQ&YM)(dn?H z!)aXEbkGAc-RQJplx}T=Zi5GB1{?V>BPQ*hNVXj?ZbpRH&oWlcIHDp|H3)U8&0eYx zROU@ar<=Fd=fdiAvFz!vR5wETcf;gT+Ag88zG0Tpv-B9>(pilK)`{+V*ix`~*y;Q= z^@`cz71O`MmySy7MlZPzm9sj@$v{!q%2+ z}AGfN4dyMyk+kI)yNlZCefO|fvbAw|DgBvHMYCnQ`Z zO?bLxpF&7CV*~6=rwv`FgqvLvjcFzezebw199zO%4#12i>+HvpRY;gZBnKd6*-*uZ zlFV{DQjaK(r_FAiNN7dYResO~B-;~iwohlaIf$w{s!CX6?{Kj%5bScVaOc=VZo2Ni ze;2Dj&#OIj7n(ltJeA)KG*$T@2Q{-u63I@?pA1l5J%38bzD~}cq^jG)*$B4hte4r6 zNhW0ytgU+qbL*a-luUxPv!#S-MAbZ%vr#AWWfu7nrq2fIg-2MlILM;EhYKRhIddpJ zX8r=+JU>}zN9J+90}vlqR{P>;U#X9Z_6-=+BEx0{y!v@-NBE^=QE=0hc56v`-s=gGkrlVwGxTX-|hT@X4W`V$>YEM%i^b)V=W&=x9 zc$WmDGjUumHc>g86MW;kkJ-|PesGJhcP?lq-D$ncG0TTE+vlD`cj4~m>wg)bss8s# zEDFpb{brFVyMzDUa%W37JFh{zK@XO6Y>xT4z=Q3~GPB4$g$rK;E_4#*i{ZjGLY5$^ z{w3Or?&14k+71dVVWjXRC}8KPOd(PuxCo-6AO@;^I0{^3H6#n?tOehxk-{WQMMyRC zZ~_5QNh(@SC|WmORK-)4vC-i#@{XcaW|1{*2ZaQUy~|YKs}_6|uA<{whW8DBhPpFQ zVmsla5z9@3R3D{Kg{(-vsBkqUz0C(o9D-~Kmq$vQR*fMWx;Iy~4NtIi$HCNMX`wlY>T5>&%uj>V3t?i&AXWK8+#)h{-37b35HF_GDcQ0B}P z;4Ra}Z+46A;~dgYQQ*v5UQ|q!HuJ6*6%$3xeDFoZ>_*H_zo?i!i20Ql6>|n+e)~nm z>_yDS{_B`(jGO5l(>CUF^kGJ3AHMj-MrNyC`&@Z`p2XR=&DV_MiJ-LVWh0hh9Q__Me};$oQO8+5VTk(D)U?oSKx`{@1^R_-y}M zUqXDg{~a$OKHL9OFCjkLpF1HhsQ=WdKej*j2w!Y`w*SEw6<@980tOb(#zK*gDEkKX zr7s?Vn0u%Lducs99W2lk7mzC4UG`2M1yKn^xL0yGBmY%LAwB}PaiIp@RJr9*&a+u$IrWx@)~26ZW9>*BPn#~} zk74%oE=QS~w*NoZcz4*db!6Ns{kf3)zto>g4$AuTu<>J5ZZFrIJxZ@KfK0%RLE2Et z(p|U&1(;s10t3gxh-Mb~Q8ug6Jf$It{Vv2doyy8pOL~c5?#waTljvNz(_m3H$Vi8* z*P<~d6A;9mcKr0i$ZD}!WY(<0S3wZ_l;x)K><+nd5FE8|&_+^UmDK`P4$KdAOO`?7iwSP}@Z#!BJC3#S+q&UeDsj>pwU z)>z4XgDbGMn`IVRV-YLTwZ0SQtno2=n_hJTdBN$@U2mUBvZyko@! z3M}{FmFm0f_2^au=i&lJsSQc5Lb*!&`FXnCP&Fu{XX$`VuwuDLx`3;rki#J$8{RLZs#kMFs2V7e-JZ$&UDbt_7=%Bw=Xpb|BT%Q=~7 z_TnnME2{Cj6yE7oc$Ze=^(eggRd~Cq@n$HzFxrb5Q1^`@QXDlT7qZ~x0C=%5g?Gcc z(m0VkKxvisD)iE7dJ9jYS@_6#izW9JlokEq&gCC7?Gcb~!ULqq3fgg?V zWg_^Bx>#ZGqcNToj8>1vn8M&kFsK$-4v%Q&!~wwJE_j3uCt%} z+*>s~F6s~97JwS@o`?X>l4`_4DFTs+@Mlqyz59YW>FcT~R$#I}8+O-zk4cX2K#weKW|3@!x z%=Z6dIbNS_zBk9#G6%(wT1ErGO1Lw+x;S8E+g`l6wxVCSKF9yA&w};la@<7t);4^l zMzAdx7A{KP7l@7&tsN;EeXy|f!Kh##w6lQpUZ)RA?`1D=UlF>omnCd_JL`r+Fl!7?*~IyiTCr|$YgzygXVr+07|ZI5i^wGi zrK$FXoyJ@cvh`qv>5Y#_v~>&{wtn&E6RBX_+ZVtJy@um2u88>?^Q1klaBdNpO~PS* zEA9f~R@sX1Iw3MXqV&Jo!W(M`J7(^InVRWNl&JWKvi}|>sz8)_agl*aOeGrcptc9N z%bQIC&+rt%jf;3j-R9PpGXhO8vochnScMQN5EdAKw5#$eQ0mY8I4&o7ym$hu2HL5P zb83%CL4F$Aa}siycwfKX6N-mu+4?s_;7i>=i!{sJ`-ZkjrNcrG$?6jZ0833)QBA&1#DK#F2r9<73n z!kMFK4i6$lX7_c2?+XTx`Iq1qg28$J61>3)RxhYikt1=R!kIMJ_g`H);l{dzqr#cv zp&6nW@uB)&wQ%M*1QoB1XRC{lWHz!p;79@bBxEq?W<&J*U8hQTg)oz@i@jwj} z`oE^I&(#j5V733pWD@<^|2ThyCOzjdo<5QGLa*08 zZB_4t{T$acyfvYEZ9I0A7#^6162n91z6!AeV{mK9zyV<;2M!1ykY{!99O?{A2_^Ue zwCa(G)&12Y!|)IHB%lvQR@Xb)T=KOuh{VC)WRXkfsX9fCEjh$t z{Z+mp?i6$vK62>62l0G-!H7SA?Ti|D)U9?77Eb{IJkGRrF=fMYe}k#{ur=m4orl!SnW@ zo-cC>4g$IOR~^DruHY1K3t#3-AaQpmY|j{m(z}BxMTe%8=wq|ye~-*z8D!oUrW*AZ%kgbIUWsG4i#iH3cVgv(o{0B}FQSGow+A&Q%W+R0V|UFTz@)~& zyGZ2AaW5V}Cda*bJWG!I;#ggJQkc7g%v53S2{O+L(=W)(5T<{Sd0dzQL1wlv_Xe3c z!VC;DuLv_J$jlUGaFBUgnESv47RvDu9#4|v`*Dn?7&l|`3CstDT}gb=m(9ZO%VnVd zxxg2YUa}jK5`srGj-avhWMe5B+F1U_-qeC0tQrhcoW|Ppt^WTf*Uq_{3B-mb(6*u( zFtnYo3~qPxmB#BV`c!WLYg^kmrh8XcjS|#Iv>LmhKD5<+XIt9U@mzAfSZyCcy9^@;mGRCe2ESG_UWSPMNI%NWQg<)@0Ej-w#Yyo2vutN zsursrz=bGYlj0b9GxEeA$I#3LG>DYj;O_eF=1ZWI~?N0mk(@6 zF8RP4h-%Nm)viuk?${jTk13oO7>dH7sYGkCP#*TA>^`A`v6uwu*?h$-h7{;-5CqH899dUbK$<0ypkmvix^7oeAEzbmxJZZVMqf>VPoB&-z+q# z^1jT|jKR6kmwAeZ$gF#FdwxsyAQK*Vj0X1TRXbl^8`!`rty>eq^KK=?gyr30F+A@! zi~hV;Ks-)uGlj)OJJMl!ZLeoL2;2U8wxh7OldYZe1pU5)$Ig5bT=X~$*C6-6*XArU z`@Wz^zx}p1#$>)x$$0Ts9TzVb4*TiDz!uDN z$vRl4bY&_b@r5auSrqZP7Mg}^)QWU(XRlt$K2%<1_lr26v{z?%GdP|?k1RE)T>l7P z$=)+-hiHe`FDbbQI>YDVdGB#cjv2Y#;fHmmK+>LnNikGgQ%~9gOa1XgR5#d}S!&>b zJ(;n{0rq7`l;~CJo;)7Nyz4i7gsTtW4>(;N@u!twND zh&jFK5$g4hdIKXcKXwl&HYvvnHEp9SQf6Ig&A8HHUofWKm9{DdYE^7t@TLy`K#{;MqLqs8&IOsn+_ zMcGcoGnRO>2A2E`fb*~6x+rb4$O?(=BHq9p1QxQk3;z$ct=4t6?Il!+Zf&DFI>ERt zz%a3n3kU(Uc)Xez?@+{`5y@3tq&%M>ZYRQR(YVgGQ-cx+^GmApeO%~?rb?AYjPqX>v|64ekCS$RQG8)mwyWN}pKDvu9kk8tx%hNcVp9bpj0H0CwtV3A#ApEy) zj|(hAFe3=axv7R^ketPh_B)*P`e-N5@Jzw?$C}cjzT7>X!sIVne zI1noQ>v~rJOIdAt8q}coT?3YxAddF^K zC>4hzxD37}fKxhi3)^i@Llk1(9)x=nhvqb*u%ALsDi06xP*)NoaksHIZ#S9jA|K(_ zkz5|N(E_4sq+_w$1V?x^AX`Zxtah71 z%st9xCsEi09QqjOB2@~DCxu;4LW7-@ZS!%9B(oW;BCY0tT2Em!&~q&jGo-VTjtnoH8>kcAWY-ZgpGaD~XgQWRF>AH#4_ zsltFHGdtV_-U3qH$8)=lT^PY(#*0 zuIe4jE+5FmY*?!(K9p?-fVi-{1FUavt__SwuTH=;M=ma`0lq^m$GwLq#Mg+y2Td5z z8=pdeT);%7&o+*^Ry68ti@5moJ_!kN_}-KKOjBPT2U@efaaR}HVO&DU(~5CLlJJ;5 zKJ9nShu5zaA6y}?PeKuUVw6zKpZPmy4qVv6mr|5V<#QAgki8Ne%iefctFkg5xJaWRc=_44I6B~lNeh}amr*lE(mHL#mHrO{f0cwX3**XY8E9&8rGmxheA)`Ht79nMtlqLX-#logN81#^ z6jiH4)kj<7;F|wW^!}VS91ijs5?F{eMqm;CB_zfrKK)>c7C4(nruM;5t*)A*?8eB- zfA4%Ajky{4>N?B4|KBXrm}}W4llbT@*Jt<~GklB9Fhc^bBCm2gL#~aT_~@rph zz>vUVCqm#g3?_I+tbeVJcoAgmVEIa2Lg7kyOCo+3TUMI$B7dV>#udgjhTgo>fm2;v zp^%R4G!h2bDh(L|<7$_*17W-!0y!wwt&IdrGQo)dWrCa>|207dNE-_5M-F+fkF$ql z8sc5^!D%rw0vCkhBK!V}*HqGmXeTf`Uw(pOX?(!;g&_GU$b_;oZDzJb@h6nCU!jOE z7idSRd|X*H)cEp&_LM5bR|s^#!SK2dgSs6@ab*jJ%?>5(Ec`8|+mPqYHKyDblw?Pn zgyi@nxrZbfZ}LsjyS1=sK}Q|^aJUM$IwI93_wdf?nD}zn64wT&UzvMf_Al!YVdq}% z`*2_HHq5z6gAHa!+y)|3Cci)1vVW9(0jYnqQ^KtZp+WHC6Xt858G^WN5w{pFl5ob( ze8--O6~_Vq7XkRD-9uo*>W3AIJX#7QE;~fl`c75_xQwK$0)H)C;e_QJgu2@DXWoH) z_-YpN`@%C1gV%F6FRmI^yjdC1+ekZ_1T&keoN3Gx9LR`zNq1WGw*RNdfH4_QT`9{2^C4Xio>vgn0lgkrd z<|l}(_YcIFq}t*)^TPY2b1_8OYaY&`{X5umR_b}*P{_giS0eL%;9*$a_k`?LTrdXc zA$O(tI!JqFhfif8SXS~kt|5KC;MckGj{Hw{d}5+Pl&t~EDo2W+sP6$DrpXvm|ll0R3z!S>j`|hQ%BpdLbit`gzHB_ z6a2D_)1LNVE56j|I9#gL06Q?OT6?znXj^BHzYPc1{1?#-a&SEk(;!0vOEAdiF`7h{ zPoKotUGRjM_!v8I)Ep{-%E|y!6oK3Tk1Kl3t9t!w;`36prHUnoB~VN6F^$#x+hTEl zn-f*MX@OlOBJw#f6 zQIk!{)okm_d=O#wd+vcX+-@;#y4{ZLF$`AtVJp%+oKpMd+VyX)U$-%taFdSzcOUea zN{`|yA85&SKEg4H~}LhVw;U>$%fs3@+0c%ouzZ zq19~%jKd%Lv3-XjkMGBy7kzsa{$Rqa!yotEaZitp6Ar`~Ag>A7ff}93^0-%PzjNd_ zCq6M|5a(L6@Kfg~?PFum)lE_J7DD**n-$=qxASNU^qx4yqh^RJM`c~EugiUd7!rEf zJ@UDFV_ohf%2M?D!Rn+q`jP}Ia#RL-vvBzf1%e~-bYeM=DTm_on>RlaPyOazgwkif z+2kJeMRAJWw9j$AV{^G4mgVS897*U&*pegPn{pIsPV7JlTVI|*!Aj_Fm7H`x+U0O> z;uKFphplpsM!~Xp`kd?Y?^v)(y7f>IS0d@@*Z9QxPrPN)j6qyEdi-VQs8|sv^dXd* z+WXl_2EBG{pRd1POEE@ z;xXCV$bII9Hv9{Bjebck2PH0{``wZ}rup!jcA7?{X@;ZEP)dGtHc`WItX z;pmY+=v6(mKPlZZrJPpW0IgHF_q6OMcsgk9$D4c9a-vy-O^w07<22p;jJ)wE(tNFH z_|0N1mq@b%J5y077+MNFQI0N@mZKQ+4r-OY-05*zSfu$7ajEAwCu78`NYnQXhr^7j z?Vvfl+G=~F7cGK5zwcRvGT`rL*Ph?>bL(g}+Kcp=&TdH_Ld#*?NHY&F?_7m)@SE=% zVsyvug5Nv^JsD{#x-GWm4yS~kL2YUIRdLF%m^*H?^Eg~<^ls7X`K9#BNHZ0W4{|Jt zG`*33Ir;?N%MqS=)RCqmypp(M+dZ5_;L~tM8)c$T)Ns zi+>62SJF8u`HOS(CG4@?N1E=qkSKk1klWhd80C2Sw%Z3!BCfROu=kv!wr)9JN$_a> z?r>XnTeKYMwI8GQrJtwFcet9UZ{dbwl$WEis4XeU&TbjBa7T-p=x>svHYjHvMVg3L zoPOT?8>g>+aoN#(MEi8S`5pBwJrp+-I}?(dny6i=3m1%K1$R z+&Cz;wG@3{YAYR_^ps4u#CPm+%J0B_If^vts6qCvNRx{Ha?}WY#=Dp8ZwPWOIWp)U z{#co7?yX|GGXB|>8BXn=!}!8qnq|gAjlC^(H5s3YKuD~KL!A}ALJf&d9g}65*83dhX1sMeANgv7G8CPqWWd_83E*+Sm`G3G6-EDpl%TE>SMpoVSX}&;d4#YI+-l!{A$L-P8rmd=sa&OU=3`{+BbyB zz%$j+9x@%=)R%)RH`f5D=z*xIs)zN8cW4)XkWIA|QJFIs}Yqd$U zu?AqCmsszap4RfIH-*VC@0tD{md{@sgvr8t+xpvBZ(Va@Z8rlg(+~Yc>})qVmPrp` z9xcbGT5?p*FD3k01AqHEl8AicV!;md_ydF>Z-f^^LSTFJp|NP8y!b z8s*DJtlQlZyU91!>Rfg6Ue7nv#}Vlk#E@7izL%}eg)ool|2OTV_;7nGbBa5>$fTPF zzC}K^!>$;A$b8^Q^}S~8)We)2u~L1nTb+hj@j1*}*3PEg#w^8Ox@qQn-=?(!K9fl^ zxB1pt=F&0j+u>Xw&2;o_MJ()bV6-8V0cM9~;!&!?j08h}Iv`wPoudwzr(s!`zkNq- z>W9#`$fTQVzVED^$Icpa8s(T_3Wr^^v6e3rCe7TU%%sd9bJ_O_T5)PuVQ_vCRyd4l zjdOLng(X;~S8v~F;f~IOoqk!X{egxXYXgn_@lehFYc$`f1oyt8*J# z%N6V{)bySYd)Dfdg$|iCQzm?Y&BaZslWxj~FSa@XSEqb9uF)bF^;|ni;mfV%axPOd ze3jLC47Dtl+l6noI=hfg24&8LK{OFcN?1W?y(o%WOfu$fTK5;gt}}n747e*%ZV~H$R2nWOWL|Lo#XRLO5=* zgyrxn#vH-u(X_L%?nIu*q?usj(p zWvFdYb^LgU75SQgGXpXirmcUX^|>wbMJCO3A_JYFRoHTA`A+|oa3p5FZ7)oQnd5)b zGM~H5LS^1>=IE?crrU!K^MNvD`Z~RgHDz4JTHr>Kx2=EVoj| zuX)chZ8X+aH?3Qh+342AaE;aG9>>mT%fy)zRUKxG>WsL{Va6%*V`qoSS7t#Ihk0C? z$2F}i^Mo=3?ss%1E3+=uVWueaaU+L$QknFg4)c^UYuwadRHo@|j?O$~y0|_sR%Y{^ zj?PkLrVnwL70PUJ(^{`gl$)>3%3N_vY^yRy`Z;#KQ05<(*{{s8PL9qYWxQxy{AHOx zlu2L$NEhH^-XQsnMD%0P!6Q#^*H}!aBO1Vr$Wqwa{?A)YG z2Un-MGGkq)wla}!S~r8C&+odW+Dw`AF4Ib5eXadH%d}PIyxZzJf?-eTqj}FTY0AVk z7Y{Q`UuD|4%>Byra9enWGG(6se>FlA1l+^9c}g~Q%~zX!yEv^@#h7%B^*}f z0k`!Y0mBjLg%8E@XmdiDyFLmsv#ic!ZL1m3nG+rf%Z=TZ@Dmv3J*S)F;jhZ1yB_|o z%)_|;z+Z;Btjq@NIS6A4&#^wQaBC-0nHerqM44Gy8d;` z#wj!0wfqDa*5J0`5-ZD01;diBpmws%^UCCD>RD#4#wzFb<@w6IeUD@3Rb|$>bJGfC zZgFG1sZ4j5c}tmEF7v)JLtSQ_GTXEav&_fJ#$3#jQmKoqMMUCrq|7mQeD0x4Ggs$9W!`ef z-W)J&b+J0Tt(w@lBFSU*@ME`&L4ne`#eua>!>HJE{t|J^c2aRr0F46|LCq;Dke8D@{8 zbHrixfno1Hd_b5ib4ZyTUpve(W$HH)%UR}xGF`Cl5!xzy2VsmzB<9Hx~rTZ=leS}Swk8As<9 zWnR`A#O$feZ*&~LEYn_@TikqgR3-}N@1k?3GPi3^vrJ!QzH>`#pfVr2xp+XCPrh>O z3{z%qtdn{M7>=vOd9N#eSte6;w!68=QO1AFu`^nk5q>AuqhOe&&JT+Y`nxhU-gKBJ zl4>YCNre|RSwa?7ltCdOs9g1J7{ZZI50Bix+si7IcI_ubOi6IIb41%D3Ih9Z7hW=~XA%lzOn zUn#T7W%etx!DS9AbHQZ}gJFsNplu_|90kL2ZipR4{xZyQW!`w*5@3ELgVI>4XKiWb z5}E5t<7!lG*uhQ?cBS~km8|HL0y^I4hBmEp8$@Tc@kKYamJeSO<{+4s1!9Fow=Q5g zD!M}fo#^O})=s#Ve0NXL=sPXLU0MD*gX!#N$+# zdkZk}(f8T3xO>UpY)?Y;1D1I~$GU?iA$q9j;2H;iss7^8>9#bk>L`(6N@e-4AGgf=2OZ}2=!peV zzax5*&1qpbr=6mwSSBsXiFIf6la~3yZDU=cr&%Tt?&x%lo?)54BORt&^h}#NzYoe^ zn&}Ze%l4+5-JOAc(Tfnvn6Fz|6_nWE=vOTh*Va4l`Vt^BE5Fgfg#dd(JRZ zm3dm{Q(O%M!`^+x-SJom#*6;NdwuvTKp8HM zUSac&J74WD%`A<6)5cn>mf!Ke9{rZhSJ5J(Gupf!{kCOFhA{72<^=Y8`OARLTFV66 z&kALN_2QA~#{V41!Sb3L z?98oDFcu&E;xFjW3pdz#<^~Th-C$?m4Y7{jkox^Mr1jhlj1Fw-59dnn`A`qZlyR99 z)Xw!f4Q^l>-oP{h!}0mUIbu1(q$=}g3CTu=X%6Q4-qiXA=C&di{K@9Wi3VS}PBwo5 zdz-qZ^el|w_3N51Um$kL@3IVcQ-t-*Us}hQHT8Su?;Rr87w3$WODcb&-^FvWxaOEuZ4EI3Hhpq^6L-39!C8Wrzo~XyQDl& zG4)oFyDDzQo>BjlZuy@#WIc4te;w_TI2&gR#2L1poq9Y*qaV7MK z^IjAjwpXwZ+6j4H%O@7OB*^R1lzZVCEs5v^6TRQ-zUgl zhrgJgIFs?YV8^A>Zl|F9H=rHX!IkH&zzWZ>K7#q++Ic7Jepkg~vHjm7C&EASTuBpC zM++{(J-d{-o+iekKN5N88gUQKABdCS7qNSe$dj?UrMwtte?;CFPV9n}=uY_mn$};> zCvnCSoov>lpA`*DHuGO6qWoVnW)JF>*NhJU2R?)=v&c_7%zo^j6SuH_>l$BCV~zu7 zq0WfCaVAN;5+i)$l0>JSC7aKF#@ErII}hc_c71uHv?pmt$>s-)5A>rF+7Zz=jp1>o zD9Y(4;7Y{#4d|4+54I@Rw^-NwjaBP8)YE`lkYDuwd2IxD+#};bYmBR#>L;5Ik1|IVO#=A9${{Zq|4zlzQkNNqK^uL2>mo0JSVki1h71&vb`FsuH zUxUnYn+BQjdZB%lL-?MVc+nTI^;4|pWHS-%JGB2SyMS@HLC^e`ei1D8hTu1~@P=jZ zjq@l6+bQ)Mt3L4<#s^~C?Si*_DVVsJczwJU8jslHcZ_Smj*5?`V4R2C3H3?rs@MW{ zDBq)c^U)tDADt+8`bWWWD+T9j_y~+2)Z>^&ybbdhF-7q_##735RgP9PigzjQN57$7 zd6j?ODf0L%!6WkpTfZ&%33k({KS=!^^Q!Q9s1x!#)ZPijpDbQqPPafWr##*S1I$yL ztTzUo|3^!8Lh?|AG7xk46aIrutPi{H7AZ--{(L_3Ej7 zS>;DHKNDY*@Ou=SXnwDC6n;W+!5`Jn3dthRM!nH)IL04hFD=hlmDj6(8LC%C`KpSm z)c$V8(~7YXlD{ihH_>hloTfNP5!=ev-t8E#>Bnt~_i4Rm*( zim-Aw#VLyOR}25Dmd}TZpQ?YmRelTe5$#pS`i)pg?M5qhP^^u9&hV{T@13=N&i*X? z6~&*HioD@1!Agqzl|QI{J*4TrrSg-Cja5HQv9p%X0rjJWVyBv7AH%QptF_9#RDMUx zA+nIRM*N(u z{Fmxyh3>*XrC398biD9|?+}b?AozWX;2X;Yqt*Th#lO!8KTpG(WBtNZ9CZVHHzGC%*cDRm61J88_@nfVzT&;Lak?E&} zq|bO=H6F3tT#=Vx-lhEZE|KXc<$20Kgn5RtHz2sGqTn^mFXVTje-ghy`4KB9|8gOb ztD=38zZvr*F%$D6F};o8Fq9|dZ#3RGv_s0LV+31icp};#`R!<*#Ea@jhiW2csGqCU zPI*nYv&KIiA$oPxkLl{i?}ddQrE+JrGgk2r&EHd+-afTo7vm=VD2sMNOw;_f*Yq}P zyiYM+FnpGVzo7YhT+>ovHAX*jnSi1b-=G1Jh!2v;)d#RR2lk=c-;n!#|rRdVJKL z`Z=n19_^L#pB9tNeK~TTR~75+VGWW^>{Q&H1#E_ePabf`bUB}U{TabxvjwkA5p4XV z;QD6;9lchN??U`^*x~u$gRt8eb(S$%&expyf6m}}Ub2~F!*QPUJY|nr2~0tJ$L^3x zVyC0(#XrS$d$MuTbL{;me?}sm_R!xqOZGW#h9BJTxcG$NIrvGL`MU*rBalDJ8<6fY z;AEATDsEPE(oIx*_rR|-#BcSq_PN0164M~^f&-7cu zZz{Cx&k_c>!`0>=aA z0CV8)E5MWRe+h68>@06k*PMmlJdd4&g~%%KqtX9~J%2@g0$<&Ow<%){dllmZpKy#? ziJkHW*e6=UeG0tV<+AX5-ZSPS@MW8OEcz60d0+UG*980D#Pe*FJN*3&_Mg!9C+E|3 z%}zWOvlVuBW5042!kfQf%wgaG+ zmO^<_PE&i`(QYU|qx_#puL$hj2{{&cKl01)bWLxBtxuFA+Tn5Vl7H+U*!G2|JCR@d zm0`=rqwNm+gwS6K{rzaqwD+`PWy_;q{wei2ZYiExZJ2D5k*`v~Zb*;)@eQ<>@{q5f z|8xI?{eZl)&(jKiRzi3t{9rwm({X_N7}Xj|`8)Lx#AI{RyR2W>f&GuPo`T^{JSSZC zW9p+^#=>rMU}5;jeXg$Xm-%waV<*aw{4y=4#wcg*w>af;6#5L8e(7yh1HRVOG3Fg8c<(UHo-}yuEsow+#?H8QVR&ZZm!MT}&!>S6V))efA^A*|~ ziE)RRkGvB9`BeDFx(SAL6db-+aI)%6%My9IroT|_txFa=%iBqKT}{vbi^y|#2tK6w zeO>c+ppnGur1nOueZTsDIY;7g{+||7j+YaRnE}7&We8Ts`ikz`0ntRdQYLei9Ndt?n1p#9zkV- zJWTW7p|i++F>leoN>v2ESG@*U7?ZzU)BQ~SsM$jFR*w~2R$OpPF~RIa!Mn-{7R6Lg zJ0G?d%-8rA)Ls|$dtY}6U!j<<{=cX4O!fEqSkY^(<@vj|%Lq;Xa}8e^CVFj@k5hb4 z@sMIiwNp{^Sxm8x;$0fPQ1kg$d$Ie3wudj(&NC{PSNQ?O>WY4~a~bPQmdAZsE}wK4 z`D4}lu&T%hwR}oy{q0Q={%+O#LGez-hKk#}i{6hKzmE2+4Vs^6ie-9<-Zbq;uWP#H zwY{?c&%pRP7~}j4z<;_JGY=^H`_AT<|9=ZN{7p_apG`L=uY~IB@wE*#wFxM;v zeie(gEU+4`PY`>|#r{6fqZ8R3huhGP5}>|d1yDVnc?H6^@aEy26B93E16ui_EK@6o>KXB~~-Qn9LHy6Tm@RrDS~yQhBL zHi7}griw*XZ*Fx7zs>SkZ4*-*Xz?^s=lI!?y``%@aK*KeyD8^AIOrJRjkD^2;M~9r6E~&mO(6&+jVqZ|3uq z^63_nO})FB&o22+IZRYNryMG2Ih;_ucwM>RIzMFkImF{J-=O@Rb)Lvw@~3Kg-PCR+ zm9y>;f2JvRQLL-jTJd$oU+c5HyW~HrcABXFEe9I&Bhsy}n2GZYwv+A_yX1#ydg~O= zVZNik_g$5EH!B`{S?c?z7X>%}E%lU*>#je;{)<|VQx$JLBUNP8b_}pS1>t|<`|1b5)`#tum|7^dMpHTcr@j*u(EaiI5mRGX*6z!Sivr=&{ z>WlKninCFk^v~Z%&}rXJK6Z_-Pbxa?|Nl}xY}cXXL%CT?DTn885p>%1<0|je@_8FF{l_ONEY^<{oR4(_`GuI@ ziCtB1y2|@ep1dERB<8UTINzCydGRXB)!8pvsrAkCBF;+_aNZQxD0qIjdb*T1_a)dK z@17z3JmG0+R|yC&1AXpO>_oetdX{{b{M)gIKupDa$?NPTACvRAKXAU!^UTGs%6Zh^ zqXf60UGjW#z4CFRMLw+j|5cyoQ%Ufv*BM;D2j*kk+F+8+E&phGUkGm3^z#;qJm@RQ z*M|>reSq=xu<&nTJg*Kru@j`fy&BJbk7RRdfrJkP)<$?4*i8Yxvk_m!1b(dHMbR#) zUsv<>q^6gq_V&Le;Y)B|0`=C^6nXuZf=kuk&KmC@k%PiMz7_ZoFxDKQ2 z)K9aec%ud6E#Myja(%|||82c+-y{S2`!Ig6JS+Mn{`^-&UZ8y0JtChOFZlO7yweHs zhSrtxeOz%(F^T`S);rgG^k+ZnpXGFYIVPJkTCa;WpUqYOBh1Uxztt!Gt`+(_$BS(P zrQBcEd8Tk@;TK}urG7zs_0)f-eYZ`(n6c1% z4fXk91KiJtahT)!0rg}0Fp)dzxPGj=$c|ryv3{j~X~imv>(x$z=A(t;gNid1PuAu5 zgK@H+;QfjpDV|b{Q=DNj+5Cd`H6DK7Ur+Xd-beqR)F|lpx_07MnEJc8o5;i42!5~r zIr$kgSom|A?`KrL>KDG9?FTpJ^JC4&VAx~*{eg8eaSZIR9@rk9f}hc7ch5Hp?*H(7 z;H5^`57;ZneV>=0cYe0q=XYQd)5W}rahc;((B`apdDI$j3*? zeN;~=FZYF3Hr?%haAlMG2;)^Y%b>fdeq~b<`6RylhG5_Ag3nczao`;6y$Aa}8+y(K#*7YjWWqW42?8gVNE_w;Jxqr?5xqq-8;(qa&nbOXuB0p^R&c5U67sQ^^ ze>U$BJ5Im6qW#s7vfT<(_N80&rBM?Kym<{#W| zwh?{|Qh%NCbRhD(4g4d@JLBm4I^LGkarI6OFM&Co?c;#1BS&JMV0jd`;U05OwyZ~F zo#8PYXZNB$TILAPc7G81GSAdC>A%W4<)tEmed7gp{btN}(7SL}%5B#HnTPMhx|a1^ zQ|)!fIQ1j+WM3NlW8y0KM3{7c-8Fqf&OCa(_?%X2iQ+1>iE?M?Pw43+wde_DVdsV zYN1_oyn3;Ulwa-lrTlLDN^s#q!QY!m_!hb!s4~N{>%yHeH+B3g1#!cdf$T#u3 z`GP~xz9`QeDVX*iQQA{fYJJbaYQ_`?PQW};8u)Z2V=4fDsD0x()DK@U?*k zNPbQYW9kDxDT=2bf!iA3It(zsjOg{L&URhjGrBe25(>U6(rE`=Qws0K0?w!{dNUKm z-ekn5y-~2obQ(iuI**hTEK^nRpK``@0l%b>=pRkRbr{I|kq+aph%u%wFi=_K-tcn( zsXK zhq6)+pCt+39mxFDDK6#GqJ-pY3(}#T11Nvm{RsA%pC0gQH1J8-VLk1EU6%8j3S#dz z#G}1VC_k19K7DTEJ%svaJ*+J+_9mb_D3?Mw;~%eyH~mvadd#msmh~&^4$kX)2ID#u z+Fz4Kg54F%v=_O>Ai<1V1?LVR2ID^kelp@$RICbnlsy9l`A#j$jk*hNZYg-RxnTJ1 zf|Fr)a){k>eQ;d|@qR^qi7(wH*hcx9iuWj%zgNO{zz+3ORsKLB05i?B-^eVgEFv;)fhupS{+93r?J^+tIf{3Z?_E;v?ku42u)!Z$?>m%B$H$nI` zm3jXa`PEXE^m3PGmT7cxAEs+g_0y<_fODdYa*{C_3pl_W1k? z!yUOE+5_cU8b1d22Ze?^at}>!fZ`J!CEnA5Zu^*x{c)x>7^pPiSk=&Chda z-^-C7zQc!j33|k#bp+Rl zM*T2+BE}Em8T3bDHP!Ek$4)RMZ zo1nJ|=Q|tl&iO-|Y_k?SDUjXlUMC@F7Nbs~`yL}=bA1!!PF=4*Q zl@u>2U;JC)?^XFx#g&TBjFs@>IDch6r-lpO@v88h(QcQe_)SB_3W`(5N%(G!|HnCz zb9V|(!2Kz-*HqK*tN5w<*Hyy@))2jUMR@-0H+?jJALommM?M$4yM*YiM!H|2d?w>O zg7`gn;sWId{3zkCBOUTS%wNQXnCFNMF@F%tVgHQy1I7(vl~Iz;ds^;?aXw4FyxM!< z3(uvJw770G5>E|PT`hRSU;K_Fdmnx2JEctt9kMMV?{Hccjrun@*Ui`?$ejm#( zYpcku6}PPy`DM%l4DWDCaE$7wXg(9sp6KU6Etfdui)g+NYQ8HXUFtoeI9qYD;tIuQ zP~J@M8(kNCu6R=Gf33>n67U>tlHY8dBl-Ls?c!_LKe5f2qrjRd&lA9Ql|1GYu;~S3 zeg*!$(3n4f6OfO;fD2LnSAlN;J<M=P~ZjJWxdNw>ZJciGn|t793Je@WBd#qmzk# z^DOdD{1yF_`FIrb2XQ0XA^E?-6Q_YE^0`%iV|>X5^+UZe&9GMlc^Jx%;a>FrSjhCN zIPjSU!cY20?Bpqm-@$Z0kC5_ShJ3KxpTIr_aS!rAELleIKC}bMS5Jz)hcW~mKPzI- z%KE8z5amrjx1e2>hCln^PX+a_GVspJ621=UQtw5iOZ*<`5(gk%;s}%ec z!mFLY`3#V6uP2gk1N;W{!*o7DJra$|$5h^}=!8#1xwJ#P%g8Tr3-U{hhhM}T_(hz6 z{1PW2zr7zx>#2ku)U`HVsQ(ct$29|dm0I+OWtn~fr996XO0 zjPm#b^VesJhv$i0>?Ofej2jGZhjJp`tb8ks6O^lHywZn7=JS%|*EYgl1#krX!@T6K zi}u|`e{tW~y@KadE`7hqjTOgY-lg7b#jHjm&s6N!UF4NEe$f6O=W%|Ac+(Vf6n7|| zzg|0{Cgnq14JC&7h zrRl}oE#VE)1%Fn54ye7WYX39U|EZ4X4OD*`DDGDKS2VprT3&sXe^~K1#oCG!wY-wD z#BLAG_tFj`Z&rVc_YgU`r{G$Z+o;?{<@$=p6+Ie0uCBx@e3RNyd|C5ZM$-*w{mjz% zA8UA+`jMslK5ZY9G<=mUr(i!idpq_6(C+3cMqwRDc`WP`w^SE=0qvIZx!VN8+7g59 zcXNB}2OxYR(j&f;A~^MC!D@X4hoK%BeiPb1u`${)@uTK~hg9~WzmTt^@$Xi=P4Rv7 zH-_h^y!IZE8`yNjFWyHs1o8{ey9Moqco6-7SfULvSPt#c9_E2hSNsk2IuGMD_vtzQ zaQ#cp-rkVwS9~t45bmFvh<$D16EBK9WQ-uM z5s~jdjSqb~ zd8lvV4}%5gBmb1!qa70;M>!Ce+$q@9>IKWC1p3Evgg@U=uqfIm<=;^5#5p5~!FEvT zB%YrDKT)yRyCQ$JTrl%>!KLpB`j-iIL_QdA4$5&A%D3WHDc^-(iClV($a%Pr0_hna z$_wWqwp@;*e4fPm&J(Pc)fxDz2lDYZ#v9^aDAx}{%4byUjhBs^~WxLefjXc)1n)={p2>)gcDs^+mhc ziSX9wm&AWs3MQgIQLd@@3Hm+dFBH3|eles=K3Q=Y{Gxml`rFPBKW6=c^$ps0?k>Uh zihHs|UQ<%=eU%5U7WvH_!8UaTpU`+updM+jw}#JqM8cD%ePd*u+Zry`?w8X-XxE;^)5WiDwq~WVHe7fS;R-(6F!!IZ{P=1ce zJyoBdh^5`FDhF2KdJg1)nob{$w@BqY#ZemXF2xwtJEeBA6gQU<`(;%=X!V2rbvWwf z0Ma|t5bxFjUU)_1!EY0TdXwhieJcn*dQor%%JWD__+zkh9N|MzKg7>akHmo}Z{jr6 z53y@1u7v|9qP&lX#D5n2N$_hFmnfQi1Kw|@@09*lSXZvmxd7fbGF(AehyAG$Gqdx=Vb;x*QMs5~=O2f|2@UQ=$ z5`&*!-Vuyv=nv*R5q5Vd#%>e&W0hwrE(4+;8``6O#x=o)g3h?- z`cVe;e712gJ;y)g&4gnTpYsUwF$DV$=VAZ5lVY%v1J! zmADq?ImF{=4@7J?%mH^hLi#JB_VYjQ0cMJPYN``Gfn;#DemOH^iUylAqZ5=r4FLQ|x-Q z2cU^dmiZ@1@n*&Q9UkdnyfU|Gzc?>^>}>Q~rti#W)sbJO-%#;6)nA^2>!?lqv8^y( zvYjqM`zAKQya_ZvpR)6oY4otfpLtktvf@I)*kjVZV`-P={$pu7FPjdC$9CIY`&%mN ziSpsk1&c$U@`Xc!_0+GW8zr4F$Pf1q@6votg1^kyD(s&{q1>OwID~w~evk46AA3a5 zq;wZQ-ii>r@dE^h4;H&46&GNBW%@m_?j_!oE|{(I#BO5eYJcHJCkysg`{#s@ZCOS9 z`mV0%?-q=0+gbd&dWWDN>rndtTs3Pawq|3Io7EJ%r!eo+k8Wxwr;qr%1nIH<9%~>t z1oJNQ&HORn@8CR{c6Y-*%YRV^vC~EK@kNHni>nHD=DZAh?`nF7YlwW{Cc*id?-vw@ zARg^5Z!YQYLVlS3AcQmhVS;8m(kIXTD*E#y{A4=c3C6NtlK)5Io3rZg6@=6N0`>1@ zEsriJKk|2CeM&s8ezHH(?pWjtd@T3DXt!iPNuT>+^o#pp#DTCMi+0`<^-jGO+im>V z6=y}Bi+)6VnKHhcHRB~*^AS5@l-fHYn2GU_c2_9gzEb$#F#eFgvxH#3c)@1H1$#)i zDZN6d!;@ z5IN2h3ye>u&PaSqx`{8A-`9n|?z*+a5Zt%iq-Xw}Snm@fRbGvHr`-BJ!TBgp$_DL> zn2CBKHfc)?+N;yjm?ZE&)D~QT^E%4CM+lBVzogtu!I| zHec?(%#wDvpBZ+RV?9S)T%G7Qr6Y#d50GRq>L>Z>IW{6=PN3qk2tGh@GB_e<+`!dXXA$q=tX1 z__pdT)$m_cf2pQ>yZYN%rs12^{xZc!)c!@4KT&zK#@nTSwEI!= z(OK=ESG{M|?&qrCQ~6OgUa-9k`^}g-DEB&hh(X@I7f$&U;Ki44{~)m4dckg(Zz#{j zI7p}P!MA(3Cqtvf;l;TQ)xAYPqs=ugo8 zYYP}Z*<_<#!j9X%x3$Mt+u_$s*92$H5xj`@FwiPQtqzdsT%&#VhQgCKNw!| zF~Lo$-x&Ajk#9Us_$QVKzM`18ROD~aUZ^)~g5YhM&IQ%$iu^PDRjeO~4{CT_#g5pY zC;zSyjKTRkQzMj5>wS~F||8=xA3E}K45q@>VbG5 zO5~AhXP??VgYlW+MX?u89J@pGv(>Jrl<=MQ3ID9}<17a2hwZaF;*b1Nux*Us!AgS9 zRS>*ZS#XVFN1X36-qZxa{i#{x5yhL3ABNLzZ?r>m$=Wv`o|X2yPjQ=KhK=X+hhRJAw}<a>6M3*A49U5kD*80nrt`{O$IjfK)b3iLPIPll=<<5Mr#KavgmA$jh{v41fi#I=~G zi52U~eI1)suBGzZXr~PS1?`4-S&{jqJOcACvD+p=XWi~xx0UO0?z~~-dK}liJm2)$ zabX1fcE*KXhs4i39UrzT(hub4x^aT}amES07xrP;;kZJ7JUHLLxaOQk#4d`(yCa(T zRQB2Z!cFyk_Pp>utS9(xlKXIe;P}4+?VR=(DSoPWtKvLGN5ASZ@q4lOAA11(gZHs~ zd|CE43)a_OT*rJYq@6BByO@l2#`a144()}w0qu@hGM^aiNAr-sY2f#Kf&EqBMa4V+ zq#V>^`=5buwtph+6WRWWY~M4`E-#{e+5EyT&>c_b;Joq$=*_SgC44`ULR%rDwua?NBhk!6=gpsOYt$33-zB>T!no) z${#823&;J+u$zYY?A`j3?gpec1LlMu~P7$Y|T@m|Xz9Y_hPp}Hc14@V(5-@IG?Z>wc7PUzG1*;PP1PcL3KFH|8R+O=)}w zyD9Du!amAz)vwSL&-bFdD>s$+)tXBD%D}tOE{L>4q#Yvd5WVGyIRCTbw#2UuK0FNf z=>jiX6uz0-Z>`u?u_Mxd59Qt&=-J15hd;<)xdwP{#-j9p?w^m(!1H`f@t$_YNfyO^ zAEfsVrkJ6q=N@03oCn zrGL|4`X_Kc)fs%|5W#%K{)*idFWxKRkpl#ORoSRq8TCUuWl_GwaUBIS2MVs~EBLA6 ziKZf-R&0|h@*vf(ZPS%<7>sfl8jj~ifC*8!jt$&n<*Me$VfMqSCci$%hpO7otD3j5 zo_jc@syVe&@I93a>iy5Mq(2_%4MO`^hjQ)ImG6(heGE1|zxkqwF_X|<9Nxicw*5%> zQ)mZXtUsOwp27S{JZjNnR-j+-xv~G<^UGDu!uiI`YFgEfGfR=b%U3wwRy8pgznK4; zD(?r*3909=?!fbCsF%Zv-zg?wd|p^UZ>j1LsYj&V(gJ!bRF7B!^-nB{`X`P>{~|tv z{zXhe`4OwDUPaZTUGk?;uf#Lm1otW)SNuTnZ?A-(FDw|T_PlDZg32XSu8j6gyLA*d zTRXw_&vIFfaFz>^`6be?)tXql@ngHe`WE5eDGpNn(<0U%&l&Rx z+83WUTnlXYJld;{OP`}1<5nm0CE9DLy;!fH9p60{<7!B~^4mt=!am=h|7{3A3j0w% zfZu@gU*d7hJH#rB1vjU9AP39!$^CdwJ;KK*(k|r^uLw@qCit91>1V&eKaO`>no0ov0flvK|3POL_6BrMD))=zXJ3xH5ECmnT*ecfhSS_#hM9U0dh5r+m2pk$b(@2 z63XEc#?@-g1Zy`7KDS%bK0lXi)*Y1Rl13~N?5pTJZ+HjRga03U?*isi^*#RYbM`*( z^Bx9cTyhy1Q6WSTYK9pzW`?;iV-lrYl1oV`m0M*Zp%jsOx#kv;+{z`FF%-fla%tR3 z6D1_MCH>agYwh!X&s#p#@A>}z|L6HVzv=PpUT5vK_I>Sr_SxsW?*_f9;Fs}zvD~uo zEizzwKOD}8EyL>;I4KIREu`=F$y}V*As)0>D#SN-W&+=j_FlvFH@pYEi|iWt`HRHu zI6dFTWH)Ib{{Dm|Lha-GsA%V%x558&ee~pd>dp1kpRd0Pyb%2ANapdt=x0a91m=-G zaQ^T!e7^wd0mG)yPciHP?Tq0VzP_77{FN!Zen0CaRUrLmIQ|HZ_v1{8w}kl{4ktnT zp#C0Mw_=#b*AH|2ZfsXTe?<8lmOsMRS2N>!_A@>gf%ER0FwahjfqAzLg{2;#uqU(^ zj`uYj{s!%fTrZujpMidZoB{n3!`fvj%!7W3{3Xllv%D0`7qYx+C5l(HGKKZ3P?%hm z!V9c_KkL_L{T-|y%lfynek$vCX8o>>$<9Hx6UTNcvz=9J=T5eB6WfVpJ8jsG9Zq&S zvwj@wA7K3!tY44yA7K3_wZ2a@gz=8+*S`t%`UKalI|jpdGNC;tSF&_Ci^C-s@H+KB zjEC>8z7O%xA7P08=zZ?53!uL~2L50%goB{`pF;RM%tN2D{0m@QNA!+q9S!bM4D;W) z5x!yyJL>J28+`?*XyM6fC*pF0ge7Ld7q9zi&J*=v)?VgHv6=ZA%*Iic5?7g{x52C{ zl;{Pu0l$}0ZXD?Ej8S5S=J9?TX6e-+pU3<#j96s+8!W~~KMtk+3gR0+4Bjw5d5;$W%h-w@zXe=0wz62P(;ueG=fhVM;cu`QADy#G zh?`;qd;w~^O6;wkeAmsExIKs;tBms7Jvs87LHrxEV#C<#p4<=m4P#;Igg;DglIB_- zHwXQ=*g76B1Wt{u>+ypSzisSY9`^_C65GJzCcsa{HuiW4@W9v@kADJtuf;a?cqi~v zvGE=c1AZ$u(c_OJEiolF+2d1SZyx{5H0Hkt)YtOZR-QZ`>T5$RED_-k<+nimt+C)@ znC}4ldt%#qoCo#~$Aar&c`=Zmh<(uG60l49YwRN)*ZM^OcNVLt|A_VFEfJ}@ic8Gc zeph236OC>`mGJ`GOE&2y`spSeFJ71qPhYL>Vw7gnKYOtKvC)$^!`D-r1h_eP-SSO( ziH{1!?;~>A-hUwd)uIpUkB{yP@o#Gq;5UHlGWNWlSEf$ z^h!ILOlEsyqu;v%cdt#RdVJG-IGx`F1|j_6c&>XI?q-{S6JdT5?qW|jnZ`UmdJx>z zU1&1h3O_l#_t?4QS(^wHH^1m73PSo%wdq!wI*{|e{A&quaL z{BN2S;<5cSBdZFAi>bnTJmoB0dg| z;4yy%_4)K|@JR~huzM|$6j#&Zdtp_Z9tWM6=*&qV&yRs60`rfsT5A_~ zm&dcAKRkjzt;F&sHNam5aj_UnbPM8q$nUdp;6yn7+tY=3Iqp7>v3-WeHSrkRZ&F;6 z$CIFH7R04{TywS%AIG(}EbYQgf64abDUkl!xBx$>`2j1eQ2YnI_+!3?y0 zN31B##-BW5ow^N6Fy8+vq`z7`!un&PuS|jYEiS+%VQ736*U>sp@kRRu@HL9KPFD5X zwZ1s=1-!))*Tw3fd5jpcMu?x{9<`RSoczyY)-RgJie|7%J0JI$^#{p0{cig0b(oL+ z??8U8#C5a6^^`PT^xT5^>u%Mmf$5DA^^Xt_W?m0>0Vtn$2j%B^@J~Bqx?9!slr>(| zhh2a_9_-2F$1NJ+1n+NxvU-ovQJVTSJ+T{w%~@@x8qIkyT;- zi+|GNIdJC?%=e!Xg}4=@pA;0oH29~?_@_Mm<)EJw-^b%AGvMp!@y~iZ4)W7I{yC3- zgZw-f-_P2o^Jm&~fOR~Cu{1bdo5N6hC4K%+3z9F0A7z!l6I0C7>$NTM?^q3)8-pv_1>8ilu{Yl89>fRZ z$6FIM7laKM0PCmt3Dz#=H#ASQ{CbH|5O(uWluxqanD5d&+3Lsq;}Y0~i=Sfo>tTKh z!q&e8yN}isD?;-y|6bs8AWvfXuP{|bT2rmoEHA3%Q?0Wszenr8Yh7Y_vX;MV)zM3w zg0Oa4{+`uH^Duu;Eq~8i#PTazKFwOr^5QRJ`qQkRSpMrEOnEU?6VWWN$j9mt(x zkjIEYCt$on{L#$6UW2c;H~YZa&zv`1i0aK2S@U8k{sPTQtV>OZ%X|d8#LYgo;`9=8 zm_UC4XP&HG%;(@~AMy#!IpTJm{&Fij4)t?H&kArVxY=?&UL?=&>y_a=>n8ADDa}^0 zJkN>*&S z7xaO<*k)f^{ZdF?b2{7=H~Wuul=)~iSdTUP+Dd6b@^Z&v7rxm+Yc%sj=zqtW9kRk( zlDyJ<_|@5FN3BN8v#-D|RI~4_9-7CCKG1%4!uQtfATFBlgViAw^~Z~)Fu#{hIBC^S zL#FnPO8C)A)I45{n+xl=gi}@%#WckB|PHgH$X=6?3HwT7AQXU|v# zn#cP$!_uQ(!WpYbx=!D}Tk|g#?uJ19@%`>@nh{S|TR>=&sR}e=1=aN;P`N}-JpT1;OW0p{V5x_5K&I^l&rCp1J z%hmwqkx)OafOD9;lz~$Sz;CktMeyI9fZriG`=iSyKThXWI9@MX6Dht${^_!{gyWNc zx?-tTnBQEh)Sp6hPx#%smH8IUSFI$?c@~ZTKdcU#3&Li=eA7GO4{IFrN1Cr$+nHMo zMfsnWYEAX=kY-^c1^j`= z>xzVEkEy>_HTKy*RP&hHFTms<0!;oPz~mop_4LUf1epAR$6THOlRxmd7>(Zm)A+s3 zvrpsqc8_WNR`;0vQw@)4JO-G?V@*#^(1W9r(u%$>KxeuZ1t z#$Or0`7#yu7a~<%JGw3MSkYU-*9sHrdHIXY#rgd%kKg?X{da(={Q^7~=JQA^z;6Pd ziw`ih@7lOyvv6ss9GJLTO7J zPiW}n@9V`voC#tq|CacGd|oklyCz8fA#P112IQN7cZPfHEQS2|L?dJ0DG%id;$qWb zzj{l&Coi@ugg*@7LxtJ7vm|^S!RP5aHKBi$5skg{ssJDN-{&!|-y=k<$GfgV{t}yb z?0zKRexRwxuj~0X&f_O83lW|eZx0S?|1zSPJ)YYe$4jJ@XwN1VJ)yssN=&qOJ%Ih0 z?hhiZBs;Ag@lVhnDkLV^!-M#i#1#8z5Z6gewHvml_~idG>`u(})?s=XcE0BEdOYro z$*}RQ30%+7c+9X{cOV`F{pG&I412a_v%b3DuJ*9Duh&^x#WrPtB^l9}?~(f*p5%Gc38tl9Xxj`j&+uFsD4o=#Z4 zF~a%->RWZR>vtjEbT^!KN$h05!TbaCr=2lf>^;nH!Fuwr+r=LID8(m#*TwGC71^{; z7yCRjt}ift++!sF73}v&>|&2*J_@`u=23e#b5+>->yh}VeV#c2cxOyk+ux1!XK4Md zc01;`wfpHC(}W-klk=M#I_`roPLgp=T-Y30mKcuuDIO@*MGTIGm|K%7=;W%VB>AxC-;h zmvKCfwCgj+&xYq^ARnqZM?Bd8_NRciFsnR@e~CE?7|s;h$NN$GJr2YD4a86EPkf{p z><=ZrZVzH!7>WFby@vT>S>#c6S6KIB{x_dPdvDs|1CfV`4hJy3H|@cibHw3E@YSBg zH|=wSP(DVi*eb+tiKFf47l~&A|DO1^-Ci@*pWS?%-7APAnoqLd2;y6sPqSZp3H1xY zXug|kzomJI-`yv~JX{me99F0^YATQpxTvQwC8zFcH? zWv2D>B6|=s`M(eCt(tSh(Be41F1GQjI@ta_nDMO*A zKl2k)V1KFkr}ky$XMx)^Uu{z$-d9GcOdCX?Ge+4ejJo*n@Kjzw1m^&OMuBACg?9QY3t2B=h z>%iVipdULN?Nj8mYysNeVV`6cus%fog}MK) z#Fv>VKRaw|1eIs;8St9Tci7>YDg9XBD=aUw74>)8_DG6u)-B&Y}{}Yf;4dU45 zd+o~{pUSh(wq7TFs_%Vv7&GN(pIwrf?C-OqG@JU}XWu`H^q0VVxS{z0`(frJc+^)T z;eh=Z^L+4w$WJo220x4Z9CQ9o;uo2*e{2DJuQD%vpX8&Md%(O?8}#2{zRL1-`;&{$}P!c4K=Suy-(ziMGU7Am7WprGVszn1{fA zIhOBxW~#pf_RpHfid7QMyMX=`&89xTu^Ych^|=e42OepD$c|^81@^xOZoy3TamdbO z#_?Mt;gH=yGtAE%f4XL4|B&7BEwW!#;P^XYcV{li{1h|Q&k_3t=Hq(&9kE|#rv7on z#$U6={zvH_vEO1o4fAY`gd_F@X6&y&H9ulcC+71nN9^z4CjH^?yy6#-|IB=CGJHKA z_&4Ue9C%&<{0DP6A3UE(I$}FxN&f(x{woSxjQJYQ=fGu{TYoG>IpAo`V?+n&uchoG zc0ZEy`sS#e_Ac5p>#L*o)0)ToZ-eK@XXH^E&-vi`?BQ48`9#uDdk=FW^oMFm$L!M6 zP)_xIN7A=;>FLPB{Jo)kjgwB;QOtV}VShPcSJRy5r~TLy_U$aE`Tc}lSMzwG-h=0l zpubgfuJs-4ufjL?Y@z>hoxRM{XW)e#QS?jrIy}gGz&Z=}vuHo%v=<-ObLmN^?R*$F zD5v$^8QVXXnC8zj_T8F?`Sam_H!eJSaZy&u+* zaHlCKzgO&PA0WeX3uv#ANmuOZ#DenwyM30K^7p&F3;GTGuCu684c_)ix@!NZIgg+3 z{Ar8DC^zl(r`=a`jtH*=`)x^o+RHRk{uU$&nO`Wr4@M#W$=5dR4M;RoQuux^I_ zqQ^&sC?|5Cs&YzHRp2sRFub=seLNSo@-Ixv`3VD zMe{KKP}skj**r>))I8Kb0r=+RC^?qptzdmUvw0;sh2>8G-<(`Y&Sv?Yi_pK{EElpo z3Ak$V&2l-*?_G%Z8SUpt|yv|!$c^_V{$xN34$Sw!m*v%g ze+NFya`LBjWdX|{z6-wQBI?RBEdTyL=#T5ki!46_904poqx#qm>%HxXcS*nIq5fmQ z)syd%C0RcI5bED8%d>n1a0KuzET{EDeOZ&`Jz+f&A?nM!S-!Czmal=lkLBBeGm;y~ zM3%n{&l74V+#}OiJ_fjI@;&l?mP;*fC?95dMJ;bAyRrOhZNHK1&GN(Aek1t;G1qrv z`LgB$i~M0@Ih>jN;k`0?1J*}@MgA~G_S=X&UL?H>_b16s(x4 z(&P;0qHvy|XL7n+5yZWdGi0u2b3UP!+@l%p=fK{%_*PPVrPCK9Ps7_*$*pB4=9%En z2LLbEY|7tSu4kt5XUZjeP~X&N8##S1vZ>Ge<&$3{oAS4n&js<#$!+COVt>Ww(Z4(( z-w2WqPJTcx3F2YN?d6^zek-|ytOolSSbtf6;{4cE)?yxagt#FyuHR=i?<$)z(|$u& znao@k{KeeluCf(#BPeGS*n5DvU;&P|uCgOD?mv78@w;mtBA(BMuNeW4(LCONavAP7 zc9RpC8^h5<@=DC7J}0imj7K-o{vFH@oF(~P%s;}oLV086N*@!)F>hl1 zWagbPUNC+J^H-do`;DB-(}6kmB-wkExl&Eif1J6?bdvXBUbvFDAM@9PiC<>E4dy>g ze;D%-@Sn(|n12o@9>;tyr#FT9uubxrhB^Lx=1rF=IsYq}KjreSWBvi|A2I#S z%w;)$+nKXj|10KwFn?nFgUnZ0{}^)zc>aX)6U?VL|7VyF!TAl8Uto^o{_zL%MHtU0 zR|lv+-Oci%%TUDWT$T!;H-H|D`yo+p`8U_QtAeVLoXdJTCXb32az z3UifJ6n_MBF}6RNc`BE0g3;&vzsEd=`F-Yk+&&ALk8}V2nE5>Wi%*$PvHcCqIL}~y zw=%!a<8vo-9@qcZ%+nx1#GXHjhxH$9UtY3!t-8ic6DCUpg{1NI`Wp>!V)?_Z=@lcPs6qm0N^K!1=rp*3| zWG{(%z$=uWbY@%+V|v-ly`UJ#4>3>Y@z#a85x0L&<{!EIPczTq{`ms4Zms7t-HtF@3 z8#Rv+FF}6aPI_7HA?EXVugKxB?-q#vid>@E*c&bgahXQun}@iJU9<^N#(1Q~M%;}?X{d7_Cj zk(kfpO_V9jw4X6iPSiZiAF%}1x5*Rbbj?HkQNZ5-&u95`@E4QCB>55ZBH#$%Pni>7 zU0*w4vfRkr8n|lmWVwx*?$4&kuQU(!)BV{Lna^@sA5N8*nb*O2n8{+Qw4mSN{r4BZ z5x_+>5A&CX_SseBT^Y&pXyD(0E3!QKeO!;eC#$mje&BQQ@5x#$r~A2SvOde{er}qK zWqG?VvAok|bLPx^PDbiX%4wq<>~-BB3+(XRwBeP{bGqvArd5W3#qh`y|zv%Y2Xg_MUOgu+S`%$yyC1%=> znk}dPit=G%;STr}(&RaE?s;T$zcNSSS4N<}>ieIclIO~(-;l?PWay{ACC`)RnK#3J z;UCEhWTT5HA0}>r=j}4(1NkyBmv^BY7sN$U7Rs)dFuvIzT`YSr(|NANGU~FH^Zw>y zIaqU!=nd=PGAWBCKBqI|?Ut0K@~q}DBBlg$tOoUt`N!wIccv_tgEfyAZdLeN zT*{|%I`cFbN6k}K%hIqe#`v-DK1D{#8rehhc!B3>I;5hzmM6Z-hG8}dp zkk^4fdoCqcHqty+q&s-OxEb6&%FX!9lYL=dIxs%B$U($>o^^}d&rJKZTjckejlb9; z{jd%-_FhWaBBLSQK>d9#VaE!1h<_)CZ{sfdAaR!4>O&Y+abe!f&3hd|584!+4!HGvL7+~pPjO+tJCB1?v(pA z=ZN;O-*Pa1r;LVm5Z3<);CE7X$`l)o|4{{A=e5;Hx||3(&r_bAam`L}OmIc9p^{*8P>vpH{_FMBgn|Ie4taeO*o znJ))v9_FX_Kl0^JmeYC5eE9}3*LS`=&P>k-@?`-tJx|Y<0`AKoe-=FtI3#OnHv1Qc zWglWae%GcPmg6Ws&o4*iRMsbdbX4XsQ~y0Gw+HEONjWMP!#XU`U%!`2ndv;~_i~Nq z9MKBe>0rwDvKsh(><>pbz^@&roRIZ3=ZJwIKbLY+&SPE!{y?=jC1Y;J_&K6KaM>1T zWI1^67xkb10rrnuoRbq_9f`afxKE2es= z3Ge^5D5D}?Al_IDIZB<#fA=w!nU1 z%SNi!4&t+#o2a>8Bb(y zz@qYWQX9^Ze8&dZ?`zpfU16s7=%S*3B{{WcS2dBD+Ve40>paR$f9w-%hOS_v@C=s@3`x1>-MXP@9;kKfa*0 zF;jnhL4Czc{qY6$4Kww}7u0cL?vF31E6mg%`>CtU)E@^Z|IJuF)87WEQ~DKz0`8xK zR9F2s67}dv66{e5i7lcuL z3{|Cxxju%fn#@!muc}(iR3ERY*7``k@sA@^VtpzPji-@nbc5jfdR^7hN5V~gy{<;; zBjHqE7h1lqwlZUVU2Qo^xiMsKj;^oKs+Q(4;$}F1E>lOVzMAQLTanbUs=hu#Zr1Pb zs79K{inn1uqkQT+Dxc)M-khLT=_BT5ew)DlG1r*}{r}d~395QLrQhlqY_ADwux7LV zrTBsOUkuaxFL$I)()P^zFL$R-@fhEKiA$ZPvQp4KwP#Z5boClBpO>Da-eQjU9iP|D zQ4^T){L9SdbJR5ES73IEE;>ieW$pw1BFdVh7BeToeN$HI9JP`e&&QkrdyqK%QWWalI&N9b=ixl%T){JEXaSPwNmwG z{tWhikcTk00sr@E>Pq!G^CQ4-q^?rqG!GTH?=UX)Q}qM$EZ`}rYgE-#OwaVEb*j2% zYOfio>s0A9E$9BUUiHhM{2hnqj`LI3t5up!{0(Y$t6+PZ)I4I=-=tQxMmfbl7{5um znaF0mBu}knc}N^&x2P=Us=z+6RrSzp&i`yxjUJ}>4PtSA*s4}N zLR=c+uS(sj%5@~3`LPh|Q@>DsnKuD%N!_MSG0%eMoqJMusq9V^|0eJU-=*$Vvo)LZ zAp2CK&L}tId7nz_jcn?3pW6Qnvbi7JuZ|M4|K6|8GE;r-SDl{4_~w1r{bsxrqx$(|8wd$>dxnb?H^JNiP`=kmB>u?52YMgCrk-P__Bf{c5p#bz zrn(Nm`0zd#thY-WUoltx2o^(V0#7Xb!M_xphgq3y#kd#TF2+}Sp_P0YQTP_ zv;w8xMa~gxU_D(e?FZGDxdW`f>!h7fdzcg8ymO%RQB_2roS@mF^2l}1UPOCl4v2dRJiL^5+W;(_H9`5^}OFOG3GT+kB5-+Fy zqRulv`neDz($1-BGcf)b@isia9h3H}>ZRHA-}7oVGxhJ^)YO?|{|NLiOI%Q0XCa&Z zby4MOHvQ?M+WtPuO@F$i_7HP>UsA`Jsl6|$m^m1q^e3iWQd{OC=ZfO+eChqP-_?H2 zrvLt~>dvF|X?^>sn|992yL*yLM{h|;DOI=fIf_OpNHMInepa<;#sd6)Q@yBG>;Wi zd~kl}Ht9Uc{BBWX<-DQUl;3g6twMcMe!p{vW|Kd^(~gLH(fu z-*?%VR@6z+Y}%)oGx1ZDoAxR0Oef~{0bZ-+y#G_&Ijeb$xCHxJThod=^*=-T81d^; z*xv;XUr!tk>w%+bC7f}Z={($-v`A+~9?FOLf4L97hmlssS;zc5toOGkmT~f!Cx3za zxn-O$nZuqZ`Pa;c`oQ`J^ba%ppCv9}#`DT(?=&;M{~u+QaV{|9`685GW2XI{GLCNx z<*)K$k{4$_%;}e9&Vc-({>{uU!u*Q%Z)1Lq%TtFL_m_R?Wt>Ku$BS*1EfEepTJsoD z>38@_XZlUfapoS8U@yJAQ+lh;k6v$7Nw456A=cmXiL@#@t2B=h6N*}*W_m@Z_2)Xi z*aP{AE?UWH$Gir(etIRRD>L<%o1MX51nf^tyV)tWgUa9M1^9K0^eRpn&1QbD;*?|g zi|~9i(yHP_Gk3m%>xn8(b!K{gP{pasT;U$rA1YPFX{0&F-v~G!>?dj-DmFrWR`cEB z^wT^>6ov7YlwQ@zrTAh1#BZH`tCRR8=5LJVcIme}Czww`f9srH(|K+u%5yF97qy*! zn$38r?d;l(ax-3QJ5gWh^6L7Xm{!~Q@vvrpE~Fn_w61erbB?$Iw&Vm;?I&1QVobEaxG>D6;e9}P~go-_OVKze=B>pAC6XgQxZuJ2sXoGa*i3iX}v zlPJ#>^gV?JPMYQ%Q3TGnSmGXM&5tP05faMp6Ahi1Guj@{PYs>8Ur2rv?2n_ot7h~4 zmxfNh<^rDI8amC+kv{q3hE6-p#$PmaqA#G__=`qPbz=4xjhueWq~FNds@dERG;(@e zM18V1ARXdg*6bg77{~j)&S1@^zuoH$HFDUOMENq!wBAZ-cCT~amEio|=VWWn5ed-W zho;}>oM$=p_ZTPpY9RfC@i9*RAIPRWvCeT~_II&P+%+xd^2Iu>HBPJLehArabMOftro|_Rh;DzAjIDXF16^z4p#lW=gNU zGqpV0&k;+ZerhDNcNS_k_1WI}xngko4>`YSHt9X&Tqb7w4>{pc7~k}-hn!lslKl}I z;d>bA4>?b3HtpTP*?Jqw&G>rQ*+tCl{jgK(b}i@r^{^A8+2rqGr)qVb9{b0R&h46q z`J?pxSVyO>W_bT?Kl;Cp&H;+g`R(YOXQuk-=v1$P_Q?M7^p1|IrP=@Jt++q%m=mr! z$Nv)Wwjz%?WmtY~1z(9OAx<+tuZd3UD{%Nqc1E7IL*$nxjzh4*vQ zdpJ#*N9p)I95{lF`SIt2Ji2HPrxo*J<_9#J_UPd}#PYjfKX9_>;XKNGH>{^n{|U`G z{uaR7iu7>$vV0VrzuBJH(;39_X~5N!dpfVOywOa||KrXmmL~#lEAqHAQL}09C!E;3 zbbE09KH;?1Y})$?XLWs)oA&PICcAf_x0rXy|7*B&wEVzFL+G)148r%dUDkNKK(_H zQUB-k!5*XjmGoCb^k4JjsBdSC@EG;|8LxYc`lT}7a;EC~80P=&J#4Sh&TL}6J}I9u z+F26Bw`7bBNpFH@57VoYG09_0uW`l{k1@UEjANuVyUv81>)D_&7v=xhF^c85t`*M*RgDt2{>i6&b5T^w)TD)L)me z&STWyk+H#J)IXAu7oxw_lcWC0j4wP!{RFk%ztmqNTkY`}^((jf z+GEtev(>>6{d`YO=^yr((m(1krGGp`zrd5D{(Y@Zc#Qfft$y?v_1m>N9io5MlcRpu zR_8oM{XVVEdyM)ytuBS=U-9IqKdRMLk5PYet7{&k{(@FE+yw`Zcg0Ngx1yELW7OZ! z%I`7iAIX59Eh?m6+>>MaJ6lC~jQU4fmGT(%&$TKSqF=$2qyDv4Q68gy(bhM6jQSN@ z-x8u<&6A`4?X7R~81?J7uI@4FC$_E?qF=|8qkikwbv;J?&aE4GjQY>DhM#LFRQ`BR zj{2{*PVgA@N4IY7G3xiuXc3~H>d8_6z1Ha-qy7i2TX~H7t6R4T(ZAo5qyCoG4|t6F zds{!~G3pnz?iixq*^{IGxz>+*jQW4J#&6ow_(J^>nLR`FpYY_UUorDZk5Ruy=F=Xd z{=J#c`L?pZ{SoH-Nb7|Vdxoh$CS~^b^wC~g5Tm^n83RM~2YK-^Klf+8rG3t-VeA8pppOE=>i2gWFj{37Q z$9s(WA7)PUnDnQH=)dR5QGZS5bdOPgOXf_EQGajdoDltao*ea$WG?U+^?%M>~$^(8TH1Fo9!f*@-miE*>$oqMSg((KqQJLZv#GBF-~JH!QO!fdV^Cj% zvI=}Bn3qRDt!Mq{bPIN zWnJ(X+ha%8MUSyP;!>~p)(543AnSME31VG;KV{i&_4}}VCco0Hui2DOx-pumzVfo9 z+nl*GM)(V9*9Z*yyDHui6G>vQ}~P~MeUx4B8oP2hRL%B&i0Tjo=`Kh<)3 z7}oahbf;=I_V04%X*Txna+h#?%Ku&N4ra=K1J`OAT>eIGG0jH5ky}Rd5Ya^EuaR3f zNM51MeeOQe*XNa^+r+vmF3>)=wQ1_c5$pciq)oEhAxPf5O^W-v=7KQ#{$8d#mYKf4 zm+4N?Y|5AE&JEJ{iA;Bi<{@G`jGP{AGTpO<em5 zw}R#&0`ELuXp`;U!dwa3M|W(SO8~qrOjc@|gT}fKk7Fvo3D!p!`p5^QfB~#IxFTa|Z?SqBgzUw+nG^cU~cW z+FhsF)b}&)7eR8Lc*gyY<{{!q@CV3yLge`&e4OJ?fRdy%d&W&~M&sof@V6<=o^|_c zHuc}v&0%>{Lw(yZBFs&{Lw(S z1T&pK8t9fI=JQ7b-8#&4{%DX}*D##lm@Hm$?`Ed+NH4jKm}x(3usbvf)63D%Ggr46 z>>kxTjQ4kP+{ENSc{jGnai0z1|Fn6{9T~*O+KhA;5c}_ofbU_n8Rafz#^-StfInr% z^U+s6#TiG|)9mo6`_?ybUdF~A6 zTcN*K_RV)cWLD7MEBh9>tC`=0@mSgSfxA_+NpGRMN3$6Z3*CHn!V6HUMT(| z_iUl~i`+{bzXJHXr0hj*g%;Reu-=9BLwfdyZZ*v&y~S=_%_hCYZX=G5-+ybGz1WQ_ z6n}}ERw(`wH=E->3FU8^y~OQMNdA%AmF2HPO=o9+bbs@2fb$hSvX{9%i1~f5Wo~{Ol;?<%@ci&#sby}tY#m<=hv!kxLj0-3dc8U* zd!@UU*na|^mkiDR#NEt%@i}~+{E53ONdGO6XWx(Z#_RNU#;kVRX{P!bl)c(L(w6dv z&%weAnhr{H=0gzUBMSz^xbTKC@e7~j)r8%;;(n#cS^yT5S!cXWMz4*9qAFJi;)u!#8zngaOuTnaDE$Iup)7GNmF z=Wqr_MC1SCpC#JBnPUt)UOXV|+CEgIwEAN>9nGURJ7oK?d7 zpMWz?e&`f|7odO3GeJk-a0p40WI#PPEvr|SW|r{P}p zuk0N-^;g#^U%}}b{or(MNOvvQk4f*VA!tvEdM{(B#HadQ+UxVX4$iWmyeIc7Q@kI9dhw|G{4@Go4Tra15Tz|bkyipPK+hJlxS!Y1{XmIN zxIdG9Thy(C@ug^`LzAA(`IchoI?Rs}_3|;DfZW*~V9c){`XBa}ayo>53TFvTe3WDT zVLBIIAbW{}k;&fQ$x(y!P5Pl>K>pDcvfEJmB}*i8{~4m+iG(_bXSirDFOTxu6YDt| zui>919@q5_^?HuDE!J-|{y+X%;^c1-L|ftz+K;x`KT0ub8p@UEfbSMYJL0vIDEEm! z!?7M*u{9)}AE#n`Ta?p!QmjO~pg&mW%Mq1yefh)`&910F80CJ^5yNQsr~fSR|LkBb z{{LG)IIjOE+Ux(>`S1Pt|FilLmMEtExh-DT?+RPug#$R?EOE8~LtBhxe{FasJUd7K zX0B`h0P#=Fqxj+4U*P}apSf=Qm@SMyT@Gt@w0|%7arCFv*q{HP-x&r^sr|PUgLr;j z#_O?A`8d5^p!o#tRR=#~MN6@f{mh%_SHMrz2=OzCgCTkFGre@keh&2Yx(o7C$j?E) z*M1Jxd4>EOlyAt#XvY?9bb3-Ofb_83=K6hl-jpm?o_r+FpZDtc(yNynT^|JNQ=C60 zeuws@I1Bz7=PN(A&$#C(T@!ve2j#Yy0P9Sgf6e;k8%P(gUs^-)OZ`EiSr-q}>k3QU z1@jk{!>-D80qVRe&%J7fkV+rtj zB*gEn^^{n%8Lc?tB7_m}s9W2M)=Hip>SO(4OsY32e&zmp>qmIq5!?0ng85CaTVPB2 zJlgY%mw6p)%1iMA_b2B1|Ecg7$UElWgp^-Pn6TqH%sm1lIQq?k{BL@2IKVZ9s6tj?!11S_Wkv894E2I|N8pXkn|n~e~j@dzlHOU^)wCoBgTk-pUU~yZ2CdK ze^b9O{oWGe&yfCO#mL^Nl7G!+ytKTCa>?W4#_eVLrwOUuP5a+i&y1VU{$={N>7R7J zc76Xc`hORG4et(NJyLmW(G0#7fV_(Pk&(~-63Ywk4RZac$p1Yy^k{bapTW4q{4CP*r!A_^B*t|E%4yvI-@7fulGhJ6zE1w%7Qetg0FJjtFyG+# zPtc(wl6B}4sd^rA#iP95+4K{oOZmO=crfj4LQ@Zhs~d^+?eqL-sNKEaU_KPDOB|lxeS-8{ zt%vK8DsUzm>&MjdKMhTPG$H8)#&w5VF@5Mymni(ZaZ2@Ni`%&#U#~*>`nzzyUQgP3 zof{D$#iOfmouzmm%Mzh>QI7fgT<_D`qOxAcNnR%_@u6-%NB0+8|83#K-Vfk9mHJnpA05^A6SjC# z*8}W(>-!WX#=^7Dz`E8F{q*>U_s1-1C({p1dSN=geick0D=r^ey3Nx9;f4&l>-4{JROC)6Y2r`)!n8CY({hdB&8-?B~?w_4bngP(Qw3?>Cy~LhyWG5?)tg9gHK~e`)Y+a6C&;d=uIn zAMUsJVtnQKZDW`0ksSR%VSP({!uuO0pZWTEtnKCdpSFY1H{lAtuO6ZIG2!>(`%*cm zUzl~BCC2D^{oki&=2;U?3bE6c%aM_V>B9b_z7JBo?hW)qlAH9U=*IhqW*;V0ewxb@ zdVRTmjtk!j)#(N7y~OjDxlZ|j=bqr7u)R=@?Tq?1_$#!J&p9w3@U%@l4E+VXjJWVI zhDF3Zu%5NyIeO`R7>0|7VI60SV%~j@Nr%#v+Aj7d%D3Z{&%_JP55^-s$`ATa(xd#~ zeleymAU~KcKG!$*SH|9r(j`3~=hwYX@89JkP|yFj>QT7@_i0qGirdrScJX=b`ETRD z#^(ztv<2Nq(tR)b3G&xw9=Q>l>y~(p_a7+yr+R^Sh4UfBH~Ky|aPENeW6}%gh30bz zug5VTxLz8n*Y_rWp?bz1_-cLMZVU47QkeQFd_QmE!Ma4R>uoVYhsM4M1L>H0xew+Y ztXEUc^7{S*&PVBV;dwsW`KRSH?Pc!&jh`;8e|>sJuW-CTenacCa6I_V@h&Wf?X`Dd z4(wC(ji!09Hhe1%{jbU20zL;}<_X$|F#huT{qXadh0`m{lK02eb^GJyzQSuy=nv+8 zI3mIkqo6JDzILE4k0n0T=RgAYJ)!vwm78`A?eA0{fqu~W7tDWvsUD;-*Uf%eaBB?@Sn@^=*F60Qp)<`Jnow>$uPG z_A;v1YO^tP#3e3=xsRvkLGWBqufG-7dmvu0J*+2_ACvFUee&mdAI-!&$LFVLy(am2 zh4Sps^}snOIu8TS59VTd0`c&=c}@`;V!rUXE!ID_SE&4-GTJ$pPxWZ(*@R}CnR5B{ z{j)6w!E=z{b>xk%|H$i%@%lMbV4a8KJ-FW-WPfPF8`-_Tbw;SUdWlU zoA4UX4@N#nw`agFntpP}I?AVsm#z2h0`Z>aeQtBV(L&!(1nyV<83+7zVLO5A#=n?+ z7=LBbH`hbUVcH|~dMMv0Ug$Up)iZv>tP3CFaXv@;J4e)kZyN>g7n^kcX=uu2_CG?O zKbhx06yEsx)Blv7t@};LIX4(5e|=r?eCg=<68pbC7YF^_JXa3QSLivp!hGZTcOcIn zV>f<20NV|(VD3Wfi?|6saUE-Ihod|SHSuD^bL zKlrlsh_BBdUH|+1 z4b$h}En(~tUvH1D|GmB4C1_k3d&JkI_BlaJP|M&LygcmM9apC-;J-U8ld&Y0<)AIz48_YlP_4ercjqPDM zvHozKgwJ)K;qx#r>Ch2h@jlZ(i|1p%0v)I>&U-MH#+3pWGMf|y!>D7aeA1a;B%G%zCM2x@5b$5(!0?)&BE6UxAQ+4 zN5=kz9XNgh^+jAbzbL2cf&7|wH|t+BzW%YDJZ_~X|{2Qff>b()4H=z*TU*K~>rhk;w z^PA-TYO}%rXPidq5X%-8}KVM&aXeO8mf0Ae_+amc5(mmJN-P%JdZTzd8N2t?-wa? zU<>VQ{;Wga4dRFDU(Xf!`KJjBm&=sz`p`TtFz1>I>jn17=z4%nJMMiC+lBV)vAizt zgO`PUdEBqP?{_SpPn>`d+bc=0Uu-@nD8+7G*O`5KIwu&oZk}hGkm6ZlzV46ko+tN9 zb6$QH_uJ6+!u@Q$eqeuEm-)B@UI>GYY+S& zgpY|gM0b&Bbq9VD{{JccZ=!e>>^}>-eS!Ol+jH2N!=4=W(P0_*QUj(_QH;=`556pq?1TJZSVerq{J9Qq z7rU9uTPUwBs_4)s+H=@nhYdtYo9r}}7&aHB#SgGMem{g4A#5)uv7IQ<2Hu8vT11KZ zFscWLYRuJ`qr^4v4kO_@g_A@y%;J+p6_p65yJm=bDg$<{mx#t{BCHNq0Ea=iTEwgN za2j+IguCHOzjDrSeM~+ZIrdalGiXy)b-oWPUA3}!wwu${@%Ca6}Auf zLiOxg_(c!9E6YF9*L|XwX6P3>-P86bs?IF<(yu*6;TQi-+kIKyOLPS*4WP9jxYZIV zvadJ~r$W+!ABCr1P(C>bRtHs3cE)m_l<^9G>FSIes?)zJ-{ADCs1C7~D4{k;O23NA298uY zx?B-ZE^N0dY8;1C1+`}{FT^h(rm0>ctv`Gz*6t;+ylHASmv=T_pUvf7$muTR@*WUN zPr(;Q)d7X!JBrFRpTos!nYOcD9aAUZsd^q?|3+0&(a^8qcUm|fxm>R8Ub(Q}S9bQW zelJmLGJGl3$!DIg@R#^{IP=w$@YMbd=cF16^*-M@pm5x*fDm~tTqmxg>*KIfMa9B6 zIPM(x>^$|65Wj+*=Nf<)@>NkYVD(=a!n?svH3*l&Y5gdxii&~pPy=`_jH@~R-vQARo@R9QowO#vtnoNpe-^Gss!UY_X4xEHrm6=0^^D9^r5nL7O8CN@TFFA3 zhp+~ubHz7FB*SSo*DYz`I4-uArSt295lsH(m~Qvl?kQbw&E2b9Z&$fp zPU&__Q>VB+X}tMFPwQ5w$38BF{WyHtt)dn{`ommhVgJ4=!!7FHRTO<8^RlkT$>JpU z>neJ@f9Ouq{wm6vr2W`3w}$fzyj_Up#&Hef-l+%uc(*%4oq)F&4nueg^yh1;p3@Ti z%(remXD7U^d%~?@?*jQ`F+;rytk8ZezOr9!A&ddJPsHo%7~T#2&nFr?Sbq@^l775%2K?t;{&+Y52L2B0 z`;THiGF7o_)Lvl^!55AEovoW-oKFV5ijaP~zlAdZ{4d(61>DA8Pmk{h{WbUt=-}_P zA0R*23G6n4@ihWMZ0FJblGaLShY1kYnFL?p^=CTxrP25O2gEbbuNU}x+Sm`4`rAAB z1)Meh&JOzTO@8V>TY=H<@Amg}9)^B<&`cb?bz?`cv0Cp$I5W;nya-rW#?1+3cP z%X)gA=^ggDqF>gj;ovU}4q|&g=)u%qt9c>%nOR{`7KQaxL+A&qd7k?;jOM%bAV2I1M|9v#<6Q=}>pYOvqI6LxTd=#Pl+)|_#+i!2b4yOVd6=`o{{WOIT>#)$?D#7XcxB48q@vP~YRdfTVx52Ir z^%hpNg*^b?YAWmBU_Vw4!;@BdNVi1MlNOe*EX03pu7FnoA#D^1sTJDdD$f3S<~Jh*5!U$3I7!T6XgI&iym<**lr z8+3T7=rQdNzYpun*ZXoldU4p5!wz1E_2PtgwJ7Yx;ci|22yx88UtpOmHfTS3fA|Iq z{eLxIwngokZBcukw01y!!Y>{3^)!pxH;v`x9a?``9G2ve{AR~+n!n0H`6=E8=gZH9 z=oWqqRs!f>XuWkt(6}8M-rhbBr!pErKl}#X3Z57~NSD_V$4tKMZh6>FgSec7xLlW6 ze%byW=IPJFe{o8~se+y1mu>uIsjtK5t8$Bl$cL~G^v|>5nG%1Y{Eu+UhvP>U3-e)l zixfL%uY_?FX&tjW!Ms$~f6S)wdd$8L#=~To`KTP_eO2Mq_2b289(=J_6`y(!zA#>F z9JkL@9j;fiIb6u$e6;~ihuFoJF|Xk;*OS+V{@1_wcAj7M@Oa4A^?jgtzO@PRmm;gE zyeby7S3UJ5wBuozpXxyV(n=iHcG}seSpPihU*+~Ypxb9}5o)giB`93s9B27)Zr7{a z&Pvy-Pbi!E{Z+OfuiMWDD^c=W;VcigX&jffXyxhk zR3glI1?n|2B2&Ew>xXg?@p}CnWyLE@|7O144X&e~?;R1P(_gRVtFK`G8yGQP-444$ z10$-a4?urr1g#qu0OL4Y64BV#7p_;ftJ$>PtHt@Zz;i+Um24p~-&rO5D;(GDAjEO~ zFod{{@8qw=+uh&7d!uo3Ydezn53I1SnWLGY4SDV-GEbqYAJ8-!=aJe#l z$uOTz7Jaz<8=M6&pPY&8EYXkuUZk_cb;vFV7s2={TIzs<^;)%5dtVydUv+@6JnRB? zDK%8rE3DtSUfav3>f<_ZzFud&U8*myhx_unyDzW1$8r2|+z$OEjo<#V2kctF{g@21 z;Yn?&&c0-r|I7M2`@)CfIFGldofTqzsrI^jN5k6N-+>=GSgOCg2PHQRnmnf^h>;vnhl#B2_G`mo*Bt3JM8 z2f{k9RDX{%2Em?Z>Dk<`7IJy|%XfdG{GWrf$` zsdSGjDbFVDaEoZeLKXH#vy&*3niFwmX&Wp0d%O z9w9*>G*QfgHzn z$FW~1@1uT4esAkdH2-bA$487&)2UqE8bTK_d;yX zSz${1`&nTle2I|1UKK|8UI)M3t3qiVZ@r4*kmlWC6{;y*|BtIsONX;7)Nt0reNbGv z`RYr!@7-8ozM2f#P;dP`$qdcj=rS{DM5RR|EM5+j)cSz8o!NSSEJe~fvEXL1yY;4pT>fQ>=DlUy50ehU2Z1lL=bh#fk`rfkVG<>ncNg5cVP+2C2ByF1c-o!ix3nPb;3naQ4!-3HEJTL zpixm!aT#@@xI~Q_B`9i?L2!wR3d^WbQP2BTf5Ucr_WtjE&U2oFe!sW6y1H&%Rb5>@ z>AuN1UN!IMdbm8>^jW$1g|D-ZxBL0L9_IQ!%Jo0M+b4Kix0vlnx0vU3fX_>Wyr0Cp z$zqOM5f=0OrE>UG4)5Y{E)JJ>a@!2=>3_pndv`#fLvx&>mWHGNRO%`)q?Wi!diOYLXr~9_oGMhPk zGy6AleXZntuH^h<-iP>8T-)S&*(ldE?MD2{l-7mwF@9`!Ow;WBLR7fMt4`b(;9Jph z9`ZL=2VZx$89Okan&e8C>%)&*&HJrJgnt*mE{jp7X^uzD_^2Frx)fO-JD@brGK8Xk zgn2mDF%5G)L($E4rRZPa_*CUMkE4oC>zWQ>t`j|DnWhiLbuU&`^g-Nj#wdzzw!igU zZbg6i2Q&VNA5AsaZ9dd#{QAYUp6g{j*GntcODosQZN@K1@06@C{Y|uc5A-sOi$iQ- zI*khxW18icT_#|iG3{q6AL?ZX&C@=#{Dk}4%d%GJbf3FCt5c)v)J?48wAZ=b-ZjSH zJiVMXO`DDWn5v9dKS6o-X8kO-V_qAB?Z>el#P(9GxBn|^n_l#u5JwU3#)s((&)t^$ zF~6!D(Z=PSte=nh;NlVG`a;~7594|ME?9zj5xvfJDoE9&0*#GBDoGQS#Oo`<2sD`@{TN! zGq#Y&#b=_oX-aPL;mK*&8xCER@q)y8s_xKgDv;#Vo;8kN#rr_xziuTriys5210Rc!z_sdQf2 z)QjP6S1$#(sEfg^>N0So0&i^_Rh2`fFg9-U9~ocfsBI``{j(`b&@gG2Fd+5bV=G z2lwk=fk9cW!?Hw2WQmT-5*?Ez8jvL#lqEVLOC&5*BHcnIvRSA^5f&JH62bMBRB(eO9c;CX05@53!8VHTI-7+5BX*nC*Wtj?g zS?a)mc(TB&3FooFrEb+Mi&@obc0F8KfzSvP0(rdf-Ykpm~DKN z8-u55)Zg=r1MqPhhe4n5C0Js73yv|q2g{5>u*&!i9A~I`I17dqoMc4gMTp5VhFT*U zK6OR{IKxN*>kTJ3$H)Tb8988+kq<65Xyj=&d~h!}O2L)J8KB>&1lJhjz;(t%aJ?}F z++ds!wi+|QO-2LQW?T%m8<&DxjK$zqV;R_KTnTPBt_61*YrtK`4PcjX3m7nN2X`Br zz&*yjV2|+t*lRot_8Fbve&b27-*^TL8qb4=jR1JWcojTqya66F-T?=UK5)?Z5IkXg z3JU8XP`4fdZPstV2v>?k^#X8?wH};jZ3LUF zmw=0{i@;`UGl*wW;7aQ?px?S0Tw`4auCv|@uD5OkH(2ikTdi&2CTj=SW_<{3w>}DP zv2F*qTAv0xt^WYGTVDcqT6crHtgnMz*0;fcbuYNvx*x>18^9jxXJD`O3$V|66x?q; z4)$Ar1cTOJ!NXQD8uf3rfJd!Ez+=`ZaKIV|4qAtTC#-ap7q($=>$XhLW;+9IEW(xz zx5IV{7-#cSUHXcUbLqfs;|j7HJaFd9XjVKj=m z!e|uD4x>>tFN{V}cNmSLzAzd^OTuUr9TP^QXjvGIqE%ruijE7TQFKxmot@e+Iy-e? zbarNh$vO|Cb2KMR)_EA!c~cnG=i)FrYs+Q$l`_0vhF>GYuan`|%kUdy_*NNyQy5*T z+rsF&)*eRJwJl+EUE3N)XQwla&dyGmlU*|AE*Wz`#=J-R^hlpx>C-3E+Aq`UmuUrM zT8Cv?M`T(@Wm?B%S_3kzL7CPGnU)wrEkPebZO=A@T0+DSY6*@Z)Dq%`P)kS}Lgzho z2%UH55IXO!A#~oehtPS?8$##ZJ%rA?ZwQ_Dk|ETF#|)wKUN(fzd)1K7b5wEHkTv-+ zc#av&ju95nCPsz7n;kB?!Y7Rm7lH6;)JGy^ABmKGBvST~NIDB;k#rWSBIzuQitQBB>tQBdH#?L{dF$ zjih?$jHG(l9!d4EGm`3IS0vR#S0uInKqR&Q-I3J(_e4_r?}?=L-zQVqFU#I9%N~?v zKP=0BM3()iEc-E8_5oS;L0R?_vh2c6W!LRgcAK5b9$}}lJM2{UI6IX+$xdZYwNu%h zb}GBePG!%wQ`z(E)Zg89>hC@~mAAxBIY^cY>YDJIPMvt+i8m z>+DqC8Fngfy`9QC$4=#)XQ%Qu*{QsX?Nr`oJN5VFcIxjd?bP4>cIxkI?9|`a*{Q#; zw^M)LV5k1xYN!6b$xi*f%})Kj-A?^|i=F!WRy+0gPCNDY?RM(#JMGlpciE}GciE}G z2kg|}ciXAI@3GUYsmD&Urd~VEn)>WC>h8DGtf}8lv!Yg3(xYhBWQ(F%Q$!TanjBFyYl@4aSyNIJ&6-l9Xx8M6 zqFIwGie^pOQ8a7Hi~0z3N6~!A7e(`>lBike7h|I4f@M)nU{%y*;JB#E!3j}Ufs>;A zU~Lr5tm>k^1!qLj%&I<$W>#~eXl6Apie^?#Q8cq!92EgJN70;Wc@)j5Rz}gB${$5@ zsx?t-5!z0sHec~QO|-q zqi9yPD~e`iT~RbE3q*Cne|J2QPF9bRy!qX^vPC;OS-wT&MK1^4(N}`L=#^ke z^flm^Xg^pMy$a*ogy-b_^YrC&Rd7 z?#~Ys>ta5@`o{X04*1_3ljXrWL(Ghv2)w=QX1H5p=vr_`%tp93Atdg*u@|L?*^KzN z#5{{)L4qa8A~3es`vnW#>MYF zB}}Z0zZ3Mwzf2+HUjx_0_kio;-$lp`GGuG~`|#Nm|1sDW9|YUupUFch;y*{6TjP&_ zo$+6T+a-6#e+&1n_~T$#`~Vn;{|Ve3{|mS${x`5E9@8GtFVhXiYj7Wqw}D6EBf+Eb zG2pTIFHwpCB8mPjDlKyu?D#op>tfOB@T9BvyfA632sOiD!dViK|gp z;}WOBJt2|mc2eRFq*9w$hg9kkr-L(+sGYPYQHrTUDMjZ{O3^ix<_XzDX`YZbl-h=S zD4i+aP+F5|O75YxxMa#zbMpJ(^5l=fmB~Kr^(TJ?_nPDxNO!#qxj}|(l_59DkZm$# zy9~J{`3AJNt;xQ;FwvPjfMd5OH{jS^$%_$NS8_UPH6V}OE#uiECe@q@bklc^724!p_h4$(xR2Ewbl_esD_Qpw{BYV75iXr%~HTO6$qSo7|*3HH~6(rcrFJG&(jrjgHMrqhsA^bgVCp=8z?6G>06M zMsvurw8a=t%4G~yX*8P}mqxRx329V6lhSB5Rhve$sk$_pP0dK7*;IWR&8Ft0(O5Ar zjb>9#X*8Q!oJO;$<}{j3El;D_)XFrPP5IMkHnk>=W>f3ZXg0Mzjb>9D(r7l-n)Ve+ zafi&qrZk#UwWZOVsy&V7R9n($PPH}dJB*6kP`-8uq2&0 zCY@SiSvs}Gs&r~~3pqEr}MP|si1z+>3nTUmv>S!hAlFNtulsA z8N+rN!!EhEOYRNGy}RY!J#uf4jK5dL-zVeWFXQi*@dsu6htp|ZeI%V)!qIeU3CGf@ z4Gf^9Xou<422P|?8xR@P2J{SS1GWrm0}&b21{@jG2I4ZP4J2hy8%WKdHsH*lHsH#j zHjte`Z6Gg$+JHNQ+JG;EX4EAaboR$&(Ah7`ptE0Q_>iP_tQP0Vs8TGsjno&1p(2ROk4L2>pGl4t?Nhz zjde#esEr-Vppk7LgGRQ&3~CP|liH7-N$tm$N$n>hliH6XliE*QCbgfWOlm)=nH1ic zN$tm#N$n>)liE*SCY@h*CY@hjCY|4sOzP=lGU+UrWzt!$%De+TVnSvoJ|{aVljf_n znNPr7m-!UN|9Yg3R*lrrs%7dMWUg9et~SYBwaNUn%hb0ZPFyuIpT@CWng0L-nJ
v~0|#8;;GioKJmHE0MOHMZXT^fHtoQHC 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

3GDnA;?ULs}G8_j1PIXoLexA0+b-@FHV~f=6eb} z%b8|;3e-62Q;=oxZGXt6CyHg!MiT;oE*2h-*f!m}gt~o*MZLA{l=-%sYf8L6m#{+d zoS1U02m$&@zuS`ypOP$8hSy zgbAgXor!vx*{93wo}SDJQJZD8pFLtbJYwB);39m|Lb9Dgh=6Q=lHIZePdV$BppBWk zHidP2GD>RC(JmBB$YJ@1<9@YxBcraNuXn-Z^S`St-0?3C8^9;wC8He2&7davC`rN} z1_cz9xSZbgsB6i|4GD{vl_cf32>FdZ_IvqtG*+djTpckIr;4C=Q?W3JbSHKv1;G(V z45VYBd5me$CxxStX`uOHr?e}p{O+(COzv=zJn#YK$~{3W{IB1e=^0IJjHrJfAbb#v zb}K23m(iq3s5)l4wV6R<>~Mz>OEbR@x&$ZK;kNM_i@a!1s0FOQWxW|0@Uh2p3akeKA;~mJO|_@2(RHtz84qajw6Xg zdCdd$2dQ@=+``g0Pfz<;P;vddv~^faOT$V6uAK{gCa|Iyr-z_YaHNOT*O;3l1K$Q?livfbh8R zC`k$dmV^2=Ab+={mg7S6+k8e&XI5zV{>}mZT!*o?{5kcInuM&n`x}jl=#xY0(**bK z*qObWn=dv{9&R&P|1k7trl~_+G?*QpfOVp7~i-{_Y9`rH#k@c`E1_0KPpbTD*2VACySp7mwlf;J>NUv ze)YcjRP_9Pzorh$&}jPRXc-?+D4jN6%3pcK0~dx&7TcFqyn<74>%!03?&c|omQNR% zBd7BOZ-?jIenaB0fAWKScX;Axy64=48b1d_cb&p}7Q+#hZb?X7#Jj9{|g@Ai7nr$Dn9 z@IYf>G``y%hvZH$oicWIP`Y+;Zy9in(SjeD3fwaDOp^9G!0Z*dX-Q`7`L#p1*}l|G z$Z2N2tS-~c`|~rN;zH}Ez5@Nd?Z*9rCYGu)q6k6aQdI;(=V7_@sc;o`Zrw>jo zTm}%QH2p8RJP6q4efe{?cp)YCIPx?60g)PiJZ-rDj^X$Yh_-P>h|LPJhg^D3>kbmk zYF(0xKC+KJ0Ytl<#3j*?<>DQ>LTbL$6;FznxI-p@a+L}9khn^jvfQo6#hX(8r-d{P ze|IOy?{5r|H!)YKZ1_WBJ`on>zDol=DPp$RGr*LXu3p~cCO-KXpOT^18;64Vvs^qR zOG>GRCG~O@z2SE07yEQ6qM0m!AlWYUSEsbupJd%aq`I6UsVJ>~vDI{E^+H^+JSfo4 z=WzuA)%;T~Ew~xPVAFqEaC@LDJ>>*mE-Tf1@paRWXX#YM${?+`AKX==*@wmYnARdh zQV6#KgqEHF^vyc!1LHlm1h`Sl&LeZ#o7GXIczV(Sj`j?21N3(^dM?veQv%oTQSdQM z((SIKPrSc=9=J4YV-&=YKa6VRK+B)G%=}HMjh0n&nk<^izdmRI_iUX|%)t);M!{Cg ztPdwEckQttGw{Ru_}0iBF9=ZQ8nt-!vez0H%jMh; zG(E>V_9E@9&VW+PE@nC@lm`)*HWGrc+sZJ=cz9MA=$z+@-DhSLZ;%NGuhQ>v-{P_# z+H%V#Db(ZOD|b-KUMb@S>2d}6s((O{+?f0N z&z`+dV)#T1Sm#4726rUp8+QVJvLxUy&#&~AME*_t>^77OljTn2rRrvTVK$^sru+1j z+jj+eKSgv%wj$ctBZ*AE@BsI02Cx#y0;eT%0AYU~Ie*F0_T>1GBCYNmVE&#Vt+YFO%2#JkoB`)g zc0QFaWKSAp_b_|#6y^xNFS2s|-`is6;!;X~j`R9pvuplsu{}U>EQdh~HZA&_h^QTI zTl{!8;Y=7dlTis2Hp8 z&orME81A;`WipV`3uTy6i4hJGGPa&_qRY^G@@^2rC)K_V;q!k!XeWIK{bQk_k9i6| z{`uzCfZT6)rOcv_N!a&c71UhpE;3yz zKt5%>;wS?q+RI8oGE2`u^HWJii_K3Y83UQ{qG{h1@a7eYqNj^U?UI=K)`R)(ww{+94O1p6Agw-nhTjqqPch%b#xC7=H=%OA9a>*fk_S z|F%ac!cc;`3Z2G005FVhQ1Q&nte4CFK#-ZN1b~p1q2@BnR3$;V%fKvU?yJr6s6sz? zKN~fqs|+|}vQU{SP3XHhOm8=M`^XA1UrzGSn)l7(Gb?aNn`)h7ouS{Mmm1MobdKb; zpR=s=ty|g8D=aCZX=O5++M5( zxi%p9hmDGK376bvaM9DOgx+B53S%$*=lA(s*cYAcYmhTXi(okAIj!g%QkZ!;-AV}_Cot}lM%62mfr`jeu2jV589)&mnnHlh_8pl(zUT0|+gupjjvPo{ zeBQ~u=^`qYh@cZisPh^Y5xqm&q#{zuoJe^^lyd**^Z63a*lF>ZemUX>OO9ff3u-T* zE5Aoqe~XqI8jE!f7Tb?+i)SqCtNrB?MkOxen5uG&>t*B&S+)4Whs7S^`6AqUcYr_V zoC%j7h`5Da>@$D=2}T8zFfX}MVXDf&TRtzB5tdVI`}q6IWrX$7Wn8+PFQXlQE50n9 zcDfRZcv!j@Z!aL#{+?`~k>nWKVu4(@7m*N|3y;7kuxW}RMH7>Yg=X9pfEx#?=~5M) z-R^kzeg&y3Mnss+=amx1zzSRl=Z3d+Tq}X`#aTnHlyI{D6|DFy)EZXot0^qM2&I?4 zU&e$7q+rbD#b^9PcPpe=V0v7=%eCJ{Ob6j&IYnN*gq%Jf*2PD>?LvjkBD%9#Y`+)5 zgT>(jbc$nVvAIwhQhNb>Dt8oy)8<)!_2bgBW;#?c>PiVG-WOYA-iIPw^<&YnZ`YV0 zx0ectCS8PkUMynL@lpXMX7QUw)+s!IzrSV}=~XQLMgh50EYEU_-+H?^2up$j61%kf5I114 z&;+LrJNYkQ%mG$>!q!|7?&zLP{p*F$!||(NbJ|^aX9rSo71>3&xb%>$a!^nXbl&Gf zv1KO9UO?RL4%i&T$p7{R*}GCgb(iZ!Og!7|FFkH^LWG*b`vMnNv2A9`vuSw&Ey}_L zu#+(_U{V=DCAbR(MB=^x&T;VzSdDB*6_E=CL}ljQxgrHN3F!g`gZ2feD8O%+Vld&P zRN_LhyX|4|Z8d%UIC7-KrFxXbioff^!=3ddD3?NAgr_aKP!lUmKOCj#nU#!X&=%8$ zq63KsQ#Q#zys&c1bNw~8q~f!_NPqY9N(qcS(8&u=o=TcdO)Zu)5}{PG zh?FIB1(kNbvZ5=6bl7Dw_IED{`Z{)XsB!TUh`dQ8V&&bodS5#>FNgqVJy9$Vy`3EquWZffi!Gvmmv^ z?(sATVgYb5>76QXsTo5p;MZ_DvXMQ2?Go3v22Dl$-fh2cp`DVPKl4Z2KLmv6JDuQ* zH&1yVVID)+BLOJH^BJoQa(+p5aVP_|tL#xOR-1W$^+Iul5Rjh-S#Sm)4H^^AfjJ=Z zFNV=B>jD^4y|+xW7Nh6{H(zG>!##Yyj-z2UG$lTr&) z5HCKUjH|unq)~tCs=OfYFQ#RSIF<(<(q{bty=+n27MH zd1tFbc&*=MU)^sO`xVT$X&jh3OkIgFLZ(YH9i4y00U*Ze-#mkwWZ%%^c5TtYzZR);fkya-dDRd{|0KQ!;>!lz6~gG*K`;ET_;Lnn4?MLOC{@ zi#jxT9^j*NGU8>k|HPYda4>TN_O{PEyr$160SDd0Ko%M%a<)4+lg1aWcDPXw+!R0eIp ze2^v+rm)-l40^EwrGV3EmHGJe9Puel?-}znvqeaFl_-IiRSIJ({pF-)XF0_lnQwdC|e+}kbX2pCal_qd)>&zyJL& zwDQHW$QPqHomd8QOcl|VNIinj-`?q24hph7ak=9U4C8?c7AzhkLI%@-)VyG~Tr>Xi z$$8-OaWfM{4?JGyW46q++c>%)NK9YQvYXhcz4MOQP4ZXPt=HK&+m|kH1&1y z^r;CMtJC;(@iH+-c-{2-=SF@JBq2;YQW`Yu(o-1gDj<52zf3~2qIy%MMiU9x1r|Yy zGf4|>!d8eCm0J7|eUp~AgltBm8*!lN0?ql_bVB9xXVERG5KW|aK3F#gUwBs{F+or= z3*HLms?dsBAa9jZrqOSGwwG*)oYL(N0m6if8Pbwk2OM8BJz@PjON-!}enILG)b?jN z=q#k=xR!UuJ3`~_gUt#h^jyp5vNB$pg_FZ+gqSGZ57xK_wX@7iNVvcciT`!E2`Vb$ zfT|-7q`^Fn5jl`hM3fF^~#`W1YTLD5--mBP7?|@7^552?M#; zh6e&NB~skMl3$2?Ocy82q4}I4#x7Dj!=O+UU=TU?oCW90kUDL|qGZl$Mcq8gEL<&} zJa>jag${q5<~2r&&>Q#AoV_%nwfL-yH+0!|-&!NHzR)WxkwFzD!S*W=0p$`1$tpPu zcajbd0O%A?0VcR9?p0`t#A0bKJte$Rd#u>e;OWWXjhX|9%&%vMBek$)m#8N_Lp&|G zy^~uG(!;{fkZ16$vMIqf=Wn>MI0>Vn6ygF&QA%}V4?ntAq6=>VAmT4eK{CS_4F zL(=@_eZag&P0)g_Svl{7dtTIhc7^!rI>c=5KV_?r;+^CZZ#J6kvkT;x&z$Uz5$li^ zLF3A8n#sV=ABW@aO^eXdJH~zeU*-7mPW<_b5RZ~30HA{@JRk4+cnXM_eKn*e$FVx4Ihe>aU8mRMF6K*sUoGWi4*eS3FnbCxl z|BFBjt?IAJNIl-nD{|4Lhz_mjFAFirvZkeix;9qynNtV>fVl{d0H)`oJ%Xj+nH*r=}&VMvWnwG`ol;e>$q?a-#5Qa*oC5JN!>G)^JTq{azJR zfQhDQ(2K%Uo*(9gZE5xT9H7>EeSn!p1g|DX-}Fb`<05}-Yomrt(7gYM>3qF9XkLqo zaT}$}DGUnA4?U(l;aX1VR`fU9nyPe80T#cm$(z;D5irf#r#NSb%7zMlC){=K3plk` zzEPT;%T9?OR+6VhjrwU)KhN)vOd)Q9>J0K}r_CDU64%(r8($}6Qy-(b`n&w8bWqc_ zYNR2vIvEQr`h?dM}&Cww?CzU7p(-|;)vb-n5JD1cEx%eJP;y_?S0+ogRhl$1 zo81fbSo7Q1az~<{z^q*NF)gQ@LXK%qA;mp$*$Z$SAW?~r?8MThfV3u!Vo(rO*}3l` zOnR{|tL+qKC3CQ}!n^)``fv)&!BUwuEtS4Fh3IqsigtJNjkLsV|4Yl6iNv?wVW;a~ z3Q@96kxRUHf%n>a)PbHtFDo#tzL*zU1d0_?lJUn!{Hq$pPRdGGw`bTJ)-jw zg;mC9uzud}P9XEQ0*EnkRuUrhAe!>v__#;cOS95IQRoS$+p^zzqh&Bo=&x?exZA$z zMk>)oLaaa;2KUJJVEc&#>FDk5w2*DdqSG>XZ;L1dc@`I1hj}h1mFTbdzHuptYfkgC z-E58aB_~Sg6eqe(7lvgPzbq4OzGIKrvWH{)ve@DWl8x(XgE%vg8BBy@wiw~uL8aJh z0yCZ@2D}+*S!);RFeoZ03Z`52SNcx&c}Y=pCXw!`{JX4Wh0zR1a%b^j*(aZn=gezO zag0%z^0d4xm`m`vl{qb(d!ac>q!m)Lyj~*-v`&EtQz$~&*iZy2{rwY3?6ig(VdQ79 zFgs=C5?UK|T8sFGP9c5lCaDHc;R7MROX&}2 zRz)>)@18(+fD|g?_i&rccDjdn&0gfG$?|x3PIFEVMWWu^h(||EDxJ@hxrN))$LpvxLk=3i(efjvfxT>)^GI0Z_4;LUaCU-P`X|tqc4?UNH}uYe76Lv z?5~tbTPsBLQke@wEiS>2>t#(}al7zn##wP7X~!wmduBUx3OSi~VhfY+K=aC6*=f;> zr@LG!yIuWEpF0`y_!Ha9`gweiT?~XveA^{#iawnjw7{F5nL273^p-wXP+7GvWRozh zBz$?<8x@1=$+kj0-#{#Vn4t;p+rHec35Ay3(deAMJ<@4t;j5>Q7kojTJr{F{=fS{d z5~l%QU^sp>^7~x*BIaw)%^~YRO zJ(sJPW)+U+PjLOJK%o2x<^Z*^q_k`LDw~D%>oefJ7}P}u$s?ZZ=o%{}W)n-LCq<1A zA%4P-(9z@=9FA^)$vD#+gna=!TBL!o>d`|H-Rm(_^f0OpbWct^BHoIc2ojZU7DH=> zNmEK6(wrL|DSr;jjaY{Aty0k{16!zUYL&}z~Lu?C3uxAn`14OJ1H3k=SXddi#GJ2IfGnl09zr4I`m@7BVV zvJ&0R;^mNKT?9KeXSV#JvUBbkqPf_obA`lkz)>VJk7T?0FHPm}zL%UmBdgsbqTT!F zUSec3l-ufm8f6`b?bgCFvy!aw#ap=FFFrF^kFx+4%h7g|gJmzn#k|cSoLf)LA2<>9 z5S^^5MLJ#G8BwAs1iBFIsaFRKHa*PjfB*oRP{CPM>!JINtBuS}AW7BP=lajZf2tRC0r z-jT&P89-@9ep{DXt4==Ebd$6FVFBvpg;HmG#PBAZZW=?YIC)tyuEv^`gR^pWoa896 z!y2FC3P=ZB#<*?e^w&(>#h0GEir@f5Ifn4$Rp@B;PP!HrBo-mNsbS}2yQv) zSYo0qgJ#CVmPW#Gaey@73`ahcxaU%kTtD2La& zeSrE%mJ?z9lhy0OhG8~DwEjR3#ceOYW>gNwb*>~_Z9aaX_}3ri@vYAdDqQNofkqA~ z{V%%*13Ao{v{_uS3^?h0-Y59VN*F4|*y+A8>`k99oQbK>=O_Jf^b4OeZ(?LW-ko^@ z_v$`mKjArC0rPh|LPj%hYzNeYv>2vu86gX4X6d0)M19%%z_UBxN#3#TZF9MGJ|o8` z<#11SDwI6rpcr6w7|H-Fe~PT7N%~BGWh<5@h(zH@j)Oo!NlVyqe452%Emeg37d_2K zE&(GJiuEs0i>)&8%EUMYr;$|GG3si`J(B5WVwu)pJL0J^m++SPLH;VyM&DWWz6J7@ z(YJsA5IU4ZpCzjM07y^11^3^AU%PMLglHlkKS5_$`56yRUcUwVZ|bt4s~BHQ29o%3 z^@-aT=ILSy$yg6xbb<>%lD(?l^dd=rgp#BQ7!qbo(2s2DmlKcVj5P(xXm=LN4uSmN zWpyYJnvyRsf}7?MIQN#)Q&QO<5j?44CjopHx)zxzQL>dokLB^{kCfmQ6_pwpzYif+^|$ zfJlSY+XNB*^mNFa;_YqzW`LHG)8}2b?KD5y^NtR&#Rp>Fv;^knohDqD zD9e^dqZQ%-zv+=(lF^f-Bq8I%upy`sDhye|v95*p=0o)@a{|W~Cky%~y&Kp0h0W)Q zoGroE9wu*K=YZ~1W>))@Xh>p4Y}CxCK#a>tmh+|^LI&FY5}#-N*C~Y_ZEbkgW5*)cpNch3VyG?L$!8F7Sbmk zaZ-c}C?`PdB&YH2Q;v)w{jfMpiFDY+Fek-H6!qKT1C+2ApXSXRUcY+@SP>fzS%r^F zZo_{JmYff)ozf}LKQ_I+q2;ay7qN!_=){FX~X-?I3 zsgrZN`nxS5xIA`2jt|VpV~@Z4SM^uh7s?B>aml<8;XoX!>{7C`!X=Gh=X4$iw}@_E zNC>9(v%SYyk3$NB_104V@Zu-$7mGX|VF%;8vlQ&4wyzv{n5->$^;wK3a)zxPHa}ae zab>_MHawt~S}_1vc(<(Dhqra=r(lZ0R0GbQ=5QSo8YICI`N&L(Dt@Vm zli}4(C!XswIBV1Uv~w8edbP)oa*Q$`w#DsEU!o`>L?r)_oR3SDxyD}ArQ5;bX@Zb{ zIXbL>@a1@3-;v8}?1#_KKa?_QpP{tbv2~sV6LOPxc@CD=>vR|D1HtsqD+7pRW}{#! z=(8n^BYYA23f{J@gX-RuP2l5_{8BahhG@ReIQzg<>fu+hrAH;n7X1*p0dpF#|aRgYI%QZsZ93# znW?$s(%Ccuj!PZ*3vu9J)~i?MNDWXuv3w(=q{qlhdU({oPr`X8uRcj_iqkh}%3iF=?r~Z9^-Gfo4~yl-WwuB8PWsLD#!pEhI_j?q zM5f7$k{GaDk&tqLErBrW#s7ZW`~~%QMlX!`UqTK67f)JXlzuG9p2O1)5lYi-eo9q6 zPG_{)>EuXQIbcMMcJ8)}Y_)oL&d`?~7>k5P81v=BWC{A>5|j(4%oZQ=?>K$JL*;;B zpLU<*_a?$KKIG&WYr5OyCr&{RTK-i3zRx<+molG|5Jk~=P614kQ$Xf8yWkY`FS%Zb z`h21EWLAk70p1n9>b^rlc6|ET!J^}yWhg>V&hs>5FO><&Y-d=!IWrMQ3R@QMh)W6W zUu@Y3D2K_|W>JR`UgeVckRJyU`Xu6&ujbD+=b7oNoT0}uD835xEJ_2rxVZ*LKrmB( zK=8@~MwX(Th#-;`86(RLR|pV5<(<7F37MjrF#nM1{1V8FmGry9i{pI`M%@%gt%BE5 zr&Ml}z}{mgez5I9d^wzKt0&3nK?7(H`~8O;kt_6gvU{^w^pL21w!5#lSgj}TBxM3h z!jX1`?a9+mXnEnD9w5eyYsrP=`ibW~L|F5d%MCiLwQLNx71|$kHcR2FFDucLuaKEGkyvD40ItYrJxn>0PZ|HSJsVxt>ua}kR( z!a$cuo)UwlS2LmfdAl9)T#_@*)aat*33vRHpL-6cVb{4EH%C~^0qD)}F88WOn+2il zW|8HkzdEfBn$(G9N$mX!n(w5nlu^MTh^8_r?h z_~u-Y2a_nDlZp`wbkfVO+Z8HFk#CQZaNjJ+Opr+RkedbY;g7;rl7RCaPB)iO3eike zo?KwJZ9D;Y620J{OWl>i6kdHF;Thyj(%^~k4U+~@00i3I{eog`VPMR{kGI}#YZKMY zP4sjL+C771AWccIHD&Atc3qBki$5tYNW+s;h?MoaG*h6oP8^h2_Y1i6x}&r-Owhf{ zR-VfCvOQebf>24RN~{tH9~n+wJeoQylQ!9>dCGYhJj6Q_d_Lc350i=G8|z`bO?E_{ zgXgNI`a;~xWxFmsz;U6=u|te9DxaL9eG*c{ML-w99AH7DnRm!;=mrkP|9SAQ>S3M5 zhpQVtA$vr7dW_d~eV$GsG~egAwn$I-(|$ur^1ds0pU21zWa_=j!5kCsjZ}r%Lvm!4 zhC2js=dnj#m3RoiW@$`B7_BS^uBu3A%AMB%HI}qe)59F z^C2i_wYV5*+Y~K?C5N?UV{(V2??3P3Ar2MlMj* zA<<=JqXoP~wx{GD7S^ptx#WS?4jAL}cd-kp+3&PMCu9{`kyDe36{fBDZK*!C4L*?z zxN^0Nl{=pogHt|lEtWN?C&m>~x*nGp8${k!;iFjQ7Q;HWs@!X>TEDlnh(TLs_hb<+ z%8qch3mA846G#bUy-nwja6#J;8JFj5xmv3_9%IfXoA$aKXOQI1w%HcctLvo zlpy0=f7#cMp8k!O|rSp z9bqd1h!Va$Ov+3dGzlfmN_umQ?tV1Z1{%%A(kk1kQ$Vfr5`D=DLRk9op;!rp!v)>3 z9(l}mDN2Rok}2z9X43lU$}}k0tQ}jFo`E5aR~7_w(j%^*T$$fqu;vvgfX&K&4#r|F zhohfW;RNGTxKKM$>0~{td?1%(u<763U*x{vi;+3E`5Grb;w+cbI!mkv`x~Wl!nKbB zz;cho;0t;MPeNjNDJl_0eHGud4J)>N8pbBi7fzHCZ-F3L6Lg|orkY(PiZ@a&JKJ$z zk`;5OIHq~@dPuH(mMybfQQKlIb=z$Dc4W(lsI{&tff8f!!S{~dv(QuZb;wi6FHYa& zeqJQY+!La;cUf#_V4;BQ@wP^ObDNi>0|>CeXYLv?#zm|d>>r{!0vCzXLuC;&W(=gn z2gpOcQOW?syspO|2(hA+2wSUVhPLmw>hf@WD(TSY;Tn3)l+fuZr=M^>t{&2tRf(n3 zAIX;i6Rb_28mL*s`JftXd!ug?(crV^JWdXS%b>(3jJ_c?W53COasq^tTQgvhM`t*< z@DVv}A!iu;CnxJ7!*CYJ2kH!S7b#cw>Sj2e>b)_q#5A!$-*G(nBxp#vav&5`RU%(R ztlnb5$~}Z1OfS;X(aYd|v1AaLkr1qBclb7!9ZBpjqIn)jd_h(s-7*>AfY6<3PP=rQ zCUd3-NlvlFV3*-gM|Ran0vNH@Bp3pnd2-&-`T*b;|3&RFb41YpKojSGKIYz^?yDE5 zrWyGN7cFzL6Vk(E;p_+>6~C~DIoGhy+Nn7hx|Y42xv{bPN$UNRAC0t<4MtdGQkg%% zB9mqGOdMfIVrOBmn74?yc2d;i^5arKZZAFIbWE)o7EKJ5 zCh6Clv*7di;ic(djM*m5F4)?oHvfJdM}FbP}6Ye_5vcQ(;fy zzu&7=z$DC_Ad<-vz;l^xK7*~Eu@(Er&HH+1kzATmzZ@K3RgnW~%nT!0&0%2U4Aq@q z(Lxc8&$2GC7s;(sCx#p5vF$n6-JijqxFQHuzyWmF1tS8}g7AYs*(*8gCd)}C+N^%; z0!(~6ex$V`nvCAFU~baVIdT-Z6191JI{zrvUaf+nwryLRRlwnziDu zHX^e@={k|Ht)M@ULss-HnqY?Muf?sn<(L+^>}^ibiQhS`a%c*spH6(uig=dSdUHW% zh1GX8{SJspAr$o>C*teM7uKjY|D5?xEXv*lsA+E*v~9fsI+j$vRa38YkC~~pkI}$g z4{Pe8(@X_siZNp=@Nb>hbKQmkHIaMbh@9r{;sbrJ z5{q`RrR;nvOXn^nHGm^3uB2(DmhrAG%gs6qEX>dBW8r|$cdlI&`9lK-4FCl>66L@m za!=#97XudZjDrmS`|D^p_CmTsZ!8#>)+v+bSR{wVde5DlRx%af<>j^v4e_GQ;mG32 zN|YXSVeT4Q{l`n2NQ?jRca!~lJ{RZ6`PF0|%<2FsUgtoRF``EC|8Oz^QJvySzgYOUTmcT%J(A4{r#13n6A(f>jKpms>W(v(2CB*{)b(8=+iG4hQ zsTEl`nJZ(VtS)1>mAj0rWQzxJ0H*p$-u3AT?4SW8?g0&7aB06`CRaH;G?$}i-F+8& zTC>A!?Mp%?&fj;krgKgFAR;dBwQq!Cku=%OWr`=fI)o5-m$WmbT&8Cd7V8M-FSWh< zgvlcs)(Dtb3&HZJ{J=)uR{W;t(QPJO*vK-$|q4uwoG%FrO9*73{FuqVCPEkta}Riq4Sx;cu_qE zny<5(cu>R$r%|!jmeZ7udKQ;3GgR>OdY4=g9{LS-&hyuve1VkMX;tEMLn-w4&jfRc zX?yt;a31=Wm2g^=kUxy(=IdFiz054c(&K6ib*J&@_OnaHByLVl#yNQwRSUIZa{{xd zsS^+$EU`xK8Hqh%>UZox<5%Mb(ZVDnuVa#?ht0_pJITN0k-b!BLr+0=$+GWWnRB|9 zHlKGv8C}vSqs#o1uiFQ`S*wZ0O=|jf;7W5z(Ot3y#D$@nrN}TeO`?|M$OH(hXA*8# zrQI7X3vmKog)}PD_*Z>r9_rMNl~{bzlCO(Hxxoplh*lm3dv|2VLv(Z&hx4h;bp(k0 z?zEEv@>w<`(io#vFjZmeDt86A`LfKbhb|me&U1CU2>(AgS|%MiPG*0=-{kZ(jESE z5IKFuhssYE2gFd@Q`cFO;WB|>^?V3$jd5Zi2^lz1g6S!AK~@kj3z-yE=Nyxc{W*d! z?2UiaSaoi*k9>2FU3h6;&?1xTkw7Q#OVEt(=ZcOc=wHI0{X2}EpZS#owH@Y4IbTq` zUc77(>*Nb%=E_-zdp)L|3ZvI{F6p&gEPvm;t4?{FQ;$cP7fwp%}{iYVa_2 zjqJ59mk=8Y@7~zYLBdJgph^?uDZQWCDwatkqz_5f0RFuxP=c8XKxv^$TWK-h=2NJD z_!P=laJV5#o?ek`@7|pQq(W6?O*&z|u(8Xh1(|FX?`#|)NO7}1s071TKgqR7{BnK@ z`j*Q{Y2|cqEs$n+S<7tpijtc!2e+Fnb<(78njGRr@&OikcoFFQ0J@=y0Y8=Im5^v0 z+5rx|vR=1IA;D=5C>>V-8c9&1$8#$3`V1xo?EgAJAl3F+hamkzdyAR4JkmQa?fm^O zx;}RPSZ{hsqiDal4LmS>IgVttpIUqluQx%G?|Y(WT=bNL)=B)xUhdez%mO1<>GOan zBS!#XG!W^~eYB>Qse?k?5}wq!qrdDVE69&aY<)t8)J0d)6eqn|wdn$}n<+6m#5lGw z80g8jj+D9jX}Q|IJnv>Bq^z+5>|(5?2=#0g$1vzl)g_=dm%%CJj_`aemr5l%PHN9V zD;J^FOVEqJ8r2qRZDc?h(TxOSHZxfE`Wmk}9Bse$T=my44w(_^DMFdHFl|fy zH@N0+a8=%?7LQAnHh+tx)~iqQg(ZK;Y@w;Y!!d8JK1X+7!!>_{lWx2AoOIhYoOIh6 zj=79qQX(7NM+xAUOS6jo;qb*vIv z*4ei8>J_ml`HE=)a*}3+sTk$-E>pFq9*9XXQPLtC$^UwX=O*kH!f!2sANP2yWh1U5 z)r(*FzBhV-%E7ktxU{;*)N7E4R>s3p8r_2a;4W)yPb4UEz9 zB6dJ~CG3V8UYC0O`T@5ec5L$kignbwLe>I>esc7NJm%ePI;1%@h$5zI;QKfQb5`yd zfErIBZ+e2rDU6UDd?lx_rERD@2Of@`G%KR_DdL#fI8^Fz=1RV%hn0dowa6{r&;_&p zp@OXYY7x0qYO+p{(?YtNPX}54)CjoJqTSZ+*fxM7XJHdzrjzfbG~@THwR@QW4b@A-eF3>`Akk@3hfFKokvd=ee0RNwDz&Sw1uO!_^Hx{avr;MGr(?N#nXQ`3CS8cEZQ z&N%BNd9^UAvq8Jdr<^=%PDwC1LXyJ7ZmR)jOmFb^VOb%x%fgixxE|6xv5TY z2xbDe=v6eVY$H=Tf?2quOnM7Hv=1^p5vXIIG}wc3rW@5A?SZlPPsCY#*&%qp2(`(3 z$lvg;=F78N-*pU?s)$%%ud!R)6(fFq)O-Dbm_A7sOB;hrh@i}@)wcUihj0yWx|e*8 z456Sakr|5qMv=jqKXU9DX2-k3YLA~tJPGJn7M!c6cD_?azD0u>v(9>O#N>UkZ zNY&i}x<^Q=(&8>HXrU#bhpN)jV1o^IV}p$|Ju{Htq&XsS6Tbd{7CZ6U@_ zL}Ur<64H(zU1n2Tvj*{VJDiGl_987(Q@gg@D6Bj?p`#4Bh-@v=h**7d%F3;P2^em# z?wgprL>~p#+}985aKK<8`p45yLyR0Yhzx{RsS{57Cw)0aOvBxBxfo@ur2^`GC$1P1 z(IzC@5bYWh9g47<6XQ?l zu$HAV|G9L;WvXQyIC0r8OZSpmVoLK_J5n87v}!FIQJ<#mKj0$G%f#oJb6RsISJTz_ z@ynP_Z*!VYjAl?xqP>bH3F%Ef<}i*e#kwR*3hrw|keal%OP_^+brBcpBfJF-C&h_a zyLTyN%Q5o!q=d28d|YRNl(Th2G0r-`&{B7|DbEAjg_u;8>MKv{EO zT#@f0(+8e3N3rty>Nu`PZKb{<%uuEFOJTf!6XW~jb@4fbx}`WuI%aX^3p;edBbcQ^ z#OV3+xY(~wpmU1t$e9ECgo+MJO-O}8&O+KXNpy{G+i`@W*W`HA{eFj^@J-3apTxDc zzIAv~M#j4c7R6|tEw(*dl7-^WXJWKSJwB>tZEKBhy1Obq zN(<1Pc$3=srajk@x78BQXtQU0nY3MBG!gFs)a_*#Ph6Eqy?9abk1Y}s4WPn=Z=4s$ zi|W4HQR4DiO1yqVbE#t5n0HB>Kny27)Rt^;-R;+raV4f}Rq-vl_8oE4SlhFa&XJVE z^bn9bYJ|#-G(5ZDh&Z!er#&$#jcbeFv8P#AJ!w5a{z10W+mrOW=ibJ~+{5Q(9>App z$u!N^3_u5M?70$7Ub~`Y(MerPC%Gt%?wsD`1bFNA&4+c#TY3w|sqGuL*z3+M+cqBG zt83CPoH=e0doNCopOP)He z3I>zO)HE)4{X%-r0(;O?xtrz@)K#=rAd2}Ww`a7-WBg^T{wjU2k#ASKW{|0KX(ba_ zKeYyjOSqSTl>i`;>aWHj5Qs>gO(edqDsMNzty{2CR=Z@%UYahe*IeZIbB+i%H?F^;f^*Ev zO*mwCO>g)ryJ`+zMd8=FsA4ZkT&EjCv_h_RYeQJWk@P*?Nf5N>%~?opO_YtPY2?_& zhSW6Tq8$trG&$TP&xX6*xELpW@_X09>3G=4x*!(I(wJ#J@!3VItQr#Re!y|Ya9-Ex zU(gd8bgG0MAKeW~T2y-2Jtk!-oB5F7ac3n5QdUwcRa3>c9Y>b4O4ckb#}#7o=1h%0 znAdM&dhEz?U+JkuH)#SC^ZGimn?I8r>DWvNZb(R7NNfKC_F_|62; z{#BVt7udzgr81%*i}8J(xtP=d5y(kDcZIN~GPI904 zMH~@i_xY=R#(;}tWtL)hra4koPIq%no|aY<*bc_;QTZnIGkj9PzKbXM(Gf;@E_57^ zWc^;{IzzuE+Y}n9FwwDW`m0n`tq`D?da`oYZqII7z;K+wTUybxzRLvDtZm@5 zL~~mU@r{XygXy+vJ)XE8AGJ~(c~y)u1LKMsG>3&>>{xp{DmT1pNPT0OR$~;*hJDH1 zTgrZdp%qnxH+_qFg;nBgdaZE#4<> zUgoDcp=@h$h~|K94%2nAO4U@#Ic|^o2BZBNgz%6XeBASFdqlasRlX4|2iFp_)gN^G zi8N_!TtvlD>=Jm)Pu8SMdmhdy$`*4F5&l9Jv z)+MvL<~6&!-nxJMx%1~zc9^v~ELcceAK`pl7RydN^L&euWU*SPbN{ctEF2dEveb0- zD_#nlCHRIq-IDCL@Mj4rFU~H9HSkNlqnBzqm!L}?EgSVtB}*uJpwp`H45W|pxR_H! z{2@J*VcpcLz9uBoKC3BZ6&L-yoX79A(K;&(R|f1;$$vn1ycrbSY9R}Kz-_-vHj^pfq#;7`sQ_w zGFe+~otnd4uQgZli3=0g)KnV#Nn6w{ZMCLTPn4Dhjtq|;|fz|LDFi6_vr<0gJD zUPKLj_cdun5`MbiS_xM(Cb!SOUdxeHx&5?ClX|-k>*=We_I}= zen)L-+7X%U2xfhI+{gtS-Ts`~TgtYlEArLYgFLoUn!S)#Y~r)kf6=0C z6@S#9sV*)RSYli(@Ve-Z77Y}NXx;mdqrqZqV<9f7BUfZ~h$Co|ojeforDk7NO_z@3 zKWvPf?NdFfie+eSu0(C(M_wQ|&@)3S#;b32k<$FQnOM$Uoutx7K;rELR>GWlcAxka zkauk}^VHgM=;633hE<7KH?x0_s3SLFHQS1N+N3j3at1;bu&^CYC6L3;+^ z@%?h{8Hl5M%cl^NpVJbEZD+Ztdd}xIl*SBK-Qy_xuy|=f?t6}=ko!Od4taj_Y4k-= z!Zlr+WBQFFS+h8~@^d*HO+12H;%xy^k??-lCpOFuw0nrdiN>fWS(zMpkFdkek#MV+ zAS_kN_n?Sev#Wqf*u9O5>hw*R_e|JBs>!klYzxW!iZ7Vf*4#}M6|wbbW;#fx)$sKk z)D|B(e+>uirj7Em*~5s?xuou*0R24#XA8xbE@>mLxR@0^nEpO- z^%Rd{=oW1(!_JdA|1uP9h)lP}fOcs%FfV=N4gg$_VhHg`lV|vE(FafZIV^2UtDPyn zg6jlFrJxf1woq%6&xHoRM9C3M+)^&mk?U%!fXPR$yNh(JAw@B#E}oV$J96T>jaW96 z4U%8M*^TY=rDjX>p6=u2G2J=MV|w7X=5Dd$vWhn~l?=yGXP=elhZlSf{K^bti<^qO zZOUV+DeySK>&3~_Jf775Q~E!CJ)F~j*n;gmvQGO`>hh&&j~Iu9{1G+NpH839=fJdO zi7N!`{t=$9YDdm_yX7jS0MFtcC4WZG*JTHMPK%vfZq|B|){4@5NT@5jm4r7LLb@i> z^IeLE0sPe@MOwMYG>v@joH?@#yvvWt>U6Mmyl}HhG3n6J)W7OE$Nj=le^I^akEEA{ zy6Hfl_&#OJO}5b_J|CY*BlR6i@_3FhsUKp?TDZE5A!sr|ikv5=IY+O^*W}klS&jL3 znSxnjnqTa+kU#$pBG(d+pJ!3b=A6Ci=dK6N)~An#30Jhh1&#@?WcF}O@$lsJVBbd= z$K<%KTTSlTIQ>m{PCr@mDP&-+5 zGDde!?7R`|vJ3ql-@Ngu6Z+Y-*?zY8Pa1BuIIT*M!^2J6{pCUXu@JQe&2-rIEvB;; z$zBqv`L}-?PbG;}`sPIWi1+}gX+~UAF?P}4M=y@;)x15Yq@UD*2>qCOj&H-icq`^{ zVf^Hcnu}_`j`E)J*P4JVU|E_$>(KJh-B6#+qD1OR+V44|2Q&4)s4SBQ`&1ul z$JOH&{ToKwtyAZ4wy))p_^gezhgn2C6yTlnuc-R7_S5! zM$tpY8z1uhGB?EWPMy7=`+v?T{h}{59G%oL&PyIACU3SxEu!v9Xl+rF0aHu$gZKu$ z;qN;9xbNo(XOOQpKB&%`mQZ*mIvL1PseJIcDU7^t%q8_ zyrlTy3paFBS%E3@>`j!GX6gf%iJ?W>YERRI)cn76!ww1g0d%RYwTIolrA)Ut>bjc~ za_P!G(zB*W8m>R9-?jU^^n6JhzGX}+ztSh7LUX`R7q5@+>(d?KwQK(j^W}yz=UpxK zfVL$TV|+Q=<7RKc#j(*~`k3cQX_VC8L#NZ{Cg1SZK~jC9*gj3qR>(A?3uM>s(kSzV zj%l^+iXY!$zw0o@lGxwa#aS}x`!%)n6#r}5QBBs{A{ukYBwVYV<&Em-~H>l`JAx6k}2}NF6h=q_pH( z8P;UjlM5vDJbFRC1%IP{R(nKF{^e+AO!^+GM3Y#bd0OKKu~_c$7!#_s=u6xMuRR>a zSla|y%Ol6O)_v97iCDMC2#B>9`6g)elK~iT$rlAw@ zLHEN8MGsvb(FHtW#iE-NXX5=8x;sI}#YI>_Ey+cBh;+g#pOZI4REFym<3igPMW4c{(OVRQ>9Dl@4l_96p}?J5@DDw|eRVEO==o9oe_z-b zo(~V`>8RrL(U5R4=sKrxR{1XI?}T#4oST$$NdKP?VabW0-3!VyuJr5ryWXBAL)b7J zc8C4pcsQWcbE@IEYP+ak?HkaqzC5J&%c_?eCPH}Ru--=%`(zji2lab@cxM<6>%t!8 zSQk#Kf9t|S;TiRGllr+;t*;4hR(n4YlF@h8QrCuuRW9b`je4^8H4W+c)MRv%dNHj0 z+tkW~R&F?KSGy0X^{tBCXnlIf^6XOFZuNGn`nXfSTlB`?2bDV+*rRcchs{N(EW8lj zqw!o4L~4*)l*MgVUA6cs@#h7pTFl_8aM+-yPvxqX^WiD=ZL8Yd99D&}>7ZaYs`f|K zyCH+NZd0&%^jQM>PYbqBYK{*mSFo08VN@yS)ZgQ3adQZ@mScQa68myg7;();b}>As zQsI%9vRkwG9@TP6zkBsxK6Ul+g5iTcHy& zPpjQD|54^;r(zFjhK5w9)80k(W+PBqm3O*-Ev`hGsVKZJYzX|3|W z8=d3bucyt%cak$P=aAB~Tn{M!CiNBm$hgS=fcU|~qKNGl`#w=?eazOn7~0w9?UdiI zS_Ju~{fR9+ACiUMpV%t>4f9XgJVkyRy5T&|^F!Ol5IUJh=rMFYExz!W{)f)p#>LcP z_aVXRtidnz##lI9SP|cz6g(+^Q9Xo4XwT|vnqx$BU(2zkSsg_ja9jziV$P$6_ei24 z@i)i+^TO;&VM?gRTwv%WViv`iL!x4^Kp%@FejvspeZVm=BFp`RdikvWr`)acf=Yo& zp-nJZ1-&{H8Tn8;e#iLJdZV4N1c`S^ocgTl*XDTD1r3TJm>_lCKqNs@1$SpK{%#OD*jor)1r0F4@8u zfejoM-T^!ql%g%LOQiDj3pr5kKk}-H*)nQJa#D%H{vbu}i?6OhG&$l?^b16fo9F ztK+cVAqRl`R;9``RU6Oh>4Nfa3_C>H59;lt)RWUS9bu*7iGesWhi!K+d!UB+Op;CX!oxz(L+a&m{f-DkVlHCeG43fnjVg6S z!YGR!3C9$(E4-dI_XsMWs*r2x0kv~jEe>mJhxGsLLghnJ7mkVv#57tP)tn4_>%Hd% z*+{ry;Uz<>ynqRVPYGTZREqG7V0~QhJudhj*K>HvQ4#XEV#pZ@$#V~B4lb*tv#BA? z4GQz5%?+e-TF`PLBR@pKj0^tn{OhV0f~c!|M}6I+g|?gb{7quSZxXKNM-Wyph6~0L zV3CZgj^J1BQ9Rg>nlmE2gHgelbE?NGh}Z=h%%w%H;rd>a&uQe8)#vI*Yj}sp_Ns>$ zMI*rYX<y358gb;pV-N7CP;8l~RnBWA&xp|Dbz zUVN7UQApoX_r6v2?G@8J7D6w^9m**@EA+y5m}6=Vy#*3%(s1x`F6}P--C0^_fYG6Yl?8*IOm+3 z=A3huS*dG%mU*emIm^t{<(y@1>T=F9I}48pD^Yncj4U>; z*=Xwfw}sYrHERv-?dlf%eq4W{V$}5dI&6&hHmhS?V?3`hJ}mbUW)G(Hb^ZF^Lq^?K zR4a0VznK#&Y#C}W=jzS7`u9X-fV(@BVkdkp6n z5;|1jUW@?E%wx!rH@ZW|emJH=@kxc^j*o6gIq?Q@KV}W6ZP3`yYrZz<|G2`Fs@ZG8 zSpc4m8>b8pz24F_ljgD4Te66|b8FdUOkJPnG~!Ew8#48ppn_|v*6&?&>34nUy1qX$ zmpV=g_7^o5KThw9Wi#DA?09`Gk89S!rLe-CL*Ao$ivb!7OEcHelQ|5rw83Ip)*nk< zl%?)Y+pCX1DpzP3|xd`Omte%Br~nM^;=t0!(8UK73Iu5z;wYOu0Pi+Qmy zFt9C6V??&cdKg7rPwy?}cuJ+QaNvzrgIOZcagou?UHY^N`=wc_LhshL%GIQwYg*-X zV-%P9r1yA3aYXJWK?jB7yN*?GhCO!o{IkM;+uh4I8PArxmueWPEH|_l zwO7|Uo6iO~4Yxw~^TnrJ8{3-o$Zc~tJS{*6yA(RaY#g1;@mWcou(nxwxE$KyQBm}S z{-(X#(kw6DGu(sdP4Jq!GO|~p2;AL6S}qLLXDm-n;;kgcxfMNxf4hz8IBWgAH*c}J zOFVOVs@4_MF)MGrmmI!;K`#%g*SNTAvU3&b;89kuQzN~pxjwC(o$4X3Y?f*0aUsV- z>ZyallA?YAH+GvPRPjN%?ck#gOIR?#F^VhrsPuGSevsZiz``4I;q?Pm=`Qk*Iducy zVa4TP7Y6ZD!jHj$hE!Qr5v$-^aGEfXudfz6^~s}h0qocRT@ofkS{WXan*nzsMwmNJ zaC#mWhym$orJWE{ca`TvF5aCD&svOo@uQzUrcj@+jxeOCCIIYF38oRny(tCCDm{fY z-Xg#N0b?!MFvf&Zs6j#KOW*FE^SBf*Oa+y>w^#A9L#$DT!?vu+E> zb$^ZZ%b9i1`VH=wX9a~gu`P10ioJmK!Kn1*z#9BxT3EG5^-P3!3*mv#DYcsAx*B1l zwLV94Uv~&gc3bQ3QJHKGoKd<<@qBHqv#G)?XW2zD<2bjF7NcoWUv-a>7XmwFn@jRY zTTqTQ;tZXAT=Wleb8@gA%2CKjnQPid6uWsxFC4aEJ`S{&H5H|c*F%d&tjt&F&Y9Q?Ba6Qx%x4FO z>aE6At_Z`>aSX$@ZCyypXO)Ati-!9125CR|o*r@MbG=2kW!v%T6 zhvMAXfAu{Hm4IK6D{fa=AG(C}&Fg%$Fh~|{hr}4*Yu=7Lo{O574O#?bBL;*vtS9%* zNA4IW7W55UW=}`Qbt#zxVIA>0Y7a@brC$Qy!pNR{fgbq^;sdV}8bc&Ni1dO|nvX%& z;Y#;DJ0V2x0X`O%vfK+5%Gc!&k$-ka%!{UbQa#CQ*Fu5eL{7+4~P5^ zF*1a?F19ChS(7IjHmJa`k;zUnIT^bRl3?atQ*e2Jw3)Tkz34Oa0gnP@=|wj7ur4oY zBgRFhex*jZsfI0&vNOGi^vnXp8@F9BJ`upwFU=)mMC=nyP|KSJwLtX9KZb-vaDHEC z@!{ZhL{R`N&~vPnU&?0)Cq$q6*K_F@*acQKqfi(Wem*R0XP0OjK#n(H+p1(^hbTpf zeD}RJG|2JSU7rRxy=^W7j4+~!OrZi=ETS?vl08G54@h%-=lI4x45K8f2fTe6d)6_ z_F2sb=6-SfvA6kUO0~aq%xb6?M<%VSup{t-ImIjuD`#i*R;q24Sn2Hfnu!D}D|XH7 zMm?}zEO?$w48Rt_RA&2#N&;ugBTX%eihQ1;*zlbD1U;mFR)ZUIzRV9PrVMaxmNV7^ z*282Q@~&&ndVQ}PGZl3}>x1@zWp0*Tnn@hua4$<;kxxBjI7LrT8`2!B7$ZCXSO!Ei z7k4YBxdsm?HB#V+N=J&bR*p6k23an|hVR;QB?Q41_rsx0vN-Lc24R=BI9e1C5mqec zfKgC2kZ8_q3lMs1Bb7MZe~h|Tw`%dIdJ>f?sSX_mm+C=rNvQ0AdJML)m&$RA+4QB? z%hCyf4ds7;ySedfiWrQ8BEPul4xP*9XkmsT zCxJHHigPZ64j|lGnYS=oU~U!v1*3>K6&@Key3=?5tiM>t&ZD!fEsQgA%fgsfz>UU* zxj=KB@us4lk*xL{a8Wc3B#zgPiRF}TG^v`%0VcM<-VJxl!R8Cj6r7V(*4B(obIG5X z1}d?%SqV2A!#dI&{tkf*S0c9NW^`@i79!@-wGrkF^UAkug$?ita4u>W&1flC_fn|o zMh&a-PWG@S^9WF@Q=jt&xRtxckSF1xJ(39f1?zgw5h=o5h2R9#l52m}UXA34;%M2a zepncUPKK<}tr3b3%C*jB6Hd>Z=HVA{FIl%wHRKnt$rtg{w`4j0fis1bS&Q{Bh;lj% zW_cXSc|AMayH9;&LBe?wn4aef;gL-Dc-?Rr$jU|?NxW@Q7F%d(OY`{1mw?{tr){cbBAf!287}GO;!UkBN1nj{%C@({ozjFd=fj>Isq`p`!68lEo zbAs7B3`bhh)`o*>1#3O(A=HK(%FF27e6M9`?SksvYVrm>#Vt&q-C=PLxHsEJl1=X1 zA_rbZI2v{<3j%Ig_?Z!Syz_kaIHSX@6VHidnBP-sGvlP0+bhp4vOXrVTbgO`1^%=l z%d;+Z!p$bn68W!Vo#Y4N876}-hZVa|c#_ZQHPUo#5(q;_Zt*zzALhK{g9!y}|(pK%(&$2d325~s5Hgfm}GOSXWCdVr>% z@hdcTr)*AR7Efk1mn<1R25k~y^ZT&s+pT_c(hm=!Yq3Sl%V6!9~WZv(Gs(FP0Qk1 z7+;yiWqMQ5$_Xp7JhafnS`%Eo=5>{25&c*PR!}50+ndH2^;jH+&Qf` zr0o&m&Zz9RyKrI63m&=&wE(5%x8|6aO&$txFvB2n0`*LHf}X--V~T0!sKyG5o(V9) zt(()T1)evgb+nE88#c8nAFTwZ+N>X8$C$8y-az$?cvuwTBZ(g4ICIDc#&HBqW*y~d zJ%84;C9Z9QCNHP!qO=jUc$QLtSk&3_Fbel(lnfW*^by=J;#VlFP-f{7dsCVb>@TYY zC?75c+(#5f3oDK;Y<*u=S?%yGbK`!6G1@2ZyTNeDb+kO*F7lFKa_cdIK`T+MA^E%`9a4OdtJxv;w}UHr@rk5Jcc)im2pE( z{d#<^_ViE@+s2>M*pC|LveE<4G^2Z3^^S^$pJWaH-0K}l+_(h)i@McQ(#uE0c}8sZ z+#@!s`SdaQjS^vHes2!eVzwtELMe2{<=C)@*~a6Kwgp!@tg-00MfsBAuF02ts*oNw z97-*Kb>aZvC6w#h-X%RVZs!f&=VTEcc`%NZhjq%~KH_A6V}M{EmR&8j{G>*AK(m9s z1r56II=w@nbFC!IX2CO**Xo$1e!JIdzs7p~*RwVpWH`mC{Hyva>@Dmqar-l^Pe-JD z_XZkDF&}c2zFErgJf{X8P{%cmDw7(nu{@_3)|B?s&C7gASa@n04F z0U`9qC-mm4% z@@{!9MwQ!t-AAH>d^#=&e+mQa#`7b*d(|#mLJmt}j3~UQd4=P%H}A0GIp%vLjahHU znfEJB9+i$I9xxDl!Rh zlUAD9(b@jq{d(hm0fXhhe#KJrgw+h~oJfy8;)$Z4?qxcqx|k2Q74TI-$;7cHuNo|nMdai@g-nA# zU+Ytt4`*|Wk(KyRJ|;}jfzNI{V)Ry6B2AcG66~j7Cks>noY7u@KbGuz^_2s*>%}V{ z)Zw^|!h{2oD0m)^3g%n1+PG8k+Z4-PJbM+JtjS|JI`bi=?9iciN*_~MIP!xwUmWJ$ zqS71Hn)_e0`DsxW%QmE1yr?JU)?BaLDKDIt1pZJzv(D`LDvflDRWT3sw9K_I=E}9D zRXDG`(1T5QP=MZ~#^77!vpx-JbZ|N6w;asTSO&6mAhb`AcrqkwIoigZMzn}^4Gphtyv< z0DR%7{_fLEjT#T&79%g^y2ByacjTITe)Qa@R0p?5jp7%SuW2sjcdHLa1UV!M{75Zt zn_I~}%8QJ8LKrZtjev72g|2m2`Pr`=v@2n=bbaUY_hCH~yTfXT&)5>wJ0uKQ zFD&Egg)A*?u@L81GlWH1zI7TEm<0@y`NY3Nt?W>{!acRi2p9)`MlhCrZLZ&AZNr7I z<>9{d>5dh9)kAn!(Ei=SYKg;Zv&#ivu*ZVWK`m_A6xBhx~ zCHMMF>^9nQ?!ZiJ5$yMArW0u?+=}KL7)~@Cl2wk6a7M>>bPRN8^l#rPDjqujA>rsY z%`SAYMKz&4_)PD%m?MR_CxqWyG{eafE(!tP!FDJHygs1+)DTl@xd-;D&P_^RCt8FP zvavCdKH#xq*7|0Zt&cezl10oUchdoTp1js%smJ3H0sA+q54E(x)@iEo-hAqV8U<31 zvPXs6`$Dp!S$eG9aunKrQ1GRETDs6Sb8@WKFST9Wr}m(uC}ER@9s_5p#jV(qMWI19f?(Eu<%gMb%8#Pnp+>wLaKD9*7Vv5WAG)299Fl`^1q`cxY zNOH6Q!xM45{QG{(5l6OL^O`6J@3|REV;t6&M_jGgx7f4#_#?5;btSgu;^Bka4I|;N zkv}4f!BYCYO&I35ne_@>eup3m22pC4LU771##z@Y1rCPBx6UBDL**p}=R4o6Vc{b0 z4{ZU%8r-Wf9;!3wst5Eu!<1Uyw2qhpm$$hah$X0_MrTXkp;==jU=tD=`3%kN5mvuL zeE=UBUy(mH=0K}EV)%#+g{^?cIjqd;$meiar?t$_^3bm^NKd`p#xh}5mI~En5&{Xr zZI4HUOQCa*pl7mFM+BHr#<)&&Thz#QghV?Wkw0*vpYv#V+J!kRu1vZ1)_1IpF{g*Y)_5VR*8zwpObf|$ zio>S+0qs2AB^#iw?ZU21$3m~#ZE(tHey1pYtF4GfOM>x7u9N2u*iYNZxs96LqRF>N z8MIJ(lGQ(~yjH*9;aKXHR;0;d4M03%T}p*3GdSik0!%~4Li-LYn&-*U`_e2&u|?tK zBN3*>l&FQlguQ+3;&^I&bzI z-Wm4>`B?v!^s3$LP2%x=SMaV}#>SC55mJR+=!^ZcY>iO)@z<3Rm9t`t9P7Ap^ue5&4) zX6f5huY2z4U+8>NA-xObUE&^Eb&zF)t?fQsFc=?S{?Y?HWclNB-eayvqrC6^l9z93 zV?DLB+9+j@*Pfe?M{C(l#;$Tz<~hGc7&?KxjcQRNv{)Ap)!0XDB7>`ZzvwRVf7SXw zDj6p)L~qQ?9uU0Fadv}NNXGOR*g38dFAgk5A*7#wA zbbYuGe#7h1CqpNm6Rupu&*4`{)nHe5-Aslr%H1+eux*(pjA@xBO|WH}FsWr4ezwLr z2!pBSsBs*$e%J6^*p0TwilSkhT~z3NMv%|F397j_;YN)v&@GUX5rYp)0}|aV zVh<-8`dP_5R(J>{VQmJ3409#|Z}F z9!JF+cG(klm)2cGGm+!tMY5|Y>)OEMk7Pj77-td(!&1~ttcWwiT3KAN_LZX)whLp9 zteudHtJP^IHjbOtia%EvVjK#~rLiVTp)oNc#_=}IsN0b#pG?cvaIvmMZimlG90m?r zhhtP>6)QXWez0dNFMCW1YR6eVF46|nHY8pST{;hKoEzbddd*ylG7YM!Tv)`aHZ<*P zQLJOJh66vywW>XymDxFV1C3IbXhN{LAGVC?fG0O ztR;!XMd>*Zh_aMf(0piJJnpS zB#-*6*t~w6%EczJz@vU<)0%6znO-++5)RyqbCPMeF0HQ^mUz1vui2paJ)kmKpEz*< zuVrm9bg<$?sPR@=!#tFy;cC>fxpI6AX=HfVNCRk1t<%&(%W|5TmT7`yjlV`-R4?zi zP6?ZaT@*PUC9T89$mJkt^x%5&Sv{`BtB18`^{Dm?kMOId*x_j93-78U*OJ~=L~b8v zmHF~HLASXsDA(u6-LfqGW)I;3)9?f>xrP*{y7y&CtK;_GoRU z%dTkc6M!Ew%3;lp(-qw1t-|e1`YX8W3@Y-9nS0jYwnOm`$|jT6(jsj;HMUG+y}o&! zJ5;BAykTwgbXHe}rCIKg=bb*#!&dD)NFQ3X!wRysGfO%b)rZ06{h<7wmZ=-nGwmr@ zKzKtrra|bzJh@&n|P@4A<~;m!P!AZTlq2 zi#HIkLc}g^XcMgfn~gIAQB#o~|7^UtpI^>+5u!Umy@agZaoHUqw)sZQ7$Iww$O1xk zNV2DgaHoaze4}QSkQIF6WgWDUSs}=d+@*SL()p!>yOoYcfG)*a4`Zl}bp>8Cw;ftQ zk1H*2kgmz+3bL~+p?ibk+50e|H1x1%1*udssh$>$qb_n<^A>6` z(2T|O#ysc_VSfJYL@qztg5|H}K-%SVpqrpWW^Itebn05G#1v~`{?+qdFbq5fL$WvX z1l7_u32*Xg(ywZ1$ht6}HNLCL1YDS&I1>Nihaa*H{i8cfKwlnZ~Wm=poVy=jHMz?!uxW zVOTt!LN2IHT%k9fLb12<29MQ_boM*Rn(5vzuiz=8rLe7@hvDC>mvqGCHO7$Z9Xtt| zYoOPW5z!%(=+{{mX*Pc5#rH9u5(Y;9a^1(VwiIg_6%2f}nRNlindgh?_;<`+rg#P? z2REHkusvgs&R#y_1x;J8`C8y|e#e~6Lk?!}kft!ZnCHp=3HWk%#_z(8>?YeG@g=uv zcr`X*-JH*Zd$#;*PdIwSs7PQ{dOICdQ_uvZXZ2ud7C)ipcbn6STHaw%*Xio zGp_K??CJa+1XiNpLE`2gRwl#LFL9iOZ3KWeyCQB#8R+^MrJYrpyBg!gI({I8i!eA= z7F`c6=>3XlU!+0!XUEpaT~q-eA4rsAH^mmi)C)d8_2&UkXnxp_fqy!7hc1E}?0i8= zvM*+rLS~xI#Z$%XlE7c#`#DY-4&l4VDF2e;-1B|X03ggM)4lW39S*1_q^aMe_Js18 zj9O8QZ@e8YtS)+eSV3=E)27+;HK}=Uwi03K260*V-zmv|Fk>; z_9@IiqmtL8!!vT7q0%mE_wF$#Ok>b)?C9^y#uBv8+GE{U6@BgX@tj`83!l~E`BR@t zt!{4T;5;{+Hq4K8knU#y9E<72JY3*-8v-|J?#S}q}u zv$M=E-cz7vDFaYCTC7uR7Tc)7hqaCE`g$Mp;Ciq_SFjs#4J3Zp;gEDBPT+B;B|SK= z{JtxUvt&qfaD*PY&hB@=hrMtlcn_n5%iJ(4D2{>|In!cfg?iMR-6|ikkY4^6z1ifj zf&oMK_>FzP4yX5sYv}*1CGhe$l-Sa`4OX4GVW**tTFFz(-1^nJM5}(aD$%lEE3pHS z`=_L1w17}uo~CWD%GcAfwRO$0b4)O6yfY;XQYRu7>TH1M>gIJh_sgAwURtCzv>2$I z`hxX3wvbOLV5Y{;h)@CC!|iy9e8t+en%3p}iq{=F%I7H5xUG5Li}&T!Q&m{g3hx?V zqnyn#p&_TB6X(AnO*mWMhr5hx7#~3XW`ny?aI-dxHE_cacSKwgL?cHmz*4y z5yV%Tm#U|NT$x9UxJjMJ3S=e9CR`Y+BWfJ4lNLwo@iUITIkYkv-_U~t^)=;r%j>SKphq;%p-=7qvz3VM%qPRW;0FZTsNMPZ7~oCVJ${>^?N!%)yiCRdlhAQU>&RgZ zUb3j8;t|2?fk!B_6wBe%fE_8S-x1^3ZC^Q`p<&)%w5rF7$tRCzgO&) z6uBm-WVReLhn1b`KH33UpCkGWeB_PkzJJD2S9@xseOcFvZi%Lq#(agg^fjyIxpFNo zi6itoP8n-zQ>{5;rPtZ)I}Ebtd~VKPyAL3f*x}SZ;p<3vyWqUv_S|tg>A0{TkIg>8 zmAeA?RNdS49}nmOyXPveFTtZ-db3*t3gj*eMiVcOIRIl^&mw9a*^T*Zt<=p5QDRJ^L3IDyu zY;1W=E=XHo-H*Qy8yDu2-kbGJw1+K@6AF3nOx*i^gf)ho*Cxh~5w9J&PSM3!<<-xNZEm|O~oI|vkfTA+K6CJ00Fyj)A5YDC(w8iz`L>4C}2Tny1I znSrr5G4Y!ER_T%aLk)F{<;T=If<+tAbWngkJE}*uDlEy1go0_Yl%6ulO`HHLvJ354 z0rXysudkTJ_Np(aKbCFw~`XSR*I!1V2^U&a%cgbJzm z`V}TEYhN*D?&R#+P-iyG281dGA!VJoW(q`+O+jG3_*76Kq@J}ZPp?jEPW&1>cRNJW z0-^BZ)`L;kvL2Z)t@=|`BU{!WRlHRVV;YTr7Q=;NVFcQs9MyZlbv0^he9siChH(#2 zCwKxAh4mQ&(w0*$&~Q}=+Dl~4x=I+`4er>TrDmx;Tv~|x*ZY&b&r-@hrGi+Z9}WpF z46EUb%vbOt=E!PVuQ|CP(G#6GIrCLG)~d{$aBPD%=JuLv|MP;~as2hP zU&P5weJNnpuG!$1Z-2j_?=IYiK8&=kqXA(Yb~O%R`@V0g_+~2 zIqntls3j)O(sI2?QJ4XJFcwEsvEMA(MH;;Zjmg9uH45g_QhCbAk2b2|h5BX2wJMpP z-y@>0^Nq729z2)Qj-9jM$eineN@l4?^E8+K%u++)!)(ZQTwHL|GbpEmGkS*`aB#Og ztho@AMGZJs1OBRKtxIM~e#R*qYN%T}MR%}8NV!iM7d4@*;&NK1Q0Da)Z)Kx>QWw4x z9%;4|H^;K?1WWT+^VirflZ}~)nAcin9gjI0G7V>rBhmJBj{jl24@>dQzYT@3HY()# zmYqT~<7(36Sf({*Ef?MF*^;aq_Msasa#(n$OIV&7ku1zM-*^g(^T%uYFPF10K3_VW zOqUPg5YZufLiK@_Y-#f)zOW*1{zs>Wk1BO`NT;x7r7!Bitg@i4sXG9(AtsD*qV6RlHwM-{06&cwM}ee%I7Xg)2Yvi4ue6s zN$`ORG1X<#>40!FI?;II(lou?JZtI}X{lqX3H>N?TOQyftp`F$JE8Jh$5$cb`Y&s&XWuod({ZSC?NgMmSpQ2O=*_>DW;goB%!#pazx z4V0~(G}aUC1$R&stP{D6aAkovE{~b9LXLaco;t2^xhtn3U57t`4@=Ij#nGpRT>8o| zv%^>&N-TqM&24_k3%mg8K94vXz%*Y74RUtI6s!)g3^Kc>OsE#T*}+o&`>n++4jX{R2(JC{~eKy))=>|N!)J5g}X!42Fo8p`(z_vEDO)rF* zwWXC@N_Dq-xNi1tdA8rZp0>xupELZgc_SLIb!AGu+40T{7UJ=}zD?WG!Bw1#5J@$38V%Sj|%(QU+Ostr*KR z@H~C)#JM-Q+|%Qqw!lLYtqimuIQTw3G@}d3?#}Oxv*?0p-%c5p^2E|7V@K8kA>^TC zkHMoZPM6kSQ5x;|zCX6W&ZXTsj^WwA&idhEc^$+h0Ps2syx#iP*zW;0HXjiz;(VI! zA^$^+FY;0NV?HMG+aS-zPpJ&H0@pu%PW9|ZLg6`9ZF_<|pB6oR_lBp@hHIbN-Hypxh6luTXept2Ol4AmW$1SQ*x|+CROyYu_ z-mYxZQ`j1NxzA|rXRq#@_GcWdIEIU;kasOgG1C4*_WZeN>+ZIQ-%4GX&&`eaC)H9u zPI;;*hn!CGo1`T|sttJt;vQ*KXvRd3gI36V-G&{1!25`LLTY#?ES?ycBZ4UA0J`L; zr_i{&J6}J&LO8_IoaouFRx?)$h9qA`Ky^}oq(HVz>-G8eU0vaXztKBHm*20)=}C5x z!O{^4dC}xBB8|SIim^Lvjh>5yd)j)WozhEi2KddUh!fQ7bkFB56f+kZzWXL`1iSEQ zT=qcyrAO(`q4PzC$r1u8`QOxeF>XT*ZygqNeD1+Gpai{uE16+F$NuYUbMBhP%tQwmj7)0*o8_4)Y5Fgtf$m8LhiNZzB;&=HUZcB~1*3F=O->}_5fYR%QxQ%_-y z-bb99-@0$PPDNEe~TDF<-Lv9cj`q&_C! znwtl3$W!_c{a|)BIq9b_<`rAb*8&G*-kfLp_aqn%0?X8^4YQT@G^hmnrw+bDSZocY z%niybf`ii~d+zJ=*)9;>|HD^UHcO?D(KUEbstq^v^K}V04_{>jj)u>j7t+*FeKwbR z9b8}J>e2diiHToUVxemIMRXmY8Zv(}+&W`Q7z7J5IsvlTS(MPt9Y=nXPiUB*C(@Ev ztUT%@=e!X6&#CvW!4zjnT<@tB%6C|Oz+84d%#6YvCU;;eQmkk zNga;R+h?th*Lo4;&aUqlyr76ZAqjgKQT~)%eNFT{n(I*|EiSa0J5weGSkSsh`TdIG zzWQ>uAI3RvF!9+41IQ#`P>3zRQ=Ic*?IU_dTs?HJ)1tJ;B;}{2a1!^hIR1LwmMT+Q zxtPKAA}CQng zE~pmjh#WSoLpO4>54z2AHpQpjH%kY=iEB&vXa2wJ*zs=;Je|6$xf^t&q}g0$77a12GNju!QG`KO#pn{rZDQyX25dg5 z=!OBpYD}>pD3e008&5%>1hd0t|NjP}mLfV2iDx2TdEyq9L$c$V4=SFL;@fV3tM7n&CcbQ(t~#R~O4gU?GQ6<7OM9(jAcoiJz_3I@%L`)t5M|bMbte zYg0&8&z6eY$5Az@#?i%?F#n`Yty7+sWbIx{Py=U!>ydCAX;!)?3=In&ZjK1ul9ykc z3@hP3NXj!BJCX^<6ZSg32XtfAE`Ej;3H@`DKep2}ufFL3`uPHIlq!ui=IhxYj*PU% z=8tvftYPb+@3V|L82VXZl=^O0W2;ftVR1G(1Er0m_ftlw9Z~B*G~T5fT#d_ql>lA3F=;zpNXyv|iK{_}M1}EClolnKm00)@EeVS80V}s3< zEW+Ny;_#9%E#S-D#rYcEp*K83d|eB#Og2|>L6yEu+QK3mSimN}w*g(Au@F2{ds;>X z&JlOby*VH4)Mc>AJS|OmNsf_&iII&tRr)d*`lwsJuv~X!2c60Sqi4q#YoizHdRP+8 zY?F?muu6_^FFiXwSm{oz?xzHWAlK~N>BGvdb-n9uR1zVP$Cf_YuIcK9T%V~3T zHyX2?w%sVh)7kk9CGZ2OzuFFz?{D*Rjbos+#-KZ?FUZ;{EWR%S+Y!oj@dIFYL+;V+ z_5n&2Z;f#4G+NHS!2+7)Uj8Aql3%94QwQh9Ch=uUJf+#!IxZ_e^`TN=q3|BR{_Ym8 zyUy|aJ9UEfak+aatPV+={y#(=v;%*NRzci+N#D4O+b@Nn6}*PP*WEMOCdS^kKn~AaLFXhUiB6(aa7v{V4T$g$w_+}Wj#ElPde@5;e$uZ+G zlh~+r@z_Qa#II5kMX_N$uutA#5S}Ui8d8 zMDdvuCH5>mC|d}}PGDOBb3P<};vv(MTBUC$UH+3=y}Ct~doCSH^r<)!(wHsyFiS{< zbZu9N=|#VPUA|r)>j7z38ozj^Zzu}-bKi!)So>QeZyWy9>AgSw+WTL<7TSlBq|!DN zk`6sotGxDg43&~Tg^GC8!nav?qOAD-sSj1=kuvpLm4W{04n^Fu_vugSy;52j7A9@; z76$!Ky2?q6Di8F}^d<{Kr~DlLq{_$~(iGaSEDZC?R)Yfdsjsv!=?ras{WAl7gUi~> zN%fhI5c+2Z+lNB+nYIv0ZRKQfY2M_hXJ==7xzy3A_Vrq-ED!Aql2B>yN|uLt3lfF&rhn?=m2#>7_WS#%KHt%m=z;Lo zckOw~o?o)?a~6Ku!f#vnRSUmi;rA^3x`p4j@Kp;xYvIcl{-K4xW8oJqe8s}wwD2EW z_+<-UvyOeCv|Mvh>Yo{9{2I}+Qb_r@oftek(DeLnyK^^a@~ErcMFM(kt`)M-iR&)aenOmjAP99iNSreYS6? zJE_c@*OC5NvY^zqT$nZ8D>(Bo^}BlKab8!cf9mBPudPS;IQ4s)gb!EBZT(mI+ifG( zp!Kh3LDIH7EKo81)x`B*y|+A1HBXIsM{bxpSFD z`A3?PzSz2Y_#JvEqJ=(AK#(FDCT@Drka>cHsXrFYR3O`4ax)AHGK{o>(mbZT)Yn<= zSXL6je7K^CR61p{;5yIl8RDR(d~+|!)bXCFf$-7caQ;WQM~4bUy_#x z5mBXFZmU$MK3x(2sVpO?^p)EOHJR$f%lcL2;z`TOL+uKeEu%k-_+_G(E$&;8l#)R; zLF{q^{?yC!C^5KfX}J>X=}SBNQvcLTeO75G3CUHNjp-$71u{GsKws(%?Z$o7V!6$V z&{GEf;U0c%B>gkv6!=q>{BSqmvX_OSTfcv%tS>6V8yA$68H|mHYl$Fj1*9cURg6Qi zfX1^r7LAMEDwUqlUh1pP+|aZx=+XSrt$bVsBtOPqaQT>+Qs-bBR5;kC+=G3CZGipH zN`0jz0#;go?MDgA#Z9}CzFu|0AqjP9CQ5w@`k0tDn;lhJ>Z=GZN_}l@_mvlPR&Nef zZ{AnE`L52+>eLUbHy>2YOVyjVs<*$ar?cJN;6?v=A)u1QLi?&WdpgT)i>o)6>0d=; zsD>7ogzqZbQ*QSJ)v(N>UJ@cyZ+@bB^HUy*quTSQEcHH^{>>qaRKdmF<&KIt+UEy5 z20JRDJz1zz!#1J(VA3`9MOXY4R^)Em&L2mjB z!W41#AlN{eQ!gUis?(ygsh5o(=+XFrM|Ep9ratQbEdNI}^8TqWm_V8O0&}9bKL1%( z32l`=&F;s#%57@&J7U0X^K5eZ^uxO`?OVt>F=fG1(h!NKp4>F1fAj0}1X7K*JxG8H zNBjEvrw2st&JjLotYCnVPY({1JC!&noapGEUQy|vUe!Onrqn(Z2CYBStB`?Rf=>nb zAoTmHQ=id$V(?M}0-E|ECb4+2r0n!2Nms#KIHBq{X-wi=o1o0a2ouq>1V(3@Ag6vU zmS}#ZUo@!+THHUqO~78pf2x@F4orQ>`?1Y_W`2zUFI$GJR>q1=lFChQ6M-*VCcQu( zZ|!ET)w{)&(!3?Y{p#6HXE)KG8*|VaON6s-zs0N)Y)f1$q&Ahw9e^X*^f4@`p42ocH zf1iw!l{HZ$iS@pd-y{@-?o%K>H zD*B&t`Q0Pt{0g(MFloZn>dbe5hn`FefY*rCEDCBUm4#^f>GYp&el%@=lo+jkGwJIQ4=Pu> zZG_#fi*zq2&lBg-AB$BRsz6w#L9|KMWziy)j*4)r@6qxi6fpbaH5uspr|(aH?@ND& z2Kzc-b{!%qi|P}8z!;|Q_u0xl+!teppibd}7tq)TP4(`dKG(OiyhIhmZmOr=dUti| zN7bqCR;OO;s7`%*uzz|;gg;cB`ayN-&#P14D_5%1?bYcZExF<(I`zlWH=MtfMWVgE zMwX@ia_5rj%~uz9cPr%I*>0tFFAI{A)9FuCZ!PGb-ui~JX!7~~ z>FNII+ui=BSAUqlnIA&K!ZMr8X+)VO207M0^Opva+tT`S;#FmCCiL-U2Rv^XGuPGS zbJWvU?ts$zr$so^?-pG^0xwr~l;6-ly}Pe(uzKr(!M+lmRXjpN>C=24P?&sWsD+1p9=0$n=j@LkB6<=@0ea98jj26ZeeW>X+9c}KceR+QBc_L# zN{>Raywu&LiKlXnT0PfX=ElxY3UCq0)nFt>urS#mIU_*S=gVbN)iz1Wr6wLNS8ZCW zw>HLD!~PC5ZLupRePc!ctw!%zN-3Z2=;7jKqUy2n|g~Upq`X(Z& zKqTsyn7V~+N>Y!m`;U4<|88Zi-m+GwVr8WKL>YmiDfF-~yFEQ=tfw(&*g7x0q1@4| z%=~iM7|>_>I=cntt&vM@HLmj+3x7=`?L;%_UglG*X(6Xg)bv(qxz$@+?cd{_*4eEV zJ{}WxE6o#jTfze|VP7p_pCxRJ31hW{F_~so^?ssk1g2cy+V4nN5+fdLgZIno=|FT< zla7TN6f=6Pdh2PaW#YBRy!~U=%+rIZRafJ^pAq{tCai~FgN05{o1WI^iVK`YYES?4 z=c{-2GvmVN!zrZhJZLcbJmJk14^XqI*UFrOcW-b0MK%1T^c^38M2XOSpUT}_rH2RI z?$)!^Br(qEPY){6OT)6eRQPw>dh{g8Uy`g4-k^S>Cv`|IZ`>D(l}!DJWY{p%JltoZf*>Cd8V-&{91B*A7(AWifv9%6fX z8nCe%B(-W}A=|hssq~biA^l?iWQs!=#HxLhH2kiCa#vSx|MYJwlC&>ADBLaU>jVm!j z?Jtg&d$5M5zow#J((i$i8q$N>5$~M-U0%OveAgeuu&_{wva~P7G`cA%pu&AoTzrYn zBM81kow|U@3ZW7UyVI&Y_9NyzB=#fLU~R}>0&&!2t$>%bDiK_n0}2$#8;+Yb4}vK3aBST zveG|kG1I?OxxXxZ`c(ly{-!%;)8EPTR}$Oeul7$rl+NJPt3#TzJMUMDaOcid`!^*) z*8g<%{WfJ$0^PYv5zDk7wK4neT;kuP{3=cP?dFCj0M9=CTO=yq3u<%UN|b zm*s5Ca<*4I<<2b)2nAQd$&l`jr3?G+SY13=yFAcG>Cvh$K9I*^$YT#z%hJ)Ty7EH% zEe2S5cRpC^zw==<+*04t@{(eP+*^0KGkYt~^XK{H-Yim2tI8`}aktpqV$8qui5rY+kz_ zy33W0QVH{*ry^ETs&u7>*FEKK740xscBF1uF~pL@a=BXRDOK8K`}sfBu%O&!daiU` zsPJV2g zBYoU-sor@p<-O(9N1TcsCBT2DU+w64w7k4a9dx+%4EnEzr!4yaQu?l}7_W*Pie{~>*SA=b@6IdMSoO~5RHG&L&n$4Bra03A?tIQ0(Yy24>YdM0 zjkH30=ygI!H6MB=o;4%5b!nLWGd+W{ehuUL@BF48O@F2m7S3 z@yBQO9?8pko2As>;Nz@F8SCo96Laf+{WGoReiQ+T)O*WVt<{h_oWFs$?gSb9kWmX?c(XTGa{xD($$SngIGgJjTucREyWwmZ^F$yMHO zd++;%)mF}5E$KCXmM>7fFji7qIq8`wuhBe!YFgov&rM-<<`3=RwHTvrDDt}&`E8Gs z57Z*RugLiPqgedUdAQlG49ay=I>6^EX35B})H&3y=5R2*SY>~+y~5*)+gt?U{=fSzWCZ}EqleYJ7wHg(=cY_x-dRCb6>Z+ zQu;I#ucVq~6eTm`oyHrbz)Y4s|72ANEq7L&D9y*Ra<7V-x4N?jjVV7*TKHNfkJ{8f zERU4r54*2=`yMs4uX?+^dV6d2c8}f-LzZb~@6rFW4irhz>h0^*+mmrk205Up{lcvN zJ3kOg?YDo26}OwQOWrAid^K_zzNPT4Nx1bRoA+$(?6cL|p9MMlWD?zeMNC+eSU^$m zdFpp$XW_tRc|^+*YH+?0hxzjrVXkY%N;Fp5D$keKt1gYAFn(zy>XD{W;nR+N8uMA< z8^hbjko13_1|_sn9vhHAqsRv}68$_bDCuWG^|n?7tOmzoe@;U~rauJ+ut0PW5WRZ) z{)6Q=3FE4_$MsLEthgwd166p|e|XeH@beb`IqX0C{Ksag^4(F54unJp3YJzu~n(0*RFDFnvDT_JB5D$E-ZFGX=V*gtbj|BQ-RQG3~(2LgaN3cTOkMkPe=pNXN* z9P5;m!+u5f%3_a7{Ej{KM`h&&Uy|&9p&d|)AYTY6li|T*lw@q@g?5Rb&Q2B+sV#_3P`~seTx{%ff1eD-~7V z)$*rV-WZ$qcIFsNHdj|{?U>w+Gsm!z`ltWIY$P)NNmh}YPk)*w720?#wa@E1sHRa_ z=F~S$fpXGGE27;7l`eU{OA7>?Hwp*SKhXWmSf9TM4W%#WS=xXS+S>fr)^Vz5t7lbV zHs2L|Nvc1O4iY3j@iOSEw>}|Xm;6M7U4va{a5w^_LCh+Mx?r_i>$t6Lrd zd^}PUJJp{`Me8J5pfl}ynJ7nDde!az&Q7hu5b#@l;U22RKES=wBgL}alBM4E{zQ2( zC=Q}W-M^=&moji$3EWrZ>^4zUnJ-OSj9hi4e|(CkUS42S;kktzQ?K@vyG)}M0rm6< zI0EszdjZQwt&APqRZI~G0#R+IZO9DI`kh$L<&-= zXp6JA8k`N>Wvvg%FE4LSqPk52-FzEMep)wi-%6<~u*~*uI@l-S-4T`do{mMP_zNp? zo)ZE3lB6)pTKAOu0fY1)7kKv5Gt{B==<3b4>;E%iER49LP2JXhpFWNM8oWxvQszs4 zxm(XtKeTpTQYAnlrJ3vMsUl_uG8kNsFu4APRE?L!h41yxuxzY_*LiwEmdteYtth)n zQP=Yi_RrkvpZReA%t!IiR$o{)-wZf89@Ckh7fONv+GttcTlZ%%wOWi}>%hX$XYA=~ z3HpnQMPskr3{+wgpJ0pA&2#-XCk)#C&sPMW{^yzH{;6s0-O;|M=P?~-eh;NM&S*M^ zvI*PPOC7rTgX+yc*J}OuTs)_J^&X@zmGl?Ubn^!m{<%ic)2YA=8I@jK?prK@{c`7G z8AYF@y6VmEFJ5e0ER4H-3L8LP=a9@#7OQW`{5GrU`>Lc*`>`UQ{8XHZPc1Txrd#mO zPw5{EUIaS=k~XX|&jOy=Kum!_jIxGst2)Kh{-1CVzN z(zrmcv>0JJry+ypDQMA0Ly}%8q+oLa3qNaED6NP)$X@)aY%$d#*OY+qU2`oVWsidiA%nQ_N7xYL_G?T%)tIM-%+&phlze zwW5l$=Y|OH3Bv+brCzWXQTl2LZPcE8)PoSZjlV|cCSE;GZjQR-Ek#iS|Sr9NVSNg!XoV3W5HI_WKEj2#C=56_gf)psLuUONEo# zZh5^{)#6>+k$XnFFwbb0XTFVl_Nc_T8qMeK->ay)z6`aOr`k6W{FVMJ;QBO903J|2 zP9rWD)eqZoC$&kHr1rh5c9M@{wdWf$c6Uz zS_^7$G3O6CDR4>qjX4=x%PhyUtabuz`_vvgf^LEy1*Hw4y_c6hg82%PSCX%`zjUwO zszmh@EF>5pcmu&Ag2e<&2;NArlwcXbAi;71RTA1)5WI8#LxnBZ*$ zM+lA*=y+jhe}dpi0`030?b_NL+TTTRg5V^ zn*?7V_-_gR5y2M;ev9D0BlzzL{xQLq2>u6xFBAMW!9OARrv$GMe1+hDB=~0pUnTe& z!T&_?KNI{8!S53MF9iQ9!9OSXeS&Wge3Rf02>u1Zs|4R7_?HC#ir|k3{x^buP4I1k z*9g8t@V^uM8-ni={0YJTLGW)0zDMw<1pkiU|0MW6!M`W?4+Ke~phN(3ZSNqMM^GlH z5OflB5p*l4Jic?j3hDv7l0WTlCwK?JI|-g9c!uC_6C5X)BsfoSf#4#+y9q86Tp_qh zaE;(S1kVw?kKp|T&lCI|1!}Y;0hV-@$_q;6j#4tObdUCgRZGJi@+nG$mR4$q`JK|x zoznexN}KMKp14z*xKp}wr}V))r4QXHef&# z3#E6zP`dm=Y0C?xBd?S${bp(7KP|oME2Xxtma1PXE&N((#qX7l{C;WWH%dS8jndn` zQCjQjfNk=j-S(jW&&Lv{nNl((9 ztVxa~?@Csv^X*Bwv~@|cGI>*Se{wMStI|JsI+;pFlee`G&(k>P5$LnvUoN#(lQsb= z`EvUo^eFDrJwvaGS?YD1KpgeUl7!^zFSRW!wJj>Oy`j{0PigR;(v^YIZw!>S43usT zw1<~EBy>KZVC<7TY3|y8xumkcK=3OBpHxtK(}HBNQo~gH=b7$L5d3|DPZ2DkS5<v4`lBtic5r-w%PoTa(PB7FytuXmq z^1bBi$?qlqJo)|P8_745KS=&X@@n#}j{L3=up|Fh!t81q%p<#HA1K z8g4&uWOPsa&I3n}wEti9^-~1DLh#E3pCtGM!7mZ~BEiQAUL^Phf}bb&7{NygevaU0 z2|hybVS=9__-TR<5qyx~1%f*Sw+U_$+$5MGm?oGa_yED*A$XqP{RHnLcrU>Xg6jnT zrcDF`6YDd?@*uf)lf0tB}&SXKN zWdiL!yeAn*-jFOxmLzXXmL|)R!Q|fLbaFD8PG*vu$*uOkOP#+;@OuQGB={AAKO_iY z>M``C4^;G~KbO9oK79YNssC(!GIi_djVo6t&aXc@aq8OTb60PyKRj{y{JASv&Rx84 zr52gR4PU)_`P|8CS0^4AI)CNV#mkfDPChX70+c!P5W$VPo2Ok0Vv|Ps zo`*{FbXcSE|FZY~@ljT1-taw{Nirdm%p@id6?D{S(ICbKEOCei$%I%5oe)TfLc}ek zV??FlzL9PTOt@!4CO1>rE!_`&O1H4E?}t9+>0@{Ok+zBn!2~Q-P*+*yabug-6NhRn z6oN$V_xnBfOcJ#1?)&-d`@a7e$hptY>s;qL*SXF)*SXFKccaJX97##bpuJoqB`p=< z@NPQ$=U4Z=^TI)38kb> z<##)s9dvflVf~SvbhZJl@b=U+Y*-G!5^~H8BPGp+D<75;9C>m>#H?+GJuO$Yr{!$K zcNt^DbPgaUn1Yj>=%JO%tHZ)+be8)67Vw#|2?ASp)-~AYMU`#r{%!)f;dG{`rG^}b}uwpl0?_Dr&92+AkzNpk}%{J)a<+UEeMGZ_l)VB!mj zQZxZcrnGgDOo!=^DceBP+_quaupP3I#KGbj**5lQI}p!pU&)+6{1p`=ek zEVj$2*G1Hp!^2^}m5i|!=5h(z96+3YI2qg$M9mxl)X=3}+xDjvmbHx~Z(wdR?v~wS zaTvroThWI(TbI#UNCyqb*$U3d*;-6z2Az#`R?(@TvxW{>CTA-dW9wWxbLdpjSwe@k zZCy?WU6!*IxaDkB;cOw&Tb`oxG@ULw&(rCqbCS+5ol(+WSK!s1bX;^ibXYh-M+aSV zbmE~C51n}EL{KLl`a(JZI>bm{Mu!;bvLRvmWJ5yqt))W*w|2mZ5I21zo$ZX71f7KxdE+q|`J> zy&QcMPFSJipyQOd`A~><4>tO^dkFfFxC0R~H3XsSg=`WY=Lg`jWcZqa2F#8%hYv~Yy zNSF=~$c;QNS(B%Q+oXh}wu%>~WYKQsI3kA}Z#S{fX-17u#6WY!mgZPq$iAdr@JcHN zWBs!R%gGv~*)agMgTT4%AaHIwXq(%fm#8Y0BdHx!&267fX9gXTvwazzat15tTSDLR z1U57o8>@kaZA?V#VZ=qJ15JWZfUJ2mAzL7}a@u#&A@SRH)7eL7Kb-?4LE90!jL2>8 zCaElA5~e>z=M6e1>6~Jg0Xl<8>cElq1i4#xjR82B z;~8UOdYqFIo}4YG#=Qdo#bhTy z4dRlXEDGV}aZX4O6a1$w_^{WK1q)bk#43n7_-`D_a1si!^WfGpF)A1@s6*K%k<8h0 z7MG`G-Ne(v!s&6L;W846Z05sl4Ss0Tk%`^BC&Po4WOfGb3|YQuxa`bk>s_7<-r>=^ zc&6mZU~}~@V5%R+5d^&OkZhI*pe!HEezKB&$h6c{90n!wWQ--i3^xfJP$2cPlSP0I z{*7hyFr!s7GEPfH6L1Q27@t&p&?`U$(ZCnT>jjCgH}S=7DH*>DU0zU-A&G~jPBx-b zJUQX%c?wSbzK@e_9%~oK1MVLeOjdA!1k-5!6tc`hd&3n@PsX2#uKM%Q<$peU$)As2 zcvs`e}C0Fr#y2J{g^X@aJ-#WzG>s zTeXYX zuEgAenFYL%QP>J3k3{lvA~QVfT}(=zY}_=3UI-VydA9-g+OVxn$y6+RNLbon?2Y*$3oJjZ zDfVS6)_Dl_2m3H9WsPOqj|hr~NC!DG(g6}i_F3NSaWCRL&MYu}q{9N>!PsJUCcvx* zBNLS^1SugVSTnailL9ffI{9OjAtA&9l(Ei zgo{ZxG?a}1M~mz4%RL`6!OzxgC(z=r)T20FDIDJCoKdtyL62&} zlG<_yx+4Jq9n*%3vp^fme~=6pXmKoRb76M^bSxJ;*YSe8W%NEP0tSqs{fyv!IpDRy z!ftn(m%We;NLV{h3g>CmVAOVR6q5 z5sO*Vo+1l?=Pgf85Tb)t9!O86!3QqdA|?Z~2B&3$=dex5MCBQl2Q?Eo%5WmXP1X$F zd&PhnM)zc7N*fnzGmn0mMy`XM2^)wzu4qz*XPQ+HD8>+snWQ;EVqE2T(~_f%yI%C} z6>{9sk~eovA}YnAR45a~mX|KEtH-dyslFGd`fzXx?Zwq#7q}lQ4LKe&N%X|NKRH@6 zlVS#4m7U3&`2)>?>?X?{M5}P?3B5VMTJezqAzwm3ZW$Vu?rG_smF@^=32P7f+Z5?K zq{|rS8KjG|b6yOYZhZ=^k5?w;Nw**sy~ZxW4f&j477)yB+le~CpI;{>Aj6m!{nx$_9>`%PCsN&tWl-TtM9FM{WPVWmXBiUq3#dg> z;{}UiFHBNss3tGuu=c6BZT|)y1mqXUifxDSIt{HXvaRAXP&`*Q{}{ADNJbK(a%6i3 z;j?DGb`{M{#l@J<#;^Tc%$m=|1gjL-uqB~;5)gw)&zhu1Ua#fl9n}N1)MtKIQ4rpw zu%iaiK6%k4@m-VnVt;Dga+#y>wr-*|$?6hcWad=fK9)IAkA#1V!mFZyFS7(cTV!I^ z8CF({Vt=VXB3`{&Nh9e&+y5*lIwv~^w>!{t{E!*jPG(?`SnCq3P^5>#33t#_F=lO+ z!3{?m1V6&Kh=C!>(&?#~j#6=QH!e;FEzvW`K?9ARWMJ?Hd#SViZCkB)?<>K}Nn1-Th3os`ukvX@};>g7hq&gNk@Fb>h z7neDZ-55hKtCa$Fi-WD_Rf()(-cEotlQ$c(F@M@pX|XCVHXswONSxwyf)VwGq*(hK zY%$I%NeE!cNUSrk$iVdlGCcNa2r?RIo|Gd7#(>~|Y%md#m6ejs0POi`%74<8cfA^&Vg3f0 z@B~-7qDbwi8zPNbQj8;Mbc)%8Q&K{OiWLB#TgVA=$rc1pj@dtBlfQ&w5oW4b|8X() z4A&$XlQ7L#5V;WZOq+!NKmulYz=;(h0F+QN6b1-HV_BKy$->&ihK~nH5&^7_Fhxv* zu_iIV?ddK{cv0RG#8fmR+i8c3V;(Z5(~j3q_#ry5K(slN11H_dsSw84w6Gh7p&j`X z`dgyQWe9diTwkK||XO8;dQ z0*@qSOstxavFfsnRhMUUO~~lFEF+}DM2Nu&8H1N)3|^kGctXbF%Q6<{wp#r_3ey&! zZHAAT+zEoAx)F%G_3uH&yls z@Ui|~;Z0BAXN4^+nJJlLVso5h&5`Uok#fr?;3s#OV?4J!w>2x-ZgONHkdSrCz-1T~ zjyHw}`x%(aCc<2HS=MFJz7`F_CJqzB7>Us-U|Tr?EH9HdR3jY_c5o97 zxAX>M<7wX*gbrZ1FPTYd6l5mpV*w-Ss|h z0^9aO;$nrH(_U`v1KWOfy*J}?$<|`Wa*-7kx*!-V4M6)G)C+ho$Y${rASv5j&Pj>o z5#$EtKbnw1X%8EJ7hj%&kGNwM!^g1z<3_nJdK7nvEQ9fMkOupxwj($k;GqCG0J)PP zxsSkk0l2UoxL}Laz8_2gJ97R9M65@il6{M-v-{;rhc_`v4{&!1z0~QT2dzlrfZKBt zl`YsoVof4H5c3NO4T}!+IBw&~<(qXnz?sFGXVH+{EmdeTl~X)9kjo~fjYVx)W`Q|? zA(O%Rmg@w5@z9<{TvP%3UR)1_12cbUtfnV)VUyrVD81~{@u=r?>b#H*nkRTeVMMy5 z?*M%1_|0VET6nT$^o|S(Kx%WQTiP7?*&zX2niyoHo`vv2DCitd+AWjzSrL}51$klN zoInr7l9*=7tfSH$1e8?i8<4J$?yz)EOZTjFN9bZ}PuC$`CtPmr=}t`}rr6rcPoeek z%A`E$7JyPtEBc!16%fgQF9%!Q>DcN5l5~h1OaoXJ8`JUD>;pv74LeVn z;|2P$@JBwYqsA*3v??BCJ{++lUl7@nYcT||7DF+1Gpf!ape?&)gvCQM3-%vWtw zrp{dCUsBof(4(uLc)aD28A*Gg^|NMvW#*RwBs*^`vEt!%Yu7yVtwqS2$5P(06tB!Z z)uv2Y`0(Gftgd>fWz`c8wXCjw{IQ4C$6FAmC@!0lzIgST)eo&(jXxz|Q}X^?PDS~; zO=(ON^QytsUf4gaUET5!O_sdtRzJ4x@s@QnyiE^1=3TdT_3BmduYY`v`p`F4!?)(~ zhgNwXdTf>V>uVnW`Xh-9-p8A~-+EkY@qYdBN7uqOs%55yO7YCnnYYg@#(N?*B~=C# z3b7cKEG^w!o^$jJAkE2KLl-JeMJfOKIy zje9^1{0Z5V z>if4V46;ckOb=;v&7X4V{&i;n$=TQbB3pSnYf@nX^u?e4aM6peo|%^X-I?*7Y5yDH zof-c)?LB-qcK>wRFJ$^3r@brVe>m+Q+qnlqU=V@aVz%db@;;E6n`<6KOX5vm~`P!@~iAd7bAYj*`&lm0RN>U zzgEzD9N>}lz!626E0YmeOV4M1&<9U}U;eY7rw)InPo7eg06_kwpPB0F4K&$a@jW=i zYj@&{Px8mBC@W{Sta?a&NKv}4Lo8t8!Sy5!;IV$nQT0qKo3d{P;s)?bnEX!oDF>LD zE$dpo&bYPs#j6tXJIsjjpK`)$Sq+(}D31{iXrOrUU5W36pK=9%oaT$4FDUQ@1-_ub z7Zmt{0$)(z3krNefiEcV1qHsKz!wzwZ=rx*wtpCVIrX~W&YvkBGr#I7#j}S|0W&`U ze}Ae>M_s+g_*1hd^pWDxg-xx1qutxNu+Y`4#FiAg7B?$R(Tc*XCZnP-uUTofGn5y@ zZ=hpg;Z;T!0R^4j@?AA%eg!}`9C9j6#*#v3XGNjwLxupq?KG4d${uVjJtc>u;X*2^ zl2y9H`+x`QzN)FD+t?-(OOA<`plNA4%yNeufVi!Y`_7W?01-$9YR<(*J}YmwbyO5) z10z?UIi)GOurSX!QiG%D@?DE9j3V9I&1QZ%a0>*V204(`6Xbo&fbgRZ{jevtu+Rzg zNu?(DvyQ@XB+4&GVuwT`k$k%37;<-usT1=^a-zK+C_cyA>q4lmK6sk7hYR!2kRWe< z2Luc$mEa(ww-tJm(KX^^Ch;nenSwjfHD>-oAZO%nhd(%g{LQP;x{v zQ}mHkcLd5Y<-tY}mXt#0AAzw_+hG#1*U0Y%(t8fWF|v-pje;$W{9|m%$0&y2RPtog zp5shhSXj`R^%{I&ksF$o#blT1VAWg1H`v&4A+*Oz09a0y4XzPuP!(t`8!J&nLGR*b z8(MA)@|v~mHtC=>PGBE*U@$n1G8g;-^Q}7bEg+r;Tpw&KIabmwGRKj(*a7^&g zfhSn|M4s?7dP(8*#o})0*!06wCBgnOcic?wC>-O-zrq}V>RBuH zDatGoa6s0O8ziSJ7Wc@8Pvn$}!ot8rPGN`2Uj1vFQUF{NobnzToj^XpDb}aXn9X4_ zK5E{C5c}%bc+pxpAVYFIy=g#rG3c$qQ1>JTm-+w`fd#aGkOkU8c*(9^)Oa@bQa(%G zUOcf3h%li{otBj-LrrpHuN5fiZtU#>T@Wz=V{sq!_4-K4UQQ!go}6m*5mR+Xy46gX zy;mQxsedZz{_K2n9|eEfm%AIJkVjJ{NO)IL!rR9sJm#OzOZZMlp;aEuI!)hSoX(_t+fC$<)bWNfPR( zJxSq!c`N~3E0>dQ6FL|?2WSo;->mdk6y}5eN^>ejTLEUX0?E49B<5nzcs(fT!Vvj3 z4s0;XSyQpBat!}83w`2qIra_Iq6q~PDzlnEzMaqn)R*i5Fbor13IG<=8LFfeKqb3@^8k9?lWfRT!j7ti zGsYGN>5XFm92gkhXbM1iiqH}EzC_aJ>vOWcys@q+kX<8du@*;YO<|%n-tpF)KY4Zc z`I8eGl3;*jV^T}H(My2pK({&q&5jz8gNGY1ihgf+5bccS07FM$v1mrL99Xhf|4R82 zcqBxY$Jhu&J;2%-5Hl_-E!SrdN=X(B7djEDHKuVvw6rd`{9mvDc|B;yum@T>5S4wP zwIU{?Q;Y+J(~(&}?27!Mi{ej9?cy>g5L|*%m}c`5)9l;GWz6Q{0nNvXB19Iplc6cR z$RdS{%{L)5_Ht3@j_{3~%R$x$#2{Wb!6d=O4Ik@?{6Tez-FW9j)*PQC!g%S#s$TpY zS&b29Hnqk;qPjr9stiklz=X=eF#rqBmCd}o&H&n7EaOYMA8cIl0493U27~G*e6T!) z+iOu~TOm%H(VUvTuw2S1;v5n`N0|CR5HBQoVmrpydyB;jD5)RLi&<+!R4ThR9{W#l zN-R5omt1#z7f=!?B?U|3i(Yrs?dAGV)S#)xFd|&KP}G|sezn`gHbjnzZ*QGAjYnlb zI!n-FY$YX9s`w|o#WEH>R!dDucWLSY^jp+XsOH5Sg_u@mpsVp=tO5Bvak@B0e314O z(qw!h{B$zhc6v838s|qYZ|j0|!GMrd0r5Z3R%3QC>HvkoW{w)jMJIEZoGXi@$YIou zWK;pBE)a}a(0$*)r|s}=xV@-6kF$`Mw0OGXDFlE30vr|i^TUzUP>kCt+#cj#s;EZElCl6QQ)b@i&#*jSk7yZFS_;@emWG*51f z7T5AeWFZKKF#6(U6luOQnxms2{_n=|IajHUd%mWP_%5m+c4l`>x~KBaU#a%5X=i*F zHBU!@C?TBd8=_9*(Kp9gMdU5!}OQ=_TDmKR}+k z=v`($xhc|J*Q{unGS_m1USBHj;P;bR63*n(YE)^&0sacVlG)D5Nmr? z38BL3(Y+&Q80#^P_x#3bKhbQ9<|}6v&t3WQmRPyRAgvUfMACcb>7qU?Qs7)6&~!OX4cq9IFB;>W~;1q^TWir->= z0MC?WMZ5+A13Vg(+J!Ph2S5bz1k&S2OH5zCHoLTp@$T=O+0(x4ixElMV z(pHc5ZBdB=;*1NXi9yZc%PvLGk?ib7`%%dW;88cP$zE9LF~|@D65aywe)&%8(utXDCsT- z3m=6DYIX&^F9Fulsi^6K@ke6?X8!W1e-ORsD$SRz2)~5p>8nQ-->{mhUrNzt?iqlr zMZM1Yx?1x%a_g;wiaY!d(q*W zME)emG{&G&=UA0pyNU2NAsvP6*I5;*Imygp_4oTnNom7B7@ubNPa94nBTys$2HoAz z&}*y~iFE8De}=eTePf~1hQ6qQ=>r6d1B1%L!6p6xC=DPB`Mu82Ty^3{)3FyOm%8?E zY0##Ko3U)~r_qX{FLHVHBj(VpVD$avYL>{BN!KGO{#!_f{Wf*-eowT~;SNU-XDo8+ z1DB%N(Mkf-2R_n|q%{55WkVQwqANzV8RGA50@!XZ=3pTjX{&dKLxf%FH13L3*`nFTqJpB4dwmz9iyWJ#L2H4M2MZ~KFw{ol)%p=H z>I2sCZyD7t{er1ptzWpLPBwb4yhsw-_BRWlM)iaQOz^G2$N9($)p5k(`a)}RShL11rW`?7{VP&{g`k>$cSQngk~7e+Dir9ou) zQawXRoXnPwr8~upn+eB(*mLD;Q?xw2YHbRtu*D}CPCzbqFtM)@djyKLy~i*xdzZ!z z6fOgYwVj@h4zy;+m!gq<7=m@tNC!}k#=>;J7oxjjV^rG^ZB?7LeQ!6yP1|A=flb?1 ztZmxnU(>X0b+BpMqpNm38QF|l^pdseqDh1R?VHKU%0j9<5<-n^b0vpxSF$;^%{;}PeoF1Y6XU1b9RI8$kp99 z^yuBrUXddOrIywe0w?v#s7si?fo@t?*ot!XLUwWNVjW%+bqc;B*I*2bZhWJ~jYLsD z?ZtR1U6H4G#g7p!C-Z(~GRP+GL>MzH2O{5RpHauP-MIKWxa$SHU&?%(T0NlcCTkOU1>d~zTJm;Wo3 zxf}_488avt3O4caZ5#@Oec4cuJ)xg=L|aFVRwv|O&ro`k`=jo-Gqw-HOHsBrxi=$b z^8)CtH!twgDW+3SCqQQl*LG)gDXv){nTW1W%GmSI=N&)mfhfghZwtUoxcz8;>8_SIbZJ=U)|H&|y@J8=48~R+e-dN9l4I>~Ui0K-jlFxgB=q&EZ%1uZqET3}SRaaQ z`b;tRgkq($Sx$Y&$dYSEVA9yDmu;5|=&OSKifrsrC=oNQ_A#zOgl++;HvSAOw+fE9 z1MNqi25kxS&dqls<|}22axj22qwmF)`1tx8*10FP|9s2Gdf5(E^kAcUb&x)>7ll|A zPKS6hVCFLxz18dqmUDIX9M*xLXgm6@p~M7(mAo^*blMy&0@Y2?XmatMA3EUmX@f0S>vt*YuyL1o23dR~>hJ2s z)68rhkG~zlscgti-h#2zo2V-Snu$i~WBmVQ5bA8YWjD z%w*Mxg!jRD4ZY$^XjCs6Yy*8=QXxa;gWeareUV}@Gv)>_P%(zi1|k=OWuKCAHlLq90huM z>u74jCM*r&_te*#`DA@#?OgkCQ)y$G`?<=z*v8_5^*7W9Ll_F;Mqt8DSF@3nHec_b z?mOA?+qgqtJ)#)?5h?4jQs0hBjoBLkihF1Ex; z0X3UtkhAvg&Xb7I|%{TcY(*$65MKDmm~_W!8b(Z5jb>*!fv zd{uD&U$558521BfOeLx{^VwRt1H9UtUCuqqBSZ_`muPW*m>K#oY?H*83}RF<=RD?w zh{%#VoIRu-iIok>(}6;I7GunzrC-5Na0OR#SnS4LW&+W`>zFzFE0+%-CzhnqO?ha= zZGsQ_!gG_PqNxoU(@012^=LckE*pthhDngvxZXY#%uXHoFtllSHw$eFYqMl5?QHt`i?Ic=^6BqfX3*NN*@P zhnltn=LbphI>G05Wi8HTkN6{AGj3pfvojbXH5X^2M$H*H=MH}Wq>V~!)YSBV_y8-# z2BUI@6*^^wW?7+Etk7I5)NO?-tkAz$p(-oH)hD1VFJtEr>~|T_oF#rnnn+@93Pw!z zDxkarD1)f(Hj|`Rv1@H&=A^8t2X-Ll1{Opd`baT0twGrv>c#FG5a}zEJBPeBvw%AY zmwvaxt?$9>CIGnxrRqdB;ffz(wahI677bbA-r0!irQapWq+c(S)K?eQL$Bn-RDRRv zhgoj2izJs~U>hTi5abj4Z6($)=(l=dpvN8@WAF?t`%O76dg~`JGY_D(4DkjEK^27Q zayFSZcoHMB-h4B7jNiR;F>ny*mI0181iEB^3IeEN%a{WiJr29Q9A@fdy^I+ZHA^pJ zCPj6C)P;LEa`!T24@X;nDhqmU1y4(+lVz>pjzPJXjdX{PfrQpD4^YCn!@op?_$qcV z=4=)h=cSiGC8pwi8D_1rCh?XG6Ro|B6#WQeoh>U9H$pFtN|XxC=KrCXsE!BRE`E! z)60U`4%@Z)%?@Fo1@0iX)`<@}zd_~z$&9*yn8e9>j7L!#^WmVPeFZaMd=g52%pFxP z)L`c9<$pqpq=pNmpDf<|BZs9W69OWJP&BPUH~|8pqU4;M9=G~|4p^c=`%-D@LJ({H zwU`ffqN`%<0%P50McT0s0(FdG?WocJAjUk(qsD~(RPfI>P#nw=+Wn%ta7y$dpb(R*VxxCriSSQLkAvE~< z-C=6O_EIGgoxKKbtb_Nm;>CUC4n=pGedVc>q8prj<%LRL`HhqM%5Oq&PG9*fs8Y&} zES78QVF_PP%dw`?)>qtN{sjQTf1I#Qbd)hCw#*T8_|TaLWyVVzQ;bXf{sD@X_yfd8 z{EHN`=<7P8dLZVCNpx&_DiQL=wo8m|nShbL(y4@27KV~2=_}^|JqxEC`H#HUZh91oEW=6lOdZuTHJx@SlkVH^)G}dDvk#O49&-(C!0784 zN!5RUZO`x1?6V?7i3On{>9luLI)a=ZW0kIe2vJlvaEKm7i_A(Vs-Ca=2OXuY0~^0v z@{Vza5N1mNX`FR4v6EEOLW>-scuQZUqb>4|mfC!78Pq7fRXlCeyZ?kf+YL;>PNu2O zhxEN0k~@Lhtms`**F%jap_IonsD5<7>m0}G14>t5rG5n%#V0Xee;UYa&et#6-P^ta zpD8=s%-@BYuvy5#V4a}O1G9_wptk^AsL-<2?l{KihHQSbo`;pt%i@fRTSL>Dr#6Lq9!U5W?W?8%U6@Oqvp5E`U|7p%O z+ViHwMl6BAicTY9(QErti9MMW=gup5IAP9a&EhthiC*9xAH>$b2D{K&=qCKmx@bDo zy-QvFJQ7sY3}}9Jzta)D0*b=WUDs=%cd38$U$1xX=&q#haITq-4XRTfTtt_;IIzl`;@qWw5@(W|D0E@o&y0whP@ zJ*Lzuhwg&vcnCOjrp@)Lj=33HT4nsqqWEuR!f_<%t?0=NY-}Zh9@B>1M9I;3O69!J zUCY%A#P+6hJvQxHR-?LNmA25F>oo^?W`=uZDA8i6*P7{WF)_g-0f%JO^AprhKy zY)e|WTU{z~bOMF@=4Pl1VAoX^dCh&WJAid~U4_-itj;tv&uW~RKHk!JmMBSNu~(Yu zNLuQu9I6BVqOSD56y+Y&!UCS5Y(%0Zk?zI^RJ-m~Oj|-7;kumh&fwTVp79v&K{4j>c2*ce#=s`k22Q*^cm zE`}jz8M(`;soAp(Sk*4At2fFH1GAEMu=nn5PFbPd3iB;MRbBn5%pxV}^+{8k4O)ir z(q6{LQzZl(EV(0LbT!79+bSs!ktnX3O0O~c)NK1pO{E3e1?%%iqpTa%VT2U*)t(qB z57gDxVmmYoMTIY}etD@lge@Y*6(T+A4YjpP1DLuBk;{Awb8fbr$8wORA-Wu@fBa%L zeI5{v-uN=#ORB@ytA)(`F2efy812;Ccqcz`1+0EFGyxmp6Jaqn29**XkI_zaj z&S5J%iruW}|4^zU)GVnj5!Vk%(Lt6Fzr8#u-AV$_r!;Drdh1AP3#=r{kM=g(mmTfJ z(1#wSS;4RgVu{EF>M^t|(!G~U7tKyZQY%^sp}v=EBdstvf<=h`X;eA%3r=^0cZQ9uWvJLF zTTb_c{ethU*1|`Qx{OWB^;M-XR4J3m)0ljZ{Xc+^@AZwpF;(wU_03 zq48W5#U>4t?Sl|J(6!bOwthOV7Gu}Dw9Z)PESar9Ra}o*e&kYLMd1~+=qjMtiGACn zW*Lhd_E$?>bHq#kf$_QsM{rIn{0ze|T){C{lRI)P8RHR`{^=#?AB$n_KpWVpw4sXD zj;f8Zibr8a)SeeP8e87(G3-dp!x_|D;sAzvq?^^+Hdbt22!MG&!w}l9LmPpLS}4() zfW}>)L1U(cMge66X8T?u&-TXqfXMW=QqowvMK4>0(MAJwe#M%bDPXXFQ+awhz1aq1 zRVGlQ45Ld?39Nw1jMAV>y&`Cl=iiJYqAC%OOnK2N*JpA2r*|z9)kzZFDgK_}`<%vG zL#O7U!f(4Sxx)d|G!qbi^$Ya3Db65mC?7tIHfX_R*HRp+LaS3-o1K)?)O#2VUYi8f;9pMt++*gDJR_oNJiACT`2=JTH|@eh~a zWL!%>_%%R|XGYFw=~xaAcru5hk`vCq8J*1v8XvTdUTSE-z@rs#7EB20>o94GH`$<9 zab(}1<%mVU<4H>fsBZKdZ^gfgqn23pXbspB)efRsUq8xfS6H(csGboJU(LtOpPqF|%bCwCex*NI;uM|6(ZGnTQQKjO;-a5yi11ZEu(p}%L-ZW4cM0a*DN03ZKW0?=PJjYIJVV9W;6H1I6Lehy8ssZ+;Jo~YCP3Hlsc z^{D?;bm>6+Dv>(|O(!@By?Ve*Ds5n$fGyW4W9fjH2@3QQ$iu8cp1+>PF1_va z_S6aIuO0-9h!-w2wx!P$!V~rHifX%~+D<8Zk0SEuhEY^Q!KGtO4HxJw&(pcdw=J$!jyN8UkqJLiE7(BRy@gds!b~~VyyT4 z39c@066Jtcat>7$ex|Btej{l&RE*5Y^Kz=O&1YDnv|j+R5}`#<31Y?U4wt3?o3wKk z>5h;)JOcsIfWIMTl&>i{T3VGC^M~C#dICn8IV(L{-C^dR1_yErhrcVPAV+nF>I}c* z4*$u9F_kYkDpu@@`ooyJ@mJwVtbOkG1rB-+bo!qRce^8H$l94{XxmG=Ll-8=HF1Z5 z#_JpADC#wxfmt2jbE0HN43DiU+_1vhHo}-d-0wcv6Ay z5qEnXU?aPKe{Dc?pkJ}@!A8;@e$fsUs_8!vFKD*aA~_(MC#3E{Dom3D&8e{%E2?R> z#j5wipq)%+a>r+|4!4tJO0pI8}=tD zT7mnyl9HoM`X$h?XFfL42f#J^(MgH)Qd8S6etH*{u0H?%26u#-P?RSY>NK2~2crJ{ z;ydH%e{ZFu7DIMjssDg`OBF`gP#aQ=?9MAtx?_oZmXRH;aL*Zf1hFMY*>hkv@J{(YUf^Fp6Y z(k20eJ|(Lhl<)A+ZEHQi$2?k27$;Gt=p?DPBY;8Qy{B4SQ%FEkY_nGMFmY4ohRCxts9922v`wxtv>fXYo{t&NHSwwWV z;~ga!pCz&5n0OjBH6}(Z3~O!ze<8R4Lt(6491B}`Tp2G0#OfV2rWC2Bw#zI|cB6{J;~o0y{SX-8$eyKUNu~gfy<%#RCD6l3faWlNp;`klp`eOJS;zeXPDcQ;ib6052 zRhk1E$7{p~|A)n3Y^I1m!mE1~Y9`VQ|L!9H&IcbbVifzdQknK9tyJ<5!qkbYaDA9M zpTZwoOw5>9i+{C>i=7f8XKg?l`XRobnJ_z%0Tbrhv3%BqX=8azm`DHmgsHw55Z6gf z@AyvHzbE8q?+o`ZlRHZKnehyn*G#yqF~kVA>u?wIJy0-$GGwqsYM_qI_)5QAA5>lJ5 z!nu9PYdPpdjy!s(W+XWu^Z2X}4QX_I~K#qFj5GL%z+RA`I1t)C7kxn(G z69@lT{%R@F+fn?UwhJdwVB;$fvPt5OGDw^<9*V;zR%H4xtY)(=aisu{S_TNRZNA}_ z>)S3JLA_60WxP_v^^@M?sS#7arfrK{N(lV~>wrElHu%Gsk1Q(#eI&1Svfk|ph>xyD zXH*or+N!L)><=f*_^@hZcG*3$u~4{NQzq+~(zeoNZZ^%L9x8ANz%jq@CyfMy~i)K{eTSn#-dxi@Tku zuoiZN*j%i4nE4~1LZtge7I%j~LSst0JHn|ufquEKzvXPFzcbw37h%||7R6Q=?q`p< zpSAmrJTbYbr#ukbk;SBD?_%-NYjTXv@3hZ{y)-53c-u@7edVa* zom#{r77SiLmRye#wc;n3vGv0hi3~t%JVTHJLS|~0nF>p~-Onxb@5H)M%?>S0o95}< zmP(lMoO3-XYCfa9i~^L7ZE2)a+}RhF9@)H}cy+9u(f$6=k07;6j^6AK8B0U4a5iJ@ z$7A<<^@~?N;R-Fx2JjQ1L*BSs|K!RiP+K-Yp9p>6?eN6yeTp*A_bO(^7^(YU$*&&} zy~in8cOeML>IzP$WUU*<4(^@zAYMoINNdXlYt?D`<~52s#dsnpEepM(8}b4t#^Nz# z?!`&zdF)WFliMePQEkvSTbg9v0n3G}Fj98N?!zJOC5~tncB|a7H0)uf=z^djbE6ot zZbR1OJ^>7&#J^)`gQ(!(6pjgNKMCzdrUI*! zIV(n0zfnD+KeYDK_+0(cr&{jBETgC?{*HcWRLi9SRk>q4F@Bh3VbnLGuUz}7(P!-% zVS1S4PycAGu|n=3>qQV<0t2sezDvir2BJfkKFvMbIcL!n+F4P44P41qAtvS*0i3B=xh8BswF z#n}9*IB)#uRaE%eJs5JOOGWhCj_5jf#(p-P9i$D$Z|SVGK`%bt{p?-1j~xfW20BA|NOV^C zrU9C5fp28}2hg5XRzg#+oj{-ASV`}5>a7DXEgEbYGWvm6|9q~c6rp3lH>XACyJGV_ zvFKF5xxdM{eO^V~oh!YKYPrL)Nw?#SN&8iXJ24&ZJmn7{AW zrYZO0Rb=}IdA5R0su;ks#TbdUo)RCRAB_it&=Uy#Qvmlnee+?#T~FeBF@VLx*y}a$ z-nXSj{CNj3!Wc0wp803}2AHm+;9(TRiH?5&JsBBgx^~K39~>JKIYwo$%o-H|VPMoX zL>q&(Mj6L}`PRA0wJGih6^Z9kIToQA|33&|JhbO02i$zeUKQ;#<~#RpkYCr{jrf*y zVn{8Z=COGin{zkM3={fOerJxv}ScKESTES;e4M7LskNXY%63`0fkFPhet5& z_of`9V`yI?$L<*7uMH6KX&lecswc-UNQ9$VAZyFx;Emsid0O+fU9_58D|WGz_${W8 zgi$NZrUtMc9}rWp`GpN0kKPn5xA{|1hrVm*Ph|wKg81ib1hYYp(f&NcfAGCjuRdNj z@CS&Opwa#m;-I>3ES;|1Z?tz=p(zMm5fC?_R`Xew62o(WSA)_1^ko@R$1^-BGnmg3 zp7_Imj1~M1ye!yl6|4Z{a-;n)LbsAD1EL2RjCNW@ycmL0)E^K(l~KnNq1_0X&vqju zz6UQ<0o(3~a5NJld> zQ9Z0^s+pnm@llw`FK~=U-@#~@jNYdmtrIshASd1g{cu=AR^ttONj0dl?6`4n5p66$ zRK^0`;{jmP7+BHvZ3~+W!=A{be;bEylQ1fi;a*R*cG75P3sVUURY)wP=_h81&9zH` z3FnFbKQO_qLl{5d!1yb`x1`P}_MKO!*JGpb7T6AUSL)SuVzG%{x=U%`EGA8fFpF*A z;5PcPf`xsiD;T64nSuqb*oCE*F>Fnrm20uY+JxzIs)#Up?V7|Ky73K`?i0751TDh; zH77BoW0h+RX|^ODMx_|Wmkp>MWPQqmtPrv^>M&!^DRCZ)i0{4y6#Ma))TcK@(^>@1 zjx5dV5gT+wsrxYcp`$Q*towjiQl9U@st5|{PMh9C@xI84&_3eCt0WAd6CcC&3-i*Y zP4?sZuvv0Q?{WNCvDw;GVayvv$uEZo)xsZxO%?SDd|+jg6908<9u4^&MLoT-dDNj> zzE8(|qX}PPQind)g*$X-XtJ;6_%5!`!v4g2+(yu=a_e+65=WXqd7?k%$Nk|6fXicjxZC~66>%z$;<54 zrlV7N1=>~e+WC)-liaf4J8blxUxoN1MjyZS6Y&M`^SG7Q7?J11(1~|Wd~o7q=27kJ z`7_2aa^aB~q~;=|G`*uVX`|k<*cahexoKap71W#`jZRW@9)% z*)!65%`}pR=IU4AoW9fVG^<_WIkZ>5%LE+QHf(;saYgUB1+Ma1-cG^wcsyAL0TTo~|N@-V!i=eMQ=N8Rly!zDLa%AJ`86dq58x7t&a-vh(PH(`Z znOtQ?&Vp-<2=^1U#t$9%U>gtBwF^G;8QzkPRYS3PJlgt3RD(KPM73@#+oIZG=*6Sj z^I{KLRjM7=ZWWtQIrsb4L|Z4^MCNc_sP!rKtp5Plxzw3_fbAZvq0W`N%H5HDV1j`7 z@yE!D+bk-SI>*HiWav_ZI-Q{yLimnr(Z#o!4*kIZ{vvw=tWL*njumcpM>r-}tnM<9 zRhNOh^K&4l|3#1?cjS6N^u6m2Uxjby72(&S+Oep1GOBgqbf9DD`|hw4Et*gJm1EHr zPrJ7X*a&sL92)Y5E-ZT@%YE>W``J*{(>P}ya2wTKk923apA9>Mh-h~92uGu@FY51d zhkt-l&FKxk9{1M2h1V>My!#NBSX?kh{oA7col!s5TZf~55%oVmREInOtqZR@7k~9y zEh_3$uc@k1a}aPx<{&jg6GO%L>ea$A^d-w<8@dLbwrYVPrwrvp>Nw}X*u&{b~KdPzl6lOB{J#DG70Cu zn=$br$;G5q?y!U3huz^(OignicZbjNtGUCc`Q6|S5AwUr9X^GxzPby)&&%@x_p^rr zA|E>g*p_wr-)~T_G^&rsv}0ljaZ(9Dt_c4U#S#g}kudZ7F}^F>fhmx z9Y#9L3DF*9C>=w%>AYVQJ2fpq(D<4}M0z3uCWf%o(Ncd72H%YSW3tC-F#n64=5afdla5aaJNaRNN`OYY|ujNg%Z!|Trk?OjO(ZAwU2Xz-?MSi`JU63z_W#)<4MB&=6{U{~Ows;F4srm&tFBCHrpGGD$LE zJ0FZ%JEVfXoJy*9#jn%FI(JyZQWsnk{v8QVDMmd-zkk=4P&KIza$)eJuYQFLo&H^p znm+%L;tv1Oe*a-~gfjH6h;KUI!;SdUgwgLf*W*?5&-Ij(Vba_$E*OnF$bsLFdk_ga zsP^x}(B?HHBdiugUfZ0v5&X3-8#DcD%K5hw2umK@ZoF-bXelM{kO-|A$zI9PSBvv< z_$9l?=+Ers?eW90XX0o9Hk)QO_U4<@m;l=h|H`r&zyG8eOr&7%|@7 zWVcuE>d0OcKNgFyWKmzGtQp5xm~Kv~)fgk`#w(%HV)Y)g`jk<9s?Szj9xu7KNymw5 zT6sAP49^t#Pn{TvUn_@eg5@z>whQoZ%O^QGR0+*4t_t zXnJcr7Y4xe6~&$VQ`AiOydW}AQj8VdMJrAgtvHMxacMc2YGeLmwXj&8$<`cpnc88a zm2t7^BjPT^A)m7Wo!}P^&0SyHT#PhfvohgC^1lpftLxJSq6v3IBZgJ<9)Yifu2%dy&HR;6;F5C!`&VJ_too+);Btj z4|!p9Cw|nM)FJQ$89zf;p%JhZ(7Mz~dTUp@J8}UqFI(DgkKdo+SK#+INW*5YgPXlu-XUJ2N|SqfPrrW|GUEs=rMybu zhr8}CI-y=$^Ft_-|B0z9M0DxtX!URx>qFF1lo@&8ynhryhng)KA>qM|G~%PB8nl<< z2Z-9sH$i|$4GpDSybgfVv8kUHLlmfK3v_b|ZX=pg-1-v$yR_LZdSSr_V@y~l+>RJT z{0ky*sH5S!$dO?xqrwG9XuHUI-Qm084+ejscz&4&5nB7ge(X1wiuZmYyAtRm3=zNI z%?RtwqJurigKH3dsV|+w+5ykiVA}&Wx+xd{oZv+W4!pWB2Em=^T(Q)GQ77)e(y&|~ zncJ{_4s;t_Cw}O&_chyp{`?5aF9eXHBUs)4t_UqToChRwO3rZ^jO&3G2+-$TunPHV zmx`A##e(a`QT^~miK;p4(^;Sqa_s$Vj$>AipvP;2N)TX{isLg`mn&YD7D$dL@wrSVI9DfqZ;T) z6>fYDYywq*UMO=ywHE&v)|dy-6Lkk!w%(vA{T2Eq82)6{o3Gc4L2e$TvAnbGk`vmh zji+SJ2j$(?4Cd6JM1px{GX3}5;~1y08#ZUXM4)Cq54KjwD>fWR@4bcLifekUgEYCP zt)^BW&Y)S%*NBCfdaQQtz%Yl}O>@R(Nn}f}Q5{Bq{ITW&@h)&`pz*Ed7Jr9c=~rlF zgvQh~PZACAHo#7^^cro3Bt*UV7Dgv89B5POMIOtF2gXW8R}988qj$w|Pwc|4kd#!v zB#&*s1!Q{x_7)R~iFVb+tcF2FL?t74_UtofbB@??2-(a#5(kDWF#d3mmbjN&--nFy zQZ8=e;u#`Qi3l{~5}tY45(e7Fe-ynNd&HrC>S)T5v6!Tl+?|g`KNSiB;k*bjy4zdO;#uE$O+K5{S*+DVkmaR(p9l8088?J%Uj# z;OfOfnZk?0*v?LEpa`L^ju)03m`k1pNq7nOMr7k~IVXYaWqw=?DZqIyc!Q^|5RymO zx2bPJLVwtU+>n&iiC-kUPEczl>3SV9_KII4r*)$o64|ugb8Dzd>KPL1hGWznHMNyi z-!Db0F>kKDr)>`ZXpJ@ubDXvf1(~*SWfuyeDGsA*uKkGnxp{fDb?)cBnO5>z@}BSRNTrq`EnZWUdj~Q3Q&DUd0~&Z_WW^u zz?PgbCRo2pJ-}ns6-!j|6<0>uVpS^sh+Z_xH=wr3 zvU`rlVaq)6VvYFc8IU#Y$lDwIC2SMKtsI1VJ)a~_v-jq~x3_@KR65>df{{g&>blZ^ z116~-KXT4xht^2%c7ZA5uyD5HjgLlO&$?7*0E^+C3d;*W!S^d`91Q-?WpkP*u(`3T5En2`<=y*+f|E6pdC z8?TF%pf8Le`optwgPxt3CmGTlPA%=Sb%Ejkmi%Y-lhIQUVA-s5l!Wx%cy=4 zn*uZr4;@`}XjdCwgR%G<(FH3JkAsD;t%_D3?_aQL8^ADTre!paJ(ZEQ95goaX(Voc zxwQIJEB3diXg^-RJX(>1yIrT^?}#B($qkNNa|j$9NhsHvPpqmnmku<^%1b2*o29`VK2eMfEB7v2q5!KbWZ%X#5xUov67=@ zI9~3y1O}F9ZLOymhV*t?m!_#jNsd4qPi+9+Rzv3kE;yGTVW1|6Uezs|dz@YvI+gQq z0P<&vd|JwR{ty;N3SIz7xznc2oP?|BcRpm(Zk#lzPU{h#JLjcnS0Xa!&WG%p2U>QR z!Au&|UNdl>+`Iki?h^xgx2^a5AuzV07IdaSMgh$GP~W4_sq=@p(^B^}8Au@fR}kAr z_%8we3wlpVydzkSve4ir?nbNxxp0+(H!U<64?(CxXNtx^b;@fM%HCOU!J=8k`1YsH zfy-?k1Vk3o_psn2NAv7Qa3+iv76n{*f)3?cGW6~|*tmQEye%y=UnrU9p_0GexK#8l zm)6u#|{akGdnTBcV1n^>*V5ypv+ojYgNkfcosY zLpEs1HMQpx$5-`F?p|+izWaXTK8No;wqQ(x&{Z%^o?4l@qhzo#P;g5(fb{|v<7#v6UWNH ziO*t9sCC7N{#zh()*Zpc38e^k7FLY(Ty!+w9o1a-HTvFNpJKdg$E^=p%J(J!Am&Zq z+iD{&f*9X)_`d1XeELQ2L5cGe<5#bLc>c}nRN%YN?$E9yQn$yiirqIL?k2FThHS48{gaRa0oSECWyIC7!AnnOkaa?? z1_#2wV5?sLAQqN*XTVZ_G@2HzD8`dG!=}?6IfL{)WHzd0C?bulxnL(_HgEX^m2ySt zdCzUHa{W>Xfe&iTH?4G8Bmp}k;FLk59IsNdu)eQ@U24Ha?4_#tR)#81=v(s@Ekj@F zxFlor4Ng;AU5lZx)@8maqs+B=sF4?+{K2tts=H|W;*vr5S^`^dRGyUZUvJP*U#nJmR&jT;J;9<{&O5mdZ# z)!|WKLE@3{@bH_KYpx%!hOLeNKwsoEqj$lc>;Go&OW>lc*8ksGfDzD{5)>76R8&gE zK|nz?K|luuMOGJ35e7jKaF`KHQD9IRM_gL1+ciz=+GgHzFBR0prCif6OR>E5BBq$8 zXyp9A&v|EHK&|fW-rw*3K7U_$=Iq;Z_UAn3Ic7V`800eIxXpABy94xLT$-RRj0KKq zHu8MFRw5}6fpo;Xru`Y^tPhu{s1Kv{ht*Fs2FZ*;Qb_q4rN1>pYWjt7HCFr}m&|o$ z_qi-t!2(=H=MH~Got3>zkKP5|!+tg|#B`+3@roMfvXP2lgSy^qD7`8N-MwsO0~DhI z>UB)iK@D|ejFMIs^3agM4ucQGFdfBB3!Jjq(SE*ctg}%~T$E*_pphAarH0fspJ}w4?PuqIY$U@iRvO8G20dLE zb2fe1XBSQ%n7VxSubvVktV%9pt!O1f3%{);h5fx(f&Cn<~*WX91_8clE=Xo56wf=r*VG{ONRNL!2` zW{e;X(p>k#g0?h*9Jd)8I+TU33^g6ERWdh4+1M5XM+wU`tgU@q!EO#Wl!XpxFv^S( zq6Um@adflSIK06aI-tI02v7%pD}N~Rvi^j}B zeCM%&Hcy6FX{^;lctnG-F+W0rk+;g6ZizSEa_N5g)Xz$#;sOv?vW=@*(hQ^XJRb58JcPCu#E*)R`hsuU7-5UW&& zklvP%ts30|S%|v8b9z_)Ei7D#9Si>1wV+nCfZ&5@nQa=aFp5ke3WL8{_YcU)qD+P; zObWw2GsYX8i)k5acBc6&LwiJ0o{#IFq79KrXpQPnQ-HNBZOmZ}rd1_CJr-!SKhQ|? zV84%88R}#1aSXhLLd1x4hH?tV%)=uW9mbd$dCL@gS88(XgB8yWYvYWpUqCH0@Q%EM z*t1Ndq=BPk`b6|5)_)3mnT}KUZYZ1YkG5z`y4oYLG}H*VFUS3)$g7z0yE)bNMc)y; zEn}0R;JaIg`*MWPJJDi4@@luyQp*wnf~rQzOwUSK;$4IEJlbobp4XXj@)VD}hT-jWa@fm%` zz|J(o0^N}ffovt9cd)EvVPlk)4VSVePFy;)^O#M<3lL&KOA7R(wQXK^$Yt@y#b}E} zmpbtNJ&Z>{P`tJA(2lc?U9dxj|sdM zmR9l@qrjCCMyAm2IZ}qT$niN|Gpfh?fPW(}%(+u}kiIKFtTBkN6Fc!P+lgV&J%e(~ zKfv1ah7qW|gS_5`JT*|z4EL+^GOYKzM;i{xF%M!{j43wIjv;&yuvmVTuuS_h857ZG zi}5Ll*_3oS@S+X}88Yyiw|bKjbq>6!PmXWC)G<}TG6DirfDG_&@iTuyw8U_!rM-R_ zmO{cURiV^1VX*ZvW08y;q}9Ufegp@%5p5*FszZcBaPdA5LIhnm*+|$4h5;Q1vQOGz z56Q%cO{n>d`Y02&3XbsO+Yu4F+GHuTd=W7KGvWnsAz!i-CM5VdC5R%&@H;7&*oji^ z)*wwwLky3{wYleTd_lxDQ1OWx=@-vWp-nl6X2@f2Q%HjvWE7D8aMY*2%wI&*F?lhv2Z%u`q!-dY;xQW7ibtnb2v9AZGSVW;X5rXX@EazVYlC0`Y!EP!+X!H@h}q>d9c z8=@ytOQ6j&7HlM>paQZ24hG(zBMYpT7jHmS72T!7TP@BA1j+C165=6m)bPDL@c!f} zdfDVDNj0D1B6>qwJzl(Az$sRmDtD2qp+*YoXSGCf2z)N} z^Fd|tD7!`OQ1eNZ;l~#+9?*lt*E@hcymX{!=?F36EgdN~9F!O;S?r%R#$FcAHTq?~ zM23T6L#3GV@K&R*m4Y9`K@sH;Lh9jK+USZn&Lho3fO5bNz-GWkz*@j+fGKqOWn<`y z%TRf!Jk+aDuR^VZS_kzO)LT&Nq1HpiB63ATnG~`RuokbA)LYPDGE<=&0I~&~!X1FI zYw{GF4pND2^+M?_HppW$i~t>0zhydaOx*zumP+tws)W|R-h8tG=@u?TD&{-qfN2%9 zh|5|hcZE9XLv>Puyub%}Uikv_I{?*yr6VLgPL__87_KqwU1!+)&?aiio5fF4U0o9! zuCrPwweh*q#ve+65?bo)n#6FOYF1txk2Y!(0&)8yLqh zR5z$@P+g$nUej^~RC0HQ3WmVtc(i5(1X?baLWMXk+qw~Ov=Z^H25ba;LUCK`W`qP7 zu&E1XMrm#80cC?9!LC`|;hX^Edl0ga6&wiQRiL=&sBz=c(+eBrRtUU#2O#Z1mTK%t zO$J_7I5dFozCImHInKC|0?K`?hp*w@eF%^FX^vN!@0_y4j}#^+2v{)8lXCjc*rf|_ z?DJ2%bKFjJT#gJwV5r@kx&lX2=!FL$077_L;!ZHJKXL51SLcKDARJxhbBMS5D@j;L zcOwc$j>4Sd!au{t4d*202gNXocTkVUItA2r(^KZz?&jHU=GmUStHmQk9pW%5#soSY zJ{#4r7=L&v-lzI44;i+rgC`dL3i_q`=lBIY6>>h|2;5u@)2YIyCm49VDjpcNj z#IJ+aND{gj4srHFcOu*KOJQwLa(s59Pk6Chj_fXoRmkmVdf)=2q=K@g_uxlSv?^W& zg&iYXQmc4_hHJ~sI!-wGqE&+vP7`RfCNTr1JC-5};sz{d1vu@TEYlCfVdB>BXqv+r zCCnY01f!kgVNK_h608Ft8_hZm<4l-?RB>Hr7P<8%BtvFds6WX$qx*&s0mmQ30mgox z^T-EM$@>=3G1B#er7Q~-Q8+r7wa{#>jHqD^BzM72K^GIoKvv{6PH|sv$FJxBLK_)~ zZ`MAoH7*qA#A7yOH}_@qSehp)2zj4w7)oKq`tw%a<$V1Kh>(I^d_3;^huy-hJ9;z# z7r;Ca1R={Q_pMpv5Pi2kzAUaT8mDQuq9FB7$zs(l2Ll(jG7WS^_}(jYm#5N>qNMIr z`<*a76P1Q>mFwCDBq?-lAT^DK3b0n=nKOE?2Fwvmwg>p1U#GPqF^lWF3SJ=hds~|{ zqs;a)7^dyoBP4x9zRf<0|M-+}+Nvv{D`chbA!Wl|(Sn`O{& z7eAvFW9;tB@($m~N2DT<1<@+~CyR8Qh~d1DqL7zp&^@u?G2rG}%>?NAJy;P4yy>=? zAac)$U@;3p(y)z<-4W7cDZd#^tHCCgFI6E#1-S zdtVY-;|$3ZV?lM`P`bNYkYKt~@x7Q`(v=(xaMOjFAmPHEh#=z^Qs zWxgl#W|G<)*yUGZCtx;aUweK7b`ukXyT0!BBWu@K+qCr@xC1f*;m`b$i_}`KzO?;h)BZ`q^jTkOV7ynRIi2KaK(fB*r8EoA<;21l;5UNy37^%{Z36U18Am4~UcLpTP5#$QMI& z7a+Q}LjbNEy3jRJ)PbMH3G_?wkQFrWU=ZL&)Rxdzr`m%2&GGyPERp?Iq(kyH*7GtE zh6)|#&9C{tY!k2_aRDh&HFTwT*_eTK>yrjvR^BF|6VgA~MO1xsP6*ZZ6?(ADIFx+Vx;709j+J&~1;P!6H108HNA9r=fJNqNb;h#Vp(O4dWg&RV|cC^P{{ zN@G$z`h`6``4OgsSTQ6{J;nnP;Pfu&Hn_rHCjAtCaV<%n`lNbqteEEa^!sP;KE z{>~l5uN_ntI!rc{lX6^MTmC&Xc+&xlBkq-WV-N!l>gF0~(vUN!YgNe+fMQ0!1B4x<*MYdvM1P{U~rRh-MQ4oOTB^B@hWclnCHL4&s{aNor?V9iQ$Ke`}H$o&n zIL-p%`Et4^g|Pf~Xh4>qP%{Czz?cQp7?bLR%5lN{N>o-;O<^$ON8+>^!wNROR~bdG z8^Q&KDdi>SQ9{Tz#GM(`9#tEkLS7Hx^$Q?f_XS=qWB3HJ;VR&hoazzH?V9Zfy}|y$l>DOGg2IAXH2VcM;J^S3 z;Y|)JlFkY#N^uRMCwox@^Q0T@@d7#etNe#9NDefSI^_D!g-*A7AUOXb(Vc3+LP>Qh zv=l4GsX(SWG$mat!sTRaIVWJWM;mkw2y-Kbg3-+CV40>G%N{l}@|T{YiBXsgfl%73 znpUGj>ph`0>pfUrnx)0}Llz7NKu2zN>jzOl#3NUYzVj(K7S^fJ>!_m#?#J_D`oSc) z3uK0P*3B`E4?$)zT*!=mmH{Di>_M_scnp9&wn7~jDWPznOSupM2227}Tr{p2{tU=8)WU1^STQBJqctP*Xxi>5 zj9|bZgo<_NGcoc~(`ILTBLh)`U8q4T(4esl1L5#FcmSgcn)FQ_*u~L?(XW@SNZ<^}qLVXm7V<1bEX|6U_{r4*$sQQ&JQPq2}sz)1aUhf^*dH_c@&FbB9LsMQ- zgsum92>kaO5XT%De}Spa{8^?d_+w0U;SVy^jo(A+Kz=(jD)|qX>cRhwsh<4nOzq3R z%v6Z%VyZ8{gsJZQLZ(n|bv}O;DrI3?A=(#z zfo!+YF#vy>X-i3ah-sIRb~n?~P|SbGv~&fL{~Ob;ChcoX`xHjl%VR0HG3#ft542{+M=&%W5HlPpr@ysTk_ad97@C&ds z3beaw@&1Gmfg;eZ&SGQ6o(5661lrxQ*!(EixCPqPTWrn?HtvCT4Hlcjf{ilJj>Eoy zGP0f7%<%~HlQNrl{!OxJ_P8~>Uugv%7x}wVkJ=lc)noRD zJ=k5A+B2tvBKdl$NA5MeS$04P!Fq^=R{S!oKayM$^ynRW1+Gx)pJXh2N&C^09B^dI z-h-U^BIxo>??L{`#&EhldWK$?l9qO ztnJWfl#SKdnIm2F*C?>K)D4WNCJKWkXqfYisM17x^Z1&4w3yN^{0$^!ecZ9w!qE7~ z%5O5Wf`gPR6#Pcn2($_+Io|2&i*en$7^A5ggZ)*04F)ePplBBa*@3uBi@VKuT`mh* zV5EG@Gdkwysd?c(U_HAJc#G}>g1Uc}rs)C~JeyG9BA$O3za9%Af%9t2(k@tFmMst& zcG8ALw4goR7=je&8L}w;7>?oL2SaA9!nEoT+~FYKCLM05Cay-irCmqXRu=x!Pj7FC zbQ9M?x?Uf>1eRFWVKuZY9BI-NP(qwahI$YAib2p|7x{GIFDk69!d&QHPOa}!havg8 z);MZk(9*WDLYuw<8%W{zimh5+nvYUu8`_v z@;yflHLBWAaU7Ev!i{yxRfRc@jg7(ok_YFw!Nr19B{b3~6m|y)^L1oNh2m z*;6-Q`ga=(q3lXV^p&8E(cxijA|$oSKS*+s;E=L`%Drr(bPpQALVc%=BKXRM;ANE^5y5T15n$ z@LB~;@+q(dQ$Ct&rPN~x*{`Sg%x9zc6N05DvrM#Dehka?Q(>U}KYtDVmN=ZPLebTj z=7{)Ga7zsCZf7AGu;w5TX7%;y2&Z#NzqOwwAH`?Ee!}`x*sh}=?6LzZbaMk*Gk>$A z_)p<(_9GJ>p4&l@+yu*cy)GWhJv^U`)m8`et8p`MXSy1M4hS+pCD`Kz4Mao|U4UOC zwsvhbP}Y% zmdJ9f6iV%?4iXdUvCiF(Z7oi+Ask4`uRG30zDGaac-u~i$ww3q_Etx};WPN=%T7}> zf<-%i1+)_cFW5z{MZ(7a>9-#Hm9n=UF=h(SJ>n7iutIETf~>DS=750G^u{Cjh>u|e zx6B=+pfCT~^Px9EDt^@YkaYDU&WGGyW@iyD3m)iAE~#7`_BAJBN_^IPXb6g%ei zM!yd~A7XiU#j$e=_52yxI0Zsr80m=b8060^)j5CElc|JsmnaosZcYr5g2-#TA zApT?LLu+55blLe(6tuwE!_J2`ATOv3^1N~j^i=>32J4y5L(hlEH?6sT|9ptWYvb?t z&xb5=$0CVDKq?>;paaYYlmK1^pl<#R=R=g3$-EiAI{=3OUz3fsZvM>q5IPxdcwhj7 zfPFfP1!+H0ffpld?aTgxQ3KZiv+V(6@K$7Yyb?c?>8(h5K5{Iq7AC-I;S^Y9rv>3B zD+)hzrs8Ko4jiV#Zecd;7Uscj;li9Uw$HFWEVRqm>53eApjoZix!3@9WT$Sxx!8|I>|9J?it>y$MR`Q?*z|)mBzxdkj1K!C zNhB@`S9uDNh($KN<%};1m-VEA)Oq;wq%%G`-81V3LvTl52m-jVg5%r-)k?N?}dIOF`3!EHEI{_il#Ob`S zEkBZ_N9PiB)bb8gB6u~*QSHe0YV;ty(6b%q23U;No)9F-4rwlWT@KOfZKM#rt~(gT zfB7Bd2#wz1cBnlLJ-w-kk0VPQf2pz5!G6F=Ae$lIL`J?$2Ywy+PmzWx@-p5>-Uyv= z1o<%OvZvMn2NY@R%Tz!%csVyw@NkP8%jt9}R;2KBFzg=g-v$ZE(xFGKBU^3PVXZzv zASJ%Eppl;B+Y}9LE+g^kOcl0oxW0VCgqN~O2!)K;+VLi0;agGsx(Oo! z?<|;9bia;Bd@*IA11(hC{``}a%mK78e+y;4UjjD6Un3|{?(l#GyB>s|QgaejN)154A*f8tZIuo>lYd ztEkl!RM+C6maoltU^?=I5yiU9Cw>nHh%+eD(6V2svCH6MIxH{|jVl8OK%YaH93&N; z4m(v$sCgD=ERD7fR@+qA&TteMk@)j;qZ$vfvZmuk^iR|rKe`wdkR&S$5e=o|oIFrC zcvB(U=WmyeuhoP5wxU2LquN9>V2^)A@vBg4Y}fWA#3{`Xmxk4sCf%h*H=)+i=WuCK z{lT!iTrgrnCFQu_s1%RcM2#b=GUCBDi}wZJ97rAL6bgS3_`!fvClD!WUF6%t8hV5| z7vi=H>?7;w*c2NdM!8Ig=YPG3kR-q;%5Yz_t`H}g`c}6KiEt;vb2skJW|;XDit)r8JHp5F~U^+_5rk-VeOCxtVBc)kl6-vCYxN{&AZ)zYIe;4G&B2l;3maJun_-~o)Cn;QKI zJFa0A{*Otpo0nJLrpSVw!7-r;rOk>m!8&nFAYc{CtplAdfgOa$>pzE?x z2GI{741c;Dk`&UM?||(ZZ;;{2&j^`ugtP_0k6NCz4_=4AbE3x~(}A8GI&$D4t)r=8 z!V7q{PU^A0AKm0w#MRcYT@IRHLVOICTTX{{kVb*~iq6}EKbp8rNo&?#j+d7@=z4=B z*aMU?u#FA=L2EzwyF9V@`@xma?T7B*;A+%%jYxme=kVZaU8|jDd|L6HbEb+(#MNc9 zmm)1@d}8TQI31$dR^JL{>77fEDHe0*l0~dps)vh25O8)$a(WV+Y@;X}Zl1K?Dnc*S z0~|C<5o3(0s-jv3<{-;GK%MJSN4mpzRCm1Oux^~?a$v1fRf1`M#dnH$rz(@t?)b|73G~BOqh1J)vvWL|dwJ%McBIJ2E7zUB`;lBz>11aX7ZWyO+ z%a^|LLmcOp;77QFiT*)XFW0|Uhh+vlrmuat`(~?q`NQ3}kUO&f_rVI)D`JE`VNu1u$m; z5&o!1U901yR81!w_vq%m5SuRs!AvYy%twQ~|C48UV5r0^Zo~o18)k2m)AbKk&pI95ts% z8OJF$P2&`|(wf}1y~Zit4{tJ4n2^lu+>EU0%J8h5v3i{{RhuzKqxJIga)eu$R-3I= z_Dm&x%-md^W|q%@#8BoVHxYKW`e_+ioLBDLTv&4%SvlEyozH+Kef~gS7~-;$r)6rC zx@={3jwValGuN7&Qb;K!J5__^SlSjRN}7w&r=)0dbJO&hnR8iCO{$XY6BE4>dm_bP z9kQ0AqheU&epqq1nHp`DCR4~)cy2;=-ay|dZ8k*>MpH6{X5>;1nSMlWv?et}t4Yyi zWM^62qcuQ|?qSZ99nO=>;`Cf5{+<%dS;(=Vo#)56Hm5v zac$S$twYC7?wz}IRd(y%!=q=f-kwiA-KTFqul_3U0Y1Kd0|)sB3=SMJ^qFBn!NWsB z!$yo$hmRT^5jkdT)VS!FSlqZ7KVjme#H7hnrY28IN!6rHPtTY!Gjmo}cFt^Vu1-HE zFMsZ{^X3;USjgEI7A`Ie>iwhSQ7rNNl0n>{XEdl{sr7DanECtp)d;3Qv6atSx zc2ra;vaR$iEG|Wz5njHLPE7Tx+z>*od()F@g;l zxtQ=VBW;Xa=-9~M@G(s`(F0XJzO5aDvy{m>Ihh$L$<(}*>B+guS;=Vq$*>n%Gd1PR z?BrCXE?uJxQCic^%$TN4*3MOCpdPi@=y8mY39bgu74n(fl&P#-omQWsL*eny3K5!_8JV1s#mY|Q9zf;J%GN10S=svO z>B`)k=`;%obnXE%4P?c8qmYdC{=~zIExybaqyX#_NycgVLeAsVEJK ziSpN!K&r)kfIqqG8wc1XAIfx1a*mK}*fZKp#3OJ&B|A%lQLR534iu%1M(DCO@0pg4O$Fgrm1H#JbN?z=#iqu&nz^%3|+cbgPw?1FterqN8`m3 zC^cD^jO?}+s@$eqvQDqn%+_l#vkKij+A_eP&tY_)m4Ob0Mo0Bc&0U|R&m{!rCI1_{ zJaDgKIDBZk*JPpAva@DsvUDf|`DHkKsNZDmbUk^@wbrSM^`|rpVr**8p*g2J%yE$!DcbDZ>@=M+K7*Aqq)#8E6(148poig!b3}i@@`M|bqs^YK#b}n5j1gI% zH8U$aFY6i9p#_C(MbXXC5tAW#8>~dwaO;?)3DIJ7Li>vmruX2i)R>%%tdML3hCk~% zflZt+KmIU5KJe#>^^WlOpxc8sSd#wcUkUf%U-J+}T+^S3`(uB$F%)x6e`4;B{aM2+ zA2)#q>R$=TtpCF;KvdNDhl86x^jT|=)M8Q7pIG$A{;c62Y|;O$&F}R9O34L())dLq zq*u^U)j#pI^#8|7+vH2ZHR%N%Nm#=Ew5ZrnvS{&=QsYw7va;nXR<3&P`4?V%>E+e0 zy!w~d{<`M%wd>wkzv0cd{ipN=T)0?$>D%uv|Ks}~_?j!VSAV>Az3#?O zH*fuX`%eAcd%raNdf)t~HyDrJK>VQ%#{YKt|F_fs)A;|r4c?>O*#_@_yZmbP;90W< z6U6|uC47CAk@%FPnTwB$jO?G9+8-KxQIVic0I;XVK8bC&xiQ&u8ueqb8zJi$O%4bc zf`?%JbbT%sA*1w}ERIoFi&9*{Ioga&sFBIqlys;gG}E+tYy`<|RB{&6A{~mKL%b9x zhqx#nKo-Kyr8p=&g{3fDOtMa|O@#x+r_Erx*mS)%*J78TNzKw&46#_Il67Qu7ITf! zThwG7h2;>AgMSYG$PZ{XSsaK27Ft9Cwtm@pF*>%XAp5vnjdtv`8CZUWH*G?Lkq@{< zBO>mG#|KN;hz zje|uCeiAcjzp$ueeyba&*bX3jt2=H4Fn?BaV4vphw&5wXU$8?^k+micW)X0)1Y_$ zR`_|bk9O|_I_V(5Z-p0G=%|m%--PMS!`tH7n9eEw3b2je*8M!(F1B!oZ0u(B^!beD z;cd&mAA-BT0@%ji5`Vwu{kD7g+~)2r>!;_u=I$-y|Dd?Jd&}_2i<-OJ=AZI?ak1b| z`gftX;<;r!#VhAZ@~R9<~~uwb_~6 zY>{OiVPpWD_(&449xoa(% zX@(3=P1Ukfh=pVmnVqW7w3Ha7YoyQ<8J~Mbz(y?93vCOqP?1G}1SoW~7pd z6`-#;oK8iE%%@2W&q~p1h@ORW9m)x3|4>fl9)^l)?FUtU#J=jNoglx zBSx2Mt*HdbI7 zO;{7HPUsoASRIl72OYROj|h>#y&y@*NY#X-Cu?J~BZ>Aoe6CKzB|JQy1f0>bIu8X6 zQ=2`Pdy<)i-h?{41_TCf#D=H`6| zjqeEA3jHh=r!c{}41dsZoe1A#YCP8J&SDVAz#&m!3bru=edzP6aT12QZb1kHhqpLF zlRW1E#B)*>LljjH_baVZgDKwU$#!g5B?m^pV= z78-RqNI4jhsn1QP+8VA;OT%E;G>h(AItaTZtbtG991&_83#ef(1ndB;RNx#Bkb@hy zYw6Z)dz{$;HUpH9F_c39xq#JBqdLGIPzSh#us;J@;Sxg^fDb?om<*T!$N?AtWq?-! zYXR>8Bse9s zTiWHO!?(qf%~35wH(A;QZ?Y7^1LINYb8{mo0UUkfh&w!2I06@r>uD~4)%d7^zQZ$g z*aYT~_t@<ZWJ$tB~=cfctJW~c27Wk(gI}P&0_Bd zmCPV*Fn=Kya}-nx6K%1Nv8W(;u=poHrL^gcmeQOBPy%uQAV+Y-YfX8ja!`H>0hH$= zi&_ko+zkM7F9A?Is{l^{=)oH@uLDs2HUKESzX8a8JAm?s>jljHOQ_`T2BZ*v2na7R zI4{J}68m7}NK;4|`4>OJCw-`=a!QXryqi)^^+(@JHu^H?DG&55x6!Y#(XX`8qwJ0T zpR>_FZ={_urBKKbwn3Gj9noKbm>y&!+s}6aJA+z%s%;vI!{vd&=-{$jSflrodmu{3Mpj zHedpqT0FP7n*}9rT@*Cy-W1fL*Q-g~Ef=()kf|HtzheDY>y?7@1HVQ01*;&7y7dqG z54QN<2LH$3xco*(?jLXPZ%lf0{0r8x5aTfMkNax!S4wWmS2MmE@Sy+GRTrx7a-8=9 zA!i463%ng67N5U0|2`1eKVhMOOkP{>f7VR-Y?)V*CT>lm{9{g`E{FWY3f#$ry&KXe z|D;k~uUz@Zz#1Q|JL-1gEj6eIpwilKHB`1#gGvd1v4d04nr{QtC!rQXZ3{IPDy^N} zq2lO^yS1HDbcFf|)J{-KpwgN&5o#BxL!fqrTD1*%hq@MOH>ex8a*FOyWl(8-RlkK( z&`A&v^;xJ@P^nRV0hO4Q4nT#{h^LnLvYM?b`K8ZlZm9~cP3|qtzvur^?$&tzH&v=% zYBT%LA1EJnkhgplzymG=ssUdEssJYdhXCb(Er5-HwSX4@D*?*@rGOGZAz(frAD{!| z05SpTfK)&tAPS%c1OdpuKR^ZW1h@lS05U+sK2A{&xCP(=UjPmPT48Z-#VxgUFXaDg zs1Xpa{Clv_@=@QRI4CTs71CjcRlp74$YWCH%%KiU_Hu&Z(tafP0!Mr!+XMMEuUhb7G*i~3v2coeox*IjM6 zEv-K9wnG&0c{g_5Hpg;9E+sjOZre@6En0mR-6aei8-oj}sT!}=tsOmnE8@p)|6>@K zy>!q~zuF0_n_&FvZZO}zEM2W)s{QJLOm$f8%Tx(dqcc*{Da@lX8WjfKYmq%Szr$U% z)lW6oM&u-Na4bZdXT%dIi$J_7q{hb<80ehP64;@KSph~cd^7=D=A zs4(xJA>JX-6}ExQ4tQ<+5YO6NUdIa~&p0yP)58IXIC z0~bA~<9s;U0|=52S!{-@{_CVpB0Tn-4AXD47#J=c6E}8?SK)37ZOBU}+57Q5Lp2YEM_ti{le2!#2Ai3S-ii z%CJv@n6BKIbimjZ4|O7A?6ETWvQOaYP$=VKt{^{jtV zdtD0TP);HFv60mzVm$70pNdXDAtU%b|$&RGtA~e z#<;H`d(xV_`4I75-3MZbBNdXcTSif>j50q2&UlWC9>TB+=w!7B!Me_f!&M1)$UmhA zzM0p9lc`~_>bBIjn*k5Gpt7A!Aye_}ZoDbiIl+`KH3d2Ea#04o7P!wC=?ppS@+C)r z9C^tb_#G;RgKq9n87Z+tok@9mr~-<7(QddK?n>pw6VdQ}%F|3E#8L9?_Glz-$VyEh zZ1GBm_DO?TtZgkgaBxU7+E<3S10P&XPv%7;FUFFC#ELdXAf*WIvG~Q>Ck$qh)>()^ z28U7#j{scFKZG2R543#6Fc$Ew<&M8m^ zl##}|S{db%D$b;D7;wsT)R^lgbo?o%gVYp+zHi&>9_;fpj{i&JLppjT8zN@NChS>@ zMO9fr6|$ZrOM8=siv!H&J|p)xl$>v6`&2FQ5! z<1mn!{b)GDqcZ7t;Lq%;LY%^Q7ucFy^sVkx&>BuJ+F!F5D|mSN178*D`vBlWz*@jE zfEI8SK%W$l%Q%#Z|#HGR$CMBKOw4IQ26GbljiB~&{n zF?-sKG_7VzUVhG$eE)%o89wx55dr0ulR6DC{r{4nmZ@fQ`<Ou(|%WUiz zV>9);hkXC3c2F$}&rS=0tQ@*l5G_a@p`B)Uws6xxxIu$`bfZno+*#AIA)yF7!ZSIp zgA^R-#J(Pvl|cf21SW7SAMGaQkqj{n*Bd%87RP63^2VlF1Z!}(3o&+Dv<7_M8Zi6| zH$I2YwOoVnMhJFGMUcY5Wx~vOk6Xks0(lbd6g1D%&_;V}?o-60HBA=@Zi+^O$$WZ9 zx+Z02SUzr>=(2NXYO^xEH2E6rnmKiHW~??jD>oB&e}?OG8*kxECYR^D3pRU+3Z_@fwdVM=AOkS{I5kK$Zy(urrb zv}UGq(C3X@4M3=A$Q$8~;+qCs42GHjn=H)jp~wY&gTZkiVz?E`p2gPPO;~HWHt<4z zXoXH+Ij}3@B9Q)c7K$*R16L|B;aLYi585dqX(R=F5K81xg+G7j{*{{XLbxakzJ#(9 zrhY5E2>70kyyc_C=#jVKtn6bg`K6N5p2OPS$RxC!-@?Io>~yhsK^)nrB|S=}Yu4sk zhE)Rdgdd?UmFPcIr`Fn2TIvpRDA6}s#@pPlwVol90A(RcR5D_+<~|&y5qb;8ZNx>R zo)$i`kX9yC+xFN>x|uxuTR)-$yz2XnZ>_JyueD!0zZrh>{XXzJ;&<0Cec+OTe;fGW zzyX6s56T_1Y|y4bTL0($xd2%}#{lnu*nqTv*#Y?h3j^K?crRdAz`+1h;F`eofgc8b z9Jr4NuKx!a1U1{X>3r|M=C zr_|-Ri=V7rhrSz%M-Avv&|p3oyrpLD+TwN!Rk7q*Rk3*5S_wqKh!y@lzr0tU{K1-A zD}U&<_3Xqms@9D;7TF;^o~( z^%OZs+IF`(DCuUO68BUg(+@KKEO%9Nl_9~ZF6~>Z2B`*m`>EJBv3+ar0WkUw@bL@q z3z(=%{DX=5ss;#&_W8X;DW@8(vY&F~09DcJwuKbgagw4kPE}+S7Zq^_w*D0D`bp{H zsZX^VHL3sTRWp~Yy6G1?-tWrEfs?02MvwEIy>DJxXXBx7o<1{zBQimCHN7ni(N` zvCDq6(F-y$sF5&dxz3l6tCo zsXVM^m1wbBx=xofxPSlbl-wMzIjD+U6wnLu6IIT@Nawa9ky$Fn=;}kJuF}4$r&XS7 zd#&|Y+}#o|MVr|yTz_3|ZoiadFW9TvQJ|g_g|o`hny5skYD4yNvX@H4_T{QBWPU=5 zHnE|t>IrW-(8`*CeQZpycfSF)SVmKl6pJvReLDJ(N8!cGtv&W#==k?_;&pEo_j5M5 z77cPNZqs-3#P-QstL*NVp1-kb)kpCigWjrrZjXP!X8l0j;MHR<58CyL@yLtAJ8#}u zxwb5!`resT>2SX>qLV&vv_BO2PVdT}E-j7_`$rn`4>rV9*H+sv`DVjQYbHCd{`Sp1 zdy5zCpL*%y`<_*mZ;np=s^wru=9J&n)4Q}PIRpajQiTZSC zVePu(hs9f5j>lHETVI%XckVMu+Je&dYx;(~aU|wg!O+`J58g5M1@6sRj)tVWlVfhV zeUu>2+5gMW@4vXVP5TQ6+7(VcEbo)GSbC%OR(|i3cAsAJoiur8_<)~$(EAPm`dND4 z$h{q2yjT`JBIM5bS?bo_8(N@DRb;a12@`|8T~%!f#j>`}2_$Jyo23j%&e3?gsGcNi zhqg|kdhN7iTprHM)L84ov8{bV_4bhuH+=TF z@&m^L<9kc=bz8>VxL6_IJ3V>#`c(I?KE8Xz=iL&Oar}a1=VyL1aE*NL$*cK4<-N5a zd&u7BKWM!x{Z{4+M|MZ|dsjX5=WS<_rgRd&ey{(`E*tKwfAy`7hs2i_Mnr$tX6n@- z_XRs!Ul>-o<>HdvQ=XmS?In4osO`p)%46QStrPlvp6~1P;*+mDx${DL|98IsZr{>n zPwzK%TavchFg_t$zjw$xy_O^$QMe9yz2r)4g=5x%`=5^bW~ajwFL$4R{+Zqr6A!wN!I;h%P+qa~xGlmc}H2;3y{rn&= zwb`5`!8ko?=G`mf_l3H98|S{#=cT>H?}^U3M|{3{>G-URvZvNhK6K>ywm(RtTVEg9 zyFcf@`SRiC$GrMQ_i3(oh7IaAHpjd0hRJ`)M?Bt2y?;FJr7<3--tIl-*-hJ%gKs{4 z?1#hWCV%sBpGD7X{p;3qmlDi-wtTwa=i|<6>R!Iz=X79nr%wL8?+hEIDwggAcv|{# z@Tzqa1M)8(57(smcaG5SYmsBs6q|1RTeIjOl^+m-9_kg635mQ)A7zw&8usnVC~d|p z5*6I6$0~#MI$Sx<(9LBts;_F0H>7&fM>8rJ{j6QHXv-hWfn^YIYTK@9O4UM&m2!+m zmzS-b=^dyF5VANR79t>WNsKSa6i(JDsfFZXPRh&6Yd*DTbCQ*wDNm_ks zdf#5u=Kiejo_gimMI-0;TfC4@Sn>Y!eLe$LwN*B}-NWV8S^G*x&q%Y3gFNXmNd*$f3Q2Rs`0$T`X$n{#&)D@}^k2N)bebMa0_fi&vCtsxu<-$`5&1l`E1wT76SqeVVefG-!W=l+`ZJe zt3exn3=dxU%4^0?KJe;%B)`X9_YU%fwdtP>I9KX_;p<_ija!EOz4)aY8z%1h(W}?# z3-d);IM&=?|J)PmRzY{&-R4g3;ZgnZnM+ZdI{n<{n`*D3&kNUQMvq;kk6XH{`%kB? z1nW!tr^FR>iJkc3gd^vCi||O|?Ps@Q_-epXNoEF@?OxSCn}wd zy*JMq*1J5ie&eC{9o{#*R?s$T`R-Y-ZtEl}86?jLy4U{T)-G?$Lix?_4r?nZKG^}RZ-}1zjb81pMn+AT9 z@KL7@uY8jBPHS_$BE- zaevEtBP1ro2U`i1Z@&kInnou!-u!z8x`!-UBr3gi+``b5p_={&H)6xAp;Y38 zIU~9GB-vP+e&m#*(W<%&T{i^F=?MU(uz0aiD#~yAJnmO4rP=&Re_aMBn5kQMOi_x2m|MBVUH;0(Ri4)fR)M=^6WsBmXH0b~zxS+_@)?UlWh-+VjrS8$<2hxhm~Gc~rU!XX+;LQ)>Dx=O^5Iki?OR!>YpxDb!g^P$ zQC3!c(m1B%%h&chEPiY8FYYT&?|sWv)IluDqAidUbw4?+MMR5LaxyTgik(VA9f~b) z*ox!Zh4ZTN&RksMIBd<9qiww2zJ5L<56;#^UBpsFmo}hF6NQ+l`5|0zv#veu7sqas z7KUU!@l~tXsF^>XdTI8JHL5sDud8&7Dnd1Ct$OW<#i5oFghs(xR{8ow@adm3GlQ04 z{lOxbiZ?NG`!}{XYEG;*Q7dADWQ&bdG0G{rJmRCku!Z`zOBPHCxiDh+(WSe$jST+e zv(I#^s*VMWdvU{CTSt~(KlRnT6$ww=8nA5s=fkcI|4Q0z)SW{irK7SFkGM39KKXjY z?l0o9J`?Y0{Z{FU#jSR2=((HUTzAhjd(8CBM~gRpxjgR9pxU};O0Qq8UizzhmREAH zTEAs;-_D*@;qotC>pXIM4*9Iq`GRMJCied1P0Oxyc)#zs5C1ZF7wAZ`6Nu<;zvK2ae1y@BOrEW%}7$pEisgb7=Z7MZcieZ*)1Ftp4F|k_PWw=eiN4 z_v60`f9l2St-f0Sk3H9?UOgAPcEW3(yJN4Xxh`B1QF8vRHZM;18aK~3U|aCMWhLpo zzV;Be`k`pKzdAc+QFv;n@hi``P5;o3@$NG{W!uIt-_3QD z9Q*XjgkhDnPls*VIBimY?v;Rdw@k_1FS}a!#EOw^Ry^G{lK$cMW~}?V-Ko zn~oGrGr7hY&%WRrc~;|HEa7PxC>DuSMTh^7F7w2S2bQl*^!2qxH?d^1(&1Z4yq#?( zNhyZurYY0OyA24aO=eeBkEVc9Z|pDTy}EuvN%8W~?Ca0GUF9=$`NX4%J5@!`*@SWS zE;3-pv35*h#BZD!D!G0*t)f$!9FX&^+;(*CmxXhr<}Uf%K+boaS7Bev7(g5B^o;3{ z>|wMo)aXRmZTX-j!~C!6Qbjy)nCV zUE;`NZI2ILP~B^_H`nu8mowsA#grw}Dgt)CGJn8AQO1`)O+Gg2OrG4Mq@CxPhHgKc zoA+$P%ft8fcw>g<=*vC5_I`DJeC_M<&Cg|ZJ29qn@)=d|D!;flN-w8wjQQ0RH>{@P z?JsZMeg4p)X}@Sa))k9z{vmp{38VJj#iE(8nof;x`hVoC;UOm+&h|3lOhyc<^x6s7 zR@$@;r$&Q=2u-8W#m-wU>?FMXRVwd+bV|{+$yMt8q*O8Yxi7kI_-OL11+Q#9XE%HB z&kxqXn8cIHH$U%eXumm{Gx<9DncVE&DM*vdTY7xc5=XxuZ~x=(uVhdD^ySa`t$#Vr z?DYDPyFss&XMZ@$amY`>ZO0VcR`2S!`qt0+XX0-4JALY%Ub>Pqe@*!|mOJ^^UoV(l z*N;r7^&L0vYD%3v=UuNhzf2!Ey6w7~U5ZR^J>TJkL(bxJM?$93@&@0Z;ZLtd_&>{^ z{7nr(f&pD><*;578ZB^NxubBB=rV^htg{87Q>?1zu z)W!DP5F0+}I<7nCBnH<3@iklccN9_3lNqO{>?1uGs_gJ%1!kXvU!0J3c;4#Ma$L&7 zk`Iff(cEamf@ekveAC=i@E}moAc1EK-CW?Ch82B<%72n?8velw^T^N2H@$)QlPGUg z?iMG#N*liE`Gf{o5Du(Gf{uMb$hwtpnqBr$!J7QhWi^{G2z=9E6k~kYQ^_6{%%2Mx zn!X^!XXURRLGb`bEN>(*!RAwPP5jjicT?d=3w7c*xA}tpZG6)_Rct30YuZ5&^(Hm299jXAv9m|u-t zMi{47h51}om$?Q}JZ0+gaMO)&6A$~+2xF?pRI}@KFh8lwN<20qhKRCIkNjQ4NUk;= zQyWV>N?}#e=er26HkEkPL-jcoQMSy3t}3a^oFx=~e1vJg+8E&xRW?eb zHYR$E4@J_JjC0O1`a%LPS}kU?Gs0HH6vqGWZ)y&dW*k=?YGO{ORMSI|?I&B5|*C8Apx#)3`DicUZcmmD@vDa!s*RU8uqc>Wx&R{`{K_#G7ua%Xgt( zt&A{zsx}?vr?9q=?XNZ=9%G)WHgeG^-5`pXLQ;f7EfK;?B5W!v=q{w$bsKKfAOgC6 zV1kx{K3O?Zg~~3kZM6r*FOM)L_|sT)9ByXUP0T;5E!3gupxT65#1Jrke+2H(%m9=E zHUcUE{{VO_sE#G@QhV7REb zVm4bwxpXwCLd-&Juq!TQIvVGSR|;B;K*g&Ct(&Qsc!G?Qqh_XbFsZ?=65oq(O z;GNx(9%1w7!B7uR8oiXT;LNVi!1JQ={J|7$5LFr?=q}jxQkU6Xyo(YWLvoA z8mbWtrrUx;I;IHIGKL?1Js305{|I%q<1+f6e}t*^BIG^7WVe`#U^=;z8n(JA8+$Pj zH>-!Vw6v8BRz_f2>2p%P_%$?&a6`RJJMDIbgKp663X#rvsnjvte5h2UHdKgiSBQ1; zG!twLyf_VWkfB0+yF#jKEm%pJjWp79D7>P^P9G&`Bsv#0+^HrE6|!*iVSQb=q1qvG zQMukB+_Zl`a)C6EfVlz*>2C^lmaMTX3b{;M8D4ak*jjUkQ+yGoSVtLRRAR=fjxdhn z)uvF#IY|E5 zn30XE>Y^I*u_FlP2$QprUW9yqE5JBegek&NL5aD+7_J~YH?l*gjdk=ywt~pMn(TS9 z7cyo(M7DKgTd#j7yoje1!i(xjksD?slXZp89$d{XTy1H}ZWAhW+2N8ytb&rMf(B9r zIjPNut#!oeM{TGP+td-OAJ|D7>*yi%W2iyjpo#|KL=V=FO%i{wenK7V2@`clm@3E( zb%8Dy>IlTS2+0J?B8*Sy&#>yrZB{+j`l&OU^Mv|AT~M_&R+CUa6*lz~VM&khTTl1} z!Xq4k`dCM*gm9khs>!a3>`owGtcIxi#-So3gq#T#B!lG>zgIuax)L)q*4RpQU~5r( zj?*jD6%~rKI~b2~zeQbfSWy#=9{w4-mG^sh0~t*Mg{G+g*;{-q{oC@$TH{63kH7yA z20WshN30$vn5SCQe2ZFaQCC~kffn_EMg7{M-m<9nmUy>V%u0*eJT<{&-J4@=00vf$ zdrb+zI79cBy7oBj`?B9FA*DKp>DAi@?8mVG&)#3k(&(lHM}`jcO-!DZieG^&hNtVT zmzcnA%Snf0KmVkdvp*$PiF!G6y$-l>U3DF}PN^Na_OYF~w!ZG1T-2HChV<*O&uxu$ zL@W&5>_8ugl{d2!b#vgl=~{8Fsg9iD|FQQbfK67}9(d9=G(f{wmOw=c5sOv}m^Nvf zG)a>{DqkQ~RB%v1kP3qXI86BhCF0>R{b_*!7s1#BB zYLvyLlr{g~xnH(coacM*|Nig2|0~*jcfaSHd+xdCp1T>lD3Vs8?6gEhM`dpXHexDR zeG^g8|CE13)c>RZc8}BTn~cY%a#kH3^laAuJtEMBLpk_M0xvu8-GjdrxEt~P3VhxJ z?s$GDz9&7}fpGeE)#7dwxOMnWhP`GA-1LUWbNCbBZvXecivqC1oM{Y&+#4btg2zN( z<;HQzn>+#40YvfZbx`fg&eG&Z;Wkve*Fz=3Kd6V-R=YV@4ewX|ozk6cfNKR@P3yLh zDzR(*$QUhpVth!|VU89TR!Cz8!mjl1ziXUo##zLlpRXJrJxv)op?F_3r1e?G!e2OF zIUstza@ZBmR}TLd=PU1MbH4J4UpQYmI(m+>HB6ppcm(?HIA8f6IZ^pP>vZFl_@+JV z-$MZ<%~R-p=Cang{_XRj6DHuECCG)g|D^xI^PxQI`?t=AX0SB>ch863uDA*`ikt*& zdulLpZcvA{BdjY!`2L!6qE;Mq|F!2t<#J;uMgO;-6Lm4%|9$5~+tT1}+@#(1JZJ2b zt%9A(joiBvX_sGjQWSSY!0gnv?6$2QITI|G{Xg@}Xj?hb?*Ff$0NJ7y|J~I4ka4Yy0`s_VcOj=TqCyr?#I@Z9kvN z4p_CHPi;S+%FaLFbaDIn)W{LTUw2%*{d_7N(fl7FLE6u!wx3V^cO1lTKcCuuJ~jSa zi3(SAwVzM@S2udKpHFQ+pW1#twf%hRZy(f+`ft0)=>NO(shd7NCJcP|gC%=UC~rUX z>Ng2z`e0A}|Bmyi+{3{)J`J3&9JJtD&xsBl2J{)&XXgED=Qv*ot^V%e&*v4{C;V>L z(wrrKT{h|Xt5XKs7LCpRevaerm+m$WyQ}4y-E*gp?eN^R`>z^s`+3JE@w#hLHcUCS zZR0=ej~&TL&3XEd2j+z4pPae$j{R`@hOHa+Ps?1p z;_zdZ?0b$+E)b^Gzc7EmQ%U}gRo6FvnA5{=`Fz@{+UKP2dsqvfO}$U^`sB`cjb3~1 z>D1X}uc^Gx6sY|b?1Ldeq#8owRx75&o93EYR?t-?!R`Muiw+B4!+ZMNy6yO z8Rt5v#%@|Ta@qI?@13+;`aHbc#jA{P{rdZ*=}jB@7x~it(mMRn{nE6*H2&Xe9FY09 z_77CBG;}jD-A_#W2qxlJp;)NMMP9mLcsjconC^?7iEui_U4mP6y*Rl|H#Y0=M>inT z4bS((7g^7Zzr~qS(fz!o_}+=sGf~!kaF?*s>Go>6p?4zwrr}S(t;&NL8h0wLj>7Q& z)*aVWumgufV|xaE`R?lYz1s9X%uQ?$fdapsbRNeLpy98Y@Gl`LDmTnlcrz_HCV~Z7cs$8yl62K=(Uv z)4?S0_XD8yG~B%{-%Wl$%8v98xo5?ApKeBv?M}HLw{>^ALSLJR^5hqT=x%Kf4id|E zsMC$~@_pd)ZSZaT)0InW-E-Ua*i77_Jq7hWh&$h@2Mef6hx_m4ett82bKoD1yVdD_ z^DFi52(E4Wd90TcT>ts~84C4VNmg7TIcfUDX%Fe4OC`OQuYke&5VN z(Mx0o;S!mG`({obJS)4uZu)%>J}?=VzT(=LnYa_y)*n|k_Ak_QvfdOat8k=~HjIr? zVhe%3lRj0i)%Vf&*XQV`>Sybp(f>^^={sh3&%P=XM{+B2m*&>y9>jg)o$|DKgYpXV+Q(UNA2q-;zHpza)P_{-5&K zA6&G`kx3T`QwT`<3(qTtzr z_X~Cu>@7G`aH-%%ORlBRQe-K%EVVp?yUMp)_E`>Dj#+wIP1f73UTcL_w7zUzXRWtN z*2irt3pu;ao@c+=KFz++zRdot{RR8q?0fA8?2UG?jKT=I_RtT+y{m=#3jHF`^ML+) zeW&bk*^9Ej$vKlV!!XAXFf2FhHGE}QXk2W3+W59{z3~%c$k;pAl6y<;<9Q$EeVlhB z?^xc~dEe#zn0En~cFa%B@0H&-|GNCa`FZ(6aPRua{5$g}i@Z zm-64sug!nk^qy(INiv-@oi$xHrJJ8J?>2vIK4xw*Uoxu;GzI+%ZYapIOgXTddt|eQf=0gKak3P@Bg##x~hD%{Iq2-zM6gvi-@n+E#7bZaZK*Yf~2X zDI8IFTjAWo^1|l}|5L{mU$Ook{Y3o~ z{d~PoFY2GrFW3JWbbL+!5B)~{CVjoWLI0`#nEr(RTm5N$v;Kl!ncXp4o1F!YwPfF% zJtF(g?0d4OWY5Z;m%TXqmFzdOcY=4%W%D_=Q^~e8!`-f18*2> zc*Ni{{L_$P>|q>byw~`s@daa}F*Ub;u8{k1?uy)vxu52K15V7zE5P0Nf6RL>@AbTO zc_pS4HgV?qTk0&NmM=-)g?o955d>pE36@Fc-MNbJGh-3oaHUTC|pd zmK=-8!dq^)++(@lGRv~SB3hPN{$%-^SfL}8_Z4y?;bz0FhC2=84KEm8H0**b z>TbNwXgA(woMn90xYGEl@gubN31i3H)Z81;3!S;cbI0YD=k~}m<_*a!&Z|dnOv&$x z{@20O*_3Xwm~J(VHhp0F39lY>GIMD8tIQdA`Cy{?74zTCKbTw0A#+ke=YrIN1qD?F zOA2~e`dTtA28+Wo(z4J}WqHD~94{igY5B&IZ0%yLfn?cZJ!1U=^5wL(*_vQWw(<5m z?PKk;>~rml>`&TP+F!H3Z*Q<4u^+R4ZU5H(6VZ2u{7zyweVYDST54E?ippcHxmijlG9G&E5xc zG{c^0A86OxAGVj-E9_PF#rE$=CY0e`6`-ifF327Z4ynxk7%i*IvF1FJvnpp-&f%OB zIX~uH%;{*j4*l0`a2f70Ou%?E4yst@s#m`v48GOxyIZfxn0qU_PmLCZ|8N- z@1LKOUzpEBe%_NW=D(YNJNj(~_RY3O4ZXvj9W!DIIt?l=4a()|^~TZT=BEs*j@4Q}Ia zjg`h~W4&>=@dsm8?t_pjt8(AU-Jd%n@8P_Sd8hK!`5feXpL|_@Mt(8g)OaF)dHxDW z^cVA2=f9r+7RI;B`AH_VDaDiunNx0BVfw3Swdr-!Tc*8`JcGb?e(0$7-w%)-kq^Y>L9n!tsR<6mBRyP^hq* z?Yy0cZUuS+aEs@L>>si(WovV6Ie*AmnRD8x%d7n$Bt(D0`il|3eVETr$W>>1fY_MGgB?5gasXdOH@1KkU6s2NWijmSF&qx|yR z7jvs2TN`r~dAdAD-UN*9EAm$6Rp&M4UCdK3ia7GeVx%hrHLCL)^A#qYX`qQWO#!#A zHYpnAcY;&(J@i%CQ*vhHq+*PlQBYQ}v|weyTLm8#G!}eWAQgODaJrxc5?EnLvZyU7 zmQ+g*OPZw*T06sHv{)@Ji^np`G8Q~O%_3OlSt=}xA(dBHUc^|q#`2zJi)EMPBg?0j zFD*T6X*QiL!Uv{SpBp?+U!XD8D$82JZ^!*t-JnAY_LentC0+smu*3h27YQhHYi+AH6NW z{xu>Nfv?R^2#3g-!g-OTtzQmFRVo#KLDn9)Mw`}K6cgZ?f$vDAq5-!gNB=e8ZXX6f zH00Mg8n7G_2JuQ6BJT=(_BLV(M8Z9STsVUcPz^4X-vM|#2Z1OP8|f5^wfKws=fEm- z_n3YZBnk34lnE> z;pc=aXvJ_~k04NH`JbcxU4aNGe)gqz19+e9q86kR2JivR)wOh?^z>@F;8}A5!6EGo z^3K)U90U9w`~L*3aJ8@@`o?lb|MY87Ddn<+5{SJ z*d@J4@#R|x_S(tv_1cjrdKVxPg?A3dW~7Y+N^| zBBbrY!euft+z)zthqO}=>T6MXRZWKpVm!Gpqv<{7Qsq_?3b^nc^rr_0=xvM}5awKe zh7#a$3~rrDhk(g=9D`e{>IG+&vm0gkE3!zrXptBx6O+{7H9$8~VX z%t*{de0mXM4KJ?9Xdr+27UIHjvEE1TaJ1&nT^A@{Jb&KJ0J{=@mH{pZi%v9Dk0LV;Fz_ z9g!&2Ps|+9oaZ9^sRJ0XM$sILMkF)%z*y2adRhc6L7ZBH_+RAIFE=tscrl(+7a#{O zf>Tc*mN*rUG_>Z_?ghG)G9 zYsItE5D@0s5;)^|w!9U2;(7M#Fjf97p0zUwv?lueN}ip!fw0HRHFKE*lqrRyHP7-? z{V(vWgWk2#;duwcKDo0SwuiL+s4NKd@gZ#moS+w1`DZYNOkOz3LfQ*>TEvMz1v2kv z5Gdtb)T9E2HhOmfaP34I6g82x+5vdhlh%YWQFl+RbG_Ub<@_~>l!c36jO7<8RNRRo zx`wn*Q~tzg{*bm30YH|Oww`*i>|~d}vmY9-rBCp95}q9Kt1d$$^7er&vULHck$~)h z8U-$rHM174nh0lDiSn3DF@u8vwtE3h`~>YjX$-zE;)`Mx(y}kbW=;mB#4@d)6_E z#Onu4|M;mh$`{l$(6UMam%Q`;WEUG@D{^R)#Qmk7a(U zo+~=YG$#)pF1k#Wpylmi4@Xq zAPQ<7pdN)ZBasGlV)VizSvqMq0wNJ1?PI8oaYQg6bA#M|tiS2R!@OVfeg~yO8bg#h zBDM%O_%0~DIn2+7p9P5Z_7^{tI)FoDPSt}`b>nM&wuy*K@T#Ogor!QA_&6LJsSICM zeVm8`=Nu$5iK>avtizmB%?JmXN%*dSNBWAW0p`(B<5EaSyXbA|GT!WH@G=%WQx5Je zQ?(jlL{$~hp?nKfRg3Pe_en~jKgLS$!SyH^)yuCTQPRWY4=0toPh2E4n`k7%3X&?* zExJv`;$FO;B`Pstbo!39tWFZTiFl8u#F=#VpeJ!NU$V_}ZH>F6<`ywU;TDIaioDvL zI9$!GbtbOngwEXBYG31NemS4m;5O{##U0Wes43EW<)NI_=Yh<^(>FAp;DshOG_&{F zKo)5vO)Y#|OmXB5Q@+(ZGUra=9ht7NcVrTNkROuy3$l~^H}RF*J>qsj!{b#jH9e}N zcU38+@1cdsy^Yi;>K8hIsHkU_A4z}~yS^v<41hATLg<7ii|{_vH%jjr6y)vTtm+!v zxD+q4AxVwW?W8fj6hdg}28C<=|#CZ$k4EQkgdxJ9k z&&|EL7r~CwzWmukzGKNk2TvC6?@#3ux6#u}zD7Hq$LioU%bsL-5{0f*=u+O_735}b zWc`Sy6gpLP4Zn)jjAybU??AD4u=?N~EIp<7-=@Z2Dm^)c??L=EvS*y|AeR5O)A(!g z9tQNGK9&hzi9Dz2r^VYKzeY6*qlt`pcsx3?XvdV@)TKCmOfg;y2BDtiNbj59FmvB{h`6$l9# zCUIsGy&dQf=cdrZjl4@NNiF|6w16sotyK{L_?*6r2|^OL@f0W4Z2({jmw!Mx1ba=R z+MinihkwvQ{3dSo+a4sJY8rke%T)vl3MUf_>Y^v_O!Uy6o~!sR(3X0mm!KggNXM?F zdap)J7@v&SB5&v#=B~mM?~)JY;E6Y*bXdn6*GbNF=14bem*^cn^viBO)gAO4d_+zF zUr9tWN(W%!mAayY2pQ11ibU1*NQ|Lx$x(=JNI<_ zOQ@XfX$nPPD7rFDdGL0kcZxI_;TsP^ax%I|*Y}FF4_D!%p+Pg~JA{x$$@n@!Dh!~e z*~!WaY10tK*AG>L8Xk>8nLAXXda{}Ur6cArGW@>hJBQ2HR7V4t5JeSOz*>L zIU;n9L^wnHp?#=)p+v7aTIxymT%%WQI6`V+P*-_GpxNG0ng0d6Dkj4fYLM#|Yl8_O z7DigeXFPG-NDxWy92?R1MuQ+adMi?d4QsEcmUaw~=_s3hV)P@WTL;QO;f5+8o&iU^ ziKHH}p617Us1m)*%wUA^P1Me40m`q#a3t#x7`ULLN}m{^`He_xu35;Jw0P5{bZG)aQ7K%ERQ`=nQ5YnZmSPGJpKTknj*I{U;m+7u*u1WRJRC5*2BPA~m zP4ykS%=;7lBhtj7X^8MOp7L!=cm-1-g@0(8_a^DPY(lnL&sz=(U8JM3ZvuSY&QN1+ zg&!@4DauaiICRRhL(|Y9&>g2`n7E3UP=}bsi+7}EO-!^;OCy9|I0R`?eFZfG!SSUnnG8>kC~L`to8u-pPcGPo0k0 zd1F7m=A4S3T0MqOOxh7lhE7cDDa{VGPUvpfCw}M(3`vjztno1KzmBTJsK_F%rI3pF%R zCuc?iDFL+;(v1iSY2SO9e3*|!k-i97t1k@|du$f-+>J z?+urx4{1lh8IQDBMAZ#KXbkCI@Oc6&G6*xbcu%TZoSNnqXX@PI@$qexJxm77Cr}Lp zQ8kV47PXM=+YI4dt@fQCRC+q#{La_Xb#{mK09R34UgLrcW_sI3H3EF+x^OpduH{QM zJ4IJ@63T{9$drCdiX{OFrX2b;+&-)bp-7DPaZ5w8Jf`&dap`--rSI|c^z!&G9+DEn zc{-ww)8gbMI#t@d|cp);pJ;}ka&K52r1>6O6e9N{yR;gkF>;S=l^@DV~A2$y$B z8}+pSp+o3RB{kyM%}LVpWa%YL{OJ#)5)wi8)cVH|B5*KyCeVBq_6Lj!Q0g(1;H6=_ zW(r|)8X`~D^kk)xY=nRdjjNLchmpje@i-6{*m826-`iT6zOOTi_I{J(d~| z7-uQqBQt@68wOpD-rS~6-xP0iu$~nEsOrfts zM-SU5(5=HYvj@B}Y)&{2m>?^<{XB`Gy3Um!QkYRV_k6Xl`Z5UwtgA%Jh)4z2K6>Cn zMwnrk83;oNCmYp1fpum!8G+(S&j*WpF|)nP1(C1@w5qIrD6uXPZE)FZkp2Mz$;xrC zv-A@4Py@v@=cq<5WnvU0TKcx=BW8;TIFL^mYtYH7hYnU|=7?o=dL{VH_T4-vxZY5t2Gm;{4I0~tM@LMqmVtZO!%_)XZm zOZLBXXT;B2cFY{aggVnl(D&%+W-*bfNC-9XzFIYJIa>N1@vENT8oxP`m6ea4OY>Ln zAZf^jNN>H;e02+ktk`^2RIR?q^wjNsB~w15bIMqG-=jBOfm|r6GD31OhJR{W) zFA3NCYN5Vt&a@mX{Q|A^Bw{hi3TgjHr63FJ^}Eryi9Ee+Ptyu0xe)bRbZCWpG5=@y zFx3#qh?*xqmoe!T(yGIlq=YeP3J_TW8V9O?+?C4*$+-$S0;4l&w@9RrzJzoEN_y3T z5rmQki7~~EAqDGv6sa5H`8ANc9lQsXG=iTI>KUwInU)5I-#-wG<_c-wSs~-s1LZdm zW?{`8n86?%^)qpW5GMV8vHhO^EZTnE!gQndqve0re#NLYq#Y(#`Lp&rONvCS{m1|t zhicpQYg$Pd{8Ib3_pjT}P#wWcMi3mCDQfn7Dx;H%`2&EdS8YH57#o&{ zb+ITti&_(X6_Eg{8BZ>1et8Zh)0^9`$e){FB{YFOZ@*rEBaa5 z@IPYR;vVoniX%9v529cEDH8s0IGoznSznQ{4Nwt?&bo>W0gj>MI7<#7GrdtRWIYm` z_Nm6ftK0xh9QL1)5ZT54*E6c&E3W*`%RwzU37whhq%b$MTKY=QVivtr&h+^$1Ul=4 z0!hSqOd{%>_mWIx4H=b(a)vi3gDeTd?Th{@+Y&wK)O>Lmzbzr{-M|a|9sSWe zBETz|`AK>M>tAx9kcYNMQf77f06Ec#ARVqU?32F{~Jlh#!Wu zy{PC`>lxwRB=biE9utG-_AopK?dV{TX?RC!t)p_nr6Wx zQl-0@d}lpgR(M)<2q*wt1?&e9=WHR432Z1#ZqkATm9z_708;@k`#z9;V`Lw32;!#5 zzE!esj_g~;d}0|ISPt;X0V^pWpxSx}AImmWFcsk&X!0d>MO!ZAMcVKHXdo;pWBO^I zGUV-rEC~?2q>#fFvrXtA8IW(OoN=`WMKGq@Q_PBZx0;H8c?{N<52Zt7V6oUrzl4I) z8wGVdPW~35i_fm`LW+GTJvJ!Hfn!k?jdmXqNtlo%dAT{->tp=KU>-!t=g$ghj0hM@j!cb~ZL(rXJ9I%vjEj zB$yETRZEb{n<8o!;fvPT7p#t1bD1_JjUxIn?iQ?~=3b;@9c$9lOfS4aHs@}_xDe91 z5fcv|RKe^UvUbRA#nUCXw6V9}iD6n|!r_hiz!vEj<+jCWksIAlh+?L4=X1 zaT(F&&tbZ}gK($#10ed*Y5CFn!M}!xP4CghzTG*CCVfE`&AF3EU${SA#H!q zJ2ybylH!F$A$TEDFjPN)@Xq zlLRNP!UdfQkLBRZ+YD%OHlJ};%~iYW6RCeV>xOph1P{>Gxc-+2P zm?cy@vF;u%sI*$tyovy<3WO#@^_YlV2$Rv1J(!zJVLHkf_}nEO+`hV`;=sTT*vqU& z^H}O#oTueo#KHX`7kCj4Phi0BQB)MCArK)lPQn7WKj~9ZtGs19T89`jozfaDfG2)YDQU7~FZLW9YG zaVH$&(W1%_w`3lmc8kSG4RJFOzn6uvSa0sIS}BZLt@d^bX=nYBiLaaa67-5~WN>#Z zI_*2rkDuB+#+_)~<%ac@_jjO7RX3~oz%8j8S8^EIp2oNYWuk-c<`iX+wP+*i0#KkM z{pW{oVT8(bu~0B%UT4#Du`d;HhZhJls@ZwD0U2zKk~;Ea{9JnQdNh)%Zc1#H$p_sAF$axq#cSn z4AsFz^=uMFzGu z@ccsqrykC2eu+5}oy7)iZ#JEAA?h*=FiFcD)flitC--D z2A@D`U!9syJh})~c>jW0dsD5@QdZHbrGG$Ycs>5>>QxV-iAW$&?X*7~v;~k6=+Vfu z$OuvTToXFTBsudExQW$vM~U91{lnu+WReAXQ{fYe#WVFqsEc^51v4*aJ(g<;tV2Sw z$Dcqw46Q@-D6{nU_Ape#CgWJ!pIe4TsKuU}#-P(zq)^gG)QMY*9#^ld8W!T#8Ymhg z_yM{9_PRnMO5vzz7W$Bx=P!=3%Q~S0emi=fVx`p$3$dk$pwiGR*AJ13gD8ryyhd$S zoseYh=*2#kT4nH5nFR@c0PvVI32L|h5lA)22VVyz3HYUk?PZp+8wojY7uLRshZA=o zNN6U^GAed>`@+J-mCaT5=dtLH!A?9F>`W^Sm|-rf7EkYOg7(wPSA$l^=C!)yv4kw) z1*2yZpaGATK(43()jigZ!f#-#AI^QSP1;YIEREFQi*8{W5yYSq<&IH}(FhSuw0{tZ z)s%_?qY)-VglmVam1}Q04zVJm9BxTMIm|SSed0JLZbC@>fvLBUp(D|t_u0B(GXix? z-!*_YU|WpkBjhzivACi3D@X4$75 z_ztpQ(%u7RJ(Q+n5aUZ|0dzf(pnv^%%jua@_!3$PfNne!=F^nZn4*-9k{W-K`xbV> z4f6z&F!@I!R;awKUoNsYigdBg;kV7l{MhNMMUQp)(;t9`2!QS$whYR48`&T3{!znC zxW}}nheK373DlrQ6ojIGNLfbi@Gxz88IJb zS-qV};KO_6FBQeoISgh5eA0=$99@5vt`E$+P&b;eX?q-QFu?^{Q)_y@IHyrEcpz~s(4X$UntlO`8q+phRM%wJq3co-al zSvze!G&#+WD7Z&0;2d{gTnf=s9NNNLByQo$#BM_`lG_JUnZh?W333p+ghEUN1Hvee z&Zu`Mf^Y{y4cLTKMT=1LXFAKR86`8PH+nO1tndWZ0Tg5d)_ew+q<1hCrVA67%w|}J zU~xo}Q&#WA1Mb8<(r^eiw>Zop-jP&Xl9EB(1WjdFraSRKvABhHuF$$cNV^#oO2tSF zi3Qe9by|SSLMuc-a5^~WLAUq^oja?UP@FXu=%q4wEspq+w=|U&%6QJq<1J@OH4quI z)y`&DMv~5(Ep~=LPDZ$JT@XtTqcY|I%eR$of3gb%DNd|&h8p6kEPaCk?+IWyg<^&E z-l_P`?^zKwi) z%>_btYzTlEJ(aI%OyU!3c$k};C@AXXe1Aq(a{*WRG`=2jIJSPmw&bVA_MKCCuVzaX z&Wj%Z5H)dnyg3>Pl-}+n(%M82=jnOzwbcNJ_y2=F;_xKjIW<>_2@oLEUJVFE%~kky zChjQ4nvrGiBiZhn<4LHF^$#DR;$%kh+SFpdE3rk?d{d81sz&@KZbOE7hr|T&-M5g= z1{*9^_v?M+@!>Bx!v^&+8dOd}<80u|Xix`L;k@&_W8zust3Z^e6>& zwP8w8?d>Gj2qB;lpQO5(bssy*c)yH0q?g{$K)eE#fGSb7P4X)wjFFerPqHVJpJTm8 z)pQ)g5RByxSyqUu?pr|dO*yNM4th2VuE@d#Z>bkj`LhjBNYB+GoE5_QCUKS{qWZwN!-u^jbq zu7e(bx)*i3&+dn7W)up>;BoS<j(I)qzolK^a?5#Pk@*V4ktuzmw zCE1eHz)#&irtE&T`Vwt>Fv&!V>yKo#pyjf#T1$(cP-6L#L%s`_vHeZ@6ipNIo1{14 zh(X?jg#-n9T@HLlJo@ zNyc#Lyzj#h(o7=qi}k^Q($$e_zc>;_rcJd|!qpNh&={?k?f+Pf!+epg4r96~7Eh2k z)~H+baVJnQp9Cdo4W|6t78O;ha@XJ^A1R?-TZT|kWp$A#(VoVVLoV^Gc$RJKT%C+$ z*z7r2nghr{Z6`i4V#w?CZ2lqDAHu>6%rahN@%UfN;5*Rwy^PZ+-nHns)AwaRk9YyY z(1Smr{cA!h4=@~AJoU>l!^MXQ&)wNecG)X|T_4C)?-u(?!h4cS?U(6UTBDY(YGr zJ^G_UFzuH4L@!VvhzVx2)djo0p1BHWm=bmFlVTWZXxh!cm3oLRc+B6ax^u zX`Jljg|rhI6!q)zRFSLcb~FL^!FFj)Isq$WyRoX9Rm&%CMdw#?OV$z$RGyq0Jyu#I z7a(k+c}fslDOfDh0i^xXv~cWSKw^ z?Se7_0unB%Yv&(#chKpOQL4mMZ3HP#6aTaQV21Q@`p1=;58mR+T9Y!yP6Ts8~N;KME!lh$f zK>=HzOUW%>kFM;3j_iSH$BDmSDf0!V5_2*ZP4M>O)+M6lCfhpUEFyM2QKONnAD6_+ ztpgFIl|`5#Sdc_MJxc`=#C<1Y*=91}z?Mg8UL=io2F2rlu{LX~)3TLYSkER#)Tobu zPcgwHrol`D2je^eO?O~QIYt26Dpx1Z2r;Rq-jzTnm>AEwnuZ})NL%{|`CFQZ*F)NW zhJ9Jg_j1^m&V0{?eH?r;GhGcAmPS{f!9bk~#|z}Z&RXr$aG-BcM@pfNM2rraFgC9S z0O$+6c!{e>Wd&eooMAh3k;$a*)-&v84&>ItB2}-ncJg+qOVkj*02w;jLVr~-L15QH z`8m3tq;w}u9A~&h9NF{W&_Px;YjTn)I<)m>YTX&sOGDZ{Fkyo0bL8nLQqSPC4!IIB zAFbsU=L1O0D+1bsrxl7YjmLwFn)F_;gcAHb^iE(CK_i=6 zM`$DvH+WMg*C%Q)sMaR<>Joqk`j_ra(6H~AZ1hYp-d+1@-=$#X>Ztk)iU+`YA z3+A&3ga-|}Ujx5Pu#*w=-|O@tRGS|#_a2eZ&=|)wEgAdaFLJ7MQUA`CG%kH zBG{C=x-hvB>w+^w+TY8$sWT67`a&wNR_gIlWHgt|aJu}a;4mkaR>#5=8w8ZxW_ZS4n&JQz?DGchV2c2^SdzJz{u}73D#e7qPEeg|ZC0 zq~C3aWG&x9gFWd9ToplDOA^f1ba5j{G(%0){TKLjbOSxQC#Xd}QWvb#09UsY8R#E$SD02#KSc8XKX6D(497kePvznC$NKr@JW99*xveWast0i3W@Sn8HCa z-;1i<;+7xmlhSM%G?f|H0ynbk?O% zl-WMri+ZqQ;{hjt7B#ew1+Zr}z0w#tjE4;JenZ-G8_+CWj}(?er4A6a$9v>HINL~* zr1h`8%KqKRXYJ+BeuLJ7&2H)w2naAQJN1hr@u??ZL_n=?@J3U z08?k}h=cZQQyWm52Hi+7*60D)H?s&ZK=KGzK9OYxG)*a#AOHYD1GZBF;&1Ff@McM0 z?D+-0>=R{BHoqk)%?=sp_`qE_;B{sbEq8#=m{nA2*-9lJK?m8h z5n|qdZxa60_`|8ids97Gb#SJI#~Y~GNoh>k@SRdt4GnouLbqCuYmyVyK4Ldm*9ncej3^5%fBrnnJuc;{R1C) zMmB?mG>L9V2}})ej?zngjH{S{%IWHZH5tn(3F$au?Ito=S0%_itF+XY{y^uF?u7O` z1Edf#?!@ZFU~cW5N*C5QU6#$Wdpffk&>w~eJV`TXTkJbJ>F}0NXwl6W)$3@%ZJ$__ z0ub4}e+DV^Vo?&N|8Ql}7(WAjiss#J4P6!91n6i$#aBy-RizY5byU~g>lrglm_n*PrXxdkt&WIXm-@qL&1cvB* zEmzI%f}$a~!^QOWoo7M1z|h7vC6lI#!m+C!2RIgIuolI*ysrl9fdHM_TwVd53cG6C z14nFpW;Q2j??IX(wTM;Qz;czE;qOD*bmx8RtKn6U+*=NLq6j`HZ~8iZJ)|8kzCdAA z2)2c#a}Y9E>ZVhVr+tYbZ%_2-oz%M{+s0JVMNI0!fnQNS_dmumL!L4p8vnG91~n8W z*KzB0NX1T*jnGNmFj9o~p2RVDY`>QVfJo_-0|GrdVut%`WPeb2{gTE|@th;4S^D%7 z+7+>~ny?U8%kUiZSO#n%?0bq!87;JhK+LO_`gKBI#In9+&;URzbQeXLRQ)JgCA|fK zE(bN&BzRMN+Y=mXm42262L|g^i+7_I{PXs$SCzpHu7R#Ryc9|d7BF4Dzfx(Jf)-!s zlDAvEYFso)KO_kr@r5pWyW(6|MpC`X8IB8XrL4)}tkB4bcyTM}t@aAZ@*4ITpwFWb z-g*;AlNg|0gkzr#fWNYuZq9fNfbfC2eLf($M$2y>V#!3(funHuTtIvFpXfYOll)WF z{;4Uve`+e9wckG#B5m?gh^GRYSMk1+v^42G1#z|=$@zdt;>@|e3`Kjgc1HLe>FIzw zmWZX+;_L*@`u>ETMD`uZWBASkDdzA525rEgivxe+SFkNCHRGTs-Pnc>;P!1nwbgnU zyGy0=kObYIt5|@z@(|4fxQdx@bL+6!baaL+<0c}2B%6*_pxy}wnpoh7K3JrH3)@d` zsAk)MbxQwSpq#=zN|tYjXjocOeLaAoLQrwJ>Pc%uaJ=ZF2`)Y3YEg zOif4O09upM`vXmA9Htw+m{Shzw_yPgljo%odX(`Ybs6@7_^Kf#kl_@TOUj#Gg!mEW z_?nW0F}@~^01Ztkq(O%RAPRA-e<*7Nv_RAA2nmO;Pr_U%F6xQ6sBW#JX2nG%saxf` zCoZaM>s$^*fd#1jsp@Qa&4XUw0Z26%3Z;G6QqYuvK+@&=;tMSzM%0f!2!(D9q}&e) zaSjr~U2`l6D%1fuo$O8=PvSN!(F7!q8&lO{v6X08r!bz?3yTs@ep6I?x+ zD+R7J=IR0$4gv0z?gF7;-NF>B49)4mN`r$0rimt3n)e{|d|UYFtST(eBKz55Hf!;m z)3+xirC{2FBYEXumV5~%XB&ip2=ib=*WtI(oR(cUuAPeV z*&eTY1o8e4Jm2O8nl)X7eN1wUpGwzX|mV&Op-JSL|tKTm!6 zk*g@(T9>)ckg5vh%CuOrqf{W{xAF@lmLKWEm+Zt4Zzh>ViQl>kiEEXVEchuz=KzQ_ z3|1lB!y;=h9tJ zh-B+_P-Qp*J0oWKB*#a}`wk$&Cx8XQMtGRuTm5T0{-Lhc;~(Y^KHDRWAh@^323Yh$ z68+Yzev2R=N85uiiHH{4X1olqMwMqGDUVfU7`Gn6%wjSIJl;|xOy|YNQYi}I_xZ3a zKb99C*Rg=@LQkI=_tZ$8fFnYw1Zj_pig_HAN0w*`iSewQVyv8k3Y8k-!nZK@V|tbo z`{}4MJBnh`y1eN!Fp*Zu>3K@yt0|L~%KniNf0^v3G9*EEkD<7LswXMj*ht;mw_yT8 z2<+od1c{GR0%;f}4vZi3K?lTP(_8);GR84`B5$60TId!&$=8W6R!M1;+&8y{)F*L- znlKH=T!vu)N}!HLM=#d4vCP$ayoTyBzUd%RMH(54zvy64ipq&3MCT+~Nh+7g9P`UW zjrk*_lG6vAW1Q;=e2m9)p#FQz{AmFPrx2A0Jk&qmkL$z>5os6sLV< zL?C61Uucc_X_QN1pbeDdkB5@{@lcXK9!k(S4$6J+(AXG(GnGy)1I`4{FAOJU_OY-S zoaJ$FqK29%sEnlH`7!NVJ1i7Y(>Oe0SC3_%a1&jfBkqtEK?^EI!I-`8kkZj%oW26O zZz-S}35YzF2K4g-Sl%IBl$j1%P1?if{VFki#Kx6~E`1pS5T`^Vx^x$55{qA64Z;Pp z_ZB5K%_A2XdH@0l5RouC`L};yqXw*ohs2uNe~)Q2qMgaZ%iJfpd3j<)XXVpA{@b|)l~7EH=WMZrxDRRU`vwAe+?tu6n5YeNBtuy^q#`ZN4XfjFy5a5JW7-8+r39k0Vek;dkWV z*5vIT%-kn9s&I3!cfQoPlTp_rzEzC`m<7-P<+0>$qt@yfX}cjP4Z8oeU<(`|!_?pg zsLe6m|5}PxNo&53*Zq5u?*GrQ?(gE(EzVetqJx7by8su9 zoQ{g`L`BmDcqv04+N0cEY6hV|Mfv=G(<($3RTYDoLc-X3(q{hN|U#U0CA>$7x!#|pc7vt~k&2_o!-IBt>cL6J2%sqhl@f%qHPSbs(%(GEb^3nn;nU})V(5KVDZ&7&<8$8eAv z^cX2UL56Udmts>%-je$e@k?|n`NJEGoj!stMMtD9gATt={SO7ic8CJQETT%vJ8$6jr zbc^S3i<$U6x3&r6bMw$N2lj>e=B6reh8eeA%}K>(KSxz2?@LrVxV2k@DGu&~-Ly!( zZY}gsT-1^3OIC`>o0AG5 z956A>h{rpX6?Gkos#DmhEMx&@i>`zbmc;gNz=DNBS`D#8>h3;NvNvvQ zBBz74hl~oJzmYHtfij)>0zR@iavMSn-(i>l`gAeL1bH7LWH<>Wm-rLe0Pr`(C0@dZ zI^HP!&A^|>QT00O<6Pyd1Vus}D37zQRq)UfMR;$8MbiXUphu$K$OAzl(l%HY**5jrJ-PLbO9V!xf5xzIaB&V0`P(K z5oiqJ;Gq<@2Vr#XC67Ec@WA}?Fmhwjg%01i#rJlv#2PQf{uQy3#M({yyWN>i^gy_hEb@$n=L)44Ay_Axx+QH@onAM5(xGH*A z#Th7Sw2qnG)y;jdb;zQ{si!|i6CC4$iB54l7TU0(z1m$;joTJ(#+0;c>H*}ak&>Lg z7OW|_GNwWQrb2uz$=qYVhij;~c%iinA!4;VaYyKw6U&q?K)3=G62vp;XA1p{DiY7Q zFskw7anO&aX%LlFc1b6U#_zR)1HW0qK>Q98((tS2Dm$~<_MmboDNUC;QQdp6#6iAO zvQH`d=*BK5xAA1M?A<3vCdj@m*tg}N|_Us3b^7=tFcJV%4K+R{##hVL=d3ex;3P=w!U!d3X4%~fhB4mfp|fx6rg#{R--UKq-;We4FY za`*{^gDkjJg~)PH_CaSN-wyb2LXA>$);t#Gy{c@!(#T3lVBvDgl}Kqdu*jTfWHTp6 z`Y7^#u3|2IAAot2zQ5-xrqb8TRg}AznubC35)a*T4r_6kA$nnr z8w%WLSyBiZH?|{Tyis9r2ZE?CUWa8+fxeMuS0U>8tqw_E&3dhbni%obdV z=S}K-3PZ|PrEAe(q6PX0S8+)VDlqXQ3=S81oeOO^4e8KdZ}MZK-?R)Dx>Q_eX?m4% z$+dQiuN81((2dkQ1U1trGk_J?S)%@5b;a`TMtO0yZn$zPBh?B%@KtZ}wd8Y;<*U$@ zm!r;#gypO^EnYYlU%5-2tg3 zKQU4pp@({)cFrK>n-8pD$(lZbl~LZ8q(u>1ptYG!E>(kJ5WPqHNgYh zr;wUeHyK6~I;2#SfTjJ@eAZ5W?>SZ(t{$WLE@kS;GO-M>M$qlVltD=u2->WjECXFa zNtLr&d2vCDbjul{Hdo<=<-^%rrxQ{q`)`Vnz3F4LaGbXeUfj1qVv=a)EZeF>4|b3M z2{#bycjEUCX`GwLl){8Xa2yhNyF)nq)_c2i6Xle{i(HoT^ETs7c~Q89f3d%&D9=u~cBfV&Js!Zoy* zSMP@UcJ>TR|A8TTUyFHuqBF6Mwmb%vLEJxz1|cf|mB&~x3q2agw*gv55*0J)1R@UV z>4m;>O9z#Z)gzU4iTYqq3JIpN-%ji|iGDGh%z&mji6A8U4W+`=GgDb_p>`VtmK+t# zL!?rOg=Vo(9YPa?p3$^A7TO6DK59h#(q7Rit}N{Ec4a})tV{8Bqb&fgVsVR8{N!z& zq=s#Vg;4((gJAI!sRCh0tA*_2Eet^}kN5+# z{*pdd#I5VX#5{1LZnhc?A{$zrzVEQgRF@zPY2vJH|H4m&| z4}{^2k38^pPCP}!ViU}Blyu3f__7*leYFdkGd!kt4X5vj;gm82^TWetDh-=eSm?r7 z9hv^oXx(MCJZ7ppODuhII3o?%zDpsmRoe9$QeYZb5UwIMT!q^39m~->T*Hl2115#6 z3ONptK0XfGF43y;OPI?TD+TSSSe_RyeOa!(Azb?&YB?Skb+D3$#~KZ1pm$1Nko5yd zRem?;T52QkQL9$X3CFWSf+_Mx#Xd9sj|)y|-m9%97ZFQSc!F^m z?NRm~n+PhdG=B@?6r(&{jHXKVt=a|zF41<;@Qe;NE}F{m5c)KKrgg)QU%+TkzJ(^( z?5IDkQX5z6nuW==pioT0-yZz+@+uS=_L-vozRdp~m4tNj4uc4U?FnvI3d}B-?laEg|*$h4Oww<;fZsE_!@Tp^)z+@SU^H!lpRS4WFU1b+E6w0(>IM z?L*~e?Ui&lQdK_(PmSV`?95%Lm+$~S(wEO)8I@1}hO{NMk#xn0)whbSEoy1aFQk7R z=>g4jl#QVmt2?qczn9Ca&6bPrC41Mv z3%lK#2i4fqk6#1kE{(tl*@@(D1^*j@+h?{iY>2JD{q2 z7P-KBV#+pb41Eh_L@)@$AKPC+#Kk!^dH#ZXM_vNT-d<7#Rtf^Qq)S%V@#Pj<1z8T1 z_(b%*0h3UH+h@I~5R$NE|Dg?;$R&*gLS!rl-*8gNi?q;@A`@`T2GWJ4$MLh2W%CYZ zZAIhYVN5lU14om0N*~Y?$qlib%|XuX?{hJT&3QYezaSFy)c8?%NPA=iv<rq-I-;H4&z^Ma# zSLqKJ-a*l$ax0LL8?^PHv7)~_Uqc&qXI=6HWR5HWeuiPqei!-ZsurqqZM!2%yUB;@X`;R!PZck z*@OkPksDSOo!jzJDb985mL|x-xLUa;l*k8+Eu@Ov1BC#{efa??j;{Yo6WO2=X~#$cw05Ta z-q_iLS681si0L$nitYcvq3v>W@!epzlH081)=u>Pwzt#d@_C)oIwxSEcXR9J+=UmC ztfWVY`#gy?*w^If0gZS}hoZ_O*z>DM6Z(m_rC@cvv=i1i6E|b^ycF}88q`^nS!CH+ zdJIRNTdmO(d~`KjK+|nDczrqs5D2G!crM2+Hb_h01)&8_bY#>>{mwS{8kOt?jVKCH z{IR}j*j{eJoW2^jGKu&v#?%pF;LGUo$s0uCss>^MEJ7!R_68Nw!h!Hb%Z+5A^Z*V! zyhGAb>hXTnU9ZF?#QO`kk>9VmUH;r5e@5X$D^OrRC!9?^(8^RM@o)G(0C_K$lRBG2 zJXB=BX`jn9(ZkuY=796EucZg~SdcW9o9TKMsg-x8ijpPbVpLDyK6SA;FvE@O zwAi`e-Y68S#jv#niW8;9;ObqN$g2Mz_TB_8>T3NTKQjz4vN(f)g6pW5nu^1sf@pz& zfr5^JORgXcg0f7*jACwV8aR?#S!&&)vTlo&x3tVmamlSLGV8jOQP*2zm|>YqdYk|I zIp^~k2Gnl%e((K$@9*`$A2{Ws zY|5h4n)E5QT}U`2NMV#x^CsbNZS_yEy}1SW!4>q2f`dpO_d%ApEHN3 z^|d`pQQ6*)b9~z5&H*Lci<0e*WLy1HYIst~F&4{t@-VLUvX6X{Mv0C*KCnr&_aI&^ zun>0*Z`#q{&c>%UXCzCNDT;+AWr-4XE=A7;tGk!UO_W zmf-H{Pi(Z1s&5J!*@-TX@aC6A;C*X^!&9vng4hNk*HegG=kb~$E+lp$^>2*E7;qKD zc2WqjIKm4rVDe@;1=pqe03k_6yw38L1C+w<~MR7k#$z!8^AaRdgBBKP$eP^|-_-A`{Kwwj7D4#f#d@k*1oJr{K(m>>Hz zCrYJ-mIoPj5@X=$w)?`5J<93i=KMJM6UqU9DCU#}FH|NStZ$^+!zx$Iz7oCtXGn^+ zv=Ns>Xg-vi1snJwG(N(jrQ=E>&1)w`G4l226BO_D#sxvh=*!?-ai|P;wK)O@$MKw6 zqbf)K^eh6x;Ea6UD|n*!X}t{+02BlKy9C~1?qce!Z_I}UzqK6v=_wMMf_UK(*(JmS zqY*x2P;f-=H4GvxLDTJ|mA^F7gcb*3!167Ke;2e9P22Y}>KVKhy_Ta%_#)yM-k5X* zUKFVZ6J)hSyGI}cmWh=94Pb52jb3tGI;RFSmG8SajkRxD=}CO{xFO=QDWDZRhA@#wgz7*VOYI zvOtrG;|Mx9*c zMG`+G#qKz4ZN}4qo{*NXs*`Q|_xX2;l6fPU+sRxc%yEcJo5}R5^`+!;JH?P(ewBcxk`gIiDtsHAr6sv?{sGq{yB%s< zK}n9oavkvs!oHW%rIL6B!A#|>B)NhNEfrLGPEBRX3r^8eL7t*6*0@CRJL@OG>nfE* zGa{x6!sDTMrx6u|f(sDQ;GNPMKkKKwdP-VV59O2U2TP?3ME#&Hs9K!WB*HNMd&9RrekVEeQE@jigFJtam1%g&*Ohh_3gkLV3mb`oD(mvY3lw4Cw@X}2RC*b`#3p|bpa#--r_=9U`X{bM@6hYWQ#gP)+vektz6gBz0jg4SOlRLjY zmTthFH-acN!a1now+9QlE)iKlU-gd=1#XAr*e3#&$PI`!-0c6a(&p&7I5Tpf)ZK8dV>n* zljwN&`#dZj>>8jggRDrYbEvg`8MBj!J-FL}L%i+YL`Eu@0x-Ft4}BBepk zVQn>b<<&}Yk^K6ukq4XaX9$Gf+8pal2p(sxmr}7Fj=)faO)Ak*7HzRgRcGKs%;P{+QG)^bC>7NE6Ud}H%KWPad@p4TWr1c^8jK>pji-^p6 zp@hYKlZILQaQYs5j!D>%T#G2}r?AqU1X_WrMwhOxhgnjL@BT_E3CsbVLV^h)QI_6u z@{!MhSRb+m*nJylE=(*CO$cbSJ_^Etp5>^v?r}07!pN=0z7`_;PPb8UmpPZBwDygw zfFu|W^3G#G;QGo^h=dOYD`)Y5pa|}EDZ>&cq#@#@6QH8< z;oLRDnm0AnH1zhtpAcuKsiJ*FDr9|vt;Pps6bHhzR38^}aq$2g1PA58E3)hA!7c6} zVng&+s>yGLQB88M;7YU0$ullfG)I&zQ!vXQo){Z9)l@AfHWiV?Rz6Ma7_MGxohp0Q zYNA4S!cJrYr%_M~Ey9a!J>aD!arqNZU0f}(4hMPSsAPBwZAmIeU>r}R<*8eQ+7hHZ zNkV&Ywk<+Hzs{`(yDJ+~urBmTTtAI9>^R#EdPquPKm8rZ&O2^YPUv!LV!EAr0q4i& zCT0JGPW>vamR62vW)=fhMw>6k1yx%7>{q)`*TWJ4mfJDa3aPvvuo!K}y^LJL8F(Jt z-nVfG>3ru2!;AL4Pg3*gHVyjJnvkEcDMk@CJ;=+%9&!%5rTqABEH!oKB4Nu*vLZ(< z^b1wT?BCmYCv>4-2vo}-(82uBmK=n=xIH0mBb3&$SN5pk#S+i=Ol&a&7HO9|mLl1h zAMc`?PRF(G2f_7w?Ql3^4q7#M(Y306p{BC&Z#ePTp2k@D1`;e$*Wk+7 z>0-t=bDuOnrMb^ZE1n?7%I`T8C__^CJoVP;iE5RepjPQ2d6wT!4`$>7 zhuZN9`yWy2Yi#_`AtYfOG2NcW5{IUC1!5KLW< zS(1seIb}k05$`3{BnBne0s|hw5O5mzlPA)tjZ_G&CSvpdmzs%MnpuzKR~gs3-!+oN zbF`AuNU)YV%ale*l*$F3H$ViRY?d)^WZ4_I#)@Oui&oet4dA9K$woLO&O|9+Km|leH!Tw zv<0C!o2S8%&joI@LQ~n;Y&Yvr&I20h+K*Ul;c2Qap!^PceDDE=aew~(QNTL z$iDajZYvMq5FgwffIBLz6kDR2-|d0q(mFQ=87y%+0?YZZz<#MC@IkaR@G`L?KS&eu9!0liet;nl#YK9()!SJjO}=s#rF<

M2Eh5HcNsY<2!FDbJoS*Fj|YX$u@O?q^T{|)a*SdY~*stQW6-N zp_Wo?ONAge2m|sd)zDdN3qp)FQEdqom4uwj{D|!{R1v=(&_1IhwN8@I#au>{@V@P2 z>ni#FQMxGoL;GI=aoEEWnTn&~gXti|CopO1Bf^$aA=fbqPpambNCiYjF=dwUV!__lqeU8Wb`T`0P+hE_Nwa4&*cePY1-p1Ns_k znu&Xz!9UZ}0e2sC?+;@TaAvcbA|SnJ#gdaM#AXVx&B(*4VWFF%LSvia&%3Z@d4Gh0 zYgXp^&SLW;`zSDQ7@H6T^=l2Ww9DV%1@Lyhf28fg|gDc63i%TPCN zv^>9bQ_^;67+IDQ)3{(=D=Iof9#FiTt{^dsaiud@D?YB!;wxDFs;L-<4!TLibi}u4 zAvCU>Xz9R^{vdbZa5uhI6+%7ueS69M)PqwY?s!S zq%9G_a<>pcwS6dc*WIWr(0!y`O+=;{U5fWzHTB(IrPRUDOl)W-HZ+r3qqcS5B@QTw z`fufV)9pKNob6m{+s=C#8|Sy`yk{&(5L!HX6Uir`^Cq=)-sBSAC+{R7b-0N|=M6Q( zJvuK93oV^jCmjBX#9QDn={B8rinH?~rdFL7v3QA zO#3B)rTSE>BTuL*m50`EsXVY+cFfWV zuB=`O)$Jq;+EvmgR4eQ|mbk9!I@fb03FZ-tUEg7+OD=I^2?RH-cZl_PoSy>g#$QNQ zRMl6Ha#$j3|Dzs z2V%<(J8CeqUXZqWtUdT@qp zLrI#$n4pQ+T{8!~C4ZD?D|RSTY)6vcVG910Q(k+lRE$~~&<+_HzSlY#nYE0=HCtnn zuI%wd>$ZM1rZ%8mZu!>^O>X%wS2YVhM#9F};67%r6?ePSrCN4%@(#zZ{98I7m%24O zQrwOuN9;{rzR$7;=U+(Fi&jifICvecFYc}DowVmWE$}YDJ4v_(xVJD?Rb94LlQ);# z@QL?1k7e?DfZ(*y$_;2DiMFp&ZP=;$QCi=9jHu8rw1`aOSBh;-Jq%J}0>3Q;z#fr4 zMciqa0^UB#(nsc64F$+>CwmwcvS{TsDg~#<5dhdl3MHmnzj+`Sy=2$D$aR4IjaSJv z!X&3yQG(OUWkgPu)&Z6LN<}5N7OT8L5*rKG&XJH?)4dp~)EX;9o-SMC?IXd(v}~z3 z8?@BLtILzZo(xub~=AeSL=Nq9A(8W7#^u87OY zwKH+;{0>^xRV?kyU+Bd4_(xn?(;n_alQd+o$uHSfK}47AR^o2EMl~8$yV#X6bWW&g z7cMU!L_!FqR)3jsUKvw)6#GT6?FQQcRxKP$cHGoc(jc*#>Ujv7mYpUufm#Od#|!lX;GK|ima3^@Bt|fD+gzZ8*%#E??k1O zD?#HRKlY)c$sYzv2#ivltUFMCfSmG{lw31|k)1_(<&3kXw5-WP0;9XL#l=Pu``2m} z9xVy8AWVRy)`H$(O2Qc?YBC_DavO8$pETZ7j(qQaI7qY|qBF3zkL5!z7&w#idxW}3F ziR-$@a)i>0RJ7{2zTscJ%{VHPzA7TC;m1a_t60a_qBMiyAfeIGM@IJkioGXB<- zyAr`W0xxwH)|-X(drs@7Wn}%SWL?XxSBZ0YHSV9m(jJY$1|6c+sS!*%?Dtu)$hwm| zRa)Z_r$Gej2z)>a?QRMU39oVg0|K)2fSUl>O}6Bw3%RLrx4;2*2MPh?8#0q(j%uo~ z+{u!n2hD)Frs@G`>@T6*;BqYY&}@I4w97AJIl_W#dg?8?j?W0(Npt4NIDXRD}K|f3SOPN;o>dq30MQc+!YDI4)JDGHzgZu zH7~f+Es3)+W+^OQV%zz^5eQ`c=@Y8SdYE;jdVU?+%kD97rnJmTs$IobLh$|uO{b~G z@JPyb>M-_u=TU>eTngcmOa*E+2{o=qH`ND%f{=+Wsa9G_fd&Gcg;FS3o16+%oPl9z z=q^ReQRE*ZHoD?ztm&cT_`peFB-F;b?LhRgL=9-W%n_IwjHK1LZ@>VGTqp5rf`82H ze3x@G+?Wn-5I3gdpvU9n*yfvalSKttRLUakL_gHDf29XqL`Bdx(m?xVbE|5E8~Fy6 z#rHWJ-u#$EECSKb+{gFmM%pi(r9yfiH)-C9MRi(G*!wKs`Dp?>w7h;HC%ZT^4MrXu zw68q`=il*&dOu_gmx%@uph;~k77Tf?ayfDOMtw_7@+Dv?PU3bB6d3s1by#_^_O*{e zTE+P89PV3Mp#1|AUybOGWX4+B9gO2K;pr#UGkj<0ef#xa;ovGI_-Po4Ex{y8gV^Zg z`z?qT;-{&x_N8z_b}e0m(icR@qicG23dJi}{`S{VQbMK!P2TzT)fQwlrrTxAfHakm z^hBnmx3BvA2(wm?GhA9Jy?u3uJ=Yl)&MDE7w@VJcE9RZ5X$i7$<_qKs%UGAhn^%Ki zGyq1Nl0SrcM}Y;R9d)8r8}x)O_K^q}PhY4a98K-*%oz*H7+y2a@UjcBe~UsCS-Cm- zc_MngoJd8(&l$?KC+$~J`Potpb`1h-U3^^L1`B)>C!r`J_|?i-G(wAyd)ou0vqPoD z)6oebccAs}Mb%OIiGX06ydTL#bkF4hVp@hCtFym`Eg0I=}IL| z`f6!c%;w%OkrF{WVPJIMrJ72#^-PTTKIRCnxk|SEoKRDU!2?U%c(=Z0hT3+mCRL@W z@})>?CkEl&c9bg(m38o0xg-d?P>%v5yErsrz(LOC{QGXV6sSR&@ufhqmT!rZ*6}far;~!$BkK7T)6Po2k4w9BV$CnX)K8AwkYj!Qmh+fsVaoe14s9eH)&3S>{9U@K@L-~n==Bh#_}fs#0&sLPj6ek9hOA?=!vQi z`JR9y&<-j~9@oMy*>>ez4Iru|+RCg0DAhQufF)xQ7We0xpO?9344IRXvOf`sG zrM7CB{7|lb9MBmgEb%u&C%Fd$VOGpK-0l=@Xit87Ks}g(Jw`*k+*dwaDI7 zkz0*D5QhbvZj+p{Hv?ta8*WD_!wY26eOwp^o%eBZYdq&XlG^ry2tK>RdMeEzFju&@ z_W|(M$W+z0$bc-0L&vivMkEuLTY}1!(wlS;(c0rs(=@|g_ZnxRdc;=m3@L-p>L)^| zFX3je3IGp5jYDNp4rA}IoJ>XjH>!e+NR!f)t&Am12A*AjX6dV1_sarrm~05@V+#aBBGZtXqwTUG2x_(tHH(18xA)GB6%O zJzy}eUI!S{?F$HxYAUINw+xIYVRq|*agcq99B6_wP~L-F#>XRhVtky9)bB!GUB*Xm z7%lph#(#`{N@oaS^qY-x!#>6Ud$1fwW4@g5wsGW&IBqcrI{61a{!vx5VjraQCA6w# zI|_fs$xbY65U;5%|1RdSnHnz9|D5QZ=JKF{aqM_JLoP8uJMrXO1iXnl-1^K2Fll zakxwfrq*T%O@~l#riiuRI1wJ5=li|`F{GXv)KhI>12nva{m>prjr;l>0Exqt+`r4+ z|C#J-1M6k?yM=qx&F*Wt`#%czTV(gEh5IDgJ(B+SzM(gSix3HRkl>B$!hE!(m&3`C z%*_(4kl;fSOq1Yt2_BN*DG832;7|#MNU*&GpOGMwV2%|3{SvH};6@2PFTvL(xL<-N zBzRte>c5E`+#$i?5*#PN*%DkV!IctRFTrOdxLJZbC3r-FpGokH1TRTY`KyRmE5Tk8 z43}W61k)rqSAt~{+$h1Yzmwn%3Hs2;g|D9khe~j?1Sd(bK!S@U_>csjk>KkR+%Lh;Bxsl5B?*e$wfq|P zurf+PnFO~;u*HSInx_bN`dk6)R|weF9Ucwf;WgiTYkS#!d_i$Ze$gCVa*=7g)uPKW z=g&8qLqkJp{gA#yv$@!;>ysnv(-)RljD->5(-XMMlIg-3bJfqzFJhr33$g2oyHkox z#a2s1xa3UImky1T3?>$3%`PzNEXBHFld(wGr$kPIPQ;vDoMS}v&h$vua&lO@H9Ol_ zQj%*eC|JmYFy`ne=;_l#r}se$;w(t6$wFC_rX@=GYS93NehX3WVq8?!C>#YK#9vos?L&vGkkDYw+VikOuZ;IBV7>sN%73zX}@ z(R)x6(K0s==AqQ85)%{o3DhBaW*`^+bWw&Wo@zEsub*tdTwAA8ld(E8FB2bQrKVDR zYPevYOsxh`*KXZ==z8|*9n$BHzWw^&Ibh(R(82n!@QBDELx)90504o!@~*pM<3`0NB#yo( zDS6D;l+G|$c8)Q3PG0`pc?E?<#iskrB^K-a1*Hq` zU$l71(q+t}tZYSDc^L}SZAICNin0KAca-Sz<;&d})9cF&Wz{I1etn}1lgm(EC{%-? z8p+o6E2}PpFNR{x%ga-%Jxfid1t!x?9S0wg8b|(YF@g$tP)*e7J5P!%tec)=3G#m zm7}xd8FleGIUNQ0v&~uNg}Qvymzi2;!NO24LxC}?#HhCv_}Jh81C_rYEN$0wgilTwI7K@=J7C zB_+nf+31%!Rx@?LA_O&`k^xuwMfsNetb+XedGKBt+qY zk_go$TXb+*SX^S!739w|B6KPMv$4clV9^!l>aw#63Mev^6s2iUc5$I8zW`LB-{9;5 zbAMf~wTO3Fko_ET3IOV&j*rGEQ6eJS4ifDBBqN`^&>M9zDfFp-~!JBFP~) zNPl<~*;}0ix5b4n&zNNrA(6Xbzmd-c`Nb_k^SW#CH}tmtN-R0Q;cp1}Gg;B%=I5I& z)~te-N}}525m36&FK$!*vxIoS&a9 zxt01~m{d;2QWN?QS`L*?+n$Q_gz<8+B4){5A(~*mCC_X`uSAQO=jw;t-@be#PdQnZ zERk$Z3+TsJGzFLL%87y5c%RjXkyv#9G>HhIFM>K3=A)ybF;W|#ZeT64mQbNC$odzO z0^~=}%k`H1!B~WvEG{ZE7FneHkb7RPw{)Lno?|7)CC=QFd*0u2LFD-GZKAQqNvS9p zB7a8Sx-q56&o&pA6z5uWlk$0P;|C1T$>owFh$5Az7y1I&8#cmZE}mlswJXX3^|ltx zD=J=4bQk)GRFs_i=;`H!fsvdI*O6y@$uiwC#+yOG&_2@z3lLY7lWxi{iZ4b0a3}K* z&ViKs{_l^Dwf*Y{o=E()wYil(37pYy{Z+A>|602*XDxpU_WS-^L#V)UHTh4;e&3($ zU-#bza8v#3Sl<733s96h|Ad6k-~W|skYI(PjeSfn5Teazb%foH5!9rt5#kvL*eVBJ+j>V_sTtBXOek=WW z%xK6u-Dtu>h;SHZontKllQPCyzylux9+o`Enaue#>rc%xXXo+I7#nSzZMI@UDQVf5 ztRk*OybN(Mgim2Jgh}B+6~X^P3X8%a|Kx|IXIZS~99ZBRZO)f4#xnA(<`Sn4>nO&Y zBBP5z2H0G(PAx9tuF|a%%(758ID~lJTTli#!%qNx@ z&Esd!1>2U~GQo}GzPP`XtP)Ec=7{sL++nhsga!NwGZ7q1#VS$O9OJ0sQsHxAdSY73 zY6xD<7(Z_O#EcM150Zt{A(2Qcl8ll-kSG%r4N3?Fh4MnNq4ZFQC`%M6N|p-vcYF$! zf~iJforNH_#e##C%u_Ll8G0~A0^U6lMj5t$-hi5d?KjdB9*Q;g1k$UOOl`UMX0seD zG`jc;?%~dSBd0Q7#U$o|g(wQY4m;r#o-P35-B8=5@CpAAYLiR&H<=-PSAVw)U*Vx- z9^p!T+kDFTm0>X6N>%L@>7sSA+nRf+m{(+b=JmRVNfGYG!XtgSKW98rd?Gy)kl%64 z18sovn~D4?xPK4k74BgYW!;6_)yr{?lH$G<#0}@|XG``jkjijPFFX+mb=HnD?WShk z_P1k!7B%zD@nr599#V&E0GRQZr{obeqH@3+N)Um z$abuKxR*)M&W*KGY-LJ4;_cLqb;{YnI%T}gIz?`0ofK~}Ey}f3y^exjD*v9~tQqP_ zHvsJjO7$J3=@w>`t~Ty?9pz|59aDH|Xg@wm=A-a)hA+pX(5Rec!P7EZN)thsx|ZA< z{ID?^l;h2UBE48pT0ldGdaX$=>qW?CNEl-#DEgdnbWpPn8D6Xd%B4ei`+6Ufcc!QZ zHR48HpdJ*rawGR`Q6>hzU@wNV(kvLO@xcfyI6Sb?zoDhBLx-Y|LzO}C_+8WQic8@+ z^W?8${z!*^xQ6EirOYy;7<&+kMf0H8v%pV5=_I|JH&G`lRtNK5!x>xOB(;^u)@E`& zQ(LcxyDy>kySQ~Vliex;)GPq)D*){-0PQs(Tx(Kv_F|na?O11+cZPXqn0F5ESbtk{ zoTyQclIoP8ryKJe$yLe^|S=Bo;jUZ&&ZCfr=kPv+#J-{u>pNX>O&Jo zGByLs5R3cWp>CC~o>)d^s2fH*B^m9|cA<}h03lSvd6bEtn)$)poy=u-uJ%+vFn1^a zF6O+P)0Fj!?mnzL?7PFhJHqLXaJq+gZVYNb-g%$)MqBb?nl$Rupv{Slbr=mA|2_2^ z^zr>j8`@wib6*wng}Hkha}k~|!t-GoGuozW+i}Hv`k>tWSkDYC%C0@@Y3|nCr7^gn zQ+*&$Lwz!1#bZ$4JPl}7pkuAfI8AA7c2mE&TgC21UNHu=PKW5%20x;Gk-kLp8Z`~R z_1-40Ou611;E^K7p+7*;$IAscU2K_f0eY>9X)oivgVor`&JFE!IDcC&Vko(=9M zRVK9-qW_KVQlCy!{${*0CWD?sHA2xR_Z2675&f@aOq2C8q<%je{%)ex*t5WfTQP0A z{ebk-*q!r6E3@DbPtclepfy`r2gMfV4H`>nH_2%aN7{KEdh#($E~^J;GWIQ$b{0=E zyIp^xGK|e+>>^Y(rGe<@acnW|*S0bb4svJhD&*1=X&`dqq&b|H`GA&zo}t|ar?sYK z=dkDhiV^9_g(vbS)53sT&;+^M1T^?bdO2@j<}>y)ly0sRmTMc{DDv{{rdPcH1g@J9`ziJjk$prMfzIlJE>SF zxKp=r7u*{(NilQyGUOr?R^${}=B%5y^*V-w0T{!^Gz9$n28z8>HSeVA`r zyLwNPM<)5vR^mZ;s7>U@PsRK!9-w*cTA4fhK@i4J(6b=Wvmo^Gpl~ss-nLxi`sMr% z`aSrVK$K5lc*_|0^>Wnn3bZ#U`dZPhw(W$sL9{*aO~Hu2?RXmg0NOc}u38F9Zi7-f z+DUr3oqY>;0X1+BMX;^C5oY;N3IxZYYj{LcI(dOd(tL!k|7T@vg4sPQT!vZ`Gz1o-}`X{3hDx zY%_8jpuPhhxw8d)0OFDOfCjm&dOU_<6sio0zTiOcfv*cXj$)F+m&UkaeO373Rqm@}lHS2i1J?pSvgZX9vQ)P5u zu`XdKyp_!RN0mM}%y&p{ie#)G+P zHaA1V0xf=+pK1C0L;D)&-WJBH5I3*$hddfp4dB~kKS*xl>x}ttWo##1w9H z1Bu#5Kc;<%=NDs;he7u5guH)j6XRh8;*x0yAJcfB%;fEX=n0?OwBtOX+%LLqXRI$& zEEIiCw|*YX547Abtu+tz6Wm3=jeZ10AD?HV45%&iBYj`*#NhY<%&dHyy&Ky#c-HeV zUoW>86Za*hvxBIoEj!U}-UUl~1$y3RG|bgZ^cg>zzhw$s%(wquTK(%88wOPdMW56! z^kr9to_;St4o}~J^t+f%x&aHA-Rk?VJfSF+|H>1Ja`;b|CmhO1qR*I=Rg_a;WHm|% z^_i@e1S8~W(k&!~6Nl^Bv1&|G56Q*xkO(pt7qAiq);DS0lW%)7_LAFV>~0%JLvV&o zb4$;^-&mZRW-Ng)PBwV*Nh}^R4#GN)Whql2>(FAG4t-Wmi~bun8Y{4}K9239xP%yC z0+*jFHZP20O=LRBXfA=cQzF(>pCLU-rN!msn7Kq=Ihmvu=U5A*+#x4UDKsvwc9+O| zy3tIzlZt@lNU4>K;p-K}c*q*2$ERi$VF}j^lVl~0f$vH(X$pw}W+%jY-4yRmRqD!2zp~Y=t5k!Vi(K(5w*;wF5*`dm~fS$n( zNx7}{5M^=+ZxhJA0mX}qum)wCr64}bgmro&wF_gZg`FX@NkS-RV$lNBBVM&5vy|fE zc~;YCNtP-Rt!N>}HRdWxc!A1;DwUVVT(^vZ5}x_*$(&=Mlt!0US3qu@C3v3Pi6Uat z-O>w;*k$O(%MDIkR_?)Tb5qeK8SBV(36PF47cXRYQXHZwNTM0$W7@-L#-mBg_r zih$Y|0_?OAGDXwV;!spzK}kZ_DE;bjDj^`bH*ol_jN z4-Y|zRK*(@8|tD*5uwFD4hd2;%r-(Z*lSXz7_;WzRJfP}P?`)>1sKSI$5FWJ2pgZ6 zN_Y&~FxpmrPCN;wq9e0$obpJ*KB$X6%G*lou&%t7q!~p68%a5GX%kNg`iE{nLSk_& z$|XO7qEZT8Y~^Y)yHDw?rHo>^>R7BY1(e3*q`q;kdequZ3R~Dx3q-niw>E*B`D6kz z3n4?%C|P&W6F`|UM@3JumgG^5jI!qDf{3=}WZqplER{_5D@fV}PfA7tKxvc;76KIwH6Cgj zR2Gy4YAKWrYAw_spfF=)?o5SMQxE>gn-cf7dm(kc%$o_Bama{sa+^?KfM{wOgz5-R z%tm)$ZOjUai{`X7E6Iav$&e3bZGE>Gx_ECf6#h}{hP;I(DHH+Z#vu=$Tq5Mhh5S1W zBruv{7#cY$-+~=a6FJW)2FYh=C~%L4K2rP?T262c@SBiqc#z!3sdK$5I`)uL7iS)RSFDZKJP+p3*IUSQ2Zc#}Zd7{hBs5K%0F2T^4jvXEyNZZCq{MR>cwes8-(1G`tSGO68LWk{HKl*SBo~(x`CTCZPLI&ecDiw*SYQL|I2M-Yb+U&US19Ly%dq zu%f3_AkTj(kf)y$u>7e;TCHZWOUpQX0q*xad+J%8u)gV+Uy(=de-&2Sey965$^Dyf z|IssNpXtp0`i%XVX}1r5>C@cD1Tb6^PR%@}W3x`pJr#bl`%g}sX}pGgnx!ITo4yqM zA#P=GkmL9^KK>CNrj6HsNL$~fHQ&|N^Z&IymBVk9MRTuPr@!tCQNH@G1>Eu%0Zl!H z`vxiBa@ew7ZkOye;r?F*Wghd;X%Vi>Yp<8|G$)}iPtwcNf`(JVz0CTqm-I9Tp)XI; zcMw_@E9w0uy;joG9FM*eCq;Nz+Th<7Nsr|X{*_94TIQfHR?^elioPI8-(6_g)e|B- zY>V-4jilE}`YDpWr=-vPvvA)_(${|`^re#i1xYV25UiK<_e=KGlAaR*n3YL--ie?$ zNqWioO>IZ6Z`r;rY-`_E|Bt%=NB#f1!*83Ow)(d5|Nm7l_g9&YJR{L-XL)=h+UDl?u9x5=5?mv}RT8Y0V3h>RB)C|Dr4qDA z&?LbE3Fb*KQ-THwCP;9E1m*A}CH+7NhDb0-f?5eO2{xY<(s!e!DYk0+D{ic?Mt*a800cuk)SC1X}*5^kF>it*f# zo*`TPQ_zs`Kl8t)w=~X4kkag$kXz}ArpG`{g(7sMs7z?l_;0=J!cLD@X`z+_7P5_tpTN;7WzRO!scHp%Cat9ccX5h3B^DNX=;Itp( z4@O08M|uD^LTQ21-b@S_79DWfquC5K5IF7C`~npPoEC@gfrabA8v&R1M0~(q&#};Xmh#@%cY-;GA?Odl z8vwuS!`LO@bS}l`4wMCOEnq5??i}I;l+U6Nl+T&zsP>le19GFem6akg?B!6YK|d z2)G{bPf*(L;2+Qn#4-rD7H}k#4tOl!VyJ$=>i|E6(gSY<>^~UtYryq@OQ8~gmjRB| zGnN9}0GJ^ltg(S-B>?uQBj-T-(l3S!2<={!g<)Ii{L79<)f1b8gq zTBtnWu4h5$Oo$1p3g!ggB0X@|^B!~-gb3~ym=kn|sspYCEQ9(0IKlQKkS8(+tb@7= zoZv+$?RoeeiG3BQAmDnyaj{4za0B36C>?MU;Ezx_z-iMZ0*cOO5PSq`J8**IN1@FC zCpZVH6u1enHUWJW_!_{6648c%yPm0_GZ&vg4g6lfM&JR!2^Qajb4=?wjD82)^_&Eqp;$K-{R`#T#cHpk(9q2s7ib+WG1p%K2-WB*3z!Q^Er@-kf!xgAZ;3Nb(8R`+>nSiIE zo&b)!$=Emdf+i3S*l8-#3|t4e9BM1@HGun|b^?!`hIR8+;CjH}nV<>4V*xKh(K!Wz-(;igffKv|l?fc; zK}?a0{sNrN8uW*%1CIOE*c7M}z%v2ub5I7rWAjnYP?vz$0S3-Roi-znfYDGl$PM5E zs1TUf0gf+3c)$&SbD&ayyPhX-Jxf662fl!^zzxClA|w$w!Az(O-~@XYqili40=^Hm zA9w@cpG-(I@OnV`JOIHiWoU;N1snlf1)N|5)Oqp?D9id2++2bD!wo^VN|YyXSJ{4& z@xKhU3g!f_LoEi*s=)U^Z3bQk7_}T}1D*+(xB_$(ILYQ0Kz$C}1h^GS`yK`9aFV}|gbD#33pfR8I`BroE;R^?+yKTwgt@D%Jju*ofJ%TlL66l) zD{w8~NvIs)uJZ3BAOAR1HOvV%K$(COEMJRs0&ji0O}HOk~u#Ibsji- z3T<%{)Xzv8pe$GJDnCxL!h6Wjom1H2CK>K{>Vz+Gj-UFE__7JL#p;Caa0qnaOeGs@FFyR%nL*TBm-y{RR?scRG z=5>Ilq1FI*mGdSUaLqO(5#|JkK&=NJ3%CKQf&2oVhdKeg8F1~J2!qT4KZmjd#~qKX z%UiGqt^?c-brpC$;E3&@k5>>T;1nno@Jzt@Z=>FUlRWohPV-)RlsrgCHn$u74U!dQ^BKxDH$G4E9-~gwa_O41_5RQ0`QOA(ayIK zzojtG14LIW1K^*q7jjcC+`?Q5SM|3rXKK`)2%=RuWNyEOInDQ}c;ruxm&|d5mFcn| zqZNv>6&9?1HT1(<^qEH#EXln^|H4NK$mzD|-PkCW%*L_QscV=U%qbX}32&DojFsST zfhovr`yM;mv#srp_S~*WIogw7+h>w)(#p;%qFcFU<2F8P5#2qOFg_g@+vONTeSN(` zekb#$j51b{_e;T|y0s zppgm>wmA4&lI*6DwO4p6JiW@$=9#B3UG9y}LXFRh^yr-UCFKrWR?uPq6z)3cc;AB$ z{8J~U9}b;>4A}<=cLZQrd(byHb$$qk=Eck(v>G52@pg4u{tg80r~HPqP%bBpwIcMr zGQ?XZL02z2u+X8n{KS$4dPo+Ocl2pd24o<kGqcLXK?bCjqYfk{AYsW!vS&+L+ zg>4~HV}@y)lo;^lNZy_96iq|KX+zD7=9(FoM8viw0Whpd++Lfw#jvXfEQ_MhlIuKt4X}7S@j+)(rXi&4e9BV9K#$q-08G>30C|W z4xbGXm)#E4q}pp!8zj##kJRGfKa9NXj zqBhkB(VUoINUurssZG3Oz}5M~Y9@Z}2#k_bw^(aSY#fky0*`07C0?pgG^r`^BVcVy zyov%pyjLr#k=NoRht&sR1nOY#u&Qm%lG6h-sbTQymTEhw(s+X^+s784X-iU1vX%Hu zww0=Eu|7Kjbg@sw?5#=lsj*(wJa7bsqp5lZzav$!uq+&@CXg}Ghrpd9wE&vsU~gFE zHI=4fDmrFFeXeb^(x7?E1C1mINjVn-Q#^@f?tteQ%)Y{c!6LWD<6wMOlm|Q4hdXi8 zRDk6`2rHcds3?G6c=$@QAD($I`-lM4u&5^g@W9UfRiuDisALyDaKU3hqh#my;b&wJ zCAaDcLc3B15=ZI?Xe;pm+QGyd2&$g=YKB*rdfN8jjm_F6_Me`!9jg4w?Wau+>m}5( zeJxh)(J7iT@Dh_RJT#f$`X^V{qGeoyCjVbuk3{pD)Rao9IGgoG_%S>ZU4mzHsN>JF z9iXNl`o3$gySdL39sj53Lmql1ClPbi_wK3#Q&qd<1d={Oo%5jk@IEgv1xIgK+o4^oZ(&=D))Cy3c zgYl-l9t0wfLl;pmk(x*p3FWz^Sx=}*y)lb;$?!bOB~SodCWU zYCBXNR5jFmC|tY2G6CCuG7muAA`@yc>Yh|udP4fxn&|v*+fTjk6Y%nr4+o4V|7J zK|j*<@}Z`j*$C6wgnDE9dD<~-D6ir zDEm;QKFjOc)3%2rR~nwBwlU*eKXk@^E@hvCy3nDF)h=fIpa=E4TYUencF?FuF3yd| zo!fL|Doxx{Ogm-C#o`o|IC+S=O7;VBBjWmfTJX^C+Ou14vu zChsgM)0!7-CFx1-ElXfs*_kcn}y#*oS#U?ymvfizO(rJcQkPN-c|kZt5_i*3PdXa z0^SXrcyAT{D0pew0u1yH24FD3eVREhI){x0EC3&v49+wcyddTz+>M?^GChliiUiAy ze6Xcx2MS2H6@zCqfqyIl*EkNa5WeY4LP&GKVVa>YfvW<}<>mt`Vmjob2(cPrYvOU2 za929i@B;o93ZE_h?`NUlQH$|wW%Jk!9)2D|Q8?2}oNWo*P(DluS;RvQ$MRT;@LK>M zl(+d3PMo(HZgog?HvTAt66kVxDCEiv|6^F7OFWafDe=sd5BkE8s&M$4jkHnOQFyaa z7Q+E2!=wmfdje8H-*B8XQSh=Ac`xF8cT1_Yh zrgFBx&CO;y+-Z=F^DjE2QIEeUVE;_bguORF~5)~^mFPvs-(QiuLSbt>1MPO3Ys zfunD<4Y##hxt_5`ioDQDR2D*#Q=g37h~5Iajj)L7nc<=caTNf%w#Rm=E#%-|`q4VT z#>g)snSLJJaWRcn$EtB_kEXlnPbdRQ(iv zgo}wr-^UH>kh*8OmvzPR3;m5pcNPT9h>A3_yXa5f(oe0#^X&!&E=_jRUN;f}PW z^Q5{>RC)L-C#HvW(g%7#`;e=pfWM<<$fIP;IU zLGV_Hbnd@I7aynZ-pN-#Og}Vih@O8_JNbr%LmL?$F(i6O^i=)y-x+D7K3qgP;O|9B zDK(mPgLL&u^V&7{Jexs}&4eR++tyqxXd_G4P$&gvDJ{X34CHhApXc@M1pX-LMD zA>VyGbmr{Tv-?Ol}Ht>(}dckZ9-b$Qsy^_I1lA9{7mw)u}zUe@4?fs!V?l~~UH3Dmf0*-?d2jOGCo@NU z_4Tff&t{kA2P}GJkP=m`c(#1MzI=~9(nF1A;qLCKP^kLp@6dv3y_VS6{x;@5I69 z#^#(l*k#(go1@jAM)i6+!Zvv2#-^Q~J?~D4Yv;Mm*fnHl(kBUJO;3MxSh+Reql|+c zpDmkyZQ)%r%uA{}JvlJ`nIq{RE*W|G&f(j~Kf<0X^s1b3ZD#tVpf@IKO#80?{K~qz z_MOh`?^u?3STmq#h3aC{rP971yT5lKa@x$dlf!?EK=0cRHAw1x_v{W{_hoI`==dwA z3zK}qHnk}-eYwr0CrphC3)K5l5v%=uCezC#<|18umdO|vpzlD&p8nnmR`cvET#Qgq zV3g~_%ikj-FKdCt7}ibSg`9c&2M7aQJYLeu&!zW(aH~aF4}CXLe;p-j>cAy(|CPFJ z1bS*@OSdI$gxqcaEwrLS(aW_|sJm7uG@z}xIf`1;i$`AH^ubZxYhFugHa}o(-a78$ zmwPn3=VZP6Y);ox?_4_)@p6^EX3El4r{{e!^hwR`kI$F>xZwGv#Upk<{F?8Myh{a- z9CJiGDv&WDs=ElWxJOZ&|8v0azG?R)0#gIm9R z;N4mG&kYN8+feTR!aceV!%BQ74?0>J8L_Uzh7NC^$s7FAH-Fi?a@C#tY&{>yeYbMT zFi>z!6VXeV4Jvt7!kP?~VE5ZBM_)dM!SESKp7jm!5wr?C`~JdIg`} z|HeJ>8#~Xc>%Qjf%%3kTzPRM&*^1Rar+S}h=r!qubw^*Vp8x8F9lk%EO+8t6J+JQ7 zfS5NP*z=A=F;45tPyCYR#b(84T~m&3SvjTXOLhNeXC6B8u>ZHJG~XZY={uN3Z8>}R;c**} z_nIAes@+iiq<$Q?_UWn7rC)xO zY|M@7mSWx8CdK+$F5URIM$uvVAt(^^(9rk-yzHfm&>5_=F>luy%=v}%HxBku)NJPNfzhldgYQ|0Wx^YI!f@1T$uo!)` zNMd*fF3>5V=fLP~vMh^^T1W}Tqy-BWv>sZ_rYv2*?Ed=5uu%O#^6ci{#~HeuQMzG7 zN5eER3*mZwBrytquk-KPd12?$A1a#~hmF7Prj6RAKDKJfAAWggS+LLEc^5{dtvd5b z*ChWw-|fl1|JnrOg->3J`MLR#Ck9;qG52`LsVhG}RTLaObZ5h}^VQvZ^$jVATHE*Q zs^nL@tbF=!eJTcO_4fN-?q^>xX2QkuN3S+#951f_OQF~5lP7X&vtJ)HuJ7gL?SC!& zOaBdDFTZE;pcTvPlUKhoXKzIKT7TV*7kdY6EZkc)c7C4f)B6U_==n>v?;U^ZF=*|8 zZxs_$e=Ho*uj0#-^QOP~*~yp6|2FGr<&Nw>H1xXhV$7)g*B>0dZRge}H8b~rH?YFi z?{DeqN59yn(0zRExu9?BFHA5E`|3^iq_m{ssPFdK3l=3*Nu9q!QHPRxf)4_1J8}Yb zFr8|op6bmzb48M3#nnWGXD2t}2;{L{sp#1Cw`xxxMxpdj!HXVDL|v~Hys}Z(H?a|> z?5qgh{b?*g_wT3=kYfSQATcy*=;FMOrj@?%<=gKK)0dY~VtT6< z>K8nny(#P8-W@BnrX6RyX;1c#d^76EBDW8A>~2F4h=jd5ywmnEizfb(Gx2=vrtg#E z)@*p9X6I|6-Hw#@zScEZv#cp^XZXqLs5776{YlN%yZ==2=*3M_cYGgu$0uhND~hnK zxyj=pzod4t*SZERoYOm`@tseHk&}_-^|NMPzJD9Y*A1{DXC)Fg+h^yFNl9NXDtq;)l_5Y7j z5SnU4h2b4FCt=h_lh#QXce@bAdq&AjliJ?{_tE5lE0VZcPp3f_eK55{uYeACoK!cu zxKuZBtS%+L5O=xdgx#edL6+YBLlW}mJ*=u^{oOX1yp z>r=13aOf4!S1O-a;%|8H-NKD;c2QIf)8xng(&@mq?k}nn>|0*G+uyC?K=)mfdT+dI z*!GWiumg`c+U*6@qN?JPkim1_a9djd&EE8XO*>E|Fh?IJho;*>EYS7R|8|OtWMmxXyt=5_D1{| z@PlXe#p9Fu{51Z+M`PB0IO>JJ?jHS@ynq>b>CaYe)%56Eyz-8>yTXjgyI)-qR+<_V%u2+9$LA&Z=O`3JUi`uJiqo`4mzt^WGHWbfwhLKHX;M4XX4 zC)1@B7h5=UH&hQ^E^HXy?u{nqPSS>v_TN67{U(VyJpJA$f9$eS5wKPJr7HIHUnajc zH!*f~m5=ww5hqXjeRM%NrAMDDcfOF|{?d839;M5keE98+?4{mIKHI$fne4=a=Dr_X zN;zP??^yH?<3}}Hzw}yj;6YvSdd=0%y=R&F58ZTl#kYUjsCz&Cx#i!E+_hxmuOW#M zpU)5cUh~X-IVr}_^1Q@9$|R;YNK6l2HDGtV^l17XDsVnbKh&e0w7M4PsiIQvA#2sO zjUU&HtNQa3`#e`Xzv6n=)t~HsK2Q;?R20z^$eX&KhIkRh3cZFjd{xC=??xSpvp1aM z_`_LDEIGw)$)^el)N|m;Id#p>-3Nfwb$FsOrU3>O*ub$JE z#TWUVYL{V{_w%tw@4NV%!Lp4sHq90S2R5yA>fy`|5wl``{yfslP;zY9b;+|Ut@~JpG`i+>xWmf+Omd=VlGy1{zSHAn^J#jlf z_`tIE#D~!n)@^!z+dcI^96PmW^<=+G;j0!Oz5BwbQ>vb0t{jT59#cI1NWhJ;A3v4y z?(vC5A1HVEK3~0hMY|oF`n+r3()^3+R;-<%{6SX|w^ zckk}~FT*oTIWyn%IVb1L`@MeD zs@ILtv$~j~`p|$I==OD5-qPnfxr3b#Y_uHr-YUVA)b(e(#kbtXf0~e^bmH{~4|nyf*(~;Xx&l^&0C!lYu&3IWOx+)D3VrtZ~*Xc|q*WL$}lv!w+8z z?H4uu`Rk})qMUjt*thN7IL}w!ZFF?#p?$Q~tA2jB34Y%2$uOb^}(wQoft@%c)mBb$8s- zCv7q~>Gmo}YvE#U(!Cw(tEU?}&oi;eXBRI`3f8}`E2sR7zl^$e$g7t-kFMK6K>)O|kd@zAlg zbr0e@o9GJf8o1~E66;_zXu5xX_U)V)s{G}%&nJy8tsQ8Sm+d!YD7M}r=a6?y38gNf z(@*2ne;TMU_VIE>KlkIJV7e62!XX(HiuzVx&m z`tBDF-;r8hiNl6tCK-kagC%!_#+PdDd>F?OPGv z=c+?b-*U-GS?oi7}!iWKoT898{Fls*Z5R?5r`mF9pF38qH#6$K-j_?Lu{ITKi>(N~Jz zEmz4#oyqh$D{l1Oc5qtQg7t^*C`4Jl|Lq7kcvUdAU+O97y3Yl}O{k{0w!-fDLGtsK zT*+HZHGT2nm;LJ_rk!1TaY)u$cah50^Np-cg%JnBs8(;-8V>V6aE=XG_wIe%P4{<0 zu3y`&&r7uHfWhU%ZD51*is@wOKq-?38Xs#4^l zJLkvxNWOUene*vYAmh)TPv0s!`QqM|>!(`mwNtksoGYJw>LKCgow`G~r%qLZtGzt+ z)LkN+L%8UiG|DS!&TkxaPC8(bB4#CXPP!iJi>b)LsRMMbS#o}d?gV}mhOeiDL4G(; zr2zk=mWYpp|L}!WXQecyW13g=1VU_=G=5V>IR5FeIRWT_z1&-s!PvJBaA(9 z-~y%VOk8gM$AWXya8QgmhwX!6A%c*ni2^N#1@fflt8I}S=p&+TU0Tv09|LPSUrqF# z4@9B|b#&fb#<2cv=cZ+Z{*QP$f;t1^at>b15so((j%ONQEJye z_G*K7uh`4L6>`BRWE&s}43Sm@4do`hUdW42pop~Q5x^c(QL2?d$nIlZnO@YW#h-0FQ!fm<idrXe z(+O8!r1dKZOfJM5Xes)zemJ-~2c$;Y7?;}^7ZS2j!3L;1q4mP%#Ep=jgD2@WfNOk> zo4QmNL6tbEs`4nmCl@c_2)VjWspCl;p_i_wH55%G5XXtYSRLCI6z>$Xm<_PVv zS{2A4(h7qVcqtd(rdx=z;U{#<2=|cgRl?n)TS>T^bgPidKZ6Ecc3Qw}_2l4*1?VdD zQ6xvm({-}OSri+X>B4wj4hL_-o#;3V=A*Z^!skb){n_{%K|>GPVjeV%o2qucP9$Q} z@{>sKU>jrOOZiv9wUaLwJr*>{MXRy}4WwvA+7XSq6nReRIHEUd#z0m<6P#5y1rJ=K z<&Tv^7tvdXA&D2nlola9E+VabK-7Q$1V6yRi?Vhu9mj;hF055P150*TF~rYta2Q3{0z6B&fT5WIHU(@p*ix{+fR%$m@&=m)7NbxoB(QQ| z<-wA{Du7i4t0djnBrfc4{5tX6QmE{XCQXuVA&7wOqUgCuB-!PHVM-;yU5ME15>p5t z+UF9}#9r8e64!~n+IS*56C`9qeCi`e#C=d1Kg>%-r259$U zKm;bz8U=}y3*#)2SQZ*I5YSf~r_V`Mc+?0j7LJVs?;)4~9HF2JvO(yB_(Cw;BJia| z|5Rte!Aw|xsOx0+WmtdaTwE;~>dwU#7NI8K6-Uv;=CoAfG;GAJ#vv#uD2=dbT)3?a zs-P{}1e3x}&_Idy`%t9BGy70P;;AknQ|&}$DI|`di1eXIjzI)DZa7ciigXxd~dP1~Bv;_!X?h4-f?+JAH3_S}i3a&^%&koDpiIuAqvD&M7LQ z2YrP781OBeqH=nT3#{;q1S;=)*g)c)1T-3n{-Y?qw&`Wh$V%mc=nnH2^?>3;PVh zFZJ$s-DIul`mrfIrRh~ihLym!|3~pl;ekAFw!QUm6EEMe0QfI{Er#e$Bp{|{PQT8; zS$Pe3V)a!q{WIEFZ=MctGj;zZV>3B0PhEYn@~26 z)JF+8u7MjKxK`=FsYuR*cLmyro4p$b2Qe`zw;+i6XBgC}|D#6ATO#E#`Csb>I;^u{ zV979-S>Rpfv@Js8T2S|vB0UNFS@|}fzE*6Xfko5&^-g<+B1LGed+^X z5r2!X^lnB|N)d{_%`vU9jHAARuheVCSB`5JUpfAF@RhD@@RiHIfvg6TjXNs)kUQG-(4AOpS~!FOfYe18NdY6U>|AH|7^<+dP2|J!k*)Yf66_IqggbKD7g%Ds#?pmJF`71E1P~Pwl{`cHmPx@Tnd6 zR03etfluwgrxN%FKo@u5Q>75YAA^f`;8PJq^B=K;bl_7v@Tq?Qh~I%v?ZBtX;z|@i zMOOzt_4hP-b>LGw@Tnd6)DC>=^l*mT-=@guKZj2}ee*GI@Z3|&Dt;xo+}ZtH?sX41 zQ~%$APo>SR&Ap%6lssf%9rss7MZF$_d&C6f$FaAHvR}-77;iJ$XU4^}Vau{s1wPpw zY&dd>m(iOz*5n+5QBRyI_~>bA%WnEay!#NVx3hbtUZR*`wD(4e~eLT|B~Q%99{VUTEpo1$wK= zLgkeHAFd436pnZpnpv`;`i-X5sP%MTwLL*9lic$g*U)Dt^hL*jaD?La2d%oXfZRqJn;Bq{24tk+8DY7l-*aWPIHOcZKW{X+9*{Z)Wch;M zpOB8US0fF*eqckv@<6MyA<+yEtb21E{#`n*kzf{pLtD-ad|P+5>{)HZ4>OcFLjb&e zn2JpPwqKvonS;U5I#c35Q}Q2`I}B5Xe5eP1O#d{>Gn~lt`+BEsp=Sf(Z#MKK@*z_U zd@{27s>K?S(U^r1sb&(R*}l%|T~K?ezUm=_&j{MY_=`1H%WAB4C))6@>#PodnG{OM z5cm0yokb9H03ki$Xnb4eX*jM{SgKxW@+LzXP<+fe12B1Yd z7|II=o$qJ`^PnsS=)V`Qb6W_-LD(I1t0Vp9?X7QVTidSlmQ{}G_2rkY*(^LqLg)rEg4_;Vh%Rj48T&E{G72-wGOlJ+W>jTVXVhmjWMG+;OnRnv zCL_}zlbLCr$;#wpI%Rrh`eX)YMrOukCS;~$re&_nOwY{D+?R=3SqUv{$i%WxE48y2 zSq53mEb}Z*7JZxcHYmTtbo9XgSPwXv14rqf;JI{y2eUt`N92F3%l~oBtg7QimCgr!x*TXr|xGGEz z_$?_|0^q_EBt$XEoxl&z=%9}QObfpyQVW8t0*VHcpd(JF?toGu1DViaXY`M7n;jI1 zm4RFJ2XYe7b!ao;$|PjS z=wCs7g8BwSbwsX=VS)Y?DZk|jh$l#Zp`L`>CY?<1-{2*PzMP$bo6!T0BnK~3N0g8a z0AjbMNqrpfC4b;40aKn6c&8EElL)ywgA!~24=mL|Fl`9RJR1s5p$!8bMIlM(OvY`r zO9`eTApHZ(v&guxR>!!IRe}dr!zBR&kpZIk0%&LAOd&xoR6z=&9n}_h zjnu*gmjqM(o}Engf`g^-MJ zaa%;OnlK@N=n}Vw|Ma42dBI~PfZ7*5R!}K&qUGBtJIw%2Qh;}2cv*6JtP&c+D&SO{ zuPMh<1r|z(fmKmetB%`f4l4Rs*}YH?W_{JvVp%55A1tK@lrqRhlMn(+s6~jluFlSa z`Kojtm1r?RK9~2$=7g2f~RyXgcqueL>irFiAx}0 zT!>$hw{OrW7Sxagm7vdI;p}({A2c-3u-Rd*Gk~N_6x#s&hN!)jxGjZq&W48Z261>g z91c$r0;JkOqFJiYRlv1q0;y_yGzZO5P^~#=1;L4siUn@Md>S?dI@v}WO#~R@S_PsN z-mt`^D}fkoXdy*9rv0SdMu))_F{>xQ62jfJ@v@J1x|e^f=m(OhQ>EF7+%P3U?L&-Y zPISlZwFP}JL1BXvjBzT5;w+XE0&-gCbA^sn#ch339eO|pT0ULy9GiF=#ub#??1BLw zKOWSefGc>eN=rr&xRdH}G}%X7r!Bq>-AYS30{@RMWr(8|L4X$px)~tMo5pV@U$z4FyVItIF zqD!?7K>KUQy{jpNE634V8*zQMAFS>svM*$`;Wt?$cObv146Y$TXm!$(SN=xOC=i4< z)Xr~JtFF-ZwKc7x7{H!bdyC&hEawyaCQ1g#?apuFfEzoyRZ=2%4h+$0Vsq&$7>T+= z#Oo?jL!MfiG(u6NfFg`VKx}$hxB!Sv4PX}HrND99mb+FH?T{W5@sa2@5PXKXE4*_O z-G-%w=y+$q?|A6tVAduKZWlnRi^0u-3rUj;=PL_{VnwyK0zFh5RXSdrR|Zm1@!bYLhgO4xf%IZkDP`(n}zCJ(*U4>zj zyrJp%FH@am^&O!*8#3aRSEq>>e1W@{Vr+`!Ps9}k4PVdMh~Vzk0FA>^=h0zvcOc7O zF;+FNj)3KXJHV=;h{H&~4=l3}EOHPn`DaKDyLqa6ozV3&K1EgV>8sGDPH11x^G>zH zQprJ_ZbfL{V92445c$)a_>Vr^Dav_vSif1hx2jZXxcxCM6g!v+jr%O~w zrV4eC8dbrAsDfqneH12$jG?6^P;1ok+HxSstrifMR4qJJd7XpBt-FqwRWA}p!{#sK zsJ0cK+D80*BJn#QIL2?+Fd%^Rn}{r2Re4J!A}>@U9ZofF5H0T6ix*+EKt~cChENmK zBx$?5I5|59FH~zDTVg1U&wv&#N`O!gRTz>oaZd`Q9&D_GN2&_Ge&rd03==`qSKuan zGpkRk$*febgLGU4DlM2t#$qoXg1tM&LBFCZNEd_Xs(99pP(vdZEBCgf2DPtc z?nO)?lFJvRt^i?LYDc<2J}9mCLU65 z)Q~~Oya63k55b-Xn-6vy*fg*Uz)~g8$L8Sg3)T;8XRz-8Uw;d10oWa2mw}xH)(Nf! zfIATK4VQVgmi`ukRfxHPEraKMWRYq9kt7cOvH#GS40xDCa*@uB<1xMG1qeIY?sf^? zeeKgqq(Tl0u=EO!;DKK089?glH9I6c8nm4QZE!?vw11#iKxn8}%$yjn&=5Z{PcZNc zyPyP86&qMOXzW@D+Z0+(sB)DO7lq%$#@PrKnf9)aS0G^yV83-e3$E>yTqhF!4gVZ| zWgXwIbK3fED7vLcVv{F!8{j!cH6nP9djZcetce1&W(c0+EMkcvieuyfiet2x<^2WX?&`N!`DC4d^vv?4`K%{>?G15$?hA?XwyO%h`t! zOvH8(u93d}fuP$$j^O`wu^DIQ>Sp8OJ;vSE794jm%kP_STorTszW&BlF|)8Elm)!W z%_Xgcy8c#^K%ZtTe(M%=Z;qF?Rjm~Va%;|G4_P*1qUxTqF%o{_iL!A-CB0fP7K__F ztyP>j>(o|p;`V7Fp5<|YJYZP11{JSk<~Rlg#RT#&JrwWy+jyz2fD34B+{0lD3BY!= zVRDwvq(AHa>p1o*nBQLLX4uAf$(umTkAH_o{Kn`8CUwzwXk^;^4t)YP-tT>fUPq)s z-=ER9#+L8U;|YBCZ@)vMZ&QI71HNV=F4_?I{uCnlGBpOizFET+^py#*3L_R+SO{Q7 z!NQh)({As3vLo@;E*!qAp|8=d1oy8Y@r7+Vk>8T|7AwV?fBU;}+xsfY%p`Ej(!6cI zCQ5PYhLFw>z8rs_tGI0$EeLcB+k%aRcK-f1W7MOq`HK-(@mLwIVl&X%F8vD3fbWaw zi)Q4L#1~fve1DemA){}GV)kjo`a6pl9r1VlAN{WTdu{yQcipym(HQ(VcD!XA z&<*d;@C|qRH}VZfLS0syY&F?sa>(SYNpI5_Q<16K@E*fw438VWXn65(1G58Wm1fV( zKA3$q<62Cy46qEfjI~U%++mqxSz&q4@~P!>%LYsN5gH@BEd?CNOcMEk;>JxkmX$Cyn6Jf7GCN z(qbHUuanKX=n>CwuRLaAuicAm>?CW$WZgb7h>)Mff(-U?4 zfK%cm(Ccg$)9b*GUN9srGu=MfvgeM_`DK3@ew{HkM!*9Jpxl7NTxTAd~uwt>*lFu8I#~ckVuRj^Av@g=PXUwBL4?di_KfLn-FP}N5 z0t0A+JMZw?=UP5@9Z4&tbn!`k+K^ng30&2?_E#2XRJdO*pZ8?XdAp&<`}Xal7JfOY z&x4uN(F@ZDxSV0jZT{(GzZF?iax}ku@|rtyQ)#zfpWZ6}T=%T!^6(vl{LNm@`xtT3 z*DQBI2zBVWT9f0Wl&g0ogw=K1ES$U2cxIKWQvW5F3+;FQOkMHW`}M>w)&9?}Ilot1 zCLEGqyu8q61t(##%aEjZVbP>tu57F{`Z{RG?(G%}ElZcoz4@ts`sbw&H45J(d|mN1 zd(3s3-OiQAR09rCZWR=Nk$XOF>ak}M?ovK;;cxi=fXk{CM;N)j6=}}3DQ_p}PuRZi z+0-u{3qQOzGDE)#N6Gc7s-n#MI_1Ow^-(tGO^rtnT>EL(^bce8{kG0s|8;1c z{jRT?^_8CN^@&FXHgTL!w{~@!7;-PvL;ujVhJ~e(Iy>EWy?Vsozb5rllRw@t@7m-g zk9vfTIA&&AKhv$Ezpdd7wUU5buH%66#*je+M5`w0yC!IxlBjT%5rZp6O z^*O_t?wj!Ryz;>bE_t11lHLrmo|!n8w=|pj(tFv~57Eb_duM4>OpU z+sF?ZWAzCZ@H1GzS0oDw z|IOv!*>w$8^cztedj|3k5S539t&=u5A6Vz=MBZK95QxnVVX#j^BV<&oEGGkLjN zbr{O|^LI=$-RfvDL;moR+}>;aW_CTAv)Je6)UZ1%%CBnV-AK9Plx@A7yzlwA=iUci zkc)1U;`=n5iR$-xCO6R9xFogbuh)WlxD2p8qxek4w0;sP2oqk}^kiP#Zr7h*?lE2c z?90^KV^*!c-Ywk7ecbKZ+*0mVwJCS3f979# z&zXFy>DPLWi{0hlCogZao|`GIWLfik<^^@LQCoXn=rnXb`I1St=<}BeZ6+^4h37TY zaQb-tgU=3+Hnn+DeT1D1Kdr&JcNf6~V!z(QZgguRDcRmt+ZUjF zWm$z{Pe-dv|JgQEww>_amvG#uO2v)j)um^&!_9#q<0`rbE$}9VzcyVyv&!)6KAXxe z{STkTi|@L^Qg48zUM0KKNt8RjJ#Mw>E#_aj)GaK4-Od~c#oJrzeEtt_GI~JTL_8(* zkg_I=H+wOcGC|pgHUzjypk(qI{bja}-^=mcwV$~$cHmBpW6Dvw+K)06{RVX2a(_!~ zO!Xs=i6Lt=JRIMYogjI>&|eg-;`3hTth@ZgjYsL_88>(=Q7BgZtE<`9BX{SFDsVBc z;Sb)bZtSw-Qsm|FQ~lmmOrLgQ?Rcg0Cmy7Z+kfeG;FM(2z6moQURq}O-l;lk(`Nm3 zGl%=L0*O*vmCI64s8%dGpJt8)Ft{vFFD{dI&5@wsTa}aG|7fwK# zOOs+(Oo?~f=Ai2PxYaS$)R$+fqL=pSw7b{wX_p%hVJ~A&Uiuf;zLxWxZt<#<8t-1J zJY%V`p*(KLLi_*R+D{*2STJknn5ac8dt3V{`uq0r8b=GW=fxj+eQs@4qQ&~nW54<& z4j*%P%Hq`bQ{NpI?V?*}M_n&{-Ix7l!?x{p{!PEs29DQZZpKUVzuX`FIP}X+7fq$l zVY(L&UgT#My1eawG;E9F$jWRxxnUut3S(AXJ^tkQE=tKtr|$QX!U~V|a#d5tvFfy{yVn!-5$&@BYI+8JfkPPP^`<0}U_@*8ay^wf{HVZ4o-!j5!P* z*$MvM<_7>tkQpImQL>;2mdtGi&dGjv3%GQldrZ%rqDLip;}VOoH_NT)3AbZ^&8*tDq+w=EF{klP zQsTXcQ+cO7T-KZJy;c0==ZYKoJ6AeIlM~*R&(wPRIevtvXLmm~64!#d2`}hO76lciS*2nSL1a)f+KV zqib0w?yMbOxxN=CT{|kF81&P<>)Fgsjc500baKjeJmS{7ZtwbT z7U?ex!}-_H3;nsgyn~}W5#KLXU6zkJ~4KTxyH?hQ)Xs5 zRE!>PVKd#6RM5}$m6=iyY2oSV$_gsaPD{3cT}=Lt*0+D)_-&!g+}qPlWx|n=K}&T_ z#`34C<>U;T%wUd&-58$U&6&fQCh5b{nTrg+{q!z{W!xro+|eIgNLpH+}4C=#{H8BBoQ_6t37+pjUT0bn>*}eW3OlZY!*JON)1e$ zV)G^7Ttvz3=bhO-RV}7{Skq8)X-jXBb4tjpb@;MF{ZkUV-LjgSv(MqksOlRg*NV1T zxLO_H&C@bty6vbvs(W!LWy08i*W>r5ZmM<*J#g>-i2bE~leW4qi_Sif{h?kYU%sX` zCo$&kDH{)+;a`r0o`|ZyURpBi_R|wTXY7c^uADr8y;!l^B1gF*+`@Iyz#Ai+W7ZvU zt64i_{p^>WM-3mN2V~7;20Ri_T5SpNIH1dEyCwV+?#gJ7Fo7qBVQuyZ;x_{PNcfMu zUijWG{eAo2Bw&%3>q?d$TKnRh@>2Z>;iKu3_*WikYH*A9+x+Yr%WhH{9&xNwq`|8A zu;`OYT6%$&%A(}^P4lLiEjE8zI)Rd~Zp)HOp2~8CB_z8wo+(28N$5l5d+$L%=`f0Oil4^&tbC()Q9fzyuMYWJhuk`h zn^@)CG`B1pd1im(D(R!aVJ81T>wN)!7Ia1npWxOd_^L&6K)&0uSN!Q;`jOEgVG+dZ zB4U?lOPY<5TI~_-K8&=pM|8R|b;-MtYMU20?!=;eRXh%IcSk-xQ1P%dC9J0~e$X!4 zU+~_`xWz%Mm-l{RZ!!K!_sApG;rA7n*oWy=uj_pOMEZk84tYQEH56EBlilN{_igWHhyRfL9T&{ipW%NM?X(H#*6XVB&FKtp!(ry2Y=b1s~>Vc1QE6AReCai9ANAE#{BJTT8A zT4l}i)1MV0(*n0B^w{=5Y43!I56@XlA90ok?AfqS$WIsV5maB5g)@m41UhZEh<}uJ z0;Z{vEPFNz{&hcTzPBgbRsVH;>gB8_j!PDNdW{S8Wnyn$7J4(T%j(RUGOBs)8(j^@7`K%g$(G$u^fEb& zD=a-a8{dDgH)DB@vTJzS<#}ejqmkp5_jUH~GAD0;9$TMMrZcF*b~oo%z`)xA6Vc#- zMWH%l$15d2yB`0cPw=bfZ(O!6T$y%7{H%~j`rDYh+kHLo-^1LkaW-_C(n70=qK!u0 zqff4O(>ph(aj=oReL%INaG#^e)%d4DxW!iaLzO(Vo9qOLbuU7_nrgYi(a(}n; zxyv<@`rO?R&Ukef;~5+)_kL?XwdAf|h@RVX>k}m#2N?IbWwoaFV*Xjz+XMR>-!RmP zr+9|lbI@78>$&&a4V#xbTTb>mIdm7rbfeqOd#2r7x)_^SW+jkkd^sdonwxe-)iQ8R zow0+qeu3TbTK)==hW)S!{Ys6WQfun?0%6p zDo2BxuwMU!`Sx15;liHzj8lRfdV|iE+x~NI-}j9@@!u{ zw3rv0&eohn?m6bfxRe47b%my$^$Dq>$aAwRC)~GH@7FE*=IMuDcjtw8T7CAieR`9> z0S^zHG`rid?P)vm16BrnQF1L$e`t_9F!Y>x1^@E8_bi>7!Cl90)Azn^&2)X*Q|{O{ z>d-C^=KAz^8FM^$oteSfrv=yMbb3Nx%DKs$N>z1v_&()%YPTWN%ikqvCLKvutq3yM zel9}S*C>&E4j$Et;X4mA`aklRBiHIPjts-L3zOc80b34W)4xNx-Ii4Q{ld^EzD>8a zUL3O`r*E2(etzyfzU+Mjq0e$MDH;h2Fr`hA-|tKNF2XnS~R_XSHvQM#_#JLh3f?#_#f z-n*$Q77kOy?U|?3?h&KXmUi>r7GqWuayG@P|0fMOW23%)+wA27 z-Vg7+YEwe3fkmQ)mRD52DMyAMdv~cpWx=hd8k+-9ri^o3omthH*ZK>f>6Wo!o`iy zK}pQmZ83j)C&@fbN+$N9%B2_AnF;6g+c`JGIdX{6i9SPkGlrh?oFvaV$gfW9iD2Z-I>O-jt~Dj z*6mt!VRjS$ecWSROfp8lj0_=b z`!iosgQ5&(Yacu?Oj&0$vtI~Vsh~DB=wqhV&a!1^$NXGBu-iSo9{~$f8+P91p_jV372GtGNGvTmQE5ne%y~U$L1Q0G$()OX5US44hS4$6 z{@^G2&Iddw9dKdE8de8Cxomg*kRK?#5!1L2N8qCkl(E1quEmC_0(9M#BCU^bAeEcC zNjCvR$vhzwRXaxwPV{GT65G*m9+zK1W#GC?p9LbRdjSCLDluO=F6*oS_1UQJh1te8Wlt>Tnh;C#JUq=)^)h1CxVKqQI^& z1!{#BDD-9(U=AeSOURpikEaZr*CMSeC6)0`vQ(p zjR*<=?+T45Y(ZCXU{b>%bBdlbaAlkY-_E27znuxnG5+J_oZ$#PVYdi|%_35pBaCCP z-Jr<~K@**g-?78%Id~&28LdQ|txDU=ri`ehB?=(O!Ie3{L=Di;_}O?hC)JuH;*3N< z(1pP^h^zaiNb5R0VBn4vn_*7@F3KB-{&fY+D^G!ah*YbOJF0TcalUgTccQb-UmUgYDJQn^H6t za$E5eH^QSwY^N4}V!#Fw1jWkGz~)TQ9p=C*eiPCHulPA|ID!CO2K0cKU0kH~2GUED zi}c7)RTTPTn4fR+A-6qG+ZtH}HSI9}QV(2n7H4}daiv0>B;jC*n;>yVN!)D`SIR%E zFA1-ZxO9n2b&*PJai!1Vu#Xdp$-D|Ugco3uAGxyEwnF%r86ZnntpsjQH%e85oxC)Y30<=pF%a z?V11d{b{CLdnm#K&1k{aD8lUKcqxkT6vS8uh6eHiTc^}gXdf|oqB*@(!aVu57|JOS zBa3ug@_jbpcJP7U!V^kygN=&b-ebLEA_M(Hf|F1ppuj4v> zd^&KQNLO(OuCoKz=?_|2+ahemoWTD)T<1Rm*Qg)dCu=$H+SZ80%dc#;ex31l?B=^2 zxW*1#V+XFW1J@{nDi8ycJ8+F1xJF>6B`YxH!I3$=+%Dw6Sd4TS%pAxxNY_u-UDWsY zkq*SUQz%#kwCs6k+wJ8+F1xW<-)q8+%#4qRgguCW8x_(#P0BBCQBqJ4S5w`DYd*&kh(*I>wA4+vxcAs6}tMxTKLc;bGg}1uusAq_HQD>$M=`jQQE>esu%3 zU79`nOrgrDq%kR-bp{D;cS=xb7=9#vQ%1C7Q17d}K6#r)PNrTzHr}}_+2KmP&*7<7 z$1l&huHzB^E+w{NnUBYca>dK)Uk{u;wj?k5wm?mN@#whl3e7#NY<}>*s%xjLYC;m~ zTmmXS2(H_Ds7~HK=H-XG`lilf9Je)%&i-h6WKd4=s*uoGy(&I`p*Rgvb<}*G7 zgs*br%=Q_bjX(OR+{kjQjqd*juF?FrxW?lVP5O^(tyi3Ij|wThp^{PRJa72_CtTy1 zl}*PDHA1$${`BVX0=>(VkC?jCi$j<2dL<9Andbe|a^51B^Cj!vI@yOk|I(xK*kpgD z*#)k#W7lgs2X#JS;P-Infyq$=%t(Cg@Z`};kG+ty&3?Y(c$14@sq6OTX9HFzjt~VL zSo%fN0T0h+KHFNl zZ{wX4C5N}~@u>Ltrbk8DFRI5s-OTJ!$tZs4^x%?O_cXqhagN8^aSIDM`Wb7~Z)RI? z%Xd6-*g5;i)u;iHK|3rC4bHb%F*fA=kPoT-cK-VKYGz7++U{LSi=GB<2;1E6*3(}O z%<7z~qw`?ocyvZr)&z|?%g0Fei24v)2G-;&6*H-lfc+p$0t@Q*vHoC-;aaiGHHd0~ z^PvD3bT)aqoNZ%)@+s@|A$`)XR0k^}8P=9wzFyoAzvw`YZ*;(H-{?U5i0}|zMD&kG zLT)cmn&RaG$HshP0=+7f0fjW1NDsu&0X;() z)bD`yAat>#2s`05JK+UaVT15BEt4&jV+*^pg%q~1)07f)8F=qV@^bR>@??1hc_n#@ zys|_PSwey!-viE)f>i*k2v!L!1*|eyDp(b;s$kW?BBQO-jW4hV$eiA8b(Dh|3FLyjrOl5>*tk;CK}@=SS_ypKFarjr?D z7TJmHLrx&4f$r==ay=PSa8mG5z!d3<3`M3QOVLTuM=??nQ=%&|l$c5wg+XCbSQJc| zq0CffDf=j6R63PGWl~vGC#nxMl8UL&RTwHv6(#Vrq0X zh8k1NNzF$MQ>Uvl)S2oSjZS0Gm^4;GeF8Lun5$?Wqpm`jCMB@aKG*8fb>YsvaGr8s z;Z=yn_K^>e50Uf91>|Goi;(y-#I1vgx(RG1*!^G?0epwJ?sULffJHz*IL3>?@m;Jd zSY*`HX$gs3C|kZ05!Ti3MM0BkJn$_;H1_HdLb_p?U%VgTzP$o47%+@Jef#MGcpy@a zRDkLzF$(aioG{}ia3@U#ACXQ^UkWq8pdGz>qZHKEeQTfT8|CeS!J}s^8on z;Qh^Y1aASsA69Yl}{$zZj>27rwMi}J$Y0rxcnc?shLn)unE$6tpu zfMfx=96-PPSkU;-1$Jyl2xT2Cxh_pBtrw~jDiaxC>k-t^frSYelw4_<9;vbQLPgw$ zE}TXdI#7fjK$=%CqyX_9ZvPIsKHu=8qR%2cA_kXI^4I=`juMB|FuDcc?-#~#>t(EOFoT{Ms5%&FG-iAPck44Bn>7R!hT>$8bumTGACJ~Y?v}hSx#AAnWC&Lt{=@vf+i~w z%O-H8fH*vlb~ivj0gjC=)IsGMM`i#2G=KceE9wUhSWkuu#zg}wF2`&x>!G(etQ6eB5gAK+Qz?|X>63`Wt zIuQ0&ar`Vu6AC$ffk`Y-5*G?_zL0`JfscjZ%uw=f;9e zR4XwTh!dvW+^+V{?uxls5RV84%8Z7xXA^E float: @staticmethod @abstractmethod - def virtual_used() -> int: + def virtual_used() -> int: # In bytes pass @staticmethod @abstractmethod - def virtual_free() -> int: + def virtual_free() -> int: # In bytes pass @@ -71,17 +71,17 @@ def disk_usage_percent() -> float: @staticmethod @abstractmethod - def disk_used() -> int: + def disk_used() -> int: # In bytes pass @staticmethod @abstractmethod - def disk_free() -> int: + def disk_free() -> int: # In bytes pass class Net(ABC): @staticmethod @abstractmethod - def stats(if_name, interval) -> Tuple[int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) + def stats(if_name, interval) -> Tuple[int, int, int, int]: # up rate (B/s), uploaded (B), dl rate (B/s), downloaded (B) pass diff --git a/library/sensors/sensors_librehardwaremonitor.py b/library/sensors/sensors_librehardwaremonitor.py new file mode 100644 index 00000000..7b71c330 --- /dev/null +++ b/library/sensors/sensors_librehardwaremonitor.py @@ -0,0 +1,275 @@ +import clr # from pythonnet package, not clr package ! +import math +import os +from typing import Tuple +from statistics import mean +from win32api import * + +import psutil + +import library.sensors.sensors as sensors +from library.log import logger + +# Import LibreHardwareMonitor dll to Python +lhm_dll = os.getcwd() + '\\external\\LibreHardwareMonitor\\LibreHardwareMonitorLib.dll' +# noinspection PyUnresolvedReferences +clr.AddReference(lhm_dll) +# noinspection PyUnresolvedReferences +from LibreHardwareMonitor import Hardware + +File_information = GetFileVersionInfo(lhm_dll, "\\") + +ms_file_version = File_information['FileVersionMS'] +ls_file_version = File_information['FileVersionLS'] + +logger.debug("Found LibreHardwareMonitorLib %s" % ".".join([str(HIWORD(ms_file_version)), str(LOWORD(ms_file_version)), + str(HIWORD(ls_file_version)), + str(LOWORD(ls_file_version))])) + +handle = Hardware.Computer() +handle.IsCpuEnabled = True +handle.IsGpuEnabled = True +handle.IsMemoryEnabled = True +handle.IsMotherboardEnabled = False +handle.IsControllerEnabled = False +handle.IsNetworkEnabled = True +handle.IsStorageEnabled = True +handle.Open() +for hardware in handle.Hardware: + if hardware.HardwareType == Hardware.HardwareType.Cpu: + logger.info("Found CPU: %s" % hardware.Name) + elif hardware.HardwareType == Hardware.HardwareType.Memory: + logger.info("Found Memory: %s" % hardware.Name) + elif hardware.HardwareType == Hardware.HardwareType.GpuNvidia: + logger.info("Found Nvidia GPU: %s" % hardware.Name) + elif hardware.HardwareType == Hardware.HardwareType.GpuAmd: + logger.info("Found AMD GPU: %s" % hardware.Name) + elif hardware.HardwareType == Hardware.HardwareType.GpuIntel: + logger.info("Found Intel GPU: %s" % hardware.Name) + elif hardware.HardwareType == Hardware.HardwareType.Storage: + logger.info("Found Storage: %s" % hardware.Name) + elif hardware.HardwareType == Hardware.HardwareType.Network: + logger.info("Found Network interface: %s" % hardware.Name) + + +def get_hw_and_update(hwtype: Hardware.HardwareType) -> Hardware.Hardware: + for hardware in handle.Hardware: + if hardware.HardwareType == hwtype: + hardware.Update() + return hardware + return None + + +def get_net_interface_and_update(if_name: str) -> Hardware.Hardware: + for hardware in handle.Hardware: + if hardware.HardwareType == Hardware.HardwareType.Network and hardware.Name == if_name: + hardware.Update() + return hardware + + logger.error("Network interface '%s' not found. Check names in config.yaml." % if_name) + return None + + +class Cpu(sensors.Cpu): + @staticmethod + def percentage(interval: float) -> float: + cpu = get_hw_and_update(Hardware.HardwareType.Cpu) + for sensor in cpu.Sensors: + if sensor.SensorType == Hardware.SensorType.Load and str(sensor.Name).startswith("CPU Total"): + return float(sensor.Value) + + logger.error("CPU load cannot be read") + return math.nan + + @staticmethod + def frequency() -> float: + frequencies = [] + cpu = get_hw_and_update(Hardware.HardwareType.Cpu) + for sensor in cpu.Sensors: + if sensor.SensorType == Hardware.SensorType.Clock and str(sensor.Name).startswith("CPU Core #"): + frequencies.append(float(sensor.Value)) + return mean(frequencies) + + @staticmethod + def load() -> Tuple[float, float, float]: # 1 / 5 / 15min avg: + # Get this data from psutil because it is not available from LibreHardwareMonitor + return psutil.getloadavg() + + @staticmethod + def is_temperature_available() -> bool: + cpu = get_hw_and_update(Hardware.HardwareType.Cpu) + for sensor in cpu.Sensors: + if sensor.SensorType == Hardware.SensorType.Temperature: + if str(sensor.Name).startswith("Core Average") or str(sensor.Name).startswith("Core Max") or str( + sensor.Name).startswith("CPU Package"): + return True + + logger.error("CPU temperature cannot be read") + return False + + @staticmethod + def temperature() -> float: + cpu = get_hw_and_update(Hardware.HardwareType.Cpu) + # By default, the average temperature of all CPU cores will be used + for sensor in cpu.Sensors: + if sensor.SensorType == Hardware.SensorType.Temperature and str(sensor.Name).startswith("Core Average"): + return float(sensor.Value) + # If not available, the max core temperature will be used + for sensor in cpu.Sensors: + if sensor.SensorType == Hardware.SensorType.Temperature and str(sensor.Name).startswith("Core Max"): + return float(sensor.Value) + # Otherwise the CPU Package temperature (usually same as max core temperature) will be used + for sensor in cpu.Sensors: + if sensor.SensorType == Hardware.SensorType.Temperature and str(sensor.Name).startswith("CPU Package"): + return float(sensor.Value) + + return math.nan + + +class Gpu(sensors.Gpu): + @staticmethod + def stats() -> Tuple[float, float, float, float]: # load (%) / used mem (%) / used mem (Mb) / temp (°C) + gpu_to_use = get_hw_and_update(Hardware.HardwareType.GpuAmd) + if gpu_to_use is None: + gpu_to_use = get_hw_and_update(Hardware.HardwareType.GpuNvidia) + if gpu_to_use is None: + gpu_to_use = get_hw_and_update(Hardware.HardwareType.GpuIntel) + if gpu_to_use is None: + # GPU not supported + return math.nan, math.nan, math.nan, math.nan + + load = math.nan + used_mem = math.nan + total_mem = math.nan + temp = math.nan + + for sensor in gpu_to_use.Sensors: + if sensor.SensorType == Hardware.SensorType.Load and str(sensor.Name).startswith("GPU Core"): + load = float(sensor.Value) + elif sensor.SensorType == Hardware.SensorType.SmallData and str(sensor.Name).startswith("GPU Memory Used"): + used_mem = float(sensor.Value) + elif sensor.SensorType == Hardware.SensorType.SmallData and str(sensor.Name).startswith("GPU Memory Total"): + total_mem = float(sensor.Value) + elif sensor.SensorType == Hardware.SensorType.Temperature and str(sensor.Name).startswith("GPU Core"): + temp = float(sensor.Value) + + return load, (used_mem / total_mem * 100.0), used_mem, temp + + @staticmethod + def is_available() -> bool: + found_amd = (get_hw_and_update(Hardware.HardwareType.GpuAmd) is not None) + found_nvidia = (get_hw_and_update(Hardware.HardwareType.GpuNvidia) is not None) + found_intel = (get_hw_and_update(Hardware.HardwareType.GpuIntel) is not None) + + if found_amd and (found_nvidia or found_intel) or (found_nvidia and found_intel): + logger.warning( + "Found multiple GPUs on your system. Will use dedicated GPU (AMD/Nvidia) for stats if possible.") + + return found_amd or found_nvidia or found_intel + + +class Memory(sensors.Memory): + @staticmethod + def swap_percent() -> float: + memory = get_hw_and_update(Hardware.HardwareType.Memory) + + virtual_mem_used = math.nan + mem_used = math.nan + virtual_mem_available = math.nan + mem_available = math.nan + + # Get virtual / physical memory stats + for sensor in memory.Sensors: + if sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith("Virtual Memory Used"): + virtual_mem_used = int(sensor.Value) + elif sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith("Memory Used"): + mem_used = int(sensor.Value) + elif sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith( + "Virtual Memory Available"): + virtual_mem_available = int(sensor.Value) + elif sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith("Memory Available"): + mem_available = int(sensor.Value) + + # Compute swap stats from virtual / physical memory stats + swap_used = virtual_mem_used - mem_used + swap_available = virtual_mem_available - mem_available + swap_total = swap_used + swap_available + + return swap_used / swap_total * 100.0 + + @staticmethod + def virtual_percent() -> float: + memory = get_hw_and_update(Hardware.HardwareType.Memory) + for sensor in memory.Sensors: + if sensor.SensorType == Hardware.SensorType.Load and str(sensor.Name).startswith("Memory"): + return float(sensor.Value) + + return math.nan + + @staticmethod + def virtual_used() -> int: # In bytes + memory = get_hw_and_update(Hardware.HardwareType.Memory) + for sensor in memory.Sensors: + if sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith("Memory Used"): + return int(sensor.Value * 1000000000.0) + + return 0 + + @staticmethod + def virtual_free() -> int: # In bytes + memory = get_hw_and_update(Hardware.HardwareType.Memory) + for sensor in memory.Sensors: + if sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith("Memory Available"): + return int(sensor.Value * 1000000000.0) + + return 0 + + +class Disk(sensors.Disk): + @staticmethod + def disk_usage_percent() -> float: + disk = get_hw_and_update(Hardware.HardwareType.Storage) + for sensor in disk.Sensors: + if sensor.SensorType == Hardware.SensorType.Load and str(sensor.Name).startswith("Used Space"): + return float(sensor.Value) + + return math.nan + + @staticmethod + def disk_used() -> int: # In bytes + # Get this data from psutil because it is not available from LibreHardwareMonitor + return psutil.disk_usage("/").used + + @staticmethod + def disk_free() -> int: # In bytes + # Get this data from psutil because it is not available from LibreHardwareMonitor + return psutil.disk_usage("/").free + + +class Net(sensors.Net): + @staticmethod + def stats(if_name, interval) -> Tuple[ + int, int, int, int]: # up rate (B/s), uploaded (B), dl rate (B/s), downloaded (B) + + dl_speed = 0 + dl = 0 + up_speed = 0 + up = 0 + + if if_name != "": + net_if = get_net_interface_and_update(if_name) + if net_if is not None: + for sensor in net_if.Sensors: + if sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith("Data Uploaded"): + up = int(sensor.Value * 1000000000.0) + elif sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith( + "Data Downloaded"): + dl = int(sensor.Value * 1000000000.0) + elif sensor.SensorType == Hardware.SensorType.Throughput and str(sensor.Name).startswith( + "Upload Speed"): + up_speed = int(sensor.Value) + elif sensor.SensorType == Hardware.SensorType.Throughput and str(sensor.Name).startswith( + "Download Speed"): + dl_speed = int(sensor.Value) + + return up_speed, up, dl_speed, dl diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index f2ba997f..be794838 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -224,11 +224,11 @@ def virtual_percent() -> float: return psutil.virtual_memory().percent @staticmethod - def virtual_used() -> int: + def virtual_used() -> int: # In bytes return psutil.virtual_memory().used @staticmethod - def virtual_free() -> int: + def virtual_free() -> int: # In bytes return psutil.virtual_memory().free @@ -238,18 +238,18 @@ def disk_usage_percent() -> float: return psutil.disk_usage("/").percent @staticmethod - def disk_used() -> int: + def disk_used() -> int: # In bytes return psutil.disk_usage("/").used @staticmethod - def disk_free() -> int: + def disk_free() -> int: # In bytes return psutil.disk_usage("/").free class Net(sensors.Net): @staticmethod def stats(if_name, interval) -> Tuple[ - int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) + int, int, int, int]: # up rate (B/s), uploaded (B), dl rate (B/s), downloaded (B) global PNIC_BEFORE # Get current counters pnic_after = psutil.net_io_counters(pernic=True) diff --git a/library/sensors/sensors_stub.py b/library/sensors/sensors_stub.py index ee787b8f..3b7d58c7 100644 --- a/library/sensors/sensors_stub.py +++ b/library/sensors/sensors_stub.py @@ -46,11 +46,11 @@ def virtual_percent() -> float: return random.uniform(0, 100) @staticmethod - def virtual_used() -> int: + def virtual_used() -> int: # In bytes return random.randint(300000000, 16000000000) @staticmethod - def virtual_free() -> int: + def virtual_free() -> int: # In bytes return random.randint(300000000, 16000000000) @@ -60,17 +60,17 @@ def disk_usage_percent() -> float: return random.uniform(0, 100) @staticmethod - def disk_used() -> int: + def disk_used() -> int: # In bytes return random.randint(1000000000, 2000000000000) @staticmethod - def disk_free() -> int: + def disk_free() -> int: # In bytes return random.randint(1000000000, 2000000000000) class Net(sensors.Net): @staticmethod def stats(if_name, interval) -> Tuple[ - int, int, int, int]: # dl rate (B/s), downloaded (B), up rate (B/s), uploaded (B) + int, int, int, int]: # up rate (B/s), uploaded (B), dl rate (B/s), downloaded (B) return random.randint(1000000, 999000000), random.randint(1000000, 999000000), random.randint( 1000000, 999000000), random.randint(1000000, 999000000) diff --git a/library/stats.py b/library/stats.py index 0d34d929..decfda19 100644 --- a/library/stats.py +++ b/library/stats.py @@ -19,12 +19,12 @@ if HW_SENSORS == "PYTHON": import library.sensors.sensors_python as sensors elif HW_SENSORS == "LHM": - pass + import library.sensors.sensors_librehardwaremonitor as sensors elif HW_SENSORS == "STUB": import library.sensors.sensors_stub as sensors elif HW_SENSORS == "AUTO": if platform.system() == 'Windows': - pass + import library.sensors.sensors_librehardwaremonitor as sensors else: import library.sensors.sensors_python as sensors else: @@ -488,7 +488,7 @@ def stats(): if THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{upload_wlo_text:>8}", + text=f"{upload_wlo_text:>9}", x=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['NET']['WLO']['UPLOAD']['TEXT'].get("FONT", @@ -522,7 +522,7 @@ def stats(): if THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{download_wlo_text:>8}", + text=f"{download_wlo_text:>9}", x=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['NET']['WLO']['DOWNLOAD']['TEXT'].get("FONT", @@ -563,7 +563,7 @@ def stats(): if THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{upload_eth_text:>8}", + text=f"{upload_eth_text:>9}", x=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['NET']['ETH']['UPLOAD']['TEXT'].get("FONT", @@ -597,7 +597,7 @@ def stats(): if THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{download_eth_text:>8}", + text=f"{download_eth_text:>9}", x=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['NET']['ETH']['DOWNLOAD']['TEXT'].get("FONT", @@ -634,10 +634,9 @@ class Date: @staticmethod def stats(): date_now = datetime.datetime.now() - if THEME_DATA['STATS']['DATE']['DAY']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{date_now.strftime('%d-%m-%Y')}", + text=f"{date_now.strftime('%x')}", x=THEME_DATA['STATS']['DATE']['DAY']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DATE']['DAY']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DATE']['DAY']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), @@ -651,7 +650,7 @@ def stats(): if THEME_DATA['STATS']['DATE']['HOUR']['TEXT'].get("SHOW", False): display.lcd.DisplayText( - text=f"{date_now.strftime('%H:%M:%S')}", + text=f"{date_now.strftime('%X')}", x=THEME_DATA['STATS']['DATE']['HOUR']['TEXT'].get("X", 0), y=THEME_DATA['STATS']['DATE']['HOUR']['TEXT'].get("Y", 0), font=THEME_DATA['STATS']['DATE']['HOUR']['TEXT'].get("FONT", "roboto-mono/RobotoMono-Regular.ttf"), diff --git a/main.py b/main.py index 751a792a..b454e5fd 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # A system monitor in Python for "Turing Smart Screen" 3.5" IPS USB-C display # https://github.com/mathoudebine/turing-smart-screen-python - +import locale import os import signal import sys @@ -21,6 +21,9 @@ if __name__ == "__main__": + # Apply system locale to this program + locale.setlocale(locale.LC_ALL, '') + def sighandler(signum, frame): logger.info(" Caught signal %d, exiting" % signum) diff --git a/requirements.txt b/requirements.txt index 4b8f9c6e..6d121e9b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,3 +12,7 @@ pyamdgpuinfo~=2.1.3; sys_platform=="linux" # Following packages are for AMD GPU on Windows pyadl~=0.1; sys_platform=="win32" + +# Following packages are for LibreHardwareMonitor integration on Windows +pythonnet~=3.0.1; sys_platform=="win32" +pywin32>=305; sys_platform=="win32" From 497d25e9a2ac41bcf7378746b0e5564a294bed5f Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Fri, 9 Dec 2022 18:19:00 +0100 Subject: [PATCH 11/18] Detect if not run as admin, minor fixes --- .github/workflows/system-monitor-windows.yml | 3 ++ .gitignore | 2 + config.yaml | 8 ++-- .../sensors/sensors_librehardwaremonitor.py | 46 ++++++++++++------- library/sensors/sensors_python.py | 10 ++-- requirements.txt | 4 +- 6 files changed, 47 insertions(+), 26 deletions(-) diff --git a/.github/workflows/system-monitor-windows.yml b/.github/workflows/system-monitor-windows.yml index df2bb648..78131fd9 100644 --- a/.github/workflows/system-monitor-windows.yml +++ b/.github/workflows/system-monitor-windows.yml @@ -34,6 +34,9 @@ jobs: echo "Using theme ${{ matrix.theme }}" (Get-Content config.yaml) -replace "^ THEME.*$"," THEME: ${{ matrix.theme }}" | Set-Content config.yaml + # For tests do not use LibreHardwareMonitor as it needs admin rights + (Get-Content config.yaml) -replace "^ HW_SENSORS.*$"," HW_SENSORS: PYTHON" | Set-Content config.yaml + - name: Run system monitor for 20 seconds run: | Start-Process -NoNewWindow python3 main.py -RedirectStandardOutput output.log -RedirectStandardError error.log diff --git a/.gitignore b/.gitignore index 2b110ccd..b9fa221a 100644 --- a/.gitignore +++ b/.gitignore @@ -137,3 +137,5 @@ dmypy.json # Simulated display capture screencap.png tmp + +external/LibreHardwareMonitor/LibreHardwareMonitorLib.sys diff --git a/config.yaml b/config.yaml index ab8fbe26..428ec502 100644 --- a/config.yaml +++ b/config.yaml @@ -15,10 +15,10 @@ config: # Hardware sensors reading # Choose the appropriate method for reading your hardware sensors: - # - PYTHON use Python libraries (psutils, GPUtil...) to read hardware sensors (supports all OS but not all HW) - # - LHM use LibreHardwareMonitor library to read hardware sensors (Windows only) - # - STUB use fake random data instead of real hardware sensors - # - AUTO use the best method based on your OS: Windows OS will use LHM, other OS will use Python libraries + # - PYTHON use Python libraries (psutils, GPUtil...) to read hardware sensors (supports all OS but not all HW) + # - LHM use LibreHardwareMonitor library to read hardware sensors (Windows only - NEEDS ADMIN RIGHTS) + # - STUB use fake random data instead of real hardware sensors + # - AUTO use the best method based on your OS: Windows OS will use LHM, other OS will use Python libraries HW_SENSORS: AUTO # Network interfaces diff --git a/library/sensors/sensors_librehardwaremonitor.py b/library/sensors/sensors_librehardwaremonitor.py index 7b71c330..a9c215f2 100644 --- a/library/sensors/sensors_librehardwaremonitor.py +++ b/library/sensors/sensors_librehardwaremonitor.py @@ -1,6 +1,8 @@ import clr # from pythonnet package, not clr package ! +import ctypes import math import os +import sys from typing import Tuple from statistics import mean from win32api import * @@ -26,6 +28,15 @@ str(HIWORD(ls_file_version)), str(LOWORD(ls_file_version))])) +if ctypes.windll.shell32.IsUserAnAdmin() == 0: + logger.error( + "Program is not running as administrator. Please run with admin rights or choose another HW_SENSORS option in " + "config.yaml") + try: + sys.exit(0) + except: + os._exit(0) + handle = Hardware.Computer() handle.IsCpuEnabled = True handle.IsGpuEnabled = True @@ -66,7 +77,7 @@ def get_net_interface_and_update(if_name: str) -> Hardware.Hardware: hardware.Update() return hardware - logger.error("Network interface '%s' not found. Check names in config.yaml." % if_name) + logger.warning("Network interface '%s' not found. Check names in config.yaml." % if_name) return None @@ -86,7 +97,7 @@ def frequency() -> float: frequencies = [] cpu = get_hw_and_update(Hardware.HardwareType.Cpu) for sensor in cpu.Sensors: - if sensor.SensorType == Hardware.SensorType.Clock and str(sensor.Name).startswith("CPU Core #"): + if sensor.SensorType == Hardware.SensorType.Clock and "Core #" in str(sensor.Name): frequencies.append(float(sensor.Value)) return mean(frequencies) @@ -100,11 +111,9 @@ def is_temperature_available() -> bool: cpu = get_hw_and_update(Hardware.HardwareType.Cpu) for sensor in cpu.Sensors: if sensor.SensorType == Hardware.SensorType.Temperature: - if str(sensor.Name).startswith("Core Average") or str(sensor.Name).startswith("Core Max") or str( - sensor.Name).startswith("CPU Package"): + if str(sensor.Name).startswith("Core") or str(sensor.Name).startswith("CPU Package"): return True - logger.error("CPU temperature cannot be read") return False @staticmethod @@ -118,10 +127,14 @@ def temperature() -> float: for sensor in cpu.Sensors: if sensor.SensorType == Hardware.SensorType.Temperature and str(sensor.Name).startswith("Core Max"): return float(sensor.Value) - # Otherwise the CPU Package temperature (usually same as max core temperature) will be used + # If not available, the CPU Package temperature (usually same as max core temperature) will be used for sensor in cpu.Sensors: if sensor.SensorType == Hardware.SensorType.Temperature and str(sensor.Name).startswith("CPU Package"): return float(sensor.Value) + # Otherwise any sensor named "Core..." will be used + for sensor in cpu.Sensors: + if sensor.SensorType == Hardware.SensorType.Temperature and str(sensor.Name).startswith("Core"): + return float(sensor.Value) return math.nan @@ -233,7 +246,8 @@ def disk_usage_percent() -> float: if sensor.SensorType == Hardware.SensorType.Load and str(sensor.Name).startswith("Used Space"): return float(sensor.Value) - return math.nan + # Get this data from psutil if it is not available from LibreHardwareMonitor + return psutil.disk_usage("/").percent @staticmethod def disk_used() -> int: # In bytes @@ -251,25 +265,25 @@ class Net(sensors.Net): def stats(if_name, interval) -> Tuple[ int, int, int, int]: # up rate (B/s), uploaded (B), dl rate (B/s), downloaded (B) - dl_speed = 0 - dl = 0 - up_speed = 0 - up = 0 + upload_rate = 0 + uploaded = 0 + download_rate = 0 + downloaded = 0 if if_name != "": net_if = get_net_interface_and_update(if_name) if net_if is not None: for sensor in net_if.Sensors: if sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith("Data Uploaded"): - up = int(sensor.Value * 1000000000.0) + uploaded = int(sensor.Value * 1000000000.0) elif sensor.SensorType == Hardware.SensorType.Data and str(sensor.Name).startswith( "Data Downloaded"): - dl = int(sensor.Value * 1000000000.0) + downloaded = int(sensor.Value * 1000000000.0) elif sensor.SensorType == Hardware.SensorType.Throughput and str(sensor.Name).startswith( "Upload Speed"): - up_speed = int(sensor.Value) + upload_rate = int(sensor.Value) elif sensor.SensorType == Hardware.SensorType.Throughput and str(sensor.Name).startswith( "Download Speed"): - dl_speed = int(sensor.Value) + download_rate = int(sensor.Value) - return up_speed, up, dl_speed, dl + return upload_rate, uploaded, download_rate, downloaded diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index be794838..e2bc8c8c 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -254,10 +254,10 @@ def stats(if_name, interval) -> Tuple[ # Get current counters pnic_after = psutil.net_io_counters(pernic=True) - upload_rate = math.nan - uploaded = math.nan - download_rate = math.nan - downloaded = math.nan + upload_rate = 0 + uploaded = 0 + download_rate = 0 + downloaded = 0 if if_name in pnic_after: try: @@ -270,5 +270,7 @@ def stats(if_name, interval) -> Tuple[ pass PNIC_BEFORE.update({if_name: pnic_after[if_name]}) + else: + logger.warning("Network interface '%s' not found. Check names in config.yaml." % if_name) return upload_rate, uploaded, download_rate, downloaded diff --git a/requirements.txt b/requirements.txt index 6d121e9b..40781e99 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ # Python packages requirements -Pillow~=9.2.0 # Image generation +Pillow~=9.3.0 # Image generation pyserial~=3.5 # Serial linl to communicate with the display PyYAML~=6.0 # For themes files -psutil~=5.9.2 # CPU / disk / network metrics +psutil~=5.9.4 # CPU / disk / network metrics GPUtil~=1.4.0 # Nvidia GPU # Following packages are for AMD GPU on Linux From a67b154cac51c00a695f37a431d03fa0ef73d0d8 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Fri, 9 Dec 2022 18:53:58 +0100 Subject: [PATCH 12/18] Add HidSharp.dll, add test program for LibreHardwareMonitor --- external/LibreHardwareMonitor/HidSharp.dll | Bin 0 -> 242608 bytes .../test_librehardwaremonitor.py | 56 ++++++++++++++++++ .../sensors/sensors_librehardwaremonitor.py | 2 + 3 files changed, 58 insertions(+) create mode 100644 external/LibreHardwareMonitor/HidSharp.dll create mode 100644 external/LibreHardwareMonitor/test_librehardwaremonitor.py diff --git a/external/LibreHardwareMonitor/HidSharp.dll b/external/LibreHardwareMonitor/HidSharp.dll new file mode 100644 index 0000000000000000000000000000000000000000..895c318a86f0f99d0fef61da2cfe0fc51068002d GIT binary patch literal 242608 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 literal 0 HcmV?d00001 diff --git a/external/LibreHardwareMonitor/test_librehardwaremonitor.py b/external/LibreHardwareMonitor/test_librehardwaremonitor.py new file mode 100644 index 00000000..782a58ad --- /dev/null +++ b/external/LibreHardwareMonitor/test_librehardwaremonitor.py @@ -0,0 +1,56 @@ +# Use this file to display all hardware & sensors available from LibreHardwareMonitor on your computer +# Windows only - needs administrative rights +import ctypes +import sys +import clr +import os +from win32api import * + +if ctypes.windll.shell32.IsUserAnAdmin() == 0: + print("Program is not running as administrator. Please run with admin rights or choose another HW_SENSORS option " + "in config.yaml") + try: + sys.exit(0) + except: + os._exit(0) + +# noinspection PyUnresolvedReferences +clr.AddReference(os.getcwd() + '\\LibreHardwareMonitorLib.dll') +# noinspection PyUnresolvedReferences +clr.AddReference(os.getcwd() + '\\HidSharp.dll') +# noinspection PyUnresolvedReferences +from LibreHardwareMonitor import Hardware + +File_information = GetFileVersionInfo(os.getcwd() + '\\LibreHardwareMonitorLib.dll', "\\") +ms_file_version = File_information['FileVersionMS'] +ls_file_version = File_information['FileVersionLS'] +print("Found LibreHardwareMonitorLib %s" % ".".join([str(HIWORD(ms_file_version)), str(LOWORD(ms_file_version)), + str(HIWORD(ls_file_version)), + str(LOWORD(ls_file_version))])) + +File_information = GetFileVersionInfo(os.getcwd() + '\\HidSharp.dll', "\\") +ms_file_version = File_information['FileVersionMS'] +ls_file_version = File_information['FileVersionLS'] +print("Found HidSharp %s" % ".".join([str(HIWORD(ms_file_version)), str(LOWORD(ms_file_version)), + str(HIWORD(ls_file_version)), + str(LOWORD(ls_file_version))])) + +handle = Hardware.Computer() +handle.IsCpuEnabled = True +handle.IsGpuEnabled = True +handle.IsMemoryEnabled = True +handle.IsMotherboardEnabled = True +handle.IsControllerEnabled = True +handle.IsNetworkEnabled = True +handle.IsStorageEnabled = True +handle.Open() + +for hw in handle.Hardware: + print("%s | %s | %s" % (hw.HardwareType, hw.Name, hw.Identifier)) + hw.Update() + + for sensor in hw.Sensors: + print(" %s | %s | %s" % (sensor.SensorType, sensor.Name, sensor.Value)) + print("----------------------------------------------------") + +handle.Close() diff --git a/library/sensors/sensors_librehardwaremonitor.py b/library/sensors/sensors_librehardwaremonitor.py index a9c215f2..d03df754 100644 --- a/library/sensors/sensors_librehardwaremonitor.py +++ b/library/sensors/sensors_librehardwaremonitor.py @@ -17,6 +17,8 @@ # noinspection PyUnresolvedReferences clr.AddReference(lhm_dll) # noinspection PyUnresolvedReferences +clr.AddReference(os.getcwd() + '\\external\\LibreHardwareMonitor\\HidSharp.dll') +# noinspection PyUnresolvedReferences from LibreHardwareMonitor import Hardware File_information = GetFileVersionInfo(lhm_dll, "\\") From a074cb939a47a190b900ddf48a05a3113d8fd541 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Sat, 10 Dec 2022 17:30:29 +0100 Subject: [PATCH 13/18] Minor fix in simple-program.py --- simple-program.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/simple-program.py b/simple-program.py index 9b03740b..8dda6095 100644 --- a/simple-program.py +++ b/simple-program.py @@ -42,12 +42,12 @@ def sighandler(signum, frame): lcd_comm = None if REVISION == "A": logger.info("Selected Hardware Revision A (Turing Smart Screen)") - lcd_comm = LcdCommRevA(com_port="AUTO", + lcd_comm = LcdCommRevA(com_port=COM_PORT, display_width=320, display_height=480) elif REVISION == "B": print("Selected Hardware Revision B (XuanFang screen version B / flagship)") - lcd_comm = LcdCommRevB(com_port="AUTO", + lcd_comm = LcdCommRevB(com_port=COM_PORT, display_width=320, display_height=480) elif REVISION == "SIMU": From 3c6494ff99d431a446102871c25cf2211550534f Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Mon, 12 Dec 2022 20:12:35 +0100 Subject: [PATCH 14/18] Reformat code, fix CPU clock (use max of core clocks, ignore effective clocks) --- .../test_librehardwaremonitor.py | 9 +++++---- library/sensors/sensors.py | 6 +++++- .../sensors/sensors_librehardwaremonitor.py | 18 ++++++++++++------ library/sensors/sensors_python.py | 3 +++ library/sensors/sensors_stub.py | 5 ++++- library/stats.py | 1 - 6 files changed, 29 insertions(+), 13 deletions(-) diff --git a/external/LibreHardwareMonitor/test_librehardwaremonitor.py b/external/LibreHardwareMonitor/test_librehardwaremonitor.py index 782a58ad..98f4d948 100644 --- a/external/LibreHardwareMonitor/test_librehardwaremonitor.py +++ b/external/LibreHardwareMonitor/test_librehardwaremonitor.py @@ -1,9 +1,10 @@ # Use this file to display all hardware & sensors available from LibreHardwareMonitor on your computer # Windows only - needs administrative rights import ctypes -import sys -import clr import os +import sys + +import clr # Clr is from pythonnet package. Do not install clr package from win32api import * if ctypes.windll.shell32.IsUserAnAdmin() == 0: @@ -32,8 +33,8 @@ ms_file_version = File_information['FileVersionMS'] ls_file_version = File_information['FileVersionLS'] print("Found HidSharp %s" % ".".join([str(HIWORD(ms_file_version)), str(LOWORD(ms_file_version)), - str(HIWORD(ls_file_version)), - str(LOWORD(ls_file_version))])) + str(HIWORD(ls_file_version)), + str(LOWORD(ls_file_version))])) handle = Hardware.Computer() handle.IsCpuEnabled = True diff --git a/library/sensors/sensors.py b/library/sensors/sensors.py index e2299598..86a1f07c 100644 --- a/library/sensors/sensors.py +++ b/library/sensors/sensors.py @@ -1,3 +1,6 @@ +# This file defines all supported hardware in virtual classes and their abstract methods to access sensors +# To be overriden by child sensors classes + from abc import ABC, abstractmethod from typing import Tuple @@ -83,5 +86,6 @@ def disk_free() -> int: # In bytes class Net(ABC): @staticmethod @abstractmethod - def stats(if_name, interval) -> Tuple[int, int, int, int]: # up rate (B/s), uploaded (B), dl rate (B/s), downloaded (B) + def stats(if_name, interval) -> Tuple[ + int, int, int, int]: # up rate (B/s), uploaded (B), dl rate (B/s), downloaded (B) pass diff --git a/library/sensors/sensors_librehardwaremonitor.py b/library/sensors/sensors_librehardwaremonitor.py index d03df754..21adc95c 100644 --- a/library/sensors/sensors_librehardwaremonitor.py +++ b/library/sensors/sensors_librehardwaremonitor.py @@ -1,13 +1,16 @@ -import clr # from pythonnet package, not clr package ! +# This file will use LibreHardwareMonitor.dll library to get hardware sensors +# Some metrics are still fetched by psutil when not available on LibreHardwareMonitor +# For Windows platforms only + import ctypes import math import os import sys from typing import Tuple -from statistics import mean -from win32api import * +import clr # Clr is from pythonnet package. Do not install clr package import psutil +from win32api import * import library.sensors.sensors as sensors from library.log import logger @@ -99,9 +102,12 @@ def frequency() -> float: frequencies = [] cpu = get_hw_and_update(Hardware.HardwareType.Cpu) for sensor in cpu.Sensors: - if sensor.SensorType == Hardware.SensorType.Clock and "Core #" in str(sensor.Name): - frequencies.append(float(sensor.Value)) - return mean(frequencies) + if sensor.SensorType == Hardware.SensorType.Clock: + # Keep only real core clocks, ignore effective core clocks + if "Core #" in str(sensor.Name) and "Effective" not in str(sensor.Name): + frequencies.append(float(sensor.Value)) + # Take the highest core clock as "CPU clock" + return max(frequencies) @staticmethod def load() -> Tuple[float, float, float]: # 1 / 5 / 15min avg: diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index e2bc8c8c..0a9de1b4 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -1,3 +1,6 @@ +# This file will use Python libraries (psutil, GPUtil, etc.) to get hardware sensors +# For all platforms (Linux, Windows, macOS) but not all HW is supported + import math from typing import Tuple from enum import IntEnum, auto diff --git a/library/sensors/sensors_stub.py b/library/sensors/sensors_stub.py index 3b7d58c7..66a2b358 100644 --- a/library/sensors/sensors_stub.py +++ b/library/sensors/sensors_stub.py @@ -1,5 +1,8 @@ -from typing import Tuple +# This file will use randomly generated data instead of real hardware sensors +# For all platforms (Linux, Windows, macOS) + import random +from typing import Tuple import library.sensors.sensors as sensors diff --git a/library/stats.py b/library/stats.py index decfda19..95197da2 100644 --- a/library/stats.py +++ b/library/stats.py @@ -176,7 +176,6 @@ def temperature(): THEME_DATA['STATS']['CPU']['TEMPERATURE']['TEXT'].get("BACKGROUND_IMAGE", None)) ) - # TODO: Built in function for *nix in psutil, for Windows can use WMI or a third party library def display_gpu_stats(load, memory_percentage, memory_used_mb, temperature): From cedd9c221169487a471dea6fdebb2a6d1d7c1581 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Mon, 12 Dec 2022 20:16:20 +0100 Subject: [PATCH 15/18] Fix comment in simple-program.py --- external/LibreHardwareMonitor/test_librehardwaremonitor.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/external/LibreHardwareMonitor/test_librehardwaremonitor.py b/external/LibreHardwareMonitor/test_librehardwaremonitor.py index 98f4d948..3788b9d9 100644 --- a/external/LibreHardwareMonitor/test_librehardwaremonitor.py +++ b/external/LibreHardwareMonitor/test_librehardwaremonitor.py @@ -8,8 +8,7 @@ from win32api import * if ctypes.windll.shell32.IsUserAnAdmin() == 0: - print("Program is not running as administrator. Please run with admin rights or choose another HW_SENSORS option " - "in config.yaml") + print("Program is not running as administrator. Please run again with admin rights.") try: sys.exit(0) except: From 6aea9ef834f75556565d9253de77c6e76502e510 Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Mon, 12 Dec 2022 20:43:34 +0100 Subject: [PATCH 16/18] Reverse orientation are now managed in config.yaml by the user. Theme only sets landscape or portrait. --- config.yaml | 34 +++++++++++++++++---------- library/display.py | 14 +++++++++-- res/themes/3.5inchTheme2/theme.yaml | 2 +- res/themes/Cyberpunk/theme.yaml | 2 +- res/themes/Landscape6Grid/theme.yaml | 2 +- res/themes/Terminal/theme.yaml | 2 +- res/themes/bash-dark-green/theme.yaml | 2 +- simple-program.py | 4 ++-- 8 files changed, 41 insertions(+), 21 deletions(-) diff --git a/config.yaml b/config.yaml index 428ec502..7f884fab 100644 --- a/config.yaml +++ b/config.yaml @@ -2,15 +2,18 @@ config: # Configuration values to set up basic communication # Set your COM port e.g. COM3 for Windows, /dev/ttyACM0 for Linux... + # Use AUTO for COM port auto-discovery (may not work on every setup) # COM_PORT: "/dev/ttyACM0" # COM_PORT: "COM3" COM_PORT: "AUTO" # Theme to use (located in res/themes) - # THEME: Terminal - # THEME: Landscape6Grid - # THEME: Cyberpunk - # THEME: bash-dark-green + # Available themes: + # - 3.5inchTheme2 + # - Terminal + # - Landscape6Grid + # - Cyberpunk + # - bash-dark-green THEME: 3.5inchTheme2 # Hardware sensors reading @@ -29,16 +32,23 @@ config: WLO: "wlan0" # Wi-Fi Card display: - # Display resolution in portrait orientation - # Do not use this setting to rotate display! Display orientation is managed by themes - DISPLAY_WIDTH: 320 - DISPLAY_HEIGHT: 480 + # Display revision: A or B (for "flagship" version, use B) or SIMU for simulated LCD (image written in screencap.png) + # To identify your revision: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Hardware-revisions + REVISION: A # Display Brightness # Set this as the desired %, 0 being completely dark and 100 being max brightness - # Warning: screen can get very hot at high brightness! + # Warning: revision A display can get hot at high brightness! BRIGHTNESS: 20 - # Display revision: A or B (for "flagship" version, use B) or SIMU for simulated LCD (image written in screencap.png) - # To identify your revision: https://github.com/mathoudebine/turing-smart-screen-python/wiki/Hardware-revisions - REVISION: A + # Display reverse: true/false + # Set to true to reverse display orientation (landscape <-> reverse landscape, portrait <-> reverse portrait) + # Note: Display basic orientation (portrait or landscape) is defined by the theme you have selected + DISPLAY_REVERSE: false + + # Display resolution in portrait orientation + # Do not use this setting to rotate display! Use DISPLAY_REVERSE + DISPLAY_WIDTH: 320 # Do not change unless you have a good reason + DISPLAY_HEIGHT: 480 # Do not change unless you have a good reason + + diff --git a/library/display.py b/library/display.py index 0f474e32..07d83352 100644 --- a/library/display.py +++ b/library/display.py @@ -18,12 +18,22 @@ def _get_full_path(path, name): def _get_theme_orientation() -> Orientation: if THEME_DATA["display"]["DISPLAY_ORIENTATION"] == 'portrait': - return Orientation.PORTRAIT + if CONFIG_DATA["display"].get("DISPLAY_REVERSE", False): + return Orientation.REVERSE_PORTRAIT + else: + return Orientation.PORTRAIT elif THEME_DATA["display"]["DISPLAY_ORIENTATION"] == 'landscape': - return Orientation.LANDSCAPE + if CONFIG_DATA["display"].get("DISPLAY_REVERSE", False): + return Orientation.REVERSE_LANDSCAPE + else: + return Orientation.LANDSCAPE elif THEME_DATA["display"]["DISPLAY_ORIENTATION"] == 'reverse_portrait': + logger.warn("'reverse_portrait' is deprecated as DISPLAY_ORIENTATION value in the theme." + "Use 'portrait' instead, and use DISPLAY_REVERSE in config.yaml to reverse orientation.") return Orientation.REVERSE_PORTRAIT elif THEME_DATA["display"]["DISPLAY_ORIENTATION"] == 'reverse_landscape': + logger.warn("'reverse_landscape' is deprecated as DISPLAY_ORIENTATION value in the theme." + "Use 'landscape' instead, and use DISPLAY_REVERSE in config.yaml to reverse orientation.") return Orientation.REVERSE_LANDSCAPE else: logger.warning("Orientation '", THEME_DATA["display"]["DISPLAY_ORIENTATION"], "' unknown, using portrait") diff --git a/res/themes/3.5inchTheme2/theme.yaml b/res/themes/3.5inchTheme2/theme.yaml index 1911809d..7ab3b673 100644 --- a/res/themes/3.5inchTheme2/theme.yaml +++ b/res/themes/3.5inchTheme2/theme.yaml @@ -1,6 +1,6 @@ --- display: - # Specify the display orientation for this theme: portrait, landscape, reverse_portrait, reverse_landscape + # Specify the display orientation for this theme: portrait or landscape DISPLAY_ORIENTATION: portrait # Backplate RGB LED color (for HW revision 'flagship' devices only) diff --git a/res/themes/Cyberpunk/theme.yaml b/res/themes/Cyberpunk/theme.yaml index a5aaa0b9..373a8d59 100644 --- a/res/themes/Cyberpunk/theme.yaml +++ b/res/themes/Cyberpunk/theme.yaml @@ -1,6 +1,6 @@ --- display: - # Specify the display orientation for this theme: portrait, landscape, reverse_portrait, reverse_landscape + # Specify the display orientation for this theme: portrait or landscape DISPLAY_ORIENTATION: portrait # Backplate RGB LED color (for HW revision 'flagship' devices only) diff --git a/res/themes/Landscape6Grid/theme.yaml b/res/themes/Landscape6Grid/theme.yaml index f9e11ec7..00afa26d 100644 --- a/res/themes/Landscape6Grid/theme.yaml +++ b/res/themes/Landscape6Grid/theme.yaml @@ -1,6 +1,6 @@ --- display: - # Specify the display orientation for this theme: portrait, landscape, reverse_portrait, reverse_landscape + # Specify the display orientation for this theme: portrait or landscape DISPLAY_ORIENTATION: landscape # Backplate RGB LED color (for HW revision 'flagship' devices only) diff --git a/res/themes/Terminal/theme.yaml b/res/themes/Terminal/theme.yaml index 345d73a3..b9181896 100644 --- a/res/themes/Terminal/theme.yaml +++ b/res/themes/Terminal/theme.yaml @@ -1,6 +1,6 @@ --- display: - # Specify the display orientation for this theme: portrait, landscape, reverse_portrait, reverse_landscape + # Specify the display orientation for this theme: portrait or landscape DISPLAY_ORIENTATION: portrait # Backplate RGB LED color (for HW revision 'flagship' devices only) diff --git a/res/themes/bash-dark-green/theme.yaml b/res/themes/bash-dark-green/theme.yaml index b90eaabd..a48d9600 100644 --- a/res/themes/bash-dark-green/theme.yaml +++ b/res/themes/bash-dark-green/theme.yaml @@ -1,6 +1,6 @@ --- display: - # Specify the display orientation for this theme: portrait, landscape, reverse_portrait, reverse_landscape + # Specify the display orientation for this theme: portrait or landscape DISPLAY_ORIENTATION: portrait # Backplate RGB LED color (for HW revision 'flagship' devices only) diff --git a/simple-program.py b/simple-program.py index 8dda6095..9cdbbe4f 100644 --- a/simple-program.py +++ b/simple-program.py @@ -67,8 +67,8 @@ def sighandler(signum, frame): # Send initialization commands lcd_comm.InitializeComm() - # Set brightness in % (warning: screen can get very hot at high brightness!) - lcd_comm.SetBrightness(level=25) + # Set brightness in % (warning: revision A display can get hot at high brightness!) + lcd_comm.SetBrightness(level=10) # Set backplate RGB LED color (for supported HW only) lcd_comm.SetBackplateLedColor(led_color=(255, 255, 255)) From 76180c0f115d93b49989af129b8f08f93a87f36d Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Mon, 12 Dec 2022 20:49:05 +0100 Subject: [PATCH 17/18] Remove interfaces name by default in the file --- config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config.yaml b/config.yaml index 7f884fab..5de91b60 100644 --- a/config.yaml +++ b/config.yaml @@ -28,8 +28,8 @@ config: # Linux/MacOS interfaces are named "eth0", "wlan0", "wlp1s0", "enp2s0"... # For Windows use the interfaces pretty name: "Ethernet 2", "Wi-Fi", ... # Leave the fields empty if the card does not exist on your setup - ETH: "eth0" # Ethernet Card - WLO: "wlan0" # Wi-Fi Card + ETH: "" # Ethernet Card + WLO: "" # Wi-Fi Card display: # Display revision: A or B (for "flagship" version, use B) or SIMU for simulated LCD (image written in screencap.png) From 91bc87988927d4e8566be46b1b3de916f87a8f1c Mon Sep 17 00:00:00 2001 From: Matthieu Houdebine Date: Mon, 12 Dec 2022 23:01:11 +0100 Subject: [PATCH 18/18] Revert cpu clock to mean of all core clocks, fix warning message for empty net interfaces --- .../sensors/sensors_librehardwaremonitor.py | 5 ++-- library/sensors/sensors_python.py | 27 ++++++++++--------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/library/sensors/sensors_librehardwaremonitor.py b/library/sensors/sensors_librehardwaremonitor.py index 21adc95c..c40d1cf8 100644 --- a/library/sensors/sensors_librehardwaremonitor.py +++ b/library/sensors/sensors_librehardwaremonitor.py @@ -6,6 +6,7 @@ import math import os import sys +from statistics import mean from typing import Tuple import clr # Clr is from pythonnet package. Do not install clr package @@ -106,8 +107,8 @@ def frequency() -> float: # Keep only real core clocks, ignore effective core clocks if "Core #" in str(sensor.Name) and "Effective" not in str(sensor.Name): frequencies.append(float(sensor.Value)) - # Take the highest core clock as "CPU clock" - return max(frequencies) + # Take mean of all core clock as "CPU clock" + return mean(frequencies) @staticmethod def load() -> Tuple[float, float, float]: # 1 / 5 / 15min avg: diff --git a/library/sensors/sensors_python.py b/library/sensors/sensors_python.py index 0a9de1b4..478179e1 100644 --- a/library/sensors/sensors_python.py +++ b/library/sensors/sensors_python.py @@ -262,18 +262,19 @@ def stats(if_name, interval) -> Tuple[ download_rate = 0 downloaded = 0 - if if_name in pnic_after: - try: - upload_rate = (pnic_after[if_name].bytes_sent - PNIC_BEFORE[if_name].bytes_sent) / interval - uploaded = pnic_after[if_name].bytes_sent - download_rate = (pnic_after[if_name].bytes_recv - PNIC_BEFORE[if_name].bytes_recv) / interval - downloaded = pnic_after[if_name].bytes_recv - except: - # Interface might not be in PNIC_BEFORE for now - pass - - PNIC_BEFORE.update({if_name: pnic_after[if_name]}) - else: - logger.warning("Network interface '%s' not found. Check names in config.yaml." % if_name) + if if_name != "": + if if_name in pnic_after: + try: + upload_rate = (pnic_after[if_name].bytes_sent - PNIC_BEFORE[if_name].bytes_sent) / interval + uploaded = pnic_after[if_name].bytes_sent + download_rate = (pnic_after[if_name].bytes_recv - PNIC_BEFORE[if_name].bytes_recv) / interval + downloaded = pnic_after[if_name].bytes_recv + except: + # Interface might not be in PNIC_BEFORE for now + pass + + PNIC_BEFORE.update({if_name: pnic_after[if_name]}) + else: + logger.warning("Network interface '%s' not found. Check names in config.yaml." % if_name) return upload_rate, uploaded, download_rate, downloaded